pax_global_header00006660000000000000000000000064141403045150014507gustar00rootroot0000000000000052 comment=e8ce01f8c5f32b2277e30b1a379395b170fc67a6 parlatype-3.0/000077500000000000000000000000001414030451500133525ustar00rootroot00000000000000parlatype-3.0/COPYING000066400000000000000000001045131414030451500144110ustar00rootroot00000000000000 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 . parlatype-3.0/COPYING_CCBYSA000066400000000000000000000021121414030451500154250ustar00rootroot00000000000000License for data/icons/*/*.svg: This work is licenced under the Creative Commons Attribution-Share Alike 4.0 United States License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Created by Tobias Bernard License for libparlatype/data/icons/*/actions/widget-pt-waveviewer.png: This work is licenced under the Creative Commons Attribution-Share Alike 4.0 United States License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Created by Gabor Karsay License for help/*: This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Created by Gabor Karsay parlatype-3.0/NEWS000066400000000000000000000301061414030451500140510ustar00rootroot00000000000000Overview of Changes in Parlatype 3.0 – 2021-11-02 ================================================= * New: ASR plugin for Mozilla DeepSpeech (needs DeepSpeech at compile time) * New: Removed possibility to output ASR results to random applications using assistive technologies and removed internal textpad. ASR results are emitted through D-Bus only and applications like Parlatype LibreOffice Extension can listen to them. Removed (now unnecessary option) --with-asr. * New: Rewritten ASR preferences page with Configs per model. * New: Internal GStreamer plugins are now private to the lib, which should eliminate all errors related to GStreamer registry. * New: Flatpak builds Mozilla DeepSpeech 0.9. * New: New App Icon by Tobias Bernard * New: Many preparations for GTK 4, maintenance work, modularizing and refactoring code, increased test coverage, fixed memory leaks. * New: Main development branch is now called "main". * New: Version string includes git commit if applicable * Fix: Don't mirror waveform in RTL layouts, they expect it to be like in LTR. * Changed dependencies: - Removed atspi-2 - Added iso-codes - Raised glib-2.0 to 2.58 - Added optional deepspeech * New or updated translations: - de: Gabor Karsay - it: albanobattistella - he: Tal Einat - pl: Piotr Drąg Overview of Changes in Parlatype 2.1 – 2020-06-21 ================================================= * New: Mute/unmute volume by clicking on the volume icon with the pointer’s secondary button (usually right mouse button). * New: With Pulseaudio Parlatype doesn’t change the system volume anymore, just its own application specific volume. * New: With Pulseaudio Parlatype picks up the last used volume level. * New: Volume icon/button is insensitive as long as there is no media loaded. * New: Don’t reopen already opened files. * New: Set a default window height and in Preferences default to “Remember window’s size”. * Fix: ASR assistant dialog could not be used at all, a regression introduced in version 2.0. However, ASR is not recommended in its current state and plans are to rewrite it. * Fix: D-Bus interface for decreasing speed was doing the opposite. * Fix: Many fixes to Windows (win32) port, achieving feature parity with the Linux/UNIX version: - Fix: Parlatype icon not loaded - Fix: Help pages not displayed - Fix: Don’t show mediakeys help page (Linux only) - Fix: Volume changes delayed for a few seconds - New: Ensure there is only one instance running. - New: Added hotkeys support (hardcoded for dedicated keyboard buttons Play/Pause, Stop, Previous Track, Next Track) - New: Added win32 specific interprocess communication, thus enabling the LibreOffice extension * New or updated translations: - ca: VPablo - de: Stephan Woidowski - en_AU: Jared Norris - en_GB: Stephan Woidowski - es: Rodrigo Lledó - fi: Jiri Grönroos - fr: Jean-Marc - id: Ari Setyo Wibowo - it: Albano Battistella Marco Ciampa - ja: Shinichirou Yamada - pl: Piotr Drąg - pt_BR: ThiagoRyuuga Celio Alves - ru: Aleksey Kabanov Overview of Changes in Parlatype 2.0 – 2020-03-19 ================================================= * New: Waveform is loaded on-the-fly, there is no blocking progress dialog. This brings an API bump in libparlatype. * New: Waveform can be changed continuously instead of in discrete steps. * New: Application ID has been changed to org.parlatype.Parlatype and the homepage moved to https://www.parlatype.org. * New: LibreOffice helpers (macros) have been split from the main repository and turned into a LibreOffice extension. * New: New D-Bus method GetURI to get currently playing file’s URI. * New: Internal modularization (PtController objects control Parlatype). * New: Event handling is more compatible with GTK 4. * New: Parlatype builds on Windows, there is no feature parity though. Overview of Changes in Parlatype 1.6.2 – 2019-08-31 =================================================== * New: Update time label only if time has changed. This is a performance increase, cursor movement should be smoother on slower systems. * Fix: Various fixes or improvements for the build system - Fixed pkg-config cflags - Fixed failing unit test - Fixed extern C declarations for C++ - Added Meson configuration message * New or updated languages: - es: Adolfo Jayme, Jorge Toledo - hu: Óvári - lt: Moo Overview of Changes in Parlatype 1.6.1 – 2019-07-05 =================================================== * New: Automatic speech recognition (ASR) is now disabled by default and it’s only shown, if parlatype is launched with the new parameter --with-asr * New: Parlatype can be built without ASR (build option asr=false) * New: libreoffice helpers’ AppStream ID renamed (underscore instead of hyphen) * Fix: Initialize i18n for library, fixes not shown translations in Flatpak or non-standard prefixes * Fix: All memory leaks discovered with Valgrind in test suite * Fix: All issues discovered with Clang Static Analyzer * New or updated languages: - ar: Ibrahim Saed - cs: fri - de: Gabor Karsay - en_GB: Stephan Woidowski - es: Adolfo Jayme - nl: Heimen Stoffels - pl: Piotr Drąg Overview of Changes in Parlatype 1.6 – 2019-04-24 ================================================= * New: Automatic speech recognition with CMU Sphinx * New: Design changes, including removal of application menu, fix #22 * New: Use symbolic icons, fix #47 * New: Custom timestamps, fix #37 * New: Option to repeat file at the end pressing “Play”, fix #59 * New: Open new files from directory last used, fix #43 * Fix: LibreOffice helpers didn’t work with menu buttons, fix #53 * Fix: Use Unicode for nice typography * Build system changed to Meson * New or updated translations: - cs: fri - de: Gabor Karsay - en_GB: Stephan Woidowski - ja: Shinichirou Yamada - lt: Moo - pl: Piotr Drąg - pt_BR: Rodrigo Macedo Overview of Changes in Parlatype 1.5.6 – 2018-08-17 =================================================== * Animate scrolling when using keybindings * Change desktop entry category to Audio/Video instead of Utilities * Fix a build warning on most architectures other than amd64 * New or updated translations: - fr: Georgelemental Overview of Changes in Parlatype 1.5.5 – 2018-06-16 =================================================== * New: Progress Dialog has now a countdown timer (estimated time left) * New: Scroll with vertical scrollbar, too; contributed by Rinat Ibragimov * New: Zoom in/out of waveform with Ctrl key pressed and scrolling * New: Add shortcuts for play, jump back, jump forward, fix #27 - Ctrl + space: play/pause - Ctrl + arrow-left: jump back - Ctrl + arrow-right: jump forward * New: Increase max. possible speed to 2.0, fix #33 * New: “Insert timestamp” only active if there is a valid timestamp * Various fixes of waveform and cursor display after changing waveform’s resolution, switching text direction (for right-to-left languages), and selections in right-to-left layouts * Fix compilation on hurd-i386 and kfreebsd-* * New or updated translations: - ar: Ahmed Shubbar - ca: Adolfo Jayme - de: Gabor Karsay - en_GB: Andi Chandler - es: Adolfo Jayme - fi: Jiri Grönroos - fr: yeKcim - ja: Shinichirou Yamada - lt: Moo - pl: Piotr Drąg - sv: Tommy Brunn Overview of Changes in Parlatype 1.5.4 – 2017-11-19 =================================================== * Fix #20: fix usage of media keys – again, now without regressions Overview of Changes in Parlatype 1.5.3 – 2017-11-14 =================================================== * Fix #20: fix usage of media keys * Rewrite waveform display (using GtkOverlay) and improve performance * New: Show/hide ruler with animation * New: This NEWS file, compilated from release notes * libparlatype changes: - Added tests, including code coverage * Translation updates: Brazilian Portuguese British English Spanish Overview of Changes in Parlatype 1.5.2 – 2017-08-10 =================================================== * Fix #12: Waveform not displayed on KDE/Plasma desktop * Fix #15: Pitch changes with GStreamer 1.2 * Fix #7: Don’t show options that are not available on Wayland * In GNOME help, showing the complete list of help documents, Parlatype’s icon is shown again. This was a regression introduced with version 1.5.1. * Changed icon for action menu to GNOME default icon * New: Added a symbolic icon, shown in GNOME shell (with GTK+ 3.16 or later) * New: Added a shortcut window (with GTK+ 3.20 or later) * New: Enabled D-Bus activation (no visible change for users) * Translation updates: French German Japanese Lithuanian Overview of Changes in Parlatype 1.5.1 – 2017-07-08 =================================================== * Fix #5: Waveform invisible when window focused (regression) * Fix: Several regressions that appeared in GTK+ 3.20 and 3.22 * Fix #10: Fixed/improved volume control * Fix: Several memory leaks * Fix: Regression: didn’t jump to cursor on opening file * Fix: Some artifacts in waveform rendering * Fix: Rendering waveform if widget changes size (no blank space) * New: Reacts immediately to theme changes * New: Shortcuts for zooming in and out * New: Space bar toggles play/pause if in keyboard focus * Changed application ID to com.github.gkarsay.parlatype instead of org.gnome.parlatype * Translation updates: Dutch German Spanish Kurdish Lithuanian Malay Portuguese Serbian Overview of Changes in Parlatype 1.5 – 2017-03-14 ================================================= * New: Added a ruler to waveviewer (turn on/off in preferences) * New: Cursor fixed or moving (set in preferences) * New: Set resolution of waveviewer in preferences * New: Introducing selections in waveviewer (select with left mouse button, enlarge with shift, deselect with Escape button) * New: At the end of selection, clicking on Play will repeat the selection * New: Waveviewer or cursor can be focused and moved (keyboard) * New: Waveviewer supports right-to-left languages * New: Use a menubar if preferred by desktop environment (e.g. Unitiy, Xfce) * New: “Follow-cursor” button jumps to cursor position * New: Time label can be drag’n’dropped * Updated help pages, screenshots and documentation * Translation updates: British English Catalan French German Indonesian Italian Kabyle Kurdish Latvian Malay Portuguese Spanish Overview of Changes in Parlatype 1.4.1 – 2016-10-31 =================================================== * Fix: GObject Introspection uses annotation unknown on Ubuntu gi 1.42 vs 1.40 * Fix: Icon display on Ubuntu systems Overview of Changes in Parlatype 1.4 – 2016-10-29 ================================================= * Rewritten waveform display, now based on GtkScrolledWindow * Window design changes * Split out library: libparlatype * Translation updates: German Overview of Changes in Parlatype 1.3 – 2016-09-04 ================================================= * Fix: Don’t rewind at end of stream like at pause * New: Display waveform. This feature is using code from Buzztrax. * New: Show progress while loading waveform * Translation updates: German Overview of Changes in Parlatype 1.2 – 2016-08-13 ================================================= * Fix: Some media formats, e.g. ogg, could not be loaded * Fix: Goto dialog could be too small * Updated help pages * Translation updates: German Overview of Changes in Parlatype 1.1 – 2016-07-29 ================================================= * New: Help system * New: Drag’n’Drop support * New: Goto dialog * New: LibreOffice macros (calling DBUS service) * New preferences/settings: Window always on top * New preferences/settings: Remember window position * New: Tooltips for main window elements * Translation updates: German Overview of Changes in Parlatype 1.0 – 2016-01-18 ================================================= * This is the first release of Parlatype. parlatype-3.0/README.md000066400000000000000000000061161414030451500146350ustar00rootroot00000000000000# Parlatype For a screenshot, an overview what Parlatype actually is and packages please visit https://www.parlatype.org. The following instructions are for developers, contributors and those who want to have the latest version from the main branch. ## Build from source ### Dependencies To build Parlatype from source you need these packages: * meson >= 0.47.2 (older versions not tested) * gettext >= 0.19.7 * gobject-introspection-1.0 * yelp-tools * gtk+-3.0 >= 3.22 * glib-2.0 >= 2.58 * iso-codes * gstreamer-1.0 >= 1.6.3 * gstreamer-plugins-base-1.0 Optional, depending on your configure options: * gladeui-2.0 (>= 3.12.2; with `glade=true`) * gtk-doc (with `gtk-doc=true`) * desktop-file-utils (if installed, this checks the desktop file) * appstream-utils (if installed, this checks the appstream file) * sphinxbase and pocketsphinx (with `pocketsphinx=true`) * deepspeech (with `deepspeech=true`) Runtime dependencies: * GStreamer "Good" Plugins Debian based distros have to be Debian >= 10 (Buster) or Ubuntu >= 20.04 (Focal). Install these packages: ``` $ sudo apt-get install meson build-essential libgirepository1.0-dev libgladeui-dev gtk-doc-tools yelp-tools libgtk-3-dev libgtk-3-0 iso-codes libgstreamer1.0-dev libgstreamer1.0-0 libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly libatspi2.0-dev libsphinxbase-dev libpocketsphinx-dev ``` On Fedora this should work: ``` $ su -c 'dnf install meson gcc gobject-introspection-devel glade-devel gtk-doc yelp-tools gtk3-devel iso-codes-devel gstreamer1-devel gstreamer1-plugins-base-devel gstreamer1-plugins-good gstreamer1-plugins-ugly at-spi2-core-devel sphinxbase-devel pocketsphinx-devel' ``` ### Configure options Parlatype ships its own library, libparlatype. Developers might be interested in having a library documentation, gobject introspection and a glade catalog for the widgets. These are the configure options: * `gir`: install gobject introspection (default: false) * `gtk-doc`: install library documentation (default: false) * `glade`: install a glade catalog (default: false) * `deepspeech`: build GStreamer plugin for Mozilla DeepSpeech support, requires deepspeech (default: false) * `pocketsphinx`: build GStreamer plugin for CMU PocketSphinx support, requires sphinxbase and pocketsphinx (default: false) ### Build from git Clone the repository and build with meson. You can use any prefix but you may have to adjust LD_LIBRARY_PATH for other prefixes. In this case Meson prints a message with those paths. ``` $ git clone https://github.com/gkarsay/parlatype.git $ cd parlatype $ meson build --prefix=/usr $ cd build $ ninja $ sudo ninja install ``` ### Build from tarball Download the latest release tarball from https://github.com/gkarsay/parlatype/releases/latest. Assuming it’s version 3.0 and you want the program only: ``` $ wget https://github.com/gkarsay/parlatype/releases/download/v3.0/parlatype-3.0.tar.gz $ tar -zxvf parlatype-3.0.tar.gz $ cd parlatype-3.0/ $ meson build --prefix=/usr $ cd build $ ninja $ sudo ninja install ``` ## Bugs Please report bugs at https://github.com/gkarsay/parlatype/issues. parlatype-3.0/data/000077500000000000000000000000001414030451500142635ustar00rootroot00000000000000parlatype-3.0/data/asr/000077500000000000000000000000001414030451500150505ustar00rootroot00000000000000parlatype-3.0/data/asr/de.deepspeech.skribosermo.asr000066400000000000000000000007441414030451500226160ustar00rootroot00000000000000[Model] Version=1.0 Name=Skribosermo Deepspeech Plugin=ptdeepspeech BaseFolder= Language=de Howto=Save both downloads in a folder and select that folder URL1=https://drive.google.com/file/d/1CMnImO3ucu3j0q63OqoBIyW-09dHUE4p/view?usp=sharing URL2=https://drive.google.com/file/d/1J5Ay1x04u-GyWrfpr61oQgsWT-I71FKe/view?usp=sharing Publisher= Skribosermo (DeepSpeech-Polyglot) License= LGPL-3 [Files] speech-model=output_graph_de.pbmm scorer=kenlm_de.scorer [Parameters] beam-width=500parlatype-3.0/data/asr/de.sphinx.bartsch.voxforge.asr000066400000000000000000000010101414030451500227320ustar00rootroot00000000000000[Model] Version=1.0 Name=Voxforge 5.2 Plugin=parlasphinx BaseFolder=/home/gabor/Downloads/cmusphinx-de-voxforge-5.2 Language=de Howto= URL1=https://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/German/cmusphinx-de-voxforge-5.2.tar.gz/download License=LGPL Publisher=Guenter Bartsch [Files] lm=cmusphinx-cont-voxforge-de-r20171217/etc/voxforge.lm.bin dict=cmusphinx-cont-voxforge-de-r20171217/etc/voxforge.dic hmm=cmusphinx-cont-voxforge-de-r20171217/model_parameters/voxforge.cd_cont_6000 parlatype-3.0/data/asr/en.deepspeech.mozilla.0.9.3.asr000066400000000000000000000007771414030451500224140ustar00rootroot00000000000000[Model] Version=1.0 Name=Mozilla DeepSpeech official 0.9.3 Plugin=ptdeepspeech BaseFolder= Language=en Howto=Save both downloads in a folder and select that folder URL1=https://github.com/mozilla/DeepSpeech/releases/download/v0.9.3/deepspeech-0.9.3-models.pbmm URL2=https://github.com/mozilla/DeepSpeech/releases/download/v0.9.3/deepspeech-0.9.3-models.scorer Publisher=Mozilla License=MPL-2.0 [Files] speech-model=deepspeech-0.9.3-models.pbmm scorer=deepspeech-0.9.3-models.scorer [Parameters] beam-width=500parlatype-3.0/data/asr/en.sphinx.debian.asr000066400000000000000000000003761414030451500207200ustar00rootroot00000000000000[Model] Version=1.0 Name=Sphinx Debian Plugin=parlasphinx BaseFolder=/usr/share/pocketsphinx/model/en-us Language=en Howto= Install the Debian package Pocketsphinx License=BSD-2 Publisher=Debian [Files] lm=en-us.lm.bin dict=cmudict-en-us.dict hmm=en-us parlatype-3.0/data/asr/zh_CN.deepspeech.mozilla.0.9.3.asr000066400000000000000000000010321414030451500227740ustar00rootroot00000000000000[Model] Version=1.0 Name=Mozilla DeepSpeech official 0.9.3 Plugin=ptdeepspeech BaseFolder= Language=zh_CN Howto=Save both downloads in a folder and select that folder URL1=https://github.com/mozilla/DeepSpeech/releases/download/v0.9.3/deepspeech-0.9.3-models-zh-CN.pbmm URL2=https://github.com/mozilla/DeepSpeech/releases/download/v0.9.3/deepspeech-0.9.3-models-zh-CN.scorer Publisher=Mozilla License=MPL-2.0 [Files] speech-model=deepspeech-0.9.3-models-zh-CN.pbmm scorer=deepspeech-0.9.3-models-zh-CN.scorer [Parameters] beam-width=500parlatype-3.0/data/icons/000077500000000000000000000000001414030451500153765ustar00rootroot00000000000000parlatype-3.0/data/icons/meson.build000066400000000000000000000004231414030451500175370ustar00rootroot00000000000000install_data( join_paths('scalable', app_id + '.svg'), install_dir: join_paths(datadir, 'icons', 'hicolor', 'scalable', 'apps'), ) install_data( join_paths('symbolic', app_id + '-symbolic.svg'), install_dir: join_paths(datadir, 'icons', 'hicolor', 'symbolic', 'apps'), )parlatype-3.0/data/icons/scalable/000077500000000000000000000000001414030451500171445ustar00rootroot00000000000000parlatype-3.0/data/icons/scalable/org.parlatype.Parlatype.svg000066400000000000000000000437431414030451500244270ustar00rootroot00000000000000 parlatype-3.0/data/icons/symbolic/000077500000000000000000000000001414030451500172175ustar00rootroot00000000000000parlatype-3.0/data/icons/symbolic/org.parlatype.Parlatype-symbolic.svg000066400000000000000000000021611414030451500263060ustar00rootroot00000000000000 parlatype-3.0/data/meson.build000066400000000000000000000025301414030451500164250ustar00rootroot00000000000000subdir('icons') install_subdir( 'asr', install_dir: join_paths(datadir, meson.project_name()) ) desktop_file = app_id + '.desktop' i18n.merge_file( input: desktop_file + '.in', output: desktop_file, type: 'desktop', po_dir: '../po', install: true, install_dir: join_paths(datadir, 'applications') ) desktop_file_validate = find_program('desktop-file-validate', required: false) if desktop_file_validate.found() test('Validating ' + desktop_file, desktop_file_validate, args: [desktop_file], workdir: meson.current_build_dir() ) endif appdata = app_id + '.appdata.xml' i18n.merge_file( input: appdata + '.in', output: appdata, type: 'xml', po_dir: '../po', install: true, install_dir: join_paths(datadir, 'metainfo') ) appstream_util = find_program('appstream-util', required: false) if appstream_util.found() test('Validating ' + appdata, appstream_util, args: ['validate-relax', '--nonet', appdata], workdir: meson.current_build_dir() ) endif install_data( app_id + '.gschema.xml', install_dir: join_paths(datadir, 'glib-2.0', 'schemas')) service_conf = configuration_data() service_conf.set ('bindir', bindir) configure_file( input: app_id + '.service.in', output: app_id + '.service', configuration: service_conf, install_dir: join_paths(datadir, 'dbus-1', 'services') ) meson.add_install_script('meson_post_install.py')parlatype-3.0/data/meson_post_install.py000066400000000000000000000012741414030451500205550ustar00rootroot00000000000000#!/usr/bin/env python3 import os import sys import subprocess install_prefix = os.environ['MESON_INSTALL_PREFIX'] icondir = os.path.join(install_prefix, 'share', 'icons', 'hicolor') schemadir = os.path.join(install_prefix, 'share', 'glib-2.0', 'schemas') if sys.platform == 'win32': icon_updater = 'gtk-update-icon-cache-3.0.exe' else: icon_updater = 'gtk-update-icon-cache' if not os.environ.get('DESTDIR'): print('Update icon cache...') subprocess.call([icon_updater, '--force', '--ignore-theme-index', icondir]) print('Compiling gsettings schemas...') subprocess.call(['glib-compile-schemas', schemadir]) parlatype-3.0/data/org.parlatype.Parlatype.appdata.xml.in000066400000000000000000000205061414030451500235550ustar00rootroot00000000000000 org.parlatype.Parlatype.desktop CC-BY-SA-4.0 GPL-3.0+ Parlatype Media player for speech transcription

Parlatype is an easy to use media player. Its main purpose is to help you transcribing speech.

https://raw.githubusercontent.com/gkarsay/parlatype/master/data/screenshot.png https://www.parlatype.org https://github.com/gkarsay/parlatype/issues https://translations.launchpad.net/parlatype https://www.parlatype.org/donate.html Gabor Karsay parlatype com.github.gkarsay.parlatype.desktop parlatype libparlatype libreoffice-writer.desktop ModernToolkit UserDocs

This is a major release with new features.

  • Support for Mozilla DeepSpeech.
  • New configuration system for Automatic Speech Recognition.
  • Translation updates for several languages.

This is a minor release with bug fixes and minor new features.

  • Mute/unmute volume by clicking on the volume icon with the pointer’s secondary button (usually right mouse button).
  • With Pulseaudio Parlatype doesn’t change the system volume anymore, just its own application specific volume.
  • The initial volume level is picked up from Pulseaudio.
  • Translation updates for several languages.

This is a major release with new features.

  • Waveform is loaded on-the-fly, there is no blocking progress dialog.
  • Waveform can be changed continuously instead of in discrete steps.

This is a minor release.

  • Update time label only if time has changed. This is a performance increase, cursor movement should be smoother on slower systems.
  • Translation updates for Hungarian, Lithuanian and Spanish

This is a minor release with some changes.

  • Automatic speech recognition (ASR) is now disabled by default and it’s only shown, if parlatype is launched with the new parameter --with-asr
  • Fix internationalization: Some translations were not shown
  • Translation updates for Arabic, British English, Czech, Dutch, German, Polish and Spanish

This is a major release with some new features.

  • Automatic speech recognition with CMU Sphinx
  • Design changes, including removal of application menu
  • Custom timestamps
  • Translation updates for Brazilian Portuguese, British English, Czech, German, Japanese, Lithuanian and Polish

This is a minor maintenance release.

  • Animate scrolling when using keybindings
  • Change desktop entry category to Audio/Video instead of Utilities
  • Translation updates for French

This release contains a number of bug fixes and minor improvements.

  • Progress Dialog has now a countdown timer (estimated time left)
  • Increase max. possible speed to 2.0
  • New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + Left), Jump forward (Ctrl + Right)
  • Scrolling now also possible with vertical scrollbar
  • Various fixes for waveform and cursor display
  • Translation updates for Arabic, British English, Catalan, German, Finnish, French, Japanese, Lithuanian, Polish, Spanish and Swedish
gabor.karsay@gmx.at
parlatype-3.0/data/org.parlatype.Parlatype.desktop.in000066400000000000000000000007131414030451500230130ustar00rootroot00000000000000[Desktop Entry] Version=1.0 Name=Parlatype Comment=Transcription utility Keywords=Transcription; Exec=parlatype %U Icon=org.parlatype.Parlatype Terminal=false Type=Application DBusActivatable=true StartupNotify=true Categories=AudioVideo;Audio;Player;GTK;GNOME; MimeType=application/x-ogg;application/ogg;audio/x-vorbis+ogg;audio/x-scpls;audio/x-mp3;audio/x-mpeg;audio/mpeg;audio/x-mpegurl;audio/x-flac;audio/mp4;x-scheme-handler/itms;x-scheme-handler/itmss; parlatype-3.0/data/org.parlatype.Parlatype.gschema.xml000066400000000000000000000075261414030451500231540ustar00rootroot00000000000000 2 Rewind on pause Value in seconds 10 Jump back Value in seconds 10 Jump forward Value in seconds false Repeat file at the end When pressing "Play" at the end of file, it will be replayed true Repeat selection at the end When pressing "Play" at the end of a selection, it will be replayed 100 Pixels per second Pixels per second 100 Window's horizontal position Window's horizontal position 100 Window's vertical position Window's vertical position 100 Window's width Window's width 100 Window's height Window's height false Remember window's position Remember window's position true Remember window's size Remember window's size false Start window on top Start window on top true Show ruler Show ruler false Fixed cursor Fixed cursor 1 Timestamp precision Timestamp precision false Timestamp fixed digits Timestamp fixed digits "#" Timestamp delimiter Timestamp delimiter, only "None", "#", "(" and "[" are allowed. "." Timestamp fraction separator Timestamp fraction separator, only "." and "-" are allowed. "none" ID of active ASR configuration ID of active ASR configuration 2 ID of active ASR filter ID of active ASR filter parlatype-3.0/data/org.parlatype.Parlatype.service.in000066400000000000000000000001341414030451500227770ustar00rootroot00000000000000[D-BUS Service] Name=org.parlatype.Parlatype Exec=@bindir@/parlatype --gapplication-service parlatype-3.0/data/screenshot.png000066400000000000000000000557261414030451500171650ustar00rootroot00000000000000PNG  IHDR4isBIT|dtEXtSoftwaregnome-screenshot> IDATxy\r\(xbbivVV;UZС}+o7ò6[yܰ;?p]cvwvwvy={#ܙy|xg>h*>xI& TTJB """""W j̚5?qw0:jB7xu"jkP_ t T*/?gFpII.|kk]3YAou{BkΜ>1/ӑ:C?we}] !rV>rށT-mjl16vd56 """z)B @4561B///GX̧W.#tҨ5^mT&456 :'BB;BfTnnƅpJT^P*=k# """"jG h0]UyS3gBGADDD)j/F@jr`Bz """%jARۺ OelxZ["""x+ZP[\7DDDd)e?/9 ,ds""")evLDDD4̧|>!"""9\+-$\~ÁC ~}?)"Bl=w^.]t߫54.twta|,Lpqsޯg!ONG.]yj)3f ^y mC܏8>[;_DB>Qy<>s?X J;#/KB}C=V|5~u Qm;wUs:o^xװqf 2bomoi>blv^q=qPqq~%߯CTNFc61u*AxG|'GշAccm4Xe'ObЀ8Y^t÷؅\9ܖvҁī7^Ah9vϽ/gѣҹ3\(,te_ hpYQ#** |9a_W$5ի??O<3|/ؽwn} nqߣOpL8cG§_Ď]{6z/Ùp5Wcێ(9rS< (ھ M7<4|ٷ?/ ++`<_,z%t g6񈍡cX~u!J%>K|;Lp%q'gp8JNo4zvto,|Jk֮{K᧼_1 1em ~~ZHM7Q{bm>:Yx%Kxs{GT`vۋ^Ju_тJDxXO#Oo={]ViV0x@wwVQ`FF{R???45HRmnJ& #߾>P Ox'lߵ?GqE@uu5 G޽Aס`N@ر{9A4յ 3|/ 2P,C6!(;G}c.tT*JB +JmLGQÇ⽥Pvn< ‡A0q'h"O!u>efF6yLw7j.K) /{wص ^fي */G&P(A.[ЖaP 3mJH$D,JJx) E;)>ɗg~n߁.G&K5 & 1h5kZ.5jUh6kbRւ*|'4ʖӇaAAH2ޘ0 ۶3%Rfqmjk/:8TҲ6=g_z/> S٣ 7x'?Qfز?F"6`glt _5ըFMET_4h=\c}h45" Ç A6\1r$J%~';kgۭ}ѭkMihEwn{uk65-m]]e51Xck6yөx -mll-8WQi0n vϗYsTWW=Yb]B7^EX/;^]$d<"?NPQy_ ݷv,]1DEb"%y Vd/]NKXº2v;s^y-@nеK~w=5E񗟬6'%GOx[.~U<6]0ܖʫ%}zYV{ IĵyDDDD4?P@ִyN{h]"""<tX*/kWUCR C+n2̧C.f.5PQYq~.p%FgRyiF"""S%jT EKT)(q௝AP,tkAfTWUd1wKo]y c]]5՞<cRKDDDDnI-=&DDDD3;EņJvH0DOW'7Nh&d;@dr2(ylj;`RK L^>11NZ9s0m{a9g """""cRKPPTf#"""bRKԺVT-dLmvDDDDLjI{A0#Z""""r{Lj1%""""ǤZ""""r{Lj1%""""ǤZ""""r{Lj1%""""ǤZ""""r{Lj1%""""ǤZ""""r{Lj1%""""ǤZ""""r{LjȢ|\{={C!"2M8Qwvv #!"25DDdBW@DԆlp: ɁBBpu(DG~~ '>|C "jC6*++]SKb h7}tʕ+ 27x#'72uRl/aaaܔ5 vϏC8rWښjG;0lTS¼yGFLLu~~>bpsS5 8p wV /$&JRSSu KEE+jwV\]vaرHMM5;1HlBi%rrri&$''#==]t`M|l=,77iiisܶw\,mKR>x+b9|䞊lBaF<7xA+;;۪H{垟NU5I999f-!&fL^^1''gϞ-“Ǹ0rHLLDrrɇJjSSS (Jџ^zz]͞=999ߙKj[wfʕSA'Otb%֖OΝq)<)Njpl٨ŴQRTM6X%%%;!&&fO#2I3Z1`jJԚ fzl b֭ƌM64u1;vRѣyfJ[kԶq,lذ)))pi,7sI-jkcGdddVZZhvz?Œ,Gnnɘߧ B׋,"""Do!Ch!33dddBqq0e!..NHOO7fk[%$%%I2/kWcml<ginlZ敝-bRQQ!TTTBvvA,BjjS! 7o4T .7o,'⳧1ӷvsE~~>*++ n8+OšZwjM-[`` jjj4V{cK,)S$;diZֿS#fmY[ƎlR cpee% Ri6#]דwalݎyI}:zjѱIIdgg#55wy''|HjŜǴۯ['m;x9rAAA2-_?/ҥK%X>)1Z.K56~aaͯaa;+ 8ز>-ݥ0׽-۰[׉ģ/<<.\@=t^:lJKKmw:222\}wfӻҖm^^C%ݾ DOϑ۷\,=r|13TmіxPZ5=GgNRR])==8\seYYn{gM^R֪ZM4m233{ڻ=ZGbpF#aͺ֞Skܼi."ZԻښZ{RovB.'j!6Rvo֘7oJ EԩS1|pɚSO;=vRОXs!Wn1c09ӒZ)ˡW&tBzjb.{•$:rގL)={>YKN3ڻ-!*9G||Mj󴭩ѣG1m4wnw`݈FRR;444ϟwDNӺӯ.PnnSb|Jޏ233WdEEm3Tqqn\.bz%1h,BQQKx,^l!;;An*ٳgO]zzp-HlKIKKӭ7i\rnn0|ilqmR_Έ]̼ΝjNff) C ];Vk+R IDAT0Ah9 yyy,77W4 k75b}]Q}9())I7mWowy ?ӦM.\(,\PiӦ \sMO]l|"""ŋ Bqq Æ sʼck^'Xɘ1cTAQ¬YdNgݘ-$'' \sХKd,qobb|!==]w\vnva…념!((H!::ڠ_ѣG BAA'dee yyyB\\6пN#<< &Kpm֣Jl߾.+A@ee%z-ꫨ36YYApWchhh@YYMMMÀ/ Byyn8W^x"Μ9,9Kmʹn^0dDEE!226mJ~z k֬L6 j*ݴ+VjZ7lĈ())ݻ#??>>>6:urȶ4i$/|.ĽFW!K3gb#Gp!ŕr۷e1JB```7XG1"?Ê+pq!** ΙmA1I'_DjLL *++&JFrRp폈 7o:x{{}I+}LhU&¥nU'''6mBbb"nTVVbժUطo\w ___ 6 ؼyChB@\\de֮]!C`޼yػw/uV۷MMMưaðsN$&&bܸqg}F\\bbbХK6CCC___PT?󈊊QUU6/iADi-M 608{l-!-- 娪ŋQWW5ޭ9 7oFm|&GbigMGaaafߊFDFFoɓ'ݻw׵UO`ʕ@npi;b(oeҥ6ۭrԾԋ,)))Aii)ufh۔k;K11 /==]wσ㔃p\\SXK۶\^aaa̕oJ?ϟaÆ!,, [n4~JJJBNNy⮤׏)##ƍCiii^zaȑؼy,{-m_ӧO1n8V ))cvrr2JJJ$y"-- 󑒒0\%%%0rHt 6mOt۷3gŮ< ӝ`[7T] F_#e˖!--r{ 4+##tdZBJJѧ]rik=\4IEmYahǕ.u7R{CB}Y"55IѣGl?>=+p 7 tdK9Zl-ڧ#_G&-F___!::Z=nWm_1k,sn\Ue뾲zj̱.:XOHNӡ]zY"Ǿ]mA4[vuew$1))ɠ(Wwr^a{?]9%fݥ麾r>*$'' IIIB\\>Y~YG+ʳHThedd=zpkMvXn)ʫuW tIMM0]7]sz"& ZN[r2gjk*ԊM.ÅL b8ct-@eb?̙3ẕ ]~փӺQK !//O?.QJ15־֘f͚sҸ־,55MdI 73n9*vwI ;ÞA۴[֚Wgi GmM C呚-sq8.5-_m+<"V?ioINW.+cw5╅lSjM Oח3[[%K7(:r8z;'/5m*䌲pzbpvYwZ%DffI︸8#88QFQQ]IL+KݖѺ >1aΖWIII6Za-S233m'~zTTT`Ȑ!6ͧ=!"֥1%%%6w%+#SÑ(ߍS{Pxi'QNrdlA=ۥ"fcr^֬O{YVV{DLgw֎oNFF233EumўXe_vԺrަllڴ ~eػ܀eޙ˩5>9egg֓UTT^?-{[!)) &M]i*((@jj*0m4]bb3kX9v]i7##澣͑r?qbY2˳j|A 'X[-)`رX\%'sfZAn5ӖzYkxyjZ0!00i=RަSؑۼiiiB``T*___>,ŴYFs_~Ӛߙ:E\k~(#kցkVo!E@۵kSo[L W:ނ6#n z~9\:6?p{':-uKL[ 8Zbm}swG|Mee޶G{m([57X7Pc6divTdUcyN[MѾWvl{Lhɱl٦L-$x{{#55iii;vlց6˒r[R sJXzܴ~5$v=d'չ5//O6dž5W\K])umrKqXS+-mM=ۿVM[nE޽%9YWVVښgm=4_cԸbZ^^l=6mrٴj-竒L86SSkvt䈚b񨪪29cOJJBaaaq ]Tx"s5Mj-Vk(o_I},խ<{.O[C W_}5RRR~FI-]jiKIj8Cǔ65nj˅c3<<.\F 9ɱh1./""233vӚÇ<}m-[XXD3먓sEEǞ[?Mٳuv>Caҥm[vU |||`4gQQQaB!))ecw"-%hwEd>, [jmlaJsx5h5w_hк-[6!ݽ~XNG~nݰ~z]r4BGfeei&j|B.YЗߥmcںUN}v_m.Xzk~,\>JKKؾho]m읤bR+?bNtL>@K ĝ^;/[NjM?++ >O͛ߞXUj'cOII  KJJ]2鯳{{ 6LT[銊 Çڲ<]{|dԶ>Kq{#SDm殀Ŷ#nOʏ-mھ&RUhkkM(5mogӧO͛tc8{,= @>I\ZCiE1ڋred:ʕ+=ڦZc I-\7$P.5r3D֐݃b$dV+77/??d{""ۯLf9ܒԺn%UM; ]D$gNM.ԘcRKDDDDnI-=&DDDDcRKDDDDnI-=&DDDDcRKDDDDnI-=&DDDDcRKDDDDnI-=&DDDDcRKDDDDnI-=&DDDDcRKDDDDnI-=&DDDDcRKDDDDnI-=&DDDDcRKDDDDnښ6ߍJ-֚q>c;c;? knMxrMxrMxrMxrMxrMxrMxrMxrMxrMxcRKDDDDnI-=&DDDD5Ղ{w!q0g4B& ,y`9AXScRKDDDDnI-v٦GcRKDDDDn|>Z{c]P455~yy8r|}|0z̽o6BCC ~~gΞCLtW;0a8.&W7㲤axEq[֔Ak>":v/e'%ص{v킙3fEU?ϖΝ$s9g $4_;fB!aErs!C:&Y33}R[_WS#YWP`?fGX8u -~ /EYrZ~O<nF<`!wA^8nKr^,*Bւ oy skʠW~!btG++cqIx((*‹d)WHǑ,닰}.IGv ~qۑ"t uS2t"u99!G>CHH0-g=wQxxPPT-zU92@M7bͯbǮ=Lj͐J%Z-^{y xq-3]ِ!k@GovT8u`7pbhi)> &fH]/T!c8o]p=0?d/y[wa}m(*ڎ6oaRk \Nq~fgq6uuu 0]H{O?&7[tn'@a6BK 8|zv4nO#e9@]]:u ߤ ۣRj/.cApHp߬۰ g+aמ=xQ=e̝GOSݖ9Zk}.'C*k>+Dɸ4</x Ȉ7ZFeyֻbt6?pz`.o܄cbN[&w$e9CTC鳎_7eK׳r,?}1]|׽[73, SQd=gݻ/1Aʰ=ܹ 9 vrfފ{=V>X>ϖ}{65x v>\1~txi㮤,ooo\2?0t;Э[S˝X[w?O>1:=F*|R UU[w'uYm]KcqV#*sr22qkj+>;"i2*ϟւ)XX>t{fߧbY^66l>0+>^ރErKRCc`ЀxgX+SƢck˙5eԄ^ē>dG R@\2lfP[[F0,',6,ӧ u̽^tr3Q`B.ܾ`tAfGB>Xs3o_~6z#r_w#C0q<^zp,3W?%S `{;)2GKSP(pbx)ʂ'U9Tь0d@L:)LC<{ <<\-Kjp)v&j|R(6O;vHG)=^m;v⑹s ӣ+]]k7cѣvn~u7a`,L,~RZ3ϽZ]0|X{_]&|p+V~Ƣ[t4 6n@!bAxףN9ĜCoȭ&b[KpaauexղhO@,z*//ŒEo蒥^{K?‚W^ S&O;G;eqqq]rgm9* スo.7;=b`$G,GpDY9s<]鷷ζF9oLaxN;>^(1r6ZWwg sveNZ\,ܶ i&s9-k}3(?ko`- /]1}w?":,Y:+6x2^ىmeGKPuRRcw0jDl?h bzCT2uQ)1xb]{ր b: OdEt m`` &MLE.-lǂנQkn3=rdϠ.h9)w耡CcT7:ҏpx7O>ВX2= @Ұں:,zQ4.es?N|Y)?a#E%Z>>: )? t#/u7M7:cǎرs7>]dL ={{GY|_|@ɮKθrl2qL'w~&'qDT]]5axf܊ UU8rbeaxg|hhWlX>nw[NR55m?p)h4l۹ 15ynFk'O i3p>vcAvw帱4t(֮oe3566⿹+<8U@ O$㲘N/)b$8|p/ I7 {/"u}`My tdv UUذqNF4t0N1NccٳߏJyO'W7 00yD7fU36w+c&\19LAIo~GhI4K1h#>\}D['Ą-[!֮ۀƦF;7r[V2WQ# ؼg덗_?ɖ}G^^-8  57&Maؿ{,RЪs)U*tV.$8c:QF~ vB}}i#s7((DѶm9cFKl%ŒLB^ⷖ{fjoIy/mނwZd6.jۅt%F/o/DEEᙌ'ף~c ^z}-&WMHł,4k-'em_{CA]]}˲nC0lĖ{}>>xo__y?VW_'z~ߌoi SD#;K'1ILLBǟ}^q?]{>fZ<~G)&EoL޽z~<.QQt y AAAxͷQS[|>˙xoxt8g6?`ޑ-#9!sYhW)h h4 >v heImSS#O:Vuu5BB mVS㔤ȑH6sݥ= \م (;q_3tHÐ菫'ND\Ϟػ?CѬVc_{4k~\alS>҄,O\>HIN68ޒƏKYϑvӍEw`ozh[8h9 }GC3Kj2ޗ9s,{LF,^o)8RߓJ*?zGKKOkpݔ]3Oŗ_FcmQ#G`[AA7%*WUk|;<Գ#zuFT*1;~ǎB}߉hss3.e4ɓPk4D3;L48ZhEц6 UV 6xCxe8v68 9T/LAa @BuYf-UMizgL>}9yso)nwpFQP NG:9x8Mh4*z HȺch4XN_rCrRe>OI=^V|Ar;yxRΛ/vOޫk mit:a2B?n(bccxܸ\.:(v4ɲ%38;m/#=b5|y+.@QwmfΘ3[Ỷms:9k${jJۅ=5V-==.ͬ,KvLU~Pd {-/<^9`ukKǏs̚Iٷׯ_`02yMMQW[_P@˨ӦNpJ۹xKS f؉\xyUECF!6HA G!.GtEtZ'B?M5~כ!I|Ù352z8:izb4IKM9ViY{u{dr\-ƶT^z%sfo_A Hapս.>LNKMlgJJE]-$JvW_2$}l,g'uo !++Qyy|?dobDGGewHOKc\t YV1qF# }WvK?GFz{_}}'1<7ֶ;h4h4̖dnQcIBRJPclIVא$ #5 IZrvAdYaN5s%_s;JN<Ţo\ir6nW˯uhS|, ̾{m sJ{|U{!dYt`oj C@9Ky\r>6<ɯ L4~9̳gCݹ9tMO X-~Ͽ9yc,ހciYp1~ KFz:FJN=f"7Y4_9YY^`.Vd$cP?yf+]..!sPFO466{Ww~jLSnǒ{9x0| \ݙx4~56nW!g5+WJD튡v ֯]#1d|4s ?tưݷy=;Pͪ*8&kIOMQSLghf2}4|`)fC@)]|fr)**+Ce1|81y%׿Rl6  #E {t&?uNΡ.@b4HHIN-b؈1޲AbiSIh^PȲLMm-Y1ҽ$DLm!ףFŋQ)s tRVæ'c h4Z$Ӊ.VN ~ fJ*fˉ 4d`qKu\rWn6 ]TV($y8huZB,I]Oj:#CEABSM-?,:[`42r\1z#{i;vkܼq NzVK||҆BѰejHJ!zW].Tz (a'tݲ,uvYՇ%$!dq2_We'BhT%>hE۸y^@Lф1>,CbFt&DA72(k PVHAD[AaۻzZ^Aa58;.K tĠ0>l$~ЍȒDC]m;Dz)}pNSc8Z5~.D@ >K[T|*G@ , .\" .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) .TH PARLATYPE 1 "January 14, 2016" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: .\" .nh disable hyphenation .\" .hy enable hyphenation .\" .ad l left justify .\" .ad b justify to both left and right margins .\" .nf disable filling .\" .fi enable filling .\" .br insert line break .\" .sp insert n+1 empty lines .\" for manpage-specific macros, see man(7) .SH NAME parlatype \- minimal audio player for manual speech transcription .SH SYNOPSIS .B parlatype .RI [ options ] .RI [ file ] .SH DESCRIPTION .B parlatype is an audio player for the GNOME desktop environment. Its main purpose is the manual transcription of spoken audio files. .SH OPTIONS .B parlatype follows the usual GNU command line syntax, with long options starting with two dashes (`-'). .TP .B \-h, \-\-help Show summary of options. .TP .B \-v, \-\-version Show version of program and exit. .TP .B file Specifies the file to open when .B parlatype starts. Only one file will be opened, any other file will be ignored. .SH RETURN VALUE .TP .B 0 normal termination .TP .B 1 invoked with unknown options .TP .B 2 GStreamer backend couldn't be initialized .SH AUTHOR Gabor Karsay (gabor.karsay@gmx.at)parlatype-3.0/help/000077500000000000000000000000001414030451500143025ustar00rootroot00000000000000parlatype-3.0/help/C/000077500000000000000000000000001414030451500144645ustar00rootroot00000000000000parlatype-3.0/help/C/asr-setup.page000066400000000000000000000056441414030451500172560ustar00rootroot00000000000000 Setup automatic speech transcription Gabor Karsay gabor.karsay@gmx.at Setup automatic speech recognition

For speech recognition you need a language model: one or more files trained with real speech samples. Parlatype supports language models made for CMU Sphinx and Mozilla DeepSpeech and ships a couple of language model configurations.

A language model configuration contains meta data describing the language model: A name that you can change, the language it was made for, speech recognition engine, publisher, license etc. It has a (third party) link, where you can download the files. Part of the configuration is the base folder, where you have saved the model. Additionally it contains various parameters for the plugin which are not shown.

Open the Preferences Dialog and click on the Speech Recognition tab. Initially there are no configurations available, click on the Add a configuration button.

If your installation has CMU Sphinx or Mozilla DeepSpeech enabled, you will see configurations with a download symbol. Otherwise you will see only configurations with a unavailable symbol.

Select a configuration and click on the settings button. There is a short description of the model and where you can download it. After downloading, you have to set the folder where your download resides. You can also change the Display name.

An installed model has no symbol next to it. Double click on the model and it will be selected for speech recognition, a selected symbol appears.

Shipped configurations might get obsolete over time. Therefore you can import a configuration with the + button. Configurations are text files with an .asr ending.

With the - button you can remove a configuration. This will never remove downloaded models, only the configuration file.

parlatype-3.0/help/C/asr.page000066400000000000000000000042051414030451500161100ustar00rootroot00000000000000 Let Parlatype do part of the transcription work Gabor Karsay gabor.karsay@gmx.at Automatic speech recognition

Parlatype offers automatic speech recognition that is done on your computer. No data is sent over the network.

Parlatype must have been built with PocketSphinx or Mozilla DeepSpeech. Please note that those libraries might be not available on your platform.

Parlatype has no built-in text editor. You need the Parlatype Extension for LibreOffice to output recognized text.

Start speech recognition

Select a language model in the Preferences Dialog, Speech recognition tab, see for more details.

Open the primary menu and click on Automatic transcription. This is only available, if you have setup and chosen a language model.

Now press Play in Parlatype and the recognized speech will be printed in LibreOffice, if the Parlatype Extension is installed. Output is silent because decoding speed is dependent on your machine and may be slower or faster than real-time speech.

Output is without punctuation or capitalization, you have to add or correct that yourself.

Accuracy depends on many factors like quality of the recording, background noise, speaker’s dialect or pronunciation and the speech model used. For general transcription you can expect an word error rate between 10 and 50 %. Alas this means that in some cases manual transcription from the start will be faster than automatic transcription and the following correction process.

parlatype-3.0/help/C/drag-and-drop.page000066400000000000000000000024341414030451500177440ustar00rootroot00000000000000 Drop files, file names or timestamps on Parlatype Gabor Karsay gabor.karsay@gmx.at Drag and Drop

You can drop files, file names or timestamps on Parlatype’s window.

Files: Drag and drop a file from a file manager, e.g. Files, on Parlatype and it will open that file.

File names: Select a file name from a word processor, e.g. LibreOffice, drop the selected text on Parlatype and it will open that file. This will always work if the selection contains a full path. If you select the name only, Parlatype will look up its full path in the list of recent files and open it if it can find it in that list.

Timestamps: You can drag and drop timestamps to Parlatype. Select a timestamp from a word processor, e.g. LibreOffice, drop the selected text on Parlatype and it will jump to that position.

parlatype-3.0/help/C/figures/000077500000000000000000000000001414030451500161305ustar00rootroot00000000000000parlatype-3.0/help/C/figures/action-unavailable-symbolic.svg000066400000000000000000000010171414030451500242250ustar00rootroot00000000000000parlatype-3.0/help/C/figures/asr-setup-details.png000066400000000000000000001142131414030451500222060ustar00rootroot00000000000000PNG  IHDR{DsBIT|dtEXtSoftwaregnome-screenshot>%tEXtCreation TimeMi 22 Sep 2021 20:42:16n IDATxwXWM {7vA콠{IbMbgQ15jc{ VA HcΛgS=3sgܻ !B!B!B!B!B!B! H1 hJDB!DJh O!Iŀ22u򧎎%utt4544SB^Q(RHLLL 3{ڍ6<RN^IK/lvpp{xP(y,J!xhhh> y$(V}bcc/zWZ9yIW{2Q !2F@u.΢l^ly:OwB!Ŀ>Q*V:vLBׯ㱰0קOODuT-ץ',-,J?X-BQB!) Ta%BHw@B!ć /PGĀ<B!Tz*BL~@X3{Pai+C~h~O^Ljh)׋TcsQ.VAIgnZa}%ؗpRNtu]K nvy^ʾuvgG60l\dNe\سndF[bneS\U w:^dֶ$NqmkBHpzS>i_cx<ι ~D=c>A/1ѥ>zuA % >TyU{saaYqdyb Z`yɒXf?k<Ci[7KY-[ۧWV`]p6Q_2xyAsWĩ"!hP%}q ;8fHz5qv /x(|oS]L/0.q=N:ɛK$'uizY]Bnbŷ߳/8:4x+h[PbY}̛[E}.3eLLy3fӥW< r*EQv\iØ:LK}= 2|.aM2]\П,7H5f.@VIyvX8ۃiq,Bo&;}4ťz N2[,) ݒPz?Wm%w `G&(½9i WdIz|]ǂ guF`̎9z#8Uk~mhZpS.2 }Aݧ9x) &4:JpXb'R@yq]W$ZReiwmӟ pxLK][jve0Ⱥ?s<1}dc`,qkl){lJuK3|;Lcu2Xf涢-dm;\OX6sPy#:7ƕcx_~I37'ʧ mJnF?sUpɺ4M1P+GlK f1m< J2,PMD6d^i]I;ĎkJGy-ʭ)iH-oYu+q kf,ХCԗ[vrYeh j8zhT1crɀ"8FG}mG0F;% :;xE")9(tueCb6q[>Xh+D:eU'VDBx}lݏe\0X*]}ih`Qg%ʺ3lzc^9N]%>%Zr?\s(vc ([fĕn1 Rv)W 6UET9Ro-7ue^Bf3X,}F{9w1ߏr~x9oElپaGlPģ"v<&*Ϯ/.8]}.qxɄ){ })QRicy7S2[SS3*v-,e(m ZXbҒy`l,_߾Cn ᇘ8Zc]=ohc`NI(g՛loCVj3{7uy7f]ZTMhlBܵMcLvL@Aе<K:C<>~ MJuT.}ۄ]ݖ4uP'#ï<װGCXdH/+4e8~!M#̉~6J3)cLU(ñ1ZArg`x_^bT-dmKh{>=o8zqcī7Ee()%ߎpm*5kLG,zNPxIcdtG/W HJ@(_,~j_~?+~jڑX[ 49Δinɍˁ`Tm^5V/ye 7ã&ʢXqslwB?\ $ɵg-޴@$b_<^Q'xN]lzU?k>=6uK|;F͙ѷ:WsQY+(Ү2<mlK&/tqi猱Pcbђv`;S q9}Rc2rڏLSvsuTd[^Zh93em!k[P-.3Zh9[&x;t{zޙ~l>vtEO{kq%->t5H3:63f,q*G ^˖-#"qϓ$&&Z%} {Uqc-f~ G<ZbTk!4wcƸZ+Y6ŏǍfѱ@]Řya1YyMR+I*k&v>D˾$֥ BjѼIU,qi|Y!)jUhZYtkEo>-Crݫ{a}a+'ay"KB?Ų r) mtӖFQCS~ >T~5v.l];*݊ūwm>B!D-j`>'L]Ҿm4$?-?x ~xXJ41&Ck롯 A$hgJTϸ)3߽b<8- U!2JڌY3A9bs-( M3y;fJ*9./niduT:oV.ɟc 83c ' 2X!4/@W1gB/``h8l99!B $ !j V!PIB!HB!@B`B5+B$X!B $ !j V!PIB!HB!@B`B5+BvQ ć+CB(qzʖ+B?#b!Ԭ{Q (`B5+B$X!B $lB}WW+wgR(I d0z-ZX;Н'R 6[&={'k&5ĠD_vG@1ͪ¨E=b̮kDߓsx5(em:4<=&3@^shYv(]]']G@41z%s|:oN1.pNT(0k;QFyI| \hoOF]Qm"!}LJؔEA^\m ND-as ZY…07+;}`mY#^9]S[$YȔ ZѲT^;lao˼u{VEToۑu 5ݧ<{|3^? V_Y ÄO-.i]`QEnUXv>YOVg_Bk.v]|BN0ŗ]i[<ϟXq|/"43:2iA nV陼tj .^̆q[ HHlE*hadh[RElnΚ1un:t+ޜU=(ڒ 96|-2^_a8ʔ*i6GVq.1clfKZn>ǰ7*iTIx훏gi68QE tk}AS[#(V{ lҧ0T*pɽ籧ܷܛ [2+~MZxwGuIV9t 83cs.Wc#YRJt3~eޗ90={[`p ^c7ŋc`؊-W~܋`ciKmvDMOcL~ҍ\qAQu~ Ta%|ڼTrIJ+i\SIJܞ*)1.,Z:Víxv3wu Âs9c#J8M=Sy,ŽV˞[?j!FnR+9MlbmqϐKxW5$zEbTxϒ+g TтgAAN/1=hoYմ4oxʱlA;eDm 1k)[Y68=g6[thج)og#Fi)ҥ/>ed\LKC?}K\gސ, ɗsײcj>565L[}kQ Ưu1x'4J\_K/hq(q{z;zgܖ \^Em-Wn!"^7r5®8>G\`o'𹼟}',iv.Sۖ.ʱӚ ڱ=]FSٱp̨w:|(@h7L\ƾk9RFcTp{~'m5egqalF ZAt:ȵ[Y]ߺ~[, H'lK=&3rE0Gc2`g4 ~kەF?6ti̓˖,gY-?_x؈'Of7~^*&*acY+ Ry̰`$9P~9lb\2݆оJ -K|xzxvΞ]ܩl M]\zsIyouD;h޸x.R14]Β9^g -{V SҴ9v GZzr Sѷ]"  qP'ʛк$,0}2֎jHnwxq 3۶m.V=#ո}_KgѩR lJ7a#L˫ IDATe2 u4_l͢9$iUݐ4䄝sm:N7׫=2 5A*ޫ8Ua,1Y?z*hanADG1ѼLMv+φ̰B3_ +uv1>)~~ysn~Afpz=9dxe-MI^q3YeȀ.Ia^{65b<Zשlr32n21oC6VKfT)FF"=W/ "g13:78o%Mt!k'>9ͭzsOL9tϳ416]f͔ϩƮ8炞pJVL}kj)vĬl~0(}L׉ڕ! 'z2 cd(P4-hdT: 챷&p5a5 5_PYiN5;0nCydz }WޫGı~f lim|>e>-냉0!&6}[ qvf]oG5`Жt@[׍&3WмYh7S.dPgp/i(xhbtVíqIs]$]ᒏ ^NfJ^7*{/;2yf/TǬ>Z>QqNOS ;__AYڴ-߷gο{։*^:ֱλVbt{('K=-c,_B#։WxKB|~WoM7~ʳ|_cjɳ` 072"&$9mb~:hʩMT}MgӞItٸoIRg^4\X5 WBKI!.ėw/(ХE¶Ǭ94*n Q#LD-V vӀ'2z']@GeaaI? KR"0?'~2[՟\♴I?1~T}3MN&6"|ULa=e1b1ӯYO $8Maؒ:o*e4Fk{_qA4/yQv+/)mYQFl,Ϧ\Ή %z|%[r!RN1\ Ǯ>Ч[|񞹴[q^cJ}Ww.>Q I%|]8eU9WF 3Q&4*"$ǎߡf~B*Iyr*ڸB!k>>X!/B}~hBWJ-+ݫm+B$X!B $ !j V!PIB!HB!@B`B5+B$X!B $lBq)ʅxG6ۯN)X;Н'Rin3flD"xTcg(Dm R)6R- !F꤭a.;.!2_M z8]p?ѭJ >æH>e(tj9zʙ~d<3k3,|.j]c^.Hw%F3D+_Y@b0W/SN0kokCi}PNOӝ+/mYˋe׸jU-6p!|$3wG_u ! 䤣#f-e/ ܦfk`ƅrr2-zLȲik̍Uvɖױct8ϙDžU5L[}kQ ƯNYXbenNx%'a5ǘ4߷jZMrxۘBw=اqsy %,U'nS/}Rq|Cm;o6J4/ Xn'n/_+)?qM'ʛTcly#Q S/ýI+,ce&9_Oʼy̓$/mqM(^,Tnߏ. B{,DS\P~R8R2ܜkhQX++q )<7ҧ%3c :[mɍn5d@_N5lJ]h_6(sB{lb~C2 elR?r]INr2)$p֯|##S$נF^r.4\Wq6ӟu5DzvVl-(7ǣ0xhKj:[al )/Wԑ~ _Y%)˟r(_U)m˪ŶF[>2ߖNZB\]M#*::+. 072"&$9mb~NtD qNTj[Ct/WVNlυU3p%B|x7*mHNyb " rO$E*☚j,8$E6dopŒ[c#x'xt\a.ݘ4.s׍s kI]3\ FgEl</-[j(iq6>/а*OӶթTRYפ܀,_E_!4] 'G= ȐD*l9a҉{GSSښ)IalAc^po]DX&%cptKQTqi*6Z#Q2GfZu/D:ikB9CFdhc$ܿ])J邤H'mM3c}Bc 8w_I8q;cǪt!wuO{K}ö(ȦaZfJW&Laʼ2:-§PjPo 8s2۸3lWD!Ԗu;X;Н'Rrx7S+wgR(I}|@a+"~ŅL5 I;hp CaDbBrdDz#^S7l?m{y.6_VqB2MƠP & Y_Ƿf™8Tx)9Ɋ9{V̻iC|}Ma:,Ai)TᝇRh0240*^_b y0:Sxʰ ;?7f&<} {L^%6zCª]'C-ptErs"67[@w@C~ֻO)$$0(P%uO8s<+.Ջ-̨ڛPZ+^r}RqG8WG#pI_4=~UUF]=5u)XR"i +C5wDcCʙ~d<3k3,|.j٥LJM[}~QY%]:r6Vu^C iSְqUeRan1)3T(/}%~xw~\Yպ+WHo&?ۿ5= /oCe7,PR ,v*?/aq[$[ӝhF1;cд$WsSɹ_~ƻթM6\X81Kvp~D}8O9v1u^9cq< ^ nȴ5طf<`$|6M`1#>MgH8SdxLȲiklRxıq4n4)g7s-Lq&Yo@27Vc%[^ǎ5_Qz)AN_|Iat1qYmܲ4͇7GB 6ԣN7-u5 nIYX%]y9k̬QSiK- rӂn,h,ϰa['|v5՗Gfdxͦ])t0e-1@^VVm[QS~YFh5`j۠>*/LqR\]fШ= xǶprYN?-X>%Iʞ]ܩl M]\BVDE ~nU4p]8`V^:Á=eP.[ÒN9tJiz=<~O W9>?)xWbA܋/OؖY?gp#9C{}YIMAbyCEڗ0Ϡ6UL`g3p/m3U-()&:c8} >ȭ'@G@ = (>C|&u ^9rN'j644##S$͏%P9N 4rbki.fۑ57ߕA4 KB )I$)LrJ"I)YmQFYLd5֙[yx哱{Ȫrݰ;?І VxɉK[sTAb~C2 elR? ܾ2J-蹙7~&C|ޓtu3kfLD3e}\T6߮wu7 ̍V-𪠱8Iq+32%]#ʖ;GJ˕۹7>PvKӅ޽]pt ,Ypޙ/Ǵ@{7ǣ0xhKj:[alA셟ۧ)蹙&s?[C|X}Y~*wCxȵc+m׍_f#"r/@@?ªlB\J q!\ǥtY3:7fJǒ[g/006ЂN}Zur# 6gB #:Ga>MF} DG~ 5/:ť&i))?[ {(;^DrkC^HsX|(o*۷d)J~6N6j+&ςIR(~oneEvMHsnJL?N^ NnfdwL_?ćkAɒ8e!duJ4?Ʈr3Zt4)7`>|їlG‰:QD&2Y4'aIؖkeRF?H*7ME2ub6Ld `|&-]ĆҲfGR]3|>qq:v%Ŕ>zYi&Xw ?P@YI 2):QFHdžsˌۈ|S(mgcJetoZdyߍIC2w8<טPv;5zn'M},)[6_}/L㹟_?ćCKPW1gI&!lҋ;ë}Hg͐n82H8!Ш(’p>~v(N,Iv}xϲt7{u\Q.>Bk:^sqRVΈD˪4;EED} !'B!$X!B $ !j V!PIB!HB!@B`B5+BA$؀Cj֖6?gʓC8ĝ1csځL=E4̃^k} l!TqMdNM &qgخYxs {!la>׳dds'fż?Rf>Rac\+ӊw, v-+ )!M)W'&CƇS6VGB̄o,/qkJVEƅx߼7}zURg<} pyj|Wҩ<.dz~{Ьmz]᠄Je8w>=,K<[uX}O}6޴j݁|L <ap4 m+eO:{QߥZ7zٜdLtϲ|J7OtŽ}/OYwHw{7͚Su;"6DbMcpjOcwğ !D޽7 /Wyf@Vcwt7ČQJ?cjcupz5-aƲqŶߖ3R ˦J"@<Fܐikox> \3\^kv4[~ɢ_E +sCtTDoaG߲iӒnik{7 ?e+\5hycV^=q4aծ7m6n,drb3b!DOD^a6^A cWֱn-1/QnQ[O08),'w IDATIT_X9Wa}W f%qӖ/>ztԉ0ƀ->˃ W?FK'LqR\MFipSGD'OBWhhQ‘ڭG|@'jԩɊǀA:ѭ ˩Miw\d*p8Pܚ&5E˟~,ZjVZ9LsdnEPSQ."ޅp|<|<|>s|Ыֺ'&lz,WԷ- -'S6:k5f?ל>k6ps(;@ɳpD224],5U<6oU/Ғ)m^%15+|rrA (KMDziṋqM*T`ei'`~/?w|3c8+M&rNwn`YG3h|8*@V%l(}V.q~_6 6/haVVV8% s~`Ks:}W?H !VwkO6dp[5b)XÙs*jkD+nPlwc@-h2qǐ!84ACB>ipT29Μwv͂K?gON9ݩ;Bq 3nݦF% w|ic"vx ehs3: SxPk%W[Q6n>KBJ"gwKa!*^6t;|ʛ÷`^=hQ|Oy?ˁ;ޢ4p&,?.|>͌{HIf86f{`ԉb񬾙-Lu=}HIAe< _eI }ц xc'~cTn>7p{7l ]rRz%*y t.w?^sWN!|5]KNBG^̌&D!x;÷,TSB!ģMBa`B+B$X!$ !& V!0IB! HB!L@Ba`B+B$X!*$^]3)[к4c382!G%Df4A=g[j0n}6a:7攨WO~icGTt{v,o}}[Zy^c׿J ֙!m VсQvj5.oZ4˦m[عi ͞9>RK90"__n&eoـ|t1vܗ?ث -Ę6eDr4Dy1lŧm,qɃ:AjOvZ-XCٜcBc[ײ ӎ5hUgÎoPpxU)aC"M:֏NcOStt+ؽu؛g3vvbNK`衼*3ݞf鴢ylLn=6d =u16dU _ c(I;I1U7_J0C֑շINǾ*TQ*`ˢ0("ԥ\QC^TAZN(n˟lkO#coH{C^X?hBhcOsf: t< J^-t|!Cغ֠y<"|ȥSgR:Xሓ}:i%iv&jjhJQ'، Wp>ͧaVtJGs773d"tB*aCU~pSJMDziṋq)!c%-P]g;SYӻfWRw<^ n:O;F!W[uϫ_V-Z6;T+jڃCq:ߓʫn! )1dH=l?MЧvw>x2식s=UsȼpLEPڄpf_!fn4oG. Uq VMjZ==ґgBq\$/3Fq) fY:'VNy#L;Ͷ_Np))\7m;<(m ?m^=28k:݈7O M99dTsڌ յULd/܈矽yL@rBT)⿖пbVz;3KD|1˽B234!`g8dh V!xIB!L@Ba`B+B$X!$ !& V!0IB! HB!L@Ba`B+B$X!$ !& V!0IB! HB!L@I?BJʄ 6Ƈ_Ŗ. L22QjJYƆ4Gfas/2-!xD~aZo:|)]/Vլf1mkB.6nũD }P= v H7[E0cgy?l&*޿O3vɨ)c#| :V1ݘ ! qФ!;{6!CU_B!DBa`B+B$X!$ !& V!0IB! HB!L@Ba`B+B$X!$ !& V!0IB! HB!L@Ba`BQcgҵ;%yl:I`0&5rS_]L ͚ 9"7 ۟Ѧ. v2xFYS#$Ok~H}dqd>@iv7xCkl]Z'2xCOsnH[B뻙m y珚z6|25Lޤ0cD9R_xj5*,sJ5 KTfUh$Z>n\E`?tBBT,I :k)Y:ʫXuG=: ]"=?l5慛\_;g}v'lq^ _<C0ulwjho᥼ TߞI/ҭUaZ)Kr >=q$m=-8x0@Dl0frDp77]Nʧ90QW%r`,ykَ # hrgteFvsHlԼԏ 3Zүx?5's}W~%r _~2n[͂휼 бh`_G<9E8l8`>/&u,9ݖ7uִաCuH"ҶSpdDƅ0sz,J/y:BO;Kq; p9{|BT+&3};fGͫ"·eA/<|=;9Tt}δ, eɖUY6Gܽ } 8şEp8Gd|Q rmKnp4JEɆb3Ɉ77cV=_5K$W]j=uý>{vrp0 } Scg2?E|} {/GOǒ̕d >95Xk{%+O#A.&3H Ũ{ -Ӣ/^/sIHž5U<6˟lK]!FH:73ì ߮2*8uBE^8'ñ\:LW،ioP:Яf>x!ګ{@ 18%u槍Jݧc(##r.ON]:1oLs1! eGNh؎z惙!n=?.atDjy9:_ӭ ?98H}-OIG:| +W1LۧRR$_4۷&}KxpZ2"&=|,$Z?:fL)_f/fpV6Lx鉸T08 0r]PC1o/ QՃ+6e 9Eس8ݩV~Ozx1b.eP`~ާ}2jc/֯^ oy>SCZE#GD$ثkF4e PzXvʉ"rR'cHL]_Ʉ @ժee$$rvZ~TEctLc8F+r`?͑Y}"lhO?,eDRo_eA՗al;Dv~Cڼkr,9c? م2;l?gIˁU[hcLfѬYy,ni}__ mR@8;+#_1ܾdi .%es^঍:nh~ %} cf0?˽Ob,N>2ؗcch}<Ə pz&y}0K' k>2ߏGzXvFSo0u{) yKaxmL WVN!hZȌ;zN< '}uIP\ֽ<}{מEG B&.|YX;W_#=7 bdj0 ~e>6GwԻD0\5>.!!yѷj vڭFo^+,΄⧗3{7i7 /#sG2mT8{gV GҜ}7Ĩ}Pr OSPGRrl D27 !b cǢXѠRq!Y˫ѫkFgovC:̵O(*!C0|Idmc_`F4-l:z OON|۽q@iM~>VrVVnBQ* BуۯM^4Z6͌4)xzXyR raOY%Y&P0qx.z.R y}tN_ 8A피YV5;Fu:IE1E`X"QPIlу$thס9c nD}^у ѩUZo_/!@2=h6ڕ΄M]L!`&,u_|c]†.CߧA vCOhyh\)r ˅c0Y^vt,4.ЋLO!&ؒ?0o6dp媉.CZB!ʟ` <0o~4ndɭ8AZB4?o=NJ2>mԋ )] c>;B'"UkyVؙ u9› SMsW6Lښh )-TX1vZ#uH-WƱ{'|o\ Աݩio&-c^! VM,¶l+z~w͎CW'EhgMaQ/"3x&w/pdDƅ0sz,J/ToRtǟc\=`wEo"\qޔo',m_? lP8:vW ='ӢhybMOS{D<߅X7i5^-?ͧ)BG"~ܕ S5%tZlwHB`0刳85 ePw2[&v;WQ} ֛#KgDj5 =ZBGc O/gnҰ&&_AQ:*u"8ܕwg?s~\a=BH$Bor_B! HB!L@Ba`B+B$X!$ !& V!0IB! HB!L@Ba`B+B$X!*$^]3а]4`$7}VI~Et5"GPbjhęd٢pLxj25ʟ#@.yD~v۳WҌ[y+tY&ݗ3ls4à8W>Ϝ|%{1xO{>7c;gc<}tXTXMDzinT9ܾqm,{!V(C/[VYD]1u7Ke:Ӡ#i^wweTq+orO5=}3j5s9}6aG/>56]er#UA~Wr07] TytT\qJzOR}o:.eDze=o{(ɜ0/BL#TVL G(pǞqt[Odcz=da>oݯTD^%k֣?6϶~ _-ޮ+mxf8VvL v+i.4 .1gξW}ˁ&j$d/YF./?sܞ-,ط2/u\SG9Ĩ{?絍o>nNIOV3#V,NM# w?3`ڋtpŵzS9M;ªU;B9z`+'ڤsǎc۾-5u=pv%th'u-hi'f^WGFҳ%N-> lP8:vW ='N΄M]L+!8PƭcIU+9(=(JmިS.=Kbj2W5wu ̌GVXSJMVn1IJh]!oK_[з%6M"Jeto=ey\ҧ52}YoaKp̻%{x+<[i?Яz2k{B|5|Dk1,ȍS17Sw 1K|u4&%ϑ ckS|c s7ugQS7⯦-2dU/(k6%缎,{A1Sl"g&SyyPKK3kBڷݍI w!*%#lj'Hr^lc 3] ^1C-O5?:CE*(JTsJxBf&bt:_Je4Vħa3յl{WҐ֠T.u=)SfXYOJ.א\4ug e1*67sϓM𱓛ɬOȃ]\ ?F^bۧJN]ϧnK `Wx^ꆖpg /*sEFH'1jAWGYc7ϴw=8VJyK̈^>ipTs9@Յ(:I̓ wDqM[1d;<2yQeLfѬYytȭ5m mZN: >.|pUyϒ]kRBֳ̟ݎ-ug.|1)dA҅4k,83ѹTr` V|cde1*R)K%T* .ڑZ?kJR3س+~VCf4{1PeC-e/W#'ogs#S铷pK[I!+OMvY/|E~t(:[oȋV JS9p]eB:z^&|wէ}u5F}̠RcUr_?l ~"\~u~ϡT+;E|r1- n>ԮۜK^wp6L\K>a#rv˧X]hCSB^|΄ׅ/XYxmy_9Nlޓv-]8u>k_ϫ}GТ{ty$ 2vO`i85ցZ >X֫|nF *}Ƀ@v>gNmy$怳Æ{@MrJ-T$eq,מ)ůh+CAh_)+bmnIf6 bMAקyx^6 ':xr]m V0#*,Ncs-}Ü>ޜ.VP#SJA~9_^bڂz.|9*ۃۭ?nCchs6fu=*[7\!4ޓmCJ]z֎XbN:΄յct)o&B56:]]XcMWXњhcnr3וtWy R2Öx齟U:(s晁]]9c({]Aͭd%-T(fLVrUrcb^M 8hHcLɲE9\v$5N;STʴJͳe0dn dwTR}*^~Kymt+thrI_o]vTzb61 k*i/xGIXgf%> m(d2ڿIE曎K gqYDat2'$̋H)ո7m}27F# ,wV؟^!3=_Xh.O:g`pl<{wÈ1D%Or9a8oN_fMa>UǘGBeӤ翕r~ =K<+QSiN) kTE{P:۷Uv,[\IƣĮw 9c<͵lG4&?M Q|9 UM9ex)G8͞>`Ή-uLX]x'}e[:+X*WWEm~Þ}QT$۞±TAcwt%W^3K6 s­01YpEa'3a*x\ʠFny67÷m-eKgC3߹̬YfM-S1wv5şM` ޾ד:>5*ؗ2'Ü~ד.&C{Xp< |0;](8ws ;j<x;ucXp4́n5nX\Ö5 *P{A\~ږȪl.uK'/jn}/PmCq'r۫085O4vSԀJs]jWUo#*u9F3ymd٢+ĵD[bU^1W~&zР+׮+&3};fGͫ"η }0QYtq(8"(\_ F2y!i bY<3Z/%k޻|ƺzw[~\m̲)rtǎGknrD{&9^m}9A [:[k-+d[T|6͏iy,X/@v*3JƬ7gaOF638Y(6F.а}:4;&'VgY:QwܺoTs?> s%qo>iNĐvMfb3; sz{,X0:&;_N_E/-KԝX ck~wE0Ŏמ`+hy+nƲͳg?,Wk+l3w4Ux=ŸS|y]*J%M|,K̻oUfru80!7K O\7g` m ?%|׀Q1gymϷ1{ғ|y1ȱzU SH "\qޔo',mjՎq+ʉ?p669vܱضoKbmv C]]| ڃɧ8y]K0o YvSr ;7T6NݨH ᴸӀ3aSJ?q+7zXR.aN4J"JGҧy[dMwCj*+ZԷO/;:(5cA|4Y1ub_KJ)Ӊ<n-}q%d]YVՖ1TKM$ "|'=-quM3G- t_AzYjtLfٻ74|ҕ-qqoh|4V<D;-mu9+A126|xÁwr0"icEXHZzYjK0wGl']<,PgHJcE]]h`َ:s&s,/s}6;p)_g7#D\:(kY!s^Û-iX/KqVN$޺] \%M j`לVZ1(/2Q'TOEx2>9ʥäz'&l- 7 {/GOǒ̕d >95]!FH:Ŷ73~.ԱR[zlh`kZWaHۼ?;WV.cmR3[OYr5)qc_[nA!:ϖnڮk%6^ڞ_ &*3OkjIN_=U06`l3xgK6mդs#Sgd䑐OL*%rcT|ݭpH&_]; Is$ØXœMYԍl8|/5YKA:yM9c|m,K^{zTٳ_g^y|5 +++-ywq]JjɈ0 C|\<IDAT8܆X5LbCgp9t #PSϯPѪJ%J|5\3^P(]ΗRY</i-/~Lu-%dq5k45(ՀK]kJV"5)1ͰkmuYC?mcYzMMd{2|f28.4`b9Ï*S۸𒀭*0?ײ:ܙ0˯ cih~Q'I ZQ3FR}g7:3gA/~38U*g;Pf.viu!ÇNdk`<#Q\kӖ&KC?`ӅfTw@kK4'NUOsqꚆڞEw;]˙Il)L֚1]Պf\gŭ;+nRS<kr3VCO-TZfEMMG[z+[=gët&\Og[{9'k3ISƹ$V$;1UVU6uSC %Q,QKgeQ<3kX=*.!;+D̉ݔѴ)ЁyO"v ;?Y m^xTӱY4kVarkM,m8;+#_1~ժee$$rvZ~T:Pu-ޝGQ%juw@XE"^@!W@."8u3*#: 2: ""a0!U$ Kd{'OWw:]}s:/bŞdf~ Y _۔?\ EÆS&Y[+wk离bU[Ž |q s=8 GG}=^Ķx{Hrݶ4KE3(ciLh3ens뢟{pIVEmoP7mɕ;WB>EWX._3H3gYשMnQ+ܩ|TO;ݞ!5ü[\wq&(9EUܼbdS ٌ۫VTk^qV۷jΜnSWPIۿ$I]]RN88` C=k;;Vv ?q)ݪM+R*#Vں /%о_*7/34b.Y\Jgfeѹi-BC|hW:ߪ_SET޾ՋVJԶiYc1 mKp ԇ5&ݚV*RUD[ϋT+dED.R/oO`Y@"/,ˎJDG?:V3}Ew1Qa8us =?@iא .g{<,<i9eH{]TjP]ը2L?v9Zlx=n_ʯuTdjeH=PWM4U)E\\Xk*m:}Ω,vl|pffED*Z4ޞ0=Y- nډ!SfdڀoOK6kN^cyvu3i+s1K-\&oټsn;mCQS2'/[k$]L?<;/1qDѺk rg' xEk%枉 hCXD cp ,[I%жq4Qu[u8`γ8a&S& e.\OܹMpw ۇs=ذ/#gvOP}j-}ʠrYkTFs&ncFcK/Mq$%v@"Ght-C8@|/긌WY۽'nĭRFV2_~;s";C&M.(uGs8ɾLJi8~d+p;39C2CciX;ᆱd|o3\8[ypҲNgV/Z`11V5ƨM4ioMa8v>za+ '0}gvL|m.6*R\UF;u-_} !է~7]fgwx9e(aUN؆d|Nq:<eww{c9[{_ElZK?gLÖs*">M~f̨DƌJڋ)/~fw|?>G1m=OMW57-DR-a`F w1cb<>̐)AOAyJŜ!8~uV&g,B_юYhgӍM wJJZ6sۥhQݪ{F$My \MH07եuu۹eFq}0?i1h2cccFf;wҮu~/-g3wx6y; fo ?&M*zr] (+p=7=/Cexib&^{wqy\f٢W ZW䎤%,';Ȩs-sc?\w yiz8UߛDDbF@аpʮH׸PVsg:v̑VXuIENDB`parlatype-3.0/help/C/figures/asr-setup-downloadable.png000066400000000000000000001063471414030451500232250ustar00rootroot00000000000000PNG  IHDR`%<]sBIT|dtEXtSoftwaregnome-screenshot>%tEXtCreation TimeSa 25 Sep 2021 20:49:01TW IDATxwxUnz%$z'A X^^ (6DATWTPl(`A"bQA$@HBI ݝ$Ym6ܹٝsΜ)䜙YB!B!B!B!BQSnBqR+$B!k0f`H.!BUUU`Tt%XB!DeHPUYe;eIy%B!Dy8%`[17e%B!DYY M%pVবmL!3^8]㼄B!| &1LKe4^gt3 ?35T9$B!IXj2~f&^-򴀙 ?3d{*f^B!0fkaP6Scx-a|V1k`T JmbR0fk f|B!kvaU^@̰5T fbPV0s-RM]k|MB!ĭkIU2Mge8$*S+XE.7w}˩ nşK B!lU0Pd@&Ec`̰RlRZ .'h՗8pWZRB!6S=:Nsn@׃R`QTWͭ`֮2֖/àdܯ]v[lCA~>:EݜB!VT*qswӋK]uzԩn swLVTF3a)*<۶me\B!Dͽ 9 r={L5 ,~ ._-[V!~qvq48h f2ȅWAȒ/W P_B!p((W˗&A˧L=́63l޸իY٤F-B!DUrus?۠QD[̵wEj +qC+--`4[~Q!/!B(Ac0s2fe]CaMU !BT NgZ~4u|T V^ !BTXL2?[T2)`{fֆRݐzcB!zRpaגWE?oNHsB!$5̸;BB!\+&Zf-A[ L!5V/[,aqzY/·v`L.B!ó KNy g&B!j [0S)cyB !B8:Khs UGUL!5-|UB[0KќRn֔ɯfi|[3^u nݝG $"IgoI9z+f߅yhj\=q]u@/:D-ŵBdb[[ìvIAgf60!lWrxڞ.y\8ky=y0mbMySXߊG [^UYp%]KtogZJ[Yyz4\I2TӜ~ Q!u;) Y9u&nvOuΪ.N>J> F4 !*mV;,Бc˪T,SiqMy0S}.P Q>% U! ݜ9|Ғq,Vz :RGwZO˿77յt,ɯM);ΒcY0N3XuƟ-]4Yqd=8{\*2= (Wmy0>4t;F󛹺PM+wSl>Y·-u:}FյT63j1/w֨OHk kt"N8'm<۾_O $g҂G=*̶X>N\F@F]3m0+C+hִ)Gs3PT滜NJ"Id3˘^w'%i]@Zt#15lGV*8i)6^}4"8QӺ@"ԡC9 GT0{#UQ ?thQ-[ot%|CrG[W϶Q0qu!h0C&϶-n\cРQ-8U:^dxbHskNdXܯz}^O7D2s-I?M7jH♳wۜNJ~P͛[YWYS]H&DePd;.*u?wm5<>k=cRpW/J&aқX|go.tZH??|ZQ qyhCj'*hp7_bˋDOGDΚƗ1{+MI&U| g/l?G݃y hymkwNpb "\?:Kxw38{m)\TI8ٛVu+n*X{<=m:gBl0*XM[GHpW%oU޴>aMAAǥY>/M6l\ܻ -PJ]|_Z!#9 =|OCE؃×AZ{quǽ%_pj*GS( zdf.L)],SμsvU]TMQqWLJ"hNZoo@,tޡAr7)huZ3quGweggk`vê'{}47_f!j+:&']$&%o+/Pg(w,T]B K1gѣ\C.wһM &LXM ''lfQ] Y={בǿO$ % Bf!Nލ88:R|"Ghaә|]ܸgq@P Μ&q_4DF^NK@:/0 $̓xFb;\ S 1)7ޞ7_]U=F)Dy\Wzp4~rڢ;Xe(3U>xѴIm8KSځ~C"iP/!ͶpW6E?{QR:I>P5 濡[(^ŀhSs̻?o 5beӛ=˺y)&3)N旄yճlNžxt&/9GV4t eS9©ӉjْޚwOH~^iU5)E;;mhoTN }8Ω7BfdM;9vdJ=zt O5:jMZ8}]<а;ʴ{B =o6;YOmP7ו'򖭂ܜ3cDצx\:M8Sg뭦@\~% ÂRWB8[aP:zEag{?(B6ێj`p\_] _O^PمBT?\>NJIaO>}>Ba?4@ѫx\  %J0ifcXq{&oVR]B[EAݗnAB[) q)8y%0gL^\.ǾBn׀%kBZɮB!5`B!v&B!c(B!LB!3_!0!B;L!$B!3 B!~P"|!B0!BL!|洽B!phv jgB!tA !Bؙ`B!v&B!Ǹq%#3gӓ3gPOϜAP NNNMN)8@ 4nNW nLn^^Ưfg~ ͛Y˗̢Uf\VC-9R3g˧c64@ѫx\  %J=^ 9JKXD[E@0!DP?0ww.?~!`BQT*] QhH&bZzuA A" 5mҸ j ]Q $BJ[E5tAޚjlv叹?Jٻcahx|<./m<:aO}g>Kǣ'o,zwSя3a\tJA#P_ )2ҪZ;[+O껰MdSd%)/>;G2pXt7#7;YJ>|&k/?M}k0/]OlD.TH~2ssٹ$ڷ@!dgX-z*%yN')jWv1r>k(D:<*Y甛Q KU: x8/bb97\\DxT}.ǹ:rܫ>CSp{leiU\zkԊj-YyuwqPMGe2P³tGo!gOɗ?6K-Lj#tAV;S)U`4Kxk&shC."&#7$qÿD Q]|%2wiFcԻ.h|4+é8uT ~헬y v?! ,yg=FC!4T2+r3YnoӝQ,hm~XF6LW9,GR[11(|Nbi渫H֎Y]:,mТkl |0>FLOjGd-Osd3͜S,2{[7ێEFdl]*^8h'QbY4y!lBǢF4~]F6F׀as5 h]+Ȧw h%gP㟟ͧS}'Jd.sZevMk) z|~!g^Ċ' :F!gso}ۯX'a\[y7VsZ|Gk4>aKKzWX֞q/&6mW q:ɝ-[ϖ:X&bGox8-WyRw,} і lw۟aX4c4\C/sʺY-Ցmc+owyBGb\~c r,h ?Wl`L3ǯNW8no)sXTF@x-'§FߍLw1ت[/N~v;sc'*vβ^wA;$K#~\ދ Os{-k. Gw#%%dVM8N#Vjh5<S #q PHl\BDr( r1ޡtzww:4N`3 y;p,5;Q>^eD\"!{'6r4udzNޓ$+fG{Z lC@Sط#͛4C[D5ԧ=h]a I1\ %?kq6Ip[:5 jp_Zfpt1Q6u jhB'uKZe GS~^:|̕ _1=N}lؑU+V9|D/<[/<̈́WSt*Fs]?ktm ߯aٴ~u ASsO~Cռ.~67w1Ohz6@s.?̪s,wif׵06RtƱ8:{0uJd!eBA Z JR̲ }lK%}3Ci DA?HJ.WKx~"ᡆ͑j:vD?pm5P˟ڹ1lؘ@ZeIFл{6. +y|KbY{0|8u|/eө+\<˥oZ IDAT+R? X zarT?eyq/v1]a{":: Sdh/p"*.]VQ ;Mt9‚LI"ͭ.x Vmc1WNǾr%|_`p7jݎV Xѷ'HOKȶoXDf66/;gUIEw}q$UW$kǬGW?.s53=?͑  i*V̲}-umOÚcoSPV+\w]wA%"/5"MS8aN; D ɇOwo2[;k'?ZZEQda *JEa/1m%_-{i\i$›;e+U u;xc)|%\iR MQ~?>f?AUHOG/~4njHwi~cc98NJO`QwW[8zAX[7#G`n̝#F1wj%P/!0-lVzЫUnta˞rV_`_uk?Fx$=gJf-=ǖ;[1\8qx ^א /`EYx3|%`qFnWV ,8Q챉xl#VG'.-`x_ٴ&MkҤHfx8XV+\}s7?|r,^Kݡً8qؕ/8+x[6ϲjH%1V>^ V'z tlt: cњ鄩x$]DݡnFj%O;'{kVhGn]gGC Px#bFݱ/kc,]*='?KNou3*&)jCGBQ}27iٽ_DGEAq 嶈B^=(?Wb򽱶#]%hEQ=Ü%X=FZag94U"wz>AFZtJwMy?^]Tw/7-[kLvq5.oyRxk0~N@tENh43ϾXfr]'OQє?hu4~{'?o%iriXh0uJftS ^>txs7Ig8p4@OaYd^d+ӯ"оg!w/V_jvy]\qUiۡ$rv. tT!vWɺ I wO\\EE*JZV -׮~:[ߺ/Oz}1n!B[ZY}϶ /P1-_ngOAz4o&?EAsӔ]gR' y(@Nі{(Tw ]gIԷc`Bӵ:T%;G>J !+yۤ"~a1lE10[Z:{.ͬBaqK>(F&j*L?JARP6u #8x˻vsmތ-ZRH9FaHKZ,?+4 8u3gM_Ue7 8yzSw jI`[8S\5z}?Wz-Zu-i5<̴ !-J)_>ىصs; 1mۢєfJw\1B`BC?Tx}(iѬ6J40iLԔټ9UК,M^m3i| ;~gkhyh0MxqF/c׀cr0зLynB&hS9r,Yུ1::OzSK=i+mX.`&& _<[c#7O71;zrh_0s!|%QcZΒ3Q سɑ-g(Û̲#?Q ٷ?\WMx6&q^x^a/gALv.B[XYvN Cs5 ͵ ?A(}Ws>%*f~P1jKУ7#- iX׽ޕ U@ߋ, _:)cjoM ilHdK_GcV[ȧ]ǸD_WXaQhnnGCۃG $,@ńXÿeOFZKwӭ9o9i_\G: ~{9oIÜݬZ'usrOwi3;♼?mX}-xyxŦ} 9|~O,H$?ϝFk=V͹'MK^ֿJYj)]\Ve@svne 3v fnxo>3x8zU{'@>~o:5O/鬚(#xN=Ө$ -MF}gg2x8#g|ΆS7'W8t"/o>IoMS Lu]j*Vj`p\_] _EYP/~֦V4 BEAף87ZyY'^n yy7^'r%/|-qwwA'7_'ԸzTE^aɧ.xFSF쁷B޵k8{=:m!t%IԸyR<][X.JTꎛ3j EC'(R׀NjT*PZ h{=ϩ#t膓jD* ^Z..(TD]B!C*CÊ%[cv"yY'*_n=-$/\ydH6/)1za \3/-@8 B2q-Q385`B!7YݥBq QLT !v'8B!9qI Ba# NZ-Nğc=H!79g.?7/5 B JT*u^oe빒FRϑH&BXRPxω#qdf\Ft:23.sH~x|{kBa5ӋIK:NkΜiv׮H&BXU%^rQw:ժRP0EV j5j'''T*Ca !60 j5z^/T^|`B! [Y %~Q/7$BQ_%#jjʶL!(e/jjAx1 *^ eR.%+~aL_~ /$xw6'`\tkRj;ÕE65Ȑȝo&0Kj'lB8I+ذ\I"iZ۟6XJ3{]qq6# nZ~Ȗ O.!E֎qՌpI=B쎟8<{R㾙:]mu,6{2thW{z9StRJiF~ѥw$-|5?{/Ɂ{(z'c--|ȏ3oCuKΑtۘ];[(PKyRS <4xz{ʹšJ_Pr2)Y.{?͊[m'KF~w~z?5 Q95=+!} lۏ'9]AolKet?]Z?~Ae`4FMJ4}j{*USFӰ考GRvV,46#Mh_Ⱦ#_υxmx4ύM (ǎqރ*WB~>?9=wpDV6S#'} ,\3g2|N>}mg}ƿ{ شiZ-+sah4kӏ;Ƃ 9s&oV.DkSNպ:_~yK/o]*P͵za/7I֕qۣϼ E;>fl(ϔɄ7eC#\˽kuS˂ =3}ᑞp wwً|lwI8=џ&)Av1!Շg=MII734ˢ뇬M/!GؗuO߲3Ly/dҨpϳ|8ٍᕒu vsP]LKii{{lwPA2ٳah g~l(c 9 )NRӹsXPխKm_q85ݙ?3I1;07O9v!RRRit ̙3iҤ _}:ݍg :?#iiiL:SrҥkAV^^+V 22Yf1~x:vx-]Kx"պNNNԭ[q1}t"##Yf .] OOO Xj`d< IDAT_eѯA(.=>T, G)%7R(]3^館@(izR(lPyMQ=˕R `|(_(M\ۑ(Qα>Z^:EQrwP\hEI2{\҅g߬W2xNi[:,;xCS4V˼ڰ׎tV L1\Tz؍J]E-x_1^}ҾX ׇ~,UԠx +O7E%X*k(NNKB穠mYy=J 'eʴiӔwɥ+ӦMSRS/^lݺզsrrӧ+צ:uJy7EQTeʕ+Wn(e͞=[9uT)oo߾R-X@+ʇ~X3 .]ZnIGI.Kf~;y;f LJ]!mн4( 1Vs?r zd_*_ -gE8d-8ͅiEws5.AmhG .b/s9tJaG t}l#[IZv{wְ|e.pIג0 RL @b_w ΒQj[wyTk*/ԭK] r 潚_˸[~9^dXՈFggQ2y{N}%FlQvMoam%WWWMԮ]WWW]tbŊku:ݵիG-xwi۶-ݺue˖V5TXXիW&&&ӧOCvwaU{ǿIDQpVgPr ̩4h jSL-J3":ZYij"X#UoK+Y LT%cM7*-GZ̟<5eʞֲ ǵ FBx%?9dpK@-t5ZVj@̮4poQ{f|Gծk'pda4?49.z(YݞcatΦ?7&e R`X(WAlС^O?4Ga˖-|1p|_^rw}:wLҥ㏯Z?11,YΝ;uVBCCrJ3g2dV+DDD%c2UaZ0yj=T[`/wv` %'"t0 5߯Պ]ͱt=kS^%G!-5yn_fM5y99&J7h@Ebع 9CJjr)oɿ?NM8\\J-j׮6mĉ6gVo'$$}qo c^8h޽;>>>(Q… NIDDem3fLv jRvm֬YC ΍÷ęnORE'^ET$2V}rG/3k/Y~==1О2w@pAmΉei3a6Zfƅ#c![♇rp=QC|;N-U;UX9 lz}3jӠvǿ*. X5] yᗽ0p`M?aO$p%q/ 'fq>^!5zbkZqԦ,GLfl3ls44a5o&jW4 73khܸ1ߧK.Ltt44n8Fn,]OOOt TT˗/o>qqqȑ#899yr\Nrr2QQQp!N~u%1#t29zL|`3.Fw+Z>uѸS*g.T-}]u{3UBn_gՓ=;a:mFLZ q|;>Lx.n"~ʍj\Lpյ j9~:n?GT5GO"?d>͸y%Ҳ pPYHźbԋjY <6<%[ջ/P2F1G!O]=clݺ[f{ٹsgXh.\͍:PR%ؽ{7K.%99rOdߞѶyq1Zn]dMY|9?Ԯqtt1i<==YbEv'227ZwA,yTddczJp>Ƙ7Sjf6JGo|h"wb6DDӧO/Lɒῼ|ӧO.ٳ'III,[{n%KX, H5-4 =d1$ݙRk1|קȭZj#Fj7nm[oΝ;_DDDh۩SyV5#o^ƾ~o98%׎fűJIAQ9SmBϿ gmDulO``+΍t lc~vE-b(bg(؋>pY=߸B%nhkR6BٕCMIٹFtbG[ lO汬qϴK }>,|ʈW=Mi\زh}_"{1p@^zl׻KӘprϞ[zvb߂[O2x 5x4sBf3]Y3ˍ(_0en 4mi1$_"C##I.e̳.|.CdAn 8s=7_p|ʛJ,O;ۧ<ħU sǼ<MdֱԴk|K^a+Gqʳ]tl +;g̸#kߗݖ+Qm몀:vh}m[YJRyNΟ7x{w_7'MjyQ8 륺9n9u"#,X|sA:OuQ _ܜKQί)x%hk̭ fL}$k|  A%ܼk)|7\>{ڌͨNAH:w,%)m5BMYF9N^>ؚeJY9axx;o9/ob㏷Ṥ{bP]lJq}\+eʣ |{Qq+WV3wљ61+Pe+jZ4?.egijP")"٦Nի6mcƌ!,,Gf/Z,['2n8ϟoA\\5裏Xn]0uTƌäIXlY>|}˝. `0>x#"cuTތHݳkXfiJw0=zlm׃G ޭyOPk85mR7_~Z;.:ҷwk|w3|oM5A;p HWG0ڹp6ӌC-8C(a}iٱG"yN\{\8@e:Ph́6&mSÄ@L7cpd1} -2ss&j1W̎9>o?Q Ӥc0Ja 11& zGڦ:KY&ļu,fx t23. 癕u3bt7'ܤ5ّn1V}$}cL-}`Yvܚy07n#5F 7h9Dfʳ&*%cV6i^@#sӴ_ނ0Flx}^+y!pkgɓG=#L_͐p4U=i=h3FQքd=_m6qWʕ+MhhU?NxxٴiS븸8jbccMJJydzPsl?)S;vd/O?e^5#F0ϟf}7dɒɄ$c1|US,lfviedfY'3B٨DfVrNvy2U.wIW%7ypXp!#{;w 4փ f??2׻l8|v1x9"!n5_(`nZ^N>u2LJpXX܅gsqB޽h\9xcWqoŸAQ*_)s!kP"VmJˤ%tj$m[ĒI'Εuݵ{7s'ع4OK;W;HZx뭷rMuɉ0PR[wrY&SLaΜ9:tI&0l0®Z'0x`iذ!%JA@БόԅY!XؚkD]$v#== 7k 1&g3h[)5BXuu@=. @A_z9tk}E|<9 șj|jɒ%tܙ[ʕ+W͜9!C`Z'""?{z*bcZT<^5֭ }Z E;P;0:y5^]c{צJ'~`xȇS "p|6R5.xfnЀİs1r5ԌSޒ YcU}Ñxh!B}5Z{-mW͍͘w[~;t^@Owg?`xc76DO)y|p?([ =ʔ)b)x???OHHk>T,xzzAFc[njBBBZԮ]5kPB,z,~$Zt1{ m8WFѪ&:8ꅻü:4_{?&. po v{Kofs_Ål.'5r+=1)\8qmsrYL͸q&t~Vx:\OT"S~˳v?zN{lvV@F{L4]clv8haרp5vZ_q4[_K7. X5] yᗽ0p`M?aO$p%q/ 'fq>^!5zbkZqԦ,GLfl3ls44a5o&jW4 H D4i҄ 裏sʹs0\seۇ?...9r'''\])fʔ)CdddvOXp,0ի=䢘z|`r-_ɤGvmVLіEl ~-k_n~4敨ؕUJ`e)و/.bhuz+jhVxg&O=8+f-PD;|06l`ȑ*U*{'իW/nP.H:c,%)xm~bH-{,vxf`!}- ţGY۟W:W%ʼ=iR7o7w7ev%at BYW<+.6sc  A%ܼk)|&:5ftV9wj4-l߀ Tk?nXgb(K?oRcgygĿnUhLaq]ÁQ<"rgZjڵ'--%K0qDƏ… III^>uTmG}رc_\S2vXMFLL ֭cʔ);Yf@zz:/7`Lqku:nmj0`gݍp7Ӯ@ea[cyXEi M_G %o p .:;S-MEG T2!k9l[LÀayv7x74,jB7)ƍgDGGx`3~xV~&,Y&))(Px6342 2M̬㓙}Jgf!lT"3+9df'<. `Ƙ?[_jk lYu?So_RZ 7nh:j1M 0%7??g|8wnbsx1XYkm,`?n6os)m3+MFY,71!f}zFM[G6Ȍ jŌkf6cL>uvf6U0̸1{Yّn1V}$}M*lmQME0%ڼcq}WyDd{0M8H1fBCCͱc۶m ͞On1&11ь1doW_}5uxxY~U 76m~mBCCŋYLCٝ-H87Ebܠ(ȯ_T-O4 V1k`@ .;aW`ΝFzORyZ N-F˪^~% 8??>섣łRr>dsKR.Mq,Xв'pt>usS: |.nXػW=xٹ T޿w3ݲes=!%Rٳg2qD&N}ݗ=̙3c={6::sʕ+ttؘ?/_\rIHHu3////nNQkҤ ))) 6' ź,ͷF=FVNY seȆH c;b=G:ww۱`[I4xVƷ ,<>eCuvˤ^!2&A 6ՈTi4*LL~%ݬ|꼶8.9߱1ڂ>/X-}f?2%wm ]Ss&\ƸPw|H~op" ={'̚5z+VO<^Ν fѢE|z޽;˗/gݻڵkOOOVXA&My|eV%y̚sLYOI:N3f ۾qA-&RϣCm4;gmEDGϞ=IJJbٲeu+Yb v)@jiߧY5dLYrv.ַ EDDSLT)"""R)ؘnAʝL?o+""R&"""bc `""""6&"""bc `""""6&"""bc `""""6&"""bc `""""6&"""bc `""""6&"""bc `""""6&"""bc `""""6&"""bc `""""6&"""bc `"""rG8}4/"7TR*U ^z%Μ9SVE]yꩧ5ǎرiӦ1sLSD^Ÿ,JaXTmD#[~DDZTT@~7={aÆ1l0Μ9òerDHHHCѷo_FE2ecLbb1b^~3jp~n6mڔ:::ڄ/f[fjNӳgOvIXXXv!222;o>{P~Ϟ=ۧڽ/]]#%Gjݺ-Y) \οfSuѸS*g9J)ۖ=o_.Tm^xe8|f߼]iYu3M%/~& 3G[9""w={GTT7n$55rHVܹ3NNN,Z .F eAy{{ӽ{w/_??k׾( }a 4>)r`֬Yի*oi}ާ"&SSS966L¶o\GP67Iw|rǾMI[q}].]ʯbVZу!Ct׭d 2ye~瘬9&gʒC=b$-4+~ Xi@KDD޼0a&L(Rr `6m鴴Ef3~E]؊]l,շ~fψ!{:8qz׻B0@#%&BCiSEBJI}hՇRP^҇T"T 16M=0gΎ~^9sΌ%-/$im}]}Ujh$Igt]Z^֩ӿӎvKl\Ϊwn+T*7O`߷OVK[ťV5V_T+sZ\ZSB3{#KyU+@ekzϏ}U|om>>;{N_$5rH*`݌SW;׏xc~c_}?{r{5:;_{>7?[vv3%{}}u׆:aTe]\_2n녃5>>2/HRo)rn~^/\$}a=|viJgAP]/9;qq{}fsj4q}i3\dcJ]7oh_ˉV{.]-؎6^S{NMT?4hNuٍE-$}'ߏ}}i8# ^TlHR9dny]\  [I'Ggb{MQ?,2W={o&r]A31;>MeZkϘ 0=Z_tsqA;D}7 -N0:|׃t;5kOޏARt,J/Mn/u]&@ӻ-qm<f{³`L E~9Y73g $=ei-cLw7́v&px}:_pL3M |f)ҊM nZ8Uaj,H,3`63~` e)Һw,A-7 TUֶ9qeG?ru~IZ}3̈́EK/Ӟt [0NAv GXVӏEWq-_qˑ}۞q~;SIcs潳yS=@Tt|1}^_Hcڈ`ٰ,㎝Z%H,XV+nGB D!,VRe^ Y`&+.Ģ /ӲiQ٨=KX4⎗&@gAEX>S)^iA`3=/<(ޘ5¢|]i92i&,.ƒޣf`qˍqˏqgH#+hx 3z$_`I1<-l6K> )np|+Y/f@6mnǸϴVt)$ Wܟ6R}1@}w3L.6HE4չcScc>&oE_7TR )|",O-Jz]}dE|DXq_R#Ȳ=ÑYƑmdٞh/,k$?)f|&J Y,i'p3]`Tdٴ1y_|> 8*rEBNJ|&@%r] _3Q-?n GW0b Url'SeaIENDB`parlatype-3.0/help/C/figures/asr-setup-initial.png000066400000000000000000000427431414030451500222220ustar00rootroot00000000000000PNG  IHDRZZ풬sBIT|dtEXtSoftwaregnome-screenshot>%tEXtCreation TimeMi 22 Sep 2021 20:35:19U9 IDATxw|egw-{*EAi콋gQO=O,(vYQz])^r$Mnʻ|vSwfvf}gvVb9g?W F!\` h T!\x23_B(℧^%j 3/%t_ H R%J*3o 'H;l76$y )\QÚO*(` _/8||( SWE .˜?eaWQWVQB?!P~g?BPAUPG -`)\6xSp*Lsg([2 L˟ b>6ػ{23j%!,9|ZVcM/kvujTe8 PXP`CR/kUJH+}FjUPx*ni F;Zq5E>%h %^q.EEJE3գş 5>oIץ7?[iA͛5ܣKN$'kk~f͜b=e/E=Ry.+|XTYԞT}.AGSe+_]ͺMûf$'iQXz-:\rMxVy,mWVjLmuzܿ"rث??+kJj4뮫o.qQ/{⽖c՜Wok˳g=4K0մy[uz]54s6qVR C[(6wǵ1vuRymMu_i791IQUT+F{:Ŕk GeXcNի[Oy,)|ۀ),v$R R1mY(Kfޥ9k٬4~fBcOzMJ kzOWgmh`F^YSn%%i93ڥԣY0?=J[Sđ'+r?_^9A=uaJ:M)<TEQ"!y u_ WHPZeKޫe_Wg ӟ-NG uDҏ{E.ѥ]rt%U"dz]+^ vcNը^]^zds-(\YJJXO#WRD=f\WסaT5yk]Xjĺ1Z]P%j?X#sE gжtth-UڿNJ;թْT<}FIɋԭi/KtKw}:Uao3wV2$nMZLKQ\ޖwW3`2[({;[!:5]TO=:Vunto+k Ofz3_>qHQڪ߀jɽtPȡɯL==]%IիUpEbfްSAX\; l۷ޠsŪucti=_kն:v⤒]uB.#6+E=ܪգgڶm֤]6(A1kSY1{EزQ,˴t>%ʥz/ɵ=]{{nuJQrr#?(tYeLg SXH7TyPw.%8mګQhsMj@EnwWoK_!=k+J@cwؕSυ*DBʗxSS@S-ZW^:7WhUW=9> }?>UB^k.~>ZP"<*٭>ھEk7c6)z4rtIRh$(RRVQzn-/6ևE)hu+t6kV'gj2$Eo,)Т:T;;]r9T%~|ֵ~]kV~I-sVJFIikK S+:ڪk6Y P>z_^"խӹը^Y=!+Zu;^:^ k>gP®cR۪ʚ'v*dDIҽ=;܄Wg\3u{3q]ET 1M*:aݦ?Sʫ|9IjX3S,ڦ9[Zǐ>U颞 >Ӈsfk#Zͽz'QVQ\*ԓOK[z5RmZN Ÿ/L9.4E-+KR4zoozۺRvUjxO&mTT;&M%H*& pE}G4nI/>/=S+语[.v&"`BApiܥJtuJxjT!YkQK.9jn(*>JO.o4hn>Oܮݩf Z-KnM:t۬ov 5F5V֛>.TV:s8}hD%=C=;|G4 zsCU]>b.b퇵c퍊TI|Kz`0ͼK ̭,'9wf90yݷO$IVEiU {{%/k/kIQm-S^J9OmLU,FVQMg^ǔ97H58#ǒM ZRl6l)d+,+6ѵl$֭K^8:_! /V" V$-HS64nVgTn`V(,2J0d WtTN?GctnF!%%UqU aBOmL[YRs\E?)!62YQqKJT ZFkǤz%IWv4COYvjmmZ!R/-Ϗ?+jtWnWݠ[R2_w{4o{@}pEi-ڗYN:m7zҪܦOS4xU5DS^x >svUu͘a&tdnMQmǟWB^Z>_k\v|P>}@6DJmYvW7B>ե՚'ZYCh߷Oتr:b:sRPS ״U5Vr~Q]~.h$y.7T(`_S=;>*koZ+Ymutyèhz<|D>!G9Tjl}mV IݤAr>&HwgV}#Z4}<eS.Tqj57^C|ȿx?CLvM4ߪUH/ǒqTK?oVbZdI-ru=J޸Mnӧu$Y+SuMXnzAWn 4^%Iuԡmq2%IZjwhV1cmul-RHwM<_>/\zK&JR:$NJxGxYejvbd}86u^/.+w^CCk33ٞ[q4GY{_gMs#!^/wۓzgYunǾw_E-fթYS._]tg}5&ϴ.ոʚW3g|ƴ̙:,7) 4_~SNWtSB7}.hx.kEc4د׎Ք$)4Euv'הoiˑL#l.v3\3]ۻj}H;tc3yߊS}ա͟IkjcKwiu˻7~qWcUA̟:QAЖO^ФqD;]qXOM[z QNmZQ[rvm^v-[sظA뫷S22fm[+tfmqI\[S0)M;%IGoЁV&IjU;N5P!?n6o~)nZWN:BKSRͪ PEVn#Ⱦt{dJ}C.:SQ5wߨ>i#Vúv!Sս^%~P5W V-tyL_Z*ozhR_YckfmW|aY)GhZt(UTV,Ҫ(- .)x_+Rsx7 j A݆>u@= wݣ^Jw&a4kX/I҅ޠ> *+RQ ܎7M QU~wV}ON]vuU*5Tm:cU NJE}rf7?9tmc=F6nO^j-Y_U@{qVvOJ iFmҾ=R#k~;-IԹ^aGEN]: kD9=I.Ȕ&V.YiXB Sm{uB[_y@r+HՉz=[; ջ'jءo.SRxXժ:Z ZHP/E @F-?Gq3;cn7M{A-E} PqjT6z$x}aXE0I/6yP%^q^6Rۖϳfivs^nk~pӈ~~ߝ|_j^r6 >(EaGS}i)Ơ"7S1 ̩C=/n˙.)I+t_0UZ].9NB*ӧrж6oUKVGSod~PkʵѩAۖi1Zծr~3eX۩Oۜ*Enגbe٪N?ܮ"TNA_Q*hw\PBewE UՖ}u]WܲZtjm~ ^?yZQo%꯭vխg醥*$~lUkl3tk_VCZ>x1xԩ"GVuƏXSGݸQVщU[RTNje/ߠm۞nYTƃT]U^N|ksѶ>]*OlGu}gZOd͛uv@[[]uyV2E;tSGjն+Eoѯァ߶ɤ=4͎+۔݄E C IDAT.Y7إw>^Z1W}@ʕ+KCtAqeE)M咒hh2{Nr%vJ=_oϾVDwCZT}_Fuai?hm}ۦ_Ngۚ5Nu|m_uE]ԏ81UiG׊5J(ꩵS}5.+{mQLJү~bTq KO+{daEvՠ?1TZթc:{M&5ЦD,eԡ$m35C;57Z=}mr5źkvx>9O]js)-j٫No: m,{z)#M> 51jװ0>㨠m*lYd!ONT}~gIkj^|-=HM|,%|w_룵uDK\fе^gxϙş}h굮-_Էlޤ}zHQG|:P]'^A5vеO] k~{]6_cǕ4#M}MG(^'][8Wq84}#zVꪺqܱ;`¿GZ3wۄTUz[^յS>nkduw7Ӻwnͭ ~_7Sz$be+Go[yeоQJR|~$[t\\yHSP[(9Y;vjwڪ[BS>B}w,AS3t2q}\.Peh:k[(ZV> [( F Jԥc`Weҁk !ũs A J@rrJ2",4T.oя2%*;쓞R~> F4WW]%uum233tT;f[Pb˗סG{^լ^]v]v|M9gdfêWRxR=cǏdr֫*|=\·~YP<^Ͼ&H(Q|,Bl-CvU@`Wg#^ ZTQ`n. !!-CZ !hB0`A !-CZ !hB0`A ]նs^Uw~znԔh[XÜ{ˤ5wla{eM]ət3b!phۧ1|rF,H^ $¢Nhzk-NQh1GqߟNTskҨ+5SlPuMv|gZ@Xm-B11195ΉT-8q v5 JܹK-FS(IQ* v8p6!P ^q9_\3VSWJo?Wi ܁5lMs{^\c:wO_t`{z+Էw_rnP)q￧GncZգd/Z83э/QW&}̧z,nxRxXPk*!g!tsC>u*~m=zuGꥋ/ܪ-]i+h;dЬը+G;ە3ȩ r:NP =l-?"hvv4kǾeYœ?O)grexY>ߛmm~Nʼn_rt,}1]{~cE{9Quطuwj˻w+ GOojY˥ާ;gNwQ {=E&iZh;c9Zz|QM ѳb?wZY^Ꮜ?Nq*hA]~NZ;t:6-tk͆tgPbF (j4PTJڕΣd)} ;? ^q~Ok(tw>EvVv}WroWJKS> ODl˚AoZ&AhQgxǺ`PYd G11*fw4R!fQ$ZONVY>2TOL5 S e:;֖P'uR.lfYx?vٝY;U@KrbL/Ww2L;ݽWh~aPb8u%5QF9p`;%L5:]Oo{*Fr멾i97j(5nT-ܬuśOQժzZe2mQOKs:5ب0Y= .ybPkɔ'Ju:v`m:ff:I:FT[%+3K"Fao7O.jK5s!%ݮ_^*^;ו苉'_-daSTQke}xpPIG4_kթ]ZGZ裸o,_REU/7hTVUZ5[ۗ4_U(1@bQѓ5?i7@o{Ul:,VQt6~K^;H]߸t/uWGs=꣇G'.[W3Zu'&ކ-ϥcyJH*|*B':Fhq*j"5}}A.c#i]fN?iKW E/̩˭0n=f&Lc1@,?iwnͭ rnf |.Y_ѥJrU2%e{%9:[-C-^A =J| qBU(Rl4g9Z7*٬:*#SYһNCs3՜^z^+ԋW(Gw8O{kOjwdImrkx..4}x+"K {<᫷5e m;-:{%kէoW)x[{nT!;WHHRX|G >jU^K_'.ּ'ݞFvigЯ15t%]U$9c5v^eg><9*V4竓u\;-tߟoaV2ܛ\ޮ9(r1< j\p)+儲 uf(9#wTRqp2J5^=UCSdO<,3%)sv LhVYn߬Lf>f -85Go0Z&O xt sgZD\xGwh}Gle(FUʞVucV)o#[s}ꏷ >*mdeˈ1u}Ӭ-wDvKrqDrhxD=i{|˿W-y|k-n/s뵹Ky<W69v4%Nn[sG׵'^hUۘڛle><4:Zf`[{?_:#KhsV5jcko&WyGVTmjɰڻT?E6}tXZm\U?"yXDkoo6Ն,ʆ~vh鰚jnJlpۆ W|(%j7gSm2W_}`U˅$KhKUpVynl^lmB+s>ꃫz~z9tn)sl +,qed+kQhe˄ٲa6_]z쿙hZj+{X3#b}S뾍6cne̘?sTK5ݣUVD=IHcllϳz!3!&,gKtjU<\x38ZϫhWv<U[yU5yDJlWJdVb}V"+b-`f#h6fQ(l7 mFpMV E(FSkj\?mu5޽Ѹjf"Rm\ 3D+t^ZWO7=ވNjD /Q]V8|TTIENDB`parlatype-3.0/help/C/figures/asr-switch-to-asr.png000066400000000000000000001002571414030451500221320ustar00rootroot00000000000000PNG  IHDR@PW0sBIT|dtEXtSoftwaregnome-screenshot>%tEXtCreation TimeMi 22 Sep 2021 21:07:31ff IDATxw|SWZ(-2" "CEUD)(^Pe)_N'P\x(QPA!-q~)iIҬ6i~GN3!B!B!B!B!2U߾B!? ǘ\@N`hO3@mc)T Bϫm8O͠, ׶U3 Kmւk׵ejnS!؛1jfF*S3APFVa)Cc)Q[X V?!B-kٟ9 HU. ̳A!s6"G3@22,=.Bֶk!BG kSc-W3c~)q( J'hk{j x4ס@8 ]2@B!DL 1y0d-U8l+ dh 9rȤFRB!E1b0E{&p (bTm,'E,5ٝ=]v/?/lQR\DYi)Eqi4B!JFミ?Aʩiii 2-k\YUG ֆ |L[ҲRB!DSـW;b.@!kͯk.Wq& 33[جB!??|Z8=7 d1rM͠RS) ]7(ѮGQE!hJQcˏ*Iw4j(Y[R{::O:񮮼,LݗKJd`BTvҸ f)drIpa(0[ABT*ZY*DQEAW^FYI zIuVTh @WuBUXOnyJK1kʮj@"Zܬ^Y% b P}&hKq`dmf0?pɶLACWVFtlC A'/73NVh []8InNA!kEQ(//#)B#ha1Р . h ~Ls]3q8sʹQk4T3?eeԭ'Hyy4N*!ܭEkPI$^R#;ZR珯ePukZ, f K33v V3E(`4*ݮ=z]j(zT*qq|!)GTJV0??).ǞUU۶\~H0kjj nEQ Pi?Bteh4OWFը+?`|Xm Kg tijR?&^Ǻ翛U*)[Ռe,j j{i$T3iσ@B! kYkA56"G3@d#4$_ˬMc Bk [A؎E~B\mctEV#LύSB4aOd#,@eygRwV5O!˖X .3j,[<+Y IB{4c=}~\!Sa\^t+X>wsYJC9aIo,Z4٥EC»c9icvq+/&[¢Wo__oܰ`OW^e} ?o?©sٔhCiyŕZ ao6&1G&BqV.s@xqg[yLB^a|cznL]ƫ} ='Xqӛ1!Gpd +IdCz܇o-pFrvԗ>1LXJMYY_`S;t5a0(9{fg7Wt|NpNBlk$4 P7_|&EQ3ba2xQrیb]O낣S[[yy[t[X$}&t>ƪORq,"%Ҋ;Sq+/r~YʛqpUk|inZ |ƛ2;vP|\3/'GR9؉uw=w*(rTls-9yR]bEPзN9q: ?l՛<4_υl]4Exõ ^Ƭwa ܡ07wy{:o?>;Ǣ ƿ} ŘsFМ Ew+:Vv>변V d{ʂsocp3$p~:>=^zɏa}z6ΝCۘh<3sy;qQQ2tu3خʸ|+92·h$c-[Μl]5Fvb0r$X1!lez&Q:sϿn`s[82 E&bTBؓлk"%"Gt(h:O⯃Yϡ<ЪSWמ]7+q1QiY+lwKqoYVͪ͞SzYk~ruZȳsS)\ .Ϗ?~hs;#<T-1(WW䛄T?|0W2c&O U+-/~I'ى--z$$l*)84Ug>SK}jCe-uCYШQtY ,xuu,(cr8}dk>J/px[A;ױBoSXOV(?fnioWǸ\`xohڵ3t?#+bP@H!t^P**=,nx7=#qRk.#?n8>t?]#zDWb\vAM cAI!f['2jjEFck ]G`Ryx[RJ|f mP8{]LsO{?hH̎rϋ9utE sxfּ>@uBq/RG|yF_b}؋¢BǜC::oGyC:E KWXײB+AM ҆ %seahkKpqmik XvLBZܹ'.))u_j#u_)wl-(v w?ǀ1TvG9mH0 H4/_X,zu>^OXOy 3aQ` AWiaΣO _1~.ׇbWmj߇Y!Fu o\g¸~w+[L㶞u}y\ѱYZ'vGF5E5_sKflH~)o%`8 {j>> ]1oo\cSq_= WFo=}1صˇqC_"s|ZZ[)Yy_# fI(ôO\ 1P45;1m!"m@Y1ȦT?@+&N{(q:u+/:Gx嶶9Q9勢91]&5G_]͎[xkKRW-ZwM[7&#'vBkoNQI;K˦7m:g?I<: y'F3i8c\]պԜaSÌzҪx?|#[O sj;sܽ Ͼ3 {x<jMuخCuWxz_Nxtt(:#,];ahȝf2:Zs/?;r4OKLx.nT׍ }9F/罥o׍Qw2Ts{.\6zM*((F@QA>񝻺;vZ닏FZňѨGa-D{u7~ss4*0t7^m?~ZjрRPFORR@ ,J;|fh4Tj*X$2ܻfkhޞO<]Q2ϤjPRTD61u|.ոW.g.2 ղ v5V+GR~lbʟRJ % e%YHyQzJ Cm$$D#[ s!ԵqwSf۔B_TWrK 0Z&;yEH%ofBy>%B@ݏYt-NV/ D /9ۑB{ȱY^1B!D}xJ`0VK,f4QdػBx+JUoՊEOiQFCiqrF"MU $7‹h}1 h|CڴBE/oiZzVF2328wфTBI$hrLN#''tZGE Ѡ*h.\رcDGGA@B&ԩSǵ'88UASTDFFDZ'yU}-aB&`0PVVӧiӺ?BQpp08s eee OW" My'77pJ'""ܪ6R !Db4tuiy!JEDDyyyt:Q)I1@4khSVV&Bxy` !, L!)RZ+ȧ_dNo_B4VHx~$B!D#B! BH$B&G !B49 !tBQJ8qlJyX8-  p @B!D#(FN!;mbړУA(*¹LIxdKb;5KBĊ 9~. <~P2^e);'7X>Ar;yeN۸s׸t_/Û)p0:vY04 fÈ؅~WEqxn!H!ܡh|y]ǾM%\l[tw.k@(^5 vq:^7;v}q_ַ1>>L;Z5 šsOZV?Ye1=R&WWpޡtuHBV&%ҙBw1;3?߮c+U~7ݨ;eo8U ^_2Y1q:CG7&Sgpwf,dF2,:;bW) n ۆоl\yW(HaSkQ,~_̝++1#%;Yg=amXtdB&_~%S}5gybS ~q9kޙHO<>m9vd2"[&?'j]$B7 NßMc2cͯh5qQhә֩=Tucҩ%a殑$deW=5|GyLsXZa?pZC E\wv̺'9a[֢Xԭ5 JscAD^ kUwJ tbh{P`ee Ӛ L!E՞ R_OpØ{}'9l2rQ/u]ڏ.C{-'g\w(nJX̗ IDATQ.ĵS+uGzv@h?}T 7]fVD% ,F|gHH!ܨл㫠d'<8ηgGxgHUTEAPweU|6nzkpS(, Sy9F=jAUkGU3|)r3sQq~6Rj@BNΌי-1`qw%?0q-h??ae^!^_ܰ%H&= ޼替,Mk s'9pPG\\t-65~v5{sYwoƅsg^|A@Bfy-? <Ȣ| 9oSB,=,$?~^-Bh3g+XZlI]FIG>~YEplU3 Zn 9 m_i/4rϲ.طC{}u"?'^燖wqWylhřu8}':O74 !i[}@'"ۍf]8 ƎnjΠ+؀?Cz¶=c;FC:6|~Q/D~n̄xr\w֪~fs< =LFa  МOgb69뒦š9g&(S}g<<?y/{51D_XBXx aEޝ ((ky>Ecv׾׽ _T{wg wBd0(--%'''OһWOOWIԩLVL75}_hIr%{wt9~t0`=k׎0h*+عe =,O( (t5z`v1]=B(ΦhKD OQQ!Y28{a-iۂo'Bш.fgqpN*:S<] n2H$B4z~~~hZCۢTv~WTZݴK$j6p%j56/jZV'B@B!h$B!D#B!-MjZaaaFV]'N ~4cۡ\^Oqqg32]^/,:wHvN]IvNO_@n8~˩iiӻWOW$a(++syyמ=;\^zl|}}"*o8yL_}ܹsݱ?Ba;f>ht:),*}v3A{Eؼy<]!˱QT&AHFFv^ !;Y5kָ\EQnC@@[4I !DTI&ˮ](((W^}P*2wVUzsoFZ7S7ևt}E>뫪k2@ &CZZiiiFַo_[ۜ?>:t>cРAxlذ22_ShJu0B[Qw+UW&TỿtܷIRRFiiVxM4{lOWA4:tCFcvQgO4}wq_!>#f}eʊ)*7:_97'Ymܹj(gw>oR;ThTTRFE` .|Juز?EhfϞٳ!''#uffi ޲eQ- gܷ| 8m[tw.z=B4jItCY ]rjldWy2^r갖!}DKIIj4o48u1bׯ*aDEE}vկ2'ƌ@bbezV@Fvc?e Æ_5͸b4t5;ٳ۱ d `ma`ש2>`53`'H6րyUc73{ NòwYg߲3Cy׵k-r?Ywe2Kof(M~l#-7n7u C[]|J,ɸ} u`!^X̞6UI|?X1:7 c׉ٓIXs{)EkH0M$,ZԫYn30kBkQʞìg5y:)}j-~̇CcdquESk}-Ǣ|ΌieJT >Njzy=m죶7Q OQ0VvK8Y$_Axۊ >jNVl߹A^^;"lU} ֬YCJJJUc{nݶ޽{[=PL4fOO۷/k֬_Ze-8:xϟ-[f5Ր^-on ˣlWWOd`oJ++GznlC"hӋ;z_CúHbe- ;Fiˈ#u(am3.)zPzEѢMg[u[F̰͜- kс~с?ԑtKK庱 Ԓаv\sH+:i} =t$*$q%^Z+=&<2agr{fϋ}tPfT`T*.փ 2w\&z0k,צL۽{)È#8x 7t[ʳ=;tP-Kӷo:qd.%%64 uuXSЕÇ^;Sѯl- g'>}T 7]f[50~ |q2_cO" ()c~i#[|^6dzbJU9ߥ.ݖjO %%@!Ƴq`i7%FUiG}-էVǏ駁iN0缪IQ ,4xad ˸>G:N̛7ẀtɄp֤p:ASS]2e ~̛e\PG$+%mEl|i4^#^#IK@6l3).VSnԣZ _kP,n)+9{.sR@a!X>P:ͩz.lR2v*>{7G{udU}Mըy=A-C3@;NXm?Q^8ZT\%@Pq` s97o:Kxx8{uw̻;v`Ĉ̞=+WĤI>@@o߾@!ieӍ]օPS~G3y~e[.<ڭMS1??a;ZSCL;bkvsYCo槼+kA@_MmZm8_Ǯ;e/QF2WX]4 d9^_[ AqqU׺x=mHl`dc>>Fl̯zޠз]~P ̫ ļy={6٤lٲzr|uҗCTfÑ}tg8pg[.έ]V;?ðP7|$Æv_ٮG v}goc{U˖doȟe xco.Y礱~.JtJx8E[rA2ss0e%֘=zv- K؜^DyQT Z)}Ԭ"Ks8[Ҫc;^boide Y] o_adW R9~AτwϳP Ee Ee 2,Nfg4 ]7I9ٷqOtva`l<--ӧO\/[<XÛ;6UޚVg^kQ;v< wm{2v;In̄xr\w3p{Q=ǚy}/ٚڍf]8 ƎnjΠ+55gMN⺤)wN]˲^6fs< =LFa X}ksY8,ɘqN. )u!Cعs'z???ZjEΝiժ1Dh׮zbܹULMY>xUωoޡx|̘1n畝ݻi֬%3b:-]~~Uog:Aq*4]:uBmIt!z=]aj5[vz ZjU___tfkN. 0^zU֬Y3?f̘K !Wxx8;wv;4|AAAV 5ux8q"+/Be:?fMHHjK4ZMYt)˖-62gРAhт~Xg-Yߤč7ٳUsg֭Y`̝;&1ի c@E5k֐wQ4Z45Y~}Tw _tie||S@Ç'>>K|\JJJ#/kH:PRR@igγb_*w(ҥKʄl߾8Bhv=G`iii:umVѾ ؾ}_>'''æM]*믿N@@C|,|m̶j;*1qٳN+DCҺui3_~W @ھ-q> y 8oZtt)lMsT箶3{{tnɹ>UV1gΜ̃[Yfqܹg̳8ݻw׺% 5XHMMeҥ̟?Çw[pu6QB8«Rj~ohpto¯JݫtM+:H͝uСCՄ}i Yb>nznoΤIjۓ#4wiMwJ̚d !7uP|||A$|jٰaCLdڞ3ӌř@/<<l2q{{u[G+ɛ i ߟTbܹs>|8/9NSꋧ ~Uĉ-@ )G]e}8b"cGGhvt|{-.nVD8#棩<[ۮ9# qp#Kă4|`Plw yvg<<]ԥBVc!4PSF}qPvwILLtk4Pq\{| "yK:HoDw1}T:>]'"pBg W|Rk",,Yf1o.Ow(#®e: ˅dfyL~ ޏs3Bz0$GAWK۹rXtMk$ _ǮtH‡0jduT-7}eg>[t$*D !iڳ,$4k>|[JMM @f8rCEQ̙m}!ïYhhKք+1W}7^SXgM_H~5Yێe[Q/8sK;qmG ]Gk+;v{el8nMQ]ZF !Dg>/>>NNN'Oto%*Gk58HZ**:N*VXH5&Rlu,c?{xttQQ`v?_w`3븲IDaek$xUoEKsU$BO^=wDe|#l=u\Y$Zn 9 mvAjV9}s-iS&Wx-za>:WoD,}͠gkTάz&|kj&]vk)0CbSdhޮc^_'2!+g wBd0(--ԻWOOWIF͛&M`B!hr$B!D#B! BH$B&G !B49 !ɑH!M@B!hr$B!D#B! BH$B&G !B49 !NȀ춂o0{Y3Y1q(Ӿ-r7Х0󚉬8c龳PVLQkBFr-O<3}B<]zP̖gWcwLs?:ԯηm wwH!)O~1Fݰo,N:G%- !莱IOL܇ ?-[Ly]̇n _nES{ʪ/|77Xʣcy53a$o[`cV.fɺ]'P&N[?,{տxV -;3Gz]{*dd>ͺXa/bf_ γX~JB4 |g60 8y*|.y,ߘDNݛվVyL#S ań7 @g) m7?/ѫRp|\8oiX c׉i^l\yW0 ń9;Os9,uA7Ded-_䠷4e10dBWc]O3١c?ԳOYpS0-o6~PH[3R%|sLH浿+HaSkQ,~_̝%i$Bw8%n[}7)4=pJ7Q`_JC}vC=y7C# o}9guXe(YMbH\mzqS34+VazPzEѢMgY*yLsXZn{l2.$< 7NK_;ĀKw|SUOMm){oAl%xPDYŅ^QPTDq!8q(2E,tQ6iƽ?@Iiw_4w{zz7{'#b2{ #'0:-vD6q7~(m23 /M:]$ѧ9sZ"fs_{5--IF2 س%u#ٴ=WQ`!M`B]gy"qq^R"'yz??cGzp!-۹/E]^Ip8G o}6 ۘ&1u֮g߉ggr"S aNOpLi-ѠqwhZ ĬAcIV}ON%aƻqC]iBS/#u:]I>!S+w{ޘ4W_uG2Kʾ{(KR$~Rc̾UǗQGEMSh64ns@o6ml޸..6]NK>^f3fŊUu^!44;{|ބ?ct /bX|7x(bSoaaz3g.Ac</rs9nP炶1c^^H'>}vn~gR|K2 !߄x^^zC>۔}5C-l@Bo]9n*O,o[[r\,Dh|cA+&c@o5\95զgxN^ΏaA 0pïۯ̵ӢۿX84S3n ͺ o8x<0z=4\'&3?.]^K._OFk,KN'IFW2h|&򶳰(Fӛ1i\ǯas~-LM5:-hn0<}J45[qЎ1D>wN!Qn}a}lUXqz8i&^C;v]*sϾ8!(fd2q9te#=.ӭK69Om߿00vMF`0ؑm:tvNDdCN X^EנּaR&isa&3V{ٜd5~rKxo@Z7BH$B*G !BT94x!(Od.yC91!43Z8S#-ѸcΘ֑r!*2]6uɺ+zg2S`2Df3c4.̗t10a'_s`3鞸K`v3YD{_o?2w8"ܣׅ` 5@B;1E.guY' cĻ7*̊7q\fGMaxAfr`T[Šc|BT !?tΚy#d5_95S?NmIvaN: H$DII$%*h0zv ؓUWY|-꺔%Ic,Jj▶nϬjƼO/$$$аaCbcc1 t:kDdCN X^EנּaR&is|/M`BQ~4Exk,K3ߘf@ s3?hѵ)ޞɭgCvO~?B@BQJ'.!a9:&;~اxwmUu/Kz[[*5{> !B! HixO{WޓBxK !BT9H!Vm&.YEBRKɁi#[vUVs3lb.Ͷ*3%Oetu1҆9Ve|כYG"XI sOr88e 3hV2xsY,cVE|‰!za˛h4qpWOCp`er׆q Q!r'#?~'#q4jO7me9G8?On"g>9X˝Qe4VH)r|s^rۦ!q5AL XM& TO%p{`Kʥd;?Z$9J_FKl*у2Wɜ>a~Z4_l(|SƉB+ <9'q=2We,g.b_U+,?濫r"A_a,\Zwyt9\:.^F;,:~cG3sc-- !*i jl[]d6Ybo+,y/\4zEy^"OYRu7G:44G^Ye@K^cdS<2*լC^M@^b{Eo&>"? m۹X*+{`n} lEщIxIY֖ e~[AyUZ hrܪ?(` ԭџ 6%<yĥ^n>8Me WY Nr<%F + 8ӧW]>ڰ[n BxPI~W^_d9Φ#˗yoW F ld~CL}3(X,f VŊն*0SU9j!Ne%|7t(ïeKKQct3^X#igIٿ:'4r'-"7~sӰUO&#k3YgHgc{o^ޢp=oў-۪Oq;r2DR36o>\hc4f@U_ƜWdLyӬcEvo^_2BA*˧eǍ+?<;.d+Ǥ1rrƼW| #n#_sO@Ry&Ok=лs Q\}M8wa EE_;.t{vЦCgBfa2ԩSӯW /7|K#^v.\>1ۮC摲=V}!{=VQ9$$$аaCbcc1 t}GDF=̀Z &aR&K[!Ba̤QlِJ/$HcjѲhf=6 گ\&DH!_׫\ӧ {tGҶC̀27L-/wr1>npv9ll0d Ecy\Ҿzا&ڷ5)9XNˢs- n8&<œ'TOWWoG`[sI }huxm.i`Z Nv\ռ7+٩l:La"8ÚUI̘*1Wx9XEH0'ڻS|/g?%zN=)7jQOKP@J>"(h z4 ?ʶw^OI pu' 7lK.FLHf{6`VXӿgb= Z8f/_AЙ\[ >}F/Z5'߫͞b lܻ8 џylG[{ l6;/) oWjд2f1hf>_#޽Vt`V#vʒ(%>Mh(4aah 7) H!*4_G]ndBWuj ^Ip8G o 9 ۘ&1i6kt7֤G(YmzHzv&'2U !%Ի1nxcmK: cuiHJr#Og|k.9~Y]  {Q82ӷHK>^f3fŊU^z UJC҅epw0Y7)FҼOe(vB97YcSpd x:ma0E4md#K~+b$Ea:})8z  5h@+ZU[qftqhicx6,zUuac=`A#}Wm{0721r9t\~,ssX^8u08W;e܎sZCՎAG_2?7/!ȾNu o>ȡUa@1rX1 WU z 4IDAT_ ZlAV!DKat{5Q]`UV֭u@'E!oz-7$wr'BP,֏u16cb'HTf&B*'(j BOUԂTs>Qc[ j pmpBo6 DVV(yfeIV4lؐX :.I xB1!Br"B! BQH$B*G !Dh 'Qil64Z`y2`j  I\$W4 ZLxxxy%M*mQw~~1 EEQ @)@Uՠg r*l (#CB. I UUQUٜHd̿p!.4hh yj1GWQхB `(3Oe`0HKKNAS΄,TU%--@HA r۰11хoEAQlB}u"fI򩓘ԨU|,TxM@摚J:ud!*TV qq`3r>',Z눪(P`*t;Cc9&4qEܻ!j1EK9^ 61 DEExpbbddh!!;;SN`@KLUUΦSA#K@VEbQ)Ujh[DFW @S%eȱ ,,,(,+QFԖ0!JLUURSSIL`9{0^@: NG^OXh(@hhhP? !D 8t V+VB@ӗ`#rQ !$$^! & &ʝw$_*> CBHS~TU-<ldM#3=,EwZ DEWzZTFCB1rYp@w$_*%IZӡjɳͬ ODd 4#z Etde%t"iɧhֲ 1k3ǚH<{wr"#mTmwIc0DeKTxE*㤧C׼l0Ѩi 23g_=O͂E/WFq:L:)w|픟оQ{oZ9z`/vqy1-'hZ%X?{h޺!!!0lg}yV=w\VuJ.C½!&N%'zAj]?7R-&MK@= cv`nwz ӫ9Lärw{C3:'5PS0E xjE\K/o0?RuJ2UyDP =5=zCCԽd;+ةӌyy޳?SUzUp]DŽyVM^zp7SNiLh[zr%_mnI[c9æ_b1!\{x&=60Mko ˓o*=v x;+J>ƧtV;'?~1K>/W"R6IKII3Iȸ'gW6(#A^؃ڹBAסy۴8h48E+]KBf5oߐZqթ۸5W@'|JfFu5,UЬ u7$3#ž_&eF&wʱ{G5ވ^v%ne'M= g33))[7zt킢(|Ï :? ('Aq7_4MaT|ҏ?hisW_Jf+Y7&6ѣn"4mP Z IMbiMdU~Nd0l5=ΏMaYUyyVvͤs(F (e"LsF:jdl}s}sٮ: {쑖N %\ݥw/h]q@%_S!ˏbæ'TuP*˧<©GbY=['q7<<1# $v|q7 7Ѵ٘#iz7gχǓ,5 UU ueR<[ftttԮۀ>ۤ4P\#'u4V|toĩ\Wwy|Իbعcpر2߷?EKU>{y}8W<77M[xkkn"dЀ> Th=эᛦА52Wzpྨ/oe҃.ZslL8B%#FS&\ռk4MP-;~*: MZu<#mX~w!5xiL?:Cһe֬JbWy‹̡Ɗ0(D=}|9Yf.v Om]2wA'syBc@(Q5,!.5:M3*6"VꚛP_΅ʛb&LR k%4Q->8e8q6W =,5kTlIiG@|oh5Pp>y/t=zGz1DWoBϱw119Txڏ6+:leӁ\+\.}Zh3bW*Pl)'#b2{ #'0:-qK4m&n仵YOƈ;nUl8:06nxoħظi jQuZ31tX\{]]DS¾?MUɈ=4TP> (J@XAQ?̢Y7_zXpyf햛Qlܹm>CoH!nD(K(Xa9HTiX`5 ̠f$恶ۺ]1۠iDDsɌ017Ϡ%GypuG4-}ňqÏX..A-:h2LVrI|O,?hZ ĬAcIV}ON%aƻqC]7봤c0V'DN(g98~ϷcGx|cJkoEE[L9,Z}C*k`2YFBFc> diEXQ^YXaPP.~l6[ /$4oޔPfM2ΞF|9ԀQp@>lƍa__.TZWNoIdD8:=Ȫ9É 1E`.pEi4bs8*SM: ?&c޿Y8~W#mChP<ۧ7Ox걗cx.͵j~!A1ݞw> p.fIֹb˜k`H|O,?Bv XnCb (i%bAO-,B?81o\2`8o7Yg ,]MVf5iueǀ5+C$\UyUWK_M7 @.ٵ{7-[(KPՋNQUf3a<Zh~a;f,.mݻv哥2Շ`6=ӡըhb,`s}P's ׏&T\vM;'vqW w94fief,~}^M nPUkoCMNϜ!a^rVj4mLd))TYVJڱKSId~ MևMin"i~4bѠ1^h4TN$Jv&*Դ^ƍl8|K$'kҴq_a Q^ލ۶j5F~///Ays&kز V*JH+䓏>dǖMhи׫Ӥ*͛6esX` ֡dBUTM.X-)g**נFr/g2ؿ3VqJ;7 `{\e:|ȃ[6鲥thS~>xرemb^CUju`βc(zw߼$\2 rM4}eNN[Lެwr.&5yiE&â/ۛuKEwM8{qmIxEmOŨ(S`ѰGcX9o.?O'\"?Z {bfBe$b19w6ASfF&Q'bfac؊~whH#O*-Z;ŽuqIGTsSv5~}Mӧٽg/qq P*LXyly7};_}c&FA c~IF,l=:oMaS#yzA^\Vi\ӽ:{ѵ_t~9_>r=J3/yY6{3zXC.;.2Gad"2bNHތu;gh܍Q״,zթ]?}%'l(,3o&^>}%(+}\^sL˩G5-vD'Lgdv MAjh ',4 *͌PVNsϤ݌yy9zp_P= |Ѡ3c޽)W{ޘϤ8*:?g8Yk_0oΥ-m t]*˧eǍ+?|sR|R͡Uݽ,3vEdt 5$""N6%ǎ?#\?ҹcG\0oaAQr)G=եs'T|9%}/1?8e= ǻDb kc-KOGU]2 elSKNI[&*" bW[Օ Q ֨Cxxx!Րf/5AQY9xj֪kiI:q\?fsIuHfǿ>gu/܁̃;?j|}}p| Uf`)((u".oh.fʖ67]|W5jKQE!;;٤%'ffzVؤRP`$\&)U1ĠR-+"Ânsr\5@UUɂ/$odvngQ.TS>oSu9oiFdChh(ڐP ydt(!4, CD$ $&&BO~4z"*w,0 {M`e8>< \\wJe@EL\NF9ANшbf- An0\l_R?UW _&6ȡ̝S êLeAY|.]Jzvfj4 J4zLyƒctW)S0!!|{QxΝ@QUTvpl1q+qrZqKBWDi&rW*]5 ocEDT4!;+漨"l6Y޷h#j{ӊ%ːg3,.(o7 ⪳c6NG|:CCIO=C҉~qQEQVl/ `NGDT57nFtpK9kB] ˭#_:A3w?nV':&q {DDFMtNDѫOίB!>$A7Zy.иxqsp99lS?wiB!D.޻8NV$J1h9坧-XI$BT  wdO5A+Q PI ǝ:@ :qns~$B!7 ]mcD}ὝcsڞJacu |By&ǹ৸ᝃ!ގ8y#Buv #}{ď°sT:f/o@H!>ε8A~w0o Ϯj59!H9qG !")ϰ@1 W󨴝=ٗs7 !"<$@΁K]cW&0ǎ. ;<;vG!pV\M`epڮO \5wjruccOcbR#BT| SMhOw|u=q nT!bS7/WZi } GkB!*o ]M)o W˸ R\7KH0$B?wC }^"WO!])x9}PK׀G!%r|kS| , N rK!686/\|qMqparlatype-3.0/help/C/figures/folder-download-symbolic.svg000066400000000000000000000014551414030451500235550ustar00rootroot00000000000000parlatype-3.0/help/C/figures/object-select-symbolic.svg000066400000000000000000000005421414030451500232140ustar00rootroot00000000000000parlatype-3.0/help/C/figures/parlatype-icon.png000066400000000000000000000033321414030451500215660ustar00rootroot00000000000000PNG  IHDR szzsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<WIDATXWoSe?ڮ؛lED^c J8QĿACOD' ! Fc lknkח9†D'}s~w~< ίW8A5B~.7$B<1$MDELQUd3p0xトIu.eQ rkWH9ЙB5"4P0PA2Jt䤹8 |V)_ Een /Mع1i2RxΜ;脙?Z[aw:_fHM .ͼi2- VBKs`vV> _<G-5'd 0UaI.dBTG8:; 'yX&FKAaV8x0#0ִq2 &B0E/VU+:dڴ('9l]97Ai tV4QQ0<|,YiͲ3w@_uu5|pKXjg׀$w LTWZPد9*!72 /\Ьq1@<4.ыĽ7$P#p$ l@\r2MU+a;6 -&ycߟ?t&^ע Hi> (-DA:]o[v& e3R0k_YL@uVDA /0}8j߇ _LÍ_n_?ϥm:يׯ߀^X?pC e="Թ$, Tʾw7IikY" yz3<7t8'TX,V PY. = 2щvRe G]˃O׷uݺxtQnܨb$d=xvO4044000x;BEG%O.P3yC] I^0:>=uRd޺e`Z##h!g~X)QaZ $τ׆ J;A} V3IENDB`parlatype-3.0/help/C/figures/parlatype-main-window.png000066400000000000000000000510301414030451500230650ustar00rootroot00000000000000PNG  IHDR gsBIT|dtEXtSoftwaregnome-screenshot> IDATxyxT}/}h_GB !̎A 0Ijn;!I@o&}RݴInD7vB#֭Fcdbiٗs~03f#39ges!B!B!B!B&y1~B!dn#XƟ@@`o5ܹYZ+HD #E !$t&qȑw~?}-8~ DPXbՇMRRZ&جV\Np\B!s0%+P(0jy$^.'D,\lON~`[f1ΛB!dR5W;w\wz `"hs965I'BH 0bpA~z)Zȿͅ >jg]a*Um0 %IT> yL&W-)GB6\=t؋?X9wcP 4^$q8ШضycS\y +Bi.I(͎=`6!ŋVGR9 ADXSgΠ7l@~~>&r*~aނ$|YXVmޏa|'/ eI9oRf71a@NvVC 4 )p6/|xCvsaݻݻ1i4BD"m<'m!$ V̀fÍ[16aD QP 'B[{<ȨgY##PH @nN237'`k}*%ҵi0L=P)HSq 1 ]=z&jō8|V`4•k3.#YF[{'f3r`2q { 8~ 6,*X,27Ɛ^BOQRC|'?BaA^?NJ"]qL&d2Yeq 3}eLDzP]w%Ÿގ?y,"kq T?Ƴʊ iq.<\q$2ӣڔ 9map6ڻ12:և<;uC(+AW;w1<22&X6,,]LLQZÊK'Ϟ\.b_!͸o#c7Mvg>HR)C3'4(r<\S azw::Q+e8}F&3ҵiw8Цij [60VtvxJ<Gp8uy%|hˎ]!w#INH}go}z?˙4}8SDJӋ.d6CYt]8lvcr҈I8Coyrԣa/uw' JrbRo<7&@,L!#]-p9(0i8pP(H.'GFEy*ѣGXLf4ss<ӤrmIP'fJLi#bj*H`"tLM;=e"w rqdL_VUE[q JK@# ++.' MT a&!i~HOO JKM3[0r0R2{G>J~BhB; Cg؄.]Az˖T@Tf 06>q x&&'%B>~m"BYXMX%IgLO8i11e0G$ŕJ%ɆX$™ 18gKO8iz^J|4G8[6ymSҤ[0{6 ! ~/=^Hxz$XP\b|Єukנ 7wn`v.@T!'; n߁Ăbp,U+W¥*bt|! tǪE-Θyj*شeR)2q(8 SEnvFFɹK(ˁdT*}zx9ШT7L P)ufKϬie_]ZVn@3>#eY6d4#ϱTgT?LB@(oXI|Ѿ!Dx5%s!+A2;nn}fB!goKv2H$:"(D\fa(!]r󡙥vpB!d :B$؃eY:BNnvøm`%bXF4J :-"8`>Dy39@,blt :Q`2,aRa&B@а]b0Dhqh! >=ge35Jg!$! y3 t:RkЯ{#A&Aָ#b!$AQ0]HAxb\T~Qiwj0` 1Dx"4Iχ((Nr8D"AY}ˆBQA_#!ģ0TB2' !$BBBBBBBBBBBBBBBBBBBBBf0`0 dd'BܲgLTA!$,|A NFB6B'; $Yطo_S_&O|f2Eؘ455oVg466㨬v< 4 t:]\ח Dz{䬮NVr*gݻ!hhhV)YxM|w~;vx ػwoϒ}3ig{Jǎ=d"Z[[g={ d u݀;E#0ahll{x$ "|] 9@~]]Ou,߿sx"|NsSSSӧOp߄zO tAƄ]IvPܞ(]<<) Hf*Fmm-oX_T h? @kX.a]u";PJ_cc#{ )EϽF|_wՑ "'|;!{ b8//"Ze9P&2ӵ-7-Nܹ3I&)P<*󵶶˗qر|G#AD8fk"ԢX?;6B"sO> kYxW ^jTWW̤#膓ه{҈Xy`0+c`}..=UZ%3Y W^E]]`O&2߿_WB>v*yAHێ;Ijz=go={$.yE(B1[o7Ii'z9AD]]]L%ollʎ;qƤ`0̻JVU]2xjhh\:r=]gEH=W os7AB*B&HrDsda޽v7GBS܌\2R& _*WҠjCΗvd(,,#qKo<sUcc#9d}NL8Szgd|1rC bHjnnlŋ=o߾}>=aE 8zh‹M9,Ry2GT]L7g CxofdӖ(1 "f^wݼ`TiY(h0<<p ߆RDff&*++݉?>jlluėp~vN]aAxFg$hzر?O$'"3޿ /V>VWWAmnnƽ{3 % g^\xk׮ž}bzf|&5@3wnŒ嫃.π/x7?@ ( dEhGVO7o?I tvv]fnn.XEii)L"P(`ZJYYYÁ+Vs>B ۏ=M6Ay./}߽T"XV?yg:TD\ɔصkX8pհl]Kkkk=ׯvb֭[mmm)U,͂h[܌VL&JsQTb*++wmW&Tj,S/{ kA&36h4OQyss3 >W^yœ%:˗/ʕ+9c&+$r,&;)A///SP( RÁ@QQz{{Q?u}g||F< IDAT ;;jtzG<'044B~I^^L& !NE\ೈV+7Bo}v29z(jkkr< gk>![⣏> 8-==صkqir,^.GfX| z( GˉoϽE_c{FsِƱTUUQ3pUUUattte8Z&GHC"@&aX|9҂ Y?t:K/arrrHgs={}}}tENbDDD"8V x1Ȕ2? !۱t:466z2N۷oG}}B˟|XH3Vus;.@l~Y.ݐu{=޽{QWWIm޼N뺃y}x 'NL&Ν;q9\z555a}}KƵf?עxw 7!O)ߪ`@VVFGGp!yn]ٌqԄ5:h8iք?#yѐK}}IhFD$|} G S #R\CtؿIl6cڵ΄-P Wmm hx@T:t;C?Z~$c@p%bhzTҥKq5jy###[c-A޽{c|&|V$"ͅ |`ULojl#'UZv튤 UUU 0c+d|lBɫ¹ݻs/@%(XÛo)ፓ1+s< }!777ˍCb'\dJ"wډ44ԇR]ʱ@to}}ρKٻg )w$2eee1]^C@ Çcxݹ{߱ jFZ;5Sӡuuu_dfL" \ϒDDGs*rx>$?7x:.fźΥX)5ÈUuJ@Kon?#?Z֧|2>{L2ks;ECww7rssq ܹs'|Bz&CCCû0555$R2 !$/`1}~Lcc\Z<E{w pQ:yhp8{WٟEWb׮]xqn=zϞ=hhh144Jg}سgOB܅%7J{&oߎzHJꫯ"###)۷o ]v<_D&FG$ve2;{&5ػwoI:זxTe;* xˮ|ɶQSEDxt:Apw^dggω t: EāLw#heee.` Һd_OH*Z;aciTgd]=X/z ؔijDa'qLpС 1]^GQ{=4]ݷoߎK.aJ'̉ "^~</^JհBiqL\U[[ ilZH1㯯 \t t<07AL uy晰8:x:ˍ&Pd.Xkkk1>>cǎxUWy֢n=o|hkk/> t ZFV#77:.y?U2XRO35G?*Év!|_X,ú}y2ioS[[$T*f3 ++ . K,k|E7=2\> S,ޙЖgϞ y=Tw:xjkk Zb$s'Ɵ< 믿{TA>㚩C3T!V~]ză|mmmXAxDi/2o|o>A 5WLC߱G[dDaPZ} ||8!gΐKbuoq0rpU,^[nVECCl6~5u]Ikod*v0S$G<KFm!TuQ18BPZ+D$\"oD$G$`ΝIB!sBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBHAf~wW(}>!-L[*!an'䴥6$< B( BH( BHD( BHDI&=[Q^Q$%֯~݀7Hyt0qT83*i橗J"! "! "!oA!*jA! B!$;t/]y.:. nv{;!HPRTP(<]zmmm0[HKKÚ+,[18\.\jp8bƍdqߖ*c8}T*o3`f "-- +-âJcq]>}z&VɝqAkmBTbIb^2yD8N,^k6:/0W!#=FN9'Ooĝ;wyFdfe ?Zdge{sX .Cׇ>p>9{{O<M9޸1T*ϭV+p*-BMu5zpIH$b.X;>v'OFNg,:8  V[֬\ 'T*"IyUp: W!J}^D"l}h3u:h4cueYn,^:*˖V!';Cܬ9'[ذ~۶a|l z>5s MLVD3~?=- "{He2ߟtb||1K|`Xp8V=U*d+eq㓨P |w;;̷bay9ab(BMCMu5yUwM O,t8~:\\\_kR 7nbYvCC8sv?$R T3;ǧ> +@R4?Z-5=sU,X,FyY)ϟBZ­d`dp(nAg<`٦ʦ<+DcA"Уc|l >#yULJaZ %/'F6 Isy}S(z =T?X7"/7|!?\i }˅=^L&;qP(qَ ǂD&d2ᣓP~]yUO.Cd28T*ENv6}a?Zo4232oy".]FNM9֮\.#owCNvv<=t n߽13qkXj%֬ZJ Jhtzj BcA`w8&jɒ_(ut:a4Z70Шrzzx@o`9L&?8 ձL61DUeg-WbxdħObex>ꂮZX Xet8 n$ Ҽ "XũgP^^̌ l6\tiii(*,:sbׯǸkoi5]?ЏBP ?<ɩ%m;.tt 3=J#l3TV 333I[)lP-Zmm8܌KbxdW_Gφ:. .k= X-u>9 $豝8 H0M5̛ bP(pl3& eS˦hx\*L*0LƧwdN;}/^G'OjBQb"Z"i)t8Ch>wX|YJ*c*Fw=3 OCy tB;G!v_u8γTH a?HyHfsa|e X͘(ukbD"1J%2sIH\&!.!$1B" ` /@zF6ĒĎͲ,Xŕv㖄[(\N'&G}V 9yI<$K9BI;?8\ n6keY\Nɘu @%Vz  4I$t$!$VX%c#((.HJ]4q|}xS| aPP\^Ӵ )HyHBs8!UseaXRM<8Rb˲q=7<yB+duc$"y-0`=S%! WBHbDw]9;qL;G8.EB:IqJvr"LԤB4b?d (?hv_|r0:<~ m6L.F|dC,`"UDP \Ru # :nB֠KBX-f _ߍ{Q^ٹ(HE{TT?iv-W2 Xr%ҵim+<]a—[ĸ eP*K ?//wuV eY( bՊШQ7<2=188$˱1Yrj@--Katx/0]Bb $R Ug9Bn͆3łNtO@nvwfnߛ&\|y&3:L]k|>/\+W}>3Lh}اU¥HaOaƇw@* tlD"IGjrbJ %>H0v%O!Px1iiÉN{{JiV.cay9rg/]0'`+/[Ƚ= KH҈ c|tCXaKHO*aMC؈Iluӟ8-;;-W7 MSؼ}'JǦa}5\}ר([Wd mZ奥1O; nݎkrsaoja|b>Oet"<>gY=U*~I\x~ahq=^۲rrlXˢr"od2al|(Ϗ*}eeZE{.N>r{&R)n>%2M|~nhiII?Ӊ7|M5IAD*Ųq9Z sAg=\ 2fCgWFdr9 R@6}>W__/oԓPǨZs6aDp!ۼ}'6o9s.bWwؠBYGi0 ::=|+QTX/{Ö͛ՅSgz-_F$(m x rtl,= =jL{D*AF V66dR;cuۭp8p8lߞӷe%:.3s>9ی{xh&|̮P^V WiO*בA(Ujddfg00^ٹP(NŽϳfp8qMT*,_rށY|WL7>fC5T,6B{r8ѣ[(**W,ݯ=p:$`,ݻΝ]T"3y*aYc/*.81߇܂ǂL*ŲimBDIq1 /7}ȈI6> Ʈv¥8|O}a6q0 8kįoX|8Ӵ_A>r?KKKã۶A&z:׹966ߣcc%Ǎ{/s7u<1i èXCzF6m܀u\8";rPVZ ٦,.NGv'!$bGGWDh˱XtKWE=nFfn]k+! 'H,FAQ13ë(]vGh8rs}{dge`NSOo_{y=/]—q_7/.e㯿׮=-:FcYDj4OW:}?0ck4ZswEb-DwO7N||99jPh1N< c={{QUY}`XzlHӒU=Pt/Ep흝C55^9B^潞|x#.)\ffcuL)ZAOo/5d##3w;088t 'xb:}ccX(h)ҭ;wyFh4j\v >C&3gp:Pp\8It 5հfIDAT0.Bׇ>L|֭V*z-PLu TDZ/LZp1v.·ZLP ":;tI%`hx9{dtlT\/J QEp8sTB&XXe W]48 #?76 #(yDM *3j1o,(A^2.\XVΆJa҈׮tuwd*%b4C/˃Bj('&-=ǡb1^l6?sC5QTPkp aXwܖ-B~rA{Gvy25WɓfqV<]Ț `jף֭i*LCy"^<*Hp99pq_OqoW_)VW%:/?'x揟׈̛ :@TkW;0V XCY}Ʌ"E?JeC5QdIa`w<],9M7NNpO/q/re&lV3z,fw;>,b>c$g6@*IL{E qV ?7#y\}{9ôDFbO?$+ J9kB|  t:`;oR,ddd|^^Zacay8n(6}_r3m4ջsҤjjXttjj4jem-˺`YP\T ",Vktp 1 Z-5h:~C⅞t/|T*EN "]B("—<0 w "w !K j1tzz*$t+۲mDz,\.ncltJ&#3;JZ(RVjˏrTo\-!*4䎗x> qP?QqBYG(KT[_9dR ve V&6}[>`dt6둛υl+* k[Box?'HOx54֫$$#Vңcc>F"ffdI@*DtbY֧ebp: b8,X+EG=wrrrbp}ϑ`45$b'ݷ10222h Jq;f65GW{!Ҧgbv_}=HKϜ}@fz:C#]gN|3'>uƱ9sCl^/@$aSO{6m".N} qpqY,XW!gl9h8,,/7ulw=ӗcXP0i8@Rnի(-)AFFFk8K/,*OCSp.ح6X搦Eb\<} SL!|D",q !oIgggbγ H%i ~w^nnt&8vU+WliuuwCTzz\.߸[Vg`@VS48<[opg)+)*mRT'gbAI 233 ?4k7nN^|4Fk+N'J@,cŲeh>jq͝uL*EŢE8'ضu+4\qgݧΜX,{oAZz6062ٿlV+ҳ=˝kX߮eY,)MP^V 0CAALF#Q88/}Uz\ uf2ճ"|׻p죏0::ڌ p\EQa;7+++{#[R;}` r<|{AeE![ӉP\Tw)ྣ(!Å˗4& CZX(`:8zN 8߽ttvAP@@PX[w?i.rsP*11a@^TkՊH ><ةd_ۋǎ{ް~4/\t-\e7zY |< rssGYϜdJ+Ad7m܀3&D",YgJq{gC$AV `-a8v*JʠRd5xzѬY 2Nxp;Zqu( ,^ 8޽6mqNZ9P F 44mM}jhpEiM6ډIVBرڏ~5sԕ_n޸h͢+{&'YȱyMøu&lBqbz fHmòWT,Ty-.`sò,/V:2%[C.:8O>,5^5 zt(4&k ?I\ѣ?5Wm/}]GTM:")c~nss-?{db/]dnffGb1὚Q _!,#Pwme;7Tv_e^D 8L͢mb;MӚmGGӏ?}*N—] l{NޑYCVz7"Y) 7Q>n _œ%6Kupfq@f8 ܄aPt9ymm[>3d2x\YHhFBѨy|j =y\Eӄ:v G&`:kl:#m; Yi ~'N`7[1CC=h<^ҍDF"h;߉'mEKO)xnc#:<g.?I*m6bvx.JΟY(Ĵ^'m4p87_ݮhuG S9} b9WWnW¶,9ӐRuX4Kɶ׷o5f&Cşf!ITU0j=t,W-:srCo!"lI0;;sw3F>W[{< sB%l:ȯm8N)FXD6mz$I B6A<8L=/_ߥKÐ%``P%eҙl%!(Iog,S2oU-`'w镰7+@B$$Tu-ZkVn)jZ(MsVTTH'Jz-ʺal'.ƓqrvHFhwD=:ckLP'F!t4u㕻g۾[!#2bS e끨Ba}BRka"{o\2EDDa` 9"""`[^*IDxZ2Hs NNDDMbyP (jF3, u%DDD=6Aj!236Ji]"""}"`6Zf"DABDDD=/ @X`L""1Xv>2DE@)ǎ2⹂󉈈I"PL"""ob{l0|$""hZ=$ WIENDB`parlatype-3.0/help/C/figures/parlatype-prefs-asr.png000066400000000000000000000753651414030451500225570ustar00rootroot00000000000000PNG  IHDR< #sBIT|dtEXtSoftwaregnome-screenshot> IDATxw|lKz^E/*DQ\{^" AQ+^vEE5''M̼l&N $ٝ9ٙg93 B!B!B!B!Bt`Y~ !Bt7GsAJ|[4Ӧ^a0t !BJTNjXJ3G @.= GsO"4hР+~u_JmM .Mk2xB!tǏjKɘـ PFAOsϠI[MƫjMB!h_?L&QcڻwF wK.N}lsFсE.#.Bv^^(z}ItLܝO8ir2·.I#B#Rmm :E _0ɀ/ x&{.ΝzxlMuB! 0O;P[uAC*ZTwUS! }8G5Eu5 !BI4MjO\VxT}{B!Q]]j'GU%B!đހ޸{r;kK!hi|V}j2B!Ѥap?ȗb !⨧k") RWiɄe!BŔJK!BM4EGB5#V\M],xq|}|:{HŻDpP`=|l >HNL1DG#,!DkGNv՗EMm-<82}NrbOWuE[lٞo"!.*D\|%gUe/mG_~^Ih ~kmǾ,)))_m{:p猳sɕ9TLF~Yq׭-)m9?NNpU7Fdx8o8Ϲz~ oˏ~Gs&/M[33yұf36m݆d԰c=ZsZ,v\=0a-֭#eT.i tL?4f9 i7PYeOJW_z1IWw?Px~~~$rc4;g&'GEQxgٟErRR#DRUPtz6m&5%u>]L;eg@JRZ>'p<%r aӖmgÖ-ѿo>W$%2lmϒj淕T[mKU[,Z]MvN.gN=??BTphÆ[yد//~f="} h52Yri'Sm^k`G~g&3;x̬b㠹N4M#'7Ncؐ=M<^&xH PkL~^;9sgq-fm\t9S\\ʴSxzbt:~e9.f/3'č3fæ-2-ֵ6XΔ`Ӗm紓ju,}x D'ogt73do ےw^Aԓl q42Ҽm֝dfŋŤSpue2%D77qNKJr"ngeʢ bi '::c|k$%)]{bUaf&NY˄SИ0f$sX/,F[m` iw[4m)h溵 z6',ƌiz}DD~#)I\t9=!zˉRׇ!шCIzxdG'ߟHƎIJR";wѧ瑚W^NTduo?|&Mlm`æ0x@&?tÃd)'SOm\p]`Дڢ9)ukmD{PZ:W?Ú?׳vFV/̣75: q(ǟ!'/}fV6={7!Ϳ7}*q> 0Ǚ0n4y2Km뀾}^N]^et# FNLT;w垇g@߾ٿtCyرxF/@'5EWؗI~xМv^,={zd?L;iLphosz=W_ro,OrR\pٌ=~e9e?UU ` !88?m >6&^7wV9c*j>rr0Q)u;m2 <|];n 8N,u[[ %%1Me qK[+2ӎr\hN;^Hqn[a#O{O\w5b9kHIJ쑮f!8} 9uoP#_*̚7zTׁ_;ɐ#v5k7eb1 !Do!Yq 6cFc29࿅hrϞ #BC߁#Bћ!Bz!ד҅BUZB!dҲB!z=#B^O!Bz!דG!^ӗk2iY!!דG!^CZyB!]ɀ'B!D!-!Bz!דG!7nFAQ11Q켝.hnvJXHM{u?֬cc>t0?XN0W:fv/+LF }L׳KU9ˉѺt[M 7Ntz*^^^jjTEiv;2谏-sز=CԣAn~eNjJKq8(.i|q]tu#}n קG)t=w}}k+bjدe͔'tz=DbB)$4MR{vGAz޹{/{Ob|\&OUT\ZʊINL|Z;d:?X-w8s(rl9H<&@+*"48ҺH4.&KpPi6hVSCQSS (r5UUfqxBvˤc gGNJJ\* 4/ѐ/'??w@v;A П`w_ɉu: رzRQ]*K&&̶LJM"UUٵo?^F# m4( rmMzRRQUEt }蛚ܨ>ޜr?qҸ1-ה|dfQ]]`$ߏG5jiz'Mg{ZoUoi}בz֯3o*k5E%xy'ؘӯeiZÁO]cjЋP?t3/d-qypq2Ylܲɨø lv?멨Oj2^~)IIjX뤭[ɋufwemxLr | 2s.3 mzzgOƹg?/￱x; Yի5kܞt8NhܱǑm;2(..An<ұyTV9~xBp\ 4Ue2p8arBC4nL%tTYZZ^^g@ݸdqi)%ehRK#6*K%c^2srSց f/$2<r ظe qEƩɉ o/oܸ32 ikVW{؟þ||3mjb#IMI_Au;2د/UU}'i&gp7ڵV:zlNsj/ϗ@++ұ96:]啕8.%u,-C4b";iڭf)FF{%eMM X%uU3{{z_cjIIL >6vSRRʀ>-l55II@q Uf>d0+VqEb\,%TY,&%KYEE%Drl]{c_f6 NO8n"~{ۋ;EQHߵ]{ϰ!UTY,X,V[P@Zn=m޾s{eRZZNdaoJ!sDnзO-V6O՞V[~R%6H=N~~pE!3'v?+Zx{ܻyصooro|bbxt,6ƾ~nv&7n۶lmAy{!"+*X Я}uDFEY9t:BBQ^??'1H## bQBJʉu pGeIJ3G7}Aa-*r9mF#I ƺ[<zuJ{(:w[Vmkyfc蛜;hm?oz}(sn]Zf`퍢(5:~HItH%%)ѓt:]Ǹkk֭?dKg8bX HNJ"nݴuGe$(DeU1QQ3xaGP`%elܶppch4S,f$88 [A';/EQQݩ6jil55,_@ ) }S[gOڹ{/{@ccp\ٻM8S-[RVƿ)YNnj3#Xqw0'%/?_rcF$6:p3_?vǬ[o&nq892vb}ɪ5isִ{}CDGϵUԤDnù,Z9wWDX(~WV?m97ǁB0 b2).-#CGKFOtA/LDx]1EJbW@pP aai4θ雒`}TY7[Q;hkj))-#*2Lt`&ǎgPbXחАNiDEb2[+OQ ؛Em?o ؛h`1Cz]o\kZϕۨקﻎۛ1qlI!AYKvN)I|9,4`֭'!.GCBPΌg`%ٹ `2i8(fɲ_p:-:7ɓ&RT\–m;z$x:ͽÆGvN.cGt ; cG͒i$ZѢ#RcFQʘ1 k빠ㅢ(DMhzW3fm!zpq IDAT=]NWO$^|扞.{g cGtuQ.)y Kۀ#ovB^`ޏKUY~# IBt_}蓚={ٳo?'7G' xBt`3KJXX(s_pnOWK!BdB!|YB!DOG!epI<| ~+,ZIJR8YաN!Bt xꂝ@W^^z74)I<%;LG>=p,wkfr=\rUL9D~Y{#1!d\.^~u~Gl6x"kׯ_ !>ɧƼd̨Qlݶo+ʫ,yv)'Ȭݎ!{Wq̤OTno/@Qƌ%88UUykѻ|WT0jξhO:#jtl2S?z0^Y!fi*ޥ$yͣ v 1֭ 1]V?WO {I?i2WEp mZ5·UF#?w}W]>FVvvV^}s/`9g.^^ȪkX09>y=BvNNZO<,ŋlik}#%9B^~a>.X/[>'ᅨNp-rXBV?$io"# kS !h]sЯ15?V~kWVU72g,BBB~k3O?-7ހi\y٥ƒ\M=ɧ1_.q|}k0qIcX4J.Ԫ]MZmeu _#7ojjj]ooomRU y-ZYYheW>89p#%m,ʳ$/fk#Euu5^5)'?;D{O՟ԝN'*:] tصV~kigM{4) kqTTMC 7p8]Z?! h !§Ѱշp~Ce#|p9u'և:1*Q6OP9 ٔ]˓z &zsK"T BxP\/2e,l#Ŏ **+ϿngDFFӵlظe||PtKLH@46myrA}z~B!ZE7t*6 fRh۶o7~2#?Bo-ĕ]ʂv-N;v2~4})vgPZVS#**c~0Dn^gwJBtez̢j$|9tZnΜ6s,Fo4?r%m^ШqhB tAҎ>/q>Oo=5|foXvOXq#O>c/??㏛ĿoWx^y 1qv=w<;yn?M= 3΃<ƌ^DdDL?3w+9)[kۛ'yB"Ùy3tH }_|grq `{`gy]r?yسw/O>NB/5Mk$ k~5MU(-A~Fg9Ux{{|S7uӘy<>ZQEpX NJPWO `tW{3#Xכ=-˭`wjM$=SuG:&sb9;H69T]-==*'Ec-SQl@Ѯ@{f_-&lJ[]&QZq33fQW:_!Dh-h:C0̛,b??9BxyΟ@UQei)ɱ44H-dUlk)g`B({+tPP>p=+?"᩿| rBqdG`p;9zx!!IeE)Y %.}SgtY>A^u`0X2.(:=䇢3Hf ),;a:n>!W[Z_(PTRU^F!4jk B  Ʈ"($΋c~]Ѓbc<ʊj,F)޳IASjuLҒ4 tMD2(!ٌMDOUy 8?w#tUi:+/UUq]PB;nZ37i/:3:]7sO!#ƴ\ !#ƲmZ2d0:ՠ!C;8S;e[l6E;v,7x#\sM'Ԭx5[jY2&DYsj_N~!=&Ui86pCz'2qY>3vd䉇@UUS,JnHyCVo^fҫڙW}{:_#)IIƫ-pͷqs᧥`Q\.|=+5&w6ofޓnweo+;L>np}B]]{mwDXlRRشu+_=E%19 ((VN>2_űq2'+Vbf& qqq- : {BA Ά q8 Iuaj :XkiБc=fTTTPZZ?&Ly衇:unvΝ۩yiU5,[cǦMYq5Ӆr'{J[HVEC;SXXO=7k|nn\.3_{ӿ?Κvι/駟?VﵚNㅅ0mTyuF oß6³ѻ7Cѹ_ZHii.z|^{6NcM#¹u]!/Nߨ̵7p]v9y z !DGU[-tAρbPt6<:$ |g`HPP3|ƆO/o_jjl|::yyرڵ-܂lfpWr=`V7oUUUPVVƌ3?>]tyyyl6:O</棏>"22+Vy~߾},\D{1.0Lpg`2 PQa@9!A%{[&j4=UfλMyEny5ZùgRq놎4M`0rAUU:}R[k`8i|-P]ZA_=`4}4wr1X-f?dK6me=Ɂؽ{amsKҍ(Nνb9{ ؜PU^q1|TlfCG\T4j%wxs1`kn2vb̨hhǡi[o,t9ع>hhddGsm2o-fϲoW[kbccؼu[sLJ3mZ͇\ݚ*W @T#=&h̶#?#?4˜߿?vB4&L@JJ )))\r%TVVv8Aq'2d.b-[yn߾}l6F٦b]mFT pru'P[L|\08X+ٶņKeUe\x}uCDM䫪Lr"ϿNс~>qT{evCYy FTT$Ry\y٥ 4WxnϺ[˯{A>^^9t[;)/>,gyE߰ I]Hc y=_nfm'g;P^V+oKuq.-eJ$IR{SG{d](BPHeEhڮTZ|þڵk:t(AAAhڵkٿ?'77F봧WI?7Ź9$YQQCmۛ5MEQ\t)TVVɤ$|| TUVPVX%OOZOd| ʙ?v szoZ{- }g/?ϛ^;n+ذq#6w;f~+ƌdM7t{u:и겋ya᫜>|~igfz(.)|cO?Lͽ&4'ѣGk/_v@$IN)s5u5jfoO&Ψ i.ҒbofIM΍hdӟ+;x8a˗tF\}ڵ jkk 㥗^ꫯn2d͛y'-|ɘ˭:x嗛\֭ 6\ Ѥ1nܸCm><ό?6j-1s:lېFӐ(ޓ_Tmt(OeLy||.9o^͊x ^^ p9֠i&3OFfr卢(ڔ?( &/o~ZXXhp_]_Nj||||)ooN55&j`dTgݶ).'555hu||p:8f?]/u%WxWTd$ử.o q[:E9uoPe=<AGFg6 eތmGEӉjl6uVy.r^uMܼ;3g˖-pvZlf;ԀPH0AtapFٌlf kkXKbrLPc9?4$cGͯZͳb=RUbnWX9,*O*RU٨\'V<V=߭~yGmuߡWI$IR[CCd p*<<۶rHiYQF#1ga-?\.'{w@UUc0mx/_?z~1j(۷ox|}}[&&&9sxzT{9fΜꫯh1oo㣨?f7PCf)(RĂ ;z;{9; "b==y6Ά‰JNOj$۲3. I6$}?1&;;l;?<#Grwopmcv믿Y;v,{,zz4jTF1x=M_;a,wXnko^u69GV剈4@{oS0c|[q=6mefvl[~U4iւ>mMhѲ5YZҢt(+[K$=:oӲebjHV^)#e 9,>sxtxHDD׬!Z^ eh~iet7i~]AӦMx< ;`o/UHղݻ3x=^ǡ8"TzqZ[zӴiS33)L qS¥]Z%K%33Bvjgba|&""Qkvהr7tU:Sy}]MS6(Njm;7q<^o]jeY{e4jDWHFfV]%""RF:KA'9mؖugW{8Cޖ-4iS++Xةd6nšߓ-ۮ eafd5iBfZ9i iIݱ, KIhD_Y:H7)lԃ&ZT{[=b_ǃid7m=p&77D.MQH&rjqtDD^){ںDO(uGqfVY < !ԅ}ORO$."""#"""#"""#"""#"""#"""#"""#"""#"""#"""#""" <N:m8W-ţ੩bj7  x}}A'ѧ_~1?c>LCf 72u8?SMOMEDD-=$%% @vޝn][n!dz.\q٥{]_DD$Ó8=λλ1+f}39ACNd̸ٴ) &+ҧ1L\;f2쬳!&6mʍ>Kynl.t4 .- OⴳFpd q~}u\y3h0_-ﺛ?K}kq7rm]N=?۷o>˾g{v֭[G (NZjj)))7pڛ/|ɑ} ++kCDD6W mǔo!99]BJYVW&9,?<0mt>~> ٣}O'}Boa6+Wp8\kc -[g6+W*YeXpXq899-xj8_?6o_]i=q~|>~y~ y=uwռY3 ?u(,*KZjWf֭yeeee1SXr[xhDZᨾ}Eom6C֬)MNNf<$zUn8ixȷKoq|<7~k~ z;qWpyᥗٞMV9 ;sMXwz Gٗ71ܩcGs-OOstb瓆 a_sߔ˦bnGDD1JWi/OYa=>@,eY#?+|W{ ;"" N'(c像qa "" ev"RID_n=+V $~4$?GOm `ÎylHQa!cuY'eϫ.EDD*xiIhܤ)P;G"ag_ر=6;xgo_&{G3u ?S"a'Vvl㠞1! B0P}"""Ͳʦk^Y̬l6+})~G1lH u,/,;9w4{NKw1c +*"##CaGDD-c p'YIcSGDD1˲p9Fǥv= ];""RU- i멇'QGDDO5lBa{,ٍ$>Hc+OIIa3OVUUN'ay *_mf{6d)$@(bOb;a>}\UxE GVX8Ν;Wzv83;ev } ٍܩcRP(ࡧ h׶-W;+G_ZץE_{ާ߱cT0ԋУ b;p.]:Wm}:ב@(@VK[ƫs`Y)5tL.˃ONm""U5cYj >(:WTTΜ0bx_~vk!x^߿ =@JJ*K-x۸a#=u#Q:9FS ql;\EX$0U|_1'>ÙOb(bsǶnڽIMM᎛oΛXr70W`޿؞O1ЪU3e<7u ^]/atؑYӧ=+9gcŪU?n۶yvl})At2&>xڶ% Y||Bb?kJ۶mf̚G|Q}who䘣3,e ۷ӳGwnsmnzi7ygW;},P&uxpqI3W0YS ȲUz ,\ܱ@ -b'E<89{˭ضK.v^mf̞ASNncС|`>08ISSNfg8W/Θ.eң⬙x߰S'uk/ΚgnF͜U~O1ť4y5,x >2_OIӦ}oED3_Qat/Ó L<0eûm}mW䐞=ؚ_~K 䵿iSh׶ ם>b$_.^̀c[nnav`Ǽ2{&vlc(**  U#CO8! )thc`1?0 vއ'--|4{]}U}BB{`Je&P^}iO>I0a#\{+"RvYM <"3)ZfMcxztޝ!- dң -b@cHJJןaC:%=@={`ݺ`gtn{<N23+"m %\\]}M؎C;+m_c ^3ضM t߫ko.~# ѩ~DŽbDD곥_}IQaAt誨`V̾#DEc^vwN<~0'?U/cEup0pvaCGHM-96ƶmڶi8x=n/*8..&)?̬54iRr!TUknەWrfѺED껢prbPMlab|Ļ^BB'V^}`h߾~Xctٰfߥ֭e΋/1n̵L ^eme?Xn~6sHOO_~.**B[km۶mVYH=Уe߻'jxSI&Ʃʕ++V\{q1G<`Qz= bm;LU>vxhc\rq&=w3*Z}u7TTN;e(&?UٖϜ_.MQ̌Y;aV^Êm< HK+vIlcONar"@?3M4iWSDk&ۈ3 i%2k'̫{?^vItyc 7_?M`6<ɏ>mo9LCAn7.!GzvlUU1^)Os]x9!x<`IKMeҔ-7FңAl޲d`DK&q)Ci߾]wcq7x@8 ii1 DDIĩ$ٝXkcJ>L0?.]L=bjɲo9XjU<۷grx#m_.{=ԴTRRRIJN'cy<4aaRSӰ,@S{(..mY)icnrss6b$I%Gx< g`Wi{$'%83[Ejjޤ$ql?""Qe˖=ZUN͝Ur?^}")) ˲ʢJyet**'Q0Tw-naJ($ \v(,} T\gwACI8 D|JڵkKݿ])=P\CGD}עE ѐVe}~L˶isuX~:۶Y\_]  B]< :*ڽP(DGnq(>7l቏1脓8=ODtB-b| u]MHFz:70.:o:jxwoyxcX+@e1̞"gs.Șq7iS.0 ;laco)NۥKq9G<.˯bŗrԀAv&Oy &+ҧ1LW]3_y%uLn&.Džf}yfo]}m'{k/eI'Ҵi:>>sfXkmmnØw4 >3OE +mcwUo?oΝ:qŗS9ؔ[4pŲo—_-b mG~f_yվ/wq;_0᧞E Ks轎G}Oȩ̬rX^lAͫ(ВtC{^y_̝>Ә-w} 3Wn 0}`VZWXTd>|c9|dI0cO9~fM6#+7ʫ5s_~vuEv\#gN?{dLLcW~G֙#-[F_vRsҰg{࣏*wv uQ]b^z*S 8  =N@$ ϸ㖛C}8gI0"5%6 ]cFܳ'  ;wL笑1p@:t7wW[u6m @ ,3 ҳԪ۷vw}*Å w.UM6ĥ=WD!PI \HQQw3;)Wq`*Y? b1xɤle0vR~]|+Gq8&<S:Vvέnߊqqx*gffb9hҤ!.it Ox8YrS^'o۶Yre;[,:϶mVZŁ@zzw[{fgkpvWުnڷoWEmmIOO/'T>OD!RI>ϿXi ' _P\\Lf4`?k׭ŰSObUl i*':4uX̞;Ml卷ފn'?ߤ$֭Zٲukg7Uݾe6jTmcs3매pɅ0),0WGi$6R2Լw^<?£=^SD^RIΟOVf&GudNr<>|sN\|dcLUZ dw^+cIDATgYJ2zxDDDtVXfY 6şOO"KS[H'c0ưc{s7RTXT;xiIhܤBzx\.v6hӾ]7I?z{v8Lgw4]@C>\,vmeǶ<cB """qeYdfeӵg/,_FfV6MУr6nu:GDDcXEٜMƽG1q#""1F|E8,$DZKn#""eY8vTR*ЖDDDÓ(#"" L'A(H"SIGu Waxtl׽U <".ܟдUg<^ov?~Jdd8<9>7wӹSǺ.Bk/̢]۶qi3 ))qiowa.3fͩ0ˏ?~aF&=4?,_A699喏2""RI i9MO8*̎1!_YE㦭8a),nΝeY4h͖'n?>e iiOqjjP1|tC}ٶm;N;e(|~T?&ˈTF'acpG()v8.b=ڸa#=u#QziͦN{xzqkow~?zʟ>9G?..f)CYn/eDD*(bxS d6$ 6\^U|}77WYj5naK=? cUfΙ xn^/~ .+F_+yxܱ#Om{W\=sڵmK(♙ ,^u%iiio}{>={t1ҪUm3cl>S>?[Ud?Nr?o~c?@jZM~K3g0t|^mq3f᠃d)rưadgg}{>q}mx4i]7nG:c&K[ƤG!+3ff X5? /ΚIz/f+|Kx5kƒ%KiҴ)fdImU<:~4nm2g\vxq7C("#=š˾;nE˖<1i.Z;gO<6vw1m:k1ʢsEG}fڵn]nvmeKⶌs_yi3fv_/G.< L m=aGn߄e,*HݾG~\aK^?՗@(k?v3ڶyN vp-73s ,\}̝Dq8D0vlc(**/?]G0ڵ&)9@(țoßo$1ƎW~#n:Rjĕf…s0W_ns4`#%%@(+lژNџp#@2{͟hڴ sqB`tSN:ړU_1 ;fMӢ{.?F\r<4~u?߷lẛoa;6e['Q:;LMjC=qE2f7^u\ye5n'Q;dy0vqFu0c >°%KxdffR\>qhִ)ej"P ='Z.`.Jzx˛TuWN>7x`+,\Đbl!lcHJJ"5۶iۦ xw{_Xګ88S.U>?w|w|y>|}ڝ7m{e^~V`Ȋe[SOl&=%-[iْ7[gocY-J㵌;S'vB'Oˆxi:k!P5UpDC1ڷo1]6lYz5wukKs-'?AAaAXګֶǚ,r#iCzz:|E )**B[%mVYSmդ۷ܼVѹ ֩+lͥc0s4r_#8.zG(dԹgs壹\va=yDab' O!&S8X0(=S̄IOz۶SѪU}zm;<41.F8ݻ|_]{-i#=5NʄOrj3ŗ%yh<3y,pqUװbh=1'>4f`<֯HQ/."VRcۊyf̚× }v"E> ZKؚ?PW<iL2~E\xHzt;[ 1uǭ<6IẃtM׍n+ٛi }v_GeꌙlٺCz٧*]ed4m7=jm_w8DyiҤi9Hh-͛5e'$FZ:u؏:>㺌ԍP0PBudcLޖ.>ĩ$ٝXkSzi8ǥҵG|\rEJ.,򐜞ͪkO=zgddJRR2v8L0CJJ*I KxhöäaY?222KN..knY)i$%˰#wHN* uz<)ʍ~_4IIUr%8U\\LrR2~pյױjO̟o?3OÇ<ضM0q3zJ=3+_QAt=oRiiT[eY$}_vP񒚖qlB ]BJ+8Q$%%aYU_et**'Qzfټ~ YciܬM۰6;+-._`{4PX#</Zlmkזd7oS^t]*SV]*}vV?r*]&vqₘk1 $Ƕ+S[ˈJ'aTx:<-רFt?tyپv:֮aam<;sE*W!} z\H#Q7#\pa؆"/_|-8笳8mJ9Qmlۡ]g~nz!šPW)DDb0pӾ`a| '5ZEDꚮ#"""xw*ǩxPq)˲0`YUeT)/$#Q;\'V?4iö- ˉ7㐷e sJ <.fYd6nšߓ-UiED~0X{4!q6';!-׳, KIhD_YgwHDDoRYYt9M=E~a<^[ݴyF&󈈈Ԓx<=jB"0^ǃ8 :""RDO$訇GH]D"""{6*K'A^ < J==""HtZ^RZx5%"""Wq G[‚}VSev*u]HCZ;j4&9zDDD5!-%"""{@Qqq%u[;"""A i#""pؐV<(񈈈$]iYDDD\ᩧ'"EDD4Uoxѐ^Xvx_jHCZ`PDD[, c )))|ddfū8*;yH+/$%9 (yEDDj =3my[p6O㐷e 244,q U+"""/E:fB oUݱ IDATxwxSeo&{ hٻ,٢2u=Q=** nT@"Ȓ2{4ir~Jujzs;B!B!B!B!BXӪ.Ou_!B\Ul ;v͎NN>jJ !BJQL 2mܻR IOŗYu O ֥K^~mOqQ!%:Fc)Re$BT*66cDQQAF$$$**%=%<]:w?uvEM*B!uVk_ҷgϞ= ,)-)Kv.$>&<R?2 >%%f]!Qdi7Ɏ{sMOq6h"ɎB!Zj{cG-e}ՔWTUãJJK(5)f!BzRw4%/}@y*gU)~B!D}xSvWV }wL\LU d:B!hIE)bsM_U ɨ=B!-FYR)1ʒuI!B|&bs .w !BV6%:*ߡuUe#%B֤brcs_ ?%BVO]KUU]ZaY!_ܥ%B!Z%/4i !UY#eM&ͺ`CQ4~,S&^^/fC!$;fJhpPk?ٲRRSqrr}@[}4MBXPhp0'Nkx'QTp Y$ϐ!dCGLX;毾Յ뮹<~A%$(˖YrƌFFf&L0//4DiNxnug_KHP =wc߇X,KHi,_6@Y5pE-egu>]{aXQ*Qߗ@N9Kaq`4vvZTj aڏ8w>sWvk.(*@kqۢuK9[˔:ve`kc|t @~Aqۼ.m=wNj毃 iЯBXRc)h i4 ruuHLR#D#ק.δ%_B8y, -#48{n ?_/!˹jb<~CGB*eVWƄqVν<1Juۢ:)6_UFmc~_T\ xy|mVլY}7o,_/14ژh-sry$;Wg y'pl*=?ˆ>dbЀ~ۛ+ZIrllNJ0d:y#V177Ծ='NsoֶnEuSN}cm ۤ:סLt]&,[Rq\5xޞ^|V%V+exdz`r/|chlw&]‚"EEWesw֖~{Ҿ=ǣy׫7M6~b2jJffe3/!4DVsqkK^=9t~5 ǹ{ی+խkxu/|W7-/?3!ON5-[mLJ{qqv{"$}ۿk'JшhD)agkΞ派#'''KҢ DFOE!D# 4 (_:kEW*h4,Bf$ RT&KbEcB4#IxXJZCh:lB4#IxXm-B"HcŌFKbIBHcŤIz-IbaѢ<"5sx=Fdu$Cy"INK/}zt3OK`߇l׶Yn>K\B&w }VJ~;GlBb~v'Mhp:Ʉ*UUOBfy/];[Sc2ж w]{PU= \<&&%SX\JBikE?îh,Mh<긭j֬!=uiMH֕X%j+Iʆefb0HMϨ4}zVyt蓧quu 'G&/ԥIW-c8O$>\D8ᅢ[,I;;-憣=بո:;R, }͸#H cI:F ]\KK-իz"x?wc40Y5nK'OęЮt#Ԥq+H: #d4L STu:O:]kѐNkYV+9Ffy&ڮ?II@n~>nh4u:N>KFV:] voۖT*~۳|Gy(j`..D8IZF&ф7ݻcVjruɉgIIMDՅax-~"48sɸ8;1$LF;'Oݻvӣɷ{mMZz/| /kljl˾5z>K<:1g ;uh21ۘ0Z >O^!In>|}UL>I׍N;wЖ/<[cyUm|6RRSqvt}vIJj6618vՀ.XuS7p,*L66ztLp3!AL&SPUt ch0P\Kjg'T}mi]K "NF}={gxa4](&WۉW ߬ӲOYTVVA 陙dde(9KRm|)58q,qIi.+5={{;<$OOO'sH۷õ<3 sᣜNӃ̬l?@aQDbqrp0/ .!\(.y$8|I+)C)];UJv.p*| 7W7wLd ~S/v޶'GsO:q1G IaJ޶g'| j߾]p&&oKaQ]5iwi]q(JyN^`(%$=>ۡV l&!tj?'Đ_X'EWnhn6_~ ^?>&mMPtvrŅ̬lLBfV6m!#)=3 7Ws\skP|I˶lljg!;'Р@l5:CvN.t te16fm+Qxx]ޣB.Sefخ?*)dfeӮmY7L7+;gg'\]]̯!9ߩfޱiieFe-Mmtrrѣ(--e7IMK4h2Ѿ]Y-џT~:x(AwmYMZ~~a-SRL'.CqÄ(B\|b崤6Tm]azJ]v. kr՗Ao0I-{Rއ8->;6С֯TxgژԴ4_uӹϔtRCn긽\yGk-/|i>d)i]ź4k w-vF#^Ow2/ݩ$;` 3oSZo/OskSV7iw6j9|quq!+'{HrJ*Zuo)gӧ9GHP.3d@w18u'{ ?__ܷWgn\ Xd}{qSo^5耭-q |V:uaЯ/j:vGEmyfv6966$;Jݵ Յ,Gۛu:Xc瞽ZcHpqZRVN.VkC/ n\jOG?_.ݝ\}#$ )FcٹNN>Uq{)kJxyhG$WGuٖ.N8;jHɜ8[B\x`U W{'g#$=x.w7W|.[v@6(K Ӌ! >C^A!jURї6JׇU5˃]Xƫ̚~#BBHL:1sXGlj^y)F\5 $_-\`67Oʠ~'_(*gccÝƖA^^>>޳w/!|]55iEǹ '{ΟOl\) Xq[~mMJ~}"sE6 IDAT}Uu^ZR*Q~a!2?* m-XPU&>派#߉dIm߅瀸0Y5grYm_Phi@1PT*Y\oi !DS2U( e}ZS,DCɯZ4i[ILL,iCN^mTx!X7h '&7)4/} ԤNJIhIT*7a4k_ lזvrM#5{|jO]6<;0n[ !^Vԫ,Bo GoK@VӷOo:ϱH=4;[0w/닣#Ͻ2~:& t!R-&6Vy5hӧMO09{8:ףV-,X:}%F@Q;ubhoUB!>Yw܉ ŒͳfӵKg~;666̞9‚6 GGG{j5]virBѺ4J O~A>DWrfW9>x{{ 7W ڴeO?ɧpsse/ީS+BEU0(f \xOxXB!Ti@1PT*еB!$99$&&H:w]I ê]ޖ~V{$Dxe89:ҽ[7bcc5be888`ooOQQe.u״> !_?NÆ2u >>EQ5bRJLL;dɒ%cC 9j:z^%;dKxy|FԚB\͖T{MrXUC+Sש VFsrL6@=y&џx>s~%&LM~)]˭}/Y5+dV;oC|u+>$c%8;;( 6ݽ4<&Laø{֒4K!TM_C+dd2V__SBǣhpuq1spoTxT4BCV)B(:v@T rrsyᇈ__πv0DGGWG6mx}+x#ۣ( GV,}:vVTݺ׶>Pѿ__׾o"--vmqpp`J2}tXn])N}οW:|B\MSRoׯ7>z~FSRHNI-[5e]dggk),*dQUNqfOob4=r^_?ri|^6-&!1BvU.!{_!!C\\\4:,|dfeeֻum}ǖ'--NÇqpp VfꭷXq-Z̒+Nz8u7od2QXXHaa!&Q/GCοWNNeǏ{|X-W6i ʢWܳ?CʫL~ >>L4[ۆ4xV~ zヒFrڈxѷwo>xw ȃ{;k4p 4^`ђe̾.JKu"<,wϽQ<6>?RڳOg7y1 4wVjuԴ?XIJE&{ם$gӣ{7SRj.t=_+;rzjpy4ky'X|<[ 7LHu[2UD(#i$3fiSrٵu?o7} tZV,y !ZJ5 (_!BG!VO!BXVt:K`1uB!j"5t#^{F= a;˫ѶѢEڵ+'Nle敛ǣ3Im++.f̨ /!55gӆdz55oybŒElڰZߏh4}<ԓl }fSOc0XٻU˖ 8889n!Ddk&OxX߽|uϚ͸4ϭowϞ{vÎ~iS/[S&өc^~9<~Ofxon'd@~\gggEaӆuU&5z} F `xh4vvsaJdd2V__SBK4x4 .<?M*U*dby<:}\{!"F@vFm6}_w]w݅^Z`SL$;X}~}iik;wrQ#G+wB>qܔ[>rq !Z.IxYNN 9%/~*}Kӫ7n$9%ڲQ]ZvEvv6﾿¢BƌU7m&*YY,_&F#GEAAl#N6Ɉaxmb)(,d]2xnڢ,YQUXܼ<|=iit:>nnhZn5Uo(--xT"5...Lp AT 2xc2|T6oy8YYټu[rIV#WE=x5=/*S߂'MֶaXу}FS),*o|lmm  w0hXi/%˘}] DxXXX{ǣxl|6~!))h5ߧG^ozm b٢}Ny}RSRfѽPYMzqF#C U3`t >sx1{ds>q63e- 9G=ANNNy>;!#F1s\GE]VOn6M3feM7}!cxy$'TZ?p}0d(g^x'~3o5-h$ᩧsϰuׄsIII᭕ٴa)]|~-_|Nݹϯ4<3~/>[keXd6CVqc4.Z ׍cӫ'cFf0L;~=9|(^hb7_1wl^\* bUo͞Xl)?ހCy|}jVâEtڕ'62Ey|$~޶K3fH׳izYcy}+|FƏwn˟{ IDATSO}7ӛyO=`j>k[2I[I=M?0{n6n5nq+k?ZWi[De ¼Gaמ=gn6ƲJJJظi3>x:+/3ncF *$W hzt_Y3`z lߞ?#>kIt۷'"*Ю]?h$[ ח:k3>c61*e8x }^3X,ʔ)++r[P\O@ؖٳسw_ns^uL2ebXX|m|B֥Lo%vȝ/?'&&ʗ>,n-IHH4_zkbܓ*9B{nH=vcv޻mԱG1Ԫ%Uxa4nqͲjԨQd}L8>}tׄUL|u.\\p5pww'<22uk8|8ϲ[{-"wdz*;w&9V]GP˖'<0˗{Ų9 +W`!Ivbsr1>|?._)SZ͡{ʔU|4w>۵ˋZ5Yd)]:w\ | \¦pq+{=Y{=:Whq2>?f.Oo IIIa? :>bdddp(:RŊtؑOz3gϒHxDɷ-"w%Scxweyܣc<z>Qˋ{>T,iܚi3gq%YΞCִml6^~~?Sύم=V-ospuq.koaƬHLHN:L.nYFb2x)Ğ;Wʌ> ML{vSX?ypnMz;~@wR[>`$I9')KZ"""ע#"""OGDDD_rritǥ,S#"""OGDDD1\\\IOK]P ii"rP;FE*9 i =wTΜ^UK)"">.wu5c"=]nr7sqqW{..-黴DDDD P#"""OGDDD8<qx <"""xDDD)S#"""OGDDD8<<8Bi7CDDDJYяL`P0ZyD$&%ѻzHJJJ׿g>YW;m2m:`X\#0(яK[ޙ4`֮ \ORR X,"4 ToU̚njE/^vߘqq `O;V}-""7GxڷmK琎ddfi7x$$&fl2L4hP6յ_a-[`כ0ʹj"W:/] Ec}n\r8_m`G)W:vĻf  9k)ZDDn\xjy{L'8r(} d4rVֈHݩ]˛(|*SбֵXr:4ʕׇgDfź]{0_];CFϒkO6wwwz? G3x#jԫWsfsU>!;v$-=m0aTP+8믔/W1s\]] ]63eʔ͛4iܖAFxDNNN }Q d]jzov܅͍>{1o"^?A[ OڵX,8qʕ+},r:w79ȀC8v-^H?}5k1sTN:̀~}1  ![8? =FU&))ߚHxD&?cCg[}SaeǫWyw~صgjTgRSS5w[n+3OߴI3p+-q#<#+W6t|֭[LTb}mquuׇ{4 l执䩓<Ϭi}ժUсHLL"%%WWBd竩S6MmL!4oȘq6RŊ[ٜre˲|bM-}4 рKE6'''mQ#?k_'{h(ǎŽvZ϶;\-Z4cba9TVxWOΝ;Os :UV.ضcS 0 &Mǹ~|ٱ>_N`G(_/ʹGacH-bpI>[FVe&BZlѣ חW_|NԶp:&łoÆ ߏժY*lYA*ng8LpK}{1:Z4oys1 ̞7?Ieʔi9XXT2mdٳ۟4?= e֜عS=Ǡ)W]m{dWcCTb:l^k?[3?سoW^)M&m -r-ԏfѲys͛``̙ ?piӺ5sg`0y_>ά@@jy{9-Ϗy,DD{yO?sȓx?__kְp)V_UW||<^GD?E琐B'c\MA\\'Cv *_qqyع׬ѣ\|.ڵjȶ;/[S6d9 o +!>!f|Ubˆ}~̷GC}P/ZlXH)ӱC{<==3F~~qbznn&TNzDDDJ$X,, 1'@6!LvC9qz 􈈈Hєؤe_i`wp3mȅ_1ͷ"""J$d𤥦fr/n&wRSS`.= s:&OA-eLA9q$?^JdԶ۾mÓqV-Z0cdf GcXs\]oz{ۺ/b=YшG|u+Itо'""0n{1JYGy<Δ-[[o);G#-ov9s M5«rek˗,.8rs"0a4qsIKKcx]zM"99Z~0>]F]. |NOOgʴ<Է;Ы6nuKΫokeWscs6wYSkZiǀCxɧYjUfk_DDD$,;?2KoPN})fϟO~زu+miCP~ص,+۶w_DDD$bI+΍f2339q47;JKM#,}X9m0K޽_b,"""3 d #1d D&-  T߈i/}̈́G%/*VanpZTاF#FzT"##3eʔ|>s;m:b$"""7Fx ;<=={"rhkFxΜ#GnPBsx7g!숈HɺchP\U%~hDDD$=EDDDn8<qx <"""xDDD)S#"""OGDDD8<qx <"""xDDD)s{.v3DJDD[ 8AӬuٛ^{-MIbRw{{#0(u_~Źiܖ)Ӧո8 xI f/pA_$%%b)RL`Mv[z AY_R՛ny7q\S@~rDD&>Ӿm[:t$#3Ma !17cdA4^ h٢ބlUʔԱx6h?>/,t+TƑj3?MԱ#5kv_sqWMrr2aѣl[Sܛ*eKo[[#"qwwv-o"m蓫LA"[bmӔ+W?_fΞ͛6vO~zܚ""wb<Ѓ9zSOA`rs㫍_S^]ΙիW`ƇعtڷiÄRB6nK쯿R\9ׯ̩Spuu-tYېΔ)S6o"lEp[ @ZZ8991G {l(uSرs&77żxa8 oݷ.g|><7mk eKiϺ~a_QٞcGsek\/{S/9l=VDnu@ff&UTոý i6SpI|zfLgִ>|W|jժ$&&k ԩ]Mٶ@7 d̸MPbE-\lSGeYd1& >hťH"Q۶ӨMٵ{s/ӓA=4ca;gێTT-|bjylhUZm<ܫ'Ν'9Bժyi l۱)g@& \`O?>X:DS*V@DԶe/};ԫS(F<k?[ýz/'N0x#x/We뺅GQ{܋/ ؾӮgkԨa؊ܭnKX,8y|h$8uĪP7[##9r(_`m;)))b۰!zjֺ [V/ʬˤi*IDAT[NF#?Œe{^NFt͛x\ wj2eo{E96Ul8gٷ?Q۷3h@zʬ9sٱs'=N{ASlYbk6di>6J+Vժ8;;3i,_=qBd2Yڶв.lAh9x-7gѼ9 .XȜ ھ6[3wL ͝EY3^?? < w ;lǍl?z8Qhټ9 h>Ξg'}c#"wb<g}n4yOk}vN</ֲꊏ'uիW#<"H|}R貂8t͢ipkЮqثcq5..O;w5>z˗XPV-|}|!ٶ}v+R{ Fq0L8;gRMa%'$㜁Vي.Z3=v yBhvF!m?z4!; ;EatlEDfx:vh_B˗/_Ⱥ\2xP5WT Ƶ_p##wYb4n\2[Ӂ뗞gϏ'Lf}\ezcؽg/QwPbZ4kfw[Fqrr~jl91ZӏY#-9/[f_uw7NTXgk?ٟ3y3؊͊c/oF ;> ~ݺ6lh}F2fF# bX8vBUڵ$BRRRֱ0޾ۇl[΄t@|-k4pn]l#{t&.뱧̍l͖OڵX׭ w[­! jv4}vٻ瀭%""ye˭NZGS:kG 9n]p:&1asݻ'NSǎ)S/ڀhqF.+VW.y#]Ë܃ ǎgɲOsC\I||<ͳNZq0tVYl÷aCv˛ߦC<>jM>ٲi:uXflٺ5߲۷ 15jÃ!ھbaoÆǍ߇=VhSV-|FϡÇy筷^]r+"r7#Zbw>t ,X'N5`eŧ+(7^ǷaBG3&5OɓtٙqcٙOW}Fc?? OFzބYGh7f3&vbsIN!֬[WS&?񭔽ӭx:&I=e[vyGwbccٵg7!ڳb<=Nd'DDm/E}Դ4d"8ui7GDD䮢Cʕc/R #†ѣJYDFm#11;/)p|,]DDDvR#"""OGDDD8<qx <"""xDDD)S#"""T-b`MEDDDDOvtn,|DDDfXX,dffrQ.Fjj]빹Rݛ: |prrR"+cXX,Ĝ8Frb-ڄf2ٵnjJ G'154#"""ESbf3cŧqad"}\|[("""DOOZj n&";k\}k=9-X`Kyn󜎉)4ob8gRSSIMKڰ5gn/""RJl'e{f)Ӧ`$==>=&ϛ)S9\t@&KE"""Cʍ&<"m]f7Ubt Bs㈍=ǔ3XWX-ڴcE<ӬXʺlf۟]Cyfxbc:>^ʐ ! lHI*=ek󮽹~kλdddXz|cCy+?uM4wޟXRV.[fΞk62vӬ_9MyɧS ^^^ҋ| F ㍉os CCFf t-W=qs^=>}Bt.9*pl NztBO?;>{1d#a;o%|k&Ob岏1 ~I233eW_|MѢy3ƿYDDZ О{Ư;Q~?ʘ'/k?ڕkK@VrF^0 *PjUhlݚGY@Ux1gP?)x!={Ҡ~}~>xmې?p5.tŋIȠc/_{4IEjs6[Xto2|Z &{o xAjy{E8"Y=hKŊ˜9{֮mN%9߼ҋ7~?̳O?k AZ2{t&2xzzsа$|CH͍^ʦOwgϒr>WWW:tdkd$͛A(W\:իGP˖8ponͶ襤S>_X3{ʔi&:u*Opwwd2Te8R KǍkY_ۻ/??sf]u:pu͚32,Fs)׫GٲeX,\5h4;ĐtҙRvmƿr2= eY{[$H0 d #1d D&-  T߈i/J*'77X[ jRaGDDPb2xzzb4)Q ss Δ)S눑ܼၬ٣:F9sWaSJ)"""B ɖӋ"; aGDDDJ3'Gr璖ȭ*;-@#"""%,"""rxDDD)S#"""OGDDD8<qx <"""xDDD)S#"""OGDDD8<qx <"""xDDD)S#"""OGDDD8<qx <"""xDDD)S#"""OGDDD8<qx <"""xDDD)S#"""OGDDD8<qx <"""xDDD)S#"""OGDDD8<qx <"""xDDD)S#"""OGDDD8<qx <"""xDDD)S#"""OGDDDҁkL|a9,,`s~nx[ҁkt\'õfRRƵC""""vzIz)x'NY""""%){`&<ٗlddB"""");d?Gys/줣 """RJFxrsz(H˞Qr,Os'rC>늈윒3iקÏ#>9""""rLS`h1SDDDYl{EsIENDB`parlatype-3.0/help/C/figures/parlatype-prefs-timestamps.png000066400000000000000000001016541414030451500241470ustar00rootroot00000000000000PNG  IHDR< #sBIT|dtEXtSoftwaregnome-screenshot> IDATxwx&{H'$HI*(v۵`AzU *{G,!;$kIv6 kt';O 'rjk t!Bآh|zdcCOOq>x$E!BPT ^}`6~,ΝzxTu5]B!D5=V-R|*L!BxRWyUƱ;zLK Jk9B!8(RVDqದᯪGS=B!gYS XS{rzIvBqkn@[{r&;U.!BsDǚwh5N-&=<}O^享.'+8ŕk1q#(--Ͽb}1xn=m>cmtfzˣ:RNgMqeD4j5^t!W^r1555|lMIqI)=C 6^k7os  GoyU23r۸r;{fۢmm3a(+*HIIޓ싯+>[6 byKh),xo1LpUTH#,y/#HMJEjZ~Pt]$Lye;w`h266ZTj ÆCzf+^ʿW7겊26nnՔz_-SLu`B&=(-+XjCghFп/^^lKHd[B"!\? b BKPC֔c-1If6dPNx=dA$Iy [oۋ<Ϥ1KKgCܵ'FFG?>$I批/cx螻}@o-ejzWXT"zⵗG`Wx'9rh巴"ãpjuHDϰfx[hmXi4/z-皫.'f 3cZ FFqrrof빻¶; f]7s+&Oo,VdF \\:UZˋ[?prt`whRB_˒FAӡPjX;l][bj;筓ty$B.mg"/_ȄۀK,W|;A,ggd)@%P07y\ Tɏ /e{1CpB$eh84!2hY=TVV;tZ+kN9BX=$cxBqn1<O!D!I#B' !]ZB!x2hY!O!I#B' B!,$N'Dbղav X1qprpd8IuM .NOIXH=WEHPzyh4ʾ#`gGtw늦o^p1l<aJU}Nk=C8Zgp0a!xu2R; mddes45 qrt vȠsS͵7OΎO/Bs73iֱcg"\z$`ɧ_wM}zPRZO q^jk5;݄3ko_~8;؃y{p;˓- 7?/PXXuS@Vw(uJ{.\7 Ǝk3jTUY?Bӡj<=ָ/DQV^ɼ|llD #VGtj7jjpuqHOx:{qI4+B  >m{Z:ZZ!8I) ۛ6# qr1w ”me߁CҨm~ţ\q3% :?֬G?f6Zjkk}Z<݈ڥm ]8h׫TAA4FCdu| Qp9KRs"7'}9t4ԌL|}8oDn6xy2鉻9$@P`2㰐 zƖmI>Vlܺ C2HIP@jz&ŸPYYžCI߼ 'GKKٞNgnҲrz=nnm1=/(Յ'&BϐfeԎר{Q[[GhP ^ڜ3NkV#G'/}ʬ'߷yԠ/n&EYa#o>GSƢ(I;tnnX[[31xy_b\>"4j TUU7_:g@fv6Qsی99;m`ClJp{ ǵGlOc4zyRUUVOTVUQPX?DaQqqiۭ dg'SP唘Z>q39~ :zlM[ۺu{9;LaqN[mS_Ubjkkk1EQ1o]#G+($<,B\]pttb54OAFk**Xn'NH/!//ȞaQYUENQ\RJHPQ~VNOn^>%ee`oOAQ'spgDCzQM!%5}?QkjƎ=aǵ#PT<|)0_or\\;иk8k}"Us4%B"HȢڎ lmpqr$4(;;ƢP||O\4q<}?iddf_X@ʱT.`<1?MBnAQ‚ `1zyy\udw7W>YȰ\#H 'v(ΐ zϣVYj-Ű衭ݬ4baߡ$ HIK'%-7W}R32ٽҩkx_RN>7x5%|,XNp?_ pse9Jєf1vpk#ÿ㊩q;~Zow蹳5m@aq n!$H2&248_XH/B+(ֆj 3 !VK~a!UՔUTy==8AQq ydXd^>>)`gg+EtA\g除g6Q%@=|9|4&xZkÁ)Je86$4j? nnQSWkRu&[Dyee˘M۽i6ڎ ;;;\\+.ޙ4WCx 2" *H?W{`+//O; a5W;tH1$cPZV8imu ep]Յb/ =;kGZ6 ~>w JK۠㑱EW4VüK >u;w-%)=_]LΝ-im[럄Ik5<6֖8;9_P^Q/(LJ"{r psq6u.Kx|<&%- 0˓cdfPRVFP@:ElٱWgg퍃75+7C~A!'rp+j8HgpPulM/55jm<8k4Lei|C "+*ZL:gƆcF}O}[:Y7m džƍ᲋'5[Z _glMɦ-x7\zlc(Q}q=CCg4||oggK4u*;ᎇ;=Xq3y_P7 jK?ͯO\_2VΤ~cNp޴,Y:r4I^¶_#SׇCGRPXDaQ1aAXY[qh EŔ7Wb4.Ӑ9eVqssaDy㸜zbfJEvq _?ũ>-(,gg''ƓG^#cښŽ=TT4+YCoZZ_ƿ=|50@AhP'48050VT1Gf/BQR2^>=p^ءD,-){ 4gw;u̎a[F51z':9:=P$ƾÙolulpuda~ ǃr\yGΝkԴwДls4z/wTx{bWj4\/(w yW7f4QѱL:lml wɉP VkH /////.|1w>ZNgppjjjX~=ni7@QQ/[m ?s{%=SOrQTT b֭7lg>@V5VBaI̞8U 9a&$4860&׳oj gO8?۶\ݬ [xc[D ۿ [񼨁zӍϿ`mm}KaEQZZo+WRRVovk?65BKbgmߵg6mbXL スJe |Wxu&cgk>%(0+@Q"{ګz^ZzF^u56mjxyy7_QyYɧlOH@ٷ?C ERN+npgpƺx%%q͔xGzmlظ*lmm[Nc7<6rSLj'!’=ۯ 6U`?aFƍ@Rp ,h ))LŐD]OHƎ}ںno`R7[~S~ 47b!~WW6c߸_~[AD^Lv+ ||͖/--5$ }zٳÿYBFcx\K3-2{%4 =_+.jyxxZ3VZ6BKwijZI{MDCI 󫫫Q\0q/o.7MEQ8|hv܉^g5ov+oaR\'}ڭ4<@݄٫aR[YrMm'!’tyO\zd=<zոp BHp0iit8;;e6&$c̨QϿV۷O/}嗔mGB⏉&$8pmߟ5ֵm᧟QTVV`; 8ѣF2r6lĭǑg>j_[NB!%Z{oE^@NNvlg8>_W^~9zGFr1y9˵ϟ_|3=4z5[nV0__b; dXl 1p?mل@O%/c {[oҲ2>X66F7~mkj; !Ds֊ty$B!R@ETq%P%ߴ,B' B!,$Lhހ!<>hYs"'MNvllmɜLzB!ĿY*llڽUrZɗ7O~*W>[Le?PSSCTt,ѩu2~NO!trGe$qnZ-ohGBX,95I1-ce:?dתUL`#DwiBXAEN_V1nhFMj.'~ُ?l/jxaǒrƛ\rbF) >ߧyٹϹlܼL#v.r b\Ɩ۾#Mg\{$mY.jF?f"'x%` ٱs3|XSoƯ+~{gĘql޺v34Z_ӱp;LrFȳϿb\\Ƹ '󨬬496cu} >_]۲1./ĥW]}/a# ӠDERPPhth53^0VBK%yy`7l4v}<OqI Ϛ]_ʛ„qcOɔ2x٬:Y=Nmm-ok׭W'VtޖtnS{m>/~&צѦ[xG[ۋظy O?qf/*'NdewM#u-oM }2Tj1عea:/ww7 *\!:z^tJuufOJmMM5+RNfu<\g5ό9OEQ>TD5FIKOWEQXn5SoR~m(R]] 3NٙKQE),*RF)%%%ʑGb)99mnV2_QQDE*G*%:nr!rex{ϤnEQ.P'$ٻO6jLvG[6&?bje%=#㴲b)y;vT.2b3_/;e[/ .TMޮ^3cck.-.@_ Ni cxa՚<1gkh 55hcccٴe c˶<<[ dӖCZahr2;;zTC gfهfzNm1.Sk*(0EQصՃ+g=LΖv Ôצ-LzcggLn1v>~6scdZc`jΉuN7i֮7 tuu!3+P=C f{1///ze;Peee|wb>|Y}֌3W_qrrb/,:/0-۶qJKK{fFw?y/6ZsGRQQ; 4[m/cu|`eUSSצ-O̙M!LfZ\w-7KFܸ<9rɱnS<>{knz~[;O"&naڰijB[> 5kEQj:R^Gӑtʊ2zFkciTWrEEќxΔW_?WzxNyyLnX/_GRM*JʬU** wo?Ndq`wխEӔ-.^{9[^C$gCI !ɎBwij\]]Q8xPWWguJ8;;=;VW^~Yw!ŎNp;LK!ZfWGV=<8tݡ2>XǞ/>\{K!ZfӨ1i6&9gk#BOiRq\B!,MMIB#BtvB!0IxBa$B!œG!O!BXgTVV2λ9?ꫮ4wUhjdٗB!e1{Ύ/̡$Ɔ>|x}[l޺Z ċpssEϚu)(,OHf= ##>z,Z_Wβ>'#3g''BY85ZiVWW{f: `@~zkףhvMlB!t: -Z-##^?@ʱ&_tr%%e_g> '?|7z|IxBsKbxV?w;2𜋋!HN97}7}߬R0z6ؘh|Y>=wѣO[6p}#FRp4ۿ_?B!&fOxFŅƎEdDD;;;pe2𠬼}屶x߱zZ<4k~}6[\\/;oYh4FcB! ϣ$0 "Hܵ{kkfCX~=n^^Z悉`|}|e>r',$UkrPlظ>^m'iB!8teS П#Fa&nNƟ?Դ4=aF#(0={qw5`Źsk>F'!a'O?cFޞ~ZM߾}N7.n{{n~={j\]\N[^!箳%{[oҲ2>X66X[[8|q4+ =Y_|ŗ83O٫˪ռ[\tmvFeKquqmB!DQ𜵢(5]B!DT)@%P07y\ T= !Iav( %EϦ ݋7Z#^=pvu$B$<¬cDXD_4VVmQ\OfZ .% $B4&;Ņ-۶QYQyEt0g㔔JJJпi}zs¢sqnn.yDSXThx_XHIi #'=G'\IzgN~ ~g 8`O̙/w7ѣظy3}cd{~~LeHNI!(0gbPvxllKٌ&ju&z`sIúM[+/jzƏg_,eϿඛnd7s.~Wأϸ;`21%vzjj32 [[p~ǯ~}ȌFYտ?3g܇7w;1F~ct|2\ʊJF7k>g !tj“_߳D֪ IDAThxnk5!f=AʫWeTԳsYλ\1^Kww7v&zZ}%%<Xyn%<\q}SQQa[P][{|COXκ yaW77>X1gã6wvSI%$ЫTRD}J7]D) R-(JHnvw?,Y6ܟ\sSNKsL1Q&֢XV +[6G-\OlgK/K(p/e+W1os3?[ڴjjx)LLyynԉ0Ͼm:QVMOHÏ0iX"##)W,]/^?WԭC٘nF_ٝ8qtvm&,,5jP^\hYb%=<5jP)6gz߰s\[n抺u(]:>4J Jb1 s&uƏ">> Ka iM7.D':wFq!ĝ:ŁÇ:¦;ly6Qf LL/ZaCa&LL;oZţ&RJeBk#a>IXQ#xчILHd֭:rӍTZ9Gv#4ʱc̨:W/~}mن° -[}DD|ç=<[3:+S ]:ۏix8IjZ&nn_Z57kF;{Ѿ][~-7bn>o`ԯϞ={!\ II)+J΂ ieOskbBb|n7##sNmryd5bO{WJjڔӦUK:r͚4Ø=ǻ\.y>r4+yq3rOLt4e}82e PJz&=}?o·k>'<㄄f|>-^|ZRHIIva5;Lt\.7Nӳ4Ml6yVG˅ƙ͖}xGႝ6-5%"W$Wi4X tIaX0MBpR$qqDERՓDRR-jFZj<=xDB)){]le;vfW6;s}cnRShܰeWp.ׇT|dVȨh#<ύ25Y}aE_Q#>dZ1 ۭ@G ,+ t숈(׺tegLpp9/i\dݸRD|F=ޞnwx?cO=sr""C>ṪiSf6Q󢟟2AApg[vmYz{9ɭzn'oזjU8Wf&(0Q @ll,7jADD4l22t⮂0۷k۷I܅rx0VO tz;+^ͣ'\p}DD]{ȚO?c}#hӡ#~Ozz:S_NhѶ=]`ͧy3M˖s{tFˑ#G:}Wi6_:+=n7__Di{zpGKg`Z;_z7owlׁNwtc9}gpc.t&~RSSyk*6:g`ر@p>WM. `䘱497ۇCηނ 0ޑ~5:?]=ǻ]nۺ19vgcY;ͷVqp1h}`¬hͧ\.n%o,r :觤."">-ۓ_2͸1\)???yt$W-[x|4lP*+pf-Myҥ#iDFF0n$'';\yl=<}w?6VMȤaE4????O> 7qcFs 7pqvg/Drr +\'d朹L>^CS\y&}@hhhp>WM. & lmr1ٷW^Y7 OIB lL̻ $$_s2mLFM[bZa+[SOz5ApPcG?@ztАRs.ZlqQRl*-\tc}/RDDriϏ?mUku} N]& ۇ͛;Szu~ d7xᇸnpM7znlJ{x25kԠRl,<$YaNuPt$űN8AIWJ5_ }&Kdd$ʖawv:<W6jDLL4ƌ&22Ͽ*v86ɭGmwӇ?\u^ݻQN-BC5^"##u9<2i<+#tO<0 lܺՓ>{nFUL`BܩS8|# vamP^?ed :aC:__iO-xmscӧ/y?́HKKäԭSALMgҗ AٳHD`` ))޽UժUyft۵Ѳysۏi8s$5<)))8:^Ýݺf L~ȳ?1)8ÎmX=s|a0Ϋ6>\1'fL!!!Ɋ7Q\r>ηMES|b1eYx)~ع<(68E[".;wҠ~\p:ڦrJ/۷ӬI w`]tU\լ)]9~+ķ};6))k;i=e퐗FE&gՐ;A<ۓعk-!6"iӸaC v͝n9{$aۜNgǎ',$D/;{vǑٛ3_{ED.bxh2Q$%%w9u~_ҥЮϼ" )9oׯL.W,~1a 44η”gg]S_lpTA'$s "<"ÌWgp:cG4s,9u,$9%o;oF&ϼ"/M{%*9ffrWfMN85plܴӧN$СՔ ֛obWٽ/Nfy-CWm^/?ĿqHKML'Qz_t -vePυ'"CTR#G0g|tuhݪ1SxjUPn|oѝec|G7re<}xũ\:&>(/!!a&r2c58餥3 /|cI{ faX3JDwY,n@*$g{ ) zjJ@'KrءC2sܤ5*{4>$59k=%9g>I gr3M4'O#BD2G"ň{r) {6+NDlJ""r)S#2#5NgzqW:m3""""z%]qƕy#% px\liv(("RtM)7)b,]DDDG|0\n CۍaH)X,b!T)R -je*-5R{<"r'\TLyNŝ%r^n7q'OS""%ła;~%T.Wwr9?ǟ;~%4"p Pħ, VU .у8\xf#44Q VU/'0ZDFEyH}aE_Q#>dZ1 ۭ@G ,+ t숈(׺te=BJqi֔U|~=}c̝~'OM[oaؐFFGT-ݫ'|UOݸuk̜3Yl9ӧDvmiڲ5Z.9^ʖF<:yݻ9w˳Z`O={wp8nFݫ'Ml̴3ٹk7+gq4kҤ@W;DʯϧYi}ټe QQQ=dt9Y\_""%b)Krש@OzxكÑNV s v;v8+5bL>ƍQ|96lWԥQ|Ï̝zIwnԬQ՚o&݆ԮUvWaDDDp{=z#G2oʖ2#FϞILL?'!)W_g]v#OժValڲa4mr%5W~gܤ|чjU6/l=^[:ujצe]}11 ""E'ުl6^ VmǪwVӱC}DD$C͖Ql `$&%yz5;w&..ci||Wp`'tw @vmsI׾DOsv]ZhNvw|;֩ýÆrM98sgƹ Kh/ >15-ԯ);+۴Q|fy?̬d|om´svi3K``'ut`ʳϱw߾󮧈OժaX`$/VwWԭCSb+Ԍ˼ng[HPPg]sZ6r·-[#7 @y~Mg: )z>,=44Fzz:~C{/۶v5oז1RtU+W`^B^fM~e;իVNZ\D.0?SOҷ]ɟ'ZjUosٰqSFk̟ڵO~{!jo+3}rfk9zoӧ=ڸy35k(ADD.K`oع{IZ  ca¸L_)6Whي$&&?ҵk{5+U~gлiܰ!ɳO>IS?OLymZ3l5l@6mذiuvd}21y姟ؔ)th׎`>c à^+|rW_݆Z5k_7x(+To!"<>w$"BXX([~_ZhN*Uc B Xn]v_ι|ۼ ?NϾwE]vV}z ""Eg7  cK0S={ΝT1W'_ۑ^=Lw'Ұ~=Z6o~?Usݵ:t@zz: s7 B_+0<ujɹZ yoȑ#|o{5˗.&"sOOn:ٳ'o̜N-ػw/{gP*88j;_8Wι|ۼ b)S&SZU͚Ij y/ʺOڵy{]Y*"""%)H糫DX ?l-jHGDDDJ<<"""R)YTYH Zೀ'+Q#"#wGVHD|'iI8N=LrRB<[D0 !\E""=";d;!tc+Sv=6]."r:?/CxBi*V(߸$+؉?/ ]1ᰃ=Wu !ԩ߈?NHh8ᑥ3w) GS. Ng1MN'rU8qa vD'.t4qݤ$'`GD.i"%%ۭ+">hv0ID|bvxξ ]EC["r!te)|wzxDDD;-*#򈈈ȥwsx/gيU`ǎ]^,]m?ؙ#w6oȰ*{Fϋs-GfK.ZyyOh(,9gÊaX`^^>}Vz8 ^Gh8Ҿ][4+{EXDD|:;z69t0{ݻ*_܅r^\N|xV]j._aǂ %%Qj0,<4~'NL;pO7oU8~$e# EKvzt:Ç)ٗ_c.y17kU?ȂKٳoeء  ciӺ=ł%K꛵ѡm[m=M zH:kسw/*VdiԠ9*{"""r9)Gݛ2c֫GD0__ ¤qc_i)^73Q ]n'5_łaVCf9 oztc洩\n&=(-fўt'=O?MR=5Fo,& iffgEy)[)s9y`$C2CBb"=$cFn㤤d;ðz.\Ķ_3 K9xPSfy?'\ٲ,XGz 5--ϲ=Xr.:1cpF""9pOvRq]\NRIINnO#%9r{ vŦ-[e&oJX>diҷWOJGDS4}zwxڥ *'2\ =1fW6'qvLOf+[gc}OD 8H᝖ ЧwO WgEeiP))I^Ew:0Rp:!޳~Ysnf&k(2;wѶukʗ!((~-7pζ9W&S:4nԐ}zӳoNY+T~iwyY*|;{vǑٛ3_bHbJ;H;p\.=ii^پ=":p^_D=7jĊߡv|ɧ<[=jTFLt4o.vmZ&zk SL 66WNeȆMiѬ!l=AAA -73u,4r1xr?\'!! !`PdDr އ'ێeqvm|ŗ\.Ͼ_D-dp׾34o֔G|TlԈ2Ϟc(E^wRn|̐xmbRT2/>;5GQ#1{.}a\d\_SN[I9KOnULt43N'oJ: ]x@@ inO b2`XH\*2`6gI 9+f#00ӣfÂIZZyf6?? tgOVabX3.wi7 .әlX9z(W|͚9qI*{"r1{ faXn1!"b)Krש@Z^eOK0+p\gO 6MԔ<RB׺+Ir᛬4vaYr3˒}>ibOM%?vb Y`q g;GYPDDDrs iIA?pѤQC=uпwo"""y+%l<܋DG׮t3|wY:.W\c52);FDD$Һ̸\NRtHYZ""""*rv1⮆ X,Lb\i)In"?*-5R{<"r|%SSq'=79_n')_Uła;~%T.3""ٸ\NO_ $,0Ի#">qsx, VU .у8jN(]k#PDD|_Fa`Z&<2 3ٿ#"GDR=zI?vgæMݳ=&:V0 f͙K[W&O@^g^j׮@ʕYR `0Xj4ѫ6nd֕G20 7}0M:jqgn/WM'"""EϚsON_yV*W{m=o^ݻ;@||wem6 #J{ei԰7 m4]Ӂ)>}rλλyKLLe/_oǷ뿣n:;l(״o_bsdθ<Ē7[Əb ty9Y9Ys?tr^5]:ӻWO}QQQ囵w}qXd;g"""R.7ṅ!&:ڂmn:^Cvm)2O>MZZ|5jx&k_SjUԪY&N gz4M_> 4IM0xg୥?noglي$&&?>ǎgԻ.|J> )U ???Yƛ ߏmڰa& } ecm<6e ڵ#88?0W UDDD{x۰Ͽkyq+;~#G̈́rxgxMz3ǟ|J6:r|xc󫿈\.%O߻zym[a/2-Z45Mjj*|Mc_bb"O=<~䔔s]cEDDdCZx-}]:w"?4))DHp:>2Q,YZeX)Y,l3MQL.[΂EӰ`? dlj^>­wtWRJFK@?SGxq=,߸8f>Cʗ/wκv_DDDb)Krש@OÀ}6c& Ș3yx6kU͚z2<)),_o.#,<&3닪_PEDDpQdt:࣏4~G>d`{(ݻs0-/fEDD2Ul[LL9_k$L_ՌYL#)6ozj*""";-.YJjj*˖WF3r6+]'ͪw.] WpTc|Q󮿈\>|ӛ~}zx̞{/<أ.nsy?K i~}ڴjE r{yi+@<'~[߿#V@q8898\X).eGk>uG˸' 22#G(]:[ⱇfq sk'O.zUW^+"""%O#"""R\ r=϶_~!9%%N1p0tƲy' k:0x@+ͺ xᥗiѢyyr7ЄTž:u:>2Q,YZZ Jtvy'KxBBB>.;k))DHW\DDDg,X= 0Nrr2VP)6 c߸\9f,L}9f-]ouM7E|Baa^>[7ftyP\\ϯ~=o9"""r| ۇ}0mL"""ys[,\T, K-2dg(l6W,'LB[6&ӎ=>b!&WhIDAT{˪w.] wJT\ǎ*ݹU{IO>YѝC/Xԭ]yf/˽}۫˯ڵlޜRg˶ #G\j9?}Hp;2^;p8}ϼ"/M{ų~gnۿ^ơÇcؿW{6ZQBetϰy?~?~؊hټywcEDDqQ'-?~ɳޥ[3JѣNrx4ӏjUOѺe 1v|S?kt8DFFԗ9|KGruV IDATxw|߶dM zoJUXPW ڰ{+ PBB齷ydM`SM&;3眙L9eB!B!B!B!=Iu˪ZOuB!]E9ik[4Ϙ>}eVUTj[X!CbTUYY˿~Ҁj⟠Ǣ'pӧO?x[S]E]m-Fc#b5xB!9JFQGdpfddJ Z|Z=m<}z=lo:VWUv!Bt}ݐa:t(H46}̀ uuPt!Bstԣh {-~`ŴjgO>x"B!NIuuU*e/8p#h1EVTcGPMeB!8A)@=Po4ԷGkuU]B!8QZV;&ȌGe2ZB!N%h07e t;.kWYxLFUB!8ecVO>krL& vBqkz6sMN` iB!8]i0::ZjX xXB!8 n4GXB!8|T->GiIe!BT-W(-wBq:QHB!B!='* a#<$RO\,W]6?_Ny7Jޱ<ÝZɄ*U}rj1u2]|I)om5Kn*Ǟ"5-fzhݮ+Xxǿd !l+OXv7]啕8j_׬wgŪԐΌ)gsuٱs7uu8::׾hk[Hh7'sw9>i.ՙ/^3hj>K$CV=azDZ-3iAQ"BC1e2>m?!NGZLn_,yqP0vְtiϛ[Z9={Yj5锕UPYYsuq! w](-0OʁCTTc.FnYZ¨ay9CFViՕՕ88zɧuko^h5ZM$:*J0l >kQכ-ز=0.}!#F{hl nt:Ueh\zLR#  ~ :P<%K kϗ;}?tƎ &c]kG6_t<=>7+*Z K3b| oN=q^|夥gJ#“켴ys ?"/>xIFi akM#O+~=IZstMNhZ3_:NDH{[24~s.@?"󯍘L&ƎѪE%,|Q"ټm;j ΙAp dǮ>LgdPQYEXd:KYy9QX.**ȰpˬNWTURPXHxHU55V˥WP&4lPkN`pr"-3ioOOIMOks ?_N#*"ww[!⌧.=`$cn⢣0 6*֙ZkOE!8EjOUE!Orww!B؍xT*Fe-tBaN˹yHFEB!MNvkzB!ݰIcl4"т4i !#MZ(i:sPS[DΧȾh&Ik˯vR.^{M[3z0M'ggʤ yͶ(bXƆFΝ6/Hw7ieHv46q68HTDIh4՞[}}+V'F ?_ovA6Vq$4M-=3LN HU5hTj\\ DEףeS\hYBxybrChb"-'N$'@?g>Mv+8ח&[ @bҾV'CUUv~$6ו~O>K Ό:.ϳ3Id2ivv'R\R3.TUUS^Ye<޺W&.= '(Wc<-yQqsqg|~㕰g/GGKhhl=k牵S|%?ߣS_TDCCy/(.golrKGHp۵<VٷF ZMn^>E%jJJK"4ANLBV3x`[]p&$WYդua ,w :01NNhHN9DDh0GM;&SMm-Y92i(T*3[M&eZtJթ˝.QTbR*U5֡RW QTz{ݾnirsu!&:RH9t(K`˜Ѭkv%48*R`Ͼ={())˓'VHKg &* Wz^g$CCC#CrpwsG )y?.<$oؼueD1Řӟu:w:^ ?^~53MCC#v$u 彏?Pj~t5ӻ}MZ&q2aJVk5;xܼ|qwso\,^PL&9y*ˆ oլr͟8;:i?P4j5Grpu10vİv&H6)iTWWpu10rVjqD  d4WPF!24o/_Xb4C>q8:8m[[=>5$*B\ h4HN9DZf T*PX\rJKW7WtZϿؓLIIeھSG&"pj_jkkqpYR\R'uuuݷ2<;;:o7oO +'g3n?z˒ۺJK's:JJh45)h[; ֖udelpֿ͍;ˠsYIY 4gE(BPyI ϑlƶeȐx>1$O\l4 g}Mcxyz[Z;-a'Mı/ٵ;., pyعi3m2p x c꤉ܵLf3@8 П'J'_~͗~}ivMo/O^]ZǟW9S'sI$3+v F'N2ťŘ|A>q=~ *FQQ ёdd0[Q4n4gNj*6S;ӕ^s߁J%<$WVRYYEM]e߯/6n&> d,wլ/ '?r b00iY(-3]IN \:Va䰡$&理 R3pg566{ ۝_^^A^AeSZs[:NaQ1VjG>r N8KK`ܨ$LaJj2ul\[G;?_oLpKpŀ6>>ֶ* ɸ!M a߁JJ!zGjk(*)!8(2O_@tDnMOQQ ٹLjM0$~ ?T$&ADXe݄݉m)(++__bbHZKcGdoYV婪z0t =~(23Xsuui4iL!h33lwudzzWմ|VV^ꮡW`RRhѩYRYW[:,r=zyDn~;&rNu-;?5WVR@Ew)-#50 ' HȤR#YO9-hԖuؕDUU),<ܙ0jEEdd琝KIi;=|e f!Vctթsd輭2~-[u-]}888PTRBMmՖ&R?ogdRZVNaQ1zƢ-mmke'`rptLw/] \])*.(OqI)Eb<,s&Fp7JAs=?\ UݰL=ɲ)<""uJ{$8ޤd&$( RR0嬉Vx|aWLtmnaM;n M/|-))ůYsղ9ks[Nԉ#7<6oO`˜ ZN]kjR ETGGT*q2޶77ى57T9ӴZ>m^DdžMߖqh~c9pQh Qޝu2wt6׀c\فt\]y$t ys=?_gdCye1":Ԫcԙ}OKJ))-#2,NˁTJJ˨o\цl8~$;S /+Wi5bؿ_7 p>=GcxyѣPl{3I3ah"B' "",i_@H/sq6LM'Zc;uhtcR%&Ei8uNn=?<;f*oxngktl[=KqI)..\->v|YC}OO^mߵI{iG4{k۬8u4`!?-L.M7W3[\NM.i陨j<==iܷdjC VQVØL&|,}8@-B]ۚ4O_8K'>1$KFV??*v';&]ww7˚ua20ܑ9.6=a'>8G Hv.gnje28ϏoZ]cP^pwurз7n~fAGT'@w7W IHKёm.n~:JEye)ixxc^|j4dFRf]tpׇB?*9;vchvp: ٮgMm-k7l͍*'-888jpƤ(65GU=NG?_\)i*ee ߙ@IY7m`p&;ߙJG1,8y IDAT:]7x{zXnص ^G4 G?Q^-ىǨ3ŀB<=jxࠣW%p 6L#ĸgojj6(~}{ܢ9oTFё?<Ǎd2֪)wpѬ󨪮~ ## )Zı/(dwb"ÇfӋ-C?CwA1#UapvJŘC ¢b|0zT!퉍$ߏ 2}yGT*CRs(= Nzs8NN7[18p8x(*Ԫ[>v| AQ2Mʪ;דWPC~9{18) wWWw嶷|Z͘C 𧺦,Lҩ:;sގ:_o**+)Z\Wlq:t:KQA`mGT* * tlh^T*:R`J]zLel" ܼG q:i~+gű9{>[KN91dPC"cf5@uӧt Pk6iΓ7 !쉩EEQ+֚sqfIGӧjt&/ww7JKK)-/'8(P!Mjxҏz8y1JK!^,ho!Mjx|lԙQaT*3e}NVh B{ɍ9618:}B!:&MZ(.B؎MiҲ=N%OSB!D6 x<=)=5UUU Bq|lipZQSV^Nlty颢bJJ tEU%PUScu\za2NLji_ NNef9鉻;imNˁCN|.z:FTDBqƳɓB!zJg|B5<|&z7sk:^H!ǰI!BS¼V삢t|\Ba>%3+ 7WW"##xi 888PWW+oIqq cc`*3+fѼxqK|ɧO,MpgO?@VFO3WnF!#Gssguh4 _}U\!BtZuZ>?C`4w_;f4Æ +'/{ t&LҴOblOHປo&3+w 䪹lg⫯پ#SZZ^zU&!B̼hvM´)kgy{͵a#( q11\zlK@snڸQ#F+/Rx7y/Κ\*.Q,__K4j5}cnAU.!B؞kxMsÃڜ͡|wIMJBQ***9b8].ಫv:8c,#O@jS]:4M_%Bγy JHp0%%lشo+.777ܜ4ZZfw߲揵]WEQSS dqxRs"j4S!e}xz=:-FGsX>jɄZf)<\5 E"XZK׆tcb-L .XkUFW!.5p@Fߛgs 3p@ƍ_7r72HKOՕ{;xdb&3?'j5}!:*(v@ ~_ww2\ t:>yWFZz:W]{=nnyK2İuv[$ƌ?f;ƎnB!8u%TǟPpKᚫ{CRqpt@+0>ݍŏ>B\L 7^ysO#''-۶2aX>}{wnؾh4 ziYawEd2z BFMb59&LIL&,'~H⇏d̼h6^ysy+af_>_WIZgz⇏$3+"qkn*!/;!#ǣ9tz}G#/;\%Iy)/8f^iY#&92-MZÆ ailld$zv 99,yI&GtTdwEq066r i@w7h8{wnNE%RWWǪk8M}C1k⫯ۧg5LV VKtTT ҤjqqqÃcUpõ4aBwEa,qr6 rBOo_N 򲥖G&5 .sqcpwg mۏk#}x  ;;oO7~9sh4P]]ʹf倹.c9k |vI汣mش3rDssګY]n|ŗ̻FL<+_ޤ$;o>YM1b-UW? \)Ӹ`2xu%;{ w,Xd\w?+_Ǩ ʫIع2h4ҫ1 0y*=Tr~B@XSd0/LA^&7KS;gMZσ)m]\l,ٹvz#5;!̻~5j}WϽ|ؘh.9{jCyy׹oc*+/E1mյY~Z΃CP@ |17v;+w KY.}!U}< <پ#OO^y ޼<GGGw7v?~"7߇o?Nc+y6-}W ~aU~̫+3hR*@%('[)]{=jZyh/VTT;/OOJz} (B֑#AÏ?-?ٴsuӍ8wtܞ_ѻo[>zqf|^#G0L􉋳?ݞ:߇8'Q!RX__8;;wjҭZm1L8: Ga^{mw}}6|ʠVǝ񖥣+*]r0MMt: lhhd2a2N˻; i444tQĩ@QP#%Q uh vJEa^o쌫+ξy ,4ԲNg `(])h̙}1]p~OEqHVadXzl $<^ahZ z8T@ Pj1]ԞrMZBqZo^$JCC t][/Z-v@!Q8;;; QZ\a6^a8;;KGe!)ׇG!NFsMZJ+v_@ 8lj7R#>C[g+BѦ.}[=agky/+3*FMĴfqwP__d"~H^{-}aƟ= \+WZ/7/G?ɹ\Ĉ9‹yw0L̙{%Gk:y#[5 !¾tyqcǢjIx/{ t&LǷUsכKZz:#G '3+QqLZ6l$22ϚDMM 6_}ӦL`ߛ-lش oo !a&ij|}|ͥVQ.d6ǤZ`ZLJ+ɬ/ᯍ|%L:W^M7sˍ7z099\>j/Bث.+( x{1֮[όYpUXn]ez% 8fS`4ٺm;m܄'C : B!)Kܼ<~yT*FM&j5ӦN'窹W( X)--07؁dbY0~~~7u6gڵؙΒ,!ټeprr"7/Ľq7?zwL?ggg~OjcY&/?ˮG>YO4 󮜋NDŽSQQmۏ/4$qq,e&i9K!w6Xz YA^^>cFksyVC VO?ww7?q11e|}?/DdDZwށN/o\>_Я/#?&S&c2`!B!8Ũ|SKbdbէ,ݵq{ylB!J M5@yek8{Ğ-B!׳zFB!D78m1F(//B!t!BH!B&-!By$B!ݓG!vO!B= xBa$B!ݳ;KQ*B!ĉ葀GQELJ @䌇A!!t{( $SM J HL،1h!u%]ju?zĝ4667~Z=B!8)j EQ0L$7hXдp4Z-i)ɘLcy9Yw ]]IfVV/B-MZ}v*+(a丳/?-Wۧgؐ!,[|Tb y[!BUQLP՝xj5!aegacYKf7\;D-B;ЭMZŅxןNIG/xw3JF#L;o?._^2Vrkhll/7"6& f'///>?t^zu^y fprrjsy~Y+,~>sOӣm K9| HYy9w/ ϟŪcY,˿sy~ joYKS!8tkb2/RLVimjQ;p\3RwIDATKYV<^@xh(?o>r~i9OOOuӍY'XMS!8tsxTapq;jjptԷ9Ԉ˝NoA3m*w,\ē=/(U,HMm-`8&},(u$oNã(FBH"6A@AYPdEe Q}SQAaу (+*\@D!F$`$$~4Y:w]uu议/SOUjҸQR_ZlURb WmZ$8$ǭƍ}^05kTOm{X,VNQUx/dzjTeOBBnw +UГTy:)IV.Yٮw6l؉uKZ8irxPwl "rs~cXdXU-N?ánVZyO+7L$ԪP}y%$$HP\.8yU Z>ٔGUvmy<}sw=˥=麮aKLᷳ,"S=^?]q1}bb}YbvkYJIC`$IAAA>t-~N[m4}k$)Jf͞]w+'-]ϩzr<P45{͛k՚5RfV\~)==B}cBCC3I͙@q^^5xl6bjtjowr:+q:ڗ.bjf]Y(y`II~}-Iz`H%}5y?x?mDҪ;N &I];g կ[O#G{zյQqQDxW~Xux+OKRnnOtϰaJz-;[AA'-5fxu`kɢE~Vұc:_r_#AQ1&I*,/9:yX1Y=^ի* @ViR*s/-NZ.@B#UwJٗ&̙P!u*];*6_DDd*xćNίhSf7) ws9NnhJD(b T )r 6iv M*Igi@!]n\IzjvΩS5ֽe#Fi/\mK9#j&sZ4YY?t^7^{M$%vP7\+ϯ#Uk^QQ.]xG7}}ww֭IJdžO>v;˭_I>K NNQĎ=R o_i(8$! ?(Z'8$LҲX,r$INS_yU#+_ЧRsvJYqh\.U}&]TzG/)qjqM0e$iŗ[h|]JE32|ngيG=k^{uzt%̝@w쮕^NiIק>~Ο.;UwhuGϼs6>*ᑤNIVE|~IƥֳZvfL vBUN5kФ|nH+Vӧ&ݻ)$$Kkeggt*C{U  7Twh!*(8]*fzQn^=,NAi?[Ţ)õ|*nXZ#^nոQ#sUԬiS߿_6MwM%I6oVRbJgrݺDtUtb?nWƍ*XBK~jݲ W?۶y_P6-[X,EDF+'<wiq5q5z`JI.#stz<믪RZhQn"\.eFl6ޣ[W}*IM~Y>G)]XErr%Ia]V-]XiztDI0_bb(Z2>X,,Foiˢs~g(2&ֻX0}LINڵx뺆 $I[ҩSJ߻Wi{ծmK g'Ko׭U~8yU Z>ٔG+;` DFE+z~ػ!+ӡ"r:n~LߥxEFEWJ}S>NI>_P;{jSs']sr4gǩM֒΄]nSCv \%,L}zݩYhh>TQD=9wfd(i}ysZFYYқ_O:ァGUXXovPhh""+;` fSL\MNMNN2/;9].ՔfTl6%owuO6֘u}%Zgnw~*k UK=4v2T3wZ<Łs)~q@R-x<\.WٙwGHP@)9O?S㫽\_| .ҚmO׾'OSڵu);EGE]_PM7\Rb5lpU+~_x𔍔޴3%o'Zjyֆ7}

ٔ9nx_3-өΞu]?eP}!۲lszr\=̳ڻo_{aMs£>r=ھ i omziڰ-կWO%WVV/|FkWTf֑RԼuQ{y֮^?-yvO:&_ Z8t}}يG=k^{uzt(l6SojDJWt>oW-x:W>Ͽ} >ߧGF?xfӧN3hАaJ1J6o.^}GF?99:!ݮ5kijؠj'$ə'jk[9N$}6 :D'N I[N~ҫG5nHbb4CTfMխSG:yyoLh]ɦM嶛-өUj6h7 ̈̊UiIcũgn 9{CԦukƪ_jp~n1%<>ul6^-IRơG~HĎ$Xѭzt몝|KcMS}'44T!!!/Cxjܨ*aajִ߯ԡݭbج|MӧLRڞ=rVթ][_l٪i'hIR^(K~<t:UPXbW-5`нJJM֒CVݮ&{$8qB?H;v~'O(##C>>b  sZ:[SƏ<i&r^ԶxxV۸Kr P₆6MA;wֺ_Ct4;[ V+tqYuYEKgxvJE]lUK,l;6hɺUK-rr%IΛאs' 8@uфsʺ}߮!rjq8ۻN YjQF Wj:k۝&1\.IOu H:s}֦͛զu+IRbvvmsuLL,uYYNŅۅ$ԪP}]EZlYOЪe/M:z4[ j{[?mON/W=x<\N&3c'r[ǗM(3+K?Hk֮S>*?}gOzjxN_8*aajղ{aڷk'IUZZb:wXח[ұ/KAAA>t-~N[m4kN:ァGUXXovPhh""U-&Fy:ӧij Tz57/~}]jQQ:tgy<'ҲX,` @Ao-r9գk|**{rTn]X:$өz)ս'陿]cƏRmdѢRtf=5Gmni}.CʫQ_.}}zwt_u>͞7_YY^]#'fMK-ZNVݺu`lIfy>@#GtqԸQ#ի[W>,]/y^mܢ[۶) Ҍ?ٳfVz7_(lvrǽi*ӵ5= +Jmt{X, $]N@R_&-[,Y,б#;{'88DbWӻᷳVdZYMN󂓑-U2.Fx$)00PQQQWţ:VpI6S*}y{p)zRCZ߯\AYx0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<x0G<!yvqIr] IDATxwx[W-yx&f݆Jِ{eZV {QF@)e vx${H![؉Hvr<+ҽ{:+ @2aYNv +ΝqB`IIK٧M&7 +ӡVG]mmG-x炋.LRzI]I>r ᠠ:556noex:$Ot孑T!)O]íS.1bĔ%|V_WMLPpրIS^yxZnvN{6[\T𒽥%9-@&4>a>oa}wOOq^{r: ;`(4豇>RRI6IVI~rE6sӶ֖!f>2;RR[sۭEms{\fe\gZq跉*tZt'.[<5\Si/W1ݺq8;`vmzr:&.}Eghߺ <&ؗt 7$X`gfp,-&,}_9K%nNSte<H2%w]Ad24(:J#gOSl̠>[][.B#GdohF9d/}/ڽ}Wjmi죎駜e0n}<@_M?N~ڸyXkocޣ>~|`֮۠}Ba}wy_H_}Pz?JIJR4YzCe9ScSnmբ8l|/VY+IϗkDo5t9"S\{\_kk#O(+{{~ogi)Xm:|Aڒw\o֬UEe"#u' uIgfN6^ N WSe=s˝hzpҜˮRAz۔F ː$=otnܻ駜; bjEG贓! I˯ڪIstξm{=qۮIߩؘ֗N=tTKK~^\Y{|1fieQzj3vяzOTXT` ]#6ot:m>kf=JQzܨ+Vv <6U{c%;ꭜ#/] <sЌz?h,qI߾C%%e:#=Lϝ2o //RCCj Η$]۝ZbeYwk_t,[c=G2K+VeT|\\봷mww}Xd6k=bf>r:JMJ#P̠n/CO̟^9y$Iqqzd5diiu\vGf<$)V^OJ[rsUUU#It̅(>>cmrpݏUjr6lڬz-[R4sT26U&IN95cD=Kھ@y۶K>k}םVV[nՓz:9=n.IܶO2$I5ښ+I2i{cF)&&Z?/].WjJ8$M.v׬]'á&kʤ ߭rN˱ںN0m^{ץ^^rfmkkj@W$% C%Ikme/??>:K=}m[o N$lN:NCZm2ti:p4 ;,PNn>q?$I9=yw{8K 3v'ITW[k;sm<:t֬SϽ괓O$%*5%Y}6S{+tݭ+=-EK~]*٬!5i8-[J~fL 瞵my=me:叜 7; mںU\~ieggϽ&* @_PfYi|(s0ͻr6Ky6n4 s~K '3N1G!{].Ai&vb:C~|S{-SNԴϾVe>UC5rx"#]!4Z77^'tl}v?YRO_۶';oQL}jmmUm$6[̊ѢK.HIC=-Yr6aaڬ,f@57_-/~^\\G:KW^\C,8B&' HW3O V~F~<RIҴɓ811G[Z/dY5nli`LZ#KRCCO,v>Dsx6c7d#a0<0-ɤe`#rHk{ntx2Gw;|!-`x`x0|}In~<RUUlڰy5fHmڲU;nVfFK_VV %j)CA%ojnQAQ'&awty_ءx-] @r?48D[rspmUzj"ýM]<査ecknVttSUU2 ٭ӆ*AR}ۭI iϜNcc ;; SqIO&L&v@7cTQYr < ⢁n^)#5'xYeuO%0n^'xРƁnW8ٗ'_iܧuB!>)_ótjmQLOs?|U KcG/.)_)ip&mزU9yp84T3z_`Qk]AAJJLPzjjKNܢOFё:h=.ϗUTt3J_.AfI?Tƛ9mS5b2+$$X)Jж9N} 8mV}㤫mWzҚv:?'~ſ,iSt嗸_|!y,]refv> =˺ 5w{oI#I*+_\Vvz-Ky۶kS|l}^ph/K|U+*ի+u2}jjjJyH%)1>N!SO#ݏEb6+,$D!!2u}}vkn.ͦ*t 㤫p|d2ytxbJl6k ;*,*VYyf**+mVeeb6k1zצx>=e+"U!^^ťer1#fvrz\k*,*VSsB5jx"\JKIlV뀩_(%ivJJe(-)IQZQUU  ԘQ#4(*?v}6l*&өkd2lۻ]Ir8*(*lRzr2R:ONA:YޏNc}]߾CrrU__/?k7>J??>QSKKs}K|}z;ug^ťe٬! =s_ל.!dz{z{nk]۱ܬ01}UZ{]WgXRtw^^2-%hJ:qJ/_>HRXheiMڴyKך$IoA+WQҐ!Ӗ\>}1?{sOp3ձ-u,N<r±㟯hŪ,[;Pmss_UYUd9, o-[s44|XteWڪgXQY^ѣF޿v!-Iq O kUTbhxۜ. 9NpdVQIBVC6mVN6IҐxIRqo]`E% ):2BUv*v EEEjێ-_%IJ:XamJi)I[~^Rf*:*Rea/wױ57_[r.Cr򶩼JjhhTֺZgIRhHjj~v~Mm"##zSYy"Ԭ57BIC+0 @New=]euRKKR*>6FrOt>iuvoڢ:DG^KWViy^Z狀z}ZN]_uyIeJmښ#E1(ኆFWT)22RMMMZv**lޞqdrm+(TPpB~]~,ϑў|~ů9FS'tZNVUz$ieYV= ֝>\kiİ UWu%IwX q 6uZ?RxXƌtwHΘjG۰TWW&wWgepi=Ͽܧ$)6&Zk7nRiy2RT^^Ȉp+8(P67h$)fu'uIW}& Րxeoب2 OOSMmRUU(%iƏ%IZn+ipJJT][$R%ӦHnܤ hKNƎ!5V|A3$_y d a qGJYkkU[[0w{cFԶ{ ڴ%GeeHS^v546*#5ys;i:6(5i1kwG MM={GI|}z;ΰPIRHp=5,M+57O m]{kghZ^ڒ-y :kmmu*)+*:*RNi('0 }f[[sUZV.zGw> K\o퐄xWV*:2BǸn&ߴS#vg{sې$M4^^SO&yC?!&U|I5uc7]~tן_{!-u0Y^eeQXCě4~> mڴEkgXS[2'woɕ$M4[G^NvCYkiiZ~VgzxVRfFE }ÏQ[wH]FӮ+y9N|w(p:?Lf׾nn]OkxM?=AyoǓ㮯Z[szޅ!驝m9;yozu}N=BRPToؓ{;nCھ\o'|wh)K> )333nhY,}Wz׈˒_j}]%eS]j<}@7z ےߑ|;uzzݮwX:nу[sҢ]MYV R9N ؘA*.)բ~QB|joטûlc\ R/QPP d+=y׳u2ΞW~PxhVF UiYgQAŽ?M&UhӖEDi٪5Ţ;d26So󲊊QW']_546+<,L%2LHM鵝J~YVUAr8䴝zC۾А_^Ǹ-Qc@'{r܆J (ܳ {򹲷{2%IǹNOohj.42s֮l}P︱581A7o sP\l~W&WJP۰A7vbcOK-I:dIԯVhtiXFBCbumSYz⫟}t IDATwtN؉-I錡8& TE)&:z$$t*,,tMh-fL&0u$īIe劋Ѭ3: aV9`FPxxjjTYY EEFxed)!.V55e{d2i2ڜhǎmɕOǎ+QW]_d PQIB5scv@UR`SumjjcGrrQOϛf0mTШmp:=9T_丝9ybEV5seo< ~'aa:3yۺM~fM4aclN8(,쵝% ;UR[] stt:UTT"Iz7kj4>iV*<\i<2=<?g5P/ Ңn6 gy#t9t2L&@GGGGGGGGGGGGGGGGGGGGGG87L Ii8o> M^R֚59}Z}zh֭4HGy IҥW^Y8C~-{/+~٧- |v^o[${n{@ov;s=G^'//Ѓјѣ4<3StXo+O?i%oU RSRty竰PO>xe鱧v/2%D{~uEGGK/Wccu>0o=f^~yM?sUպu 닏yr?uZӏ۴)St)**yuЁ:ݏ#|M=3uWaXO?irIixx$@7p"##/X|]2;h TtTR9N${֙ZblOҰt NLԝM&_y\];N2p%%%jimPek켿`6lڨ뮹zφ:ο-7_o?IRN=$]{՟d%H)cJnVYV0QnnNΙs{V54vHW/FcSS"T__2bZ5qmQJrGulݖ'?YSN:QӧNvyc64&oȇk8|_$So]㧜xnz9i1[d\8gοbmٺUi iLOã(;VT,f{It_@pMG=:ϛqG~m`o!ުpɒ?NxNyj14qk~А Էym|Qft:&[^sI7-TqqI-\}tc}~ o/lo*{:Wǟa:އDZ|˲uu+!>߶!-,V[dv{ݑw1([uz-3kL=K;uE* @=8O4HƎEk>ҵ7ܨzM0A/>RgMM=SSrr?plmÁ}'*,*#O]pnkl5*m؈.COWe:(-s,fu@0LJjTvpARW'-L&L&E&hW.USggl QTloYZfY2 VkkkssL&0zvWyGrUDD=ޫc6^bXvu ;|r'CZ_K@xxxxxi\ $镖ۗJxNvr6WI؄!JNϔb!jq:r:ݼA u4clبkV(w!^p8TTMyv$ǫ`c^ <=+S~^}ukњ{JNJγ8],HYkhhiYqOR6mRjjnzuq8zᥗGR&L-7\xIg[*f u+$I^yf|> {1y[]t.NxRYNlQС5qxoe)]iyO+Kuq)sX9? )66F_{"##_I6ek!;UUYTXX2=C}[}x9b"uW\y}v>M2YO?$[njut9ommUCc>$565ux,B>++VUO֜$'{Tgmy]1͚0nr򔗿MN3&IAA3znݪY'?YSN:QӧNݭ:ꭾ: P}}Cc1[d\8gοbmٺUi iLOã(;VTf$!)KIlz'ez]{M6ePpISCZ;F&N?^xQ4dpE^_ٮ:NeVFzW묭5kCt:bolv]k׭ӰtcS&OݷMnK<_g$]4g>+mɑj眭Ǟ|JK~EZYk (koT^^Bv]zW|…гϿ:ya _kש\ϛXM:UUzU\\F-]\ ﲞ8-^JаTok^2LbAV?-!u[Z3gL׈zŗtwҋ.T@@{p 3h.8<3z7/ʔ\󑮽Fk҄ zg:gNGR%?v$ͽF=un3cIjjj'R]m5dkNA.[O>U;HvYӥv6VC}҆8475ju QZ(Y,>2ΛN=E'x@72LJjTvpARW'-L&L&E&hW.USSg4ud(<:FQrgifEDDl6+$Dw(4$D33/Ө&djmfY{S]|2=) 7jСU^yrmEY{S]쏼xv){x:a2dǟ蹧Ԅ%IQQJKM:ƒNgn]p8r8붺y>w@&8@ϽZZZ4Gu)jAt©iǟtZhǟ+9LeY]O:H/׫S/Ξsf:T<\-_ңv{Z|K]x80=5`? zN8XsڸqN8X \]bbb[nVZJ~'~5vh%'%y`|]kt(i͜>˲:zgӒCfi+oGEt7).6V[߿v{R{.Э7ݠ+ҧ=zx';soIwoץ .wڎ9[ӧNULLN:xiu֚N\q٥:9,CYԤxS{25tsםp/w1GkኊW^r{3x&]5Чkoc1u^ JJ?z؎Jͷt-suW*??_/`ֶo1Gk֭]7|٬ )a?W>ݵtƏcl6Ï?N9u taꏧ$]˭{\ssv׼"KSe!3mذѣ\VG:ct+{:ySڹ.O…гϿ:ya]?FV[v;456f إLݮdtkonIΞ^X|$'뚫{N'z;͜1ݣٹͽFM6U:̳T__{O<)iz'uɧjv: t5t:RnjUڰWl6ʫsxCaxt_O|gWZ@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxfIDATxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxjPDQH]$6v@9                    wseC:uCi^<'yٝ9$?>nZg?gs)x<潒$Yop%[e 鹾 First steps with Parlatype Gabor Karsay gabor.karsay@gmx.at First steps with Parlatype

Parlatype is an easy to use audio player to help you transcribing or annotating recorded speech. You need to run a word processor, e.g. LibreOffice, too. Launch Parlatype and open an audio file by clicking on the Open button in the upper left corner.

You can also drag and drop a file on Parlatype.

In the lower left corner there are the controls with a Play button which toggles between play and pause. Whenever you pause, Parlatype rewinds a few seconds to make it easier to resume. This can be changed in the .

The buttons Jump back and Jump forward in the lower left corner skip a few seconds back or ahead. The amount of time can be changed in the .

The view scrolls automatically so that the cursor is always visible. You can scroll manually by clicking on or dragging the scroll bar or using the standard keybindings. Automatic scrolling is stopped then.

To get back to the cursor’s position and let the view scroll automatically again, click on the menu button showing the time and then on Go to cursor. Clicking on the Play button also turns automatic scrolling on.

Clicking in the view with the right mouse button will put the cursor there, also holding the right mouse button pressed and moving it. The left mouse button is for .

The speed scale next to the volume button in the lower right corner lets you adjust the speed of playback. A value of 1 means normal speed, everything lower (down to 0.5) is slower, everything above is faster.

parlatype-3.0/help/C/index.page000066400000000000000000000016751414030451500164420ustar00rootroot00000000000000 Parlatype Parlatype Gabor Karsay gabor.karsay@gmx.at Parlatype is an easy to use media player. Its main purpose is to help you transcribing speech. <media type="image" mime="image/png" src="figures/parlatype-icon.png" its:translate="no" /> Parlatype

Parlatype is an easy to use media player. Its main purpose is to help you transcribing speech.

For a quick overview have a look at . Other topics are covered below.

Help topics
parlatype-3.0/help/C/keyboard-shortcuts.page000066400000000000000000000044221414030451500211600ustar00rootroot00000000000000 Standard keyboard shortcuts in Parlatype Gabor Karsay gabor.karsay@gmx.at Keyboard shortcuts

Keyboard shortcuts for Parlatype control, like Play, are described in . Shortcut keys for the window are listed below.

Standard Shortcut keys

To Do This

Press This

Show help

F1

Open file

Ctrlo

Play/Pause

CtrlSpace

Go to …

Ctrlg

Jump back

CtrlLeft

Jump forward

CtrlRight

Copy timestamp

Ctrlc

Insert timestamp

Ctrlv

Zoom in

Ctrl+

Zoom out

Ctrl-

Quit

Ctrlq

parlatype-3.0/help/C/legal.xml000066400000000000000000000004561414030451500162770ustar00rootroot00000000000000

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International license.

parlatype-3.0/help/C/media-keys.page000066400000000000000000000033601414030451500173540ustar00rootroot00000000000000 How to control Parlatype with media keys Gabor Karsay gabor.karsay@gmx.at Media keys

Parlatype’s basic functions can be controlled with so called media keys. Media keys are used system wide to control media players and they are working even if the media player is not in focus or in the background.

You can change the media keys in GNOME settings. You can use dedicated keys from a multimedia keyboard or use any other key or combination of keys.

This will affect other media players, e.g. Totem or Rhythmbox, as well.

Parlatype listens to these key strokes:

Play, Pause, Stop: Each of these keys toggles between playing and pause.

Rewind, Previous: Each of these keys will jump back the time you selected in Preferences.

Fast Forward, Next: Each of these keys will jump ahead the time you selected in Preferences.

For detailed instructions how to change keyboard shortcuts in GNOME see the official documentation.

If you are using a dedicated foot pedal, it should be possible to map the foot pedal signals to any of the keys. This is not well tested, however. Any feedback regarding foot pedals is welcome.

parlatype-3.0/help/C/preferences.page000066400000000000000000000111771414030451500176320ustar00rootroot00000000000000 How to customize Parlatype Gabor Karsay gabor.karsay@gmx.at Preferences

To open the preferences dialog click on the primary menu in the headerbar.

Preferences for the waveform

Resolution: The resolution of the waveform image is given in pixels per second, e.g. the default resolution of 100 means, that one second is shown with a width of 100 pixels.

Fixed vs. moving cursor: There are two modes, how to follow the cursor. On slower systems a moving cursor might be smoother.

Show time scale: Turn the time scale on or off.

Preferences for controls

Jump back on pause: Parlatype will rewind a few seconds on each pause, this way you can easier resume typing. Set this value to 0 if you don’t want this behaviour.

Jump back: Configures how many seconds to skip when the Jump back button is pressed.

Jump forward: Configures how many seconds to skip when the Jump forward button is pressed.

Pressing Play at the end of file – Replay file: Whether you want to repeat the file at the end. If not, it will replay a few seconds like on pause.

Pressing Play at the end of selection – Replay selection: Whether you want to repeat the selection. If not, it will replay a few seconds like on pause.

Preferences for timestamps

These settings affect how Parlatype formats timestamps. If you need a certain format in your transcription, you can adjust it here.

There are no settings for reading timestamps. Parlatype reads and accepts all of these formats.

Always show hours and leading zeroes: Whether to show a fixed number of digits. Changing any of these values will show an updated example in the Example section below.

Precision: Choose between full seconds, 10th seconds or 100th seconds.

Fraction separator: Choose between a point or a hyphen to separate fractions of a second.

Characters around timestamps: Choose between number signs, round brackets, square brackets or none.

Preferences for speech recognition

This tab is only visible, if speech recognition is enabled in Parlatype.

Here you can choose which language model to use. If you don’t have a language model yet, an assistant will guide you through the process of downloading it. You can have as many language models as you need, they can be added with the + button.

To select a model click on its radio button in the list. If you click just on the name, you can see the model’s basic parameters. You could even change them, but that’s not recommended.

The - button removes a model from the list. The model’s files however are not deleted, just the model entry is removed.

Preferences for the window

Remember size: On start-up Parlatype sets the window size to the size it had the last time.

Remember position: On start-up Parlatype can position its window where you had it when you closed Parlatype last time.

Start on top: This will put Parlatype on start-up on top of other windows. This might be useful if you are working with a maximized word processor and still want to see the Parlatype window.

Remember position and Start on top are not available on Wayland.

parlatype-3.0/help/C/selections.page000066400000000000000000000021431414030451500174720ustar00rootroot00000000000000 How to play and repeat a selection Gabor Karsay gabor.karsay@gmx.at Selections

You can select a piece of the waveform with the mouse. Next time you press Play, it will play the selection only. When it is finished and you press Play again, it will loop the selection once.

When in selection mode, you can not exit the selection anymore until you deselect it.

Selections can be made with the mouse (or pointer device) with a left click, holding the mouse button and dragging the pointer. If you click with Shift key pressed, an already existing selection will be enlarged to that point.

To deselect click once with the left button into the waveform. If the waveform has keyboard focus, you can press Escape.

parlatype-3.0/help/C/timestamps.page000066400000000000000000000034411414030451500175120ustar00rootroot00000000000000 Set and go to timestamps Gabor Karsay gabor.karsay@gmx.at Timestamps

Timestamps help you to navigate in your transcription.

Timestamps can look like this: #03:45.2#. You can select them with or without the number signs.

Parlatype can produce different timestamp formats, they can be set in .

Drag and drop

If you select the timestamp in the word processor, you can drag and drop it on the Parlatype window and it will go to that position. This is also possible the other way round: Drag the time label from Parlatype to a word processor and drop it there to insert it.

Using the clipboard

Clicking on the menu button that is showing the current time you can Copy time to clipboard or Go to time in clipboard.

This can also be done with keyboard shortcuts. First make sure, the Parlatype window has focus. With the key sequence Ctrlc the current timestamp is copied to the clipboard. Changing to the word processor you can insert now the timestamp in your transcription.

To go to a timestamp position, copy the timestamp in the word processor to the clipboard. Once you have changed focus to Parlatype press Ctrlv.

parlatype-3.0/help/LINGUAS000066400000000000000000000001641414030451500153300ustar00rootroot00000000000000# Please keep this list sorted alphabetically. cs de en_AU en_CA en_GB es fr fi he hu id it ku lt pl pt pt_BR ru sk parlatype-3.0/help/cs/000077500000000000000000000000001414030451500147075ustar00rootroot00000000000000parlatype-3.0/help/cs/cs.po000066400000000000000000001111031414030451500156510ustar00rootroot00000000000000# Czech translation for parlatype # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the parlatype package. # # FIRST AUTHOR , 2018. # Pavel Fric , 2018. msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2021-10-18 21:35+0200\n" "PO-Revision-Date: 2020-03-09 16:27+0000\n" "Last-Translator: fri \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" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #. Put one translator per line, in the form NAME , YEAR1, YEAR2 msgctxt "_" msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " fri https://launchpad.net/~pavelfric" #. (itstool) path: info/title #: C/index.page:7 msgctxt "text" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: info/title #: C/index.page:8 msgctxt "link" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: credit/name #: C/index.page:10 C/drag-and-drop.page:8 C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 C/preferences.page:8 C/selections.page:8 #: C/timestamps.page:8 C/asr.page:9 C/asr-setup.page:9 C/media-keys.page:8 msgid "Gabor Karsay" msgstr "Gabor Karsay" #. (itstool) path: info/desc #. (itstool) path: page/p #: C/index.page:14 C/index.page:23 msgid "" "Parlatype is an easy to use media player. Its main purpose is to " "help you transcribing speech." msgstr "" "Parlatype je snadno se používající přehrávač. Jeho hlavním účelem " "je pomoci vám s přepisem řeči." #. (itstool) path: page/title #: C/index.page:18 msgid "<_:media-1/> Parlatype" msgstr "<_:media-1/> Parlatype" #. (itstool) path: page/p #: C/index.page:24 msgid "" "For a quick overview have a look at . Other " "topics are covered below." msgstr "" "Na rychlý přehled se podívejte na . O dalších " "předmětech se pojednává níže." #. (itstool) path: section/title #: C/index.page:27 msgid "Help topics" msgstr "Předměty nápovědy" #. (itstool) path: info/desc #: C/drag-and-drop.page:6 msgid "Drop files, file names or timestamps on Parlatype" msgstr "Upusťte soubory, názvy souborů nebo časová razítka na Parlatype" #. (itstool) path: page/title #: C/drag-and-drop.page:14 msgid "Drag and Drop" msgstr "Tažení a upuštění" #. (itstool) path: page/p #: C/drag-and-drop.page:16 msgid "" "You can drop files, file names or timestamps on Parlatype’s " "window." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:19 msgid "" "Files: Drag and drop a file from a file manager, e.g. Files, on " "Parlatype and it will open that file." msgstr "" "Soubory: Táhněte a upusťte soubor ze správce, např. Soubory na " "Parlatype a program bude otevřen." #. (itstool) path: item/p #: C/drag-and-drop.page:20 msgid "" "File names: Select a file name from a word processor, e.g. LibreOffice, drop the selected text on Parlatype and it will open that " "file. This will always work if the selection contains a full path. If you " "select the name only, Parlatype will look up its full path in the " "list of recent files and open it if it can find it in that list." msgstr "" "Názvy souborů: Vyberte název souboru z textového editoru, např. " "LibreOffice, upusťte vybraný text na Parlatype a " "soubor bude otevřen. Vždy to bude pracovat, pokud výběr obsahuje celou " "cestu. Pokud vyberete jen název, Parlatype vyhledá jeho celou " "cestu vyhledá v seznamu naposledy otevřených souborů a otevře jej, pokud jej " "v tom seznamu bude moci najít." #. (itstool) path: item/p #: C/drag-and-drop.page:21 msgid "" "Timestamps: You can drag and drop timestamps to Parlatype. Select " "a timestamp from a word processor, e.g. LibreOffice, drop the " "selected text on Parlatype and it will jump to that position." msgstr "" #. (itstool) path: info/desc #. (itstool) path: page/title #: C/first-steps.page:6 C/first-steps.page:14 msgid "First steps with Parlatype" msgstr "První kroky s Parlatype" #. (itstool) path: page/p #: C/first-steps.page:16 msgid "" "Parlatype is an easy to use audio player to help you transcribing " "or annotating recorded speech. You need to run a word processor, e.g. " "LibreOffice, too. Launch Parlatype and open an audio " "file by clicking on the Open button in the upper left corner." msgstr "" "Parlatype je snadno se používající přehrávač zvuku, který vám má " "pomoci s přepisem nebo opoznámkováním nahrané řeči. Také musíte spustit " "textový editor, např. LibreOffice. Spusťte Parlatype a " "otevřete zvukový soubor klepnutím na tlačítko Otevřít v levém " "horním rohu." #. (itstool) path: note/p #: C/first-steps.page:19 msgid "You can also drag and drop a file on Parlatype." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:22 msgid "" "In the lower left corner there are the controls with a Play " "button which toggles between play and pause. Whenever you pause, " "Parlatype rewinds a few seconds to make it easier to resume. This " "can be changed in the ." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/first-steps.page:24 msgctxt "_" msgid "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" msgstr "" #. (itstool) path: page/p #: C/first-steps.page:26 msgid "" "The buttons Jump back and Jump forward in the lower " "left corner skip a few seconds back or ahead. The amount of time can be " "changed in the ." msgstr "" "Tlačítka Skočit zpět a Skočit vpřed v levém dolním " "rohu slouží k poposkočení o několik sekund dozadu nebo dopředu. Množství " "času se dá změnit v ." #. (itstool) path: page/p #: C/first-steps.page:28 msgid "" "The view scrolls automatically so that the cursor is always visible. You can " "scroll manually by clicking on or dragging the scroll bar or using the " "standard keybindings. Automatic scrolling is stopped then." msgstr "" "Pohled se posunuje automaticky, takže ukazatel je vždy vidět. Můžete záznam " "projíždět ručně klepnutím nebo tažením posuvníku nebo pomocí obvyklých " "klávesových zkratek. V takovém případě je automatický posun zastaven." #. (itstool) path: page/p #: C/first-steps.page:30 msgid "" "To get back to the cursor’s position and let the view scroll automatically " "again, click on the menu button showing the time and then on Go to " "cursor. Clicking on the Play button also turns automatic " "scrolling on." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:32 msgid "" "Clicking in the view with the right mouse button will put the cursor there, " "also holding the right mouse button pressed and moving it. The left mouse " "button is for ." msgstr "" "Klepnutí v pohledu pravým tlačítkem myši tam dá ukazatel, také podržení " "pravého tlačítka myši a pohybování jím. Levé tlačítko myši je pro ." #. (itstool) path: page/p #: C/first-steps.page:34 msgid "" "The speed scale next to the volume button in the lower " "right corner lets you adjust the speed of playback. A value of 1 means " "normal speed, everything lower (down to 0.5) is slower, everything above is " "faster." msgstr "" "Rychlostní stupnice vedle tlačítka pro hlasitost " "pravém dolním rohu dovoluje přizpůsobit rychlost přehrávání. Hodnota 1 " "znamená běžnou rychlost, vše pod touto hodnotou (dolů po 0,5) je pomalejší, " "vše nad je rychlejší." #. (itstool) path: info/desc #: C/keyboard-shortcuts.page:6 msgid "Standard keyboard shortcuts in Parlatype" msgstr "Běžné klávesové zkratky v Parlatype" #. (itstool) path: page/title #: C/keyboard-shortcuts.page:14 msgid "Keyboard shortcuts" msgstr "Klávesové zkratky" #. (itstool) path: page/p #: C/keyboard-shortcuts.page:16 msgid "" "Keyboard shortcuts for Parlatype control, like Play, " "are described in . Shortcut keys for the window are " "listed below." msgstr "" "Klávesové zkratky pro ovládání Parlatype, jako je Přehrát, jsou popsány v . Klávesy zkratek pro okno jsou " "uvedeny níže." #. (itstool) path: table/title #: C/keyboard-shortcuts.page:19 msgid "Standard Shortcut keys" msgstr "Běžné klávesové zkratky" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:22 msgid "To Do This" msgstr "Abyste to udělal" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:23 msgid "Press This" msgstr "Stiskněte toto" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:28 msgid "Show help" msgstr "Ukázat nápovědu" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:29 msgid "F1" msgstr "F1" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:32 msgid "Open file" msgstr "Open file" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:33 msgid "Ctrlo" msgstr "Ctrlo" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:36 msgid "Play/Pause" msgstr "Přehrát/Pozastavit" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:37 msgid "CtrlSpace" msgstr "CtrlSpace" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:40 msgid "Go to …" msgstr "Jít na…" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:41 msgid "Ctrlg" msgstr "Ctrlg" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:44 msgid "Jump back" msgstr "Skočit zpět" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:45 msgid "CtrlLeft" msgstr "CtrlLeft" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:48 msgid "Jump forward" msgstr "Skočit vpřed" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:49 msgid "CtrlRight" msgstr "CtrlRight" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:52 msgid "Copy timestamp" msgstr "Kopírovat časové razítko" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:53 msgid "Ctrlc" msgstr "Ctrlc" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:56 msgid "Insert timestamp" msgstr "Vložit časové razítko" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:57 msgid "Ctrlv" msgstr "Ctrlv" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:60 msgid "Zoom in" msgstr "Přiblížit" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:61 msgid "Ctrl+" msgstr "Ctrl+" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:64 msgid "Zoom out" msgstr "Oddálit" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:65 msgid "Ctrl-" msgstr "Ctrl-" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:68 msgid "Quit" msgstr "Ukončit" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:69 msgid "Ctrlq" msgstr "Ctrlq" #. (itstool) path: p/link #: C/legal.xml:5 msgid "Creative Commons Attribution-ShareAlike 4.0 International" msgstr "Creative Commons Attribution-ShareAlike 4.0 International" #. (itstool) path: license/p #: C/legal.xml:4 msgid "This work is licensed under a <_:link-1/> license." msgstr "Tato práce je licencována pod licencí <_:link-1/>." #. (itstool) path: info/desc #: C/preferences.page:6 msgid "How to customize Parlatype" msgstr "Jak přizpůsobit Parlatype" #. (itstool) path: page/title #: C/preferences.page:14 msgid "Preferences" msgstr "Nastavení" #. (itstool) path: page/p #: C/preferences.page:16 msgid "" "To open the preferences dialog click on the primary menu in the headerbar." msgstr "" #. (itstool) path: section/title #: C/preferences.page:21 msgid "Preferences for the waveform" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:23 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:26 msgid "" "Resolution: The resolution of the waveform image is given in pixels per " "second, e.g. the default resolution of 100 means, that one second is shown " "with a width of 100 pixels." msgstr "" "Rozlišení: Rozlišení obrázku křivky (tvaru vlny) se udává v obrazových " "bodech za sekundu, např. výchozí rozlišení 100 znamená, že jedna sekunda je " "ukázána s šířkou 100 obrazových bodů." #. (itstool) path: item/p #: C/preferences.page:27 msgid "" "Fixed vs. moving cursor: There are two modes, how to follow the cursor. On " "slower systems a moving cursor might be smoother." msgstr "" "Pevný proti pohybujícímu se ukazateli: Jsou dva režimy, jak následovat " "ukazatel. Na pomalejších systémech může být pohybující se ukazatel " "plynulejší." #. (itstool) path: item/p #: C/preferences.page:28 msgid "Show time scale: Turn the time scale on or off." msgstr "Ukázat časovou stupnici. Zapnout nebo vypnout časovou stupnici." #. (itstool) path: section/title #: C/preferences.page:33 msgid "Preferences for controls" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:35 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:38 msgid "" "Jump back on pause: Parlatype will rewind a few seconds on each " "pause, this way you can easier resume typing. Set this value to 0 if you " "don’t want this behaviour." msgstr "" #. (itstool) path: item/p #: C/preferences.page:39 msgid "" "Jump back: Configures how many seconds to skip when the Jump back " "button is pressed." msgstr "" "Skočit zpět: Nastaví, o kolik sekund poskočit, když je stisknuto tlačítko " "Skočit zpět." #. (itstool) path: item/p #: C/preferences.page:40 msgid "" "Jump forward: Configures how many seconds to skip when the Jump " "forward button is pressed." msgstr "" "Skočit vpřed: Nastaví, o kolik sekund poskočit, když je stisknuto tlačítko " "Skočit vpřed." #. (itstool) path: item/p #: C/preferences.page:41 msgid "" "Pressing Play at the end of file – Replay file: Whether you want " "to repeat the file at the end. If not, it will replay a few seconds like on " "pause." msgstr "" #. (itstool) path: item/p #: C/preferences.page:42 msgid "" "Pressing Play at the end of selection – Replay selection: Whether " "you want to repeat the selection. If not, it will replay a few seconds like " "on pause." msgstr "" #. (itstool) path: section/title #: C/preferences.page:47 msgid "Preferences for timestamps" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:49 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" msgstr "" #. (itstool) path: section/p #: C/preferences.page:51 msgid "" "These settings affect how Parlatype formats timestamps. If you " "need a certain format in your transcription, you can adjust it here." msgstr "" #. (itstool) path: note/p #: C/preferences.page:52 msgid "" "There are no settings for reading timestamps. Parlatype " "reads and accepts all of these formats." msgstr "" #. (itstool) path: item/p #: C/preferences.page:54 msgid "" "Always show hours and leading zeroes: Whether to show a fixed number of " "digits. Changing any of these values will show an updated example in the " "Example section below." msgstr "" #. (itstool) path: item/p #: C/preferences.page:55 msgid "Precision: Choose between full seconds, 10th seconds or 100th seconds." msgstr "" #. (itstool) path: item/p #: C/preferences.page:56 msgid "" "Fraction separator: Choose between a point or a hyphen to separate fractions " "of a second." msgstr "" #. (itstool) path: item/p #: C/preferences.page:57 msgid "" "Characters around timestamps: Choose between number signs, round brackets, " "square brackets or none." msgstr "" #. (itstool) path: section/title #: C/preferences.page:62 msgid "Preferences for speech recognition" msgstr "" #. (itstool) path: note/p #: C/preferences.page:65 msgid "" "This tab is only visible, if speech recognition is enabled in Parlatype." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:68 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" msgstr "" #. (itstool) path: section/p #: C/preferences.page:70 msgid "" "Here you can choose which language model to use. If you don’t have a " "language model yet, an assistant will guide you through the process of " "downloading it. You can have as many language models as you need, they can " "be added with the + button." msgstr "" #. (itstool) path: section/p #: C/preferences.page:72 msgid "" "To select a model click on its radio button in the list. If you click just " "on the name, you can see the model’s basic parameters. You could even change " "them, but that’s not recommended." msgstr "" #. (itstool) path: section/p #: C/preferences.page:74 msgid "" "The - button removes a model from the list. The model’s files " "however are not deleted, just the model entry is removed." msgstr "" #. (itstool) path: section/title #: C/preferences.page:80 msgid "Preferences for the window" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:82 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:85 msgid "" "Remember size: On start-up Parlatype sets the window size to the " "size it had the last time." msgstr "" "Zapamatovat si velikost: Při spuštění Parlatype nastaví velikost " "okna na velikost, kterou mělo naposledy." #. (itstool) path: item/p #: C/preferences.page:86 msgid "" "Remember position: On start-up Parlatype can position its window " "where you had it when you closed Parlatype last time." msgstr "" "Zapamatovat si polohu: Při spuštění Parlatype může své okno " "umístit tam, kde bylo, když byl Parlatype naposledy zavřen." #. (itstool) path: item/p #: C/preferences.page:87 msgid "" "Start on top: This will put Parlatype on start-up on top of other " "windows. This might be useful if you are working with a maximized word " "processor and still want to see the Parlatype window." msgstr "" "Začít nahoře: Toto dá Parlatype při spuštění nad ostatní okna. " "Může to být užitečné, pokud pracujete se zvětšeným textovým editorem a " "přitom stále chcete vidět okno Parlatype." #. (itstool) path: note/p #: C/preferences.page:91 msgid "" "Remember position and Start on top are not available " "on Wayland." msgstr "" "Zapamatovat si polohu a Začít nahoře nejsou dostupné " "na Wayland(u)." #. (itstool) path: info/desc #: C/selections.page:6 msgid "How to play and repeat a selection" msgstr "Jak přehrávat a opakovat výběr" #. (itstool) path: page/title #: C/selections.page:14 msgid "Selections" msgstr "Výběry" #. (itstool) path: page/p #: C/selections.page:16 msgid "" "You can select a piece of the waveform with the mouse. Next time you press " "Play, it will play the selection only. When it is finished and " "you press Play again, it will loop the selection once." msgstr "" "Část křivky (časového průběhu signálu znázorněného tvarem vlny) můžete " "vybrat myší. Když příště stisknete Přehrát, přehraje se pouze " "výběr. Když je hotovo a opět stisknete Přehrát, přehraje se výběr " "ve smyčce jednou." #. (itstool) path: note/p #: C/selections.page:18 msgid "" "When in selection mode, you can not exit the selection anymore until you " "deselect it." msgstr "V režimu výběru nemůžete výběr opustit, dokud jeho výběr nezrušíte." #. (itstool) path: page/p #: C/selections.page:20 msgid "" "Selections can be made with the mouse (or pointer device) with a left click, " "holding the mouse button and dragging the pointer. If you click with " "Shift key pressed, an already existing selection will be enlarged " "to that point." msgstr "" "Výběry se dají dělat myší (nebo ukazovacím zařízením) stisknutím levého " "tlačítka myši (levým klepnutím), podržením tlačítka myši a tažením " "ukazovátka. Pokud klepnete a bude stisknuta klávesa Shift, již " "existující výběr bude rozšířen k tomu bodu." #. (itstool) path: page/p #: C/selections.page:22 msgid "" "To deselect click once with the left button into the waveform. If the " "waveform has keyboard focus, you can press Escape." msgstr "" "Pro zrušení výběru klepněte jednou levým tlačítkem myši na křivku. Pokud má " "křivka zaměření klávesnicí, můžete stisknout Esc." #. (itstool) path: info/desc #: C/timestamps.page:6 msgid "Set and go to timestamps" msgstr "Nastavit a jít na časová razítka" #. (itstool) path: page/title #: C/timestamps.page:14 msgid "Timestamps" msgstr "Časová razítka" #. (itstool) path: page/p #: C/timestamps.page:16 msgid "Timestamps help you to navigate in your transcription." msgstr "Časová razítka vám pomáhají s pohybem v přepisu." #. (itstool) path: note/p #: C/timestamps.page:19 msgid "" "Timestamps can look like this: #03:45.2#. You can select them with or " "without the number signs." msgstr "" #. (itstool) path: page/p #: C/timestamps.page:22 msgid "" "Parlatype can produce different timestamp formats, they can be " "set in ." msgstr "" #. (itstool) path: section/title #: C/timestamps.page:25 msgid "Drag and drop" msgstr "Tažení a upuštění" #. (itstool) path: section/p #: C/timestamps.page:27 msgid "" "If you select the timestamp in the word processor, you can drag and drop it " "on the Parlatype window and it will go to that position. This is " "also possible the other way round: Drag the time label from Parlatype to a word processor and drop it there to insert it." msgstr "" "Pokud časové razítko vyberete v textovém editoru, můžete je táhnout a " "upustit na okno Parlatype a ono půjde na tu polohu. Toto je možné " "provést i jiným způsobem: Táhněte časové razítko z Parlatype na " "textový editor a tam je pro jeho vložení upusťte." #. (itstool) path: section/title #: C/timestamps.page:31 msgid "Using the clipboard" msgstr "Používání schránky" #. (itstool) path: section/p #: C/timestamps.page:33 msgid "" "Clicking on the menu button that is showing the current time you can " "Copy time to clipboard or Go to time in clipboard." msgstr "" #. (itstool) path: section/p #: C/timestamps.page:35 msgid "" "This can also be done with keyboard shortcuts. First make sure, the " "Parlatype window has focus. With the key sequence " "Ctrlc the current timestamp is copied " "to the clipboard. Changing to the word processor you can insert now the " "timestamp in your transcription." msgstr "" #. (itstool) path: section/p #: C/timestamps.page:36 msgid "" "To go to a timestamp position, copy the timestamp in the word processor to " "the clipboard. Once you have changed focus to Parlatype press " "Ctrlv." msgstr "" "Pro přechod na polohu časového razítka časové razítko v textovém editoru " "zkopírujte do schránky. Po změně zaměření na Parlatype stiskněte " "Ctrlv." #. (itstool) path: info/desc #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "Nechat Parlatype udělat část práce na přepisu" #. (itstool) path: page/title #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "Automatické rozpoznávání řeči" #. (itstool) path: page/p #: C/asr.page:17 msgid "" "Parlatype offers automatic speech recognition that is done on " "your computer. No data is sent over the network." msgstr "" #. (itstool) path: note/p #: C/asr.page:20 msgid "" "Parlatype must have been built with PocketSphinx or " "Mozilla DeepSpeech. Please note that those libraries might be not " "available on your platform." msgstr "" #. (itstool) path: note/p #: C/asr.page:25 msgid "" "Parlatype has no built-in text editor. You need the Parlatype " "Extension for LibreOffice to output recognized text." msgstr "" #. (itstool) path: section/title #: C/asr.page:30 msgid "Start speech recognition" msgstr "" #. (itstool) path: section/p #: C/asr.page:32 msgid "" "Select a language model in the Preferences Dialog, Speech recognition tab, see for more details." msgstr "" #. (itstool) path: section/p #: C/asr.page:35 msgid "" "Open the primary menu and click on Automatic transcription. This " "is only available, if you have setup and chosen a language model." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr.page:38 msgctxt "_" msgid "" "external ref='figures/asr-switch-to-asr.png' " "md5='91dc6bffa3b8a3342889d9bfccabc3c8'" msgstr "" #. (itstool) path: section/p #: C/asr.page:40 msgid "" "Now press Play in Parlatype and the recognized speech " "will be printed in LibreOffice, if the Parlatype Extension is " "installed. Output is silent because decoding speed is dependent on your " "machine and may be slower or faster than real-time speech." msgstr "" #. (itstool) path: section/p #: C/asr.page:45 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #: C/asr.page:47 msgid "" "Accuracy depends on many factors like quality of the recording, " "background noise, speaker’s dialect or pronunciation and the speech model " "used. For general transcription you can expect an word error rate between 10 " "and 50 %. Alas this means that in some cases manual transcription from the " "start will be faster than automatic transcription and the following " "correction process." msgstr "" #. (itstool) path: info/desc #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:17 msgid "" "For speech recognition you need a language model: one or more files trained " "with real speech samples. Parlatype supports language models made " "for CMU Sphinx and Mozilla DeepSpeech and ships a couple of language " "model configurations." msgstr "" #. (itstool) path: note/p #: C/asr-setup.page:22 msgid "" "A language model configuration contains meta data describing the " "language model: A name that you can change, the language it was made for, " "speech recognition engine, publisher, license etc. It has a (third party) " "link, where you can download the files. Part of the configuration is the " "base folder, where you have saved the model. Additionally it contains " "various parameters for the plugin which are not shown." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:29 msgid "" "Open the Preferences Dialog and click on the Speech Recognition " "tab. Initially there are no configurations available, click on the Add " "a configuration button." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:33 msgctxt "_" msgid "" "external ref='figures/asr-setup-initial.png' " "md5='31773b99dcbb1ee84e59e119a0bd35c6'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:36 msgid "download" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:37 msgid "unavailable" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:35 msgid "" "If your installation has CMU Sphinx or Mozilla DeepSpeech enabled, you will " "see configurations with a <_:media-1/> symbol. Otherwise you will see only " "configurations with a <_:media-2/> symbol." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:39 msgctxt "_" msgid "" "external ref='figures/asr-setup-downloadable.png' " "md5='6e00b08a60952e8f408bec4a024be2e5'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:42 msgid "settings" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:41 msgid "" "Select a configuration and click on the <_:media-1/> button. There is a " "short description of the model and where you can download it. After " "downloading, you have to set the folder where your download resides. You can " "also change the Display name." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:47 msgctxt "_" msgid "" "external ref='figures/asr-setup-details.png' " "md5='3273410dfb31da8518a64d28af0da7b1'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:50 msgid "selected" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:49 msgid "" "An installed model has no symbol next to it. Double click on the model and " "it will be selected for speech recognition, a <_:media-1/> symbol appears." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:53 msgid "" "Shipped configurations might get obsolete over time. Therefore you can " "import a configuration with the + button. Configurations are text " "files with an .asr ending." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:57 msgid "" "With the - button you can remove a configuration. This will never " "remove downloaded models, only the configuration file." msgstr "" #. (itstool) path: info/desc #: C/media-keys.page:6 msgid "How to control Parlatype with media keys" msgstr "Jak Parlatype ovládat pomocí multimediálních kláves" #. (itstool) path: page/title #: C/media-keys.page:14 msgid "Media keys" msgstr "Multimediální klávesy" #. (itstool) path: page/p #: C/media-keys.page:16 msgid "" "Parlatype’s basic functions can be controlled with so called " "media keys. Media keys are used system wide to control media " "players and they are working even if the media player is not in focus or in " "the background." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:18 msgid "" "You can change the media keys in GNOME settings. You can use dedicated keys " "from a multimedia keyboard or use any other key or combination of keys." msgstr "" "Multimediální klávesy můžete změnit v nastavení GNOME. Můžete použít " "stanovené klávesy z multimediální klávesnice nebo použít jinou klávesu nebo " "spojení kláves." #. (itstool) path: note/p #: C/media-keys.page:21 msgid "" "This will affect other media players, e.g. Totem or " "Rhythmbox, as well." msgstr "" "Toto ovlivní i ostatní přehrávače, např. Totem nebo " "Rhythmbox." #. (itstool) path: page/p #: C/media-keys.page:24 msgid "Parlatype listens to these key strokes:" msgstr "Parlatype naslouchá těmto klávesovým tahům:" #. (itstool) path: item/p #: C/media-keys.page:26 msgid "" "Play, Pause, Stop: Each of these keys " "toggles between playing and pause." msgstr "" "Přehrát, Pozastavit, Zastavit: Každá z " "těchto kláves přepíná mezi přehrávání a pozastavením." #. (itstool) path: item/p #: C/media-keys.page:27 msgid "" "Rewind, Previous: Each of these keys will jump back " "the time you selected in Preferences." msgstr "" "Přetočit, Předchozí: Každá z těchto kláves provede " "skok zpět o dobu vybranou v Nastavení." #. (itstool) path: item/p #: C/media-keys.page:28 msgid "" "Fast Forward, Next: Each of these keys will jump ahead " "the time you selected in Preferences." msgstr "" "Rychle vpřed, Další: Každá z těchto kláves provede " "skok vpřed o dobu vybranou v Nastavení." #. (itstool) path: note/p #: C/media-keys.page:32 msgid "" "For detailed instructions how to change keyboard shortcuts in GNOME see the " "official " "documentation." msgstr "" "Podrobné pokyny, jak v GNOME měnit klávesové zkratky, naleznete v oficiální dokumentaci." #. (itstool) path: page/p #: C/media-keys.page:35 msgid "" "If you are using a dedicated foot pedal, it should be possible to map the " "foot pedal signals to any of the keys. This is not well tested, however. Any " "feedback regarding foot pedals is welcome." msgstr "" "Pokud používáte vyhrazený nožní pedál, mělo by být možné přiřadit signály " "nožního pedálu kterékoli z kláves. Není to ale dobře vyzkoušeno. Je vítána " "jakákoli zpětná vazba týkající se nožních pedálů." parlatype-3.0/help/de/000077500000000000000000000000001414030451500146725ustar00rootroot00000000000000parlatype-3.0/help/de/de.po000066400000000000000000001552061414030451500156330ustar00rootroot00000000000000# German translations for parlatype help. # Copyright (C) 2016 Gabor Karsay # This file is distributed under the same license as the parlatype package. # Gabor Karsay , 2016-2021. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2021-10-18 21:35+0200\n" "PO-Revision-Date: 2021-10-18 21:35+0200\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Deutsch <>\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Gtranslator 3.38.0\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #. Put one translator per line, in the form NAME , YEAR1, YEAR2 msgctxt "_" msgid "translator-credits" msgstr "" "Gabor Karsay \n" "\n" "Launchpad Contributions:\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " Gabor Karsay https://launchpad.net/~gabor-karsay-i" #. (itstool) path: info/title #: C/index.page:7 msgctxt "text" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: info/title #: C/index.page:8 msgctxt "link" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: credit/name #: C/index.page:10 C/drag-and-drop.page:8 C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 C/preferences.page:8 C/selections.page:8 #: C/timestamps.page:8 C/asr.page:9 C/asr-setup.page:9 C/media-keys.page:8 msgid "Gabor Karsay" msgstr "Gabor Karsay" #. (itstool) path: info/desc #. (itstool) path: page/p #: C/index.page:14 C/index.page:23 msgid "" "Parlatype is an easy to use media player. Its main purpose is to " "help you transcribing speech." msgstr "" "Parlatype ist ein einfach zu bedienender Medienspieler. Er dient " "hauptsächlich dazu, Sie beim Transkribieren von gesprochener Sprache zu " "unterstützen." #. (itstool) path: page/title #: C/index.page:18 msgid "<_:media-1/> Parlatype" msgstr "<_:media-1/> Parlatype" #. (itstool) path: page/p #: C/index.page:24 msgid "" "For a quick overview have a look at . Other " "topics are covered below." msgstr "" "Für einen schnellen Überblick gehen Sie zu . " "Andere Themen sind weiter unten behandelt." #. (itstool) path: section/title #: C/index.page:27 msgid "Help topics" msgstr "Hilfethemen" #. (itstool) path: info/desc #: C/drag-and-drop.page:6 msgid "Drop files, file names or timestamps on Parlatype" msgstr "Dateien, Dateinamen oder Zeitstempel auf Parlatype ablegen" #. (itstool) path: page/title #: C/drag-and-drop.page:14 msgid "Drag and Drop" msgstr "Ziehen und ablegen" #. (itstool) path: page/p #: C/drag-and-drop.page:16 msgid "" "You can drop files, file names or timestamps on Parlatype’s " "window." msgstr "" "Sie können Dateien, Dateinamen oder Zeitstempel auf dem Parlatype-" "Fenster ablegen." #. (itstool) path: item/p #: C/drag-and-drop.page:19 msgid "" "Files: Drag and drop a file from a file manager, e.g. Files, on " "Parlatype and it will open that file." msgstr "" "Dateien: Ziehen Sie eine Datei aus einem Dateimanager, wie zum Beispiel " "Dateien, auf das Parlatype-Fenster und Parlatype wird diese Datei öffnen." #. (itstool) path: item/p #: C/drag-and-drop.page:20 msgid "" "File names: Select a file name from a word processor, e.g. LibreOffice, drop the selected text on Parlatype and it will open that " "file. This will always work if the selection contains a full path. If you " "select the name only, Parlatype will look up its full path in the " "list of recent files and open it if it can find it in that list." msgstr "" "Dateinamen: Markieren Sie einen Dateinamen in Ihrer Textverarbeitung, wie " "zum Beispiel LibreOffice, ziehen Sie ihn ins Parlatype-" "Fenster, und die Datei wird geöffnet. Das funktioniert immer, wenn die " "Markierung einen vollständigen Dateipfad enthält. Wenn Sie nur einen " "Dateinamen markiert haben, vergleicht Parlatype diesen Namen mit " "den Einträgen in der Liste der zuletzt benützten Dateien und wenn es dort " "den vollen Pfad findet, öffnet es die Datei." #. (itstool) path: item/p #: C/drag-and-drop.page:21 msgid "" "Timestamps: You can drag and drop timestamps to Parlatype. Select " "a timestamp from a word processor, e.g. LibreOffice, drop the " "selected text on Parlatype and it will jump to that position." msgstr "" "Zeitstempel: Sie können Zeitstempel auf Parlatype ziehen und " "ablegen. Markieren Sie einen Zeitstempel in Ihrer Textverarbeitung, wie zum " "Beispiel LibreOffice, ziehen Sie ihn ins Parlatype-" "Fenster und das Programm springt zur Position des Zeitstempels." #. (itstool) path: info/desc #. (itstool) path: page/title #: C/first-steps.page:6 C/first-steps.page:14 msgid "First steps with Parlatype" msgstr "Erste Schritte mit Parlatype" #. (itstool) path: page/p #: C/first-steps.page:16 msgid "" "Parlatype is an easy to use audio player to help you transcribing " "or annotating recorded speech. You need to run a word processor, e.g. " "LibreOffice, too. Launch Parlatype and open an audio " "file by clicking on the Open button in the upper left corner." msgstr "" "Parlatype ist einfacher Audiospieler, der Ihnen hilft, " "aufgenommene Sprache zu transkribieren oder zu kommentieren. Sie brauchen " "dazu auch eine Textverarbeitung wie zum Beispiel LibreOffice. " "Starten Sie Parlatype und öffnen Sie eine Audiodatei, indem Sie " "auf den Öffnen-Knopf in der linken oberen Ecke drücken." #. (itstool) path: note/p #: C/first-steps.page:19 msgid "You can also drag and drop a file on Parlatype." msgstr "Sie können auch eine Datei ins Parlatype-Fenster ziehen." #. (itstool) path: page/p #: C/first-steps.page:22 msgid "" "In the lower left corner there are the controls with a Play " "button which toggles between play and pause. Whenever you pause, " "Parlatype rewinds a few seconds to make it easier to resume. This " "can be changed in the ." msgstr "" "In der linken unteren Ecke befindet sich die Steuerung mit einem " "Wiedergabe-Knopf, der zwischen Wiedergabe und Pause hin und her " "schaltet. Immer, wenn Sie die Wiedergabe unterbrechen, spult Parlatype einige Sekunden zurück, damit Sie besser in den Text zurückfinden. Das " "kann in den geändert werden." #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/first-steps.page:24 msgctxt "_" msgid "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" msgstr "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" #. (itstool) path: page/p #: C/first-steps.page:26 msgid "" "The buttons Jump back and Jump forward in the lower " "left corner skip a few seconds back or ahead. The amount of time can be " "changed in the ." msgstr "" "Die Knöpfe Zurückspringen und Vorwärts springen in der " "linken unteren Ecke springen einige Sekunden zurück oder vorwärts. Wie viel, " "kann in den geändert werden." #. (itstool) path: page/p #: C/first-steps.page:28 msgid "" "The view scrolls automatically so that the cursor is always visible. You can " "scroll manually by clicking on or dragging the scroll bar or using the " "standard keybindings. Automatic scrolling is stopped then." msgstr "" "Die Anzeigeausschnitt verschiebt sich automatisch mit, sodass der Cursor " "immer sichtbar bleibt. Sie können den Ausschnitt selber verschieben, indem " "Sie auf den Schiebebalken klicken, ihn ziehen oder die " "Standardtastaturkürzel verwenden. Die Anzeige hört dann auf, automatisch zu " "scrollen." #. (itstool) path: page/p #: C/first-steps.page:30 msgid "" "To get back to the cursor’s position and let the view scroll automatically " "again, click on the menu button showing the time and then on Go to " "cursor. Clicking on the Play button also turns automatic " "scrolling on." msgstr "" "Um zur aktuellen Cursorposition zurückzukehren und das automatische Scrollen " "wieder zu aktivieren, klicken Sie auf den Menüknopf, der die aktuelle Zeit " "anzeigt, und dann auf Zu Cursor gehen. Wenn Sie den " "Wiedergabe-Knopf drücken, wird das automatische Scrollen auch " "wieder aktiviert." #. (itstool) path: page/p #: C/first-steps.page:32 msgid "" "Clicking in the view with the right mouse button will put the cursor there, " "also holding the right mouse button pressed and moving it. The left mouse " "button is for ." msgstr "" "Wenn Sie auf die Anzeige mit der rechten Maustaste klicken, wird der Cursor " "an diese Stelle gesetzt. Das gilt auch, wenn Sie die rechte Maustaste " "gedrückt halten und die Maus bewegen. Die linke Maustaste ist für ." #. (itstool) path: page/p #: C/first-steps.page:34 msgid "" "The speed scale next to the volume button in the lower " "right corner lets you adjust the speed of playback. A value of 1 means " "normal speed, everything lower (down to 0.5) is slower, everything above is " "faster." msgstr "" "Der Geschwindigkeits-Schieberegler neben dem Lautstärke-Knopf in der rechten unteren Ecke stellt die Wiedergabegeschwindigkeit " "ein. Der Wert 1 bedeutet normale Geschwindigkeit, alles darunter (bis 0,5) " "ist langsamer, alles darüber ist schneller." #. (itstool) path: info/desc #: C/keyboard-shortcuts.page:6 msgid "Standard keyboard shortcuts in Parlatype" msgstr "Standard-Tastaturkürzel in Parlatype" #. (itstool) path: page/title #: C/keyboard-shortcuts.page:14 msgid "Keyboard shortcuts" msgstr "Tastaturkürzel" #. (itstool) path: page/p #: C/keyboard-shortcuts.page:16 msgid "" "Keyboard shortcuts for Parlatype control, like Play, " "are described in . Shortcut keys for the window are " "listed below." msgstr "" "Tastaturkürzel zur Steuerung der Wiedergabe, wie etwa Wiedergabe, " "sind in beschrieben. Tastaturkürzel für das " "Parlatype-Fenster sind unten aufgelistet." #. (itstool) path: table/title #: C/keyboard-shortcuts.page:19 msgid "Standard Shortcut keys" msgstr "Standard-Tastaturkürzel" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:22 msgid "To Do This" msgstr "Um das zu erreichen …" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:23 msgid "Press This" msgstr "… drücken Sie das" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:28 msgid "Show help" msgstr "Hilfe anzeigen" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:29 msgid "F1" msgstr "F1" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:32 msgid "Open file" msgstr "Datei öffnen" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:33 msgid "Ctrlo" msgstr "Strgo" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:36 msgid "Play/Pause" msgstr "Wiedergabe/Pause" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:37 msgid "CtrlSpace" msgstr "StrgLeertaste" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:40 msgid "Go to …" msgstr "Gehe zu …" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:41 msgid "Ctrlg" msgstr "Strgg" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:44 msgid "Jump back" msgstr "Zurückspringen" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:45 msgid "CtrlLeft" msgstr "StrgPfeiltaste links" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:48 msgid "Jump forward" msgstr "Vorwärts springen" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:49 msgid "CtrlRight" msgstr "StrgPfeiltaste rechts" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:52 msgid "Copy timestamp" msgstr "Zeitstempel kopieren" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:53 msgid "Ctrlc" msgstr "Strgc" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:56 msgid "Insert timestamp" msgstr "Zeitstempel einfügen" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:57 msgid "Ctrlv" msgstr "Strgv" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:60 msgid "Zoom in" msgstr "Hineinzoomen" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:61 msgid "Ctrl+" msgstr "Strg+" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:64 msgid "Zoom out" msgstr "Herauszoomen" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:65 msgid "Ctrl-" msgstr "Strg-" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:68 msgid "Quit" msgstr "Beenden" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:69 msgid "Ctrlq" msgstr "Strgq" #. (itstool) path: p/link #: C/legal.xml:5 msgid "Creative Commons Attribution-ShareAlike 4.0 International" msgstr "" "Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen 4.0 " "International" #. (itstool) path: license/p #: C/legal.xml:4 msgid "This work is licensed under a <_:link-1/> license." msgstr "Dieses Werk ist unter <_:link-1/> lizenziert." #. (itstool) path: info/desc #: C/preferences.page:6 msgid "How to customize Parlatype" msgstr "Wie Sie Parlatype anpassen können" #. (itstool) path: page/title #: C/preferences.page:14 msgid "Preferences" msgstr "Einstellungen" #. (itstool) path: page/p #: C/preferences.page:16 msgid "" "To open the preferences dialog click on the primary menu in the headerbar." msgstr "" "Um das Einstellungsfenster zu öffnen, klicken Sie auf das Hauptmenü in der " "Werkzeugleiste." #. (itstool) path: section/title #: C/preferences.page:21 msgid "Preferences for the waveform" msgstr "Einstellungen für die Wellenform" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:23 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" msgstr "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" #. (itstool) path: item/p #: C/preferences.page:26 msgid "" "Resolution: The resolution of the waveform image is given in pixels per " "second, e.g. the default resolution of 100 means, that one second is shown " "with a width of 100 pixels." msgstr "" "Auflösung: Die Auflösung der Wellenform wird in Pixel pro Sekunde angegeben. " "Der Vorgabewert 100 bedeutet zum Beispiel, dass eine Sekunde mit einer Länge " "von 100 Pixeln dargestellt wird." #. (itstool) path: item/p #: C/preferences.page:27 msgid "" "Fixed vs. moving cursor: There are two modes, how to follow the cursor. On " "slower systems a moving cursor might be smoother." msgstr "" "Fixierter/bewegter Cursor: Es gibt zwei Arten, wie der Cursor im Blickfeld " "bleibt. Auf langsameren Systemen ist die Wiedergabe mit einem bewegten " "Cursor vermutlich flüssiger." #. (itstool) path: item/p #: C/preferences.page:28 msgid "Show time scale: Turn the time scale on or off." msgstr "Zeitskala anzeigen: Schaltet die Zeitskala an oder aus." #. (itstool) path: section/title #: C/preferences.page:33 msgid "Preferences for controls" msgstr "Einstellungen für die Steuerung" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:35 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: item/p #: C/preferences.page:38 msgid "" "Jump back on pause: Parlatype will rewind a few seconds on each " "pause, this way you can easier resume typing. Set this value to 0 if you " "don’t want this behaviour." msgstr "" "Bei Pause zurückspulen: Parlatype spult bei jeder " "Wiedergabeunterbrechung einige Sekunden zurück, auf diese Weise können Sie " "Ihre Arbeit leichter wiederaufnehmen. Setzen Sie diesen Wert auf 0, wenn Sie " "dieses Verhalten nicht wünschen." #. (itstool) path: item/p #: C/preferences.page:39 msgid "" "Jump back: Configures how many seconds to skip when the Jump back " "button is pressed." msgstr "" "Zurückspringen: Legt fest, wie viele Sekunden übersprungen werden sollen, " "wenn der Zurückspringen-Knopf gedrückt wird." #. (itstool) path: item/p #: C/preferences.page:40 msgid "" "Jump forward: Configures how many seconds to skip when the Jump " "forward button is pressed." msgstr "" "Vorwärts springen: Legt fest, wie viele Sekunden übersprungen werden, wenn " "der Vorwärts springen-Knopf gedrückt wird." #. (itstool) path: item/p #: C/preferences.page:41 msgid "" "Pressing Play at the end of file – Replay file: Whether you want " "to repeat the file at the end. If not, it will replay a few seconds like on " "pause." msgstr "" "Wiedergabe drücken am Ende der Datei – Datei wieder abspielen: " "Legt fest, ob Sie die Datei am Ende wieder abspielen wollen. Wenn nicht, " "wird wie bei einer Pause einige Sekunden zurückspult." #. (itstool) path: item/p #: C/preferences.page:42 msgid "" "Pressing Play at the end of selection – Replay selection: Whether " "you want to repeat the selection. If not, it will replay a few seconds like " "on pause." msgstr "" "Wiedergabe drücken am Ende einer Auswahl – Auswahl wieder " "abspielen: Legt fest, ob Sie die Auswahl am Ende wieder abspielen wollen. " "Wenn nicht, wird wie bei einer Pause einige Sekunden zurückspult." #. (itstool) path: section/title #: C/preferences.page:47 msgid "Preferences for timestamps" msgstr "Einstellungen für Zeitstempel" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:49 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" msgstr "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" #. (itstool) path: section/p #: C/preferences.page:51 msgid "" "These settings affect how Parlatype formats timestamps. If you " "need a certain format in your transcription, you can adjust it here." msgstr "" "Diese Einstellungen wirken sich darauf aus, wie Parlatype " "Zeitstempel formatiert. Wenn Sie ein bestimmtes Zeitstempelformat brauchen, " "können Sie es hier einstellen." #. (itstool) path: note/p #: C/preferences.page:52 msgid "" "There are no settings for reading timestamps. Parlatype " "reads and accepts all of these formats." msgstr "" "Es gibt keine Einstellungen zum Lesen von Zeitstempeln. " "Parlatype liest und verarbeitet alle diese Formate." #. (itstool) path: item/p #: C/preferences.page:54 msgid "" "Always show hours and leading zeroes: Whether to show a fixed number of " "digits. Changing any of these values will show an updated example in the " "Example section below." msgstr "" "Immer Stunden und führende Null anzeigen: Ob eine fixe Ziffernzahl angezeigt " "werden soll. Wenn Sie eine dieser Einstellungen ändern, werden die Beispiele " "in der Sektion Beispiele aktualisiert." #. (itstool) path: item/p #: C/preferences.page:55 msgid "Precision: Choose between full seconds, 10th seconds or 100th seconds." msgstr "" "Genauigkeit: Wählen Sie zwischen ganzen, Zehntel- und Hundertstelsekunden." #. (itstool) path: item/p #: C/preferences.page:56 msgid "" "Fraction separator: Choose between a point or a hyphen to separate fractions " "of a second." msgstr "" "Abgrenzung für Sekundenbruchteile: Wählen Sie zwischen einem Punkt oder " "einem Gedankenstrich." #. (itstool) path: item/p #: C/preferences.page:57 msgid "" "Characters around timestamps: Choose between number signs, round brackets, " "square brackets or none." msgstr "" "Zeichen um Zeitstempel: Wählen Sie zwischen Rautezeichen, runden Klammern, " "eckigen Klammern oder keine Zeichen." #. (itstool) path: section/title #: C/preferences.page:62 msgid "Preferences for speech recognition" msgstr "Einstellungen für Spracherkennung" #. (itstool) path: note/p #: C/preferences.page:65 msgid "" "This tab is only visible, if speech recognition is enabled in Parlatype." msgstr "" "Dieser Reiter ist nur sichtbar, wenn Spracherkennung in Parlatype aktiviert " "ist." #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:68 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" msgstr "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" #. (itstool) path: section/p #: C/preferences.page:70 msgid "" "Here you can choose which language model to use. If you don’t have a " "language model yet, an assistant will guide you through the process of " "downloading it. You can have as many language models as you need, they can " "be added with the + button." msgstr "" "Hier können Sie festlegen, welches Sprachmodell verwendet werden soll. Wenn " "Sie noch kein Sprachmodell zur Auswahl haben, begleitet Sie ein Assistent " "beim Download eines Sprachmodells. Sie können so viele Sprachmodell haben, " "wie Sie wollen, sie können mit dem +-Knopf hinzugefügt werden." #. (itstool) path: section/p #: C/preferences.page:72 msgid "" "To select a model click on its radio button in the list. If you click just " "on the name, you can see the model’s basic parameters. You could even change " "them, but that’s not recommended." msgstr "" "Um ein Sprachmodell auszuwählen, klicken Sie auf den Auswahlknopf in der " "Liste. Wenn Sie nur auf den Namen klicken, sehen Sie die Grundeinstellungen " "des Sprachmodells. Diese Einstellungen könnten geändert werden, das ist aber " "nicht empfohlen." #. (itstool) path: section/p #: C/preferences.page:74 msgid "" "The - button removes a model from the list. The model’s files " "however are not deleted, just the model entry is removed." msgstr "" "Der --Knopf entfernt ein Sprachmodell aus der Liste. Die Dateien " "des Modells werden dabei nicht gelöscht, es wird lediglich der " "Eintrag aus der Liste entfernt." #. (itstool) path: section/title #: C/preferences.page:80 msgid "Preferences for the window" msgstr "Einstellungen für das Fenster" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:82 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" msgstr "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" #. (itstool) path: item/p #: C/preferences.page:85 msgid "" "Remember size: On start-up Parlatype sets the window size to the " "size it had the last time." msgstr "" "Größe des Fensters merken: Beim Starten stellt Parlatype die " "Fenstergröße so ein, wie sie beim letzten Mal war." #. (itstool) path: item/p #: C/preferences.page:86 msgid "" "Remember position: On start-up Parlatype can position its window " "where you had it when you closed Parlatype last time." msgstr "" "Position des Fensters merken: Beim Starten kann Parlatype das " "Fenster dort positionieren, wo es sich befand, als Sie Parlatype " "das letzte Mal geschlossen haben." #. (itstool) path: item/p #: C/preferences.page:87 msgid "" "Start on top: This will put Parlatype on start-up on top of other " "windows. This might be useful if you are working with a maximized word " "processor and still want to see the Parlatype window." msgstr "" "»Immer im Vordergrund« starten: Dadurch wird Parlatype beim " "Starten über andere Fenster in den Vordergrund gelegt. Das kann nützlich " "sein, wenn Sie mit einer maximierten Textverarbeitung arbeiten und trotzdem " "das Parlatype-Fenster sehen wollen." #. (itstool) path: note/p #: C/preferences.page:91 msgid "" "Remember position and Start on top are not available " "on Wayland." msgstr "" "Position des Fensters merken und »Immer im Vordergrund« " "starten sind unter Wayland nicht verfügbar." #. (itstool) path: info/desc #: C/selections.page:6 msgid "How to play and repeat a selection" msgstr "Einen Abschnitt auswählen und wiederholen" #. (itstool) path: page/title #: C/selections.page:14 msgid "Selections" msgstr "Markierungen" #. (itstool) path: page/p #: C/selections.page:16 msgid "" "You can select a piece of the waveform with the mouse. Next time you press " "Play, it will play the selection only. When it is finished and " "you press Play again, it will loop the selection once." msgstr "" "Sie können einen Teil der Wellenform mit der Maus markieren. Wenn Sie das " "nächste Mal auf Wiedergabe drücken, wird nur die Auswahl " "abgespielt. Wenn Sie am Ende noch einmal auf Wiedergabe drücken, " "wird die Auswahl in einer Schleife einmal wiederholt." #. (itstool) path: note/p #: C/selections.page:18 msgid "" "When in selection mode, you can not exit the selection anymore until you " "deselect it." msgstr "" "Wenn Parlatype im Auswahl-Modus ist, können Sie die Auswahl nicht " "mehr verlassen, bis Sie die Auswahl wieder aufgehoben haben." #. (itstool) path: page/p #: C/selections.page:20 msgid "" "Selections can be made with the mouse (or pointer device) with a left click, " "holding the mouse button and dragging the pointer. If you click with " "Shift key pressed, an already existing selection will be enlarged " "to that point." msgstr "" "Eine Auswahl kann mit der Maus (bzw. dem Zeigergerät) mit einem Linksklick " "markiert werden, die Maustaste dazu gedrückt halten und den Zeiger " "verschieben. Wenn Sie mit der Maus links klicken und gleichzeitig " "Shift gedrückt halten, wird eine bestehende Auswahl bis zu diesem " "Punkt vergrößert." #. (itstool) path: page/p #: C/selections.page:22 msgid "" "To deselect click once with the left button into the waveform. If the " "waveform has keyboard focus, you can press Escape." msgstr "" "Um eine Auswahl aufzuheben, klicken Sie mit der linken Maustaste in die " "Wellenform. Wenn die Wellenform den Eingabefokus hat, können Sie auch die " "Escape-Taste drücken." #. (itstool) path: info/desc #: C/timestamps.page:6 msgid "Set and go to timestamps" msgstr "Zeitstempel setzen und hinspringen" #. (itstool) path: page/title #: C/timestamps.page:14 msgid "Timestamps" msgstr "Zeitstempel" #. (itstool) path: page/p #: C/timestamps.page:16 msgid "Timestamps help you to navigate in your transcription." msgstr "Zeitstempel helfen Ihnen beim Navigieren in Ihrer Transkription." #. (itstool) path: note/p #: C/timestamps.page:19 msgid "" "Timestamps can look like this: #03:45.2#. You can select them with or " "without the number signs." msgstr "" "Zeitstempel können so aussehen: #03:45.2#. Sie können Sie mit oder ohne die " "Rautezeichen markieren." #. (itstool) path: page/p #: C/timestamps.page:22 msgid "" "Parlatype can produce different timestamp formats, they can be " "set in ." msgstr "" "Parlatype kann verschiedene Zeitstempelformate ausgeben. Sie " "können in den geändert werden." #. (itstool) path: section/title #: C/timestamps.page:25 msgid "Drag and drop" msgstr "Ziehen und ablegen" #. (itstool) path: section/p #: C/timestamps.page:27 msgid "" "If you select the timestamp in the word processor, you can drag and drop it " "on the Parlatype window and it will go to that position. This is " "also possible the other way round: Drag the time label from Parlatype to a word processor and drop it there to insert it." msgstr "" "Wenn Sie einen Zeitstempel in Ihrer Textverarbeitung markieren, können Sie " "ihn mit der Maus ins Parlatype-Fenster hinüberziehen und das " "Programm wird zu dieser Position springen. Das ist auch andersrum möglich: " "Ziehen Sie die Zeitanzeige aus dem Parlatype-Fenster in die " "Textverarbeitung, um den Zeitstempel dort einzufügen." #. (itstool) path: section/title #: C/timestamps.page:31 msgid "Using the clipboard" msgstr "Mithilfe der Zwischenablage" #. (itstool) path: section/p #: C/timestamps.page:33 msgid "" "Clicking on the menu button that is showing the current time you can " "Copy time to clipboard or Go to time in clipboard." msgstr "" "Wenn Sie auf den Menüknopf klicken, der die aktuelle Zeit anzeigt, können " "Sie die Zeit in die Zwischenablage kopieren oder Zu Zeit aus " "Zwischenablage gehen." #. (itstool) path: section/p #: C/timestamps.page:35 msgid "" "This can also be done with keyboard shortcuts. First make sure, the " "Parlatype window has focus. With the key sequence " "Ctrlc the current timestamp is copied " "to the clipboard. Changing to the word processor you can insert now the " "timestamp in your transcription." msgstr "" "Das geht auch mit Tastenkürzeln. Stellen Sie zuerst sicher, dass das " "Parlatype-Fenster den Eingabefokus hat. Mit der Tastenkombination " "Ctrlc können Sie den aktuellen " "Zeitstempel in die Zwischenablage kopieren. Wenn Sie nun zu Ihrer " "Textverarbeitung wechseln, können Sie den Zeitstempel aus der Zwischenablage " "einfügen." #. (itstool) path: section/p #: C/timestamps.page:36 msgid "" "To go to a timestamp position, copy the timestamp in the word processor to " "the clipboard. Once you have changed focus to Parlatype press " "Ctrlv." msgstr "" "Um zur Zeitstempel-Position zu springen, kopieren Sie den Zeitstempel in " "Ihrer Textverarbeitung in die Zwischenablage. Sobald Sie den Eingabefokus zu " "Parlatype gewechselt haben, drücken Sie Strgv." #. (itstool) path: info/desc #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "Lassen Sie Parlatype einen Teil der Transkription erledigen" #. (itstool) path: page/title #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "Automatische Spracherkennung" #. (itstool) path: page/p #: C/asr.page:17 msgid "" "Parlatype offers automatic speech recognition that is done on " "your computer. No data is sent over the network." msgstr "" "Parlatype bietet eine automatische Spracherkennung, die auf Ihrem " "Rechner durchgeführt wird. Es werden keine Daten über das Netzwerk gesendet." #. (itstool) path: note/p #: C/asr.page:20 msgid "" "Parlatype must have been built with PocketSphinx or " "Mozilla DeepSpeech. Please note that those libraries might be not " "available on your platform." msgstr "" "Parlatype muss mit PocketSphinx oder Mozilla " "DeepSpeech erstellt worden sein. Bitte beachten Sie, dass diese " "Bibliotheken auf Ihrer Plattform nicht verfügbar sein könnten." #. (itstool) path: note/p #: C/asr.page:25 msgid "" "Parlatype has no built-in text editor. You need the Parlatype " "Extension for LibreOffice to output recognized text." msgstr "" "Parlatype hat keinen eingebauten Texteditor. Sie brauchen die " "Parlatype-Erweiterung für LibreOffice, um erkannten Text " "auszugeben." #. (itstool) path: section/title #: C/asr.page:30 msgid "Start speech recognition" msgstr "Spracherkennung beginnen" #. (itstool) path: section/p #: C/asr.page:32 msgid "" "Select a language model in the Preferences Dialog, Speech recognition tab, see for more details." msgstr "" "Wählen Sie ein Sprachmodell im Einstellungs-Dialog, Reiter " "Spracherkennung. Siehe für weitere " "Details." #. (itstool) path: section/p #: C/asr.page:35 msgid "" "Open the primary menu and click on Automatic transcription. This " "is only available, if you have setup and chosen a language model." msgstr "" "Öffnen Sie das Hauptmenü und klicken Sie auf Automatische " "Transkription. Dieser Eintrag ist nur verfügbar, wenn Sie ein " "Sprachmodell eingerichtet und gewählt haben." #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr.page:38 #, fuzzy msgctxt "_" msgid "" "external ref='figures/asr-switch-to-asr.png' " "md5='91dc6bffa3b8a3342889d9bfccabc3c8'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: section/p #: C/asr.page:40 msgid "" "Now press Play in Parlatype and the recognized speech " "will be printed in LibreOffice, if the Parlatype Extension is " "installed. Output is silent because decoding speed is dependent on your " "machine and may be slower or faster than real-time speech." msgstr "" "Drücken Sie nun Wiedergabe in Parlatype und erkannte " "Sprache wird als Text in LibreOffice ausgegeben, wenn die " "Parlatype-Erweiterung installiert ist. Die Ausgabe ist lautlos, weil die " "Geschwindigkeit von Ihrer Rechnergeschwindigkeit abhängt und langsamer oder " "schneller sein kann als gesprochene Sprache in Echtzeit." #. (itstool) path: section/p #: C/asr.page:45 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" "Die Ausgabe erfolgt ohne Zeichensetzung oder Groß-/Kleinschreibung. Sie " "müssen sie selbst hinzufügen beziehungsweise korrigieren." #. (itstool) path: note/p #: C/asr.page:47 msgid "" "Accuracy depends on many factors like quality of the recording, " "background noise, speaker’s dialect or pronunciation and the speech model " "used. For general transcription you can expect an word error rate between 10 " "and 50 %. Alas this means that in some cases manual transcription from the " "start will be faster than automatic transcription and the following " "correction process." msgstr "" "Die Genauigkeit hängt von vielen Faktoren ab wie Qualität der " "Aufnahme, Hintergrundgeräuschen, Sprecherdialekt oder -aussprache und dem " "verwendeten Sprachmodell. Für allgemeine Transkription können Sie Wort-" "Fehlerraten zwischen 10 und 50 % erwarten. Leider bedeutet das, dass in " "manchen Fällen eine manuelle Transkription von Beginn an schneller sein wird " "als eine automatische Transkription mit anschließendem Korrekturdurchgang." #. (itstool) path: info/desc #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "Automatische Sprachtranskription einrichten" #. (itstool) path: page/title #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "Automatische Spracherkennung einrichten" #. (itstool) path: page/p #: C/asr-setup.page:17 msgid "" "For speech recognition you need a language model: one or more files trained " "with real speech samples. Parlatype supports language models made " "for CMU Sphinx and Mozilla DeepSpeech and ships a couple of language " "model configurations." msgstr "" "Für Spracherkennung brauchen Sie ein Sprachmodell: eine oder mehrere " "Dateien, die mit echten Sprachbeispielen trainiert wurden. Parlatype unterstützt Sprachmodelle für CMU Sphinx und Mozilla DeepSpeech und " "liefert einige Sprachmodell-Konfigurationen mit." #. (itstool) path: note/p #: C/asr-setup.page:22 msgid "" "A language model configuration contains meta data describing the " "language model: A name that you can change, the language it was made for, " "speech recognition engine, publisher, license etc. It has a (third party) " "link, where you can download the files. Part of the configuration is the " "base folder, where you have saved the model. Additionally it contains " "various parameters for the plugin which are not shown." msgstr "" "Eine Sprachmodell-Konfiguration enthält Metadaten, die das " "Sprachmodell beschreiben: einen Namen, den Sie ändern können, die Sprache, " "für die es erstellt wurde, die Spracherkennungsengine, wer es unter welcher " "Lizenz veröffentlicht hat usw. Es enthält einen Link (zu Drittanbietern), " "von wo Sie die Dateien herunterladen können. Teil der Konfiguration ist der " "Ordner, an dem Sie das Modell gespeichert haben. Außerdem enthält es " "verschiedene Parameter für das Plugin, die aber nicht angezeigt werden." #. (itstool) path: page/p #: C/asr-setup.page:29 msgid "" "Open the Preferences Dialog and click on the Speech Recognition " "tab. Initially there are no configurations available, click on the Add " "a configuration button." msgstr "" "Öffnen Sie den Einstellungs-Dialog und gehen Sie zum Spracherkennung-Reiter. Anfangs sind keine Konfigurationen verfügbar, klicken Sie auch " "den Konfiguration hinzufügen-Knopf." #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:33 #, fuzzy msgctxt "_" msgid "" "external ref='figures/asr-setup-initial.png' " "md5='31773b99dcbb1ee84e59e119a0bd35c6'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: media/span #: C/asr-setup.page:36 msgid "download" msgstr "Download" #. (itstool) path: media/span #: C/asr-setup.page:37 msgid "unavailable" msgstr "Nicht verfügbar" #. (itstool) path: page/p #: C/asr-setup.page:35 msgid "" "If your installation has CMU Sphinx or Mozilla DeepSpeech enabled, you will " "see configurations with a <_:media-1/> symbol. Otherwise you will see only " "configurations with a <_:media-2/> symbol." msgstr "" "Wenn in Ihrer Installation CMU Sphinx oder Mozilla DeepSpeech aktiviert " "sind, sehen Sie Konfigurationen mit einem <_:media-1/>-Symbol. Sonst sehen " "Sie nur Konfigurationen mit einem <_:media-2/>-Symbol." #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:39 #, fuzzy msgctxt "_" msgid "" "external ref='figures/asr-setup-downloadable.png' " "md5='6e00b08a60952e8f408bec4a024be2e5'" msgstr "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" #. (itstool) path: media/span #: C/asr-setup.page:42 msgid "settings" msgstr "Einstellungen" #. (itstool) path: page/p #: C/asr-setup.page:41 msgid "" "Select a configuration and click on the <_:media-1/> button. There is a " "short description of the model and where you can download it. After " "downloading, you have to set the folder where your download resides. You can " "also change the Display name." msgstr "" "Wählen Sie eine Konfiguration und klicken Sie auf den <_:media-1/>-Knopf. Es " "öffnet sich eine kurze Beschreibung des Modells und von wo Sie es " "herunterladen können. Nachdem Sie es heruntergeladen haben, müssen Sie noch " "den Ordner einstellen, wo Ihr Download gespeichert ist. Sie können auch den " "Anzeigenamen ändern." #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:47 #, fuzzy msgctxt "_" msgid "" "external ref='figures/asr-setup-details.png' " "md5='3273410dfb31da8518a64d28af0da7b1'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: media/span #: C/asr-setup.page:50 msgid "selected" msgstr "Ausgewählt" #. (itstool) path: page/p #: C/asr-setup.page:49 msgid "" "An installed model has no symbol next to it. Double click on the model and " "it will be selected for speech recognition, a <_:media-1/> symbol appears." msgstr "" "Ein installiertes Modell hat kein Symbol neben sich. Doppelklicken Sie auf " "das Modell und es wird für die Spracherkennung ausgewählt, ein <_:media-1/>-" "Symbol erscheint." #. (itstool) path: page/p #: C/asr-setup.page:53 msgid "" "Shipped configurations might get obsolete over time. Therefore you can " "import a configuration with the + button. Configurations are text " "files with an .asr ending." msgstr "" "Mitgelieferte Konfigurationen können mit der Zeit veralten. Deshalb können " "Sie eine Konfiguration mit dem +-Knopf importieren. " "Konfigurationen sind Textdateien mit der Endung .asr." #. (itstool) path: page/p #: C/asr-setup.page:57 msgid "" "With the - button you can remove a configuration. This will never " "remove downloaded models, only the configuration file." msgstr "" "Mit dem --Knopf können Sie Konfigurationen entfernen. Damit " "werden niemals heruntergeladene Sprachmodelle gelöscht, nur die " "Konfigurationsdatei." #. (itstool) path: info/desc #: C/media-keys.page:6 msgid "How to control Parlatype with media keys" msgstr "Parlatype mit Medientasten steuern" #. (itstool) path: page/title #: C/media-keys.page:14 msgid "Media keys" msgstr "Medientasten" #. (itstool) path: page/p #: C/media-keys.page:16 msgid "" "Parlatype’s basic functions can be controlled with so called " "media keys. Media keys are used system wide to control media " "players and they are working even if the media player is not in focus or in " "the background." msgstr "" "Parlatypes grundlegende Funktionen können mit den sogenannten " "Medientasten gesteuert werden. Medientasten werden systemweit " "verwendet, um Medienspieler zu steuern, und sie funktionieren selbst dann, " "wenn der Medienspieler nicht im Fokus oder im Hintergrund ist." #. (itstool) path: page/p #: C/media-keys.page:18 msgid "" "You can change the media keys in GNOME settings. You can use dedicated keys " "from a multimedia keyboard or use any other key or combination of keys." msgstr "" "Sie können die Medientasten in den Einstellungen von GNOME ändern. Sie " "können entweder dezidierte Tasten von einer Multimediatastatur verwenden " "oder eine beliebige andere Taste oder Tastenkombination zuweisen." #. (itstool) path: note/p #: C/media-keys.page:21 msgid "" "This will affect other media players, e.g. Totem or " "Rhythmbox, as well." msgstr "" "Das wirkt sich auch auf andere Medienspieler aus, wie zum Beispiel " "Totem oder Rhythmbox." #. (itstool) path: page/p #: C/media-keys.page:24 msgid "Parlatype listens to these key strokes:" msgstr "Parlatype reagiert auf diese Tastenanschläge:" #. (itstool) path: item/p #: C/media-keys.page:26 msgid "" "Play, Pause, Stop: Each of these keys " "toggles between playing and pause." msgstr "" "Wiedergabe, Wiedergabe unterbrechen, Wiedergabe " "anhalten: Jede dieser Tasten schaltet zwischen Wiedergabe und Pause um." #. (itstool) path: item/p #: C/media-keys.page:27 msgid "" "Rewind, Previous: Each of these keys will jump back " "the time you selected in Preferences." msgstr "" "Zurückspulen, Vorheriger Titel: Jede dieser Tasten " "wird um so viele Sekunden zurückspringen, wie Sie in den Einstellungen " "eingestellt haben." #. (itstool) path: item/p #: C/media-keys.page:28 msgid "" "Fast Forward, Next: Each of these keys will jump ahead " "the time you selected in Preferences." msgstr "" "Vorspulen, Nächster Titel: Jede dieser Tasten wird so " "viele Sekunden vorwärtsspringen, wie Sie in den Einstellungen eingestellt " "haben." #. (itstool) path: note/p #: C/media-keys.page:32 msgid "" "For detailed instructions how to change keyboard shortcuts in GNOME see the " "official " "documentation." msgstr "" "Für eine genaue Anleitung, wie Sie die Tastenkürzel in GNOME ändern können, " "sehen Sie bitte in der offiziellen Dokumentation nach." #. (itstool) path: page/p #: C/media-keys.page:35 msgid "" "If you are using a dedicated foot pedal, it should be possible to map the " "foot pedal signals to any of the keys. This is not well tested, however. Any " "feedback regarding foot pedals is welcome." msgstr "" "Wenn Sie ein Fußpedal für die Transkription verwenden, müsste es möglich " "sein, die Fußpedalsignale den entsprechenden Tasten zuzuweisen. Das ist aber " "noch nicht ausgiebig getestet worden. Rückmeldungen dazu sind willkommen." #~ msgid "" #~ "Parlatype ships a couple of language model configurations. " #~ "They give you a download location and instruct Parlatype how to use those " #~ "language models." #~ msgstr "" #~ "Parlatype liefert einige Sprachmodell-Konfigurationen mit. Sie " #~ "geben Ihnen einen Downloadlink und instruieren Parlatype, wie es diese " #~ "Sprachmodelle nutzen kann." #~ msgid "" #~ "Automatic speech recognition is disabled by default. In order to try it, " #~ "you have run Parlatype with this parameter:" #~ msgstr "" #~ "Automatische Spracherkennung ist standardmäßig deaktiviert. Wenn Sie sie " #~ "ausprobieren wollen, starten Sie Parlatype mit dieser Option:" #~ msgid "" #~ "Open the primary menu and click on Automatic transcription. If " #~ "you don’t have a language model yet, an assistant will guide you in that " #~ "process (see ). Otherwise a dialog will pop up " #~ "asking you to give focus to a word processor. Any word processor with " #~ "support for accessibility should work, like LibreOffice or " #~ "Gedit." #~ msgstr "" #~ "Öffnen Sie das Hauptmenü und klicken Sie auf Automatische " #~ "Transcription. Wenn Sie noch kein Sprachmodell haben, wird Sie ein " #~ "Assistent durch diesen Prozess begleiten (siehe ). Ansonsten wird ein Dialog geöffnet, der Sie darum bittet, den Fokus " #~ "zu einer Textverarbeitung zu wechseln. Jedes Textverarbeitungsprogramm, " #~ "das Barrierefreiheit unterstützt, sollte geeignet sein, wie zum Beispiel " #~ "LibreOffice oder Textverarbeitung." #~ msgid "" #~ "If no word processor is recognized you can use an internal textpad as a " #~ "fallback solution. To use that textpad start Parlatype with " #~ "the textpad option: parlatype --textpad." #~ msgstr "" #~ "Wenn keine Textverarbeitung erkannt wird, gibt es als Ausweichlösung ein " #~ "internes Textverarbeitungsfenster. Um es zu verwenden, starten Sie " #~ "Parlatype mit dieser Option: parlatype --textpad." #~ msgid "" #~ "Parlatype doesn’t ship the language model needed for speech " #~ "recognition. You will have to download it. There is an assistant that " #~ "guides you through that process." #~ msgstr "" #~ "Parlatype liefert das für eine Spracherkennung nötige " #~ "Sprachmodell nicht mit. Sie müssen es herunterladen, wobei Sie von einem " #~ "Assistenten darin unterstützt werden." #~ msgid "" #~ "The assistant can be started either from the Preferences dialog, tab " #~ "Speech recognition or – if you have no setup yet – from the " #~ "primary menu, Automatic transcription." #~ msgstr "" #~ "Der Assistent kann entweder aus dem Einstellungsdialog heraus, Reiter " #~ "Spracherkennung, aufgerufen werden oder – falls Sie noch keine " #~ "Konfiguration haben – aus dem Hauptmenü, Automatische Transkription." #~ msgid "" #~ "It asks you to download a speech model. The speech recognition engine " #~ "used is CMU Sphinx. You can download models suitable for CMU Sphinx for " #~ "example from CMU Sphinx’ sourceforge " #~ "repository. It has models for some of the most widespread " #~ "languages." #~ msgstr "" #~ "Er bittet Sie, ein Sprachmodell herunterzuladen. Das verwendete " #~ "Spracherkennungssystem heißt CMU Sphinx. Sie können für CMU Sphinx " #~ "geeignete Modelle von CMU Sphinx' " #~ "Sourceforge-Portal. Es enthält Modelle für einige der am weitesten " #~ "verbreiteten Sprachen." #~ msgid "" #~ "If it’s compressed, uncompress the model. Save it to a folder where it " #~ "can stay. Parlatype doesn’t copy the model internally." #~ msgstr "" #~ "Wenn es komprimiert ist, entpacken Sie das Modell. Speichern Sie es in " #~ "einem Verzeichnis, wo es bleiben kann. Parlatype erstellt intern keine " #~ "Kopie des Modells." #~ msgid "" #~ "Usually the assistant will find all the files needed and you just have to " #~ "give this configuration a name for your own reference. You can have " #~ "several configurations, e.g. for different languages." #~ msgstr "" #~ "Normalerweise findet der Assistent alle benötigten Dateien und Sie müssen " #~ "der Konfiguration nur mehr einen Namen geben. Sie können mehrere " #~ "Konfigurationen speichern, zum Beispiel für verschiedene Sprachen." #~ msgid "" #~ "If the assistant doesn’t find all the components or finds more than " #~ "expected, it will ask you to specify their location or to choose between " #~ "them. The next sections explains those components." #~ msgstr "" #~ "Falls der Assistent nicht alle Komponenten finden kann oder mehr als " #~ "erwartet, bittet er Sie, ihren Ort anzugeben beziehungsweise zwischen " #~ "ihnen auszuwählen. Der nächste Abschnitt erklärt diese Komponenten." #~ msgid "Models" #~ msgstr "Modelle" #~ msgid "" #~ "A model consists of a so called acoustic and language model and a " #~ "dictionary:" #~ msgstr "" #~ "Ein Modell besteht aus einem sogenannten akustischen Modell, einem " #~ "Sprachmodell und einem Wörterbuch:" #~ msgid "Acoustic model" #~ msgstr "Akustisches Modell" #~ msgid "" #~ "It consists of several files usually in their own folder: feat." #~ "params, mdef, means and some others." #~ msgstr "" #~ "Besteht aus mehreren Dateien, normalerweise in einem eigenen Verzeichnis: " #~ "feat.params, mdef, means und " #~ "einige andere." #~ msgid "Language model" #~ msgstr "Sprachmodell" #~ msgid "" #~ "Parlatype needs a binary language model. That’s a single file " #~ "with the extension .lm.bin. Models can have several language " #~ "models. They have often one for high quality and one for low quality " #~ "recordings. Typical low quality recordings are from telephones with a " #~ "sample rate of 8000 Hz. Those language models have often phone, 8k or similar as part of their file name." #~ msgstr "" #~ "Parlatype braucht ein binäres Sprachmodell. Das ist eine " #~ "einzelne Datei mit der Endung .lm.bin. Modelle können " #~ "mehrere Sprachmodelle enthalten. Sie haben oft eines für Aufnahmen von " #~ "hoher Qualität und eines für Aufnahmen von geringer Qualität. Typische " #~ "Aufnahmen mit geringer Qualität sind Telefonaufnahmen mit einer " #~ "Abtastrate von 8000 Hz. Diese Sprachmodelle enthalten oft Bestandteile " #~ "wie phone, 8k oder ähnliche im Dateinamen." #~ msgid "Dictionary" #~ msgstr "Wörterbuch" #~ msgid "" #~ "Dictionaries have the extension .dict or .dic." #~ msgstr "" #~ "Wörterbücher haben die Endung .dict oder .dic." #~ msgid "" #~ "All those elements should be somewhere in the folder selected. It doesn’t " #~ "matter whether there are subfolders or how they are named." #~ msgstr "" #~ "Alle diese Elemente sollten irgendwo in dem Verzeichnis sein, das Sie " #~ "ausgewählt haben. Es spielt keine Rolle, ob sie in Unterordnern sind oder " #~ "wie sie genau benannt sind." parlatype-3.0/help/de/figures/000077500000000000000000000000001414030451500163365ustar00rootroot00000000000000parlatype-3.0/help/de/figures/lo-customize.png000066400000000000000000002561451414030451500215130ustar00rootroot00000000000000PNG  IHDR39sBIT|dtEXtSoftwaregnome-screenshot> IDATxw|lI$P#EtAE"MĆ {UѫbxQEE4ҷyd}7B>ߏݝ3g9̙3 B!B!B!B!B!*9_B!_B)`lٲ#GjZm5Ml !BqRJs.\g}V#-ZT?//oa-:jՊSB!B ضmy.z}%lٲG|euHKKl6WV!BQÅQ^=4iR'''y0cg}饗Ѽy5jt+B!ę-,, Z;999o˃oq# j^բESW!B!h-[$66vaef偸fFHS!BQ&** }Iq 5Mb#B!B C7TPiK=-B!D-䶕񮖬 !Bq<67 =B!BT0=6F*o *ơo!B!*<6Rxo!B!33IzB!π3|B!B\us&Bq2 &F4ej!8o!8 Ϲ[l!ɤ[!Nfa/k(Ci2tM 8-Ͽ͗cl,x)?RB(BĢ:hyT)@їkXE,9IUZ>ORFDI_¸_Xfve M1p]zm3[`ib"b5Œ޹;$b+78_37F,e Q<l#c\I~e mp^j(3`k-V ͩ/za J+涔Qa~}}ja17i~ut$l!.% YqyV< !,Bҳ^f0 ˾IKwSory]L.#R(0MLLb(\1w?F?4&OF\ oJ_į,_1= ӆ4 <QZ8$vJKɳIBT~:CۑPZHayotrgz&,ct$BM2O-mt#Do9]΁k.Y@@VxW̭Z^ˌn G0f&ͅJvo&)Oݒ1W} !(#=BQ)ly YaL4'lC ,nĝMѧЕB^Wfu `&fW0e8m o+ަH#(hjGcYlsL -/ R0l~ umԝ Kj֧M.n=H '׈=9s,C !Dͧa "Ҭaxcx4fQc <: f[V]6Anf)bQ0GDf2:b KaMg|۬Z` l4i`n-Īf g ˂ ꪫF@Q_bD!D(쥅>FqATUX (c-)''"|J`۰|OWY!DeP!8]Ǎ+g5B&%`G !YOzt k¸Ũ,Y㯅B[!Ne |B! -B!D50E!Bq[!Bj =B!BTB!HB!@zB!-B!D5[!Bj B!@o!B!B!BT B!x !BQ $B!H-B!D5˕ۺ^o>kv(Gps!BXxh~ZL\|S[W6:CΉ<B!dIxFuSl&I,tgE!ƒJxӝ훵NwB!j,QzPEB!ܼ\'ҪHF  g22_ʶp6)oqى,G!"srٕ>=~=բI0NwVj0 Y&j,uvvVZgj=K!f_htbRUUV(BR5}=^J6]@@;=ޡ̧!=Cd7(Lש];3uYʮSy yn{9 !TM 1I4!r@ Κ撰"=ʭ;(;7k5y?+69Hru(u|~SyڈG{\jΥRg"ނgO*uE^BQ|ՙc|Օo営scܿ}%UZ"U,-~(BVu=h(ס嗮ug8b9M]/kaA_瞮swv񅑌/7L=I5g^wrL' +j-W~x߳,C~B!$QJzc6eV(1Ҷ=\'2kO;-Br[dkaMšni*T2z2e;E8aɷ X}mumyrgo^rRm;;>ÚYdQ?h?|;+0↻x`lfbםՎW$^g_4̚6ˎڕ{Rn$wf"3-PǮٙVgsvrтu^\wv"2-PjT:˼p-^{2W.i+WeB@1C/grl9c Ʋ!ejmZYr&ƭgQCKϡq!7vy{rtC˺18iIvEa2W1A d{aQNh 44G깬|i^{.׌{syFƲe]&PWsHhcrqYVs{W`.#8uΝg5:U7쇖0՝[io;]e|ܿծ=Y_3< 7W,c #֬J}dYe"skOc5z1(Bqn{d{{i̱:.G9kyJzWy)G!"* Q ]SΣ JLI_Ē`H=ǁ[dG{)+8{P 4rZK*^h x^t"|r_bحJѧtNY ,=#O)+~;aC~ԃHZq;=4N ,q=B>eBSG}Xv͈7rc9xYZtf/ē+t-Ѝ iX6Zvv̧\n]>RY(彯$_emvFbbc@S1BvkXWO vYgncBi&"HH0y,Y=ev0hT{dwɿs1{5?Rέ9-`zdUn![W8*]z0g,=YksOw 61Jzద_yI@Yrλu+GJiRnq0ЊOl̡ٛWVmc1f X~ΤǷs5Fyoko.Z4: 7]kg^v(MyO!ץSĖcS L4g''oCٶ%~3X11` gWc_X| 4HĶm܂/c"MYZ~gpeǸǎL}aMĒ1ISsKjXSfcn΍{8nNEq[*ryg@Tm9$7\^g}̗wM1Ϸ#tw7m3H2~ [>?މGY1MPٙ8PY[F,֯_wiWĵ"xy׹.#d:^6Vie{'݉2ףzHf͛EF A؂1 ަ|aFhh 1Mr0&Ю_o:y{+>xiJ{o1hի{zBYc4PE5K p?͜ )Tq6yWq-0!Sɱ>4eט":04Mѷ0}6GoXnv.$g  ʹ,|m:ϾK٦e^–O8"(|]lODg]Etyv ]̀ҋ2xc[>ᙾ>lg7{ ŊZڽ<r//]>N2G7"\)Ta'Sn$ W({_U.J)g|Ƴ|ӃqeL16,yVgޜxH%lU~~_^Ƒ>ع* ]`uޚrB!뢭9Qai߇P 4.h%0*#V?iꘁ wVQډJ)Ч 45;ME倨{ 0V$I~yFx_lmG;߽]mֹZ!::)OwLEi'heø\ӯ'}}}H_+o$;/ ) qn>K.Ңɹeb=63٫؆d-vT|K2.u)&i ]7`4(,%V$.+rB)ʾBOAqU^8oh_cz'4})ϩ[b({u>&3Ft Zn)_S"mF^9^ ƦZ9=˟}iS)]C_s@\K%ܑ<,4^چ;k' Bq3Iz0Y.&{/~I WKm[lF?ԍU<±"Ǻa 9LeO\>\)j#۰s<hht#Jns–z :KchLҌDYcmy{䛊|%ǘBxMeeṍew?4{rvB༌&aBНwBiGQ+P %ܔʕSbh=)T/3`Ԫ4z0fbFgo4+u^fanB K1p"͊l+sг҃$5mNZCy3)~V}5JÒ0Ir:a>VsV6و>wb,m eV*9@eA˂66xcNh#54*VzŖlH*=֧H r c@ `۟wLo"ߺBH$ʺG,t,q2vLrbTBOޮ=qD?1ОAm>>4B׏Pˑlڷ&G)9Ʊ٬~ i.^[J)y[emq R/ֆf* p{FBxyqռVv}ϣeEeo蟣+3IM{ssҶ!/& e^lO{ws13_l%, :5nT<;`g=FmhVxǾ[y7aeބ"yf\KU0i3ڙ[@=۔ fK)j;s44rY99k:t2nϔvO Uj \+ 3c/ ${iԾ[m IGٸ36M48u[(!'e̿LLl&6&3Hn ė]82oeB!|8Łwy9iw+Z"=ߋYTfD% c۴"Ү/B3'<s\}Z6"|(8;W|Ɋ]9*q :pńᤛ(ڂ_: QvH,q0n΍>_J% IDATg˹oL+_]B!7}\uU#bu1PR5=޾08 ]hn?睈 UHV= RXaCisƴES `Ay ĕgsO}f+#ۼϓ@l׾n{e$OՅxv"Ӊ1P=Tʅ4_B!D U7#p,~}ud^?Z\ۡ5r}#A4sP @GQ֟VQz,copU \đDkt)Ʀy~G#~`N*Ygcoރ#y_u[ / 8W>O&/=2<pSnBq2p8n)nS?͹DRIG>Rދ4H%Pp<7FByd|E36'F҆{?64a%<:=%fpIwKwvBrHb-lD$5ˈ=L^;~{]T\Ɔȯe0BH޺Bi %v]zzYO8=58^45=D;X3pYkDt9V\x]y GSي A"V+O~B* ||uAHxt fYWGne*_GKX=ۉB'*lˡB!M!e(吋IB*㭔}|D5z?+>:NuuU9*oU˦*c?ӂ թV "4U6yӣ׸*7bz s,A>('xOď uC[&>V CI=Y^)hv'{:slU.\M fЙRԒB!Ddk_z/x U=ڶ >')=;` 3,? ++;o"_+ZyVpyzN v`yB:p]'! %`](=~2౳^c={Q!٣~$zG]%gӝN:Rg';Q!>sͭ B!I-B!D5[!Bj B!@o!B!B!BT B!x !BQ $B!H-B!D5[!Bj`:B!8yfCAA111Ѻuk"""Ns B!Dڱck׮gϞtng߾}̟?;ӜSQdB!D`͌5 `ٰl4lؐQFi&v]gu.ҫ>mqNy}q^twZ\rr \B sK^tuX0ݓYgOٝmB!pŬ^b۱X,XVgmZX,vȪU()) prn77vZO/ʢݸ2?;.G1h O9&=p;x{q2>˵CѹGz_2OGOM>kS>Ԥgo&pujO-#@mRh'N޹f^_Ldf2Ѣc+,IDTWvU!M֭6 jFΝٴi]t9Gw/a7C%'oxeuq#0Yћ}($x=/~OIӤ0ԑoa O~ %BLqSOo 6^f>۞ *Ϟ!gLҰZL{cƍ'xkfN.`T_{%IdXZN.IeSf\B'kc_Q.܋fIf5s}VDK98JKimp\ :^DGfܾ\Ufr˃rAG-<9[c[ [4k)^5F=Wt ؑqNz~ߙCxZ/F_ёf-dEqKR:-GCED7ʰM*t{ZYlC!Z3.~wٍϝ 7uLXN.Ԍf*BRXXhth4+.X-Jp{_ӏb岛yhE4Ԡ`9YZtbUoe3c /i1L|5] PV(OAsh͸|6/`~,.]*7͚MY|?͋ 6z$ S3rs؂Kc@ɣ<8o/6⍼ػ,WKn o$"[2k ;&3O ̘p?}$& Hdop| voH6)dǪOy^!g͌{xvU1)kIflI34u^I\7oJο.L8s9M{oJy<*ig㮽|V\$n=@F(;5~Qxru!B)V+v=?tH 1w4>3όgiosU>%kD7FC>vӗ_OKx*7Zƺ+Xr+g~x'xt /[\?wMҹ?<9. :Ԍ}mWlYAјifM@L~qEhYC c,~/K /¢]s<:f{/7nRw.(RTgϾՏ4e'c Gm-f<~:(6<ÌkD]ڌ/:Q<Z¾6vⱷ^_ G>3挩=Sc,ChfNQ"ԶHB!jv_@)))iDDD~W\qUz`3Xj12Hsc&|781/:v&7Ab[xJϦ3L !,: ,N؁mb2\g(\SpI!F 9. 1^~y6BRA:j%g{y8rQpGM=N(ÔҟGÖ[?r LnΘky~T7!Y,!$k+FxLrSv;{$~2۪Pu!BTՋ5kPZZJݺuUVJQPPΝ;ȠO>QEV|9pj=̙6w-Nސғ1]#lz4IXxG4щڦλs2nxb؋ }Xћ|}/LJ <8 x` w\A|B N]c8O]?k5EǬZD/3=%;x HH c.}JzS&q;1u #5$穏gٻ0ۙz܆)^0wN|fGX}q:יx^-1fϼ4u&u^b3g/K=bɕB!LrssHHHI&iӆ )b ``y{8~¨u1Pr'!B|tqNCo!BSD:u+WTcNN= B!isׁԌ_B!,'B!@o!B!B!BT B!x !BQ $B!Ըxb u(aUSY<-tFL֠3*jPיRխj<1:*¢BսQQQU!|q+l! @{ۻ)ȍjPӝ!BCTx !Bq6[!BjPx !B銋ټy3{졠hݺ59t[Q FZ5 @,;3B&aw?h!`PŤ9uʾ L <6(Hc+ - y\FqQ _.2" &!9# ͓{< փG0/e-S|1J"VTr}'Rn6철cW:E6K]g:=[nϱlg䜂\9lڴnݺaقitܙM6ѥK363]t?lʧ_8Eb>nIݝl9t[6sM~O蔩w%D*; uM㝮%L0[u:4❎L$]!LDa/2kLaµDy5j4ń^qtelu1^)}& dcr4dH;<24-#X YAió;[FQ\3ocUig-,k3Y:'}\&?gO^s#H2ٽ#7fw 4m*5C0Xyx&$yɌپ-ŁauRxkw>:*,4>}2U$uv23rxsi6}=9L@LAUc8ّ˖\R([`0ӻ]7d0l&ْKؖѦk=(enE y \EBJ/>-:S!Ͱ`0$%y {1'7FG{Xm+0ڞ-.5дmmTe;03u ar>.NDA -8owru~j019ĤhQPٸd6 7q54bb̤h&#Soas eGZ L9ۇ`9DdbcIYy* @rW\p- ,ܲ<1Zm@܃n9=pGJ/)$_:zaKᎶD/’Rjyhm3eGsUpMabxSŢ/3c[T1ofӰؓkeϡ |cȋgp]]9zt*ڭRћux}.'(R/֝l2ߺMI\O(ΞC+Up$~:FBfa F6f0[ͷܿª,ٟ';̙{U-DQv6l(D$6kGCXYTŽc(1"$y]Tysխ\=yˎk^d].7uZY_qǁm 'ncOQ XK9F45}fen'UT'dž"hm ta͵,S'LM6W!n{Ϗfc=-*0A((EG>f`JKlt.Ua 7.u}˅B ʮc;!2p~ O8U!&&Rf3px" 7 BF׾dh6hpY';ON$ \4&Ю_o:R3`4jiFʞ~]:u = ӓSgkI_pS4:2˼,uBg!r^K"9_-${~q`|q>Wz{Ɓ.BSx_8KٽV ML1O']V1XWEj E8Lm'#t|9.T4 ci(7eIem-|<;N|ϲ s:恴0b4()E*-j3`~a/r1Na$apmSC//o;Y*--{ҦM u{qa~ `0b!?X'_siHNX h>?X/Mqdp+'?nS:Q"cOi3_8d^FBh#?*,K t["쳇| eahLJѪqQc{%9q5DErq8ΫNj)VvYYloXZ%ѬQCGQ+oʬ tk":D̑&"N #yntaTbݖ<=j2i bM$E*SW;pI)q4 6υ99o/9UpW֔}+d,='wxnŠos~8S."sD0'*5]dS;ϴjf:׋$N-͙n-p:s9^s~7KkY&.\ <<777z=Orr2z777¸x"իW/XPK۷Ö {NI7?nᠮBvkPPYu6+е{.*ֻп @hvc_>G&r5<(6CG~fweNeSL%u<9v2A8P!_ t $oT&@:_JvxHbxfޅ+}!OxҍE>;ŜA V>8̙|o#_oҏ';eJ|5sƣҢ]YZ5ȁ#/- "GFeÛ܎Ř̀# +}Ed~υɮmчѽ]:)$'s>2SZxN10eCh֘ט2KATv[h%u؝g?wdA7GGG6mIOO'005ߪę3g8{,͛7/|nю0_[o=Uvw6qk\E54>3жcm6IB!m[q__ZgxW 7m "EC )BF\\EDd))I AA( C%xH&p0?.+ :@kBq"&6Tϙsg,Ѿm?Ngs-YcCc7򩀛5K/xsy;mȄBa""#$C^^T S$񾍅o[ '!z;OMñ˩b &BQ,RRS$S^^V)oxxx:FFP hB!2O IQ4(B!B\l$?WسaHRxb%\܏rqB!E>{fg5.EȳֳL4->(B!v֜4{Sezsz)xU!EAUUˋ)nk8Mqt[!x{[\]7KĨleȬp$SB!}'$X^63~u[L?GL&zɘbi϶KMB!@Ѡ^].\DBB^^^-S>L_zur%t#@!664?ΊB!D6^OJƽ8r=]0~!Re0?YZ:8 %B!~>zSf {do8V uvGl놄;v we'R-BalȌ?͉wN1^hSN>Mn0 * ENeV!B{a3ykNZ-:pHi村ѣGի~$&&-o!B"oS<'OԼ,ʡt Ttʎ/ 'qˆMD^;Z fqz.H\$֓R?86L|3>Ѷ}}8k_\8vkexrTVFF:ttR""QwwB.#B!PLNs")TGŒ$:c=0Yږ"&PS9}-ߝpcb}^RHlK㧞>n?Kz}8]kҹ@؁[ddd`4:t(HJJ&))x$B![Ye& !L)$ 4sH8Ɯ9ƍGP-$o`W+$@Mȟ~=+mtHiܵYiwj>>X;Tl@Aie_o4z<||tB!z(**gШQC ddd0p@bbb8|0:DGn/Ba/$.1!**(ի...0a6l@5/D.޼v[sҼP+_Qm$B!E`k#Ns.wrrɩHm4B!(g(D\K~IB! 00.Imgx%޷!Bˀl󤥥Y;Q@NNNb2`2JoIB!d2GP`)Ql6IFFF-B!D! k |=B!H-B!D [!B`ۉw5nS9mxf>],mxgr"EI{Բ) T=!†ŕzz͘GT.xP9B8+[b`e rm̴M5yꊥK1ΛHÒOBq O\}b|J.,!( z ήYr*;ޛ~^֜j(R֤BDEGAJjCBP`~(R3~] fI\3)8!쐂ga}?OZã_b~%oMfg5޷LadK?0qy݋t[^_3yj]cVLuK0sI=E;z9V]Ch5 چ mc~s7̉'z |+Px@w_LG=c۟e掹/B\Kv8br Kx,α衱XT٥}/Tj3I-w(6ZMGI^x{m mƍ*m3rpiL-0j= ,eD=`і)&>ڞ)ݻw ЗVsٻ| LEaADdjxM*q!Ioc[ft+f2R:E`Al oɽ(6CSFkE|^˵.fQ ~+7U4h|ҫ'Lɏ4@i'\Lvn0 ?}xikt-UjTsAU@QhhY[cl3=Czj^mN֋Q\Ԛ !O))xnPD!L&|}Rdkk9{Qnw_FV4 ,(F|7y-gu9}'HXBv0oEg kk Qm=c#ZLw+vW~%2ĽrT!ă>V13脰:7F-!)g1|1jw揭Pz:=xT'~L#|,Wn/o?޹/ *]@hN^9e1 (q!ȏӇ5}jj;aDyՋj֎NƧoф_ЍcIQq֩$8/.ޕ}`szuV99tW+,ę ޗ{0~?MҵbSh|dr+gn"e_#QQ% O/$FO6|d$B5GOEYYJuW6v!{{@vncޮC0Y4?~\|my,c}oӞܷɉ?mI&w{uo>mmF޽@J#9ϩ@ݏx !fK[u 2و(Y#fܥިjy[a2L|2$|!(a )UUQyK-QD˘9;8c5cd~C!}[a0[;!ȗxkB!BTI3,>g,6پ 3ߢ3>`M)(5B!*5ު Yկ"}F G绉x;~%SoB-HB!=Q0wv_*v3r|7q_;"#B!vDAl6p}y'S|wx?42-s qd:QIFHSαc=ExkeȘ~sQkա(]r$g՞)]gn| ^"Jpvp]AMQQTjݛ'֢#1M~ޗ Y8'2d vbL6SU1^!ƥϼ֗*1D/Q`Q{IB!5JM6ƿ<5u@5 cf\=ZAQIO3qLPe*d\}7E:LPKڔZdsVy+*SfBq]hӵg濴޿^i}}.X *Զ3$>Z˽\ޔ̥GGk^/B!RkdZxIP|X]_ *ɄR>Pٰn-c£v{z{VH9UzhooRZ1*LkfRQ{R IDATfER9xШwU%Wkdg|97iNҾ{!IB!/5ѱ~_܉|lGV1,xઠ !-x<|Vd $9~%rUs,S=pr(MY3xTREMN$OZnY 5߿fwZ(_iN !d[ƫj&\u\#8*s1뜳XbKZ+GxMJdHʌ*$glEēKԼ }tB!e )5ɈeCn-8/?lƃFCg"8UB1)ӻWxczSYRnǣ.^7t-^3xD{}[Go\刷I_s&(ɌoiWnʠZVﰿJMd:AK23}Xy${1]#Zq4ؗd\9 XK)dBʈs}j}+XťsUU4F Cn5kYkӣm-oPYѯkE: DAy$#yPutɚQ5cR<Ӯ5חGN?lڅ2y !^ tD)o3^ħy( :OK2N!BEGZ%0 [8֐w.Ο¦bvͶrGZ4գU+>_:BBT~;8!lnƎ9SA<ج7o YY94͝ɒ]Ǹt͉r0vp?גmITד]Ch5 چ mc~sG"[3dPLzEOSQO'aiuc.pI{Sj/YЀ\}?-坕[exf>-siwk@.s3WԣɼЀ0'3Y07FV2sgV(Դxm ׮NS+7|Nɬ F֢)lٞf±4W⇟xDN[o3Z?!#n}ܠ|r Q1KIB禹xh&V>p{z.@4[‡W3fk/烋 O/ $Zu~ޭS# |[ͣk_J]gfwiF9 ﲬEta:.\{KGKA1;-ƥpipՅmJACՔHܞ_z`&.i~(ia0>iϸ飩ٽxw8o}^e\=)b-SUw%eoUfv-LQǒQ1 eߵitj~mބ<;uSr2c ];J[qiϞ<nlj4B6kt]բhj̤zPL)*TZq.zQU3jCN rLx݆kt,HGz='2B;X/|+U\r *I|sӧVV]QO:ˉ75q`Ё֟'|G wF2?hh!(g{rJ^5Av⍃ݟyEjTrA: _|y^ W,.-I9yL>M9O_mO"q %kZQ7D_'HfYS"7;koٱ.if0FG. }(:G0_IƷ,]:M³ 6*:ߓtwT:\e1F0G6*w\ 93]D@2`]Y&l΀ С''6'r/dO K k,?/87uF]]e8Yʠ$C5|UC^qoNN\;u9YPdQӠ.ڑW?ZO[2L~sG1Iz1"e *dQn/oxKK??͑\)Zx\^:͗vRbc?[?^ f27zχm/23іBkG{>:N?/]ItMZƸEGIVAJWTV9ʙ?/{ÕLpؕgp>b(h9ߏFt-T3r4cR8@5aV?}c)cԥKk>xw#Io.˦ af *Uo؆uw 3ݗ4jx4.| ^F7Jsp,TUwf ej8]ip6WH%\w۟Ƈ6g3vLTG#R}i X{(k5=ɬUh߉Pj6fk1OOUxZ_)&*I7៕eوxC_BBV^mСC;ny;=,Fv]!C0Y4/@Ǐz /Сm9x۸ͶmݻwwnHs*&߷;/n0vr.K5B+[q__ЙWq8"}v(OP1H-DqdbuWQWEzXrZV4(z>K5B+RҮif.uj+3> P H/އ#h(u cwR&Vѳ9B®WE`FG%3>c(]6nxg]Ch2aTP6n=IP6nΏ|ݜK;/T^%J^j$on |-W9_MymFG;9ykדQoN8]I#~mބa ndZx ZFEբQ(Xbn r8Yx&·YSNbİx9S:s.c|u8>sɷ}Fv{5;Sv#gaʗIǞm ;I[!B{f5,WW0kPbʌ$z=h-yEТkE> m?FRtʪj+GF[qg Od8(Gjv`P uMQ}p*͂ŐAxf^x Q#Ï7ϯ޿ʯD&Ęڻ_Bal?O5tr ZJ&fz4J9 ETmAԂJcyZgκ [,$IhPPQs ]W*t~ FEr-19&zOu0_=ǖ=/5W2x̐5Vn>C4Jyh }wwe+?o؅0.ESpj !j&)WcK"m5~M^9UqvW4sQ>Ruw%{Pz׿¼קrQ\ٻd޶{0~?MҵbSͅn3Yr8E.>͋ygV;>Mu″pR} ֛`緌2tl'&<4f+\9ʙHmٗ3q7A!g=⭸Qw|^Ȳog2l%uht}x5û&2N,-o?f|VZZ>VF~dAk4i6lf&p RmXM`HoZW6ԴES6ܟ1WM,d X=e:)8NȈ/2`~TNl ,FSDZUyZMBb4h3G6(3?5 MQy}Bq@Or_wE낗+GW z&Q+Mj q}(B[q__ #eX&̦_7Bʽ̤cN*h!>##KFAi#T_M 8pAC6-P•m8}xr?YDr!tl/=B!b7ZnYUМi'95t63-K|38HM0ȰB!6sܫפ^y Y55W=Y'0+@Zxƞr}B!DRnjRE3_'XQ/ IDAT4e6#3sLVxH%q>{r, <= O n:uÍ\K3 y !V㭪_q}/ڴaR 5ZGB +ZZT̹_Gf3*4R-BBR4wv*hӆɈw.wM" vXnJ"Q㆗$B!(lHX'|2@0_K}n$~jzYr9є4jK12"u:Jdtcn@~%Ώ~բǫy]1fgJS+("x4, @:КRx !5׷BHgݽ4>jKޡ Sfk HCܹ_tYmS8p3O4dȄA<3y)mbNBK;y/U39c>_lF=&NwPU X[ nZͳw_ZC*h}qZJ%4c3DT^&XW%GA otҿvlc/WIB!(4EVIv=v^9S?dƽL"ޔU՗Ah33"`6p L**pYU`rfEJMnT~況ҝGN459Oj^L !AgR^pcg|\Knlx^xDﯮK{eeZ|߭@FB!쉵n#@G!X#t|a] Ebdo!B;co}GQ].$G ]4 =DH"EޥJ 7,hDW)"K %n?@rI~}f9Oڕ[!" nWI:eB!DA"s ,-BQ$xK]ȈB!D#w$sS} Y~޵77oehSUet=!2K 찘X"JQI (UUQ~_G_䫣Z~ TzB54WN}^G#xb6`cm# x( ho;'ފpsKyDɦ\_-"9(: !RN?/TcW BX77o['q"kbbcAQo;'B|,-`g+΄ݩ꤁@u[Kf?nM dP%XW [{S8s;ۢ;eopF{uSfKڭ&XBӉP={A YXmnƭ(oN|s|ğ5OTTM/s3Ɖ2 ?uj E~$bI3yMOһ1Mlll^#2"^]L&[} k=Uq6u7!,%~hාcQpXJ,a)u}\P w zk;4~(Cf C46Gʷ7KhW:u6տZHk8a5}YBGP4ZNe+}vjA-~2%:k ?&0ØҚP1j8وFS{Lgܒ1z@5qNL"X?sbP*i?B<L&nxB0gRaQiCs!7n ua[8֘Wl U6z'Xѡi^FGvlz4AF(E6^U_Φ]f ZFEM\խj.dΗU6kUƟ.o2`H:J[ %a^ >÷5~ls1zJē9z䓟qLj$BX^D2TgZ6S2kx(=ZG3~ߛI'NHHӢqP=Uަ6GO/>cEޔOX~[  7!&9+)]BQ0[i E 8]FOQ'm:3p|\OWC 4(<~qL7OP<>FUCOA!㿜eQvzti=o4~(B!>cC%>*PBBc4c !$$pC|Bdp}ln4俇&iϩC1"bNc8ɪ'>LB_{k-^ױye9~ ;=Οի7O;>]>1;\ѸW.+GaS).ݸs'8xrBgBwc+_[L'4:>z|Jƃ*-G{cfGJk6K;֘!ݾdN*T0%;r_ȶNcoWE1?o4ӉOW^ cF)/dr'g,!v2})[%SR!DI=-[۴if}?g9Pm6B&R o1i;sL\q6-ymn:uDp+h x !DAe& B+sDž(pQU;wtC=^EtDQ^Fo!>㈏Y/D9&Dt'aTR ®yȠаPΞ? @"m[o!xKs:ĈCi>t%uA1tjUhpD9;9S|EIdWIlj3)BC®rd2Z5O !BQ0ȈB!Dc I-BpUfI %I-BE2]0ɈB!DH]@}$s$B!Y$$pf9#joe& ϓxL loŧ^w_{s$,dě]ik8Wt8v(rVp3c^|+D%sEF&(>2(3."cZ0ʅnҖUtl2 Т/>ͺ3dn.D.UϗF=da}@5d߂tl1a#7M_f4|(qD)o{OFMAKNY~$as3͒OK,|Oچh}@֍M q{y0~ &>k}#^Hzlޅ>3pU-% 96u}ߧkhծzg{1SNyQ1b/mSAr!sS{7yl;d4;[Q z@uLv Y5%YϊzϮݛ3IVEcW _4_`^7;wQ57;3]|}2 0uAqCiٽm}v:g2hzvoZwr3mD_?K8+Ƒ-1sFl]ŌvN)Us~L'~Nv.H*QB96o &OG Ū5Y9?- ӠDv>LlJ{=]syCx$9:G}?1#9j7p[ 0jbSOƫ랅J PVS4/Jӣ;6s # GXWC-n 8/g\Lch]ڴ!K<}M:ҡLB9-s1Bٰ|?WlIR ˽ 8;83vEk@CeFpJx+yѰWRkx֝M6q98h5fbh_g\3M2v2\<3fsT”-Z&M!?:qn˩ 5oWLB qAn)~9EP#%kwa.Tw@ƽWзfms-Ūd>Դw:+[ֹDzBh2[nPN[[gS#3jsYEĢsFwKa6e;W1\b"o-K+SVBd0MGk3mO,V'&.oFIvzti=o4\霪#;ۮu_N2(Zʉm}( ݣҠ 1|e:y5q=ĐNK+jpЖw?n˰qT4RTyϷ*N)p{2D妭xCk?JTst/Mg"Aعx19kÐd(kYUQ5I,h;cS;+ )UkE~tnP F>%໢7/Xߎ96 wgP 8۪*軄طՑ)sYd >CY _T*F J|T8!!hBHH(dpq-H3SLXH(!!a<ȣALڔ g+'dokO*o~g `jU9/~r6ҍ[\=wG\G6ݦtGzx'̎#zzpSmkث?sDy:.bŠ`Syp4?LazDՁj,\ |cme8khIɽƁK[='r,„1Phݯ5w.CN5.$pn۟_Um+:vE2+V~j8Q^m*u;vʣzkvx5Phvl۽KZ~~w^)#ޱYޛ>>nl<>w+``8ҥGЇ׶o| ŤdO[Ϥ>=?a/Mub7X&,'g,!v2})[%udwup9湋X?nR1K޶ǵZM>~p SLcYiAuz'۫"8*?Lp p0U癢TtVh_Ƽ +flVʯKG+pWGHx?{ ~*ĘTT J'%OǞB;huXaƤGdN^μ\`6Qj8FQ+RuܷN=YGNF&#~qi b׃R쉺Rۺ 5E_A)4oʶ㈏Y/D(T>Ջ !ҤCSMt)wضQ.Q&0]%^? pxG/ᨨ+MFL#vv-ʚH3n(UHa5!EUQe$ԵrD>R56zFD;OM5I^mJ:㢁~&ٜ'LIݖ-[mڴIྟѳ[(ڶjBLv\.#E^^xp̙LvmZ$<,g-Nf4ݾk;Nsр!h FrB/Xfڤ:Z t2"<*dzBn#BQDܩG3Z?6GË$B!Ysܱ-uT_ a63Ho!B,HeE8[fn.i|-B! K9Jx !B I#ޒx<2-BQH]0D2b2ߺxi:1♧O'Ş~l9 éC"ERUE\w}ʩԱh((eq$k1Ȕ!kН9t`[*:g] {xvb6`cm# x( hoIUcW ' )k'\ݒ=w]pdv/iK\%9歛8`kc$NdMLl "(]m?wd ,án=ɥ=k{Lީ'!4xQ-}XxK܌qLC?ƏZzM]'ۦ% 450-`2Z7sπq3MK-H>jti}RFK=B<.zf3n z=&ɢm?7 } rxŇ9[hc(.ռIf MAhA5p|Pflyp 3vnIv}zWB*ӟ1~m$=S?570 *OsEmeߦ^m:eʱGd"^h4򑸠0g񶟙+w|{JQ)-s1BEk ZFEM(Fa^ >÷5~ls1nyB ,>\!aҺPiCL$ǴReߦ"ݲY-!Kz}HQN-x',&+H|Eg=~[  7k!&Wg9w^rLtJ͉%ǫ IDAT!߉Νr0ڇ LdsҞժ'>LBh}u)n <4! 48UHmm!!ĩ'wٷ}?\3? d?H[귊v{?}Wo>%!I7:J ΫXC/ ŀ=n%+|ܧ PC֘!ݾdN*T0%OXBe5&=KSrK#WM [?XLCO,vjگPî,}&!k}i!D_"ӟ^%o]#uK=B!t~n˖-6mڤYp٭gcm[zBl;sL\q6-ymn:uF­ d?G1|[!" GUUvm љO%{;{x(B$B!Yp'aTR ®yȠаPΞ? @"m[o!B,tjUјK|ə+ϿH-BQ v0& ®y2=(_NP!Bgx !BdSɫ$B!Y( WeĻ`JY$B!Y$#x !B $()G2w=;)\z J9B 7%!3y$UUS{.+)_|m?ZD.%Ѽ;t^R)MXLu[ZF*ߡR^ǖèhڊ d`cG?D5.d;wH-˫CObMO \я:jɾCز> cF OȠV=5e=7ǧ/: gpdIbm*[Ƹ&A"ؤ;/=\xi @dAm2tlO'cI.Ͳ)0?8ЮYCj6dqG&i?DKvR~ ƌԓ#z4n賬}Aj >bwN]z|q|ڧo֥x ܋OxJW#aV~DECquis'=P5qDZ}-gUL9[8o6 N=N;|Q7ޙٟ퓩mŶ2ЗS6e{,^Y;~4Fhr⹕|wp?7=cˢfkO;P*{IֵCGF9P_.$ƛ2i?G yh?ȋ9:4M!թM%Xw-;š:oqg We?_^$rǷǫtWRҶgKG?`+ q b2}kis ?_ͶbZ2dlj&P1\SC?C6@GV"G;}%UFOQ'me#%qK}a;F><*Oԙo(-**ܝqC+lFS/s',1Obzlp*ʚO1;V)W~vobQ]otQA\x/^s4~:u2y p`?Ve͸8כŗ0xY|>zhhLl}gL*` l+ԗnufCu*軄طՑ)sYd >C ^96rFNG;V}'oX0#F1;bnV#9kS()Ӈq 湻;4/~3cGt~i=ڨ`n5QyB_v3iqBB-ړJ}?VEt4'rg-Le ;=ΟU+'܋S#p}lii85^,[d: 0 !D8sI~ 6? vĊ(~Ԇ '*֫MOS(wc?OgYz%?=Z?n݋S4h4*1F4xلz@NTbL|4@E$Ʒsr1'@ ZWjvx扣%cU6'ހƭ37,glޏʩ/5Ě])K։?XQpVnNe=i?c +~p,M-WGHY g~α(ۇvsXԞ_M]YLsCT)F{C.lWE1?o4KLGD:>z|Jƃ*-$z#KQ29|ß,R I7<̖Nx({:bCfI 'ӱ*G鿹_%K7d*;oc\E8Uo_hZSEA|XU1%Ly,7K;)3R#q?>:SZV1?Ff3"SMR-\^kB+96bՏҬG"Ư4b.3o~|B<;l6;gA_gWL_QwFJ:)U2f|FqG^Ƨ9Em֦$ bO\?92xv9+1sn>%HTEۍy@ѹ} xҍ;1oF[ʷ)gㄭU1,ZEL)o 7-5G˺yaC^+kpLZ>HeI2gΜBQxzzf̵ײ^fnwk/sWBߙT',,B5ҹR9Ұ[/ㄚl:8ޫDӕhI?%ؼ2u˺ᠳIh3N3ߞL('KS?KRuCccjqՂB ZYX3z{ğ=+g Wg 3JJ!BB!SMb.N`zbcS>Z5ʶ%NW.,_Ř蜋SrmM5Q*A!ݸ|5cġs)N $]Ъ]&MB]/OX-.e[3jJ_jhi]Fߘ}+coυ[8p1 xs_5qɈinSYiޭ5``)ť6oYP6>dl`Ԡ 7ܐoN@M y YRg6r)5۲eM6i>zv@b%s^!B<۲2}#ivΓp>75 &&|֖c'QFMz}nߵ[N@@~~~݀hN7pͽ1mʕٜ!D( St)uB& tD"7Ih0UU %$45}됄\N&ݝz=૝s睜\k]Ϡk]\2yڝ+Smi.c6s\uBg[ٕtJD-SBН;y!! :]`T(^Lo!D+QX^ (F%.xd;:5}|*aBd(yt)trU!DĻ`9ibyB!CH]@ȈB!D`kk!ڀ$( Z|xuB!xNd'歛8`kc$NdMLl "(]mĻO->H! {oC%>17e2<٦S 2^ ^kS_mi~}=1cf^g/zDpwAY faY666xBd2Y|xӪyC!"M& w7wxh:Afx,vKB!;^!H> !Bax !Bax !Bax !Bax !Bax !Bax !Bax !Bax !Bax !Bax !Bax !Bax !Bax !Bax !Bax !Bax !Bax !BaxϳsjO᷉s@o@9kLi"$NL9!B!r嚲O5\.U;K/w?6a4uL|^D1^@B!eĻ2|QқUgyB!xX0NCd ZM/O?6JEγd#$,?_%5g8q&+ekfЄ4wx> v˜F*z ([5[&Ók #9'oaY=3Ӊ c[pޛj-0~h{;hngZB!ijɂ'Wekh1u]T 䪮,Mtu(.4?|޶>Gbh;|< jxuhƏF)|7[C} cĥGI ˧Vz9!B!)b !oi.Y02m[>ǗO\!k_NcΛXpF/M]t}4%c/uQ^Dھ,FwkU+8pv J)}J35d#\v5:;U!BL814zbO)6/ljAC&dq\  WKBj{:q҈#+' nَL+B! 1Xbc> h+ 7?oDVUZͰj(@TԴsá \g5&֥ո.ޮh^Eތ'G؅B!s#$^T׿cl[Ueތ|>c*lzz'],1'+S\;z|M9z OP{oVӃ 6hYs9wF3)3u E/9k$B!Ε6iMʸp]|sJKjYX} #S'mbmGYi'ͻx:Fu1kkOXp9_^/+cVKt?(|7˙VseB!.lblӦMzNTB!Bwmui_7 0$> o!B!qx !Bax !Bax !Bax !Bax !Bax !Bax !Bax !Bax !Bax !Bax !Bax !Bax !Bax !Bax !r)U9#B!) j5?qXv =%mQr헗P}ѥ^/}C[;Rc}ضu 嬳Y)OLGl'b89}wFűSF؄G_ `A+[K>ޑ ަlv8cyӏ ~"kIE%QVzB]z7VL}BJC6/%㕍= 7!a >[IwT-3V/솛p*w/p7K΅]rr!P^cQ Vzl={483-OْϿ2Ƶ?{L;Q.aj>aҪ!5Չ+<㑼Ҽ5}s 2c5Kq G]ૹCܮ)5}JZ7khJ YǪ(Kyib? dp=u$vh.+W:m0qm {ѭP~CF>i߼w;8y?Yp BL}5#xPEWUc J"Us;1]9MiIA5p|0flĸpW]Ԩp{YU}=dfԡ|֚13FP+:[]4huT6բg,G?ʜl`[z!,>!;3usbf~ۇPZfmf 3ztMO9$#^LGP4ڄ~h}ڗk0g=8 |G&φZ?M!R?oo'`e!2Klx={5tŭg:e4օMR䣯Ո#Kw>'Ckv; ^ˉ'yjŚg2"R㝩VvIW[s106{pyؒAU@QhhS8Mv vt_ܭxcd ƼbN  x%ݳwmJ @Vc&&ƈɓ O3>*}ST;-N/PP*ʤhQ[ ۝mCLeŇ_p9c%Bt޼.Rt6XaDs^gg_`KEd} ǝ(AL`xΙpU,޼LVDegka&u:3`hڕKayM"}SG}j6;=vR 9oL!qLm&Y1N+6xb6dټf옕Z3څkPPQSiB[.j0N0Df L0z:ɕżdnMoc1dkhpЖe4Hb~Q!ɕj<BBB Í+ܵ~cw*W|2C6ҍ[\=wGz) =YWIr! kO*o~g `ۮ? NoH[FW5׍Y|?Oy/LJ4ӻA_,_w1=Ʀ{n %DbŠ`Syp4?0c V s\J43Bo]۝I)V%N\-ar6&=KSr #z/g].\ΖYcE0]ɀxY͉}8/u(9%A!"IϜ;~+d}]aqB!r$cؾl7#Չ3yNI|kP!=xgg/xo1FFn^Eq~l̨c]s̙[<1ϡjxr5(y !D w>pl]È1bWҿmXsu,ǻ-KId tgO9o7#D> sx4D<~ㅕtl߄d#9HѧX6C`d QUwޚCw3)QvhkAzj՝>H,ƑF'( z0ݯ4ۆeN"{7g>?cL,QQUx16bY4voMMu]YCj%]&3 G8_ ǭk),-)W^Z~1Gr$6-g0}^)z̡4s(3/2|b|˸`̱?L|uv%[&+K'yHFGݺEIePg2!,Bϱ}.FGԃ()D`X٢,7g WjwBԟkCiЦԣpS0 Tڸɫbr5Xa_ 77W<ź/35_8w|]SѻI+F1U9 -Jttk_3ߙw}fg})Tw<#P9XmF2W_98} s❹lu,0)7a]M̜ }g90xi5tbpΨK#%USغ?Sh-:3/,%oi ~eḳR8]ށ ‹KW W7E'{=#HJ}XZvlk0t׮O{}̠٤l<(g޸ײ¼Jc^v3SxR`q c hfdP_56SJv2&oσ 9MTm@aMiQ5kWìl֥a˯x͝ЎW!m:A/2<̻gG޶b~#޼VVcthLzMD@!בRtɵ-aqFu^ew8=scs|"U_wZcK *N5Qe|Ȍ)F66wtC8Ȏ;9 Gw^ŏ'bku8'O[@fFW[fFwkcTܶM!IrdPb.*,Dn?)R*G_M_.K{ײd\K괿7ܮ'$6oݾ>X؉clRsFfcތm֛1p lɮp) fCF8Nr'SF*zb9{0ƻJZF )z\»pusaS`ޤ6f`Tp+Փ<Q`mUp~ XK\GCԉ$bC {# ٣&B&_m@E~#@v3zb]1c­ڈ S.9M#䴙Es`'>wuk3R>: ۦ:!DzσQY?ٓ=W}L VgOyr./ܢס3]%r^(:-ـ!(Iz]%Tn.ɶ%;AҡH$ocgK놥N;nwX3eێ_"VWs2L鄇EGUrs;0^ZT܋׶RU<>H:es^kzWƭ UvƝa*|Ŏ?p#6~?v%V9(iNI"))\9{USe|;A#0 SKD'$I^BmJӒɖaȈ `Ar|7Tȍ iI8g^oN赛܌8/?~y MtY\$>#m!]"煂ȨӢ]86AI2 b} ]0n;-Cq4 q/P8g9kVybXMz0mkLݿ*fTq_:/N~LX7$w+YQ;Q{ke+̊"/y46j1yp^K4}UF8R x-H;?dͫҬ'˶z{xAz o%ۿxe9Tq%h_XM0lOCunG#ۄK4cX"*IIL\8zb& XA ˷^-1?6=/CFqYԢ@ǴJ^un`+r^x)#;btQ&8'ň_5P;;vPݻ=ěoz@w3$6~13ڦQE#˗/x/5ȫD9X232ZdB1Ͽ=%>C~K%}ʨG*һG.@@P*r=}* GxWBn.ϯ0AAA(}b   Qx  B9CMAʓy'֩A*(A(52K2zV+Iwp~" j"De(+eGiD1ޕPx5>Mx赊ExA=id}*qA*(+Z=`_(r49(/<qAD `&-%f@Q| isP>qA$ g|>5jب8FNfk {X8fԴa4lYtVnf(͋侟C7bTMv^L cؚY5ߤP|$oY8VV|ۑwR~0 Z&Jj:b$C[/] ǘxBYBډh/.Ul_9->-P1Dw *+o<2T@~oV%>&Ԭ_Kӫ;kޘo*֘Ec)-N [)U2 dtasT,CLz79O2ߜ&uU 0.A'F%%KPJ:25HddkQU@>=z [B g3GPDȯRrtVchlDȎ_Vڱ~}232Zd]U_Wݟ5~GV 7ot{S elmm'Rl;:-{2^ a]'/AIxUհh6i(eF CCdT*k~MJׯE@?fϿ{1=JWrz{ْaƂѠV<_HdJԷjBINUyńJ-7RYs4 *l%-l P5\Lf+d{n*yOU1ZyY*ro"5h[Y0Ž1:8SE%Z*p)Gx TQxWtZ>Y2C#%wS2IKo.\AahHV 013b&St)bU=M`,JŴş*bC߅+{n4uܷ3r}EӶu%'1hrL^_2׶$a.r0Wߪ{#`{4[$)hJ F%pɘ}j#q2I;Viƍ8IWJXWʕXMd.:|ˉl=Dtܫ3 $q]+ǵK-&Ud;\Qеk5ftW3n&wM-ٿ3%JXI=¶GzD _U+ǹST-e?A\f<CfeWϪawdAbIrusaNZN\tx:ܧjeǦ[6 Gm+8G3h^ȐkMa6yЦu뷠cFX=\oj{kA?8$_&^8էn[&GL\@P ߔAIЪ5d齃(mbؖxh8 2#_w7@JT:srPIGb͑REp5"eq,Lcg蛫ޛտ\i%xcYDgf6irѭH%ee_"'*W1vP]j4\"2)_ :M 96E$x T=;vPݻ=ěoz@w3$6~13ڦQő{uG2mRJ}e%^x *29Ǟ4e2}^-QB9( eGN͸˵ ʚ |lڕs\'K&QVȩ|p>~-&šMױlъVϸ87Aչ\Ξӭ+=v="#[_T 9IfߝuTGY[YtI4 gPU.KS% #п{MAqvbUd^ŬﶶY^|Bkl }^;n=xg*~ DWQA=)<w)IOOfZf̍d2jլX X srɺVE:WCD2Ӳ`Xn}ϋ wq:*}Յܳ!\~h3 ԡx1Kzc-,[dgܠ65%ti7dgY.ĸFF̜ͨVV33XdJK$j-m(Ӧz*s. {~7G/s[\:)^4juTbsZwx%ϼOi|o^nK:cD@j IlyKYhoTw{mleɘ5  l=ϜS$Ю9.'@!1w5)&?U?Fi~%Q~9vU9wȔ 0l\kkeEwnLL>' ?6XXXћ>r#>Ÿk~Td2y4:QPOJ{\aϯ\oЛz&_<*rř Hxߎ|?ؼcggԵ%ch$'+83XXp=,!:4ڜ`%IʾCJbfV~4c:l_X=o'W%i;C8?68 Z@Ʊ>biL:@'/|'[ʺ-ď3x,0l9y5An}I9+7Ԁ6'~IYF7K[,d:RCCrNj^4?r觽~#4D749 {d\Olgh꿣q ]'fxZOP&6{YS~9Oy[F^Ş1 Yp5K*̉wﷳgn ̂M :V|:s]afN3Hi~EmĨşv+<_yQs94(<ҷ}_AxR֥s7>t:}:Nͅ;i9q ^Orv8ֲGbneF`&];K7ݠ*mݛףK 0-pjꌃ.=<sJաKM27{cZ2A) Y5ͺvEjԬ] 39 P@&CPP(8)W~C{]j̬ [k`*)F`ӥ35 m`-vvd[۽X0{wC3gkJh$&*塋 Yv-5w:C;6^hHy7׾1u68^%A y7#6vUQUOz^ *yj8 r9*5 KG\zn}m#èΫֽG{NtLzOPk8C!7AGbIsusa#X;gޓߢA gn%sV2NT IҲb$Z6xɔ&(qKfd]wc0tl$w2hۤbO  ;F|KѝWXZ&ɓ2Ֆ:DxrGڒf>[+?epiZlw|QzҦǐ$92l3s@4NF:N69ҤFx#SZC1w&;q }M`#pl֛z3pNa4.y^^Axވ»Inm^zlzA\\3use!7&(/ʸ9#piϓȉDܞV(Uz'>6#IĆr#C`P5Yr7j+ʰh֏9~H#Tzݺ, xՄG";t)|kmS?x ۭ0Bυ[9y/4p\;\.[ &ʺLܶQu_&c.DzσQY?ٓ=W=mDnސ~oufk (u2LW8)<CMJ5bc)_ߒ$q+6++wusaH- F"%!m~;\Z7,mx@E̕H32I avB;+*rs;0^): ,D2ӓHV>4z^TAb,Zӻ4nhPXKEnw5nR2IIɤjQ%-3D)] r[w;h4婢ryo4cyl I$fWTxa͔l;~[qD_qG#=溔o#BnIN6f|wBfy~c0nlRygz`)=ޥsEF9¸0n;-Cq4 qr,94oE-L{Gnu/f $hDVk=vy{M@E=^UzgHE׻AޫyBBBT@GC] <^`"A1ނ  PD-  @ 5eމu(&#A[AAʁ(AA» '^ Vѡ/( PD]\ `?gD#; P6D]\9A=LZ4+[KeʍAAA(;$ g|>5jب8FNfuʁAAA([.ALHnL >:c?d~lY'8cۻM=>]tu{/VEƔRpu2_3+ @ xpaѫn^}  <-QxW")~Pu7F:'u[de±/ZGd0#5,=# _e@^L3N#Oʡr觽b0ʦ|sk7x##*+A F(쯫c sP j$݃kpzzugҁǞ٪}~CilX&<3,+IDtta`fm)rC,mm$8Ĭ]Ub] 2%C6 1 /x#7˥>>]qw@K!d7ֱ',qogvZs38^_KD݆֒2m7AxֈW 4vpN]KZR:FJrr\<bPҬCc,9qq:P_&e7t= V&t|Bxw+{gJf>]tĥ;T{/6nf0GPJ3Fce{vrM 8G,]G8C|1﷗u[)f5_q~s/0<'nVbW]afN3Hi4ܜ=F2wVwçG6;^YYt>of϶5,~=bgICx2b*|io͂c]WrrpjbqqΜ<ƚz.A뉵,4^}ZIDo`$hK{AwrusaNZN\tx:ܧjeǦ[6 GӰeb.øf컙]+WhS>vХl<(g޸ײ¼Jc^v3z65:5n@AqUV/7Gm<aīA5e(n۵dG0}'S kuH:ըYfr;t_uݿItlFJ& #Nmx7u e5:NfԩהoyHMTJ~ա=̦3;o24nt+E 3ls!~~Sn3C ƅ+Ûmɛ?lNpV66r VzlQIERa ]O|IlȻ}}j;.K{ײd\K~-RQ']#QQv_\W},(,Li:$>^i{}TO4Ƃ:6Qv;Z}1 eIޕ }Fnη 2&u1[7g.J^ȭݙD Lum30O o ;yN$jX5P[UtU|wgoXyѽJ{ؤpb2چ%-ΓlӚZ_e#>38~'{ NQ \617vs,;NM_w_=2+x>Unʑ!!=9Lύ·Qf!'r{j[A&7* W7dے h$R淍u'lY#L)ۻv5S%"o}oN?M(ҁ/go;gȾsm~ e} 2׭` Sa]^T%2o\˭8k!^yP_.<n&+AҢ$idˌ0QJdąqtW0ި^væc#.-}U]t+],^J$3=dUv답,8^|}",bDIRxKڕ: AɈ.JͅqsaݜoڏAG5m(۔M‘>]szo҃m[P6tDŽŋ>xIr2uZG=c}&n|LϚzCjK/dd1ŮNcO4cX"*IIL\82?aV,<54܎F o/YnR6_Ivԭ&S}QR sSnי=gYuߍLoiRfۡ/7lB՗O"/CFqYԢ@ǴGDšܱcwE.x!|.v%agm9 6*:s^ _er`H]=˗/x/5ȫD{syRσ=%>Cӣ"ݣz (^{9OHHޞ Ⱦzo=\\ _aTܨ#Pdw`):R&ټ 6/P  Qx LtUwI&7[?dUFN"OAA' oR2.=>oE\!ᗕ|0aIj̪}>rB݂  < Qx ̢-_T`T=mW` PF;N  Kϙ~+: oRFA Tk  w%zOfzC^P"A»3~G(w"Al»r>{h:' 2 FK|L"=YN]Ww_H*, wDHcՑP r~PƢR*$u d?e`ggbK[YaUSEeHZէѱ 8Ѭ'Z˄*?3oY2bׄWH4-ezȔvAxЩ@}63yx Lw<"/ݠUrs4էCvAsh2#SuV@^H #s5-f[c^L5>GmJ뚬iI\͵=k)Y)?%sn&NTk)\m&S(ԩ*︘PUFT*kpADU.9yqVb֮*1.c͘{mmG S:Ҵp|>D]CԱ^BͱĹ7}67y~۞PB+i}}N |CXIw>o-w2O ZaSSNGjX{Iv?Lkt`ٌje=UNoϜS$Ю9./ޙKcqƽL =vD% eToZY!v' 52~ߙm(w\dXȑLIoF]_c$^?$`p*mv+Gv05@~=..s\v}\AOjTtZҒ14RKLD_p,l,АfcimΉ0v07WbonMTaJoK\$#R:c.oۄPIt|w^gQ=d^sG Z_̌5sKzS7Ҹp+ܼ .2%v]bR\vݴ 3c%zKr?x2b*|io͂AtӃ 6ro75 K'Ļ[?WR7nq~ 7c ^2ˮ+9e85 [88gNcMǒR5ظlkA)鳎=ۗ1V5XB㕛ӰHJu&p|,F@R%i; IDATC8?68 ZФ FS <~*0ߎZ[\O=(lxyLgwQ]3zW{qcS}u6m؊܎b Bq»0vp|'-'.: \<AR]^ZhвcS̭\̄iز~ + 7.F;5ڰ8>%,mgdpv.)*~?FJjI\s$H5ie2Sj$qX*Ҵdg,eYCiuee`7׾1u68^%A @!בRtɵ-N?ƃr|{-+̫4Uow8s +iֵ#-TfjB2rBI>7ݠ*mݛףK 0ʼn,4^e5:NfԩהoyHMTb@nSSg,,pt䙞X ԓTEm^i]8o)vbS~w~?m&$#Cr@=I/tQA(&1Ԥ0 oѠ3 s+'p$iv}1F-oTG@@4[ )Sа-,hh <Η0yv$-BQqխqf0;7\1H# ~+#]bezȔFCv=]'#@NCg4Qe|H )Fj:)Jt@oEmgi޵,3c_VXCF8Nr'Smjl^3O\YNcPzVu<|\%Ƕdfuf@|]둩z‘Y_i6}}_ˁ_2i5ɍ*НvT' Jͅ>#X7[Ny:XژajnR­3VO_԰ǧǰ &,3揲/v$$diNZmjJk _1 BCV7ؕZܫw>Je#>38~'{ &6(2qfFt?"oW(GTN)kԨxCQ \61(ոs./7g2&õVɮտ!{ٗS$B׏-f;/~ǔ]†j}~?hv+>mcU'?6ACM* W7dے h$R淍uR[cIG̬qoiSq>I*I5(6ߎ6GCLI`s}Kb_Z=+jLN5#TdtO+R9]V?05G9SZIMܜL3K9Ov>I*J$ۻv5S%"o}oN?ǝ">X8bKd'*I}ǫELDF\Gw7es%LCX2݆J2s}=S2rĵQgcg&EIA);!֪&}Em}jUоQբt- YlNdHY:{ܓsr.9'S')'uUuyyy4s;YoHʲj]fäLGfKll܃[\BF+9(O %ٶK ㌛?JIņ+8#r-"Bf:^dx܎>&%0FPs[l\H\W'%U*~A¥;-%2f,~GPEAJR7"v/\ɕU>J}#8CVW:3u$ZVz2ldײx&fchِ-Udo?c0~F yc @Upf>|jpYЪkE=_ [6c¨os=&q`כؿ geb:uiӍsPR N?p!BP09Kݯ0V* u}h98s0 ( !Dnw^S;qaJ<0%>nev׋ Ħ]b;`]P)EU t0el=ꟹ·YW d9S/KH,M>R%\똢ƞ'EedDE{зدeݷ"w89\Чg G^N;odϿt,9(B%+ʉ6T "Bޢ\(Уf6\L#B!(D mF*kvȻ1#7x8!ij0]; !xiI,B!xV!B!ʀP>pYLŐE$B'wsb07ä%cG9A!tH]\ƃLl&fLZ:=|eFrP!(=RxWW {fzLFFue:]v<<!g 9XL,H]z?f{N%#]Mjr( F$=Ð]Gs^;`ۅ 6gL¦g!g {l9ikf:ڒ'2?\wK&Gc/hG(OAݦsy\(<*Y!D ?l)3HIJCՒѢ"2<Rr"klf4mӸ1\::ƅ_zwZ8 ]"u cGܲUiг[P:W9绞%s i=sJ+JRi`QXwB!^&Rx?AfyNAIJRNŦP("2,T+vɖ%;y}\eк| 灺uiҦEUrFO^CWjP.`EF4~o 7OI\i*AFV !xVr}c>R"-5JR";KC围zUDf}:}k]#3zZK4)| ێN w5|71,d:z8`1w[)Og8SlB/.$̗dv_rt־nk!#%qaI <=YMgh;`?x}eF~f1ĩKVyX̱4W9=ݞPmOnEɈrcĵ?p#MoV):mEI>[L9^ ޸C`g@g츐3+$OesHzwy=2c\>o;&!/ Y.Gbܭ|f*z$'ǝQ ݸJOVm`PM{|B[5s?6}.q1 M G?'}tvͨ[JHmJ8YՇ)*ڴXگcu-gW89vޞ/3[O7CP(UƒGS6d`<jS#2|1'ѢfZ?k{ҍcƢt">ȟeKNy^ KES,W}@kTǟ|]'/a}t屔qU9q'9l3=gM&xk=?ѸZ,6/s7]M)!oJC:e6Lʷ,Z߮J )W0}Ҿ(MB!*!)ˑ5czAB\2A_G tzܼz6[hطї)'~Y7.̷v>mڟifY7cL7ޙ (F4ji.XfG<JT*((U*TGLEN?u1f<19CfUN,9U4wY Yy8݌f0AN{mE3Lv[.4i:-B,8!S[}u)9.L7bPl܎pzZ :^PpV|ڒNr'R J2 {W0}ALej#WBG3;k>×xQZĬ:q:jþ}x+G}Ŵ:X1{Wՠ !V6LK}e3,D' J*7SY˿G Z ;!X%իL1?::6Um(BJr^VXsRo(~Ut{u0|KILp}': 35?J&1J`V#DYB5C*XOjhݫd mQ6e;]IBY`v"Kn'jze"jr@Q@HlӢh@W]ETcB"eG<֒BdD1PUxrPZ9IKUA}!|=yyoKk:fnO?sJ=R=Zѥfo$BI]AY>5ޠՐ%>^^L\<kۦE|\ ŭ /X~CiaVyi]Ʈ/s#*ػҤv%ȤdbY[{ INcd6]!9!fKllQ_i5L ŦJ3F:7y M4_-烹7'OrхbϹ%d}.FYޡY~/+FrPBB kIU@ϒn"?#yPHo.4J#UN?DPZQB٫l-y& {+;kܖfے/;b'3n+z PMyo>IdU3\<ҥ @!#W{Ȟc] auA63cq PMwvN$Tdo?c0~F yc h9}S6lC_2W RO*h=szՂqJҦ5fϰ]Dل泵7O5hPKK>O`=#;|*d{oWn<'5}[R9!%|+ ձr~Tƌ^01H&z im[US 5_aafjpYЪkE=*Vĝk2mӫn0!"W^ݻwɩ80a%ЁC2 ;ńFbӮYyLֹZ{Qe\In-] Kbs).C\uLQ^c>Cr=[ײq[J ;Q w||ӳO}quuu&kRso)OeŻ%n%$B'4D&fqcګ4&r !B) 62gĪVӆS0ӥ\"N!%B oQ|]~KyGQt/(2BsB!B)B!(RxW@ACe1AC;B!JՋ G Q$B!wrB0>2I3ixGA!UMJHbR"!$$˷Iu[5+ޏLEF&f$cJ/FF6K)`%?cܺ- ʺBT6Rx`kӶ- vVKXx!ضiX[AlϩdIKIGTy#W2~<=B t̅a=^oYݟ:k+ǩC<_f|kgM8v=I-%$!SEZ> zuz- g=N %) VKF:#KaʉqGP|n5gJ542Q#,}W9XY-mVR2B!*^U*Ot{S`{W,)3IIJ{/;+Ȱ:Rq.BolY tRY핪(063{I#תcq#TMyG+`:T}D 3L Pw\B!^J {mwŘTHK@RTz&m^}Ŀcl_sͫU) rm~ p7ͭrO{(fW'l{0yA7.`>;y6;.$߿p-|.:^\Hȧjf眑ꀭ'q2ğ&c?|3bp;\x♔i&fb76f>xHAݦs2{y$]ף3z fki ?ΠvYIw}c2zp}{&m-o.;`8?2BT Rx~S|kׯ=wQ{ 뒞AXpN_Aq= :6Ǹ!9E=@m*Nb# uws>565Zo]liʟ{ y ȩcהr19f\;Ə-p7CYH=ON|th;~>_wyU~k !D%KX=7g,xpQFOfQxL_Oč(n_`bԯΆ6[bhR ߭|s&gQ%C= _i@W(Ws;]7Ð֤pz֐W^g~X[4QK+,͌1uk٩'[YQaKzB3VJ %* ** qb+,PI瞞n}ඥ9J@] p=;*Tц3P׽=^UV;Ӻ~-ZjJPF|IMnqhڱIl&L|>h?t#:7a BTZrfcgcغ+\gCVDG#WӨZm6W4k˺{HNsfc-Q'+t }B*hoYϲ3D'gC'5I\n+kKɩjc_q+,ɽ{Vps=RY4BqȤ%][$#Hȣ9' 8S2mg0b _ B!*)KV}v^=/6vLrö%_2bp [شU Usnܖ<*S t0ktSqH9<^O=Zƛ+Ѯ6gY 1Dox:M xBTdդT'vcujĤzY>5ޠՐ%>^^L\<kۦ%Wh^˄Gpߜ9Y'M aWBLJ&6ȟ5˿%p:(@2Pn܈ >>T>Z"8AO|XLm~CrB,qi҉[613!Deײ޽{NNNx19+:зIW_/&|4v;7Sbs).C\uLQ^c"% o_ۻo)E$ċGqr,O>HRso)OeC$B'{B!(Rx !BQdx>]~KyG!^F{B!*YB! H-B!D» . RޡBQ`^ fod ^>R2'9(B)++xM̘IKdzg>H !GjRB &!^}eSmW {:]:MMHu動^5mS/9A!tI]BBB1aNֶ(ڵZ-aacۦcmo=&-%RAH_afw -|l n=^oY>:k_H%$f zuz- g=N %) VKF:#KaʉqGX4c4Yj9HB'{KX=ֵStϛ ߾6vL\< 3o q}-Щ_,stnVaF_,\Wğei\>І3pp^we TѤBԐFelIzuhd2Vj9w;ʪPf\αvZjCKw\Z|6*QZtYu SlP52Nj龢E9 kgQ%?uš`@W|jzW彨B.w6vָ}K6Mk;Ŝf$g )"ɦv(5zMW;w^wLڿĩoe\qS*9_Źb&me?rv"97jc]iJa\z-9^llH6gas"\ge@kDFrv3;ʖtYBK Wڽ^`}6vLrZo `բ>6:*vދے1X}@eTF?5&Lc*ᓹGqӯLKgl~8E*|Ln^\˴6s+G~sGWNю Ll]u}7?0;&y Ygg<\*S t0$#t7g8!/)KIuo=V\}VK0LLy5ncZ Z YYZţmZ"q*_ȨN)iF_iFTYh;  rF8t0'/s+6 e]fHlUOmݍ#UN?DPTac5o-x_<Bгi4|~<Ͼ&>\hAi]4[feB#qoΜ<B&%UBB ηȍ5nKFmɗ1~7ە`4BOZłelّJB Z:&Wg\7,Gm!M+VrR+T hӛ)Ve=B!^0դ$$ܣnzݷn>P(WS+ٞSPgJvV6LYDǐ|/i+'s2vǴ8胑G43&Na/Ƽ:|? FlJU!3%ɕn}{ l*>9uz&)IiegeC_WG6sWғ-KvzUrFTc)-;ˠEs٭%VuҤMWޞZa B!C$*i(U9[8232 |]^C>{"#= ktӁ˾fҼM>[[zU.LL1{`\Wښhg,.;FSC27p>8 Mrt϶@F_ Slgk$]|q"h̰:gXאTP%4>=v\ۛ5ǺFMhh{Œ`v~sĩAk8Yn9|!kYի[tQ N2UtdGe*Zm~ذ G.r;ή̛7;S%I/;Y8GfUKZvChl9"Bx~S|kׯ=wQ{ 뒞AXpN_Aq= :6Ǹ!9E AKV>ϑiws.>JTu{<߆N#IwDqzuڲ49ŖΆ9]UX1kwr{ s_ e򽄨=N}2aY8g|i=E\ʹ65(Y1&_KkĸU ^o1nNđSq,K76S]w.kS摦Vu=_6/Ήs׉M)_l{9s!bgpWh!运]nϻ-2B!xIH]ºu9 7g6z5cz"nDqzH~gNv6Cjn=Ĕ ҈F-02Һ73>rCAiхw[' )9pRKwV(T P(PTT*wi0[Ӡak".H5hϲ.G`g^*50b3; }iР}9by*Qj|1l{{γv zY_hZZtvIVVoؒL{kT:88AM0d(651܅5U:qD ?WO&gQ%C= _i@W(WTԨ-idӞo9jB!)˝5nOR MZ[abV8@AFaF_>K6M=e3,D'gҔړy 'iHx3zxyQ+tAN]ifzP$㵏=e+'&.ʑc_19VU5ILp}': 35=:(t }"U͍9/'dݽFDj$9g 󎓐H5zm-w^'ޜ4!'w j/ڽ^`}6vLrZo `բ>6:*vދے1X-~ qH9 Ll]u}7?0;&D|͓ʨ&յ1\~9DJ 1~* 2H$! R/e^#?̹+i_8ʕ{T6`IGnnĸY_xs&36s9dcB!D$w 11NNJ^={?j I<},^kA!+KK|=nev׋ Ħ]\o[L )ˎ/>*7S>oZ[a$&&Rzu^W]x !.ŚG^cBT<}Z?O}K)"!^|G8c.}z)?@{Ky~.+5׎KZf8Ew?zȨ("x-zzr!2륔߾Bey>~-DžBQI&]%#nI^Dw8!Bj1] 0jǾ>ePVsU^d~ !o!B!ʀB!B)K@>pYLŐE!BTPRx?ٿ&-B!"ORx?+xM̘IKdzgB!)/UM &!^}ŻSmW {:]:MMHu動^5m ?cܺ- )!B業BB1aN=ѭS]{R̜ৎ 39t5i C`wVO3 B3jRncP\'v;E\e'×rr>s'BQѼwB=֩Bdn|p_PPnV g=N %1l陨3 !^ VNdݲ26zS uoRu8MlB!-NJn}{ l*>9uz&)IiegeC_WG6sWғ-KvJ]DZu,7nD)~1lz7`!BT&/g}3>R"-5J@fF&oҶkUOdgamט}:}׬[|'mFuI_e;F.\MsAeDn|`XYH7Zm~ذ G.r;ή̛7;Segx %N z5^y2fv3IŽ/=tY=ΛB!Dү<zS_~bܭ܋M@O_ ‚#p~Ԉahձ9 Y&.U"jS#2lϘś8omoŊs;u*f8q+Цrq/6=ܹ^ww1_)JC:eކc*s⮦n}#gE?gNB!xq+ݺ[@N=o΂|Y3q(K6M PBO%+[T6;Jt3 ]}t@-=ǭ{YdqHNsfclIgOckV|#n'];`_aB!/j}ҮOΚIcضKFaV:*v܍ے1X-5i<]#i-.fLm"5FXPebۀ^W?Krԋko؊Gfe @Jh !BTj/o{ճZaTx;kGӋGcm۴h5! X3eۄ_+*VCPO*] (,c?;Cg3%Js\2{^/s_Dg68RjICe1"1Ds.ǐK\Z^KZRGl\"jMq7'"BQn^VM r͕mh-#p8揠y"pz6ƚ=+&TR~szSKU+'mE^ McPX}=[6kd<1lHmoE#S,rZ̪٢gAhfUY8eLv3gԐhӛ)V2B!xT& [cE+ խW߲Ca~g6؈CZ=[-B!*M ڰ,3δ".զn&˿> y=r!MDztnyo1E9qpΎ|U8赅Ucx6k~y΅9!DgMܷ7b!BQ*͇+ֵݺrysZ"8ApDO>sd ws0w.-Wu2ܸ7gNEtV!!BҬx7jBHh0!͕Ŧ׀pZJGt_ɔUX0sb53;R--pT+3W}"Ŭ1-zځffQ5|]F jiIiWY}=[6kd<1lHmoEB!(C662.7R.Vׄ[F-xKͫѰ Ov c:o>xNYPq+F.θ!BQ=hyfqqYB!el5yh7q1oB!*͊@Nnb&Y<>wdl$@XQP@}q ZتQQ .uעjжŅ E)EIHe 003w.}essoߜc5GǦ'fexTwK%C5atLjGmv=G9;/5107`o$ Hx& L@ Xfy`}$ހ} ?X!,hA?94|vڭ:oY%jxp8t적& L`ɩ&6mJtG͆MPx& L`ɩ&nm߾C552 #Qf@[ |rѺ'8:P]1p8]%Y~]]x +|]WW*(kX\DWG9^C ,x-*(kXﴴ4)‚lDWG ]MƔRw5`H Nt5#fo X.LtƑ`=e|Cj2~x}5:%I7N2ė\v{:l|Pr*EO"RnbstG}yz{۪o$egew~8lPEmDh;y3^ 8f;?xvVꕝSƞ명d;??_O:?} HYYY:s™Xn Hx& L@ 07`oQ}΋1V'gM8+SMx& L@ 07`o$ Hx& L@ 07`o$ 쉮ě[u<Ov5h t>cWio^546Tî'+3K%*.*ft]bbbb=$Z$[r4zh&:IZI[o;]jk5kÉIUTkg%I%=K:]XO$17wFr\N힫! ?ʽ$r2 & &ILE y<t&*IYaMihl &&$i z"IJx ÐaFҋ91I$=_s2G8w &"&CL'w4Ht߬__ν t&2Gis(]FSZЫj<-2LE)G$k$gzy\ZܺDWLR?{tZxfLD_w5 5^_@҂.1{qÇ?cW#~4R9:2d4~v:Ew>zdYWG2.am/ך}g"N&ޝC"ItV[ngڗyTTqǫfg9x]?>D;ܠg')0QmtҩdHK7x@dEz#CoGtOԧ_zmZzԷkk}m0Ai ]s~#0U5uʻzQw &ItVIV\ԂPܮU/}6]xP%kJ./u#ǐ*\B*eFKր#4][?B߹o)ǎѐޭCn֭ҕ6u*/M/(O֦4;z_i%B>5v[iR4pc-o](xSn݋C'`ܩ7M4$Ӑ/HUuSwiAOtØ|6.BoڮҨq}T<ڱ]rv_|#Lf%WK-2}4GtiLCBe5Ӧ}ngo_|>jF}ۇ֚с[+$kW 'd;'sbҬ+c{^Al *qĻRC48K{iw;^V{ %%ej4k/Ǐ?/v/soq~ j~fF0RU2Fͻ,O+rni|Zk6im+׆:sHN0RkxW\i B\O=\ #\[xp.tjfSzegڱRmGk7PZ34i>-}I/im;[ P'2&?hYVHQzg;{wD,׃lqW^)u9xh 50Z6}G[֯oC8tۅoRr5uUw4wUaJ,5Dly'Ƈ֛^+OܡjVjN\rhwa2t[5zz<4Kg[}bҨ-UМRq:z;tl9rH.P}Z|f ۶OJ~\9_XN-ʫ}St*pEsX^}6=LUޠ4z> ߠa2B;HlT$:j`eO?VO{U^f9|?9CS[_>u6Hg|C<3C2j&kShJr4dX2[?&=ft+-LÎQ0LξAf=-N ;&Q v%K>Ln:1RMMMJO֫|dy!&nL:[oiԩS$5Jj-%5Ygj_ H-bb=zŽIHt Vp]p7^߾ǚ^$NfGLb-D0V -^$+~eak:Fn8N{mdx$֒OcЯڊ$& _lkWWa#&CLXaij=z0b?j+"#&GLX#C\ahX1͕fe0d1GLLCLXO1#PCc\fA#ddd\XO$17WR\ʪJ+#=o]UIk$亽J{iO8jr6Z;z"IH$j6R͉NJMMUII{vwn~^^V4]OzzJKJOLAL'D@s*]22 C.KMMM!mnnVQ"*%?7+DLBL'D@VBnS.t1b\07`o$ Hx& L@ 07`o z-3ܒ-Kɡ繁PU>I|6vE:[mݏ_괽Fg>/ĒqAæ<-]zUڟ'xUsy;ft9|b<gRLzsƳtbk|;޺ @ !N.e1b75ZLXe^r"u$:8sl/)|!M\XΞggWɼ:2GTPRٱj?SӵY]=u#)h5iGxe?ĥTe}h٣!T #a9d$$Wd[)oNP6_D@ jEFo#) K 6k4 Q{jj=.ihN@1:Pd^CsQQVձƥiC+ ]dNq"u d4pʀdNR{hR=E] AP E 5{7iCô0NŚqߒ04PU,%˂Y;M0לۇ*Yٷz g w68 \7ǢH4G}:cPVJ;w~n%'8&`l],*MŖطݵކ{*6 R# ۾蹳0O8Տ!,gxsx͗0>%ǃB)ϵu{#'<N˳y{I+Ts,xjbv_F!jܼSiXoҕ t:fZ#q!=mٜuԘqfc; OG,Q؝=ChWPNڷӋ{!3">.Y@PD3΅c߅Bɸt?ekA1Bp<<4'v,:j`e|LF@8b^Jn+f2A 1)IEٸ2Qˬ[)ǥ@7vF?0O{۸GJ# gL~E-,?gp_\Y۬hAW2Ēș8)]U 6[Uw$0F"wPWk\ovBWI ϯQkcz` E[/܏={ OлdQ;Xy#Ә dǹ]EEBUvQbxi[8z"4>gCMqup"8O[m`N=VhҮXIct@ @B%77G{)⫈z̘oTł;?Ctt@ ]=a |OO9t~[YW{‰/t6gܦu+v\V YUXUkavvLYlUdg8l [MuVR':w`_)\_E5dG`\ jbg-bK'2p т%cq+h}u =ēdP^-]emaiVٕwvکȾXISWA@P x;)'3fMd;́GpWUՂ1uT h֔\|wC"fdllo5,;;59j Ժp\UGCUQՇ[ .gzZI`U{fq-e!łD[ٳNrϫ2.>eI>|e??-T$,1Y0Yx0_ FEW?dg 졢 !ʬi|Ɖ_vڨln*ݪnw^hBس/]{@ kG_!{<?Gb3%@`.nvJbor'Ն]t.ĞTI'ͽ úzS: al<5С*rws~_so K)\noߥ;d.H_w'~ _ncOA@P4,/9˗ۏs66sH8z7K!<|[]t6ru=EUQ)Z)Z͛؉7 }>of9>l5[:D%K=?wŤsYwVw?ġJVq+!ؚwpCztm䈡@O8®K$ս Pg"Q Kiɘ^Nۣn{5H$>lsӯlf>0/gQ=;鰘sX"vUKxO)^'V8J@pgJʬb׉Vxң;rguPbY=%R//SJKK ] A u4 Ռ)O|IZhT &d N$YX=^HgڰMrve-zFFrb"ۢ}~UFg4椗$,Ydխsc0rέ'u]QhTE!lcHeؾm UJYǠ<Yf,rL{v#!tZ4y+V&RyXԥlR_$N53,a%%K{ .@ "D@ @P_T$@ "D] @ E@ @Pt@ !"@ A-BD@ Z @ A@ j".@ "D] @ E@ @ @ @ V@ 7$Iiۨ*f@ ^7};%IDFFx?Hq ^O ZK@$-@p3眗F/.@ @@ B @ B @ !@ !ecK\R-ρvs.]cA{6h Ǚ&[j{6qV]TϹyx2lBveak%VRXI”_PjW|x ;m oDzm$XʹGF<?Mۤػ2oMj%/5~iV=Yw#ZcY+޽<=M - {IlV ~t1FHp km_ MBey^^.u7&^{5UnPc,Ůo-,/:h^!;7/ ~Rj?ZG7կv鏭-.vhS^0s ' g=?<ԇ{Q(]n9¶J;uM}2r <ҡo.fҹeQ>_˿=U{Z' W|kpBVˌQRWp~_;j LuEl|;0j<ƕR|F)>Kǘ=MGOhH4/; kyl)|>!Ndˊ|W#Fmxec?esl^;Bǃ&=F!pK{ 8{(dt?9Bhl<09FqE\W+2An*I^#,l3M~?7%@_ G/gỤm fLjC[+VfO2iJ<ɥɧ&:ŪX.yuWkx=KL{s ~;*r9 Zh^/?,BoGM% ~Z;̈́^H,/;܉taw>fvǽ/bZNرeկvQDyMCw 9i6>^dVMT~TƶjVqNy`XZ9|nQc=dȟVӿI{뙥)(o|΢uѥ E( l}E>LO>72&0g{8囼޷ܲt,A%ٳYHc޼).oS|!]F=?>qur;HҠHFE[p}] }2hL|6:Kp| 9mdgl@ Zvٹ$olTv,:ROIl@^eJ\^Њ>IƗ)}-6é4,+Ӳ&qkJ1YW?1+t g\i^ <7ըU0mz+V*o VGRMAÕDޛ4 ٲ= /L IKW?gژwpp'CB FKy~ݫݥ-t+7Z:[/ Ѹkn/[z,x-p]n7nrH:E嵫 |RzVt]rMxlѳ,lQfnow 7}+g3ͯLacnu~QY{<ƴvxwk뵽D\U3jUB\ ߘ>G|˙$;gv~8ؕE%0zknuyl񇌲.c:2u<.',WTg4hlj3.?[r'v M≭q遱%/˸lo1Itrgoq.zv=oDdiqDAmT;fh}q#x+rw7 w].]ѹ)_=`RM21WZ ُw{2*J9- z8mpL/xt|7yדxѭ#˥̻^!9Pq |;&紒Hbb W" =UNcVL9wsJN%# ;~"j}pQ9p&Dd.h>dӞ3\R 9F&%&u Zwz]4[Z#0)=p(o惷7q߶Rio񴅱eO$) Qd(%7;>t'J|Rdcng5E#;kJs覆@PL{\ӧ-|;1sH'_Ztk [n]'1>3:oZHG\agΣ9cɹ.>{uLkVa,MӀFz1CEڇэ Zykc2/.q\]ʴUxpU (Au!@pCP] y\X] ^ԼKj4&^jW .Z+ cSZ(B I+$t@ jXd@p(Jw@Ay?Ĺ77'@ jL<$)k@ 0"n& FKB @_τ@A@_ۄ@ q1܀92FF0 .Z}!+Otc=sYUP?S(kZ¶+iOuO0 d9v:i9hM8oLa؀[=nrs#YnR?3f;v=5Kex:vkGۼV싊΄Yp^qI@U~Nפ*ĉjy $ѼysaT@E˨wh# 6ݬ{{}vNW\*sİs󟤏x5$-CWJUmtn:.c,D8o2]PRbpRmh57Aem135qߒ\H"]5pgaZED6Tx蔒W]m2s}&$d ~F~ԩSԯ_I(Vs^36'OҲe{[n7*300Z>>P:vhߑΝް~=DVɹ\]X* C˸R{(iq[@̜ugmtvW8To9 bՙ7Ow18~{Nݺ g^BZvML~Y[Ș-~Occhx]L7nUUM(׏vA,J`'~ d6Ezя=f1_9{3U$IU嫣MYDDM49Ν;w"Z8t/34W<9&XInmY#8xb[)ù< i lP2-cĸcL} ?©#,1}N<4 (gÅrK]GSBTAyjE\>GDJVvy63_%Qu+|'32WyOK ?Dڑ{CIץ=UTt:z=xs!_O-/;*W%0g>gSzn Ꮾ֌e+^Vz"z *Y0ڬt:sRY`0ڻ q C}EEQPkO )6w=j-ZԹ3ieff[{h[a۷#5jtO$)Be@ת',ϯR}|I>sr{!A5(?Y4e.-#.P3.sg,~/ <"\5%^m^ֽ [(O|U͌!n;V~Vͼ7odkbyފL[&;'_Z6'L[kH<~" i K[ 7ϒ/bm4(<H]LN6sFEyDyyE[t 2h2捧S<<~A/'|^.| 3̔𜺌WjBY4-SAYw#gA-?jO8::м/nm꿎"6FgZn)*;{lZ4DѪ6pmnvEK{'))ɕ:;!o! ~=--rq;;Oi0i5* %5ۙHNO<,KH9ikRFV\|<<胴lђVʎ^;sJ.sb?l6ٌV%!>+qt9 o77ϟ~:pOM,xY_o_͋$&&F9j86>iHv8I&eů2C&pczWdS,W_>=vڧgH`=O&" M2MX5nR+h Yf4uh\s3-+QƝ6}z.*݋!ܵ Q _)ٝQgZByu?K! MzMehÜuf:V eTryM/=#9F^ tj2/w/,@n?i?(nodzXuɺh\ևwsk^Z~cFr[hĽɺ'O^ksKn<7=WE_cN.) VSZg pb5%5GDVzww""sE^'F%Ibݧ1k6QQUݮ 򐑑+˗kgPV} Mwhի=>WSkR8Q1zj_Îd+`;G.=ʷt(\({e*W`yuS j)6y$~.&[stnU8M]zW_`yKīu^|wLe82F7/FW噖4NT̹%]JGt%kKBܑ9em~5'KA/>džUqCm9$$ڵT Qtjl}VðH\bSHKEQrIYړQpUœ]_eh|jj2NNN;~6RH_j$IÇѼysRSkVy剠4^Ei%K00n$C@BQ9+8qO7TU)w=/7T[* (npt4 bKKY/.lz-z_G'vZhK ޕgE/-AyHݳ)SӟIbAth {./{Ys>hnLYq9c!$"RF`\}ϵ<9̝jiW<;Q2HzWIb|sBV-h}q1H[/[|pQb8v9AM} wj ;><>Oΰ7v8v1io/#pܥN`i)ԖݾwʆLZ1Q`s1U\ɑMAUٰ?YehFMt ))Xm9{D'YX 4ң6QR K*_f?2x]X6l6Ŏ0*5-wth #quu_ؔĹsW^-dFFi gP 54H9-jnze=76NEF ,\] J,nD_bbmxx]s:2: 22iӲ[p<4l6۽%oiSs.^VkS?O]!-˄#n :/FO?`)$%'ȃ8z"-=_$777XV<>4+nr+|By1󦽁h&#+6{t7h(5nQg7wrj]DD]ZHxdxnF6@`dyv]V]9gn/KkZx\ᗯ06bN=Y' bT/yo|^n?ERIm+WC!27(ni`$^-}H4o!7c8^;sSqwǺB{2VHU1'')pЩEdrkFE|{~ewɭeSynN F}=`>P1xk~]X#}AukGj]ZT&%;sr8 ˡ;d^L3kF ^_8TA=2"+~6W+ E4O o7a쬱|-łޣ:XNg{Qz5/M՛*J Rd//dqeNvx0bZ_g^c'{S½t ;SǰDK^h[S\Y%{A<< XLG̗8*W!Gױ6^[-[JHH+Ssp̭8zfV$k!;r~VT}ўMN}dΆ`< l];0u $$Ά]$#3Z ri:mMQ8t CFLL dk[$TvjȲLLL XV5k@P3>1?ϭGDDDhejPzEr#KGN͗-6Ņ_hٜ"KRMHH($n+"l*u3Vܡ|G[m6*vEГqwݑJجVdLAX->YODQܨc8_B6hب!Fjnu󌌌EDQqCJJJEcbbrR$ !(H^(.cзo$HȕMAl6s1\ǷLpn3u5ؔt$d]5g>۝ڂjtj 7AԵ$֯@8;:w^x©:ǭaZI/OOwbc;JbR Om`|C!!ѡM øuw77.FҸa]ڶiN с]/\s"=LV9r(##qttՅFWxP3'%ёD|}}U]PN!:a K1~&4fȼ]\3{D% 9nߴTWF!ݽ#FbPlJ7*OVT(j-&[zﶜV+^vG\\\"v5O*V57UHϏ d2?6_K_?:u5265_M\yw ,T8f͚s>4Z-!mmb/aҚSn-$!9`1ˁȮHz=Jb:u`+Ȝ1`6[pr";8Ə`ި;JD8y;Nf˸&_vvrrd,nΎ Ap@z˼?bSz"un(f<y`P<EAZZ ,`7_WFׯ_ζ1>xuY$l߱ﺌ9bbb0sS)ώJՍߵ+>E[8oɯ%M^³##̓[U"2W'zo3FGMb~wm+.P-~q5bMOM+,*9i*yd2v36|(o)yonY3Yw IDAT$$Jgx; l/y9OsEfxvvvS\"fDڷHvvn}bOJJS.8ug\i5ϓo''ֱ8)g_nu]3'*$6 @ArpDvp@|ejyV.aſ7f4h 7Ome>O@x^#<d\S_3OJ.x{86+d<\|Hʌ %idg`QU$ICJZ$hx95weaSl<>ޙ{=s \vy $}DpN°fy\-]S@`Z9w\2 6PR6CCM -FE޹햐O9q|R\<<<E\4*veŰIAQx+qilՊqvŎ^+?>#8)8::4=Pt O}0^$݆ ~X3d&3 iѼ9urֵ{1ݛhTYR ,8)2 ;叵/t~q-2Nݝ~{o8@S&j:ըd.\g Tmkם>M3 EɩV)ji{B\ FÅ CzY8~wZGW<6HOFH2S=2ts&.zm蹣߹Fd2a61X, 2 tdL "6>6sk&$ԄǰZo]JA ((juv9MS[( jzFa{z^ػu07i"=H+xgOHN]\psu݇kztއC\N;/ZgcTD2l J\j7JVggg5j1HPP~O4j5䛿QTf/ ƂMh@'yTO$̵Tji=By4 jJ|BNN9u+pssYWX,dffIid2RdQ x٢0q&OmyhIm;zhؠII888wAェCm"i)7q;FiݧnNض ZaHݥPq'Bœ mO~amKe@ϝ!GS| RRR''g:B b ^_[mxnq S]vYdޓməJ KlLS& ?jԤ]3@|f*\NŘLkLFz:GJJ*L3 ]34N5r촉$_OZ .•uFWl'b0]km|Ҩo`01333G̜rs6!䋸EQ G:u1L9)5WA%l7ꜗFAhgnfcMli7y/k{L7cVv9;;j헹/FqldN0<;??ȷ|P9]$%9Lk;;;>R{}{OPi #%$G/&q-)zt M+V\NX9=cnFE bak3͞{ñn_92s&n%'3#3g{۶Ǘ)ݝ`t:-65jӧszKa*==EQHIIn(4o޼\\ en|SRQ^ޙ;l^_1&f0-ZZ'ÏJ}c(ЩS'BBBJ||s=< /fm;.mGթ9X[8xFFmڴ… Ġ]vXAi(zWBHYM]( [ -壬JѠjm`Ϟ=tرoj9~Fc6-)بT<ǚ^Gח(իW9p@ Y5, *:uЮ]Ze9VKCFF֮ÃV :Lsq{.r5L6A;wF3>~"'NШar23EI(6,c;r*DLa=N*_5zmkCaoo_㢴g*>nA]A>叠@A tA37nL,' `v_W,响9εh޾'#'Mdp#'nK2N飖$@Aڣv&/$, KK\vQf4;~B)"A  O^-C>VOîS66 pqoۖgfAAkw#ٷy2ݣѻ'~Y0uXO_i}U`eKvB_y z⠵M&`lv5pxai8Q^=ҕΠ%6 dpP '}}iRA>p0o &,2>`MD:9%T4h3MK#q9=ڍ=:П:8?]S 뷠׽hl̙gd|y'ѡ1^xy8}xyh6^ cDU {l,au]qhao#'2d By'>gߕ Btߖxe? E Bb֓܎;Oıll#ܞ|p5. ڧ;XƏ{MGW j؊jh4%ϾtoꋓW7'*0ƶ[«3f{|껣K3B% .ZEKAA(GU?| Fs' 1FQmpg& Pz׫kw})uy'ƱTCnis}]}ƿ7|,l8oТJ}.f0/ٌo}6ͳD ByrJ||:båK00 ;j*kZp92iin?|}<:W|EZ%;>>xyxa6 -ʯy4HIAsΡhPTjT*9&6˗/⊽Gn4p%}sW|Bg#i=Tٳg;v`[O1ޗ׶WjUE۱ssA@T~X5 Qh\KL"-)3wqVmo[4mlj#GT#v@yrHQw"S5*_*(̎e;Ptd,B %=ZspWb\+7,gL ):Z>:vâbEMLQb(^U|E|fԦp%6^oZ>:1wP)*Sq&3jt ~MЖ4i̙}G0OV&Xkz 1*k(RE)=̓iѯ+1'ϲ91ŘI(zՃK!m R);U;sVؗccs"8Krnwq|W) .j?daS.ʍ1Do OgOx~YqOX~'!HvyItӖ]q(n2ow>4 * ZJ<ؐzAZa^%56*E/(jEAR8|'uTJDZ&hD n_ִl\"B^6t6Λo{_v 屹+xl{㋕/ t2im AMӘtd~WDTT7b®8~-_u?|O<,_I ՉçVt"Mmx<O/w2SsĹ="%p5R (V+r^2SrHvlQ}nI`Ovd(͘Ch}W,g?񙪜KyY*48v}K+$mآcI%Xr^GǜټeW0e/iKphϛ_/A㢅g( 8v`h\t$-ztC`R. sow>|s i#ѭSH,(np<Rwp`Bss&۸uOphxq"U}?_?c 822e$&&[ B%˃-[0)e|7ZZv4\ZE>98zѸOd$%V)Xmʉ3A62pm:S [wɧz9 VIK.Kk|{N\s%_~AytRz'9W䫊w׊Y_i6dCclP4lչ(vE.K,eT3Q/K%SjijUnug'&ˆgo rg>7s"tA.YNf7 h".)ØbH]O{=2 wΎ" #n.DE\,ACQPt4Lf׏s.Z%ܔ/d8{NHC͜྽ы#cql+HxgoeWf\es>E9h8}w{Qz)J-FP)S\  ٫/n$''_Wz]K7JiƱlV ˬ/1mK.PKlyIF wq_s(WSw08'Y57oh~1|z`Kt6?VGcJbFpc:'~kCM5=+N9oTkt^-^XL:jO[olNEv(xex(樠Xh^(l z=d_=[Vw`ڦbu˃/2C-4Wz[ZQ; 1h:\nO[r4Q1WVlhtz}NJ*;@בO:<*ďYH?6?I꽢BV@QPYw*֏>=ؼ4F+ "tHwhB``sՓ\1%i?_cgքzѱ6QծF?jQUvoQ/^O>qqvjD>re*'kKz40g_n7IbM'U ~d4u\qh€ѡXldFH(Wsk=|ÞᏏ!;V>߰+R[.J>GS]7=2P8SvEδ N?N\~Mˢ"m?Sk2w={T*eogO>888ly<:^6~ӉVv*}yC]7DzcK4ǫת8"#cH+)4޴3 Vrmш0@ԫKڵݍ5z^a@EF\KNE PGp"ZMR{wF߳ *h4DЬAD;|[eJL~?}9J/{z-)E_Kdi:T}Q\tz4X@Q$GoeX]<ko%n(*A/(wՆ=dmv kLT o"&4ϺIfDr9-=O<`-D(WsgI*4F71mscճY}a'7AGUƶfpf,.e3>؞ն$7汙=}{/BewY,VMѓſ& d勗6pZ'BMj/u| ?qOt3FEۙ:cteϦ}De0obB=BT0@Mr&&&z3oyyV_ >^-PdաKnsg%H>lj8Acv^ß~̤5R ^W>G{4~Yc9k{V1,SESOcHPeӚ7޼lt*W-b"-!8-jW49yE.zOOSwp챘-)GxƦ2O_a62ӘH'&R)?Yosϖj-M=^hk'/_s4*>K&i(f=Ds?ɫo:__ƜӴvM̎UQP#)Nr6:Ąd y-Œ_QTY'H!J FSyP6*f?Zʸ%\<5;q9ZaXon[,ǁHeYXŴNo280t[ǵ/BeĽm?gA7}Q_%*Lp;.x+Oxi1.W)'fdt}Nyťǐڮ4,j 9yr4>~6Bv>G*%gi,\Ǜm}"&4v7l _֨)[|4sDqlΐ3ny6pN jh٣ sOjsըmx@&߾G;wtsu(Xg`o:숸>|4FJ%xv= 77q#4ĻI!SNh;->U]:|=/?=uy.I^*r7-tgL /|q3-Y2?]oVxhAQ)^Jv>>NQT{k|~A揊VzI/stc,d?Oˇvd\K/qGx>yK|c,L6SfѮ0V W^A|EAy8{>¢;.دDEQu+7Qtch۬цW_̚q|fo=C)̗ ZoW_8q?"~ԉyu&4%+[to(nRrV@q6]5ܑdMseui)f+H?>Lauߖ!?QԸZl?j+֞0Ɲ&V]F^ZA(eNкeRUl;uX _ºr8?~ؒY=CYPo޾Ӎh&&!fVUs}gwჍ]nR"FUCRcE: N[~Y_&l?ӋN+ i@p3ںc<モ._e[i||'܊(##=0zze' #cDȲwpko8Nц{yu=|x6kҮfo!~?&;U Da{ؑ썟C1[e%<8UMd^fe#z%Y^jX_wA/OgܝtwdSILM'>!G:eϞ=tsz ,vgiϿ$uHjڨ)Fct;y,+5ɧn/VfJA@rЫt.&&͏>ݚ2e +Viˊ+xgƹ{QR2{ W'Lؖ }2ts}Bњ|BsD6@AJu`UԨ 2,$7tٛT)i٥#^Iys8O/X0ws<ӃIXjknXy}vee5T:nKUtBU 31_oYɂ剎yeoel]̙sˢR2<0[ =GK '.򪅯Wxq37)Vxݚ*.U4^dOuIc(s׵D뚕ya O/AٛJ Gڪ3nrBv~ŕL+?GD&{3w[-+|e[d4a0q:5eĄ>Ԯcq~9$E_-om-?N#nL!^o&)ÊkO5BM’㝳Z+Z\=ܮ1,bl%Uzi,J||:v:=e&QX-tGZZX,f3fɄݰ<8h!Wx;o_rϮ Xk|'x#Z1ywVD,u;SG|[{uX { ώWu sٴe]ؼh66&*Å.cyqsƣAڬu_cG?.2B9krowyQpob;zޟNJGNNr< 7FAVVQT(\KP9\ ^L\xd ^ahK_*'ז|κj4{ Ha0Ć3hfm$&ߍ.= o_,4/xW7vLL\3s&H5-LB9>'YߚvbwXВ_]/P#|ל6bbz"Oװwa9__Ɯc *~wI2"]\Dz^bDK&Uc'I/t׋N-߂^2gro3 Zo>֑ƞ1yoO7@qK]rJ(Dxaqψ+x/_}Ŭz%qOyC>;ďgm|v"zC&870iC&:CڭTde.c/2gV/[If lf=E饺YA&E~ (i(T/ '1^i]̢PΝ+2.U\AA ̿2 ). P BBÊ\b&ɍ$&gb2\_pH^l#@A Eķp#&b\36gѯ]ʓ \( . T*u 5AAA*tAAA.  tAAA.  tAAA.  tAAA.  tAAA. 5+W7?DHhXa9n,F3y(Dd_( BQ(t3;/=h+F3]Ū"I~ IDATA  6T:Ox ^tWB s?AA(:Ow_) Ң5}$|BFV`sjIm>qbRbovƸĪkKnTD B%Lټ)1{m=}Ɂ,Z@2b_Y(KN>8KF6ɡ T8" x~-/9L*qq_dZAvWX:c6_l?JKDrŔ_1jW%q2>*fA* VՊbl6cX0LqJ"? ?-YJsh4T*j5* EQP뷜W* A m BBb?;5]JyMS]:Z=3A*eXn7!aE.spNفUILd뙿 `F(/erjA- HE tٌd%&c"-E P#U7[n-J{q[OKZA*. Ձ͛KiEvY}iOo&!^ PzeAA(h4y\ j$Q\N  BU Qt[EAADWn*  "+H/  "+H,OAA+mwÈAA  T ir5Zn'! Bv^k"߬J8XH \ɖ3c_[̍G\,~<;Y̘>,ah,,%%,)Z|Ji_IJ ]˔,Q}nf4fnL|<<>9||{'XH0{\{瘽^{3DEDD.w^5e&3,~r~?C_b6{?5sPÝ˷hdcM,\e?1Ob GD]DD< %4OlacrmA f*}>?q+gY&[l쏩O3lǟ@+fDEDDJ_zv=Vl̦I.ܟno#7o ~j?G|0ƭ+G o9]Tϗ K3p+[%>Ho3HrA`t6Hxuzni#K-{)syIqq\fEDDUȚoO?k8kffF339ײ>!c TD,}U> k7_NؠnVyuf f{~/%Q?ms睻i4oc! XL`2aXX]mV'ϭfONb9n}/= E]DDD*5ߖLz Ov4اxCeo k'4/o<8ShDp[5?QZ~qR^g:#! ߶8Rp,+Mzhr\WD]DDD8ȱ#MT /}Ͻ@^K Ri0%8F+_%'%"S9i3ڶS9E0U1c 7 [|sYȍEG"Z.""R"h|cCa >S'" t{`%_K!_ Yɉ$&&/%w f/Ѧ8x4pfi2lx2?3\Gټ$e0Y$3Ǿ;{a6N:8>}smAA)^Ak+ ^e+&MR//E'V0l8Lѥ 9uIur3춓|<7?TT|BylT«D\ۄ n.1TF*C9FGí8 چ??`Q@MzM~M#2urgNgsÙ?&uvౖфЏe4tPK"e)))}v\\إԽarp8vl6999$&&EHHHcƹNӉ 00~޼k/dn-Rƥbb`61LL~fEDD.g +p.rP@qCt `_/" """R:\Dיi0^MDI\CeY7qR ]Dt+3$Fֱ8X8L?/r?u;ó3>`dz!O'Lt/F0Z7S+s #Gz2i"}-<ھ Nb9y e{ٗdyIQD]DDa8͡ypK8kO 3_aJԎVkYC=8-LaH9-iۚ&Z`foddo b{7_Pt7U1֮?ƐZxb'>>xrO4ά8LrXVFfA=5 o-?Fpb6xgz_]@t+W$Հ3yYLcԔ|-&7&x·-z` ,8:ZgG:5޺|"ejB@C ""5F}058>` l2yi~l_/\9_s*{w'>F V5?̱/0N9FlX}Zv(ǖYo0s{8=o.ɫ*_pI ;ݘt &ʷ~ l|PzyGPBp߆^^?%=6"2uƵ8ӷ |Uf◱Pg7s0'rƔT 8bcc/K{1 rp8l6rrrHLL$**]a20sߝN'NA``]9;y~S8HZZX,, fɄ7-9+""r=%g7NkЋA3L[:R] DD*cuŞf5d"WO@7 6d""rwCxNauo\ivq*QE'""rY1O?@\i=..FNix[dSl\_ꈈȥ)tqZll,XB/rZR"""""r*b 7Sh@[cR@/o}}HI/(Ha<4""R$&&jD*~ )Ҋ-%."""""ttQ@Q@ttQ@Q@t)}dvl,וۇEEDDܔm0cu;>EVw^}QD]DDaw'Ë59dKxe?"e@DD< )nӰ%Z-Q+k)K4.""R-qIf81r4wc:Xa3QNA7S\i0^MDI\@6Vctߞ‘w e76 0r1FcDwxss`̓ۥݙ{bƖc6O}:mن[r?o13nɸDZ. """eW`t6Hxuzni#K-{)sy9Q# ɤ9Xp%bb,>0*]xn(x|0ƭ+G o9]T?.?V'[2,^0Dd זwlڌ~yGn'| yq#]˭pCFolJxa-HK\DDDJɌb łŒOofzk5/ n|j!RƱi/+ѺSwaHvBsK!s%oe^}QԬppoBǭv>ӟJwt୯p\ӲjzBHx0ͩV:/w~LZ/=E]DDH96͂{)j+_}qf@p&шj>%ڟ970.ЦOՆT4~i~};od5.""r0cȗ,-z` ,dDF-e2QS󅷘ܬ2b`A[=J#9t -\%.\[Wq<<ݍa<2MjE!"""1d%'t_Rj.MzD:杧HM$)ۅ9J'9#Lj߳ qqb;D_Ocz<"h|cCa >SbA+|K|7g-_Z.<ͮ?an]̋,";i]VܻC ƱS1qئ.͠vG?8A!7 {.FeΜ35͉DM4c- /&ʷ~ Շ3+m^nbפWʎWpMDW_Vq ^iS3~f{qm*z^b. @OH ~Q9f/fK90 FͨiZSJ)))^qqqr;Quщ rp8l6rrrHLL$**]a20sߝN'NA``GDʼ4<<uu[DEDDJ2}w2}܋8,WfIs23mf-.""r#]yY: lX5;/.""/UMpo*6ȿω_=hՑ.c80r1FcDwxsvfgXLzi4oj$qylGY;e;@t[;~L9;;m'Yߝ+Ơgo+n{/C#>8ןϢ{?җGDmlc%Cږznُ+}'==D[oRi`S{.EG@ u_ƸyhPB5<# Ĥ9``?i#<>y,Q厱z3kN\$O<@]S~z4ӎud[ӦJ#uc|5E)1=Mn r>3 :yq^yv5j6k'&-|՟۟MF&Q#<䟭/o [rط+ԿG=fZRhDp[5ղ#Dz47 &ЎLe0wDZd{oL˧jC*?pŠ$zVV{q.\3$ip}Q]ܘEEDD.wXMWM¯?J#9t uio059.C" b6X3ܙ <ꟍw i).\[΄j M?{#;Xk{Nsv͡KHcQԱu_pwLE._Z"""↬=ˉlDAf=~S{*[ˊ?l+X`ӧ_Mqh<;6nx1_mүIf}w1lgmt+g|oǡl>`8qEy]fݺYDwҺ"h|cCa >Syz݃ǞcnNO$1ʷdsX$Ik/)g?Q[̱LSٻk?4 ngW(>}s󾅧mRt9}GF1D\8U7Wˊ3|̵:MʜCx5ۛkP!\K]&N}n8SӜGԤN<2 Z5NmxR5#_F>`_xJZ IDAT` T~tPścj0h vMzxפItU*e\ML1u:>sxrmLhb,%m^7噔w)ōc3& ׽"_?4z~}`GX2t kll"SRRRุ8bcc/K{1 rp8l6rrrHLL$**]2*33ݻwӼys U0sߝN'NA``XЮ住Q[Nꔖłld2a2y%."""""-qp8p8%Vvv6NHc-r5H"rq=..N##9vXt: ӠH^ 'Ӓn*AuɥyAh \ɴ]DDDDQ@Q@ttQ@)DDLHLL H奀.""WP yiiiŖˈ((((\3~">˥Q@2gkc}K{Xiޱ` .)ggh>oNfdYqI7ڳ=Nxh>ۊc'~n?c %rP&rΓ<{ʨqa]W~޸Df0yIc<<;}o< Y}˪MqGX8سt {QRz}^Ę'w1`ZܰSJ|'_{Qg~V*4msm< )3cajؽp}ɪ䦌z^J\BUZ ["'(?TruwxQ?4 #UD`;)#[BqcJ^ 4I/MV[$.,(w0Ҏ+1=F1cKʟFr1[cDwi6Jq{w%:&E/2v- {*#]*qpo'Yߝ+Ơgo+f_>_\7É?Jt [qc]T"B3"""ŐWc/ѻ,v}z [`ad˴LF~ŕqSlwsǪ5~^fu;32_=Q4.b_QDg00>Ͽ+R*}{ꥑ-\F5͹^UB$y<`ү &}}hU3K)trMh݉{a3{*AV>|e?C k>ڳF<4(L'ojO٫YQ'l'K>NHk,o //yD:杧hDWJ< mrO]Oc 폢E.&+UE9Q>go%c zz434X"2urgNgsÙ?&uvౖnh7^o;7Ƕ#OyZ TpWv\i.+Vΰٵj+w"$vkFx?|H3܆r9 {.^yn#dM:ݕȋ99T4$$LNN.p`۱l䐘HTT%>0~w:8N)rf3& ϛX}eDDXܿoZtG(}Z""""".""""" """"" """""."""".""""" """""W} )󼼼EDA2/--2Z"""""rQ@Q@ttQ@Q@ttQ@y\T-G|Fmo \KqL;SVx#M*`*a5To8=tDЋ eȵ•d]:tHp?\'9N%sgV|v렞<;]¹:@>C,P?Z~BӻҪיQ~4o8I:CExbzڊJ\ӧ?ʟT~usZ/66V*""WK $FDUs֬`cT]niAU_3aq_ǁ8m"9 ^@;g`K\ G -IV]YwP|U<9iXk*\W^ysr]?6(_طKNN֨F뻺 f5գiޢVr.gX~=wDpY #oo@9M&%Fz 펿 @3f>cR0!79,=\.wui~]Cٷ>~hۭzT|Ѻg{*wrx,[kGv&EJ]7BZ[B¹gwPDD&Ϸoy4Ҝ4p3[jn`\0e :9%[OD=쇈;f oI$8o|vu[o*ƫ3}Z rqe9,;YR'WI;@|.;ೣXw ?EN`ŚSD֞^^N]DDb??éw?H ɿE.gzCB^@1ÑNҩTlFw%JeɅ#7٠®uKjAR~kEnVj!g^#Z?8i{ |||Ǚe[IZһ̀#3gڴٛ65|1akk]Üʴc GobkN/r{@*gI" ZrvXDj8#^smVä϶N]DD]aLaD7?V5sXz]B5j 2o}#75;&v>{wgjeB7q}T rpObFhO`RIiF\lFّ7\T}% )2in,/}MhhƵU? sLfȽŕƎEsYޘ.R7SֳǕ3lz䈈̍ ]NnV l5n=kM&J MZe;HէUԥZ/Fց"Em#@Ft&:~s4[cdmķ%glIT1 u~7| R4kD#:ʺqؔ=o!: Ɍl„ Ɍ92<_ɿ?mugMT3 {rvv vwAi/Iwix۽zMDDa' M:R) nhNR?5(]{kk]'H?Ah1iZm:N~͛ؿ.q\SH\DDB pgBW9,~Zr.]g ۾#'QMg~T$*>~Jl5AQ7O >:+-1%""6' 22y_}ڵO'0u/]/Ц%X b@hyZxBQǠ\1_9nR&\Rɥy0p\8v;6sgƹNӉ 00P#";_Oe^_łld2a2y/2ECdRreaĉŖy5P"pde"6֮>NX[T@j(|\.^µr,ÁwPw_1V]DDDD AoƷ^g5""""" """""."""".""""" """"" """""."""".""""" """"" """R,g2;6D|Kc!" """N~DX DL"+;KKڶ3 v(|~+Q;=K77"F z-Y`0yɻSódʉvKV%7eýRfB7lǟ]c$(<~*'"ź_&O.""RkIn؃VQR>;(NwsOƭ>Hf81r4wc:Xa3 ]jb?mGGб+1g.p\kNݿ;11VA.!_k؎vwַw:Nhd%U^ܩ<9]ڝQؒV˕Ef? Nw\JRޫ7w/8rjxEuCFflJx0mnWulbkn{xv`$md&LD\xr {m~r?/F0y|XcgxH?߆`<‘AL3 &s^V'oeSӰs` ~{a%WGǎyؾAqSլMCl5;Ii4CY{,~#<׵22Ɍb łblrhݩ&f#هzq$Ƃ"'ۆ%0Z׶sN8/wZ-tgٓs4mMJT^rf7ya{;]cPFc:с=1%W^Hgޟ ~zh]DD-9[ ىLߣ3xh nv⡦.C[wWhgrmebܨjYs{L$eO[jrcY l՛Z&(S. =DJ21{{c1iED*da}q%oT>/ܱj .Dy0&5fE@7͘00K& YLcԔ|-&7&x n&^g|3#x!?K|,z` ,[]2 'r%[ɷ?Pb6fO0 0+d~'#~v6IGA"\R֟Нl[3^3;)zUٵ;2v%:[^qsY;33>D>Q3͡m;5 hf: ?ȟ^awr3ؐFE?`|GGgp*䛭mHcK_rt #KNNȋ\ H3JsPhfw 艈kmިAQ@FfϰtmwT "f@/ ҹHI_Q@ttQ@Q@K! 11Q "e\BCC5"R楥[FK\DDDDD.# """"" """""."""".""""" """"" """""."""".""""" """W g2;6D|Kc!" """KzXn?S ,Ֆ>owL"+;5".""rQqL;\nɴv(pmDʧSY|(_{Sį40\nןS*.*uy׿%`'~dw! )gWhţUGi=~2ep-̄ ha IDATE=Bų+y6gH &G|L;՗i ߠ7>|F=΢c N^ǓPn3mS -EN1?X@_xq^z*UʄO$*""aBx qWD}j3ॉfTgh.Ѓ}b*#^}}!N#yV7y]fr) OBjfGWE䟲J$ O\Rɥ6arp8vl6999$&&u"""0sߝN'NA``GDʼ4<<>p&G6u [d4ɸVǞi"Fۉ(܉2NWsП L<ד5'1Pc&OlG7i>RΣ37+b+ x9 /i1 +7gnȳ#lB^ ES? MLڏgլ~59Nɜ㍘["VOė ֋:\G%zMඹ|K 3sI^3Toݟ7}2u*'c{}ȯ#u0j Rn6SNp")Z9_O/}KcXhԛgLJצEVveE(½0jG?^2St3fCɌb łN>LwzZ剞 Hh<^\2=Zؠ:,f'i6,>ATP*\\`EQo NS"Iϼs5ы OgЌT5y W^<^&J˔}+?_Xw{M,Uc ˚j -]ŏ͛P X~Gͧ‘^vzt>狯QW}4/""_#穗{ΆNe@=onOSgqhVXL5斘܋0lÌK ') ͱo$HR>oTi+g;3]o CcU+Q6y;L`Lǚ_{g-e~Fj-rgtG* Ѱ/e!`/iXf|7/Y"*ȅsg,~F|j>E<ĨCFk)OQ YrwmN[o?#lT\3Zٞe)^?,0n;Y)SH~LZ!]# YQ,?2\_{w)կ/xE Uaaa(Rf(5_xL s.DDD ;Vָ_ dM>؈ˏ.ͺyΒh%.͉90Ų`T )#X{]raulsc4̞`8p^1mhD)o~M#5vg%Yߌ_(Dْ^ lH5S~Ze\|<˒jaeo$8.Fkm;fuXAܹeR~_bӝPԛrx_ɰ'L=J].>>^U&[, gٗgx*=ISii[<Oo%aPڈ|^:q~{d,xS1;Ɂw=TٚWS*8 Yw,i;U0Ia?f̙Vs)j i &/3י9 n;m?"pS DDDQ+Sn7Yp}*cI+/Ɣ…Xr'0gM xfqi⅟ŒqufQgDz֗*~&Aq;:MdT# 2Rٿh2vv/֣)ih߭ gv,[Oųqdr+$%KU¿(;~xYrojجDGǐ,ӗQQ@3zy:ON yyd^]x۔Ini?$z,Ves5)f*1#鵔: OOq`:nLpvt ?eMIgcִthJp!lNƥv٧ lӃQӭ}KCB 8y;L:JZm ._}gr$aSҾE)G'\[Lǿ^]G%zMඹ|K 3sISo)jczϰ|COX֗r!][YTUxa'-OYYH9xk|r< p]vFb[ׂdO9duƭYz5gjyWqİnV3|3_ R>\G'`ݾéuy!q5z1 Jֳ`V5/9:΀֯ӥ}Csݽ}3XL`2aX\zbߘNOB+x<3S!2B,~nބ.'w]Hh<^6hGcXٰQB9<հ.pbvobɮ|+_X_Tſ^_ cyN]DDD!y>maی[ДA7` aFT lGݔo%mM9:{J=ÏC"ǚ`ҝ7ݥR '`.ن ,OƷS U-FdzTp#˾}Q@k8s"r+Et45[θ>W\Br-C I!@r=3& l,E)^!˗\%?FΌO {-CN6*M"qzycq];eiu[\;tWbɄ}x +3ڼ ?m(D ʖ"sNj5W\bͻ@FQs"F}'yΒh%.͉90Ų`T )#X{akֱeaY0{y1;P<~nAƕcc+ଋ}/rOy %aDGc˖Hpܤ؎z2Y=t<#_MØ&Lۆm.IW^u:&A&j[, £Otf7Y hMzv(͎ܴo9msG% #:ҼpFf%clVMDLߍ˭Ԏs\qALV!oH-Ϭ@<~+o\?*kjs)+]pHhٝVmI$$eb8lj_HǽETE]DDN[NgM(VZ^ȮUP>t<6反S)]\DDDDDEDDDDD]DDDDD]DDDDDEDDDDEDDDDD]DDDDD]DDDDDEDDDDEDDDqˏ?T-DEDDnL$8$Pir8ue^TEFkFk8qʐvǾקw煄}>NmJHۧyi$8nIEEDD|~NT8_Dp:_o ;S  Nv)rf Ls#+̄Z&tb[sf/M%l|[?зg/|#=Y\noجDGp3C;G[2c?mckUcui'xo|^?{^\^ C3en;ѐ?}KّFuоQչLE-C!lN "RNffTPC30;k@Mߢ#&פ+3_2<46س5m8ZB0l'8k0Z7&I;rK)yѧi2XQ^U/0h1 z\eFA0~c_ֶū_౦IpL9: ־62og¥PyՅ."""QmJSQGۗ%9awOX֗r!][Y:m$s7bʪoX=12[zgo!lxZ%,eșѝDCV?|>o-{^k37?9n@h5/ 7QThHbo8Om`ԏ!C>R3x7b!ɢrZ]l/ """rYF7lLF YۘRǾbq/4XL`2aXX,ME:7zYAzDmrHrpݕmXݼ u+|2J,7w7f:Ih_牞"/73| |geX][?J|F֯|SVUJ/N}m1 >ײ#R][ ݺxT\=ZIź^4]DD%^gҬիc5_m:γ\q4 RQqR(eʙ8u޴D 'uv{Q@,i-.L|ԋ7KTLI+J1a`d{xiDfB̷,vɍMFp^SvE޴ن,E)^!˗\\^ N1Gϧ4(nXqFЭ8R/fŪ[05A]o %]pHK>>_kUߝ 5+6ԢヾFiݩآeOm6~X6/XfgQw+$%9J\s@#6NaSl{X>{-iS;:ɂX|t0s.Pz>˂SY~GDnbϹt,~_rܖRba&G1mȋ̋oɄa .řߣ8s> 8Za_ӵ.uQV_6õǢ.""r+5'7$ -yL >BG5Gl2")u# iu8 #3O\z+㺵Il)?cۙE3D"ė'3~{mê)ֵ;}_ɢeJiiyd6CMQr?Vjtad \6U|Ktћ&jxDZe)Ѿͣ<6x1'Nf|y9 XkV~y3>).../qlG"Rֽ^8y0p:v233lcZSN"""w$0.;vG &9?cpU!=pssÒu!ٌddAh?+n׾H40+c:@E: :"""Q!>gwnwiRAdiBhg꿨`.""/ "rzXX;wi^XǪxc5o\U;wS>Tu/wMni3-p{H}AE"""""5.\$jhهx_Yb9j2.%Q{} 0p""R!ADz/}nR:UDEDDDDEDDDDD]DDDDD]DDDDDEDDDDEDDDDD]DDdm{֍m0TQ@rzITjY @wn#ϧa gfSF L߱xT/F};|)^w5'2#j+DG"#̾T:k]>6W,RZds~x|ݟ%~Q@#eԞsul7eTȎ 6@1KV?MzT9 ;/+S1d⬱ n+Qe'%h6f| N*xч IDATy[6I(mH}K>ŭ,BkWœv`:Ӈ_[Q<Ω_f*4{5]/q NA@ITi9u?b-A6K2x=ҞC{B@7RxzyWbz#}XŽm֛|``29q20y;"/>;uTxy=?ʵhΟ$[kJott;Ow'wa5'DSݽ_V3מnIQfL:%r ^|qq.;&{0ʕs2Naߒ{oZɧ".""r{~ľoA]_?}IrFȯ#ni sOv³\rSNIML{ɷ9=á^$[r'I+䙇9B&9\{,"t|pnw+M X{R&`'wFR+I?ӟv4WeJ6IM0$jo [ij7Tp@w9y,Gxn~@Z(C>Kp|5?>oQԬ||[V_?>Hr> ( at:dffbHOOjRN>0.;vgp߱cZGcgKbb`61LL?kDS\DDDnu#j乾*(s"~Bw*(1<[VIsEDDDDEDDDD$7.Mq sΪWWD䮗tsHtQ@Q@ttQ@)$}>NmJHۧyi$8 p4ʼLZD]DDDnfRYg&g|4#|ty[?gh)LͶX3~L*ߘJ ""#Mcc@Guϋ+UCu(5ymG7RlVcH͞M" """_Xa]3*g5j'ؗܐ&pv^zk k{:0`ÀEş1;6gXJp#;+}̐NS+Qxէ7y?fdܩ]>TmғW_CC?""".'q{ByqbGiV Gɺ _<1oqOX֗r!][Y;&:m$s7bʪoX=12[8n!ƻ!Ͼ> y-OMC6HeL[f|BJXʘ?J{Q@kaSVUJ/N}m1 >ײ# &3 L& #KËuto ijىb>%"bv $[wʕkӶGk"1qXOB+p?O ]NEWN(vmGRy)Gvpܭ<~jA)d|q4 R F=JUi+g;6&" p* ?Š &ײfo/" """w6:tklb0˽EKb-Ϡ7ruS8coƄq4l)^?,v6Sǒow-E)^!˗\\ TN)."""0yWibu#˜6Eŷd°LQ9} -z'yΒh%.-簶9}f)6=,f}hJχbY0z*uёM݅eel:\{," """~,ق7cpգ,{+@>^6V٧d&qso( ^ɦY<6_sֶaP6HYqi>~6Koe\V41-0l#\9{[h?=6aՔAtڝd_w%SNiItXDnx@\\\_hy0p:v233lcZSNEDD aݎs9n("%)) 777,Y͘L&LWh]DDDDDEDD\sw &" """\rr &" """w | "7DsED䎕uTDDk ""rǟE).""rGIJp8nu;F;=,vYV̾zaV}M~m(FQ¿2ޔ'#C#""R8'9ٜ#\,D\+e}ݼt#߭`VD܏k"4ZE~ADDn 9-:ٌT;},+ү] v+,F (f?4}"&Ɉ-< øjD]DN}r$=QuXX}y3L8^Is\BV͛ 1t:/4\D搞Գ+Usq8R3n n拍 vDme+!""75Z=+[PKT{=U$kLH#H94EDDn -(ze "r7^Kr9nNNff&6tV+u)𱈈ueW0BP+.""wuBHW@IMD((} ['IENDB`parlatype-3.0/help/de/figures/parlatype-main-window.png000066400000000000000000000617421414030451500233060ustar00rootroot00000000000000PNG  IHDRa Z.OsBIT|dtEXtSoftwaregnome-screenshot> IDATxy\r7( xw⁙Z-3uƲ2 :,̼oYifi x \ ~|| B!B!B!B!.$VL+1Ob?!BHG |66^T @Ko;{#=<<TB!$hmmU+ׯ*p5La]߶y~~ hnjJ ƌtB!D"LoAq~/P  Zg La)Ƀv ɻ^aM!Bq]~i8hs{F[zeP-c&VYjilnnr@ !B\$2NW1|lSIݒnhjlB5ٞDB(Bq *;B٨R/sbMۡ0a0flH*O(㌭@Y|Y9:G!5]wQR=@AyehbFghcc`EٌR#}c$ <<<O//8B!DLblE Mw`j\mcADji2Nڂe3b"8$2q\jmťpT9R d`#.;R~i/xVIto[j2N܌V;w@ԌAlVyoI T*5҆ ƞBA>ܽ0|Xig2e2)!S /oo<!87rG`L px ѳw?=Xec[D[ &2mGZuG0ƠVQbȱ+9 P(ϡ; Tv!gX&^ecn=oP[4 MZ8u}li/:t̂_{ϝBn9'jy(e m_hk%Z0)`M10@"pߝ&IB`m%D"= p HGYc8sːhJO#BX9.vAFA3 MB|$DGF !h_;gM]Htӑc0!K={0s:|7yu~WS:!8 #pQb0M85T:Hi)~ۺ *9mTȡq7>!"F1Zf" `5B2CSc>0m^f?AG!D qgF2^DYԒ^_~K>R0чFVcg- ۯ.]ϑw 'H`m#NqW/͙Cy9I;^VI!sg|A)͆_7cx7x=>{^^H7;ň<\r&0ua @j$ɻڴwEŘݻNoWG21l$闍(*.W@" ?߀+SSeǏ#&ZΎ1A'B"tiJNFoCEe%zJAv3fbTۑUXg*WFRW'^swx )xw0~fdӑۑ[&5>P!IT*LTLw:7 6lڄ ٣;6ljZݒr'x5:l78X<3IT*dغ n8M̈́O[ gi~kxy7'?>1ul]Ԅ-"xy{cܭcqǭ7|Z8x/",4׏wTgxlt-^M[[.l*?ek+G&ߧiXZ˗/cѲP|xz}|ːy]zWY ]ЯOo*(Os>)%]mA䥋?.GBŪ }zy(ko N0f93jq UwD"#±ཷ!ɰ䫕_qa6,]v3UxQX\[njaizj?wTE%Νq݂%Pv$nN}x W栨x]Xi)z'W_D"o_7&:ŴU)k6=\} R_߭ 7 ੬Y(?USgL 䳌Ąx@|HRl>[ -Ɩ|}|PCVCf&K#o4ݟ7Z >xӯb/V1dn1WFtL"EXh(ңiΟ?Ν̷/6RVVE2 >>>hnlFũ`G\* Mz05qLvv>$DF9 ^ސʤ``= olCؘNĥKm?f ""У{7:z M((1l(Jlܼ7oKA/Pq֣TE%}!0(6 &&Rw̥\4ˑdH%``V'i- *hhv['m5lRT>}wOŗ+VF@`ƭP$0^iEV⸲U ^m'.CzHVݎ>w֦#tA~u;_SjtMHuK+ 1|t1BBBHjVU^A#sJeG͜ OL@ɈS/қ~ĵCq1]|HLH@Ei<H[;k~lO<MD}PS{k EX=ej/Θ݌|O8uFIx5YϠ<7$IW!M.iYa "ugHňTWE{qRRWJ}BǷ<{ص,V 8kUbiB #?c`ARr={Z'xyyyR jJI ooH$4SH3%ZZIG@@롺J`jY;=:Y~ ]Qv5ܕH !j=tMyo;9+VJq{٘Գ]4\u>7honGj(ln6;MsSq +.q^ɮގ j@X9·_pGG?yۑe8unGBq6●T60@{mtt s-k,!qALۑN*73B:8T5_/;ryU1=_$9ՆYrqc}B!"i_;]6Z '=udy"B!tH"BVj50oI[] d245(PS["( >}AdmBC)}USFpy:R7d2O֜Gn= l!2y@߾(,.Jsr(>ѭݻ+jΟLOBqo帏haj+~jp<:vA@PP[DJ E]T#8,H y@*u !8?g(;Z=u=#2 @Ue9'`j=$R)<CF !Jr8aL&`Ct+J R RXBq~T6ţ&m'8)RދK  #">g(ǩlFfgI$c> }BqPSx.*8DƚGaX!8GT6g#B!q=EB! ,?tB!t(F#F;:B! ݎ$BaB!" B!DB!0B!о"{B!h{6UniBƍC?8(EB4?ݎ$N)O 04 |B!¢ 8%8ΝkعsB!¢ 8i7v9m)"BCAqZ _|Lfv!(#NͰT!j(#NOmvbB+ 8=ݧ$=1I! !BD@A!B(#BaB!" B!DB!0B!PF!" !BD@A!B(#BaB!" B!DB!0B!PF!" !BD@A!B(#BaB!" B/;< !p6h !,,L(#YaaI m8]6sL̜9Sd8TGfB3fI ĥIlW(M|h_o$mIbu=b:u*`ڶͶ(r\>rZ7op.--39իW2228Myv-׭Ea͚50`^SNEss3f̘`rXOs-IOO9%)?. :49UVVV$@~~>khM]}ԩSQPrrrio]ٻ%M8Qq ]l t'ďЉ'gt]+++ DVTe[aNZLM-͛1}t!,, vrss^-jkk-6juϑ(sn]]dz漴&i!66HIIAjjiۂ<'-- Fx./??ߦݖj錥}Ȑ!ؽ{ wGJR`}"++Kui筷¬YUh*daIII_$ H, ..b͕Q,XvLO SNEYY틀9.&US%Tf eeee!==ׯLJ~hq]? m|^i*jjjZl>p%$&&hkfl>φz36!++09p^V^^7niT*h7^.xn:Ni# V@iq9I&l_dV/#??_{.W_}UwAAkkͲCCCySwl^:]-BCCmJ;nMffUin]555Bm/555F/-,77W;MmF㥆z0-F DQx^VXXAYqƁ\.H#bH-BUU/_kY\#0e ;B3fq/`9r6;6m't)Ki4: ʲx OMu76KľkX՞4Oֶ8"͹{ 1 T;puY.ߞ7233I0%n4 7wmlZ֚|:I8kcTm:45lĈl„ Ydm9 aakMpX& . NgCAsX[YFF3___F.[6?pԹmuشf N!c/ޢô;T$==%&&Zu԰K Tڹa2Nᚦ 6l0'H:]aTm#\/S.ҴBՆٲBcj ,K*222Aw{ɖ}d}zz 2'>f]6ӭn:;8لNu;NhQf_lᜏ/Smdee4v=8etͱf^ Oq,Z[knp!u㳏GG ke0O 1N6]ФK贺" lcmh.Ǻ5O԰k:vpM'y:5lm"tzkDu ٲ~}i=hͶjsiMmp ̖tɦd2CN,Grrrl{x\:v~bXhR#9 IDATt3]ׅ>4Lȼ0f: ;uimrssQVV&jݰ0\t jZ%t3rۑxL޷ܾKY=o嶕#Ohol8|^zuw4Z,k8v-Qcu;R_SNe>jkkE 竦%ԩv8qD5h͛^lzf|ꫯl^'_^5\Ǐnq=???kAbb"y`Qb:ݞbuK '/,7tvvDOGr[M糵kײ3fh3|0cl0ֱg qM\͋qn#KwB!1cQ*$G/߁ӛ|6=k׮u.*JKKvh _;b[՝a%ͱQ'''T6vXetY555L.k hK뷕 ,//OWJa&ӥ:jsߚAcX݋ԩSEM… y-1ceo(mM'ǚ}iZ[}9˾8r Ԇ[õ???2vubˁ9,%""]fll,aF2ǔӾ@^a3UiX+VQa;>sB[OOO$z: I&KKh˦LbT7{2rtR5c˖-vUw\BCC僳]lƍޚ!~0`1c7na}cJ^^7n2e~Bb!/..FPP jkk|r̚5 r9 ÇcѢEhmmšCN'hnn.___466ꍋEee{OOO"66JUUUD8q?_[YDDΟ?ot}ƍúuFB\\u}YM6&LXfvY;v,/_˗/CRi;v,9___mm=vZx{{@@Ett]L0aaaXx&!$$pES\G}}8D!ֲdҤI@HHr9 իWؿ`)ܱͦa#!Q[[kq[TTqWwN!;[0kVzI]B!X;Bvv޸իWcǎ[Q[[5k֠_`utx{{cȑX~=m&vZtt4  >>'NJBKKKi===7f˖-0`fΜ2cہqqqѣ;4cժUzrv:[}111ٳ'q!hoN07oFUUPYY/OB˗@ !n=-+[*n{「7ҳ4dffLn4OSa555,$$hiIcaaao߾,;;M>u֍ۗM4I;VZZʲٳڵk… 9=QYSSHM:tckW555CFt'@O؊a9V;8Ɖm|OOO^+V8lOh-~gee,VSSc<}Rs۷a}{-((`,!!eff=`4OGZ"vXadgg0k8 h222vbBx~yFsj<)jfZ!B W#D>ksQ磽ס 322D;^'oؤIأ>YVV5jζ*O{Y;<6ڮ!!!,99;KS`m:^|Eƶ!e0[7ԙ21+1C&==bEԑ;kݚE{xƶ猦&6n8 `O,[]|#?4;8eߗ\f-[aӇ#p LBA( wBs x\5=w[[jXq>s~`vu(((0'kgk~k?Xvs4./77 j,--eÇgݺu~tD^hpU4͟?ߵ0Ƅ \nb-gh'cܮ18☶ײul6V|gK~m^`tiNey\j;9bmc {ֲGn[0233m^Fvv6?OnD"zk:V+==6Vو|555/3##CeZbm@AAi233kLiiCgap{IOOiTRXn-.yyyzvnnfj] "A7*((= A)ď@c򴟹B_a)ˑ\mkq~~^5:jyQ1`aV,1jL Xu \ڮ^z5&N(H:,Nc37CFF$ ̚nfް0j`\tX_dbx'_5.{UΤ~- MexLvv6_t ?wy+Dc 999Dll,V\i4r ~G%SXj632:f_hj4' T\݊\c{nӑ|\.wvU(-H"\___o{˚'}||J1yyyF[ddeei3'ih|b_O?kr[~ K!ذ!?c寿VXh aژPcƌ͛[\䝁6we9ǺaCY-^222B竭ܲl%W-ضm D4;}֖Ǝ[9&LX4bMM 0`CikȌ_s/Tv/?D. v3wI$;Ctal0PIMM{A|0Ns鱵M#4ZhNjq:GuPXXo2 fݎt>s7;;[[cY( @tt4ZZZ0p@A3cЬKYc묬,6a.6ַPi].k@1ނ[\awHHZ0t)))xyx̙3oI\.oWfHу1cƠk׮ŢE;ڝ^'E{%&~i~hrZcQ| 3-92 &N "[&ҬP{,ْVOs Kx===]׭[qζkwt1Rdl "srr"$$iAsA!M'4;MS@$Eooa H4OY EvSkG^;v@~0n8"''3g}،Ͼsnuaaaz3] ,˄"ԭgwny-"wRSS=;B7(2^e(з !+C<0BA5G;k%BqGB!0B!PF!" !BD@A!B(#BaB!" B!DB!0B!PF!" !BD@A!B(#BaB!" B!DB!0B!PF!" !BD@A!B(#BaB!" B!DB!0B!PF!" !BD@A!B(#Binέ[NegΙu:gN4;nΔ69sڸNi:3tΜ69sڸNi:3tbm-NgՄB!0B!PF!" !BD 12γ^46}EH7Ir}Q>8@(烹?. :4QM!B(#BaB!"m!BEm!B\aB!"Hgbɲv=҂~Z8q^^6t?>!!!V~Νxxdzn:ZZZش7457ap@,>y`HVO@Dx8ޞw1 :wI܃o(^y˯xއXl bbJG>q#eee S&X+\g6AXScnaqZD#G. 8]U7wy߯/ O@R } ]ġ{n%t>.^=EEș;1|9,[9]LY^iOᶛ٧o oo/qPIw;BB;Col2nM|8pz߃kB K<[o2nE|R8; zxx/jSOL / JL-7߄C2~ %Rf Jsѣ{w;sf{'am}|@'ݚqx:?.xbc8yfaf/!"< >? trݖЧw/.XC?nFQQ1IABٹMFf˳_7}SLCa^08~nw#d>\Acc#GDD>غ}v+Joen߷7\7n c|Yd%".3> ~~H۲9aX*d|0dX;; [;vѿo{q;8w<1.yAsD>;p#n {價ٹM6e}x) SŘXKb϶gMx)߿=pO]r <{" ;l{\F'",,QX >>ΡJcӆEFVQWW??JTWgmquBaǮ]8^vs|a|0W;;nIrD# m^&[Xst£SGEirϿ՗e_?L~QصQ䒄·A>˯๬FDxXut|򠥥sƋ0ĩT*?.vlhhZFhh]:̇g17}L |3^` qvnSf(8(qq>{tHsgɏ<7'ݏU}/>]g//o|t Mp {A,i=z^iO,37nBiq<+q1001xdd<<3}tk`7n#GDnX&ޭm

yIq|n~[뼄ش7?$yW17i&k~ |{ ]wiMqy R es}--P*6{{~SXUFrX0ml}]\xQ汘|}mG>|Y.|=sm\DG㳏b#HL9A `8we|BW)(/9456BV+mf ҝTw *Ј(0]h;ù@,㓧h0Ms(.S\C7jj+؁i#nb?ΐV\xOQU kB8_ut =zcj(@c_nVR84SDZ)U"A@`0zK㇀+_t.8)!WMXK@kk(`c`Ԛ8OW D: 5ab #yJ!b1ZFQCc ~hjlZ;\pMB«Zt܅D"Z6RBY gj Ʈs|mwԆ ?cyJ%qN8!"0SRuDA櫫( KR|5.f7hd2uT0\5_]%taS{,; _tC؀ PUy eе{ B#P m=RcݮXV\5_SP`W+Ͽp0xdʃn[߅Kuu&+%_|g*㻵A(/ŋѪR!,4{ǡF_phiQ",4 CbʤmS4>d~8&=͚):c * 'p \3D\@Ps IDAT,bdu0t;8WWTW'gR;FY[;`{HSoKW<ٶΞ;EK_}nŖ?G1މz/^KW|7?߀[~ǂ#Gw/^v2۷h&T>m2󆍢( lsg,FpPKO,BIk7<=I>o7O?ٯ!gX]:h{}l߬-$'N;nQm_ʎG6G9cLUq~d}xQ}[cOLG%VϯT*6FTTjylẚѬTZ,{RCs<< F2(c\#G_e˯TW^E_.7ycvKWUU5?<Ν?7>mԍXxu vK!Ao0|M[7A&i1'HpIk|qokԄ ڥ7Dy9.b``9:˪4n3$a?T Lj9&?Esz.00-]͍ ׏.o=FCSScAlygnhnj@SS/OzvMvceǵ -JT-z=EE6;nG 0*~d]& Eo`WJV"idi"-Ϻ>| MuY#$4zB#돚 g]6;wBbq&^'. -WUU5 ~x BCz\@o[O)v'L5lbyKwVw/wۭx69mTd$]QT\}z_]F^du'vރ'2_1LtߕTgRvy%\;l(> QfvInIݠrztOҙ|7Chh[?ok7]^7wŽ{H8@}CCS턗 i䢵\H{ǟjRhDGc@(8suYKV|5;sb 1q8Wu1m$f;c8C{b- !U4wsgRk~7 {cwq i.]TH$0Ҋ5khllқw&aضC2URa͏?-{'b;~>cj ½%2~mucc#^Z=":-]Çi{Usvdy'*%mP`u1mjJeЈ}b:2_~?_ԁPTbroMMuu(*)ETd$>_܉#** McnjwVٳ+9͘8Ne][ܖ/5w'{D"L 8wjwxX(u?b4j>kt%DvX+Y/: {eR>49;Syj@ѯ%ee5.|CLtDR-oEGSOk;wF8~$"pk1 x}z O?}?O@\l,羍lm׉F cIBtMHSϾצុv{Q#햯Y/boצ nT*~qȑ(*ދ .޼xiH}}~\<2e2 9 ޞx{2ی?ghTTĝ)m~GHh(}EJWq,Lq 5_pPF^7/-=޽Ru {K!yk⿏>](ڻ-mev_]Tp?ʞz! uVWB/;yFvh]={6d0ܳv)݂V-.ƴ3iHJeڿ-MJ\--x7/0R)>t!1?4""/Qd܊J@*1+Ex;}D|\v?ps~Ӟ{V,t#D666]Ẍ?2/?`]MgS#e4{>|/TKakxOL3Cz\LIIֶ_[tKC5݌ <XRL^NӾǨoh/>GR7gijӧedz 3|cF߈sϡJ}럘,`o>\ϯDXL"}bj0~{msmS#"hAXKէ+xa|)  GQ_ ĉHpDF.}vaM`Bj w¾ 1tp*cqص́C.:˗aS>^xv||G_4+X'{gE-_otg7!+[XeBHaP]FPی#:>PD2(:njXdG!MLš^UNwN}_}]uu:SOZ nN$t:-Vi <nCj*yy^e&tmROV 1 䚻ߞʂ 8 n5n"_}-+ueSfCܩ{oE=]t5sy픖hr{yxL\5͘Ftt4 @Ii)'Nп_&IAgܱs'w> ngۏ:hpu7еKZ[VV}9O>1;z@V+)(,xm1&sg)s(s3O V]/XZ?X(lA_#Tף,ϱ@Rpj$4&1ɢ\)o/[m\">Z9""")wO[&"ᷥBEvV&%O;wf#SAY|#6;;wf@v3D(,8(Lّ$əR'O!2ں밻"߅V2n:?@م bڽ$뿥MAa!m9v5 ?e wz ]sm'0.nXypn;uBC ^u~l@eV+ q<>cϗG7okudV,_mYkEdGr9},Sg<ʯl?kaQ$%$ܧ l5uۏ5nZ[*.'suС `UڳEÁٮ];q=2p@67Cfz:'Nb#> Lfz=Ylݾݻ}.4Q;h:w&)=kj@kⳏ>D_6%Hoc,`ЄE_VG}I֍z JEh[ٲl(8ٗR;@Bx9]Gb I&kV4#FxR7n Q϶˩i4&0Z)~_ v Z1O?ǝ>s(|m @TQ^=mhZ} hs!R&~?Q];In]۶y5ծW\5vnDQq13?lʰ!RRRB6oۑeYRG@3/`xaS2mt{n﷜3JЁ/y1ۊ{7v Ю{݅rP׵;Y3tFt @HQq!+ 60g-sz1)Wl22e<4BtZ^/3CGnce"+&Yݟo׭cݫNy0 |n- LTVVPYQ$';1ߧ7.3muMO""p<˺R@A:O HjWN;E, DEۯm?k'H#Gzm;t4}j@Ue4.[dYJZ|ka'"xᇸtڙӣݺ]r{m{&#K')I 6n="=7[KIINF$jL>r6o!ʺ6;w!gV pуwr#!'&&0\>c6lrN ğE)B.u*B"b }۶= mۤ kٺa-Z۲emNj5~7V0Jc(lbז4j ( V^ݻص%Ǚm :ZXECj*,YI X-gcGGDҥs'V9^ϚoOZotZ]V;ͷsvq 702fH^yu1(-)W]AgQuKEE+?YŹb~-xէ7zI< ;0]wma{ҫG,&Gvivma{ΦO}z͏+?(+ et/ǫ%=rէ}z󘅅'|e >˭۰Zoxjqkɡ v łjeϾח_N A.I6qicҭ|b,ܼ<ٲm6|B &U9p{ '/֬0 DFErUL  兯RPx M99* 3֛~ Sy2dp@ 7=F^Z7RZzj2f䈀g{a/QPx9EB|+~ܱs%%E,z}I4&* JEDT&ju-%gZ,DDźmiH쐪;77nb߽IY6l >z]ާOz/x_#Zԇ~ω'ػgbbvm> ILGV\/Iv̕C~}욣upڒ,KX̦*lrݺyзsŇ?S&A^Ϣ%K9} qL}ݯ(<>c.YyϢh;zTU׷dl#z5j #nZ"%9Sߗ-'3#29eMSi6֫oz*kEإl ?AϘQ#_0 +yN;Χ¾ipHv tUV}ۘ[OlL I^$K| y?p8ٝ5?Mo︝O@e3Hsۙ"vOϚ>Du"=?O6v2|P&<]{Fg8},qW?wA(//g݆M1UhӦ /Sۢ<8.:ҹS'wj 2^YHFF_A٬XKt:^YsB1vHZ=x<6cFepOZ][cμytI;v˭wNaØ; N9KHUHSV1IjӞ{I6Hy6DrÌ-rw??{!`bÙ0~r6OfiۦqXo<2scn)'_TYvqicMxRˑ&%DGzJ1<R7){ׅt*{*z}(Zph:,J \c8v#!=}4&N⻯MV.D_'MN,+9^ʲVbAP:_>h.ZyxuOZbf灇z).BCC^C6u})o:닊d__k>^Z4scGUwk=ᦛxi^Sx:Y~u' p T6#zǨeo.c kiK64wϝcIvMM+5gEA$*+M=U=2Vv;HXX$fD\q'?#oR۷ojQ|u L 6Òjn,'t;X`ZrP _V7͊VG(nիj5TkԻ?7dtZ ?;_Dyk#g>o.g݆NFz_~$ygQZV}?qY.\@:%p-35wHIIf=9{eeȲLUWѽ[7ƏCV 5 oTTTEn7flqd Unt>BJJoBsV1 D% msbGtl<ѭ0 - Y)=)65\MЖ]iH\i)%&2m2k;[%,X9U*!UVHMf"ޯR5BBOj;˿,HR5ë#_FVCS%$竃t!!h!5j2dIn}PG5gp>jfmh 瓟_@>i0rx~7nlSvP%Zv2NGj$>1X).̅s>b&u{ QDEF^iץ(L\hKeSi2e[q uKGQ3eYe} YM$.܈v@e.'h:*+X<_oDŽ- X. VTd30Kf Ǐ9S DJ1 cd W%&"2m0pߚ(b:7FX[hdEvF1uvm)r IYM-FRĜ P=Kv7FEg\PIDATh4j`RDLP?1 vhRYZ('qjR۵). .%ʕhUѸ\e<6b:R Sh4un KB dմ Vk$Bh W|c{^SA>D1ʗ~H|" - P}eM) 02&Ғ2X -Y)).&D/,iS@ 8a"8t`e%ufZ"䠬Ca^+o -@T  gGee9IEEy@Yg&oxΗ4͡] %$V9iS@ h ɘՃ$I3/#( Z͡]kq5X7 O0m* Mf:ρG RLX`-B"6 "Śoʤk sͥ/CDD HZJ@w55$h4v vn PAs37M/hZbD@t@  pT- W-JÁP ]# /@֪NB楈5Tv)U@ 8VlT+a.Xݖ00Nˎ&ձ@ oF555沂IV\ʙ@ Z\0n%C`0_ /@ Z.橀yJ@ /\.3(KoL$E@ KwT IDATxwxUlM{G ({/RU Q_T "Bmɒ%y\sewg̙33Ϟ2 B!B!B!B!BLiŲJB!:^wh* +L:IWt:h"B!'LUmX,[yYYO?|- q4(;94E}_qss( Ղ6\ !Bt8EQju]\pqu,o楤  L}e_3e+B!mz؈3:Yj&+`60j2 lꀬ !BE {cGMQ>Y$TU!!B(JW^.0:}5T5VC$X̦ʳB!D;QT3[ktUE l !BN}|mXm!G;ZX@جJB!UU؛B5"UiEB! {LS/ 2zAfj&f`H!{'`  vVh{B!Ŀ{ کрH~L!&um ?J&B=M#Rgj|tB!ĿRB$B!Ŀ`]L!]^5DRA$srsh:;+Z#)iD( GR ť&;R фO>M\F罷xnn=s6Yh8UUUapuuEQYRV E>xGy~*ZGV]la?̓ϽxrlӬ{,E!ߏ{qݕ꼶[sHꈄ5l \\^3 z""iZNs/eok 7|~jY:>+##50<",4?_}}IkoA:JbM%` qsume[wMjhm7]GHpw';87n0;x}ʤZӯ=U{b!IGXfN3-8n\=}z1{1()+W`xϓ2)jM|&6\]]ױl\vML>of@p3mdX3Yٸލ3`3/`oҹ{ _e~={1Y, 4~iϳ <`٧_O?31lHy.)+>f} z&;]-ӯcϙ25Ʌ2g_YdO1KIa4mú9Ks:#gW˿e8 eܙcbEh4'mgK7/tcGINI'O,yogҋIb=xp 9{-G8 FG AQE9BtTT!RC$D ѧͥNnrJz]{/ӳEoK@SΟ@Eejz $/?ܼ|.rXm6ER9)/ύQVQcj}l*}{♗^#Azۛ]f;5~ Τ4N:wwlRZ˯:b wj}Cհ}.bcճ;{NK4uǎErJ*;wuDwǛ^=7+dЀlٺW/TGGhK/? ͜ErJ yjLs Avx$ vـׇ7^zFG7?d8BPUH&MO`cgů_(Nv-پsIG4\1};wS]mj}l*ϊFCӋCQ>fSuͦ_7 Yܽ?`ʿ`g"4$eUU%5-k~C0?||dfesCٶsWvJc 4u}~{reAnn>'wPu OhX,Y?YKeeeD; tx嗸w$민A`tFJ.yBQy^NCQPQ=Ҳ2&;@޶ &:.QÇ^ݴRXoz,(CAݶ!N.>kM9fÆ WE\Em1ͦl9< $$s;<:2Mp=Xf-IGP\\j߇y£O=?OǿwNBt͆(3 /8UUI> Vgȕ;։ . BpLM)WnOI)d2;P躿Z~Ueq篵jo7t rrť;!}ql6FΈaC;Zv&Ǝ3Fy6'$0zzeXRZh&ݱ{7~ hO#zy$-=^xS$̄hҏ>ŵ]o<̏~Tؿ?7]aCqqq?סh*DDw_}rݣ;b}|!G '=3 77f\ n.t:IVr{>mdBCIOή=g#yз/ݺt9 "$8-[9淔oK//B>7nCUՔUg\ѰI DLtn Q7{l4[nCp1$L=y٧Q-@_dLL8D>тm;vaӖz5Z ߴ^;~ 1o_z1HJ*BfLDyE_kݵZ-7]s:W!<bHKd2q78gFãdgdΈCrsk 3ウw֘Ùt_-}Ͼ:Ɲݷ؛ZsDE3r#P!Z{@ET^q%P%?*hfsEllݱ EQsE9racsIF !+ٺc1Q$:̡ɜ}cnE Nlf?1 rsmIj!D||)++gҋpŴ<ƶMee%A*m>D҇H!=| B!DW"BI@$B.O !˓QfB!SB!6n":2מ_Vkn2j7h8tH@d0|ɯ !-#ܼ<=<0^lf|9yV [_UU_Hl69h4 ݣ] 8{h<݉;xM&<׻~>b#j4g#5DGcC{R\\+!o޿jb՜5uNuhoqg͗}yEF$Nf԰!x+!5nHP`+{ǑF%*7g_֢t PQQ^Ýӆ寿~PNWhwX»:'/Z&&ךϖmf?HbǮxse0\xŵ\8|kXOxx7>j9{??_=Lgd2ɗ_m=6[H_;lٺ S/()-像?c= -7^Wyzѹg#+;'=M,L:̖j5\B~A!~>ޘMK8@~a!ax\FGҧGw\.c'c4%[N$IՑ@rJxSYYmOwKKg.Vqs[Ġ9=),,LdD..􈉦{t4БǮrnIS`˶ef' PU;Ҏ=6=_[MǢދl!&2@\\h4>,$$&QZ^Nl۵q8[GÝ̬lno&|6_KZF'3+_=Z~ ""jl۱0ƌAUU5r~^ֱγ,~`40r` t+( . }z>Xm6{9Æ f@>a#N<7SC!Y :xq ӧgJJ4/̟7DlL_,teo\vqL_\x[갞OAL$㍇;nnZ^ͷP\RJtd8`_[s*`hioK..F=tEa_/WXr))+#6*w77 #ߏkظHL")9>b3ۊ;ȁCIDG;:~_%ee&Z:F go|E$I!H >ތ2WWW"úNeU=bm}jsݠ9Ms ]_= $$&_usw9[~:e &2WW9ϝ;N7&k~IbGX8ȏ?ǟWӻWy^k΁ah4V}0Le8#+;rDd ۇϯWkj,cV=(.-!p27nCsm.y 6l¯O^\{l۱tu55g~~>,~ >+~dϾ8zqij}FC\ͳO<(||Nۑss=7 DpCf<4u x{c0/, G5wP?SR)*.!/WZZؿI&Kl 7F{FQ}b^&4KJBC8DiY5A-G=>5YG_@JF&Ys~ƌz-}KZZT9c^Zn?AuA} i <M>]Ζ_K|quu%+'\<ӳ! zhςFqĮ)/8sEgݳ;/>{űvz6R;c9Q#X{gd:{zz~'S\\@i0r&h48#{_6RRz딗W8>+6}_tk#::zIԱlK[i :{t;hщ^\pԡcHM XG&(0)edRRVFdxc 2<5m۵FC֖oT ͺM('NN־~=*7n"᝵Z*JlM4ETSo ڷ܃fcȠ|<;gAFV6Y9ddee:4| fۭ,i@ ߗ&OYsٷ?&Z) yÝ3n$88z1gsL=zX2ᜳhz xV[_TFKAncNs5jm֓Y'z=sAgЯL*#h4|k;9zѦw<SQN Oϝ]x~p3rɱ:NE>Cښu;*5C:Mu.:-}ВG9mhk)ݖxۏoVNc}Iv1Ҳ2CC2)Ǝcm0|@zDGG؟8y>WtEQҒRضk7˩g61`ێLLnDE:&gj}w܊^&ĭy'>L&VSf[nw|ibxZ|}/(Pjb6sP%eh{E(CGPYU]yEeU뷆(>r!TTU_@pP gl5hgl .FJ)-+ӓ׻%48ҒRS?Rُ<o/OJʰZNwAX7 IDATZ{ZJ90f0)-+Qy2[cGZF1S7-Ə J>Acrq1btq!;7Owwƌ?+*:۽7"HNI#%5H60Z~e6"ºGQkAC6)Oj۟#_􂹌=\V cԒǴ P^QW|GJJz5\zTbcϿlt3{&-- ĝ7Z'fȠaC3Of:HApH#˓s:7bTW{o(^Ύh[ g=f2<NM@٪m9Btlmމm6!Ybas»vP!DYٶLDBkggAB "!Btyegvt>Ξ|Srj!B+("wB!hDB!$ B!D'B!< BI@$B.O"!Bty !˓H!]DB!$ B!D菻׷E2IFYB!U$ Hw >B'MfB!$ B!D!f՛d2eLJFq'M`\|nwjL&GFjZS_v5^B!N=mև)NYi 9iRUY(흥._D?Kص{7>>5!ӵk@*xr2a{PY^F~n6{wl!01=$(jcVV̻oɐ#6&S%B,- ڊN3ǣߜ7^ބEŐw'vnt%͆MUINIqD:VDbbb7aUW?w>^~yF ʢ7m7` 骪G~Ʒ+A2o,BCCg6;%%Y3t`6ǝ}tGaێ,;sr5b8O<:.O+),*bؐ!̝c{Voի(+o-aͯk1M?fNh4s:yBtvCTW(91NO!# /3NGrboQK.\(Lm//thY,Zc7󏖡(zXV6㏎ tyEsI>rZtyB!:_D}*Τπ!:N770ܬ Jh}gSTTTo:tP[ԩS5jT^}.X[qŵsÌ[s42hAA<ꗣv.:^={崑# /{l,{-|ϟG>  bL"틟/}:Ozꅿwq;2k ֍Hjv@uu5| ϥGDOR\T̺ 拯һgOu ė*.)a?2gL|}} n?t7vzy!]TU%;#nQ(#4 QdT^DyuضڒVcמ=oylsFh4 4^mxrEEE\vST\Djj*UUUgPU]M޽ʧ+...TTT6::PQa﨟п?&2"F޽ˎIAUUq5Be!wj&\AUk  0?͆9g}N; ʆ - s%::n6zd-ĉYhU9r$уs[or۝e<\|T~Xe5Mڜ***degse'ٳc~ixfsapc:LX>Suz F#fqˇxxx*5+do!8մ[YUU%FWj'UUN7Y,M&2Wfɒ%$%%qgr;3gWfŊlݺFׂMƌ3HKKK/LRR/nt۝[h(FCz폣{lli쏋#Fs4@  j׶oBdDs.kVxzNxx8wltnG#͉B!ڭ@mpEoxxxԛzz\ 6 }Y9x ,^w}k~fdd`22e 0#G[ofĈl#UVV2'X7''U/]nW3sL; 2z9\gy& Tc:*+o;Q\8e2O=/(๗^&88F>ػo ӯEo.f?`XطO7ih _y]O!Dha..TVu\UVf &8eee$%%aZ6lc ۷/sgԩr-?ީmw$JtT|1iiiX,yt#L:obeǜ6W_ܼ<o^o2(z]xk OŘѧ['/sͷ`Xݫ'{rzl^y 9GVfyg+rσ©DD;~͸ /E`@3+XߧIdI$anVV c E;]  77שx |ANNk^f̘޽{O[TT˙3g%%%ݛaꝥ6i.qf!#^j KUq ߾y=Fxtj%//  /W7*+(,%'3< Dբh:233 l3jk}J j^fm !mGA`H^>R(e@%PQ3y\ T[ Qm K``:7/_*J8|0*kW|탋h4N vAO`5jÔIl~BqZ,v$ ?"c)jbݠenybX0xxx;%'!!qƑży5kVm=CŅЫ`TՆT SB!N7]xxzW3v& j zv***b…\s5swrmuhړfebAB!N-bAQB£Jw4vo7i uF3ѣ;|/WEy9nn !8e;l6D鐎$tu6 !8)>gT!R;$Tص*Z, Pn҄BJRCUH B$  *L6Ue`+>nBѲ;}=`;`vB1Wz /uu;j]HTQm fS~8AnyHP$yC&_]j\_TP1)/) :'^~ F5[ъxbF ͠d/ćmr/}IV7/kˋgX@LtT姮oƵYy\8'5:{`!66ۦB7{>lXTU7Io@q(& Cl蓲uW6M&&*#~TEx㡲J3e̠H܍z XT* O]ے~^PWᄚےhP46͏Ѡh5My֙guҔk`_W7x iunYD55/^K b@3&])цa8,+7~k&cGb ? U {g11AbˎF !ߵ݄ 郧}jMMɣxӯ-M!pNm0d\w:sT7ô[>6]v1]Úo\u,g87 oSI~(4֓;y9gXI5elInSP/rdrYqs.-揍)1'. *]l6oO ӗkAƌ #(YFft_?>g\fϾ`՚_)*.fÇaZ߲YTUVqg}.^~iºud2u,f>c,~[?\Snu/g> mHJ 11<|߽ܳZINnÇ fn2ٗ_G>}y=Dp39}(.6ͱͳm$Uj;3nc)-)e-yg-Zl1Q]]fŦRYYrz5_=V.8tzUj]=ΙMdx7|x{eV\ZտCbӝnj8'o UU+!(k={7洋."",_o/}d6I;oBR3ҝz/ȟɟuǙk\n-S"R&U睥޲ϗ~ EQ[7$E?Ue2ȍ7`*ub*Pɢ_4˃Y^7a޼&q/fo.bobKחކRtwᎳ= ГWfem\%/7v qMÞ4/."^[1"ȴI-"vZ-r=d)jsc6Yߛͦ0hXɹ$KBu j=f9,ڼ͜yt:$6"" #55 Tߧ7OOc86Pybz:KZL61QG3LR3PUoݱj2mЅf:wsu /OOTÝfӬAIMKkZھhqqq| !Dؾi#ec[.2"TZDֻXW̝xlR>EaH7{nFSx"_:Nj)n1~-ݨPaRyu}y/W /ǏW-}yj1ƱǕPPachŠ0_/*&c=yR?.z3V^0o?HAN!DIEyEEe j$&c@RVREiI)xVi7^^:ϸ mҋ/Ub1cڰX-hkTUEa4XVbj:^cl66 ٌNw}R|||PjޓUk)Nu 'ӗ BP^VʙMHs֯YqN4~Umz6MN,0-f=/W S" +ldXyw])gj@-:ƃUV8kffU~' We&}Tӊe(,ܱNk来mN,f Hƒw}HȲgmy ߐHaA1oV3O6٦L2$S[O>>dz6NU FWw~ݕCñoq#EᇚLfƍ7GVNkjf׸JZCQfcr}py 22u/ǟGx?l^un<'/E_;ŅVRnsZl6kiw9|˹|ʬͷecZ=j^|̗_/Mlfփq72a8 \gKPUâoch94Pq1ym 纫_^^x8tnt0MÇ!o ύmm !D{9s4UMB IDATU=޽7玵'Z1Ugۓt=wi:45}alvQfXػ} N]Uˇ~QQY^ܝ͏WO}!MjyPYYRƁ F#:FjP]] FtzAeeVEQt*=77ffs2Vч(++ /5?}^g^FjMm:n@Uxtz\\\XTUU6]Oo*Kpqqut*lVflV UUU/nX,fGFe?X!hˮlDpP_}3`it:Ei;N\T5SyǕ@Un{Eq7酄 X*"Qb. k ڻ "`k WT()[g#J6y9s>9gJuy*]qD$ׄB#َY+QscBba@?4ǧrw/Xsrm42->@&F?{D:K #!ocзmK~9UޠC&r7oggqLF<ᏜvUp`?w !0<[䌧BJ;xWbI'sqMDzy\goAA;%+WѼy3b=V=yP0Hn3Jn 9âx:7o◺BHU۹{ נAj@dKzL.+]܎:on7ĸ93U8&#oik2\V6(z م/h3t-bH .Ϋlc{ޙȣkx޼1NjȵH7X=7"W=%#cڿ V_9q}{}x\b&Mo8#پcϜňCВHt9/ b8ϗ_l!3 |l;E4޷'QFaYw>l}z/a~f!yaߛ0YmjZ&MI 89w{G$""5kWբ!31vI v'<'$Pv^P۟)NN:0xLm S]&IHc#9>gpaz0b%c CUJ?e|T^U 00Ir6vڅ !96AAq3g0Jg,ˎ\@DD6m㩒>A{6I3 #rd|$VwDDDϛKRRr%3ң.ߨ);tg{ضMֶmoԴJ꯴h^YU^,[{e 4MRꤑR'+iVԩs`:EDDeݵ-Ӵe)u0MR{@ I1 C$&%q^'&4iۑz x<@nխSwg2M32E{AƊP :ȅ?04m[AHDDjp !>)C$""Rժ̲\ID""R?\J=E"""{:D"""z D"""z D"""z D"""z D"""z D"""z D"""z D"""z D"""z D"""z D"""z D.078ωB"k?.+g_π񧟲u6N>4.ZTv~?@RaQλRׁ[DDj"s {bE.^LNN .,2?dt?88ľ 5%En O3S*oGDDD 4k֔Cڴ(2wsp"/Y]: 4qkۖm<32XEDDK>'K ͛ϥ#G%33l} m3~:?4-[:b!W\}-=c0qo./=z2} &Lgo<ȣx޽` 9zW_˺# sb8̞2gw}˜o.#FG9ecnok.""KՋ`wK9Gw6lHvw/Q( =#>3u_}ysfa_s eE<: qک̚7\ϐ3`؅l"Rzqo4ysfu<"m-^W[C_*?,>c>^{e.Bݺ7m[o.`F P~""R(DG ӳGw ,^/qH6@s;nCe{1gA/YJBC7lqlڵm:ЯomúuqFGB!zy+..;w?,Mo׶ܲ$$$-\ =y7Y3`- 4aۓ~ZqťD X8x #2?66(Ka)))8ü9HOO/rgSzܜ-.Q~9hEzk#ea넞c,kղ%=[Ūի9CfkhތD}j8E~uJ; .u͛yժ}ڮ\Ak{8^} "z]HLLOMM=Uٞ#qFtmkҸ1~Ƕz1r0&=3O(bʕ늽6w|VZMV|z2mq҉}8sgfϝ˖LdfoG֫_}{Gc ՂEnۛ}ǟ|*""R;)LNmҥݏЫgq-t?|3^4|4m]p޹4n܈Ӈ#.eİa<Nw2q'Q۱p[8Xn=/LJLLM_GjJ*Cο+C-".dfĥqg+Q* dUYJ;T"q oaْoڣw%5IFHqwOy~>,3*|HMe_" !M[`TUIqvbkfrsmEDDizHNIaI TM(R :ȅЦkgM[␶ ޹~'mW=*Te"}+a({vvȢm8M t7EVAJj:IIM#n݋*/)akf  "]P(a4iMI[=D: 8mGRRZ㐘L~~mWwz\*H-fU5')f!Jn3 멇-C$""R&"6m\onM$N:i)09hs bEqqq\w?rЪ)Ft(כ𓕵9;HOU(O<=qpJ@1[r%mGI6k8ꈣFvdS'%R-˶<9> {MjiKy 浗fѼY3s݅+F˖|[y'8 5")Dy( p!mJ]nY~!Zf H@އ:waWwDe8@޽h:ƶWDd_]~uZWjyq8e*Ð3wL5 ?е<z: @\\cdd0kԽpc8oY|ɧ\﹋ntŲ,5OG^X|9O<͛5#Y| }{W^ABBBmY3f/ěGn{:p 78oȐY7?bl:uc[DVKZxZO Tߴ  fڵE-ˠXtic.Y Sv|!^11\w˭Xc6o3fϡm9p[ 9} _/.>(8jg9S99uSg1xyL<6nڄaxroY3L6l̴i3ftw}~" 4=s^ϧ_|Ńüf3SH[wHmj eBlhv;+eU٩#۳vң{7|?mfNBfMq{39o.wq0Z6oG~3 ˶@\u ۶m_[SЪE3nn o9OGBBW\:믾>Ukywqv? '@W^}i'&c ڊtWA-YvڵkCTCۇEKrdǎ,Z޽zú786-[a[=HIٰa#8Щ};; 5%-Hv?ݸqsĘB`d͛`6m2 "uoܰquٞcY>}/]țu ""ٲߒk DRD8pt!{sxb\9.ZgC(IJlBV)q!>˲hִ)m1={^4ƶml& SCJjA dPpߜҺz-k}yaV""]^nZ*hMt`p|TvGy$9rYXf-v킃Cq_V)B^Ciß3Wq̵<1irrsJv۬Y3kڛ6iDbb"}Ed;//uES_v4k˲XvmzGM}6*[8QNZ_iժUkۜ|r?zf'<0$1T&L|5kK֎L2ƍѵs, O2r0?g;t3JuWP:| &L̪kؑ͜ExbxE<7E~\`kֲr՚HO>=S QF}ۑ^'>z)lܸ|]{I&M5e +{ETdLCfQOQ4Cf{J~\~Hyqwu<3m:s7eXVWx/ !3Q?Dݹж6;]ˤ)rw1= 4Q/"!>S_4_Omغm8~LXO OD)p\}MBvv Q""5$a2/q@E*Y]IMv/P(į˖rHQ8ā^:rM"-ZD 9xHLJ A|B<11@Yk~q'&66ra$'cY!0 U}II)o0O󓙙ϧ~ؘ1Mvzp7 1xyضMbR2P0ra' l\Hmpl۶mmܨ͝Un׬䈮݉0 (Sa^ Ww/S[T0to߾BK]WbI')i/c>:2?/?]v(mm/~z̝7]H|||dcoмYjl$!rW_oi:6[&Nb37TxQ:b!W\}-=cxet32x:wNV֎1<~8̞2gw}˜of˖aFӣω?b"{a2ַ3t(!0iʳvCGb 3:b9ᗌf5̝7!_HO↱عsgۚ0qo./~xH` OMdp\>qyeCοvw@~X,_Wp|ϲUiޯh>o}݋;Kg6i[Wd~c9-Zo6_gKsMceY<=YN=L<{xSyx3cuy< D.ؒ_qJ=e=87_ͼ9s:~vjz8Tfx; /`ْEcS^ݨ,lƋ࣏yx핹 x uGoܴooEף0vmEo-syX]8:t>LXf~=whӺ5Iff&L|ysf%2gșg0lkueYKÆ 7=jw֯/QeYvڵ=+Sgyuڟ+apKKX@(b˯0z%?3u_}ysfa_sMdILK4"W^\ _~E(D ڥ _~]Kv"N2P{3~ԭ[&sGʇ]+9s`~ dyw IDAT Eo|3,9}thߎƍqکlgșgЩCի\,oY>Ath߮a[n% ѻ ԩaJe73x ڵmKzW8#yfdjC/*QQ#{n4lؐN?C9_~]Q8<2 ;YQ}ż}L֭i߮]r~sqءҲE ^wf`~:wq?f͚r7E֯4w~uy<:EϛoÕ]ᄃe˖djuqFGʇB!>_: QXVxjw:u*TgMo6ILL$!!҇$M6t;>BgInݢnݺ_>мtZ4;w䃏>?fgN6l؀{r*>|-⢪wgu7 KG/2ԁ8gwD686ٟ$ԉ?V-[`6 )O"Rs(HN'eK&w8"==}/ OpQG2p}3'75q432y}nw+{ 'IKOm4iܘKc%Aoc>c֮zz߃;o .xt̞;-lͷߎz?֮ߟk_?og&>ʼn}z<55q?+Wf{VLxƍѽ[7R ?XAV0BMq>?T"R6 L~'У1rˮRx l̤a9#Tf}C2&Ofg"|QzY:.} F\zEӮmg쯜>K&=3<222xч>6.8\~XӇ)sY:#\˳ӧ3٩~^f]_W[na3r4jؐNLLLLTvE_y>^q-wxJ<ߒI\l|EdJuBX(.\zEDD*0s/{+iLDDD\OCf.>fADD&3}?"\"DD6 oQU$"pqص3ŶnHLCrJ 4NzZ")ah?ص3-ZqHێxb֋HgBdu[*?[ C;kGm;uql?u; 4u:+FZzU^(R :94iA(1D""R8P0h"^{tAql&?/$!!1)e?-չs0 Z9<iaVZ2ĄJl@N7ޗ;vr71A:n,K}xYeDDkTkq#'9.8ہ8 ؄~V._O_7mc&'nS-N~4Joo^/uRSEO :#P0 b {5:Rˈ ";Fbbbitbcb{g&>>7wޫ\ ۶|>3vfg#i54n܈s`B^:ǃe%q葬Xw?>6̚>u\vr~)+W{1],g/ѷW/-_?@f<7s_}@(H^'pWP8M#v̦SQ㲫Ы,\uӦMk^7~wo1]:3IKK!@Kƍq7r le+ٵ+:VFDd_(f,'6u6.o4p<mcZd ?_~G">!''M[n啙3=b\7~ 9жq?8IKKcllk}48Yn~ co 0uL?FjJ /̞M0vS,vrzʯowUW^Πiټ 11~z]o-jь:xݘ~e⃏?aMדGZj2W\:W^};JVIII'/_%umS.<ڷ;ԔD*M糯a;6mC sShՂ8aP/=F 1 וjȋsx7x{{67|o>mMBRbu1M]9*LEڬzTccR [UCQ~ 3 VjÌ6L â%K9cG-YB^=ap-XӤSǎlذԾg]pwRV$nܸbLܼy m&cz@ R qQ]YDz,|~y_ZjNF{, ;GɦMS>۲"MJL 77:8@jJ2j8٩O=}.>'@JJ 9ٻԙmԫ[0+LRD*(0"ˮR.xA:V*I'쮠2&S~>~|x1 -~8BA,&d"e!&&cs,ˢYӦضlW۶mHH*,% }q6_}a n eY{0 IJX ڻq,"1.V-[uv5l1 ,+PT(5' kD irj*)>#ٕ5k9kZh8Hِb5zHkܰ9/cIOS4 r%//u˲XvmUnܼ"V^M= JSzsɹѷ%3V-qpx>"e,\qKbbBC=j#3s\qh.xXd_UE-(&4c0*0 56'܏ =4Lp 91 : a͚c'LqFt˲yd“>Bxv^^}E-#1> b¤ɬZYyy^\'^s3^e? Xf-+WS<9p N}zSظq3yy|h >6'`Ƭ9|h ;w9/O'5~d{|^_^ % mv?iެ)]g1 7ز%/Ve4iT?=b8:UC} '+[}ǫ嗌uq7\3Ӧs=wcY=;I?ey7?n /EOѝ m7^qk4Ynn<`0jE$3qT23ؾ-[m#66pp;o''No"8C8CHHgc"ۊ0Ahќ?nL1m۷sdN<3?3 9~'aM+-sgIztzv?n=Җ2}d&<5W]KV-y{HPRˈH/TJuB{˖|C+I7Ѿ\C.[!:_ͥ (b $61+稾{?u񐘔כW >!XP߇8K~^nAI$9)7 a|ިHJJ)8 =Xcnq ϧ~ؘni8vAWp$͏'&0 vmAbcbzm+k+8w8&y:gq:abY~۶#OHLcz|R=%5z(-aOLLLu Y!^s`PSYeDѵ;111aWa^ Ww/S[D~zMغq-u kSi۰BKmOɿ~Aje++/"Z%+WѼy3b=ȾoOaR@P{gx=`m&?WھO``NmqGyEٖU=UUFD\D戾\.oB5'&ѡK_`a ߸:;vY:*.T-""D8?2reh97?ǎn2wkc4j؀>NqHS rnC`Y699ysIJJ\{(kEK].PQSvdm\xODDmmۨߨiԯ@t3 4IFJt֮YX+""eޑڕ?NJ4LӬ!АA0 <M[dLul\$""'&4iۑz x<@nխʼnDDDIcLӌLì"r4MlVZ%AH=DO 'T80"(AR/y"RO:^DDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\OHDDD\/*ZʪJDDD䀪@ԲUņ?WM9TZ *8jS2 6zU!&0q"ixjZDDDFU'7'?U}niּc $.>4vS(Ja#/wƩzS 0 &-2ܸD!*T8m;j\M!1)@0m;z-EDDPTm/q3Pa5`tUi`,o.qq@k,"""JSRّ ۶zWmmHRDDR0 L >>D֮YXV27sP;XgO4 TJ23 xLSi`_ٰؖU`Y6uTws0=iШ Iɩ C:HDDjTJ JHH'1)4qHNI%1)gN 89|CF ͫ^aFay$'Ts+EDD>5mΦ91q0qjځN?5l4 '۶ٹ#ZWwDDD:7jBnN֓^! kX-#TS q|C)2Q /|t8Y!uEDDDjp) ,p82cTxɜbMɜSf1)"""R9 V^pIENDB`parlatype-3.0/help/de/figures/parlatype-prefs-controls.png000066400000000000000000001035141414030451500240270ustar00rootroot00000000000000PNG  IHDRDŽsBIT|dtEXtSoftwaregnome-screenshot> IDATxwxSeo&{C7ЂPSA\qne[?q!P(ЖM&6Б\W&9y}N9<9!B!B!B!B!5S4c^yB!h+V?} >YvqorptQ*JK,BbF CqQQ?l{ HJ  [nQ;}wiI1eeu&WB!NPR`kg#%%EY|:)))=`՗uڵk@--).ȫ"BaNh4v}}h QECOe2T՛MHO]Z!t!B˱CRew|!]禖:}nxFIB.T(VX1p[@P9VZIUP]-D 6bB!Hi!@yC[Q5Ȧ΢ ok)BqبjWz쐁ZSWB0NB!Ѩf"T=ZUWQwBd+oB!DQJtʤHY%`dH!_սl UViB!+WU?L7ɄBq9GɄBqSPx} B!eLQ㯂z2|H!y8ot !B$ DB'33JG[r٪ 1)`  zcgg֡ !.#rGj!1W8zD>\{=RVcki0 ۣPwgAQ3}n]Y3nn3[ ]^EVvlν3gϗ_[JT`u, ^t綛n۫ٱ6g{7sB\|$DF$D>Q=VF&0#6*j7/.^c'X[Yx_/m'"$(0|prpՅxzN ~}zVpt<;v\{fFݼYqI /|; G cǏ5=7]gYV^/,$>!aUɮt'ťAAQK^#VI2>9&n>X v'Nc߁hTJ%^3&}_lGqtt$0 f?s..}//s9KĢOH?'c`L5cF䫍q1aU g66Ņmȓ+ߛV7p-w0ijl';y ~v[1DΞ=GVV_|ظΨCqdkOZS=\ެ멹5?=CBR2,]toYҫ4m gϥq0&7W7nz-#i|c'xnb^zz. _]ʙDB$"!ǟPcohHӮP[~~~DtāC1KvFaqc()-C[EV3fp溉`EKI>{ÆP\\geu/nἺ 8Ix0\]jw &PƌNqI I)L5N٥_Qm &( 2RCޥ1qGF\\0*X=}C !)cM сÇqws%s';B٣;{9ӣr,Tk#BXŋxt$$ܫ ??VI"!?Pץe &Dnl*oB̑`4 b4j~ݾ %">!cwϼȁ)/ZlYTrIgFPo3+>ML9c+qc%-=ݬm5V2~>k4IN9˖_T* M1^= J#F:w Wۓ}ٷ?А`n~u%`Z,*)BV׊fߐF:=9j}zF`n6%~g''8wU'2MT#co'&_XxrjGQυA8uLoVjכw֬F?{=DS(߄]VS\S$-DB\D*ՅwV,aϾڊ7Yst #WWךJqIYqTw55把ʯi}fjJ ; g''}}߷7A?y/',$_op&1ظc83WD׹ SFn3R |l! !1g^~ݭ]SDo0P(:x?x?^3HBb2*rEŦ2=v])kVvdJ*Z1W^]o4eeMowό[y{qS2wAүO/<=֪Rͩ`Ȁg?GgP~aAa4a.g ʒMЛ˗%r//Y&1UfB4bǟa]sΎ/ .K͎\eثl߹Na~EB` [Drt "^M3GXŠc1VhYݱMb,wⲲM|w̟hf73j{'PzwĊWFB4GӁRQ\y)P&?*h`0E }BA`@G9WX؞+#Sulrnb̄ >DXh0NF|Dhu:}[[ =#BX B4͕b~}L<N>Lii)Ec& !,1D"!B\:wm""Bk" !IB$B' !UfB!z2Z!VO !IB$B' B!$DB!zu_voAB!B$B' B!^]fgδvB!m΄(,֎C!HB!$DB!z !Z`gg˱'juD',_Tҫgd#{p0&N!'2uN?mHD8p0;֡{߿CBQCpX@)PR((.3+f4dB\]\PHBGY1B^oh0.+)mBfʥeu/O϶A!D3HBd:v!\V:! +//o.+e&$DV.+;C.RJ: !hsrIC1K[xg;ޏ>KjF&>nz?#3 cz`ZOww kK9 ADtkP;^$%JxzP(`4T((.)BAyy9EE8;9Rӣ5kTfve/'N={ wzfv6;v&$(7/DP)|~>&*LQK\Z:vvͬz #! 3r.ggF djY5 V*Z.n89:uN$D7Wr/͕V~K%3+g''t:xV(8r8Y-[Ƭ7T748@jzJNt m.F#GO&-=rWgíu&,$RITҿ/B0 gfQO_==芗[.d\Ea_i>Ͻđc+((,d'}8>Q=gm}̢o(^xz}9ObP [v8l5~۾գZd.ƺ̂qvr$5-9t0]ûsH2bj ^->W{58.{w49yybpt\;]@N^Yx{z0*=z'ND]1 6%H-W\8q:SW;b\]],Xϟ˚pI6};j$n̬,MhC? gx59G2rWQj4US"n&=oLLQJ%G{, Ͼ:[ˬ$3pws%sZO:v )l -ش}Kpuv"4({{F43XpqqёQC*S8{3ITTT\lT*KD|bnճvo5@E%%ǟgdHnnYxz3t@Z]t){;;91qNI$+;r֬tΞ͍@ Q};v3san 4c'OqTYZmm5mP gsA}K[hFCvn.e|}<9L^~Y9ٚN~E@7Ʉx*j5/ץ򶶕MvJtRYg~A!P{wG?NFí,Gw=((*wdUf]:;o;v=?q[K [.),??[iUdX٩Y26*8Ε'¢BS*۷wy[ˬ'QyNm}pޞL22quqk5pCs;sJi*á#\<\1h9$K\jy=]Ls5Y$$%WPV[{Z]v+{9 =芣=ve^Q-S3n~QrBͯ醦tq(27\z]dj6nsA[iկLޕ` U}}^`V\R#..ΦG]ͼ6|STNM0-'#-[97f898[y|l҉O}(Ç\}*L'GKع{j Yߩ''Grٹ{Kk_?m| ,U[o>M5y{U䁇7;Ρ!Tt<OAQ1JEe "P(NLҲ7B`H>QRVNVv>ތA_Uu[e).)o7Zߧ}RRRjVyúLJGq@٥VeUfH_CzGP(jx{ōlHzz!7[6a1M̚| B8y40jP}47fBSgHՅ< 旋 ː"+gUfݍ¢B~w IBd*3˲Q.;! !0$DV\G~AA[qY(..&55BeVّ3΁ߧ7sRI8xȢ#ơ845-Ύa9j.aatj㟃B!"!BX:[S[;j:#ǓB\Cd4e B!. BT-BIBa$!B!ՓH!VO"!BX=IBa$!B!ՓH!VO"!BX=IBa$!B!ՓH!VO"!BX=IBaEB8rF'OQRRQ !racʵZk߲䔳mFnQݯ.YʷcSO>Ơxo[ ^!Vb-DϽWIZZ:Qxzxpa Z\wxxzx>taB!@Q{jѨmJ%i錛4.;ᓏlx*jQ)B!MPLJGq@E2 )jM FcGo0g`nؽg{L?曰6@hh/xIS3t`~ V|~˖2b0 7ހVeT*nyme޻;[[N{k>dcʷؽw/ZԬqwwB!%" QNpuq!99Ӯg옫fDEF^0{k>$"<;x_>lk4 ]#ܩ1lk٣v7"*2޽xlz] o>?w0}̛ -wɟ ;;;Kl"!B\,6:Gw>h M{{WkgggRYثF !14Ք 5FݻO| BQ9dTt?#G069!B?ܯo-7čƁѦOkdkhzT*N, M[n4OOO)Bb-Dbbj%>( <<>>5{=mB!.6H!-"!B3HB$B' B!$DB!z !IB$B' B!$DB!z !IB$B' B!UFԔDr2g6j ^>PB4 DYi ݣPk4mNaF,:3HMIC`p"h4sf˰ C3 Ï0g,<=:o/<==ٳ~]ţVbQ}>0߫1W}m@ǎlk֮y.]3{vcbkBUA(jٵ/=xt06.S J^Fͤˋɓ&r֗ǖ?}0yy$''Sffۗi7̈ØvЬsrrYJ̛cJeg۴_kO9{rF;Ϧ7sQ~n# :ETҫgO[jj6Ύw%aJJ <*n2]R)\3jw5bboyt֓<;OjW15۔g t0MY{B\Z%!Vѣ^J7s]7y 6mCFˏΏ2)*2HJ%oӦu4ou:]8' q!n憃Cey@۳}fW}gcҿ__||Q*k6opcddd69;d` C]*б#zG[?^~u|ʶԚV:W+**5oܑf%>Koё{[MeK^}HsYD{%v\qkHoУjj?:5W_ Fneo***;r8,˓"7eO8q/ !jk.O GcLٱh2R;f٣{_~A0xZzQx3>\w$ll*7Oaa!nVS\TLpp0/2%07HZz:ooW6dH14r/.gPQ'" \r]wwYsx+ 3xUdfeGヒZ6+[n^zSOZQ7lG>nݺ՚g"##[ :z=!RRR $$gevW7e߫y|f՞KWOBmfʵ hVlBYm4hWn1OcmEC:f)ҸK{LGPLJGq@B!$DB!z !}׵uB!H B!$DB!z !IB$B' 6j :my[!,D-w'BHX/ΜF+IQՖ|>m2! DZJ'S_il<|֡!. P( ?0CBq.3!BX=IBa$!B!ՓH!VO"!BX=LX HjJ"9Yr};g@ B\$!V#5%"Gִ;aF,:3HMIFAae&FNV!]2$.h DNVF["LHB$FNZca hlSa1 !IB$B' B!$DB!z !IB$B' B!$Df!zO<58ϕpL,cbr5ğI0-3fkq q=zV[^kZhΝ:o_ClzE]΢8q/x@ 8t0nnuBG"3) jW\Rk˖sw+Z www}z絸΋ ४OOO\\\:zoWTi\BKt+ȱ8ez}ˌl#=0CFf}f33&FGMjjq1ƛyo͇ڽ[fdL:߮d2dhnyqG4=g6Ԛuu] 1o胇Lz=+WS9j^Zk]oj,{c%&MfbJKKͮ'fɖ(** ``4|{5ls7v\Yu\j,/I5V|5_~e/R6}3.^ƳniV5kױeO,z%Sw5z=O.ēsnfX1G*z6}Q=G(,,lr3eFœxcjڽ˗Q($%'ʾd)ld=_|D|ӬؘbV^';wo'>>"u֣V޾ɱ5T|e 99p!O>8AͪϔI̞_ղvǬyu`q1l9Ŭ\ Lt 6g\\/?7@ΓO<Ύ]/0}Zb4Sl= d:v˯f9go7_Pwoݽr˂_`Y),VWcK͞=~///? /Iطo_j9Ә=-˂s߯/O@Td$wy#:q"BIB /*{p]m~u=9^<̑Gj4ҿo_x3#cuSؿu(JzIbn `oo%%=`[DiƼIFny齊 J̪kz7|Cxx8SLţR*f\3j7'yv<6}c9q!N&f&͆/SjGbb"=PW|y3O<5Ʋ֣T*k ^QQQ9`@YGF/>^[Q4>ExxxХKR٥Эccij$*2R[pf{u[&M<֫[N׮ !.72 SRX _Oz糷#/?7T.cGz=G|>m5_>s_LӴZ9jnޱl߹b˴R uNTzwl5X\qLzϽ#4?e5{GEOIMK#5-o6m2k `,\dپcW <g_| dddRVVhqus5y5l߱\` %Ōrt ؿz]jus7U?$KWOB1 *cђe]w GwOMKCn؎jxyy1{lf̘1ZD\\z`~ )))TTT32걦<>]QjOyt\mLv5.hq!0_]jѨmHDeLn>S&r3;a{ѢAMqp.z *˲\\\/_JTz t(zx^ Ihǎ c%CB!DCL3 $$&ѿoys̼K!$!>Z˼gLJޢ8 !$ u=|VYBT2H!VO"!BX=IBa$!B!ՓHX Ֆcc !HB$IgNjI>s OoEq"-%qɯӴg6j ^>u jP IP(֡!HB!$DB!z !IB$B' B!\e&h$5%L쾝Qk? B!. DYi ݣPk sqquo0K#VKҙS$An 2V#'+N.Rk4v"'+CB\&$!VBEm0h4)I;m7a;{+uV^VhպꨳWZG]p{uBd% `\9ϸϓ'''B!$DB!{ !BIB$B' B!$DB!{ !B Ѻ_7дE+RWmݾ=zkS~Z3c/._aIX[[gP+yҥJQ߾Ns"81#Gk~_6Ʌe+Vxޔv0LuzW4^HxDk/]g NtӏSӍEiݡ#M[ͷ3h߹@rr2Ӫ]ZfY$$$g#G3fL?={F"E-Qpj5jn\vseϞ=S5شE+Nj=g]^ ^.<(BN/"͸s.._n-\pRٳذv5J!|Bjj,95W,}=5 $Th넝:eIlT+++8?meON 33t؁>={z(C"SFLJڳϝo/W]rwdԈؾyv 3bcc'+G ٵ} ḡT*-\cǙ?Ǘ kנP*w>~ְanܼɂKtn%%K2cѢE,Yjժѯ_?]'mcddDmv,f.eZNϓ1'QFu>>۷IU]v⥲7oBgv[JJ %ZF/S [nF߿;y1P*iӪ%mZٳlGˉڹsoD?_o8_B&!n֌}s.ws$RS70P+l^^m̀}MU]]Y3>|H=[[3^tҙJ+25H9aTlBNΝ;&1wvʽLTbjj^6)))s(^-R kWcO(/',,,^:QBǙ]e%>e2{;;P*ص;<sM~ݸ~~&gq[J~]ы5D%phԈ䐿?-^J*Z[h8u:b.PZ׶K9|pwu!8$#4uw8'111ƍ(U R__)))lkܨ!ӦNa͊<љ}]gϞ+q>OOWPаS/_3339g}楄n޼I rebb]^e1V[ff_s:=R6lܹsPJ<_Z &} Lܹ{]~;<_ —_íg ۳fzܽ˝wٺ})\BNo.x{yݬз+&?2|hRSSqqrb̋iıɿɓ~U{rJ|٧,^/ɱ N:ѣ[WNҾSZfA/\Dܳ8*UĜY3^Ym9g&`!`ogKbddS\8v #Ga``[hϞ}hlj7Z5_kOcSxxb/?BP( @GKO꒙xw\x [2$B^]2ܸy F y! -Ƨ_K!$!$6^ń/tRtڅ>,谄B@"O=;[~]*_B!rJ !BIB$B' B!$DB!{ ahd*9y$99 <;B$DBXX$KRD+*UС!{7Vݨ[\ ?CJȘ(SbA"xOHB$Bu%ZW*PBc䒙B!$DB!{ !BIB$B' B!$DB!{ !BIB$B' B!$DB!{ !BIB$B' B!$DB!{Νܻ *h4\|J y ! J$DLV>i5f=#SF\|<vc$&&[wpdor{o,U}HwϦWmcֻ#ǎ϶[ @ csf^÷13s1tاl߱C *>>gϞ^^օ" 7k7'CCv'% h'CLMMZCCC#\VZ5JZXPbEJk, 3 fbjR@fM111Vd!aa={Y`>JnC 9aNs`_Щօ)_"g'J%N!55n~t4Jr5t$8;6@d5zNݵ?۵)xǍB#_5e/~>f,OqVzu׺ KBd^8up9"_ζ.ahӲ%͉`i,.^}=- ' b]sԳŢD sTofUժV`1:};ۺ+QxڵkQΖ,Yssszvmݻ±0~.Uz첍KR{11Oٶy#G? &_cvFOȑ@jT /\r3} 8;9h+UH=[[?bogG2߶QrerqfRIjS3g1fDv;&&_5g._aZ5kQׁ.޼i֜օ+ܼuT:C{޽ǝwзK1 !D~ʓȻ-۴|1a<#Ǎgb.,i!|ԿaggKʕ@pH(j5A'Ojg& 0 /ҭKgm۽|D@Q ?s4jЀ?-APt ,[S}SSSLM[/>{SаA}~i) ?-+LWHwJѣޤ+WĚQ(lظsذi3Ocfגe˹t K|\Μ=vI7F!aa412*g9H Xtq3_/C;WONnb͈%6o@dޏ Yv!!"]Ǻm܀RKXj5ݻtf⸱tٛ+Wr,IɐH'KWQo3ncmhh3-C|=;[\اYm[_(xjBgn紮4 =²dI)6䘅"YBdnnNrz111ԩ]{3( \.~ݸ -ڳ+Wҩc,)VvhO?]dIRRSH}oNgER3g1ljתŤc)_{ʲ=xf `ddm\A'OV)n^JEj/I,1N:zPݢEbaQS6Ǝ d?}8;-(7cmI[Y[/mi]:}dVn#N!xyv[r.<#T*Yl9MӭKgm6nނvv84n![mKW.35=v46+SzuCTRbE^Ɖ{FKThJ/߰0mSs/O<(]Tő@cT6mߦD\7S 1)3fGvcKڵQIII{_?#RW_L؈_6jv3XokN{|l 7tیS!T!?HΝl( |?'$аA}L^)\vva``c&YU7e!4oō7)V(cGI*WDxD>Dr8xи1U*Wֶk]<O~bcc zq/nߦjST*ۻ5W6/'Ms^Lf:~YGY]AV>5"# +AnTs <{;;ϟ绯T+W aLf[6qόc2.4~QVr99cff{8w.Ĥ$}<{;;@Y:'Cjt\:xP)y)O,Ӡa\_fNFJJ >~*L+Vz/ ].K@{{.̚}}?kRprl7q&MubThv^ =u%EŽ?waWӧg 9x*Y`>5^\.2K~|1qlvNǣKٷ"k^MȨqÆ̟3T۷9gF3g7tC!33Ǝsw7Uѹ|~>B_zB1y6^^GdhhH"E(^ukצV7ͩjTN>B_ƌM9A:cT*|G]hA.ع/myyⷑN.,[x~w|ZWL9m?_^Ҕ8Isjj*ZYT*N\~=Ӷ;55ӺCG<ߦ!s_ ).M8v"(],@ C}[wݛҮS/Z_6\zg YmvǓ.ǿr Ó}vt !x{B(ܨ[+++8?meON?t؁>={z(Cgs}֭a5ܸyd۷wf?DꋅgIV Ж ;uK˒Ti="g_֭,GfΡYb9 ۗݘ} P??ycas'|3];v2jgl߼ {;[~ܔ?z8_LϮhؠ>c&LDRe٦B{'ڟ탣VVV|ؾ=Uml8{.<1OL;%JPtio>m߮NRR8@PP0ɓnEFpq{z襤$6mfԬ^r2n>ӱ];jTi&e̺vժR\9  ~QJbEV*uIWWnԯWR3sJ0gWFе|PVM,,J0a<|H!yHW)R kWcnn{yy3~t4Umlpwu? fx!lmsշJBVVQ*_=C ### J-^ɐP~߹cӤq#βRLUN'/B^2;x۷Ա/$&Q#иJYT033Б#:Vw7.^#Gpth ! {Ɍ.}WPаS ]Gp.>ّ׈B|I&M#+VN}7pkim8z{G|3x:vFǮILLU~`Ȗ߶XZ#+u゚MۼǎӭwFmiayr2{LGͷ55&Ξ ׎]e7G`ϐ]`_9|ۏ?All,Gӕ>gjjJժ6bllժQ‚+R]fAU`\)T,6S&sٳo c##8O?MKBR3b``@܏FTC^FUNg&(lX&?@գ}v`4o1XWPaVAF4 {ޏm:X#\rժHƒ}:h JW&>}Qc8Bҥx ZlS\9dvS'O].:;x<_0w6^M=HJJbҟ8x؟GSVM|>իk?>>}u% KUiLHNN搿? ~}ӵ}޽׎uZ[];w"99#2+D=hPߞpEʗ+˄chԠAWxt˯]ck gp}w킹9 QdTTsj箿X"(V(66UX0Ǘ~sE֯;ۺ$&&A;RSR-XYZwK5lg8)z_9BK!A;'114kՆvNabbAp"8X_VkgVk\]iܰ͗LӖQ޻[6gϝQ}Mu&*T(O=źByjլO+VV000 (66UhIBBK-gҵ{]jSK0fD%Oy7󢥷7~6ԃ/&g]#_Lx ՅE?-#$4#4lR2 %U&ImrEum%53\Isu6o򋍍ڋ.( tg0fPxtoih۵HW؉ 6my1111ʘhlL9\q#۸.]ªhۺ5n 9 |t˱f5i2cv.^+}yôf100w%024E۶u>o3ncmhh3-C|=;[\اYm[_(xj洬.5QDG?ʒc=o8u86ql2?!#ԪY:O*UHjU ;uTBh̋gh?xq<(ۺu)]ۼ055΃zvb=6V!-"sssʗ+k׈N޻Ȩ(qDP̎?wƍ4ng'G6oaמ=\zN;dObC{zLْ%K @sZ?+*9{aGPV-&KܣW7,##l :yZMqT*nАB nvcTu~ME¢aNm5~5Le6̤ϭy9Ulyۗ1!jN`o[9p|8~Y3uԡE,iaOs9I"EYr%gΞ[dya`/(yv[r.<#T*Yl9MӭKgm6nނvv84n![mKW.35U il*WfڇRrŊ?\YI;r/J[w7_ő@cT6mߦD\7S 1)3fGvcKڵQ/IkvFJm.gFױ.Hy9rTxqNt l2GDp=. d=RjJ%-[x7_ӷw/4 ._Ю#Zn=* F - f^@ :\˓?ߏf8;9ҵs'>9 B7_~\ 4lPF *!aaؤI}ճŅG0h͛yqM-Q#iāʕ*AQ\9>s84nLʕZW(ρC.߰X^(mz6UJ{Qzlr:ouѝص{n#1JI *Z[s+2 X?JEkkΜ=ǀC#ykJͧrJo,Z̔oe/:ya֜pnq)RrU{!!<|6ZD8:uv|cU-[&]bŊ>fϿ8;9^WeV̚}}?k5W)2K~|1q>f3OrNPl9v/nxbL:%BfϱR/=/fА#cdhȯ~;:B)2fh=%˖t TBQ(] #'/w}W@6U? BA6B!ޔ|"V]@ k\x/жuwBz倥eIbbbضwJ.@oK!oH !&kB!t B!$DB!{ !BIB$B' B!$DB!{ !BIB$B' B!$DB!{ !BIB$B' B!a~vhuIQ%T K+ʔBx !BkBt-aS6FF:IQyoQBB!Q^2{ r*40@VPpVDgB!#10IC <%6FC˶iN\|örٳo_`.Y;8'"y9|.BE{?0PaNcll%Gt<ݰ[xgx!L!˗Q+ wGPIk^s \h1;tģy m߻;waԋc'u|Խ.M:Sn޺ݗs~?h.M3GFkr !(Xi^<_#:swVstɐ͚Ahиt)SFLJڳϝo/O5 RjΆRv4%R###rܶ>:mz7t۷4~,oa0J8sKf~6o6]Í7Yxv#666W㑛G s !(XfjԷ|i,_NSmNM3۶ڻw7W JLMMiܨ9hT))RXQUJ:י:;JI!"<AA ۇ'Ob iR+++>lߞ66=N;Pvm,,J0a<|H^Vrb>;0v4%JL!<|$6mfԬ^r2n(خ5W8t>z/WU^ݻQ^=Jb)Qœ{_]|PV=B! V!R(oB^\zvi͙!x~ cCL7V{¡q#dLmJ*84jD=pwqtp7g?m]3y8"Ο؉TL?Vޓ'Oص{a$ \{g}&[h4 nKII!ElQoVSfM~E151yqt|i`_7n6Y>WQ*ԯW3P99ܖݟ[!+"&ݏh !aam i۪+e3x8&OS;v8/yJ%/dH(ȱiҸ|i ۇT5ÇԳ >>>>iI.T"cdkIDAT^Z]X2*R kWcnn~J<̮.r;>Fe\eFOn_.[CM˖4j|Ъ+e޽mݚ'=crff>GhALbY;wr]n߮-)wh ̌(\5de`eeu\/Ϧڶ,-K36mǏٵ{.]X'?钂49%#ccc8LJJ ;E }6c&y1Vs}]:>7q=fIU̳i+8ǏY|qqx7x@"/_!Ļ)_"C#w~pѼ[mgάy7?*nn}/^?K._?iX4nħ#Gѣo?+\?;CF;]q-V.]Nϕc~XpY~^,;/\ !x7ev*HU9t'&bc)S| NfRT'"ESBŷxC.ԱCA"P( @GKOuQuu[ׯfdi )QҊ2rtB!W) YWLyLdU'EB!y@C$ B!%H!"鲆HN!BIB$B' B!$DB!{ !BIB$B' B!$DB!{ !BIB$B' B!$DB!{ !BIB$B' B!$DB!{ !BIB$B' B!$DB!{ !BIB$B' B!$DB!{ !BIB$B' B!$DB!{ !BIB$B' B!$DB!{ !BIB$B' B!$DB!{ !BIB$B' B!$DB!{ !BIB$oGmCAEZ݇hI`!f,О D@{hO "=A'О D@{hO "=A'О D@{hO "=A'ݘdzKu )z >Yschx`Oca>Yѐec=s>vͨ<r n IENDB`parlatype-3.0/help/de/figures/parlatype-prefs-timestamps.png000066400000000000000000001012521414030451500243470ustar00rootroot00000000000000PNG  IHDRDŽsBIT|dtEXtSoftwaregnome-screenshot> IDATxw|SU_.{d2* upg-{M66i@/|Hr=<=B!B!B!B!BeF̫h9E !BEW?7^]IL;@~i1cﰳP*Js,Bd: mQaa?՜ybbHߤC(pܹsZgggYR\DYi)M:J!) T* ml0oǟrx@hk6(TLvo2T^㹾`4N!!B\JQ*׭lk r!C-Dr ,BL;\QN" *t-B!DsPyPy|uX!-PBj 'JB!WNf"T=ZUpB(oB!2T&Eʪ V!!B\hCeKPdz`OB!ZL,}Y`B$I&BIGu @~L!W=Uf2Z!W1EqCB!(.zECL!m"i 4Y(U Z;VEEq񉄆P(KMq;R QeO?˩g N{wzly`J%o#VMV- i{rӹSG^xj%D_} ƎEfV67wϺ ?o^ݺKL.T(x9# /OFژݘ,h~u$DF$D=%VVBRESW鳼櫸8;v>9tvv8;w7W]]iHc֯wD,--8]{8u,_|;[FFݸ,hnB$gO}v)=t;Z_it1qؽ1F6>h!D|L:wȲGɩB^|U<7~1UfBEW:)ckkæ7j<}6㮿rGFR*x&M;v͏?=~}ice͵ÆGRR2|V8ENn.nfOC,^Zff_Nu^V=Nx叿xy㖛HJNc8pۤ 2gDPhp0NV㏡P(xGpPP!B$ooxCe:!<=G'ѩCVV-<<?:KJQאEFf7wwW4Z-O II :bٵ"V,^hu+y~+>{a8;oj ]7OHdq.~KK B7iupssCRy!tОc'N嫭8992n(1VN]y'pq}By(.t kg_KHP =ueH^?*BgDsZyZD|~5T]0UρN1IB$z]RZVoB«k^@T8v>^^t:B{(<=ˌ>QE9a~lI#1kwL]4RV6:BstԑV Kz˯>GW&DcۛԴ4ⷶb+2:N#!1~RI]psqa󤤦q%:|VBtq=rCϿL|3 Iddd1n(} k{R/l}B4 v .zD|ٰ%T 4:367^~o.y]RaC((,d#tg("$8)o^YV|b~mYB,--kEPoHW#ʋ_]uŜPU=aéK\h|vg=}+ӔJ%wv !q 1qqTE1^ZOʹt?xy2 4~kk+Up`^&S+k:BSAaaVV&얖a*1I HT韻8;ƺٻس mŕObpy{Fc5ٙbjhi57fjH+G|ק!A9k bx{yВ'\~S2?9~4HRYy궲4s/Dpq]S-DբP(2?oN#6.E\Aa~N>G/!GuW ovcbbIZ]nr̾W?jҒX7_llw4w7r>8q4ZзwO֪RM)~ܿ?{3 ׷6/(wF= @`!ó/O6} k_"8(ĤdVUb̄0c{]Ͼ Gʿ/ .=tp^} RIAH@Ob[';MA䑣,{9CRJ*vv̙1;[,,,g?q cj4a|}IJI'W`ϑc' i n; ,}r%>^;xH?X|ʯK.NNz{)bշU_(*,S]oJ93!As7Z!׊7+;E?E`= MwcPztbt ԵVё.k-ꊋ3F.ƿ^Mͽ0}7_CWFѠhUٷV}-Ϝ0+Bʖᳯe‡j ?2nx@eW3ȺFB4F𮓁QTy P*?*VՏEh:B +l}zMB4'LQ#q>b>x%"M./gHxw¼dP^.._qsss֞ }MVNA<8 223}^.'%-v~~h5ZAR}nmeIlB|h@L\,8;9 o/OΞ| hs~-Ja=˸sD@䑣޾CiANLB;LJGQ%@t qtxyI2Ԋm0-L"!.# FayYYIB$e&5=Ch[;!D HL`czKZ;!D HˌB!ye&D# 2$3;RHmO܇Бc$&йcۇߏ:z |սL$ztl wWWwks9sDZ-!_*jOBR E%ŨJi tXXȭXّY uNwuqa[SRZʽ?R䣷ښRtZ-(a. 6t g3O;oKurl4Nw~Q ڹY99= UH^$&}?=+r22k͟QgKgT|bΜWggl[;u)XZZLi<+*=IVNcu+F{3e̐/y?qѵIXYYB%}EN>Çon .3+fǔcKp$)Q*+{E"/ww ٹhu: E%P((++G23Q*xDxFedU&h}#zжSRZJbr N2Pj/ր+YjzutZ<̮yMGTgժ%ͥ{8۵vWI,qqv"'7ܼ|\ɪjjCbr 8:8P^^N^An.Z9y Y4Z<==9k++ofܐ@Z-)i( \ >d :MjZ:ej5Nt K_+JRptgp>|7jedP Ϝ#//{[[u鄇wEhhX*\F;[FԿ틊x{z0ooN> _o/v٭Kxyֻϡ+SddfToǙwDH`@n^e+Rdу׺c~A>(/wD͚S]o1[[6Ǟ|0ݍkNGRp' +,b\5Z-7OR^^(lllxXt{~BtL,>^̟3n;闙r$S:rg|3#1i}MUVVޠÔcJaQ1YX[[>?_1лG7N&3;2lm cX>h4:ո8;ѭS8Nj*4D;NjZ:*!AUnF CQq1ýIjcӍo.4e$$%s>6b,-,qtg@^Q`26-INn9 QN.* QVdfe:=RPX/$&P^^P/`o38sWWgQ^^N~a!XYXbcm#gd₃=iwk]U (JqjO>BG{rr8uG\Jռ}8:9bei?WW<(.)`lmlw1uswWW";7Wg8N3}õN+G^~wLDiϮ"!1 w.NFfL81xyxx3aR.ҲeL{oΏaaD9;|RKpqyV[{ףVBޕv븻ѥSxַ>Zcڙ1899FJZ:FGǀB$-#'Gܜh_#>cee<\]]ĩ3d؉S14/&\\ncbp^8~ ~{yίXRy8PQAՠT*=9XBΩs!,4\]qpNeVuOy{xI^~DtHD1~ykP(8q,cbʡcX(Y QP vvd撞Ss| 1t 1t>A>pllvhe]Ξlt M~a!E{J*3OL\<.[[[Tu {U'ob֭}{ՅUcuN;ϙ1 xI~/:|ay-:L̅Xn~ϛeOr(eee1Lnq~>C82)Su\LSӈOJŅa@ Q]_.BCedzmmmEMvUpΎ6{Kkh+++rr()-X΅r''G VZeWj^6֕MvJBRp:+ 7} YYYܹ5rJxՅ:oin. ؟lSHNI%'7O2fm{c-_} յkUC%x 'ǟbkcã>c!>! ִb){W<==w0}# fm0oXU]*J w0ÈKHP~AwIJN1ZgufǖRV}8r$EE&,b/@nuy9%Yx%J?͵(hqVsIzusr.7r=/4ĨaC !j6rs֖ R3pvrS0|Ԣy{zLL\/O.'B~a!XV5EW}X[[b5AF4V,kS}Vvk'C : ww7׮=dfm_\Ryi&F*נ]V`f2Xuy9/>^xysTn=HIKo&Sг{WJ%ȪqJ?/CSqzODw V|\NZˣ wWIBՅK.wuqӃLv=EEXZYҭS8( 8KZB]1==prt$;7{aggGJjVV 2˶\dc~pCӑ@hlɑ̬lÃaFvc~,--H'-_c抃=9yyس{{;S[ƺ̢mPX\K_daՓCQYi GRr v̛9`١A;~ oEߞq$N<+oE>ATVuUC4nSefg' aCJ&MGz봷‚8&4:Ẕ F IDATc *8kNNgT( l'BdenqΎ\\ˣODwl.J.&{;;ԙsD9k\sh6! |ų?FRɎ]{ǟqt߸2Tn!TuWJbX,mV]CZSL=r i83zMH`:\twOW* ?oKJKLD˾>8HQI '>>W_J>/KӶ{[S҂^ݻ{F=p0^esNq;}>3GjN"׻Wq%QHp^|YJNM3JT}_''GFላyA4MPh@ P\((R4!.5^t:*/ci]s2*3|Z*3qeih~W/ \ -=gg'rssϷE. 5*3ѼZ*3qehh~B$666%$.ChwmML4L\YZ !2,rC$0C$RJ$tB= qKH4>hV2]G"!.35#Zs!DHˌyyFUTTDJJeB% qQ*\}hii1=i> &/?zIp@E%%IIKZ>(UJ}nmeIlBg'gbb}8;9i𹯏Ϟv~}nccCPڇ@*3!B\LLZhe~b!|9CB4#C$B6` QfZJK!DyQ1D:N !⪠P(NB!HB$B6O"!By !͓H!m$DB!h$!B!D' B! ko 55qws 9sU&عvh0B9 IMKcۯ!=[>܌Eeej5*5Rdu 0k++foeB!$DiQV/o:|k܀/? L4!WX~|1ya AL6j5oߎJbw2ktrssy5KK |jŗ˺g> 8 Vkj-!wv+~9Ϳ3hFB!ĕ,7aDBB"7r+֬ȱcƉ0s4OҠ:|"ѭyU} oӵsg?_Nr_aA݋mc3+M.k]{>l`3IIU5Bq91KBdogѽ;YY|5g3%%5'N33mJ"OO~׮a8tCQQ?q>zwXv ̛_n]>s&N˟`Ut҅vSZZjhlueɢG(SYfmbOkl#!rb>ݻue{opҠlXM1|O$$$==wM?d;k} m#!Jd?=<ܙ3k&^^;Mt:vk]=\Fƹr7W=N\p2xluJ^ '66ظ8V?{;;nC1j8aN:27fUղz:MNtL 11\;;cǹv \/3Yl\Ú~o=LL2&O/Vksk<^{M+,cjߔ2/@^^>GE?Ϫ5keGZ1+oc|(J(((`ax{{9b8nnY[[Ulh3*׌a %}hk!F-!81GRqD^ܪq]ڹ3\]]Y2˖Fh!IJN-1cꝭQfj$'N׸5}wbаL=Sѧ[t]LnnnQլye=c&1cyvjJJJjO?30xH_+NVV#6>uYz~o;0|FF;vUYs8lOA# _g71lhs5e+掵_`ǟݏ?{`n:ݤ޲EZѰj{ zy&r ќI!hfK57_̝w$55^Yǧ'%5_o2Ͽiil>qqlxZe^;o+Gi8~<ϭZK^ٳǣ/`M72mDysMe雭ՓG.mdמ_-nֶ.S֭)V[26Ǐ'rn#OLJ׹.cS9źtMƳz:׽V}&妉ݑ 6j{|J -BjWtB4w77t:3OA̘z%=6d|.^+>7nZe=4a;acʺ'=3O>} 3vhcΝqsseM|Beeel |b:˒E ˙nuߒˤnku\cǏc.m #Ξ?Ǣ .ϤBTkhѮxυF/Nc9־٤uJns=7#ǎW_GYl)254KHLJB9<\?h,S׭[2`h].ޏMFͱٱlO %Pnn.O>&0|_9U%~x5<3ƍ? 5-V>˸&5|Z- D=o D_l`а;xX|Gāyw5`[u-..f- {3>7D>cnonVB!(!!BzFۻy5Z-!b.0(((m/,ൗң[7v^%{w۱sn:wD o6...LFſ`ѣ>rݺyW`]l՚$$$2wL `TƉjTB!0$Db7Z~|uΝdܵgp[X1Μ])--Ųj[ R+Ʀr!zm?ˍOH`-sF%DGՓ& {K?у\Bhp0:JpFFj5rîW18>sV?+h/..d>R?%oȨÍ^ <4// !E pI=ʄ[nspTJǎ_y֣{7ݻ9nF];ظ8. O?՚JpPqqL=''G_gy%$8'O2c\78({ロ _gV7j};tCw <]o!B4ݘɑ-nfӹS8cGea;/~#?!B2Ca-e䍷ͷ5/1rG!MP(&%@qգMjhl߹BAXVJ!-?z%ڴCEN?qN3~Xx%!B\$!<Ad&*ɐ0\v/*!VKqQvvv +NΞ"Z|IHQVA _" P(jba:I\f/Q+ϴtHB!ii殪3x5~g(SU-Fg#;;!^_cٓ5y~֠k>JՔ̌㯿]9oC]fȵד"]!-D&~ͿсT<9ja %}hԵjZlmY_hw+aǙ;s)J*e^޸[>Q((*|65סhڙ-!:p_|o>߂}_zijbYWe]BOþbUڗ3z:=a㰍W*F,o&L9Ds0[BΦ9}Zd.j o\ͨ#Y!lmm.Q׎Ͽ!:&-~^=#(//gk{3f9Lwǰv cO0سoyA]3iShx/PR\¨#9poxZ2c<^?{5.5Zz}ۧ2\|dVYBv׋[kΌiwпV{?QW39 IDAT|sZ-ȑ\%];yzt d5Cپk%_}-'>z+Oc֌i&Ys8ۛ>B\~ ΝcrIQQ<0F`i|;>^=zpi,~~Ay??ժXl3ѹS'}ŗHKKgˇcoԚg,_?}޽zecii'+-ǭ_1g]!4 .{g\ץڣ/`M72mD2<=pwwotB\Nvßo+j%C^HVV6mzd|Z$l"~KzɊgl:p(',dzmع6j<` ڶoMm׍Z;Lq3KBT^^Nvvvv~ܶ~V?t"\]]w?*s¸)77Whz/曮b :f4fb)3ۺ S>`a暦BXWHrR"II $%%dm×N:3D0jP~>׭^U.,/=?9 >e3SVa!<_cX"[~#)!pܩ=_3X_- jҨݺt'⃏?a=z5ֱbJJ 88]λظiN۶yLY3N8_s_Y4lЀfqa>g_|gy%iۦ5c^}?n%.~2%״]{ {/f:ʱ~?RRҧ_~ 7ޫ9/|\ue=RSHMIl)FSy8Ӝc'۶9z^/ˏ?q'HMIΨR%9p0ԩ.#rI6l0J*uMӤU߷ԯrQ9⯖z}lᡡ%cߙ?wp".zo/-w~vf|'hҨ! ~΂>aSZU6:uhI׿oBCCy:|eлGwjUԀǙL4ki%3O>_⾎[,&a  qygZmjy'@Sh[̚:cԡ=?moő#8t0Aϛ7Ƕm;˾6eٜ !!==9B>Б.ܾsowo[~ٲ=zsM72 SvkΪ`TJxy ky~3vbm='g#y7ַ?eжUӿYTtiޙ4!#'jM\׷Ea:L9r<2M3'l?ڰq*jiQy6aa%)MRbypp tO  -yQ$\.W- aX +Ng)iәa'$$Ú~JnOŕiۗc1 R j6xʫcX,zKKK#DJJӋϦo/FvlFͰlX,,9bX)@-) U7wş;vRr%C|0p9ILnnO En Ny4MR|әFbE)y7/{Yٟg.ǛcfYGRΦoE"ݻٽg/M71adzvV)BȹHHH)S:b$bcؾﻷ%""""W0gԢnD" ED"Xv"J#D"aXq򿕍ȅvcXE )F4X,(Ajr"E,BKMI$KAOxɱ)_*NgIb8N, +WV0$^Yf"Cn$ Ie&a%HNNEk!,n&DX,]:@HDrf33ɏDDD$iHDrD"! 4 D$ D$} in9I9wޓE_.w owrOk-woo-wŮwTӸc'FnmيGxm94mƾR^Q| ncw8|*{ᄐ~[6nÏLc0a9\\4%?!5%o}q|<}Tv|}ߏY#D`ʔ)5kiy⢶'Νa*Ynnq#b&7Ԃҥ}*7Dzy\r%ǟbouD ط c3O{7piU]2g۶ &jܰ!| l7r^1/Y 8ODXh(O<+W[?ԪY/Hh7pSIs8h޽Իrʖ)y-::Çy6ԧ2]._-]Ƈ )]իr<俐ϝ;ٳg/SjjXquF6Ǟz'{Ѿya`5} ^-XaX'~2s\|wFn:֬[Ojj{ Z:v7ٳwo2ޙ4mmw0W{d2=8׵ҧXƾwiw^'%%Sn=dt57D.-̙7F\6MwO7{\{M^1eʫ̘=_}EkC^ן[dpݸMݙ97af>ф}t㭷K/Զʇ?wyaAe&ghq xY:ٿ駟smطaї}~,8?6x2p<90m,֭`nmr:wYm> &#lSƶmr{{<>2scOr[{Q~}k֩ӏ!Θ>d[-hŴZ?U<7aMjЀMcݬY>Gǎ+ĔwG3s AAAmݚ_{7ǍgΝMBz2ppԮE}nc~}λX{͜AXXm˯|sWPXk^3sfqםw}fr 2(G>$Ӗ.?{NA^ [ 111^KUMs\r%@U ̯'arQ=0f<%-Që9,7VGy:kӯO/}b݆;i* ȈDFF݇5u?w2߇"׀h74iܘo.GKKkRbE^9_)FZX}&GG=mP֥_o C=Ktt4˕~?dצ]\~YJ忸ɗKx'}:V>aC=j?3t{zg}h&}$^5ҧ6G#y}Sseu(Kwf{=mw~|=μxa 4L?8pey-fڶjEDDg?YқY^hNWBhhC܉;xLIIIIa8vTܦMRRӎ*w~٭+NM}׷ok}y6iGLpk`6wfn.Sdz? dyg^LӤkޞלN')Le #443 qq'xk;<7t0J ,c:[$;apםwpםwy♁6u~%l۾e_.=/}7̟ av$n:J_P s̟Kv;q'NP6&&K?ok @LL mZOnLrryUe5bO{,Y?wdv,#[b˒"pХS&f߷u!"[@f:xxoM7ޘg p:],4MΘFgMeL^_ɝ_eζ4J\y%aKi}^aMسgs/;6fQZZZ}7]8ĄvܦSĖ=s@ kl6BBBpHs ٦:fzfVizj,?' )|/g' xy ۔ٲou˖lٴ1֠~}nEoi&lƥ5kRre6OuWT0VfժkXf yIXX(' Una_b xۇ+T16s+V9}'\.۷MN3Sygw'ߔYp`9ejb8]i$%%`wbnON1-KϏb΂OYv]}N3G#GR2"oǮ;;_ӛ^ݺx5 # Dz mZݕc_ocY;Κ;m$.&LvqM-(N6ku+qq')L]xIlܴ m^?)9_>Bsoؠg:|Ͼ«rBHII_V:|˿fyӶ [^w5ȑ9r_-ڮڙmi4>7bC`BX~g;69z5k(3|K;ݽ+wa]y">K@UDFDЬ9~ۭ$''q&kM4Ai۾{fK6h W7iO?C.]=W-h>t҅W7ʐF{.#8o֬[3O>AdD$u| Jʞzǔlw\TZ3fңC c!nғΗ>|w/7l3zm>x:u%T.T./טFQj5K˻a朹^uОrbv6BgN2}G=U;_4~Ry7DF[<3t8U+_r+]4?؉W]ѣSiwo[Ŗs޼==? 88Z5k|98~(K{MyL;~[aUgBr1oib&N?6oF> RSrޮБtћ>|r`HINʳAë09""R% *]o%7Hbb"M4- IDATPj֬f#88M+e=SV|ҥ*0yDDD3D.^5kT(_ a0wt4XQ-Dѣ1 WFHddgɓ'Do܈#-믹AkׯgР~}իU]|J*U]&+ixU}狨^Wֻu6AWQFu~_r޶ws>L](W.md /R|9؁dRSS 3u >ԮM>y|9vz_y?'˾5kthw?#s^Y;׬qÆ|d Iq. l67Ys͜8y"ߺN)[ >0x{L1M?\(lY>?08=>:gA{39ww7ݺz޳4S۷B)jNZ fN0 .1Oo"""ޞ.%yuhVkO?MѠi3nۆi$$$(oǎ,Pflq]+ !1뺂lAXO}Ezm6ee-sN%5//ͮnJ Yj5-ヌN]rժ|x[wa 44ԓ֛ZAWDD ~!; ynG?+Uʑdɒ@TN:e#}bRn˫6Xg\[sy ۻvr)+E%ti|+_իV̞6zu暧0kOCBB "{g]wAVw嚦˯[QujlURW}z[֕%sNO;vOe\?3"r1 ;nWFHb&;;()3a0RaXiܰ!| Б#;=2Y>!$8>~$BCyGκ,oWUY 8yDDD.fȔYY[Vaj劼0rjCE jXsiǹѣ˃n\.GDDD.V~Oy ?cɲ<O)W.͛e%{7T hV]#aQܒ{كw&NTT=u[ ,WԻ\/xI>:zu/V͚nʕ+Lj!Qk7nR:\R2~R8\bX=z8x'IKsp0n$RS̞6{ZF)xчySw)'\lYJ4|o`VOsÚ .]LTtgC6Y*GS2rK,=2 M?o(_\g>ˬyy)ݽw7ۢjӇGD\n.DpSINJm='nNnNЉ'k.LL:w@+QDw~;5Wgێ[1ebbw6ݸnp8'b0' Td ͚u01IKs@RR.ŀm {=ۙ3>#z*[n"88ȓPz5BCx_N`^ժTV%G~_G?9?=ue@>k8C|.WE2eV`lϛ4nĻ`Ȉ \?voW|o[aOZNngALӤg.T=K'Nd{1l@‚mތ:BA*xteIv9t˲>օ4(&H/據ba$&&l6}eJ9څu뒜eJFujդU >k6e_q*!=vaX x8N c _A;m7k:i3#:ͨĤb \.v7m|+kyDDNNխ  kEra4..~VYiӏ]NvaٳwebbHLLd q?Y4_ >ȑ9r_-Ͳ\l,?3ŝ 5%FSy8Ӝc'۶S?qGtRY٧Jn`Id֮@jJjS~׺}ЦMsޕݻȘ/& :Dy}ϼԩ]s1j`xQ̜GSӴI#ir<ҟ^{n}SL m[fy-lBS !!==9B>Бc3y2&Mk #i|f?&49|ޞȣO?֥5Ggɗr "rn9E @- 2M [L2w:y#5PL G`: 88F6#p]BPp0`\t~0VnӍ3-Oհtav9 &$4CjJg-Q^yKty- !!Xm69.&<<"Rigޒ$y) "Rڱ+5faX<[cX)@-) H2f+ 93ujig˳4E~){]ik$1uyߛADDbvL-)wڽDDDҔ)[wd<D"""HS@$"""O<D"""HS@$"""O<D"""HS@$"""O<D"""HS@$""" :̑G/DDDeWA=/n0 JGGsx?ԪUIӾoZZxZv j>,t"""R- б};V+6?b\`Pj֬f**KDDD.n~zwN qݴ{Av={QҚsgLK;Y\e0 pl6Tyɓ{g"7nđ\àg"::kop[%K1}lOHjԨ΄bhZ={Ya111<ԧ[̵"""R<= ZgDFFrAncyn?E"!!/Tbmd /R|9؁dRSS vǟPvm]ݔXS.6&e)׺}M/"""ŗ)gdyi\~e4z֬]˟;vС:=zf:RSSs,|޽giRV-:oGsWJ͜a,\c^y.TwvUDDD/v|lٴ VC};1n<O?MѠi3nۆi$$$(MP<+WЩkwVZ%Mhh(~Hn_ӋHuѿoΘɾqݔ,Y{M:eIҥYg~%+W[S3{. ɱOe r|m_, HNNtRBAK/_0br1 ;n;nɴoO@tIf3ڼ6}J/"""şifQ22S^EGX_y7\wk֭Gٽg%##9͌3͛Ηaԭ{'͑GԵ;u/+jҽKeTwD󯿘:c&w"""R|} Ѽ'Sjr(r4jv-ujfE@Y,v@ |zK8Hn*"""r) HDDD9=\[6m,fE@#D"""HS@$"""O<D"""HS@$"""O<D"""{gS<ܽ'>Afn׬͵>$-YZ̡C lc~i j\;zNkoqMs͓BZ2|klWۗ"""XYpp0Ye˿m 5Orr QJp2>ebKZ ,\^ 2MK!g)SS`!8$$BCBl,?efw!Zw?̣Zժ xYBBګxE*/cϳλXK*T(o[sK[ȅbR[R)@_ztB]ݣ;gA\yE\-\&y!زey''0{<ϜER%iؠO<(T쏦UEDDp^et:b:h`GyyDGG{&LLGys?MTvrS|ի[ڵ.l24mҘw7n㾶m|kBTRTRGn\<uҙn]:{ݻ˯5v;ʲl~ɔq5Pb^~ 7H_gK/~=z͐FPRE5MnaO?)ΑpZVAiEDD$pEvKbraүIp8oq!Jkal6=xm_/#t,eVDDD_C$"""r:D<D"""HS@$"""O<D"""HS@$"""O<D"""HS@$"""O<Dޙ3<;wl͑ne\f:\`񧞦-@,Ͼ?M庭^6>\}?DDDhge ~56+I;AϾhۦ5C>M?1 ᖛZлGw>@*g_|AUyǸrew/vȴ3&"""˶l״ !BTR9>_EDDD.\~!>k6Mݞg())~>fc\R2}r-g^V|͒1sOTɒY6, gzxl6ΝM2e|*\l,9{^;pجom!E*E*U8|OsCDDD uҙ:>\V6O~]/o|fMQTڿw_iw߽>a9xPuGg\}p;9p8}/oyޱ};o|1},zv̅/kRŊ9\䅗^f9z;!ύr4kVDDDY IDATc޺yvX2bJ~Pxsx:vFjUy\jO%_1Q֙LAtt4}Qt4_s fԾҊHa 45!"""HOoIYf""""" x DDD$) HDDD" x DDD$) HDDD" x DDD$) HDDD" x DDDb8Oo.}z3OordZ, oP :Ǎ9[iƙ(KP[@nң(Vi\\DDDO  2F!L@$=J#k0#ȅ$c`QG2F\ eJ""""X&c%ʈsQnPZ-"""x&c+Q`("D"""rX<dקVC\򊈈\H2́Q:,#8pf(&"""r!3mnr9y5/Й6RFIENDB`parlatype-3.0/help/de/figures/parlatype-prefs-waveform.png000066400000000000000000000601771414030451500240210ustar00rootroot00000000000000PNG  IHDRDŽsBIT|dtEXtSoftwaregnome-screenshot> IDATxw|WM]VKY* qu[D*[ԯ N)Sf)=3MKh)}?y܃Ks]|>w!B!B!B!B!DWhü3SB!DGџJb*'M|RPZ"`!Bs먭Օo?λ㮿$85J^zEngӛvveTUV֢כLB!ڝB@FAckOyyia@ t FIQS Q={ٵsՕ6eySB!,kkMՠ!Q N8 $`Hj-d>1j2!z*;sƳBB! *ק[ߜNjkLv곕%B!DTUURX;@րJ*L)RRjk)f!BDcP T uC u}L.{WB!狕]b}thHӚNB!:^T0X_a:!iM[.Nf.?cםˆ[r//pqv{7o\qwu%48lߠV;Ȗ;9|(K_ ;[6Fݶ,8ߤHuMx%/=\`w_S'O4m.XVVU/2KծVz 籇R^bXe&DS o✸հehu:ftW\>vFT2}$v`=~$I)S|_6ӏ/s3IC8pU7jd˟!.@!AAN8/?Bs29CH|5ӯhr?^a9|GaXY#<<ܘ:iTWUV0~ yyq)xŤ3nHgJxƦboMc?Aӵ*ʯ7aIIMcq&?^ZmEp` ~~f-S nnn(UJ!$8gՏ?/3{=-q5|(I)8kL<3a|߷>=>#BXҒ^/u7Ltaɫ/^1IB$D E4z]QYlB;oJo_Pa|0yexzlXojvo1$&%3y¥3V>bT 3zB~ZcV|Vjfo]6n,I&+;۬myzԴtXRI>qsqaˌdfe@L6ޏ-q=|_#r+IM ''+&^faKϡT*kf>X?mcp8Β7$Ͳ7cTm|L:zo3z] R=a!2xz{_4Edװt֮Z(mCQh*Ժпz[ٹޏoMx6s2CLS*pGρCq]dJ pFgq}}| U?ƐeE>>d XIzFfƵ}"DǩRZZ]VSV\C$5DBG*8oο':x 6=ɗ7LYyYq76ZZ˷ajM<0Gy{5x 9v^[BHP wz3^ܿV.1)%!nr*Kc ąg^ztä|e\]+Ohu: F {fIzSPYJJˌp87M)35_>%&cpw}h떯lu|mUŶ;nNf_=Ә N@1|` [jU9:#߽?rQCc3ic oeKlbHK쐘.3!Z⋯=wv Ϻ >w>ZAԠh46RIhH0!ߟظü' ǵW$",AsǞyCn+++S?1eRWMݺ#O=1Li"澽zē< x{k>kf[D7oo2[3垩 e?|uc8t"8(@1jFg b}(JfN_w揁Ĥ${W^D_kH-ŶGȟB`_t vj4ԴCRӓ;w۟`テ_^=_7_ÕS'SV^VJjj:vwJmsJⷵ/hTN.ﻇ@3JEٯ3d\|5"j0WL m[B>[\b9Mgât8::һWD\]qqqfW} ][6wVjikY{ڲCb2x#q}EqQYji ͿApa GʒeL? 04^s P!"4,(WBft:c_N ~Zaa14G<}lrm|̄?CHp O$ƍq֣Ĺ=%rqq 32r}`ؐX[9q!ECtCQqqyyDQqRrrs :2HȠJ不T<=xZE玹7dS[^q73u԰k>T*%3gL呧'>_[H_wڳ¢bB{"z0}Lb6lؼ??_^x1f&OZF0}dz /Db>^5VvUU՘碲пDբR\kq5ڍ`gakjO8©=(..eWp #A~$\; 7WW^^տ3}{$p=< \ǯ 6rqg_g^}s)J{tfwtrZmeOcDhP`ܽ,<BDx~}hu>@$\~1=;)[Zުi77{uTJ%}-?Cqn֕9Drj*ӧL7e_O>B~Wqmoqhu'zޒP*||L{n fẐ赍5>k䵠KGHB|2q G+ #+uw DBp`){C2ʍ MSZZkV*+Tu0 ZRZbĤd`9~\MjL&*Q%ְDxɩ6m'7gJ^^>)ddfQPXāxFQ PI!4RMihKןH6DJxܜ J:y侐w(V*#<߉%nڒu*S98;9ҳG>^M\Һml U K+U+]]](.-tR4.ۋx[\gæ VS\9p*7T K5XXbxz6_Ie2Ns;?jjk@߁?m48'ſ/ơTwƇ˷wCc^tu'ɾG̶hL9_UutV7qv44q`qP(ċ 6ZZ)-Yr^`_ G))-ůx?SDZ~t~Ǝ؟59mnJn^>z/|<};dfj8cT*9q2}p>?35 -9}|] ,ݚ7~_QUE^Xժj4 ATJ%Nn}EO>LjQgd`oތ-VVV$$߸rڔFg͜m1h`$A$=O>;݅YPS{4X[[hoNپ#yDAxX.xyzp*'eeiގҲr܍ZmũVjiTnK<\qp;wcooGFօ4SyLN}1ΚgPmc^A剕JEJz u*۴J%?(FTN.cc<%/`e=]f6 VcCqi%e8;: IDAT2_F_(!!t4A IXp55;HqiJݐ8;9RRZV5vMi( F ;%a[ZS9ed5%g8*ՐɉdV ɹǾ4l4srpg857NBA^(JN$'S^ѱ?Ybo)>IM OwwtRȡ񦼢4tz}cc#e=frs1_unºX*ur>ÞD h2[OXF9v|$ꟑ%Ftt8+nsg"ׅ#0,(WIm2^wuE ;^z g "ׅ[e&,2J'$T.NRX\o-Tqpqk׻̄e]f]F4kj~}::,!D"}R2H"!eևƦECjB˰HBL3BaI<!˳]fB!*s2kS 5ض<S!!΅jB!d Qnvf P%|Bq&}z!B!EAPϓB!:3IBIB$B.O"!Bty !˓H!]$DB!$!B!D' B!PlW_ws6C!]֭CP`cmͺ[_~e{Ȥ קBqws#8(wwЧws _!]% ~}Սn 5{K/ ?x|Ӯ´+_u9F/Bʢ5D1}ǎeoPKFd0A{o.]Fd06w5 &UUUŒ˘v,Fywá8k|tTWWV#2j,~^zK&MfS˯O1n$&MW0pV?H!B+~ǎ 6wiWΘNII)O`䄧y/zm;vٿ?AlٶywO߭'}on}-eeTVVbmmm߷/w[!_? 9s~}Ƈ+>AW׹[!"NǺ KXgD GJe\9}:;eH<ȶ;>t(]B'߷/z=},z{<==P)λKۇR@A .GPOZ!B\,dCNN.5<"zxEņodpQFB` $&d(uaL>n[jj+5*a]TTDbIúG^۹oB!:^@NN.7iusZWEE%@f0[[ nnӏ,~%Nɓ'yp"J2מ6!aHӱ~F\޵=Cn>Ǔ= G*Safc9۶ G8ZR'qӜ=vc04m޲PrB!ą"}O^~>S&]R89l8?^͆M $)9n''Gݵ==<X>w.FGX(1r;kLn:/1cc/T*ݻm^Ԑ!ͷݎ_w6nܪ%B EjZoh.9|YF0Wl/3"'ORUU,jGHp07m&:*ÔI{;z_ggTV*weoqvvg&G6POTҷ>l(IIIHLdh# !1I'Gb.7B!D bP e +NajNǖmP(t`TB!h+>Xŗlٶ^=#'pS'OnIB!IB5xy{1osB!H !&}B! B!93 P(/$!BVKNv2()*-ήxu뎧/* HJ"!8C}ةt_?zCck @eE9y9''r!{G HR$Dg$ B4j$';#y|N;8J~)졨0ިT*IdSBt:SqL&Cgrb؉x4N'd{B+Fd0fkerosk:լXW;r+?`vsnk~9QV]]Md0Re}B\r3Heа1f/fdgw*KF]ZyKΚVXTOoI8rMXZ4 4KS[[ˡx^z5223y;f4a!y78z8<8s ..ZwPTVVNhj "\=RSB\Xa#TԜ5U@^񤤤uXYYjtHA"׫V\;FZ-\>u:k~ 04R&M%&⫯5j~kΜ[ͪ;9n;FO?w ;w@'2k}̬tzRR5PZZU0n$o~(6c7چO>c̾fkZ>gdeyŗZZGkvt:x?z>Duf Ѯ\dXMԎ;~FEEeerY^f( iϽ֭97#Ӧ)++g՗SU]͓>Dz?Z_Gק}%w_GGG^{c ?‡$w?XοvװaKXgjfLKƱcǙ1m*g`6hZ>8=>;Gˋ>>_נVY{ڳKށO>Uyyz\{kS5Q+.rz=赼6p:.a[Q*(r\*~!xxYugFﹹh̚|hׄHד˯-fi8;95Z?'( _}EŬ7;u;'y2> [ogv{ _}/>v1y l%7=#D ̧W߮"_?nVƍӪmX ޴+Ыgw/Twg?rGDO?S_CM'}G"ڛ^^njksnRhuxxwHtJ55դ''Z4!TTTbcm}@eeY/{7Q`ƴ}&4pS. Oi599^MsO/[[[KEwRd@$7h4>)iF5=vvӇ'OJL).'!~'{kmXo>̟k~;]dkkFt:"">)3RH.:L܇]B@9;=`ggg#y:Sd~DR?2{E !99os_㉭G]SScә|),3ڎE7^KArTT\UE9 LT*NGR=w;88PPX+*.aefII D}t8lm53D>Ш!gO^«#ZQ\tt:Zakn\+2ի޷myUb/O>5N7'^{oe:L\=9[Sik!.FZmnx8q?s1GԐ|~싯[ncrb$F ;nGon~}0<?qW^xG [%'7~t&o#xs;ܿ`ZÇҥgͧj d_Fmm-AAA<#L|q;Fl\<-⫕2yjxyzriXY_0|<4ӧ_w79efea݊ (  .n$ /76UCUe%.nr*JKKڟ~%yvv8::2{l޲/7WWNL`@qs9Lj^_}^A2kg]U3gtt(B HkkkIK9Ic 6Տ&zv$EB\ ,(W\BET郛PSSjjjك7n^>(JID$!B:J;;;|ppr&z s[3TC-88=;;;H-D's!BP_T*quuEP`kȱll醣;6[*+(.#'+ R}%zr(-*+P(Zc#N98lOsI B4PߗHP`ooFٙ 7OT*ֶQ"$ɐ$DBq*8a}!D" B0QTM>U!!. !D3Lxά!B\$!BVDH<(C!]$DB!$!B!D' B!?+#ƎΎ kW]p|Y믽B5X4!kƏ6m|ֲw׏(*.f/V߯/Zs?':e %%%v-ť%֛&y`B_>Otm*O!'%D:u6חPCPψ!%5㼞wJ~]V~%{1j|9w!!u+ GpyGsml۾J4Mxb@A .GPOض}{B!b QtL 99xzzË(*.`M̻j+5*?w>} oݾ_=7VN$jĺGB8 !e诿4vfBԐJj^~J l<==[,덷}w>>Ó>ZnC-[J\B!.^IO^~>S&](9l8?^͆M~fwn~^ J >gь9m;vpwr٥#謲 !8(xnvqfs>sv^֛n?]ɉXؘ,KTҷ>l(IIIHLdu)jUyB!x)LI;࣏Y ~c1!(Y@P^75*/w=SZ-۶P( Bq/4+-۶ӫgqN`uthB!\ ;EEEz ^^̛{+yGG%B LC$B!B!0$DB!$!B!D' B!f/VVjztNV[[Ñ;rVV !.t:'`eπ!M&C@? }7}7VV*'$,-6vhBC̚7`gk295{^(J?WT0f(r.q !vCH/RivBT*HvFJ?}`q\B^0O;$!3i&\=AoMa~$j̽Fɐ)&Nbׇb1v[r׽aKعk7wd-s6fӮ7.O~5t_HffVe6t}UZo/54|$Q9/ _| ;97UWpjs7TWWK4mL̋FEEERB!ą]*++ؚ];TFcGeeDGy,ko,aYЃQT\C |9EUUqw?XοvװaKXT*e6-|ʚlzǰydϽ֭97#ӦSVVΪuIDAT/?'}e# 7F lB!ą]:ze*:]2PT\Eb%i2f(qrr4NoW' K?i3زm;k4>KPtM)zn{FfB U%D GgWsNaWFsdvVjBAHpwZ.u-uJ>z]Ϛ~㡇abjuzT RX1Ihn}N3dspp@YN!PKjBB݋̌jjjZjjjJOXNC7ϙOl  3:2&u @R,]K"KUT(ԠD˂ ₺*)JPP-!gfH}Ι3yL|nV^DUTI.K?gЮݻUF+}nCs?p@_Ciuyb(֮ͦ /*3Ţra o{v)Nޡh z۩mzz{޳GGW|/V3n u ?qB/YR:=wNK-SBB222e6l6 -2eʨӽ4qڭdM+>uϓ뢣~&JJuWQ9NMxa~}zM7iFܫ^>7k6n,ݮھcgG_i(<v"=Ev{"á (;MzQǍ6h'ԣw_=9s3f'U&CP_Nْty}*=зn?]S'+(0P4~h51BKiiiwۨ{oN]iJbϿ`JKKW޽$IF|M:~׻&OU㖭5f ?Ͼ̽pԩDI<ɉJI2t:9Q Ǐ*|ED+""R~~~Z|(|OO^>22J )s}o23/\eBUr )0YVb^v3*9 _AAA Q@@1JOHE@yC=JσHmw@(iW%$\;|v= #"`< #"`vcƜwNj*AtaI>4IRB#]BʔD r\:n%8+WՍ)[IRzjOjǶ5o?QJp\Y%aG膛o&۳gOz'@Y,n%]|9]RNv\r::n !Iԗ[N3߹F9mشIOSf-ԭg/}K\קK?ګQd̺^7`fFm72s3r^'AVnmZe)zu}g2x "!t<\.-_EW|kLPp)ed{~i_u7)95v^V=wNFVΝ53vڴl?75zeT-ZV2D9IHLԴIѢU| ~TIӦ-~o-9Kڴj 7phpΝ֚yϊ(cv$ia͈բeZtaIȧ}ջں=2h`wՊ/Wjvw+,,GQZSy9v +=DxrazYrq]?o ;w^gϝShhh9c7XuZ5k(88XʶմIc-[F5WWnt⅋kqQ*3gfM]TFu]_Y,Fgϝe5vh=Zz$_*nW|.IҦM`:s'b~ذA[B~ ǩv͚XF^wWVVޙ@ύZ7P[QQо]mΪs !))9wg}!e={O|Wu!W*((L)`9zTjU~ݺGO5kDwO ח$:|D.Sk/]nSGWͼY@qR\.yn+ޣ 5iWan6lڬcG+~.߸Q+U61$I|Gԍk{/΍.:r223uCZ^f)88Xii|DEeʅ)91A.ބQ_VE.:|o O.ץ+ĒOlhx-U_^Z4/|%vaժҏ[j6jWW3c+++SSNK~9+ @Ō\.-Zn{Zl}VBbWkͺujӪ< nttzsWmΧTB()>9dfXdXZ>JǏRvvpEAb'Z=2!YtYvvN=rᑞyr۫>YT;/6[Μ={E_͟OZF \\.~҉CvVՋ5u۱3^5WWeڵ.۬iV]I6n[j߫yӦ)lIm?]v}ve}_^v]v.|gY, SxD~۳39Bv{2)ytj V0wоڶn/={t1}ͷb<6_s5KgϝӒe˔ mٶM6MB˩L2toM4Ev+)9YSbg(::DYhwVrikr8jբ`ފ5[7onxm߱ӳlRT[jܨ$)22Rb׼we=gWT)ux&N;w*9+r.:Z7nҩ\W*Mꥩta5k /Y@@£*_'Uua׾=r8cڤtr-|濷PvCU*WVx {EuSQҩ^G9vfVjJTS'+(0P4~hkzr95jPs⊽m׫aF+5-Mw~g`M'N(2"B[nYM8iu)Ě5ig[a5R_~E.??uhN<{[wu:u۶>SL3o ծUSkՒf+6w8:3't:9Qb`[)IRFzN''*QRhEDDOV3SԶCGm\ZV2"^((8St_9eBUr )0YVb*ٽgbb'|z}( SHHRRʪlxD])$$DĐ?p@RwTR^=Gګ@iI+>ϧo<(Mݻvګ@9Dy<D ?:y|v"kAGDx0AG]IoȘ' rPa!w;$P|D.KCQo/LPP*ĨJZ#'Aփ*=5Ew6l"-=;}{U S\>;t#uӭE!I w*9\C`*{QVfmZvoh޻󕙙-)9YoPcبE~iox~TfVVկ>]Yԭg/+Zjʻosr>eqZhq9o-uO6z=Կ׬iը^*eiaE4yJE~ڌU|x(YYYzuo-[j'e]87xjִzؙq_>H7h4P߯_ٯ}+2"Bm۴![0HnSܬnZ%$$h=2p:vgggy|Q_[Է߭־WJ4nHqm;33rtj/Vm&ICxS_\tnRlќWgRLL]n](I>"k͹$I-\Iόbg߷>>DkZ^ܫVʯև/5QMWjj7_YYz9k̈P:dv9 9Z#=w߭eff[ph丧UVM 4PgǍUEoؠ&[n*+[> :1[oceKիϸCPttÊ$iڴG͈U!7>\5 ggWwOnڸty}uϿ犡C(tޤd=K9)U뽳i;jt]t}aZ띘l]M4VٲeTz|\.PjjV.:zjھcgUE۱= !))99WH˵_5⩡W233iq]*V9Be]]=D츱 G"I:|n]'1$IϿ8IԹYݻvrԧkv]E9$UZU=zY&}jP~1K-W]b ~rΜ=Ç+2]ŝf)88XiiגOk+q?vʕ-+ѣr8vmk9u%pҽ\Ǝ.\O=_g==z{xc>^!!!r\Z]^zYzk,e._azu53vgLtA5!4?@[PnJ9?8;[ZN[oEڶVmft:t:s vp83rUt_7z{q9|b_ƏWpcb(֮ͦ-ֺ^;5 ?Zz=UPA'w[op((~n9{VÇ>***RVkg|qfuZnƏ}Ϧn )nWo/\ r\r3|^3ZN#oNOZ4owWzzzQ``[qfkͲxt*)I:{,[Deddh˶ml*Z.rP>}:|D啒N>_޽Z&4=&UnMjZ^:MO<*\w]J*ScN%'[޾?dfXRs.)''U*UANU[Y+U|£*z{*&zbpUfVUZ )W^v5X,WRTlY ]8~;u*)IΞ}^P>9d&]:tzXNBV=D׸_ДR=j WCf> "x b5sQ\Cf%v GDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AGDx0AeK_|8$9/>\bH d9XR^y?*[RG.Q(DS*~qa?IKj$v] ,] "Ru!;, p-qҥDg!rr{ C Zný9Nh{P8!\=~\1""ps IDATxwo- e+44"`DED+"HЋ.prJml-& %.ق~gMf29{B!B!B!B!Bdz|VUm=UB!ME|6?Q#G'MR]Q`!BK(fF86|5 J#…v) :w-y{0(J!ѩT*47g@T%() ܩS۷,-)nMB!p o_<<<}1*"cd"F5D7ff}d*/uPt!BԢh#[ PkkK@h"B!.KzJdѢ7<j*R% mB! Dۮ+'CTNe"7*B!DCqsӄRq׼媘 &B!DQ l!KjM_lR0nB!e"TE~K,B!.c'jh ,UpzB!_@ȝwY&Z̤e#(//gǞhj0 cFy32!mk^xI^~sGW\ҙcrBX;xHnWVq^j32xލ}՟ew?0sy2Ow0:/Y}Z>gbku=EKj,={3z<=omӚY/J^~>AA t NZ]q|y*fԞ6'{sI}%:uhV_61y7mxRϧAeX\3wDf(>6NxgQT|&&$q |M޸X&]ϴcv:݃%$44GLAoݝCCVv7x!!Af^3T @II)[~^zf˶2w sI߬l6ש|o1b JJKIJNą!KJg݈!m[ֱlCpp0j=KBv<|_}t>ҩi?_ӿ/璒w5 sA$o_'.&nWte=Wj9Z 1mUϧj=:H<?>+B47LpUE,]4 )d"̄fDe ZBvsݰc^vK\l OzT6T~y#?JťŸW)!ŦUߎʜ\ϫUa_#8,_@@@_\֥~DFrSLS행Fa~$&RPPT xq>UK8922hN:MIY){WWc:߻~ϠDc4)..BNIanMR&i!i]4?wf޽l۾2o˴ÇQWY@IiS\kƊ&;*6}gեգ;~ODpifn"x| uNRҹ꾜MLcw?tL[juũ>9/HNM%8<ċ%(2Rd6RvV(ڶi]>:s :`(Ɗ@< {!h(qi st:!kIj!D(..Mq7rrp{PVVF޽ps&ꯅ.eѩc҇H! ;ճ"BDnB!D'B!Z<^!-e&BO:U !œ>DB!h$ B!D'B!Z< Bٿ^NB!h9H!-DB!h^2KM:B!h2v.]!B&#̄BI@$BO"!B4{ =$P wB!DsQPPVɉgt\ѥ3ΜE)!\:-=Bڷ##3뜜\r򈏉lb()+Zo('-#6[c6RϟUD$jkOw%'ECL9B Lb"q11Uv'9ipyNB!=б};|||(M~u2r*y]䒙Bь)Bdxx|||l% B!1Jdnb4y DB!D3Eh65H !͜IW"!3MM]fC. !\2!p@.]նAmqv?H4:'']uH̢UD8=jͶ]{nӚݮ5m~DHP轫8ssI)f⢣>JfI$QRVFׇvqh2&C[5ر垞6a:FZŨaCh4ڏ˾osåpjlׇხi\2{9reCZOW2l ި>QRZ 6," www m4Z?=1j<=k<=99D=/n];;Jb5 rlH=?B+%+;FCL6?}+t".:+z={BRn;4nn6zS)--?_;vk[ u:<==.'K=W4&g-g1г;y\t:=^ZOZ&}52L< SG*15M=xL47bh8&FIi)WExh%-wtip!G AˍލE?&nG]Oyy9wFQ3~h&M~GzF>DEO9uw0aZacoG/Ҷmk|ᲾdF^~yQ^>+cCQ2EQضcE%m݊rRΧQ^^nR&&Cp`Y>~P^^Naq1xԲc~2  ׇ,~߾a]f2j??+[%C`e^GRyܻBSyl*~~xYO&m"#h* DGsnXZ1zv}{'(0O>7HhO~k״ s^^^EGa40MKu9,Sg#,$Lv?V%$(o͙cˢmTPddeGp@Yy;uOνߏȀP LtDVV6'$08CC.\XrsyAoM׎^WugؐAf^zc.)) 46;ť%3hӪ:g|ٿ^!u=e:=60FB+8OCLTe} <,'OGXrs ook ]yy*"4PPXDlt[wl'#+mַdZO J:s<ǓSDMn~>Yل3oo<ʼnSg8s.+t*h x5@8Z'Vu)N>ClT[륎M[]RЯw/;N^^>g8DP`}ꆗmZZcG,VR}nHP S?unΜK"#+:oWegQ~,.?_⢣P}_sXLJ*.1KNa#MLh4^9slYԴ͖1TX_\Z/[~##3(&$8krrjǡc9}6\CK|zI  cB{ՖmZG:_y.vW}P`Æ b}9{M`̗ٽw?z@=Z <|ȈpE!>&׏ wມCy8Fk"GyZ,SxY_2 ÃǝǂZ*"PRRz犦U6[;2s8L~aC _Tq Mc]Ty||\ ;tWv~o]u˹ܞz^%/ۇ()9 ?*JJJ qCSy$X9ZBپkw!>.;nH58R~~N|z}66}a$Lb"P&%r>b۶^لݶ 5yzz8au]:4ZȲrԱ'tsOLHH0b6sk-QݗU\6\}gttlIlf׾fv;/.|֓ |zYO` C銼s,X~L%+R]-mI^~C?ݺtۋ[.7Vօsq`RWxVs|.%+:u v_煺\2oMA#¸ѣ, m=.x"m{̞6 |YqAT[׏ݨ2EU4lVlm WR~^3oή_i'3bK_I^^QA5vTU+`-ZF}t|tzfu}c31=tEŴmIT'ԟh6"JkZPnݟ9\є9mIvNn#É hIȬs}\UUWvEVsl"9uА _rqc'jӚhL ȁc3Ps•KӞzIV~o4 VFCpP 9yn@xX(Yls'")).Ý+:u JEaqΜ]\Lck]>"B#7?۶MZzqI]5lsxcV /.ߏ\:Ldh( ;O|}).)eYy&u$48__ غm>>ޜOo>ffp61 /LnWԫǜ<8Ldxn IQTV!R})t:63PTקN ˝CMc jT<&R^^NNN0|ɫ,Cp` ~%jSuط>tЎOwA4A3p\qYDŽqcƋqu>OǛe+۫'^Z-?oڂZ}1MĶBC h۾=>.cy9'O*;R9HN_}iCR1OOڶg IDATT';'0_ݿ]^tKIaq E%ʮU~PiNQaSpTw#ߏbL&3E}tkRWOBC(*.ںض*dfer>l]~T4NKݍWvwחV뉧VKFV~>>\ݷu|+J˚%[P6:2(E!95BBj5ude:SR0+JVڸb߶%ߏ28tks9<=]2sL{#%|:RpwwZ!2,o?O>&M^$&&ɮ^R򴧡cb=IC&eة?y:>h|qf8%n1 ;O |z-b;Lʀʩuk~] vT,uB) 6-|-]C]2kOc:sl'[~!_CSZ34kL˅VPn 19CqkSKф򼐘C-DCe&}BflbR5 Fɫ)1y ߬OSC!Dj>DKlڋҨnٻ KZZ:;vBDkVe!!iۦuo7?bb |gWԶ4={d*TUax{y̴%?!\Ub߲7]3͏([6kwiZܵ \KPP3"#*ʨQ9f>We/63a8bcx䡇1Lh4h*nnn6u1BR5!(uzxr36M&( ̼Cﺳ>h5ug`&wL†ekٶ}Pѿi;fӦn]/''???7nd@~U!K9f׎sߢn9L&K`Ը ~1rGimwLBAC3aKp5qj9e*;f˲`Y>_=`>rv<>SzPw*G5kp :'?C~~~^l3gzB<4X@di˯lߜh9og1NҹS'kBn=O݀Knb'QU#LϿi˯U9o>c|1Y]eXl9o% Or:B>ƍ6x@ {tbӇ襙οTI7ē=jݝ0S~1!ְkϞ*h==OJNAQtLH抮]9{,\-mZ[׶m[b$˝Lwze>}6m,y7/Gj+mK\ݥuV̙:?$M!GD`2yvSK &EI=;x'8|(YlܼoZG3͹9z\.XHDDEe=]M  "<N,[;1>r_OE~srarsXxF*(,dݷߒNc޽xyyPT^8*KdD۶ ;'zmvu ?x~^zuS\BeT*5Ԣוy`&e2^:՟eӻg10rnfe|,Z?4&bɒ>w]>9tL;o/;Z9NXh(S̕Wt(g%i !hz3+R0fL&E:ΜLR憷72$BF"%>00jiRB$BF"K h+B!S X=q撙B!DSimI#BLz/ !œH!-DB!h$ B!D'B!Z< B5m2B! ,#U[>'#U !)< RĹJK[%]F"!B4D( OPVRLjZWq>O C'@ZB8\ީl6BBnNCZ-v'3-b !BȥȠZ/z5[{~w5c&Lbɲ唕쓧Dzw߳ Z?Ӑ #9%ť֣t-4ث׿;&Oib!CdRҨwϞ,Y8G=-Χ7ꝗAi.~x{y̴jRT^ !MeQ R"4l kʋ/У1i_R^;%֣B!r`FET=i@E>dě8lONZZooАKnWX=c|v- /_гV~8j9e*;fvd2t F,7 ,XcqQ1* k۶r,5ի3mxQ mwi<>SzPw*G5kp :'?C~~~^l3gBjS]wc_y{[d5jyDAa!OMMwX`#j7O>,߯=bs3)//(%˖?Ypk?/}ޜ7L~1k>s,].@ h2RVVVe2Nhj+KML~o-XȍGѽ[yΝlX5qm=l"|*U}dd21}tLuNg/B!\ E!9%Ys2~|f-/0ն-_~w(74h߮]t9bܩ#A<撔|QZk7/0:кu+f<=ͺng&((Ȉlڲ۶kZeo9kYd1$thVs>cn C( u'mZ&&:5eP RRRk/zBѰCTݟ;vнO?BCC7FTSP3抮]9{, O^LvěӯOzQ~|:^^^hZJKlsǎy#0%&&( wMjg4)U zWm߷/\evt\8ӳn tzͼ@JKK/LGa7xzx)M[5}_B^DKrw[ =&'+koS۴ˋ[֚N]Ʋ8#Ŷ^/5?WlsuZ֭Z1g36n4B4* coͬ7r1rrs`!ӇB}-Yt:v݋vӋ`dQ~uS֜:|HNIqiMGף7]ZB!*ȶCu}&4ZrE..I)((`-۸i |D]˖7BTpY@T=4w CvIZ\ս6o2;wr݈.G!+i~1y +W}puT;gk20tONKZ`0`Fǵ#Gܷ(++ekٶ}Ee}|K*#FZ@߉!.6rՇx3iIKKwXn+5n<_ǫo̮O}d22!#s;f륫rHvcM\=xhV;Lzw۶q)41&d ,^7kg`,x{1c&Nt Jz^Z{m -]Dh!bаعӸ8xa+/>φu_&Czz:/b'IKϰhw7'##~̚O>\b"KW[%ͷ,ѣXͩO-F FZz:'Nefqrٲwc_y{[d5jyTk,[do},^?*]Ǩ*/'/>,߯=bs3)//wj{_˯Ï?Wqc ,^0`O0a86w 㥙7_1ud^IInA!ܕz0͊dRzJPiӏ^L&l6[?QF(_oVt:uU*((z^zP\b(> R;f|qI2[j,NS :r<^ֻ\pnM) qsn) m]*SN>Tء aRXX8yJ4lzQ9N:\շr>-e(1[peqwW)m^S=!_0@87أ;iX/,Z/<; xO=AAAzy{$E)SˍF#eQj==*+>|n=wITT1$%(f:&$X?]rY2nSRS1t:vևtkZ>j9̷W^}///^|5>ڴn}QqqqՋAxxSkYw INNFWn˶B4c uԑCRԱ#IIɎWdVew( k>YM``e}İa̙t~ټ6 =&Z~1͘fꋯַ>Fc:T۲ŎB|}|tdk7MZص{7lgo^,^0KKKsT_;['M$&:3ۆTo˰Bqeчy8r _IDATf>PwJ6b֭MZ{ӫ?o_rwYtTT5d2q1:oWcm۶`}׳>[//-u^ϙ|[EFqsseɩ1޽z2땗ٴW23ˌF/(`ӧw/PQljC!\\lg#+f̴ k;Ã{%˖}NF#MZ.իiIT?coͬ7r1rrs`!^Xo\>Lnn+W}h]^fܘkL6=w>#-=tZΩnDDx8K!fռŭ>[23t޻///`dPVVFhh|_?'N:Ui5B\\vLRYO-z]?f˳ ^;uYL'~MVeμ{&s]hv(o5{e/<;EKd21V,Y0g_9tvg~fm|?3_g<̏%Eѵ , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2021-10-18 21:35+0200\n" "PO-Revision-Date: 2020-05-09 11:57+0000\n" "Last-Translator: Jared Norris \n" "Language-Team: English (Australia) \n" "Language: en_AU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-05-31 16:44+0000\n" "X-Generator: Launchpad (build 275d46a24253e557e4403d52832837e4bfa425b6)\n" #. Put one translator per line, in the form NAME , YEAR1, YEAR2 msgctxt "_" msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Jared Norris https://launchpad.net/~jarednorris" #. (itstool) path: info/title #: C/index.page:7 msgctxt "text" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: info/title #: C/index.page:8 msgctxt "link" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: credit/name #: C/index.page:10 C/drag-and-drop.page:8 C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 C/preferences.page:8 C/selections.page:8 #: C/timestamps.page:8 C/asr.page:9 C/asr-setup.page:9 C/media-keys.page:8 msgid "Gabor Karsay" msgstr "Gabor Karsay" #. (itstool) path: info/desc #. (itstool) path: page/p #: C/index.page:14 C/index.page:23 msgid "" "Parlatype is an easy to use media player. Its main purpose is to " "help you transcribing speech." msgstr "" "Parlatype is an easy to use media player. Its main purpose is to " "help you transcribing speech." #. (itstool) path: page/title #: C/index.page:18 msgid "<_:media-1/> Parlatype" msgstr "<_:media-1/> Parlatype" #. (itstool) path: page/p #: C/index.page:24 msgid "" "For a quick overview have a look at . Other " "topics are covered below." msgstr "" "For a quick overview have a look at . Other " "topics are covered below." #. (itstool) path: section/title #: C/index.page:27 msgid "Help topics" msgstr "Help topics" #. (itstool) path: info/desc #: C/drag-and-drop.page:6 msgid "Drop files, file names or timestamps on Parlatype" msgstr "Drop files, file names or timestamps on Parlatype" #. (itstool) path: page/title #: C/drag-and-drop.page:14 msgid "Drag and Drop" msgstr "Drag and Drop" #. (itstool) path: page/p #: C/drag-and-drop.page:16 msgid "" "You can drop files, file names or timestamps on Parlatype’s " "window." msgstr "" "You can drop files, file names or timestamps on Parlatype’s " "window." #. (itstool) path: item/p #: C/drag-and-drop.page:19 msgid "" "Files: Drag and drop a file from a file manager, e.g. Files, on " "Parlatype and it will open that file." msgstr "" "Files: Drag and drop a file from a file manager, e.g. Files, on " "Parlatype and it will open that file." #. (itstool) path: item/p #: C/drag-and-drop.page:20 msgid "" "File names: Select a file name from a word processor, e.g. LibreOffice, drop the selected text on Parlatype and it will open that " "file. This will always work if the selection contains a full path. If you " "select the name only, Parlatype will look up its full path in the " "list of recent files and open it if it can find it in that list." msgstr "" "File names: Select a file name from a word processor, e.g. LibreOffice, drop the selected text on Parlatype and it will open that " "file. This will always work if the selection contains a full path. If you " "select the name only, Parlatype will look up its full path in the " "list of recent files and open it if it can find it in that list." #. (itstool) path: item/p #: C/drag-and-drop.page:21 msgid "" "Timestamps: You can drag and drop timestamps to Parlatype. Select " "a timestamp from a word processor, e.g. LibreOffice, drop the " "selected text on Parlatype and it will jump to that position." msgstr "" "Timestamps: You can drag and drop timestamps to Parlatype. Select " "a timestamp from a word processor, e.g. LibreOffice, drop the " "selected text on Parlatype and it will jump to that position." #. (itstool) path: info/desc #. (itstool) path: page/title #: C/first-steps.page:6 C/first-steps.page:14 msgid "First steps with Parlatype" msgstr "First steps with Parlatype" #. (itstool) path: page/p #: C/first-steps.page:16 msgid "" "Parlatype is an easy to use audio player to help you transcribing " "or annotating recorded speech. You need to run a word processor, e.g. " "LibreOffice, too. Launch Parlatype and open an audio " "file by clicking on the Open button in the upper left corner." msgstr "" "Parlatype is an easy to use audio player to help you transcribing " "or annotating recorded speech. You need to run a word processor, e.g. " "LibreOffice, too. Launch Parlatype and open an audio " "file by clicking on the Open button in the upper left corner." #. (itstool) path: note/p #: C/first-steps.page:19 msgid "You can also drag and drop a file on Parlatype." msgstr "You can also drag and drop a file on Parlatype." #. (itstool) path: page/p #: C/first-steps.page:22 msgid "" "In the lower left corner there are the controls with a Play " "button which toggles between play and pause. Whenever you pause, " "Parlatype rewinds a few seconds to make it easier to resume. This " "can be changed in the ." msgstr "" "In the lower left corner there are the controls with a Play " "button which toggles between play and pause. Whenever you pause, " "Parlatype rewinds a few seconds to make it easier to resume. This " "can be changed in the ." #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/first-steps.page:24 msgctxt "_" msgid "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" msgstr "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" #. (itstool) path: page/p #: C/first-steps.page:26 msgid "" "The buttons Jump back and Jump forward in the lower " "left corner skip a few seconds back or ahead. The amount of time can be " "changed in the ." msgstr "" "The buttons Jump back and Jump forward in the lower " "left corner skip a few seconds back or ahead. The amount of time can be " "changed in the ." #. (itstool) path: page/p #: C/first-steps.page:28 msgid "" "The view scrolls automatically so that the cursor is always visible. You can " "scroll manually by clicking on or dragging the scroll bar or using the " "standard keybindings. Automatic scrolling is stopped then." msgstr "" "The view scrolls automatically so that the cursor is always visible. You can " "scroll manually by clicking on or dragging the scroll bar or using the " "standard key bindings. Automatic scrolling is stopped then." #. (itstool) path: page/p #: C/first-steps.page:30 msgid "" "To get back to the cursor’s position and let the view scroll automatically " "again, click on the menu button showing the time and then on Go to " "cursor. Clicking on the Play button also turns automatic " "scrolling on." msgstr "" "To get back to the cursor’s position and let the view scroll automatically " "again, click on the menu button showing the time and then on Go to " "cursor. Clicking on the Play button also turns automatic " "scrolling on." #. (itstool) path: page/p #: C/first-steps.page:32 msgid "" "Clicking in the view with the right mouse button will put the cursor there, " "also holding the right mouse button pressed and moving it. The left mouse " "button is for ." msgstr "" "Clicking in the view with the right mouse button will put the cursor there, " "also holding the right mouse button pressed and moving it. The left mouse " "button is for ." #. (itstool) path: page/p #: C/first-steps.page:34 msgid "" "The speed scale next to the volume button in the lower " "right corner lets you adjust the speed of playback. A value of 1 means " "normal speed, everything lower (down to 0.5) is slower, everything above is " "faster." msgstr "" "The speed scale next to the volume button in the lower " "right corner lets you adjust the speed of playback. A value of 1 means " "normal speed, everything lower (down to 0.5) is slower, everything above is " "faster." #. (itstool) path: info/desc #: C/keyboard-shortcuts.page:6 msgid "Standard keyboard shortcuts in Parlatype" msgstr "Standard keyboard shortcuts in Parlatype" #. (itstool) path: page/title #: C/keyboard-shortcuts.page:14 msgid "Keyboard shortcuts" msgstr "Keyboard shortcuts" #. (itstool) path: page/p #: C/keyboard-shortcuts.page:16 msgid "" "Keyboard shortcuts for Parlatype control, like Play, " "are described in . Shortcut keys for the window are " "listed below." msgstr "" "Keyboard shortcuts for Parlatype control, like Play, " "are described in . Shortcut keys for the window are " "listed below." #. (itstool) path: table/title #: C/keyboard-shortcuts.page:19 msgid "Standard Shortcut keys" msgstr "Standard Shortcut keys" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:22 msgid "To Do This" msgstr "To Do This" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:23 msgid "Press This" msgstr "Press This" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:28 msgid "Show help" msgstr "Show help" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:29 msgid "F1" msgstr "F1" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:32 msgid "Open file" msgstr "Open file" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:33 msgid "Ctrlo" msgstr "Ctrlo" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:36 msgid "Play/Pause" msgstr "Play/Pause" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:37 msgid "CtrlSpace" msgstr "CtrlSpace" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:40 msgid "Go to …" msgstr "Go to …" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:41 msgid "Ctrlg" msgstr "Ctrlg" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:44 msgid "Jump back" msgstr "Jump back" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:45 msgid "CtrlLeft" msgstr "CtrlLeft" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:48 msgid "Jump forward" msgstr "Jump forward" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:49 msgid "CtrlRight" msgstr "CtrlRight" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:52 msgid "Copy timestamp" msgstr "Copy timestamp" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:53 msgid "Ctrlc" msgstr "Ctrlc" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:56 msgid "Insert timestamp" msgstr "Insert timestamp" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:57 msgid "Ctrlv" msgstr "Ctrlv" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:60 msgid "Zoom in" msgstr "Zoom in" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:61 msgid "Ctrl+" msgstr "Ctrl+" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:64 msgid "Zoom out" msgstr "Zoom out" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:65 msgid "Ctrl-" msgstr "Ctrl-" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:68 msgid "Quit" msgstr "Quit" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:69 msgid "Ctrlq" msgstr "Ctrlq" #. (itstool) path: p/link #: C/legal.xml:5 msgid "Creative Commons Attribution-ShareAlike 4.0 International" msgstr "Creative Commons Attribution-ShareAlike 4.0 International" #. (itstool) path: license/p #: C/legal.xml:4 msgid "This work is licensed under a <_:link-1/> license." msgstr "This work is licensed under a <_:link-1/> license." #. (itstool) path: info/desc #: C/preferences.page:6 msgid "How to customize Parlatype" msgstr "How to customise Parlatype" #. (itstool) path: page/title #: C/preferences.page:14 msgid "Preferences" msgstr "Preferences" #. (itstool) path: page/p #: C/preferences.page:16 msgid "" "To open the preferences dialog click on the primary menu in the headerbar." msgstr "" "To open the preferences dialogue click on the primary menu in the header bar." #. (itstool) path: section/title #: C/preferences.page:21 msgid "Preferences for the waveform" msgstr "Preferences for the waveform" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:23 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" msgstr "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" #. (itstool) path: item/p #: C/preferences.page:26 msgid "" "Resolution: The resolution of the waveform image is given in pixels per " "second, e.g. the default resolution of 100 means, that one second is shown " "with a width of 100 pixels." msgstr "" "Resolution: The resolution of the waveform image is given in pixels per " "second, e.g. the default resolution of 100 means, that one second is shown " "with a width of 100 pixels." #. (itstool) path: item/p #: C/preferences.page:27 msgid "" "Fixed vs. moving cursor: There are two modes, how to follow the cursor. On " "slower systems a moving cursor might be smoother." msgstr "" "Fixed vs. moving cursor: There are two modes, how to follow the cursor. On " "slower systems a moving cursor might be smoother." #. (itstool) path: item/p #: C/preferences.page:28 msgid "Show time scale: Turn the time scale on or off." msgstr "Show time scale: Turn the time scale on or off." #. (itstool) path: section/title #: C/preferences.page:33 msgid "Preferences for controls" msgstr "Preferences for controls" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:35 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: item/p #: C/preferences.page:38 msgid "" "Jump back on pause: Parlatype will rewind a few seconds on each " "pause, this way you can easier resume typing. Set this value to 0 if you " "don’t want this behaviour." msgstr "" "Jump back on pause: Parlatype will rewind a few seconds on each " "pause, this way you can easier resume typing. Set this value to 0 if you " "don’t want this behaviour." #. (itstool) path: item/p #: C/preferences.page:39 msgid "" "Jump back: Configures how many seconds to skip when the Jump back " "button is pressed." msgstr "" "Jump back: Configures how many seconds to skip when the Jump back " "button is pressed." #. (itstool) path: item/p #: C/preferences.page:40 msgid "" "Jump forward: Configures how many seconds to skip when the Jump " "forward button is pressed." msgstr "" "Jump forward: Configures how many seconds to skip when the Jump " "forward button is pressed." #. (itstool) path: item/p #: C/preferences.page:41 msgid "" "Pressing Play at the end of file – Replay file: Whether you want " "to repeat the file at the end. If not, it will replay a few seconds like on " "pause." msgstr "" "Pressing Play at the end of file – Replay file: Whether you want " "to repeat the file at the end. If not, it will replay a few seconds like on " "pause." #. (itstool) path: item/p #: C/preferences.page:42 msgid "" "Pressing Play at the end of selection – Replay selection: Whether " "you want to repeat the selection. If not, it will replay a few seconds like " "on pause." msgstr "" "Pressing Play at the end of selection – Replay selection: Whether " "you want to repeat the selection. If not, it will replay a few seconds like " "on pause." #. (itstool) path: section/title #: C/preferences.page:47 msgid "Preferences for timestamps" msgstr "Preferences for timestamps" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:49 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" msgstr "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" #. (itstool) path: section/p #: C/preferences.page:51 msgid "" "These settings affect how Parlatype formats timestamps. If you " "need a certain format in your transcription, you can adjust it here." msgstr "" "These settings affect how Parlatype formats timestamps. If you " "need a certain format in your transcription, you can adjust it here." #. (itstool) path: note/p #: C/preferences.page:52 msgid "" "There are no settings for reading timestamps. Parlatype " "reads and accepts all of these formats." msgstr "" "There are no settings for reading timestamps. Parlatype " "reads and accepts all of these formats." #. (itstool) path: item/p #: C/preferences.page:54 msgid "" "Always show hours and leading zeroes: Whether to show a fixed number of " "digits. Changing any of these values will show an updated example in the " "Example section below." msgstr "" "Always show hours and leading zeroes: Whether to show a fixed number of " "digits. Changing any of these values will show an updated example in the " "Example section below." #. (itstool) path: item/p #: C/preferences.page:55 msgid "Precision: Choose between full seconds, 10th seconds or 100th seconds." msgstr "Precision: Choose between full seconds, 10th seconds or 100th seconds." #. (itstool) path: item/p #: C/preferences.page:56 msgid "" "Fraction separator: Choose between a point or a hyphen to separate fractions " "of a second." msgstr "" "Fraction separator: Choose between a point or a hyphen to separate fractions " "of a second." #. (itstool) path: item/p #: C/preferences.page:57 msgid "" "Characters around timestamps: Choose between number signs, round brackets, " "square brackets or none." msgstr "" "Characters around timestamps: Choose between number signs, round brackets, " "square brackets or none." #. (itstool) path: section/title #: C/preferences.page:62 msgid "Preferences for speech recognition" msgstr "Preferences for speech recognition" #. (itstool) path: note/p #: C/preferences.page:65 msgid "" "This tab is only visible, if speech recognition is enabled in Parlatype." msgstr "" "This tab is only visible, if speech recognition is enabled in Parlatype." #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:68 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" msgstr "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" #. (itstool) path: section/p #: C/preferences.page:70 msgid "" "Here you can choose which language model to use. If you don’t have a " "language model yet, an assistant will guide you through the process of " "downloading it. You can have as many language models as you need, they can " "be added with the + button." msgstr "" "Here you can choose which language model to use. If you don’t have a " "language model yet, an assistant will guide you through the process of " "downloading it. You can have as many language models as you need, they can " "be added with the + button." #. (itstool) path: section/p #: C/preferences.page:72 msgid "" "To select a model click on its radio button in the list. If you click just " "on the name, you can see the model’s basic parameters. You could even change " "them, but that’s not recommended." msgstr "" "To select a model click on its radio button in the list. If you click just " "on the name, you can see the model’s basic parameters. You could even change " "them, but that’s not recommended." #. (itstool) path: section/p #: C/preferences.page:74 msgid "" "The - button removes a model from the list. The model’s files " "however are not deleted, just the model entry is removed." msgstr "" "The - button removes a model from the list. The model’s files " "however are not deleted, just the model entry is removed." #. (itstool) path: section/title #: C/preferences.page:80 msgid "Preferences for the window" msgstr "Preferences for the window" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:82 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" msgstr "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" #. (itstool) path: item/p #: C/preferences.page:85 msgid "" "Remember size: On start-up Parlatype sets the window size to the " "size it had the last time." msgstr "" "Remember size: On start-up Parlatype sets the window size to the " "size it had the last time." #. (itstool) path: item/p #: C/preferences.page:86 msgid "" "Remember position: On start-up Parlatype can position its window " "where you had it when you closed Parlatype last time." msgstr "" "Remember position: On start-up Parlatype can position its window " "where you had it when you closed Parlatype last time." #. (itstool) path: item/p #: C/preferences.page:87 msgid "" "Start on top: This will put Parlatype on start-up on top of other " "windows. This might be useful if you are working with a maximized word " "processor and still want to see the Parlatype window." msgstr "" "Start on top: This will put Parlatype on start-up on top of other " "windows. This might be useful if you are working with a maximised word " "processor and still want to see the Parlatype window." #. (itstool) path: note/p #: C/preferences.page:91 msgid "" "Remember position and Start on top are not available " "on Wayland." msgstr "" "Remember position and Start on top are not available " "on Wayland." #. (itstool) path: info/desc #: C/selections.page:6 msgid "How to play and repeat a selection" msgstr "How to play and repeat a selection" #. (itstool) path: page/title #: C/selections.page:14 msgid "Selections" msgstr "Selections" #. (itstool) path: page/p #: C/selections.page:16 msgid "" "You can select a piece of the waveform with the mouse. Next time you press " "Play, it will play the selection only. When it is finished and " "you press Play again, it will loop the selection once." msgstr "" "You can select a piece of the waveform with the mouse. Next time you press " "Play, it will play the selection only. When it is finished and " "you press Play again, it will loop the selection once." #. (itstool) path: note/p #: C/selections.page:18 msgid "" "When in selection mode, you can not exit the selection anymore until you " "deselect it." msgstr "" "When in selection mode, you can not exit the selection until you deselect it." #. (itstool) path: page/p #: C/selections.page:20 msgid "" "Selections can be made with the mouse (or pointer device) with a left click, " "holding the mouse button and dragging the pointer. If you click with " "Shift key pressed, an already existing selection will be enlarged " "to that point." msgstr "" "Selections can be made with the mouse (or pointer device) with a left click, " "holding the mouse button and dragging the pointer. If you click with " "Shift key pressed, an already existing selection will be enlarged " "to that point." #. (itstool) path: page/p #: C/selections.page:22 msgid "" "To deselect click once with the left button into the waveform. If the " "waveform has keyboard focus, you can press Escape." msgstr "" "To deselect click once with the left button into the waveform. If the " "waveform has keyboard focus, you can press Escape." #. (itstool) path: info/desc #: C/timestamps.page:6 msgid "Set and go to timestamps" msgstr "Set and go to timestamps" #. (itstool) path: page/title #: C/timestamps.page:14 msgid "Timestamps" msgstr "Timestamps" #. (itstool) path: page/p #: C/timestamps.page:16 msgid "Timestamps help you to navigate in your transcription." msgstr "Timestamps help you to navigate in your transcription." #. (itstool) path: note/p #: C/timestamps.page:19 msgid "" "Timestamps can look like this: #03:45.2#. You can select them with or " "without the number signs." msgstr "" "Timestamps can look like this: #03:45.2#. You can select them with or " "without the number signs." #. (itstool) path: page/p #: C/timestamps.page:22 msgid "" "Parlatype can produce different timestamp formats, they can be " "set in ." msgstr "" "Parlatype can produce different timestamp formats, they can be " "set in ." #. (itstool) path: section/title #: C/timestamps.page:25 msgid "Drag and drop" msgstr "Drag and drop" #. (itstool) path: section/p #: C/timestamps.page:27 msgid "" "If you select the timestamp in the word processor, you can drag and drop it " "on the Parlatype window and it will go to that position. This is " "also possible the other way round: Drag the time label from Parlatype to a word processor and drop it there to insert it." msgstr "" "If you select the timestamp in the word processor, you can drag and drop it " "on the Parlatype window and it will go to that position. This is " "also possible the other way round: Drag the time label from Parlatype to a word processor and drop it there to insert it." #. (itstool) path: section/title #: C/timestamps.page:31 msgid "Using the clipboard" msgstr "Using the clipboard" #. (itstool) path: section/p #: C/timestamps.page:33 msgid "" "Clicking on the menu button that is showing the current time you can " "Copy time to clipboard or Go to time in clipboard." msgstr "" "Clicking on the menu button that is showing the current time you can " "Copy time to clipboard or Go to time in clipboard." #. (itstool) path: section/p #: C/timestamps.page:35 msgid "" "This can also be done with keyboard shortcuts. First make sure, the " "Parlatype window has focus. With the key sequence " "Ctrlc the current timestamp is copied " "to the clipboard. Changing to the word processor you can insert now the " "timestamp in your transcription." msgstr "" "This can also be done with keyboard shortcuts. First make sure, the " "Parlatype window has focus. With the key sequence " "Ctrlc the current timestamp is copied " "to the clipboard. Changing to the word processor you can insert now the " "timestamp in your transcription." #. (itstool) path: section/p #: C/timestamps.page:36 msgid "" "To go to a timestamp position, copy the timestamp in the word processor to " "the clipboard. Once you have changed focus to Parlatype press " "Ctrlv." msgstr "" "To go to a timestamp position, copy the timestamp in the word processor to " "the clipboard. Once you have changed focus to Parlatype press " "Ctrlv." #. (itstool) path: info/desc #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "Let Parlatype do part of the transcription work" #. (itstool) path: page/title #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "Automatic speech recognition" #. (itstool) path: page/p #: C/asr.page:17 #, fuzzy msgid "" "Parlatype offers automatic speech recognition that is done on " "your computer. No data is sent over the network." msgstr "" "Parlatype offers automatic speech recognition that is done on " "your computer. No data is sent over the network. Keep in mind that automatic " "transcription is far from being perfect, it will always need manual " "corrections." #. (itstool) path: note/p #: C/asr.page:20 msgid "" "Parlatype must have been built with PocketSphinx or " "Mozilla DeepSpeech. Please note that those libraries might be not " "available on your platform." msgstr "" #. (itstool) path: note/p #: C/asr.page:25 msgid "" "Parlatype has no built-in text editor. You need the Parlatype " "Extension for LibreOffice to output recognized text." msgstr "" #. (itstool) path: section/title #: C/asr.page:30 msgid "Start speech recognition" msgstr "Start speech recognition" #. (itstool) path: section/p #: C/asr.page:32 msgid "" "Select a language model in the Preferences Dialog, Speech recognition tab, see for more details." msgstr "" #. (itstool) path: section/p #: C/asr.page:35 msgid "" "Open the primary menu and click on Automatic transcription. This " "is only available, if you have setup and chosen a language model." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr.page:38 #, fuzzy msgctxt "_" msgid "" "external ref='figures/asr-switch-to-asr.png' " "md5='91dc6bffa3b8a3342889d9bfccabc3c8'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: section/p #: C/asr.page:40 #, fuzzy msgid "" "Now press Play in Parlatype and the recognized speech " "will be printed in LibreOffice, if the Parlatype Extension is " "installed. Output is silent because decoding speed is dependent on your " "machine and may be slower or faster than real-time speech." msgstr "" "Now press Play in Parlatype and the recognised speech " "will be printed to that window. Output is silent because the speed is " "dependent on your machine’s power and may be slower or faster than real-time " "speech." #. (itstool) path: section/p #: C/asr.page:45 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" "Output is without punctuation or capitalisation, you have to add or correct " "that yourself." #. (itstool) path: note/p #: C/asr.page:47 #, fuzzy msgid "" "Accuracy depends on many factors like quality of the recording, " "background noise, speaker’s dialect or pronunciation and the speech model " "used. For general transcription you can expect an word error rate between 10 " "and 50 %. Alas this means that in some cases manual transcription from the " "start will be faster than automatic transcription and the following " "correction process." msgstr "" "Accuracy depends on many factors like quality of the recording, " "background noise, speaker’s dialect or pronunciation and the speech model " "used. For general transcription you can expect an word error rate between 10 " "and 50 %. Alas this means that in some case manual transcription from the " "start will be faster than automatic transcription and the following " "correction process." #. (itstool) path: info/desc #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "Setup automatic speech transcription" #. (itstool) path: page/title #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "Setup automatic speech recognition" #. (itstool) path: page/p #: C/asr-setup.page:17 msgid "" "For speech recognition you need a language model: one or more files trained " "with real speech samples. Parlatype supports language models made " "for CMU Sphinx and Mozilla DeepSpeech and ships a couple of language " "model configurations." msgstr "" #. (itstool) path: note/p #: C/asr-setup.page:22 msgid "" "A language model configuration contains meta data describing the " "language model: A name that you can change, the language it was made for, " "speech recognition engine, publisher, license etc. It has a (third party) " "link, where you can download the files. Part of the configuration is the " "base folder, where you have saved the model. Additionally it contains " "various parameters for the plugin which are not shown." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:29 msgid "" "Open the Preferences Dialog and click on the Speech Recognition " "tab. Initially there are no configurations available, click on the Add " "a configuration button." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:33 #, fuzzy msgctxt "_" msgid "" "external ref='figures/asr-setup-initial.png' " "md5='31773b99dcbb1ee84e59e119a0bd35c6'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: media/span #: C/asr-setup.page:36 msgid "download" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:37 msgid "unavailable" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:35 msgid "" "If your installation has CMU Sphinx or Mozilla DeepSpeech enabled, you will " "see configurations with a <_:media-1/> symbol. Otherwise you will see only " "configurations with a <_:media-2/> symbol." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:39 #, fuzzy msgctxt "_" msgid "" "external ref='figures/asr-setup-downloadable.png' " "md5='6e00b08a60952e8f408bec4a024be2e5'" msgstr "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" #. (itstool) path: media/span #: C/asr-setup.page:42 msgid "settings" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:41 msgid "" "Select a configuration and click on the <_:media-1/> button. There is a " "short description of the model and where you can download it. After " "downloading, you have to set the folder where your download resides. You can " "also change the Display name." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:47 #, fuzzy msgctxt "_" msgid "" "external ref='figures/asr-setup-details.png' " "md5='3273410dfb31da8518a64d28af0da7b1'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: media/span #: C/asr-setup.page:50 msgid "selected" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:49 msgid "" "An installed model has no symbol next to it. Double click on the model and " "it will be selected for speech recognition, a <_:media-1/> symbol appears." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:53 msgid "" "Shipped configurations might get obsolete over time. Therefore you can " "import a configuration with the + button. Configurations are text " "files with an .asr ending." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:57 msgid "" "With the - button you can remove a configuration. This will never " "remove downloaded models, only the configuration file." msgstr "" #. (itstool) path: info/desc #: C/media-keys.page:6 msgid "How to control Parlatype with media keys" msgstr "How to control Parlatype with media keys" #. (itstool) path: page/title #: C/media-keys.page:14 msgid "Media keys" msgstr "Media keys" #. (itstool) path: page/p #: C/media-keys.page:16 msgid "" "Parlatype’s basic functions can be controlled with so called " "media keys. Media keys are used system wide to control media " "players and they are working even if the media player is not in focus or in " "the background." msgstr "" "Parlatype’s basic functions can be controlled with so called " "media keys. Media keys are used system wide to control media " "players and they are working even if the media player is not in focus or in " "the background." #. (itstool) path: page/p #: C/media-keys.page:18 msgid "" "You can change the media keys in GNOME settings. You can use dedicated keys " "from a multimedia keyboard or use any other key or combination of keys." msgstr "" "You can change the media keys in GNOME settings. You can use dedicated keys " "from a multimedia keyboard or use any other key or combination of keys." #. (itstool) path: note/p #: C/media-keys.page:21 msgid "" "This will affect other media players, e.g. Totem or " "Rhythmbox, as well." msgstr "" "This will affect other media players, e.g. Totem or " "Rhythmbox, as well." #. (itstool) path: page/p #: C/media-keys.page:24 msgid "Parlatype listens to these key strokes:" msgstr "Parlatype listens to these key strokes:" #. (itstool) path: item/p #: C/media-keys.page:26 msgid "" "Play, Pause, Stop: Each of these keys " "toggles between playing and pause." msgstr "" "Play, Pause, Stop: Each of these keys " "toggles between playing and pause." #. (itstool) path: item/p #: C/media-keys.page:27 msgid "" "Rewind, Previous: Each of these keys will jump back " "the time you selected in Preferences." msgstr "" "Rewind, Previous: Each of these keys will jump back " "the time you selected in Preferences." #. (itstool) path: item/p #: C/media-keys.page:28 msgid "" "Fast Forward, Next: Each of these keys will jump ahead " "the time you selected in Preferences." msgstr "" "Fast Forward, Next: Each of these keys will jump ahead " "the time you selected in Preferences." #. (itstool) path: note/p #: C/media-keys.page:32 msgid "" "For detailed instructions how to change keyboard shortcuts in GNOME see the " "official " "documentation." msgstr "" "For detailed instructions how to change keyboard shortcuts in GNOME see the " "official " "documentation." #. (itstool) path: page/p #: C/media-keys.page:35 msgid "" "If you are using a dedicated foot pedal, it should be possible to map the " "foot pedal signals to any of the keys. This is not well tested, however. Any " "feedback regarding foot pedals is welcome." msgstr "" "If you are using a dedicated foot pedal, it should be possible to map the " "foot pedal signals to any of the keys. This is not well tested, however. Any " "feedback regarding foot pedals is welcome." #~ msgid "" #~ "Automatic speech recognition is disabled by default. In order to try it, " #~ "you have run Parlatype with this parameter:" #~ msgstr "" #~ "Automatic speech recognition is disabled by default. In order to try it, " #~ "you have run Parlatype with this parameter:" #~ msgid "" #~ "Open the primary menu and click on Automatic transcription. If " #~ "you don’t have a language model yet, an assistant will guide you in that " #~ "process (see ). Otherwise a dialog will pop up " #~ "asking you to give focus to a word processor. Any word processor with " #~ "support for accessibility should work, like LibreOffice or " #~ "Gedit." #~ msgstr "" #~ "Open the primary menu and click on Automatic transcription. If " #~ "you don’t have a language model yet, an assistant will guide you in that " #~ "process (see ). Otherwise a dialogue will pop " #~ "up asking you to give focus to a word processor. Any word processor with " #~ "support for accessibility should work, like LibreOffice or " #~ "Gedit." #~ msgid "" #~ "If no word processor is recognized you can use an internal textpad as a " #~ "fallback solution. To use that textpad start Parlatype with " #~ "the textpad option: parlatype --textpad." #~ msgstr "" #~ "If no word processor is recognised you can use an internal text pad as a " #~ "fall back solution. To use that text pad start Parlatype with " #~ "the text pad option: parlatype --textpad." #~ msgid "" #~ "Parlatype doesn’t ship the language model needed for speech " #~ "recognition. You will have to download it. There is an assistant that " #~ "guides you through that process." #~ msgstr "" #~ "Parlatype doesn’t ship the language model needed for speech " #~ "recognition. You will have to download it. There is an assistant that " #~ "guides you through that process." #~ msgid "" #~ "The assistant can be started either from the Preferences dialog, tab " #~ "Speech recognition or – if you have no setup yet – from the " #~ "primary menu, Automatic transcription." #~ msgstr "" #~ "The assistant can be started either from the Preferences dialogue, tab " #~ "Speech recognition or – if you have no set-up yet – from the " #~ "primary menu, Automatic transcription." #~ msgid "" #~ "It asks you to download a speech model. The speech recognition engine " #~ "used is CMU Sphinx. You can download models suitable for CMU Sphinx for " #~ "example from CMU Sphinx’ sourceforge " #~ "repository. It has models for some of the most widespread " #~ "languages." #~ msgstr "" #~ "It asks you to download a speech model. The speech recognition engine " #~ "used is CMU Sphinx. You can download models suitable for CMU Sphinx for " #~ "example from CMU Sphinx’ sourceforge " #~ "repository. It has models for some of the most widespread " #~ "languages." #~ msgid "" #~ "If it’s compressed, uncompress the model. Save it to a folder where it " #~ "can stay. Parlatype doesn’t copy the model internally." #~ msgstr "" #~ "If it’s compressed, uncompress the model. Save it to a folder where it " #~ "can stay. Parlatype doesn’t copy the model internally." #~ msgid "" #~ "Usually the assistant will find all the files needed and you just have to " #~ "give this configuration a name for your own reference. You can have " #~ "several configurations, e.g. for different languages." #~ msgstr "" #~ "Usually the assistant will find all the files needed and you just have to " #~ "give this configuration a name for your own reference. You can have " #~ "several configurations, e.g. for different languages." #~ msgid "" #~ "If the assistant doesn’t find all the components or finds more than " #~ "expected, it will ask you to specify their location or to choose between " #~ "them. The next sections explains those components." #~ msgstr "" #~ "If the assistant doesn’t find all the components or finds more than " #~ "expected, it will ask you to specify their location or to choose between " #~ "them. The next sections explains those components." #~ msgid "Models" #~ msgstr "Models" #~ msgid "" #~ "A model consists of a so called acoustic and language model and a " #~ "dictionary:" #~ msgstr "" #~ "A model consists of a so called acoustic and language model and a " #~ "dictionary:" #~ msgid "Acoustic model" #~ msgstr "Acoustic model" #~ msgid "" #~ "It consists of several files usually in their own folder: feat." #~ "params, mdef, means and some others." #~ msgstr "" #~ "It consists of several files usually in their own folder: feat." #~ "params, mdef, means and some others." #~ msgid "Language model" #~ msgstr "Language model" #~ msgid "" #~ "Parlatype needs a binary language model. That’s a single file " #~ "with the extension .lm.bin. Models can have several language " #~ "models. They have often one for high quality and one for low quality " #~ "recordings. Typical low quality recordings are from telephones with a " #~ "sample rate of 8000 Hz. Those language models have often phone, 8k or similar as part of their file name." #~ msgstr "" #~ "Parlatype needs a binary language model. That’s a single file " #~ "with the extension .lm.bin. Models can have several language " #~ "models. They have often one for high quality and one for low quality " #~ "recordings. Typical low quality recordings are from telephones with a " #~ "sample rate of 8000 Hz. Those language models have often phone, 8k or similar as part of their file name." #~ msgid "Dictionary" #~ msgstr "Dictionary" #~ msgid "" #~ "Dictionaries have the extension .dict or .dic." #~ msgstr "" #~ "Dictionaries have the extension .dict or .dic." #~ msgid "" #~ "All those elements should be somewhere in the folder selected. It doesn’t " #~ "matter whether there are subfolders or how they are named." #~ msgstr "" #~ "All those elements should be somewhere in the folder selected. It doesn’t " #~ "matter whether there are subfolders or how they are named." parlatype-3.0/help/en_CA/000077500000000000000000000000001414030451500152475ustar00rootroot00000000000000parlatype-3.0/help/en_CA/en_CA.po000066400000000000000000000721321414030451500165610ustar00rootroot00000000000000# English (Canada) translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2021-10-18 21:35+0200\n" "PO-Revision-Date: 2017-04-15 00:00+0000\n" "Last-Translator: Anthony Harrington \n" "Language-Team: English (Canada) \n" "Language: en_CA\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #. Put one translator per line, in the form NAME , YEAR1, YEAR2 msgctxt "_" msgid "translator-credits" msgstr "" #. (itstool) path: info/title #: C/index.page:7 msgctxt "text" msgid "Parlatype" msgstr "" #. (itstool) path: info/title #: C/index.page:8 msgctxt "link" msgid "Parlatype" msgstr "" #. (itstool) path: credit/name #: C/index.page:10 C/drag-and-drop.page:8 C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 C/preferences.page:8 C/selections.page:8 #: C/timestamps.page:8 C/asr.page:9 C/asr-setup.page:9 C/media-keys.page:8 msgid "Gabor Karsay" msgstr "" #. (itstool) path: info/desc #. (itstool) path: page/p #: C/index.page:14 C/index.page:23 msgid "" "Parlatype is an easy to use media player. Its main purpose is to " "help you transcribing speech." msgstr "" #. (itstool) path: page/title #: C/index.page:18 msgid "<_:media-1/> Parlatype" msgstr "" #. (itstool) path: page/p #: C/index.page:24 msgid "" "For a quick overview have a look at . Other " "topics are covered below." msgstr "" #. (itstool) path: section/title #: C/index.page:27 msgid "Help topics" msgstr "" #. (itstool) path: info/desc #: C/drag-and-drop.page:6 msgid "Drop files, file names or timestamps on Parlatype" msgstr "" #. (itstool) path: page/title #: C/drag-and-drop.page:14 msgid "Drag and Drop" msgstr "" #. (itstool) path: page/p #: C/drag-and-drop.page:16 msgid "" "You can drop files, file names or timestamps on Parlatype’s " "window." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:19 msgid "" "Files: Drag and drop a file from a file manager, e.g. Files, on " "Parlatype and it will open that file." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:20 msgid "" "File names: Select a file name from a word processor, e.g. LibreOffice, drop the selected text on Parlatype and it will open that " "file. This will always work if the selection contains a full path. If you " "select the name only, Parlatype will look up its full path in the " "list of recent files and open it if it can find it in that list." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:21 msgid "" "Timestamps: You can drag and drop timestamps to Parlatype. Select " "a timestamp from a word processor, e.g. LibreOffice, drop the " "selected text on Parlatype and it will jump to that position." msgstr "" #. (itstool) path: info/desc #. (itstool) path: page/title #: C/first-steps.page:6 C/first-steps.page:14 msgid "First steps with Parlatype" msgstr "" #. (itstool) path: page/p #: C/first-steps.page:16 msgid "" "Parlatype is an easy to use audio player to help you transcribing " "or annotating recorded speech. You need to run a word processor, e.g. " "LibreOffice, too. Launch Parlatype and open an audio " "file by clicking on the Open button in the upper left corner." msgstr "" #. (itstool) path: note/p #: C/first-steps.page:19 msgid "You can also drag and drop a file on Parlatype." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:22 msgid "" "In the lower left corner there are the controls with a Play " "button which toggles between play and pause. Whenever you pause, " "Parlatype rewinds a few seconds to make it easier to resume. This " "can be changed in the ." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/first-steps.page:24 msgctxt "_" msgid "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" msgstr "" #. (itstool) path: page/p #: C/first-steps.page:26 msgid "" "The buttons Jump back and Jump forward in the lower " "left corner skip a few seconds back or ahead. The amount of time can be " "changed in the ." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:28 msgid "" "The view scrolls automatically so that the cursor is always visible. You can " "scroll manually by clicking on or dragging the scroll bar or using the " "standard keybindings. Automatic scrolling is stopped then." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:30 msgid "" "To get back to the cursor’s position and let the view scroll automatically " "again, click on the menu button showing the time and then on Go to " "cursor. Clicking on the Play button also turns automatic " "scrolling on." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:32 msgid "" "Clicking in the view with the right mouse button will put the cursor there, " "also holding the right mouse button pressed and moving it. The left mouse " "button is for ." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:34 msgid "" "The speed scale next to the volume button in the lower " "right corner lets you adjust the speed of playback. A value of 1 means " "normal speed, everything lower (down to 0.5) is slower, everything above is " "faster." msgstr "" #. (itstool) path: info/desc #: C/keyboard-shortcuts.page:6 msgid "Standard keyboard shortcuts in Parlatype" msgstr "" #. (itstool) path: page/title #: C/keyboard-shortcuts.page:14 msgid "Keyboard shortcuts" msgstr "" #. (itstool) path: page/p #: C/keyboard-shortcuts.page:16 msgid "" "Keyboard shortcuts for Parlatype control, like Play, " "are described in . Shortcut keys for the window are " "listed below." msgstr "" #. (itstool) path: table/title #: C/keyboard-shortcuts.page:19 msgid "Standard Shortcut keys" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:22 msgid "To Do This" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:23 msgid "Press This" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:28 msgid "Show help" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:29 msgid "F1" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:32 msgid "Open file" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:33 msgid "Ctrlo" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:36 msgid "Play/Pause" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:37 msgid "CtrlSpace" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:40 msgid "Go to …" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:41 msgid "Ctrlg" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:44 msgid "Jump back" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:45 msgid "CtrlLeft" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:48 msgid "Jump forward" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:49 msgid "CtrlRight" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:52 msgid "Copy timestamp" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:53 msgid "Ctrlc" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:56 msgid "Insert timestamp" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:57 msgid "Ctrlv" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:60 msgid "Zoom in" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:61 msgid "Ctrl+" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:64 msgid "Zoom out" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:65 msgid "Ctrl-" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:68 msgid "Quit" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:69 msgid "Ctrlq" msgstr "" #. (itstool) path: p/link #: C/legal.xml:5 msgid "Creative Commons Attribution-ShareAlike 4.0 International" msgstr "" #. (itstool) path: license/p #: C/legal.xml:4 msgid "This work is licensed under a <_:link-1/> license." msgstr "" #. (itstool) path: info/desc #: C/preferences.page:6 msgid "How to customize Parlatype" msgstr "" #. (itstool) path: page/title #: C/preferences.page:14 msgid "Preferences" msgstr "" #. (itstool) path: page/p #: C/preferences.page:16 msgid "" "To open the preferences dialog click on the primary menu in the headerbar." msgstr "" #. (itstool) path: section/title #: C/preferences.page:21 msgid "Preferences for the waveform" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:23 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:26 msgid "" "Resolution: The resolution of the waveform image is given in pixels per " "second, e.g. the default resolution of 100 means, that one second is shown " "with a width of 100 pixels." msgstr "" #. (itstool) path: item/p #: C/preferences.page:27 msgid "" "Fixed vs. moving cursor: There are two modes, how to follow the cursor. On " "slower systems a moving cursor might be smoother." msgstr "" #. (itstool) path: item/p #: C/preferences.page:28 msgid "Show time scale: Turn the time scale on or off." msgstr "" #. (itstool) path: section/title #: C/preferences.page:33 msgid "Preferences for controls" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:35 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:38 msgid "" "Jump back on pause: Parlatype will rewind a few seconds on each " "pause, this way you can easier resume typing. Set this value to 0 if you " "don’t want this behaviour." msgstr "" #. (itstool) path: item/p #: C/preferences.page:39 msgid "" "Jump back: Configures how many seconds to skip when the Jump back " "button is pressed." msgstr "" #. (itstool) path: item/p #: C/preferences.page:40 msgid "" "Jump forward: Configures how many seconds to skip when the Jump " "forward button is pressed." msgstr "" #. (itstool) path: item/p #: C/preferences.page:41 msgid "" "Pressing Play at the end of file – Replay file: Whether you want " "to repeat the file at the end. If not, it will replay a few seconds like on " "pause." msgstr "" #. (itstool) path: item/p #: C/preferences.page:42 msgid "" "Pressing Play at the end of selection – Replay selection: Whether " "you want to repeat the selection. If not, it will replay a few seconds like " "on pause." msgstr "" #. (itstool) path: section/title #: C/preferences.page:47 msgid "Preferences for timestamps" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:49 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" msgstr "" #. (itstool) path: section/p #: C/preferences.page:51 msgid "" "These settings affect how Parlatype formats timestamps. If you " "need a certain format in your transcription, you can adjust it here." msgstr "" #. (itstool) path: note/p #: C/preferences.page:52 msgid "" "There are no settings for reading timestamps. Parlatype " "reads and accepts all of these formats." msgstr "" #. (itstool) path: item/p #: C/preferences.page:54 msgid "" "Always show hours and leading zeroes: Whether to show a fixed number of " "digits. Changing any of these values will show an updated example in the " "Example section below." msgstr "" #. (itstool) path: item/p #: C/preferences.page:55 msgid "Precision: Choose between full seconds, 10th seconds or 100th seconds." msgstr "" #. (itstool) path: item/p #: C/preferences.page:56 msgid "" "Fraction separator: Choose between a point or a hyphen to separate fractions " "of a second." msgstr "" #. (itstool) path: item/p #: C/preferences.page:57 msgid "" "Characters around timestamps: Choose between number signs, round brackets, " "square brackets or none." msgstr "" #. (itstool) path: section/title #: C/preferences.page:62 msgid "Preferences for speech recognition" msgstr "" #. (itstool) path: note/p #: C/preferences.page:65 msgid "" "This tab is only visible, if speech recognition is enabled in Parlatype." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:68 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" msgstr "" #. (itstool) path: section/p #: C/preferences.page:70 msgid "" "Here you can choose which language model to use. If you don’t have a " "language model yet, an assistant will guide you through the process of " "downloading it. You can have as many language models as you need, they can " "be added with the + button." msgstr "" #. (itstool) path: section/p #: C/preferences.page:72 msgid "" "To select a model click on its radio button in the list. If you click just " "on the name, you can see the model’s basic parameters. You could even change " "them, but that’s not recommended." msgstr "" #. (itstool) path: section/p #: C/preferences.page:74 msgid "" "The - button removes a model from the list. The model’s files " "however are not deleted, just the model entry is removed." msgstr "" #. (itstool) path: section/title #: C/preferences.page:80 msgid "Preferences for the window" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:82 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:85 msgid "" "Remember size: On start-up Parlatype sets the window size to the " "size it had the last time." msgstr "" #. (itstool) path: item/p #: C/preferences.page:86 msgid "" "Remember position: On start-up Parlatype can position its window " "where you had it when you closed Parlatype last time." msgstr "" #. (itstool) path: item/p #: C/preferences.page:87 msgid "" "Start on top: This will put Parlatype on start-up on top of other " "windows. This might be useful if you are working with a maximized word " "processor and still want to see the Parlatype window." msgstr "" #. (itstool) path: note/p #: C/preferences.page:91 msgid "" "Remember position and Start on top are not available " "on Wayland." msgstr "" #. (itstool) path: info/desc #: C/selections.page:6 msgid "How to play and repeat a selection" msgstr "" #. (itstool) path: page/title #: C/selections.page:14 msgid "Selections" msgstr "" #. (itstool) path: page/p #: C/selections.page:16 msgid "" "You can select a piece of the waveform with the mouse. Next time you press " "Play, it will play the selection only. When it is finished and " "you press Play again, it will loop the selection once." msgstr "" #. (itstool) path: note/p #: C/selections.page:18 msgid "" "When in selection mode, you can not exit the selection anymore until you " "deselect it." msgstr "" #. (itstool) path: page/p #: C/selections.page:20 msgid "" "Selections can be made with the mouse (or pointer device) with a left click, " "holding the mouse button and dragging the pointer. If you click with " "Shift key pressed, an already existing selection will be enlarged " "to that point." msgstr "" #. (itstool) path: page/p #: C/selections.page:22 msgid "" "To deselect click once with the left button into the waveform. If the " "waveform has keyboard focus, you can press Escape." msgstr "" #. (itstool) path: info/desc #: C/timestamps.page:6 msgid "Set and go to timestamps" msgstr "" #. (itstool) path: page/title #: C/timestamps.page:14 msgid "Timestamps" msgstr "" #. (itstool) path: page/p #: C/timestamps.page:16 msgid "Timestamps help you to navigate in your transcription." msgstr "" #. (itstool) path: note/p #: C/timestamps.page:19 msgid "" "Timestamps can look like this: #03:45.2#. You can select them with or " "without the number signs." msgstr "" #. (itstool) path: page/p #: C/timestamps.page:22 msgid "" "Parlatype can produce different timestamp formats, they can be " "set in ." msgstr "" #. (itstool) path: section/title #: C/timestamps.page:25 msgid "Drag and drop" msgstr "" #. (itstool) path: section/p #: C/timestamps.page:27 msgid "" "If you select the timestamp in the word processor, you can drag and drop it " "on the Parlatype window and it will go to that position. This is " "also possible the other way round: Drag the time label from Parlatype to a word processor and drop it there to insert it." msgstr "" #. (itstool) path: section/title #: C/timestamps.page:31 msgid "Using the clipboard" msgstr "" #. (itstool) path: section/p #: C/timestamps.page:33 msgid "" "Clicking on the menu button that is showing the current time you can " "Copy time to clipboard or Go to time in clipboard." msgstr "" #. (itstool) path: section/p #: C/timestamps.page:35 msgid "" "This can also be done with keyboard shortcuts. First make sure, the " "Parlatype window has focus. With the key sequence " "Ctrlc the current timestamp is copied " "to the clipboard. Changing to the word processor you can insert now the " "timestamp in your transcription." msgstr "" #. (itstool) path: section/p #: C/timestamps.page:36 msgid "" "To go to a timestamp position, copy the timestamp in the word processor to " "the clipboard. Once you have changed focus to Parlatype press " "Ctrlv." msgstr "" #. (itstool) path: info/desc #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "" #. (itstool) path: page/title #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "" #. (itstool) path: page/p #: C/asr.page:17 msgid "" "Parlatype offers automatic speech recognition that is done on " "your computer. No data is sent over the network." msgstr "" #. (itstool) path: note/p #: C/asr.page:20 msgid "" "Parlatype must have been built with PocketSphinx or " "Mozilla DeepSpeech. Please note that those libraries might be not " "available on your platform." msgstr "" #. (itstool) path: note/p #: C/asr.page:25 msgid "" "Parlatype has no built-in text editor. You need the Parlatype " "Extension for LibreOffice to output recognized text." msgstr "" #. (itstool) path: section/title #: C/asr.page:30 msgid "Start speech recognition" msgstr "" #. (itstool) path: section/p #: C/asr.page:32 msgid "" "Select a language model in the Preferences Dialog, Speech recognition tab, see for more details." msgstr "" #. (itstool) path: section/p #: C/asr.page:35 msgid "" "Open the primary menu and click on Automatic transcription. This " "is only available, if you have setup and chosen a language model." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr.page:38 msgctxt "_" msgid "" "external ref='figures/asr-switch-to-asr.png' " "md5='91dc6bffa3b8a3342889d9bfccabc3c8'" msgstr "" #. (itstool) path: section/p #: C/asr.page:40 msgid "" "Now press Play in Parlatype and the recognized speech " "will be printed in LibreOffice, if the Parlatype Extension is " "installed. Output is silent because decoding speed is dependent on your " "machine and may be slower or faster than real-time speech." msgstr "" #. (itstool) path: section/p #: C/asr.page:45 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #: C/asr.page:47 msgid "" "Accuracy depends on many factors like quality of the recording, " "background noise, speaker’s dialect or pronunciation and the speech model " "used. For general transcription you can expect an word error rate between 10 " "and 50 %. Alas this means that in some cases manual transcription from the " "start will be faster than automatic transcription and the following " "correction process." msgstr "" #. (itstool) path: info/desc #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:17 msgid "" "For speech recognition you need a language model: one or more files trained " "with real speech samples. Parlatype supports language models made " "for CMU Sphinx and Mozilla DeepSpeech and ships a couple of language " "model configurations." msgstr "" #. (itstool) path: note/p #: C/asr-setup.page:22 msgid "" "A language model configuration contains meta data describing the " "language model: A name that you can change, the language it was made for, " "speech recognition engine, publisher, license etc. It has a (third party) " "link, where you can download the files. Part of the configuration is the " "base folder, where you have saved the model. Additionally it contains " "various parameters for the plugin which are not shown." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:29 msgid "" "Open the Preferences Dialog and click on the Speech Recognition " "tab. Initially there are no configurations available, click on the Add " "a configuration button." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:33 msgctxt "_" msgid "" "external ref='figures/asr-setup-initial.png' " "md5='31773b99dcbb1ee84e59e119a0bd35c6'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:36 msgid "download" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:37 msgid "unavailable" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:35 msgid "" "If your installation has CMU Sphinx or Mozilla DeepSpeech enabled, you will " "see configurations with a <_:media-1/> symbol. Otherwise you will see only " "configurations with a <_:media-2/> symbol." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:39 msgctxt "_" msgid "" "external ref='figures/asr-setup-downloadable.png' " "md5='6e00b08a60952e8f408bec4a024be2e5'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:42 msgid "settings" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:41 msgid "" "Select a configuration and click on the <_:media-1/> button. There is a " "short description of the model and where you can download it. After " "downloading, you have to set the folder where your download resides. You can " "also change the Display name." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:47 msgctxt "_" msgid "" "external ref='figures/asr-setup-details.png' " "md5='3273410dfb31da8518a64d28af0da7b1'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:50 msgid "selected" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:49 msgid "" "An installed model has no symbol next to it. Double click on the model and " "it will be selected for speech recognition, a <_:media-1/> symbol appears." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:53 msgid "" "Shipped configurations might get obsolete over time. Therefore you can " "import a configuration with the + button. Configurations are text " "files with an .asr ending." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:57 msgid "" "With the - button you can remove a configuration. This will never " "remove downloaded models, only the configuration file." msgstr "" #. (itstool) path: info/desc #: C/media-keys.page:6 msgid "How to control Parlatype with media keys" msgstr "" #. (itstool) path: page/title #: C/media-keys.page:14 msgid "Media keys" msgstr "" #. (itstool) path: page/p #: C/media-keys.page:16 msgid "" "Parlatype’s basic functions can be controlled with so called " "media keys. Media keys are used system wide to control media " "players and they are working even if the media player is not in focus or in " "the background." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:18 msgid "" "You can change the media keys in GNOME settings. You can use dedicated keys " "from a multimedia keyboard or use any other key or combination of keys." msgstr "" #. (itstool) path: note/p #: C/media-keys.page:21 msgid "" "This will affect other media players, e.g. Totem or " "Rhythmbox, as well." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:24 msgid "Parlatype listens to these key strokes:" msgstr "" #. (itstool) path: item/p #: C/media-keys.page:26 msgid "" "Play, Pause, Stop: Each of these keys " "toggles between playing and pause." msgstr "" #. (itstool) path: item/p #: C/media-keys.page:27 msgid "" "Rewind, Previous: Each of these keys will jump back " "the time you selected in Preferences." msgstr "" #. (itstool) path: item/p #: C/media-keys.page:28 msgid "" "Fast Forward, Next: Each of these keys will jump ahead " "the time you selected in Preferences." msgstr "" #. (itstool) path: note/p #: C/media-keys.page:32 msgid "" "For detailed instructions how to change keyboard shortcuts in GNOME see the " "official " "documentation." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:35 msgid "" "If you are using a dedicated foot pedal, it should be possible to map the " "foot pedal signals to any of the keys. This is not well tested, however. Any " "feedback regarding foot pedals is welcome." msgstr "" parlatype-3.0/help/en_GB/000077500000000000000000000000001414030451500152545ustar00rootroot00000000000000parlatype-3.0/help/en_GB/en_GB.po000066400000000000000000001406461414030451500166010ustar00rootroot00000000000000# English (United Kingdom) translation for parlatype help # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # Anthony Harrington , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2021-10-18 21:35+0200\n" "PO-Revision-Date: 2020-03-09 16:27+0000\n" "Last-Translator: Stephan Woidowski \n" "Language-Team: English (United Kingdom) \n" "Language: en_GB\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #. Put one translator per line, in the form NAME , YEAR1, YEAR2 msgctxt "_" msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Andi Chandler https://launchpad.net/~bing\n" " Anthony Harrington https://launchpad.net/~linuxchemist\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " Stephan Woidowski https://launchpad.net/~swoidowski" #. (itstool) path: info/title #: C/index.page:7 msgctxt "text" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: info/title #: C/index.page:8 msgctxt "link" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: credit/name #: C/index.page:10 C/drag-and-drop.page:8 C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 C/preferences.page:8 C/selections.page:8 #: C/timestamps.page:8 C/asr.page:9 C/asr-setup.page:9 C/media-keys.page:8 msgid "Gabor Karsay" msgstr "Gabor Karsay" #. (itstool) path: info/desc #. (itstool) path: page/p #: C/index.page:14 C/index.page:23 msgid "" "Parlatype is an easy to use media player. Its main purpose is to " "help you transcribing speech." msgstr "" "Parlatype is an easy to use media player. Its main purpose is to " "help you when transcribing speech." #. (itstool) path: page/title #: C/index.page:18 msgid "<_:media-1/> Parlatype" msgstr "<_:media-1/> Parlatype" #. (itstool) path: page/p #: C/index.page:24 msgid "" "For a quick overview have a look at . Other " "topics are covered below." msgstr "" "For a quick overview, have a look at . Other " "topics are covered below." #. (itstool) path: section/title #: C/index.page:27 msgid "Help topics" msgstr "Help topics" #. (itstool) path: info/desc #: C/drag-and-drop.page:6 msgid "Drop files, file names or timestamps on Parlatype" msgstr "Drop files, file names or timestamps onto Parlatype" #. (itstool) path: page/title #: C/drag-and-drop.page:14 msgid "Drag and Drop" msgstr "Drag and Drop" #. (itstool) path: page/p #: C/drag-and-drop.page:16 msgid "" "You can drop files, file names or timestamps on Parlatype’s " "window." msgstr "" "You can drop files, file names or timestamps on Parlatype’s " "window." #. (itstool) path: item/p #: C/drag-and-drop.page:19 msgid "" "Files: Drag and drop a file from a file manager, e.g. Files, on " "Parlatype and it will open that file." msgstr "" "Files: Drag and drop a file from a file manager, e.g. Files, on " "Parlatype and it will open that file." #. (itstool) path: item/p #: C/drag-and-drop.page:20 msgid "" "File names: Select a file name from a word processor, e.g. LibreOffice, drop the selected text on Parlatype and it will open that " "file. This will always work if the selection contains a full path. If you " "select the name only, Parlatype will look up its full path in the " "list of recent files and open it if it can find it in that list." msgstr "" "File names: Select a file name from a word processor, e.g. LibreOffice, drop the selected text on Parlatype and it will open that " "file. This will always work if the selection contains a full path. If you " "select the name only, Parlatype will look up its full path in the " "list of recent files and open it if it can find it in that list." #. (itstool) path: item/p #: C/drag-and-drop.page:21 msgid "" "Timestamps: You can drag and drop timestamps to Parlatype. Select " "a timestamp from a word processor, e.g. LibreOffice, drop the " "selected text on Parlatype and it will jump to that position." msgstr "" "Timestamps: You can drag and drop timestamps to Parlatype. Select " "a timestamp from a word processor, e.g. LibreOffice, drop the " "selected text on Parlatype and it will jump to that position." #. (itstool) path: info/desc #. (itstool) path: page/title #: C/first-steps.page:6 C/first-steps.page:14 msgid "First steps with Parlatype" msgstr "First steps with Parlatype" #. (itstool) path: page/p #: C/first-steps.page:16 msgid "" "Parlatype is an easy to use audio player to help you transcribing " "or annotating recorded speech. You need to run a word processor, e.g. " "LibreOffice, too. Launch Parlatype and open an audio " "file by clicking on the Open button in the upper left corner." msgstr "" "Parlatype is an easy to use audio player to help you when " "transcribing or annotating recorded speech. You need to run a word " "processor, e.g. LibreOffice, too. Launch Parlatype and " "open an audio file by clicking on the Open button in the upper " "left corner." #. (itstool) path: note/p #: C/first-steps.page:19 msgid "You can also drag and drop a file on Parlatype." msgstr "You can also drag and drop a file on Parlatype." #. (itstool) path: page/p #: C/first-steps.page:22 msgid "" "In the lower left corner there are the controls with a Play " "button which toggles between play and pause. Whenever you pause, " "Parlatype rewinds a few seconds to make it easier to resume. This " "can be changed in the ." msgstr "" "In the lower left corner there are the controls with a Play " "button which toggles between play and pause. Whenever you pause, " "Parlatype rewinds a few seconds to make it easier to resume. This " "can be changed in the ." #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/first-steps.page:24 msgctxt "_" msgid "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" msgstr "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" #. (itstool) path: page/p #: C/first-steps.page:26 msgid "" "The buttons Jump back and Jump forward in the lower " "left corner skip a few seconds back or ahead. The amount of time can be " "changed in the ." msgstr "" "The buttons Jump back and Jump forward in the lower " "left corner skip a few seconds back or ahead. The amount of time can be " "changed in the ." #. (itstool) path: page/p #: C/first-steps.page:28 msgid "" "The view scrolls automatically so that the cursor is always visible. You can " "scroll manually by clicking on or dragging the scroll bar or using the " "standard keybindings. Automatic scrolling is stopped then." msgstr "" "The view scrolls automatically so that the cursor is always visible. You can " "scroll manually by clicking on or dragging the scroll bar or using the " "standard keybindings. Automatic scrolling is stopped then." #. (itstool) path: page/p #: C/first-steps.page:30 msgid "" "To get back to the cursor’s position and let the view scroll automatically " "again, click on the menu button showing the time and then on Go to " "cursor. Clicking on the Play button also turns automatic " "scrolling on." msgstr "" "To get back to the cursor’s position and let the view scroll automatically " "again, click on the menu button showing the time and then on Go to " "cursor. Clicking on the Play button also turns automatic " "scrolling on." #. (itstool) path: page/p #: C/first-steps.page:32 msgid "" "Clicking in the view with the right mouse button will put the cursor there, " "also holding the right mouse button pressed and moving it. The left mouse " "button is for ." msgstr "" "Clicking in the view with the right mouse button will put the cursor there, " "also holding the right mouse button pressed and moving it. The left mouse " "button is for ." #. (itstool) path: page/p #: C/first-steps.page:34 msgid "" "The speed scale next to the volume button in the lower " "right corner lets you adjust the speed of playback. A value of 1 means " "normal speed, everything lower (down to 0.5) is slower, everything above is " "faster." msgstr "" "The speed scale next to the volume button in the lower " "right corner lets you adjust the speed of playback. A value of 1 means " "normal speed, everything lower (down to 0.5) is slower, everything greater " "is faster." #. (itstool) path: info/desc #: C/keyboard-shortcuts.page:6 msgid "Standard keyboard shortcuts in Parlatype" msgstr "Standard keyboard shortcuts in Parlatype" #. (itstool) path: page/title #: C/keyboard-shortcuts.page:14 msgid "Keyboard shortcuts" msgstr "Keyboard shortcuts" #. (itstool) path: page/p #: C/keyboard-shortcuts.page:16 msgid "" "Keyboard shortcuts for Parlatype control, like Play, " "are described in . Shortcut keys for the window are " "listed below." msgstr "" "Keyboard shortcuts for Parlatype control, like Play, " "are described in . Shortcut keys for the window are " "listed below." #. (itstool) path: table/title #: C/keyboard-shortcuts.page:19 msgid "Standard Shortcut keys" msgstr "Standard Shortcut keys" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:22 msgid "To Do This" msgstr "To Do This" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:23 msgid "Press This" msgstr "Press This" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:28 msgid "Show help" msgstr "Show help" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:29 msgid "F1" msgstr "F1" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:32 msgid "Open file" msgstr "Open file" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:33 msgid "Ctrlo" msgstr "Ctrlo" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:36 msgid "Play/Pause" msgstr "Play/Pause" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:37 msgid "CtrlSpace" msgstr "CtrlSpace" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:40 msgid "Go to …" msgstr "Go to…" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:41 msgid "Ctrlg" msgstr "Ctrlg" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:44 msgid "Jump back" msgstr "Jump back" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:45 msgid "CtrlLeft" msgstr "CtrlLeft" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:48 msgid "Jump forward" msgstr "Jump forward" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:49 msgid "CtrlRight" msgstr "CtrlRight" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:52 msgid "Copy timestamp" msgstr "Copy timestamp" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:53 msgid "Ctrlc" msgstr "Ctrlc" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:56 msgid "Insert timestamp" msgstr "Insert timestamp" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:57 msgid "Ctrlv" msgstr "Ctrlv" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:60 msgid "Zoom in" msgstr "Zoom in" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:61 msgid "Ctrl+" msgstr "Ctrl+" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:64 msgid "Zoom out" msgstr "Zoom out" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:65 msgid "Ctrl-" msgstr "Ctrl-" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:68 msgid "Quit" msgstr "Quit" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:69 msgid "Ctrlq" msgstr "Ctrlq" #. (itstool) path: p/link #: C/legal.xml:5 msgid "Creative Commons Attribution-ShareAlike 4.0 International" msgstr "Creative Commons Attribution-ShareAlike 4.0 International" #. (itstool) path: license/p #: C/legal.xml:4 msgid "This work is licensed under a <_:link-1/> license." msgstr "This work is licensed under a <_:link-1/> licence." #. (itstool) path: info/desc #: C/preferences.page:6 msgid "How to customize Parlatype" msgstr "How to customise Parlatype" #. (itstool) path: page/title #: C/preferences.page:14 msgid "Preferences" msgstr "Preferences" #. (itstool) path: page/p #: C/preferences.page:16 msgid "" "To open the preferences dialog click on the primary menu in the headerbar." msgstr "" "To open the preferences dialogue click on the primary menu in the headerbar." #. (itstool) path: section/title #: C/preferences.page:21 msgid "Preferences for the waveform" msgstr "Preferences for the waveform" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:23 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" msgstr "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" #. (itstool) path: item/p #: C/preferences.page:26 msgid "" "Resolution: The resolution of the waveform image is given in pixels per " "second, e.g. the default resolution of 100 means, that one second is shown " "with a width of 100 pixels." msgstr "" "Resolution: The resolution of the waveform image is given in pixels per " "second, e.g. the default resolution of 100 means that one second is shown " "with a width of 100 pixels." #. (itstool) path: item/p #: C/preferences.page:27 msgid "" "Fixed vs. moving cursor: There are two modes, how to follow the cursor. On " "slower systems a moving cursor might be smoother." msgstr "" "Fixed vs. moving cursor: There are two modes determining how to follow the " "cursor. On slower systems, a moving cursor might be smoother." #. (itstool) path: item/p #: C/preferences.page:28 msgid "Show time scale: Turn the time scale on or off." msgstr "Show time scale: Turn the time scale on or off." #. (itstool) path: section/title #: C/preferences.page:33 msgid "Preferences for controls" msgstr "Preferences for controls" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:35 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: item/p #: C/preferences.page:38 msgid "" "Jump back on pause: Parlatype will rewind a few seconds on each " "pause, this way you can easier resume typing. Set this value to 0 if you " "don’t want this behaviour." msgstr "" "Jump back on pause: Parlatype will rewind a few seconds on each " "pause, this way you can easier resume typing. Set this value to 0 if you " "don’t want this behaviour." #. (itstool) path: item/p #: C/preferences.page:39 msgid "" "Jump back: Configures how many seconds to skip when the Jump back " "button is pressed." msgstr "" "Jump back: Configures how many seconds to skip when the Jump back " "button is pressed." #. (itstool) path: item/p #: C/preferences.page:40 msgid "" "Jump forward: Configures how many seconds to skip when the Jump " "forward button is pressed." msgstr "" "Jump forward: Configures how many seconds to skip when the Jump " "forward button is pressed." #. (itstool) path: item/p #: C/preferences.page:41 msgid "" "Pressing Play at the end of file – Replay file: Whether you want " "to repeat the file at the end. If not, it will replay a few seconds like on " "pause." msgstr "" "Pressing Play at the end of file – Replay file: Whether you want " "to repeat the file at the end. If not, it will replay a few seconds like on " "pause." #. (itstool) path: item/p #: C/preferences.page:42 msgid "" "Pressing Play at the end of selection – Replay selection: Whether " "you want to repeat the selection. If not, it will replay a few seconds like " "on pause." msgstr "" "Pressing Play at the end of selection – Replay selection: Whether " "you want to repeat the selection. If not, it will replay a few seconds like " "on pause." #. (itstool) path: section/title #: C/preferences.page:47 msgid "Preferences for timestamps" msgstr "Preferences for timestamps" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:49 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" msgstr "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" #. (itstool) path: section/p #: C/preferences.page:51 msgid "" "These settings affect how Parlatype formats timestamps. If you " "need a certain format in your transcription, you can adjust it here." msgstr "" "These settings affect how Parlatype formats timestamps. If you " "need a certain format in your transcription, you can adjust it here." #. (itstool) path: note/p #: C/preferences.page:52 msgid "" "There are no settings for reading timestamps. Parlatype " "reads and accepts all of these formats." msgstr "" "There are no settings for reading timestamps. Parlatype " "reads and accepts all of these formats." #. (itstool) path: item/p #: C/preferences.page:54 msgid "" "Always show hours and leading zeroes: Whether to show a fixed number of " "digits. Changing any of these values will show an updated example in the " "Example section below." msgstr "" "Always show hours and leading zeroes: Whether to show a fixed number of " "digits. Changing any of these values will show an updated example in the " "Example section below." #. (itstool) path: item/p #: C/preferences.page:55 msgid "Precision: Choose between full seconds, 10th seconds or 100th seconds." msgstr "Precision: Choose between full seconds, 10th seconds or 100th seconds." #. (itstool) path: item/p #: C/preferences.page:56 msgid "" "Fraction separator: Choose between a point or a hyphen to separate fractions " "of a second." msgstr "" "Fraction separator: Choose between a point or a hyphen to separate fractions " "of a second." #. (itstool) path: item/p #: C/preferences.page:57 msgid "" "Characters around timestamps: Choose between number signs, round brackets, " "square brackets or none." msgstr "" "Characters around timestamps: Choose between number signs, round brackets, " "square brackets or none." #. (itstool) path: section/title #: C/preferences.page:62 msgid "Preferences for speech recognition" msgstr "Preferences for speech recognition" #. (itstool) path: note/p #: C/preferences.page:65 msgid "" "This tab is only visible, if speech recognition is enabled in Parlatype." msgstr "" "This tab is only visible, if speech recognition is enabled in Parlatype." #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:68 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" msgstr "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" #. (itstool) path: section/p #: C/preferences.page:70 msgid "" "Here you can choose which language model to use. If you don’t have a " "language model yet, an assistant will guide you through the process of " "downloading it. You can have as many language models as you need, they can " "be added with the + button." msgstr "" "Here you can choose which language model to use. If you don’t have a " "language model yet, an assistant will guide you through the process of " "downloading it. You can have as many language models as you need, they can " "be added with the + button." #. (itstool) path: section/p #: C/preferences.page:72 msgid "" "To select a model click on its radio button in the list. If you click just " "on the name, you can see the model’s basic parameters. You could even change " "them, but that’s not recommended." msgstr "" "To select a model click on its radio button in the list. If you click just " "on the name, you can see the model’s basic parameters. You could even change " "them, but that’s not recommended." #. (itstool) path: section/p #: C/preferences.page:74 msgid "" "The - button removes a model from the list. The model’s files " "however are not deleted, just the model entry is removed." msgstr "" "The - button removes a model from the list. The model’s files " "however are not deleted, just the model entry is removed." #. (itstool) path: section/title #: C/preferences.page:80 msgid "Preferences for the window" msgstr "Preferences for the window" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:82 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" msgstr "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" #. (itstool) path: item/p #: C/preferences.page:85 msgid "" "Remember size: On start-up Parlatype sets the window size to the " "size it had the last time." msgstr "" "Remember size: On start-up Parlatype sets the window size to the " "size it had the last time." #. (itstool) path: item/p #: C/preferences.page:86 msgid "" "Remember position: On start-up Parlatype can position its window " "where you had it when you closed Parlatype last time." msgstr "" "Remember position: On start-up Parlatype can position its window " "where you had it when you closed Parlatype last time." #. (itstool) path: item/p #: C/preferences.page:87 msgid "" "Start on top: This will put Parlatype on start-up on top of other " "windows. This might be useful if you are working with a maximized word " "processor and still want to see the Parlatype window." msgstr "" "Start on top: This will put Parlatype on start-up on top of other " "windows. This might be useful if you are working with a maximized word " "processor and still want to see the Parlatype window." #. (itstool) path: note/p #: C/preferences.page:91 msgid "" "Remember position and Start on top are not available " "on Wayland." msgstr "" "Remember position and Start on top are not available " "on Wayland." #. (itstool) path: info/desc #: C/selections.page:6 msgid "How to play and repeat a selection" msgstr "How to play and repeat a selection" #. (itstool) path: page/title #: C/selections.page:14 msgid "Selections" msgstr "Selections" #. (itstool) path: page/p #: C/selections.page:16 msgid "" "You can select a piece of the waveform with the mouse. Next time you press " "Play, it will play the selection only. When it is finished and " "you press Play again, it will loop the selection once." msgstr "" "You can select a piece of the waveform with the mouse. Next time you press " "Play, it will play the selection only. When it is finished and " "you press Play again, it will loop the selection once." #. (itstool) path: note/p #: C/selections.page:18 msgid "" "When in selection mode, you can not exit the selection anymore until you " "deselect it." msgstr "" "When in selection mode, you cannot exit the selection anymore until you " "deselect it." #. (itstool) path: page/p #: C/selections.page:20 msgid "" "Selections can be made with the mouse (or pointer device) with a left click, " "holding the mouse button and dragging the pointer. If you click with " "Shift key pressed, an already existing selection will be enlarged " "to that point." msgstr "" "Selections can be made with the mouse (or pointer device) with a left click, " "holding the mouse button and dragging the pointer. If you click with " "Shift key pressed, an already existing selection will be enlarged " "to that point." #. (itstool) path: page/p #: C/selections.page:22 msgid "" "To deselect click once with the left button into the waveform. If the " "waveform has keyboard focus, you can press Escape." msgstr "" "To deselect click once with the left button into the waveform. If the " "waveform has keyboard focus, you can press Escape." #. (itstool) path: info/desc #: C/timestamps.page:6 msgid "Set and go to timestamps" msgstr "Set and go to timestamps" #. (itstool) path: page/title #: C/timestamps.page:14 msgid "Timestamps" msgstr "Timestamps" #. (itstool) path: page/p #: C/timestamps.page:16 msgid "Timestamps help you to navigate in your transcription." msgstr "Timestamps help you to navigate around your transcription." #. (itstool) path: note/p #: C/timestamps.page:19 msgid "" "Timestamps can look like this: #03:45.2#. You can select them with or " "without the number signs." msgstr "" "Timestamps can look like this: #03:45.2#. You can select them with or " "without the number signs." #. (itstool) path: page/p #: C/timestamps.page:22 msgid "" "Parlatype can produce different timestamp formats, they can be " "set in ." msgstr "" "Parlatype can produce different timestamp formats, they can be " "set in ." #. (itstool) path: section/title #: C/timestamps.page:25 msgid "Drag and drop" msgstr "Drag and drop" #. (itstool) path: section/p #: C/timestamps.page:27 msgid "" "If you select the timestamp in the word processor, you can drag and drop it " "on the Parlatype window and it will go to that position. This is " "also possible the other way round: Drag the time label from Parlatype to a word processor and drop it there to insert it." msgstr "" "If you select the timestamp in the word processor, you can drag and drop it " "on the Parlatype window and it will go to that position. This is " "also possible the other way round: Drag the time label from Parlatype to a word processor and drop it there to insert it." #. (itstool) path: section/title #: C/timestamps.page:31 msgid "Using the clipboard" msgstr "Using the clipboard" #. (itstool) path: section/p #: C/timestamps.page:33 msgid "" "Clicking on the menu button that is showing the current time you can " "Copy time to clipboard or Go to time in clipboard." msgstr "" "Clicking on the menu button that is showing the current time you can " "Copy time to clipboard or Go to time in clipboard." #. (itstool) path: section/p #: C/timestamps.page:35 msgid "" "This can also be done with keyboard shortcuts. First make sure, the " "Parlatype window has focus. With the key sequence " "Ctrlc the current timestamp is copied " "to the clipboard. Changing to the word processor you can insert now the " "timestamp in your transcription." msgstr "" "This can also be done with keyboard shortcuts. First make sure, the " "Parlatype window has focus. With the key sequence " "Ctrlc the current timestamp is copied " "to the clipboard. Changing to the word processor you can insert now the " "timestamp in your transcription." #. (itstool) path: section/p #: C/timestamps.page:36 msgid "" "To go to a timestamp position, copy the timestamp in the word processor to " "the clipboard. Once you have changed focus to Parlatype press " "Ctrlv." msgstr "" "To go to a timestamp position, copy the timestamp in the word processor to " "the clipboard. Once you have changed focus to Parlatype, press " "Ctrlv." #. (itstool) path: info/desc #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "Let Parlatype do part of the transcription work" #. (itstool) path: page/title #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "Automatic speech recognition" #. (itstool) path: page/p #: C/asr.page:17 #, fuzzy msgid "" "Parlatype offers automatic speech recognition that is done on " "your computer. No data is sent over the network." msgstr "" "Parlatype offers automatic speech recognition that is done on " "your computer. No data is sent over the network. Keep in mind that automatic " "transcription is far from being perfect, it will always need manual " "corrections." #. (itstool) path: note/p #: C/asr.page:20 msgid "" "Parlatype must have been built with PocketSphinx or " "Mozilla DeepSpeech. Please note that those libraries might be not " "available on your platform." msgstr "" #. (itstool) path: note/p #: C/asr.page:25 msgid "" "Parlatype has no built-in text editor. You need the Parlatype " "Extension for LibreOffice to output recognized text." msgstr "" #. (itstool) path: section/title #: C/asr.page:30 msgid "Start speech recognition" msgstr "Start speech recognition" #. (itstool) path: section/p #: C/asr.page:32 msgid "" "Select a language model in the Preferences Dialog, Speech recognition tab, see for more details." msgstr "" #. (itstool) path: section/p #: C/asr.page:35 msgid "" "Open the primary menu and click on Automatic transcription. This " "is only available, if you have setup and chosen a language model." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr.page:38 #, fuzzy msgctxt "_" msgid "" "external ref='figures/asr-switch-to-asr.png' " "md5='91dc6bffa3b8a3342889d9bfccabc3c8'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: section/p #: C/asr.page:40 #, fuzzy msgid "" "Now press Play in Parlatype and the recognized speech " "will be printed in LibreOffice, if the Parlatype Extension is " "installed. Output is silent because decoding speed is dependent on your " "machine and may be slower or faster than real-time speech." msgstr "" "Now press Play in Parlatype and the recognized speech " "will be printed to that window. Output is silent because the speed is " "dependent on your machine’s power and may be slower or faster than real-time " "speech." #. (itstool) path: section/p #: C/asr.page:45 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." #. (itstool) path: note/p #: C/asr.page:47 #, fuzzy msgid "" "Accuracy depends on many factors like quality of the recording, " "background noise, speaker’s dialect or pronunciation and the speech model " "used. For general transcription you can expect an word error rate between 10 " "and 50 %. Alas this means that in some cases manual transcription from the " "start will be faster than automatic transcription and the following " "correction process." msgstr "" "Accuracy depends on many factors like quality of the recording, " "background noise, speaker’s dialect or pronounciation and the speech model " "used. For general transcription you can expect an word error rate between 10 " "and 50 %. Alas this means that in some case manual transcription from the " "start will be faster than automatic transcription and the following " "correction process." #. (itstool) path: info/desc #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "Setup automatic speech transcription" #. (itstool) path: page/title #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "Setup automatic speech recognition" #. (itstool) path: page/p #: C/asr-setup.page:17 msgid "" "For speech recognition you need a language model: one or more files trained " "with real speech samples. Parlatype supports language models made " "for CMU Sphinx and Mozilla DeepSpeech and ships a couple of language " "model configurations." msgstr "" #. (itstool) path: note/p #: C/asr-setup.page:22 msgid "" "A language model configuration contains meta data describing the " "language model: A name that you can change, the language it was made for, " "speech recognition engine, publisher, license etc. It has a (third party) " "link, where you can download the files. Part of the configuration is the " "base folder, where you have saved the model. Additionally it contains " "various parameters for the plugin which are not shown." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:29 msgid "" "Open the Preferences Dialog and click on the Speech Recognition " "tab. Initially there are no configurations available, click on the Add " "a configuration button." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:33 #, fuzzy msgctxt "_" msgid "" "external ref='figures/asr-setup-initial.png' " "md5='31773b99dcbb1ee84e59e119a0bd35c6'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: media/span #: C/asr-setup.page:36 msgid "download" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:37 msgid "unavailable" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:35 msgid "" "If your installation has CMU Sphinx or Mozilla DeepSpeech enabled, you will " "see configurations with a <_:media-1/> symbol. Otherwise you will see only " "configurations with a <_:media-2/> symbol." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:39 #, fuzzy msgctxt "_" msgid "" "external ref='figures/asr-setup-downloadable.png' " "md5='6e00b08a60952e8f408bec4a024be2e5'" msgstr "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" #. (itstool) path: media/span #: C/asr-setup.page:42 msgid "settings" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:41 msgid "" "Select a configuration and click on the <_:media-1/> button. There is a " "short description of the model and where you can download it. After " "downloading, you have to set the folder where your download resides. You can " "also change the Display name." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:47 #, fuzzy msgctxt "_" msgid "" "external ref='figures/asr-setup-details.png' " "md5='3273410dfb31da8518a64d28af0da7b1'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: media/span #: C/asr-setup.page:50 msgid "selected" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:49 msgid "" "An installed model has no symbol next to it. Double click on the model and " "it will be selected for speech recognition, a <_:media-1/> symbol appears." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:53 msgid "" "Shipped configurations might get obsolete over time. Therefore you can " "import a configuration with the + button. Configurations are text " "files with an .asr ending." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:57 msgid "" "With the - button you can remove a configuration. This will never " "remove downloaded models, only the configuration file." msgstr "" #. (itstool) path: info/desc #: C/media-keys.page:6 msgid "How to control Parlatype with media keys" msgstr "How to control Parlatype with media keys" #. (itstool) path: page/title #: C/media-keys.page:14 msgid "Media keys" msgstr "Media keys" #. (itstool) path: page/p #: C/media-keys.page:16 msgid "" "Parlatype’s basic functions can be controlled with so called " "media keys. Media keys are used system wide to control media " "players and they are working even if the media player is not in focus or in " "the background." msgstr "" "Parlatype’s basic functions can be controlled with so called " "media keys. Media keys are used system wide to control media " "players and they are working even if the media player is not in focus or in " "the background." #. (itstool) path: page/p #: C/media-keys.page:18 msgid "" "You can change the media keys in GNOME settings. You can use dedicated keys " "from a multimedia keyboard or use any other key or combination of keys." msgstr "" "You can change the media keys in GNOME settings. You can use dedicated keys " "from a multimedia keyboard or use any other key or combination of keys." #. (itstool) path: note/p #: C/media-keys.page:21 msgid "" "This will affect other media players, e.g. Totem or " "Rhythmbox, as well." msgstr "" "This will affect other media players, e.g. Totem or " "Rhythmbox, as well." #. (itstool) path: page/p #: C/media-keys.page:24 msgid "Parlatype listens to these key strokes:" msgstr "Parlatype listens to these key strokes:" #. (itstool) path: item/p #: C/media-keys.page:26 msgid "" "Play, Pause, Stop: Each of these keys " "toggles between playing and pause." msgstr "" "Play, Pause, Stop: Each of these keys " "toggles between playing and pause." #. (itstool) path: item/p #: C/media-keys.page:27 msgid "" "Rewind, Previous: Each of these keys will jump back " "the time you selected in Preferences." msgstr "" "Rewind, Previous: Each of these keys will jump back " "the time you selected in Preferences." #. (itstool) path: item/p #: C/media-keys.page:28 msgid "" "Fast Forward, Next: Each of these keys will jump ahead " "the time you selected in Preferences." msgstr "" "Fast Forward, Next: Each of these keys will jump ahead " "the time you selected in Preferences." #. (itstool) path: note/p #: C/media-keys.page:32 msgid "" "For detailed instructions how to change keyboard shortcuts in GNOME see the " "official " "documentation." msgstr "" "For detailed instructions on how to change keyboard shortcuts in GNOME, see " "the official " "documentation." #. (itstool) path: page/p #: C/media-keys.page:35 msgid "" "If you are using a dedicated foot pedal, it should be possible to map the " "foot pedal signals to any of the keys. This is not well tested, however. Any " "feedback regarding foot pedals is welcome." msgstr "" "If you are using a dedicated foot pedal, it should be possible to map the " "foot pedal signals to any of the keys. This is not well tested, however. Any " "feedback regarding foot pedals is welcome." #~ msgid "" #~ "Automatic speech recognition is disabled by default. In order to try it, " #~ "you have run Parlatype with this parameter:" #~ msgstr "" #~ "Automatic speech recognition is disabled by default. In order to try it, " #~ "you have run Parlatype with this parameter:" #~ msgid "" #~ "Open the primary menu and click on Automatic transcription. If " #~ "you don’t have a language model yet, an assistant will guide you in that " #~ "process (see ). Otherwise a dialog will pop up " #~ "asking you to give focus to a word processor. Any word processor with " #~ "support for accessibility should work, like LibreOffice or " #~ "Gedit." #~ msgstr "" #~ "Open the primary menu and click on Automatic transcription. If " #~ "you don’t have a language model yet, an assistant will guide you in that " #~ "process (see ). Otherwise a dialogue will pop " #~ "up asking you to give focus to a word processor. Any word processor with " #~ "support for accessibility should work, like LibreOffice or " #~ "Gedit." #~ msgid "" #~ "If no word processor is recognized you can use an internal textpad as a " #~ "fallback solution. To use that textpad start Parlatype with " #~ "the textpad option: parlatype --textpad." #~ msgstr "" #~ "If no word processor is recognised you can use an internal textpad as a " #~ "fallback solution. To use that textpad start Parlatype with " #~ "the textpad option: parlatype --textpad." #~ msgid "" #~ "Parlatype doesn’t ship the language model needed for speech " #~ "recognition. You will have to download it. There is an assistant that " #~ "guides you through that process." #~ msgstr "" #~ "Parlatype doesn’t ship the language model needed for speech " #~ "recognition. You will have to download it. There is an assistant that " #~ "guides you through that process." #~ msgid "" #~ "The assistant can be started either from the Preferences dialog, tab " #~ "Speech recognition or – if you have no setup yet – from the " #~ "primary menu, Automatic transcription." #~ msgstr "" #~ "The assistant can be started either from the Preferences dialog, tab " #~ "Speech recognition or – if you have no setup yet – from the " #~ "primary menu, Automatic transcription." #~ msgid "" #~ "It asks you to download a speech model. The speech recognition engine " #~ "used is CMU Sphinx. You can download models suitable for CMU Sphinx for " #~ "example from CMU Sphinx’ sourceforge " #~ "repository. It has models for some of the most widespread " #~ "languages." #~ msgstr "" #~ "It asks you to download a speech model. The speech recognition engine " #~ "used is CMU Sphinx. You can download models suitable for CMU Sphinx for " #~ "example from CMU Sphinx’ sourceforge " #~ "repository. It has models for some of the most widespread " #~ "languages." #~ msgid "" #~ "If it’s compressed, uncompress the model. Save it to a folder where it " #~ "can stay. Parlatype doesn’t copy the model internally." #~ msgstr "" #~ "If it’s compressed, uncompress the model. Save it to a folder where it " #~ "can stay. Parlatype doesn’t copy the model internally." #~ msgid "" #~ "Usually the assistant will find all the files needed and you just have to " #~ "give this configuration a name for your own reference. You can have " #~ "several configurations, e.g. for different languages." #~ msgstr "" #~ "Usually the assistant will find all the files needed and you just have to " #~ "give this configuration a name for your own reference. You can have " #~ "several configurations, e.g. for different languages." #~ msgid "" #~ "If the assistant doesn’t find all the components or finds more than " #~ "expected, it will ask you to specify their location or to choose between " #~ "them. The next sections explains those components." #~ msgstr "" #~ "If the assistant doesn’t find all the components or finds more than " #~ "expected, it will ask you to specify their location or to choose between " #~ "them. The next sections explains those components." #~ msgid "Models" #~ msgstr "Models" #~ msgid "" #~ "A model consists of a so called acoustic and language model and a " #~ "dictionary:" #~ msgstr "" #~ "A model consists of a so called acoustic and language model and a " #~ "dictionary:" #~ msgid "Acoustic model" #~ msgstr "Acoustic model" #~ msgid "" #~ "It consists of several files usually in their own folder: feat." #~ "params, mdef, means and some others." #~ msgstr "" #~ "It consists of several files usually in their own folder: feat." #~ "params, mdef, means and some others." #~ msgid "Language model" #~ msgstr "Language model" #~ msgid "" #~ "Parlatype needs a binary language model. That’s a single file " #~ "with the extension .lm.bin. Models can have several language " #~ "models. They have often one for high quality and one for low quality " #~ "recordings. Typical low quality recordings are from telephones with a " #~ "sample rate of 8000 Hz. Those language models have often phone, 8k or similar as part of their file name." #~ msgstr "" #~ "Parlatype needs a binary language model. That’s a single file " #~ "with the extension .lm.bin. Models can have several language " #~ "models. They have often one for high quality and one for low quality " #~ "recordings. Typical low quality recordings are from telephones with a " #~ "sample rate of 8000 Hz. Those language models have often phone, 8k or similar as part of their file name." #~ msgid "Dictionary" #~ msgstr "Dictionary" #~ msgid "" #~ "Dictionaries have the extension .dict or .dic." #~ msgstr "" #~ "Dictionaries have the extension .dict or .dic." #~ msgid "" #~ "All those elements should be somewhere in the folder selected. It doesn’t " #~ "matter whether there are subfolders or how they are named." #~ msgstr "" #~ "All those elements should be somewhere in the folder selected. It doesn’t " #~ "matter whether there are subfolders or how they are named." parlatype-3.0/help/es/000077500000000000000000000000001414030451500147115ustar00rootroot00000000000000parlatype-3.0/help/es/es.po000066400000000000000000001263201414030451500156640ustar00rootroot00000000000000# Spanish translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2021-10-18 21:35+0200\n" "PO-Revision-Date: 2020-05-09 17:02+0000\n" "Last-Translator: Rodrigo Lledó \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" "X-Launchpad-Export-Date: 2020-05-31 16:44+0000\n" "X-Generator: Launchpad (build 275d46a24253e557e4403d52832837e4bfa425b6)\n" #. Put one translator per line, in the form NAME , YEAR1, YEAR2 msgctxt "_" msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Adolfo Jayme https://launchpad.net/~fitojb\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " Jorge Toledo https://launchpad.net/~eldelacajita\n" " Rodrigo Lledó https://launchpad.net/~rodhos-hp" #. (itstool) path: info/title #: C/index.page:7 msgctxt "text" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: info/title #: C/index.page:8 msgctxt "link" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: credit/name #: C/index.page:10 C/drag-and-drop.page:8 C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 C/preferences.page:8 C/selections.page:8 #: C/timestamps.page:8 C/asr.page:9 C/asr-setup.page:9 C/media-keys.page:8 msgid "Gabor Karsay" msgstr "Gabor Karsay" #. (itstool) path: info/desc #. (itstool) path: page/p #: C/index.page:14 C/index.page:23 msgid "" "Parlatype is an easy to use media player. Its main purpose is to " "help you transcribing speech." msgstr "" "Parlatype es un reproductor multimedia sencillo de utilizar. Su " "propósito principal es ayudarle a transcribir el lenguaje hablado." #. (itstool) path: page/title #: C/index.page:18 msgid "<_:media-1/> Parlatype" msgstr "<_:media-1/> Parlatype" #. (itstool) path: page/p #: C/index.page:24 msgid "" "For a quick overview have a look at . Other " "topics are covered below." msgstr "" "Para obtener un panorama general breve, consulte . A continuación se tratan otros temas." #. (itstool) path: section/title #: C/index.page:27 msgid "Help topics" msgstr "Temas de ayuda" #. (itstool) path: info/desc #: C/drag-and-drop.page:6 msgid "Drop files, file names or timestamps on Parlatype" msgstr "" "Arrastre archivos, nombres de archivo o marcas cronológicas en Parlatype" #. (itstool) path: page/title #: C/drag-and-drop.page:14 msgid "Drag and Drop" msgstr "Arrastrar y soltar" #. (itstool) path: page/p #: C/drag-and-drop.page:16 msgid "" "You can drop files, file names or timestamps on Parlatype’s " "window." msgstr "" "Puedes arrastrar archivos, nombres de archivo o marcas de tiempo a la " "ventana de Parlatype." #. (itstool) path: item/p #: C/drag-and-drop.page:19 msgid "" "Files: Drag and drop a file from a file manager, e.g. Files, on " "Parlatype and it will open that file." msgstr "" "Archivos: arrastre y suelte un archivo desde un gestor de archivos, p. ej., " "Nautilus, en Parlatype, y este abrirá el archivo." #. (itstool) path: item/p #: C/drag-and-drop.page:20 msgid "" "File names: Select a file name from a word processor, e.g. LibreOffice, drop the selected text on Parlatype and it will open that " "file. This will always work if the selection contains a full path. If you " "select the name only, Parlatype will look up its full path in the " "list of recent files and open it if it can find it in that list." msgstr "" "Nombres de archivo: seleccione un nombre de archivo en un procesador de " "textos, p. ej., LibreOffice, suelte el texto seleccionado en " "Parlatype y se abrirá el archivo referido. Esto funcionará " "siempre si la selección contiene una ruta de acceso completa. Si selecciona " "solo el nombre, Parlatype localizará su ruta completa en la lista " "de archivos recientes y, si es capaz de encontrarlo, lo abrirá." #. (itstool) path: item/p #: C/drag-and-drop.page:21 msgid "" "Timestamps: You can drag and drop timestamps to Parlatype. Select " "a timestamp from a word processor, e.g. LibreOffice, drop the " "selected text on Parlatype and it will jump to that position." msgstr "" "Marcas de tiempo: Puedes arrastrar y soltar marcas de tiempo (timestamps) a " "Parlatype. Selecciona una marca de tiempo en un procesador de " "textos como LibreOffice, arrastra el texto seleccionado a " "Parlatype, y el reproductor saltará a esa posición." #. (itstool) path: info/desc #. (itstool) path: page/title #: C/first-steps.page:6 C/first-steps.page:14 msgid "First steps with Parlatype" msgstr "Primeros pasos con Parlatype" #. (itstool) path: page/p #: C/first-steps.page:16 msgid "" "Parlatype is an easy to use audio player to help you transcribing " "or annotating recorded speech. You need to run a word processor, e.g. " "LibreOffice, too. Launch Parlatype and open an audio " "file by clicking on the Open button in the upper left corner." msgstr "" "Parlatype es un reproductor de audio sencillo de usar que puede " "ayudarle a transcribir o añadir anotaciones a grabaciones de discursos. " "Necesitará asimismo ejecutar un procesador de textos, p. ej., " "LibreOffice. Inicie Parlatype y abra un archivo de " "audio mediante el botón Abrir que se sitúa en la esquina superior " "izquierda." #. (itstool) path: note/p #: C/first-steps.page:19 msgid "You can also drag and drop a file on Parlatype." msgstr "También puedes arrastrar y soltar un archivo a Parlatype." #. (itstool) path: page/p #: C/first-steps.page:22 msgid "" "In the lower left corner there are the controls with a Play " "button which toggles between play and pause. Whenever you pause, " "Parlatype rewinds a few seconds to make it easier to resume. This " "can be changed in the ." msgstr "" "En la esquina inferior izquierda hay controles con un botón de " "Reproducir que alterna entre reproducción y pausa. Cuando pausas, " "Parlatype rebobina unos pocos segundos para hacer que sea más " "fácil retomar la transcripción. Esto se puede cambiar en las ." #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/first-steps.page:24 msgctxt "_" msgid "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" msgstr "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" #. (itstool) path: page/p #: C/first-steps.page:26 msgid "" "The buttons Jump back and Jump forward in the lower " "left corner skip a few seconds back or ahead. The amount of time can be " "changed in the ." msgstr "" "Los botones Volver atrás y Avanzar en la esquina " "inferior izquierda saltan varios segundos hacia atrás o hacia adelante. La " "cantidad de segundos del salto se puede cambiar en las ." #. (itstool) path: page/p #: C/first-steps.page:28 msgid "" "The view scrolls automatically so that the cursor is always visible. You can " "scroll manually by clicking on or dragging the scroll bar or using the " "standard keybindings. Automatic scrolling is stopped then." msgstr "" "La vista se desplaza automáticamente de modo que el cursor siempre sea " "visible. Puedes desplazarla manualmente haciendo clic y arrastrando la barra " "de desplazamiento o usando los atajos de teclado estándar. En ese caso, el " "desplazamiento automático se detiene." #. (itstool) path: page/p #: C/first-steps.page:30 msgid "" "To get back to the cursor’s position and let the view scroll automatically " "again, click on the menu button showing the time and then on Go to " "cursor. Clicking on the Play button also turns automatic " "scrolling on." msgstr "" "Para volver a la posición del cursor y dejar que la vista vuelva a " "desplazarse automáticamente, haz clic en el botón de la marca de tiempo y a " "continuación en Ir al cursor. Haciendo clic en el botón " "Reproducir también activa el desplazamiento automático." #. (itstool) path: page/p #: C/first-steps.page:32 msgid "" "Clicking in the view with the right mouse button will put the cursor there, " "also holding the right mouse button pressed and moving it. The left mouse " "button is for ." msgstr "" "Hacer clic en la vista del reproductor con el botón derecho del ratón " "situará el cursor en ese punto. También se puede mover el cursor pulsando y " "arrastrando el botón derecho del ratón." #. (itstool) path: page/p #: C/first-steps.page:34 msgid "" "The speed scale next to the volume button in the lower " "right corner lets you adjust the speed of playback. A value of 1 means " "normal speed, everything lower (down to 0.5) is slower, everything above is " "faster." msgstr "" "La escala de velocidad junto al botón de volumen, en " "la esquina inferior derecha, permite ajustar la velocidad de reproducción. " "Un valor de 1 significa velocidad normal. Un valor por debajo (hasta 0.5) es " "más lento, y todo lo que esté por encima es más rápido." #. (itstool) path: info/desc #: C/keyboard-shortcuts.page:6 msgid "Standard keyboard shortcuts in Parlatype" msgstr "Atajos de teclado estándares de Parlatype" #. (itstool) path: page/title #: C/keyboard-shortcuts.page:14 msgid "Keyboard shortcuts" msgstr "Atajos de teclado" #. (itstool) path: page/p #: C/keyboard-shortcuts.page:16 msgid "" "Keyboard shortcuts for Parlatype control, like Play, " "are described in . Shortcut keys for the window are " "listed below." msgstr "" "Los atajos de teclado de Parlatype, que permiten controlar " "acciones como Reproducir, se describen en . Los atajos de teclado para la ventana se enumeran a continuación." #. (itstool) path: table/title #: C/keyboard-shortcuts.page:19 msgid "Standard Shortcut keys" msgstr "Atajos de teclado estándares" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:22 msgid "To Do This" msgstr "Para realizar esto…" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:23 msgid "Press This" msgstr "… Oprima:" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:28 msgid "Show help" msgstr "Mostrar ayuda" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:29 msgid "F1" msgstr "F1" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:32 msgid "Open file" msgstr "Abrir un archivo" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:33 msgid "Ctrlo" msgstr "CtrlO" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:36 msgid "Play/Pause" msgstr "Reproducir/pausar" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:37 msgid "CtrlSpace" msgstr "CtrlEspacio" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:40 msgid "Go to …" msgstr "Ir a…" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:41 msgid "Ctrlg" msgstr "CtrlG" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:44 msgid "Jump back" msgstr "Saltar hacia atrás" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:45 msgid "CtrlLeft" msgstr "CtrlIzquierda" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:48 msgid "Jump forward" msgstr "Saltar hacia delante" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:49 msgid "CtrlRight" msgstr "CtrlDerecha" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:52 msgid "Copy timestamp" msgstr "Copiar la marca cronológica" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:53 msgid "Ctrlc" msgstr "CtrlC" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:56 msgid "Insert timestamp" msgstr "Insertar una marca cronológica" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:57 msgid "Ctrlv" msgstr "CtrlV" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:60 msgid "Zoom in" msgstr "Ampliar" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:61 msgid "Ctrl+" msgstr "Ctrl+" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:64 msgid "Zoom out" msgstr "Reducir" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:65 msgid "Ctrl-" msgstr "Ctrl-" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:68 msgid "Quit" msgstr "Salir" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:69 msgid "Ctrlq" msgstr "CtrlQ" #. (itstool) path: p/link #: C/legal.xml:5 msgid "Creative Commons Attribution-ShareAlike 4.0 International" msgstr "Creative Commons Reconocimiento-Compartir Igual 4.0 Internacional" #. (itstool) path: license/p #: C/legal.xml:4 msgid "This work is licensed under a <_:link-1/> license." msgstr "Esta obra está disponible bajo la licencia <_:link-1/>." #. (itstool) path: info/desc #: C/preferences.page:6 msgid "How to customize Parlatype" msgstr "Cómo personalizar Parlatype" #. (itstool) path: page/title #: C/preferences.page:14 msgid "Preferences" msgstr "Preferencias" #. (itstool) path: page/p #: C/preferences.page:16 msgid "" "To open the preferences dialog click on the primary menu in the headerbar." msgstr "" "Para abrir el cuadro de diálogo de preferencias, haz clic en el menú " "principal en la barra de encabezado." #. (itstool) path: section/title #: C/preferences.page:21 msgid "Preferences for the waveform" msgstr "Preferencias relativas al visor de forma de onda" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:23 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" msgstr "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" #. (itstool) path: item/p #: C/preferences.page:26 msgid "" "Resolution: The resolution of the waveform image is given in pixels per " "second, e.g. the default resolution of 100 means, that one second is shown " "with a width of 100 pixels." msgstr "" "Resolución: La resolución de la forma de onda se da en píxeles por segundo. " "Por ejemplo, la resolución predeterminada de 100 significa que un segundo se " "muestra con una anchura de 100 píxeles." #. (itstool) path: item/p #: C/preferences.page:27 msgid "" "Fixed vs. moving cursor: There are two modes, how to follow the cursor. On " "slower systems a moving cursor might be smoother." msgstr "" "Cursor fijo vs. móvil: Hay dos modos de seguimiento del cursor. En sistemas " "más lentos, es posible que sea más fluido el modo de cursor en movimiento." #. (itstool) path: item/p #: C/preferences.page:28 msgid "Show time scale: Turn the time scale on or off." msgstr "Mostrar escala de tiempo: Muestra u oculta la escala de tiempo." #. (itstool) path: section/title #: C/preferences.page:33 msgid "Preferences for controls" msgstr "Preferencias de controles" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:35 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: item/p #: C/preferences.page:38 msgid "" "Jump back on pause: Parlatype will rewind a few seconds on each " "pause, this way you can easier resume typing. Set this value to 0 if you " "don’t want this behaviour." msgstr "" "Saltar atrás al pausar: Parlatype rebobinará algunos segundos " "cada vez que se pause, haciendo más sencillo retomar la transcripción. Pon " "este valor a 0 si no quieres este comportamiento." #. (itstool) path: item/p #: C/preferences.page:39 msgid "" "Jump back: Configures how many seconds to skip when the Jump back " "button is pressed." msgstr "" "Saltar atrás: Establece cuántos segundos ha de saltar cuando se presiona el " "botón Saltar atrás." #. (itstool) path: item/p #: C/preferences.page:40 msgid "" "Jump forward: Configures how many seconds to skip when the Jump " "forward button is pressed." msgstr "" "Saltar adelante: Establece cuántos segundos ha de saltar cuando se presiona " "el botón Saltar adelante." #. (itstool) path: item/p #: C/preferences.page:41 msgid "" "Pressing Play at the end of file – Replay file: Whether you want " "to repeat the file at the end. If not, it will replay a few seconds like on " "pause." msgstr "" "Pulsar Reproducir al final del archivo – Reproducir archivo: " "indica si quiere repetir el archivo al final. Si no, se reproducirán algunos " "segundos como en pausa." #. (itstool) path: item/p #: C/preferences.page:42 msgid "" "Pressing Play at the end of selection – Replay selection: Whether " "you want to repeat the selection. If not, it will replay a few seconds like " "on pause." msgstr "" "Pulsar Reproducir al final de la selección – Reproducir " "selección: indica si quiere repetir la selección. Si no, se reproducirán " "algunos segundos como en pausa." #. (itstool) path: section/title #: C/preferences.page:47 msgid "Preferences for timestamps" msgstr "Preferencias de marca de tiempo" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:49 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" msgstr "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" #. (itstool) path: section/p #: C/preferences.page:51 msgid "" "These settings affect how Parlatype formats timestamps. If you " "need a certain format in your transcription, you can adjust it here." msgstr "" "Estas configuraciones afectan la manera en que Parlatype da " "formato a las marcas de tiempo. Si necesita un formato determinado en su " "transcripción, puede ajustarlo aquí." #. (itstool) path: note/p #: C/preferences.page:52 msgid "" "There are no settings for reading timestamps. Parlatype " "reads and accepts all of these formats." msgstr "" "Estas no son configuraciones para leer marcas de tiempo. " "Parlatype lee y acepta todos estos formatos." #. (itstool) path: item/p #: C/preferences.page:54 msgid "" "Always show hours and leading zeroes: Whether to show a fixed number of " "digits. Changing any of these values will show an updated example in the " "Example section below." msgstr "" "Mostrar siempre las horas y los ceros principales: indica si se muestra un " "número fijo de dígitos. Al cambiar cualquiera de estos valores se mostrará " "un ejemplo actualizado en la sección Ejemplo de abajo." #. (itstool) path: item/p #: C/preferences.page:55 msgid "Precision: Choose between full seconds, 10th seconds or 100th seconds." msgstr "" "Precisión: Elegir entre segundos completos, décimas o centésimas de segundo." #. (itstool) path: item/p #: C/preferences.page:56 msgid "" "Fraction separator: Choose between a point or a hyphen to separate fractions " "of a second." msgstr "" "Separador de fracciones: Elegir entre punto o guion para separar las " "fracciones de segundo." #. (itstool) path: item/p #: C/preferences.page:57 msgid "" "Characters around timestamps: Choose between number signs, round brackets, " "square brackets or none." msgstr "" "Caracteres alrededor de las marcas de tiempo: Elegir entre signos numéricos, " "llaves, corchetes o ninguno." #. (itstool) path: section/title #: C/preferences.page:62 msgid "Preferences for speech recognition" msgstr "Preferencias de reconocimiento de voz" #. (itstool) path: note/p #: C/preferences.page:65 msgid "" "This tab is only visible, if speech recognition is enabled in Parlatype." msgstr "" "Esta pestaña sólo es visible si el reconocimiento de voz está activado en " "Parlatype." #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:68 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" msgstr "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" #. (itstool) path: section/p #: C/preferences.page:70 msgid "" "Here you can choose which language model to use. If you don’t have a " "language model yet, an assistant will guide you through the process of " "downloading it. You can have as many language models as you need, they can " "be added with the + button." msgstr "" "Aquí puedes elegir qué modelo lingüístico usar. Si no tienes aún ningún " "modelo lingüístico, un asistente te guiará en el proceso de descargarlo. " "Puedes tener tantos modelos lingüísticos como necesites; se pueden añadir " "con el botón +." #. (itstool) path: section/p #: C/preferences.page:72 msgid "" "To select a model click on its radio button in the list. If you click just " "on the name, you can see the model’s basic parameters. You could even change " "them, but that’s not recommended." msgstr "" "Para seleccionar un modelo, haz clic en su botón de selección en la lista. " "Si haces clic solo en el nombre, verás los parámetros básicos del modelo. " "Podrías incluso cambiarlos, pero no es recomendable." #. (itstool) path: section/p #: C/preferences.page:74 msgid "" "The - button removes a model from the list. The model’s files " "however are not deleted, just the model entry is removed." msgstr "" "El botón - elimina el modelo de la lista. Sin embargo, los " "archivos del modelo no se eliminan, sólo desaparece de la lista." #. (itstool) path: section/title #: C/preferences.page:80 msgid "Preferences for the window" msgstr "Preferencias de ventana" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:82 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" msgstr "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" #. (itstool) path: item/p #: C/preferences.page:85 msgid "" "Remember size: On start-up Parlatype sets the window size to the " "size it had the last time." msgstr "" "Recordar tamaño: Al iniciar, Parlatype ajusta el tamaño de la " "ventana al que tenía la última vez." #. (itstool) path: item/p #: C/preferences.page:86 msgid "" "Remember position: On start-up Parlatype can position its window " "where you had it when you closed Parlatype last time." msgstr "" "Recordar posición: Al iniciar, Parlatype puede situar la ventana " "donde la tenías cuando cerraste Parlatype la última vez." #. (itstool) path: item/p #: C/preferences.page:87 msgid "" "Start on top: This will put Parlatype on start-up on top of other " "windows. This might be useful if you are working with a maximized word " "processor and still want to see the Parlatype window." msgstr "" "Iniciar encima: Situará Parlatype encima del resto de ventanas al " "iniciar. Esto puede ser útil si estás trabajando en un procesador de textos " "maximizado y quieres seguir viendo la ventana de Parlatype." #. (itstool) path: note/p #: C/preferences.page:91 msgid "" "Remember position and Start on top are not available " "on Wayland." msgstr "" "Recordar posición e Iniciar encima no están " "disponibles en Wayland." #. (itstool) path: info/desc #: C/selections.page:6 msgid "How to play and repeat a selection" msgstr "Cómo reproducir y repetir una selección" #. (itstool) path: page/title #: C/selections.page:14 msgid "Selections" msgstr "Selecciones" #. (itstool) path: page/p #: C/selections.page:16 msgid "" "You can select a piece of the waveform with the mouse. Next time you press " "Play, it will play the selection only. When it is finished and " "you press Play again, it will loop the selection once." msgstr "" "Puedes seleccionar una parte de la forma de onda con el ratón. La siguiente " "vez que pulses Reproducir, reproducirá solamente la selección. " "Cuando termine, si pulsas Reproducir de nuevo, repetirá la " "selección una vez más." #. (itstool) path: note/p #: C/selections.page:18 msgid "" "When in selection mode, you can not exit the selection anymore until you " "deselect it." msgstr "" "Estando en modo de selección, no puedes salir de la selección a menos que la " "deselecciones." #. (itstool) path: page/p #: C/selections.page:20 msgid "" "Selections can be made with the mouse (or pointer device) with a left click, " "holding the mouse button and dragging the pointer. If you click with " "Shift key pressed, an already existing selection will be enlarged " "to that point." msgstr "" "Se pueden hacer selecciones con el ratón (o dispositivo de puntero) con el " "botón izquierdo del ratón, manteniendo el botón y arrastrando el puntero. Si " "pulsa mientras mantiene la tecla Mayús pulsada, se agrandará la " "sección existente hasta ese punto." #. (itstool) path: page/p #: C/selections.page:22 msgid "" "To deselect click once with the left button into the waveform. If the " "waveform has keyboard focus, you can press Escape." msgstr "" "Para deseleccionar pulse una vez con el botón izquierdo en la forma de onda. " "Si la forma de onda está ligada al teclado, puede pulsar Escapar." #. (itstool) path: info/desc #: C/timestamps.page:6 msgid "Set and go to timestamps" msgstr "Establecer y desplazarse a marcas cronológicas" #. (itstool) path: page/title #: C/timestamps.page:14 msgid "Timestamps" msgstr "Marcas cronológicas" #. (itstool) path: page/p #: C/timestamps.page:16 msgid "Timestamps help you to navigate in your transcription." msgstr "Las marcas cronológicas le ayudar a navegar por la transcripción." #. (itstool) path: note/p #: C/timestamps.page:19 msgid "" "Timestamps can look like this: #03:45.2#. You can select them with or " "without the number signs." msgstr "" "Las marcas de tiempo tienen la forma: #03:45.2#. Puede seleccionarlas con o " "sin los signos numéricos." #. (itstool) path: page/p #: C/timestamps.page:22 msgid "" "Parlatype can produce different timestamp formats, they can be " "set in ." msgstr "" "Parlatype puede producir diferentes formatos de marcas de tiempo, " "se pueden establecer en ." #. (itstool) path: section/title #: C/timestamps.page:25 msgid "Drag and drop" msgstr "Arrastrar y soltar" #. (itstool) path: section/p #: C/timestamps.page:27 msgid "" "If you select the timestamp in the word processor, you can drag and drop it " "on the Parlatype window and it will go to that position. This is " "also possible the other way round: Drag the time label from Parlatype to a word processor and drop it there to insert it." msgstr "" "Si selecciona la marca de tiempo en el procesador de texto, puede arrastrar " "y soltar en la ventana de Parlatype e irá a esa posición. Esto " "también es posible de la manera opuesta: arrastrar la etiqueta de tiempo " "desde Parlatype a un procesador de texto y soltarla ahí para " "insertarla." #. (itstool) path: section/title #: C/timestamps.page:31 msgid "Using the clipboard" msgstr "Uso del portapapeles" #. (itstool) path: section/p #: C/timestamps.page:33 msgid "" "Clicking on the menu button that is showing the current time you can " "Copy time to clipboard or Go to time in clipboard." msgstr "" "Al pulsar en el botón de menú que muestra el tiempo actual puede Copiar " "el tiempo al portapapeles o Ir al tiempo del portapapeles." #. (itstool) path: section/p #: C/timestamps.page:35 msgid "" "This can also be done with keyboard shortcuts. First make sure, the " "Parlatype window has focus. With the key sequence " "Ctrlc the current timestamp is copied " "to the clipboard. Changing to the word processor you can insert now the " "timestamp in your transcription." msgstr "" "Esto también se puede realizar mediante atajos de teclado. Primero asegúrese " "de que la ventana de Parlatype está activa. Usando la combinación " "de teclas Ctrlc se copia la marca de " "tiempo actual al portapapeles. Si cambia al procesador de texto puede " "insertar la marca de tiempo en su transcripción." #. (itstool) path: section/p #: C/timestamps.page:36 msgid "" "To go to a timestamp position, copy the timestamp in the word processor to " "the clipboard. Once you have changed focus to Parlatype press " "Ctrlv." msgstr "" "Para ir a la posición de una marca de tiempo, copie la marca de tiempo en el " "procesador de texto al portapapeles. Después de cambiar la ventana activa a " "Parlatype presione Ctrlv." #. (itstool) path: info/desc #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "Dejar a Parlatype hacer parte del trabajo de transcripción" #. (itstool) path: page/title #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "Reconocimiento automático de voz" #. (itstool) path: page/p #: C/asr.page:17 msgid "" "Parlatype offers automatic speech recognition that is done on " "your computer. No data is sent over the network." msgstr "" #. (itstool) path: note/p #: C/asr.page:20 msgid "" "Parlatype must have been built with PocketSphinx or " "Mozilla DeepSpeech. Please note that those libraries might be not " "available on your platform." msgstr "" #. (itstool) path: note/p #: C/asr.page:25 msgid "" "Parlatype has no built-in text editor. You need the Parlatype " "Extension for LibreOffice to output recognized text." msgstr "" #. (itstool) path: section/title #: C/asr.page:30 msgid "Start speech recognition" msgstr "Iniciar reconocimiento de voz" #. (itstool) path: section/p #: C/asr.page:32 msgid "" "Select a language model in the Preferences Dialog, Speech recognition tab, see for more details." msgstr "" #. (itstool) path: section/p #: C/asr.page:35 msgid "" "Open the primary menu and click on Automatic transcription. This " "is only available, if you have setup and chosen a language model." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr.page:38 #, fuzzy msgctxt "_" msgid "" "external ref='figures/asr-switch-to-asr.png' " "md5='91dc6bffa3b8a3342889d9bfccabc3c8'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: section/p #: C/asr.page:40 msgid "" "Now press Play in Parlatype and the recognized speech " "will be printed in LibreOffice, if the Parlatype Extension is " "installed. Output is silent because decoding speed is dependent on your " "machine and may be slower or faster than real-time speech." msgstr "" #. (itstool) path: section/p #: C/asr.page:45 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #: C/asr.page:47 msgid "" "Accuracy depends on many factors like quality of the recording, " "background noise, speaker’s dialect or pronunciation and the speech model " "used. For general transcription you can expect an word error rate between 10 " "and 50 %. Alas this means that in some cases manual transcription from the " "start will be faster than automatic transcription and the following " "correction process." msgstr "" #. (itstool) path: info/desc #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "Configurar el reconocimiento de voz automático" #. (itstool) path: page/p #: C/asr-setup.page:17 msgid "" "For speech recognition you need a language model: one or more files trained " "with real speech samples. Parlatype supports language models made " "for CMU Sphinx and Mozilla DeepSpeech and ships a couple of language " "model configurations." msgstr "" #. (itstool) path: note/p #: C/asr-setup.page:22 msgid "" "A language model configuration contains meta data describing the " "language model: A name that you can change, the language it was made for, " "speech recognition engine, publisher, license etc. It has a (third party) " "link, where you can download the files. Part of the configuration is the " "base folder, where you have saved the model. Additionally it contains " "various parameters for the plugin which are not shown." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:29 msgid "" "Open the Preferences Dialog and click on the Speech Recognition " "tab. Initially there are no configurations available, click on the Add " "a configuration button." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:33 #, fuzzy msgctxt "_" msgid "" "external ref='figures/asr-setup-initial.png' " "md5='31773b99dcbb1ee84e59e119a0bd35c6'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: media/span #: C/asr-setup.page:36 msgid "download" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:37 msgid "unavailable" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:35 msgid "" "If your installation has CMU Sphinx or Mozilla DeepSpeech enabled, you will " "see configurations with a <_:media-1/> symbol. Otherwise you will see only " "configurations with a <_:media-2/> symbol." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:39 #, fuzzy msgctxt "_" msgid "" "external ref='figures/asr-setup-downloadable.png' " "md5='6e00b08a60952e8f408bec4a024be2e5'" msgstr "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" #. (itstool) path: media/span #: C/asr-setup.page:42 msgid "settings" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:41 msgid "" "Select a configuration and click on the <_:media-1/> button. There is a " "short description of the model and where you can download it. After " "downloading, you have to set the folder where your download resides. You can " "also change the Display name." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:47 #, fuzzy msgctxt "_" msgid "" "external ref='figures/asr-setup-details.png' " "md5='3273410dfb31da8518a64d28af0da7b1'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: media/span #: C/asr-setup.page:50 msgid "selected" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:49 msgid "" "An installed model has no symbol next to it. Double click on the model and " "it will be selected for speech recognition, a <_:media-1/> symbol appears." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:53 msgid "" "Shipped configurations might get obsolete over time. Therefore you can " "import a configuration with the + button. Configurations are text " "files with an .asr ending." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:57 msgid "" "With the - button you can remove a configuration. This will never " "remove downloaded models, only the configuration file." msgstr "" #. (itstool) path: info/desc #: C/media-keys.page:6 msgid "How to control Parlatype with media keys" msgstr "Cómo controlar Parlatype con las teclas multimedia" #. (itstool) path: page/title #: C/media-keys.page:14 msgid "Media keys" msgstr "Teclas multimedia" #. (itstool) path: page/p #: C/media-keys.page:16 msgid "" "Parlatype’s basic functions can be controlled with so called " "media keys. Media keys are used system wide to control media " "players and they are working even if the media player is not in focus or in " "the background." msgstr "" "Las funciones básicas de Parlatype se pueden controlar con las " "llamadas teclas multimedia. Las teclas multimedia se usan en todo " "el sistema para controlar los reproductores multimedia y funcionan incluso " "aunque el reproductor no esté en foco o en el fondo." #. (itstool) path: page/p #: C/media-keys.page:18 msgid "" "You can change the media keys in GNOME settings. You can use dedicated keys " "from a multimedia keyboard or use any other key or combination of keys." msgstr "" "Es posible modificar las teclas multimedia en la configuración de GNOME. " "Puede emplear las teclas especializadas de un teclado multimedia, o bien, " "utilizar cualquier otra tecla o combinación de teclas." #. (itstool) path: note/p #: C/media-keys.page:21 msgid "" "This will affect other media players, e.g. Totem or " "Rhythmbox, as well." msgstr "" "Ello también afectará otros reproductores de multimedia, como Totem o Rhythmbox." #. (itstool) path: page/p #: C/media-keys.page:24 msgid "Parlatype listens to these key strokes:" msgstr "Parlatype reacciona a estas teclas:" #. (itstool) path: item/p #: C/media-keys.page:26 msgid "" "Play, Pause, Stop: Each of these keys " "toggles between playing and pause." msgstr "" "Reproducir, Pausar, Detener: Cada una de " "estas teclas alterna entre la reproducción y la pausa." #. (itstool) path: item/p #: C/media-keys.page:27 msgid "" "Rewind, Previous: Each of these keys will jump back " "the time you selected in Preferences." msgstr "" "Rebobinar, Anterior: Cada una de estas teclas saltará " "hacia atrás el tiempo que hayas seleccionado en Preferencias." #. (itstool) path: item/p #: C/media-keys.page:28 msgid "" "Fast Forward, Next: Each of these keys will jump ahead " "the time you selected in Preferences." msgstr "" "Avanzar, Siguiente: Cada una de estas teclas saltará " "hacia adelante el tiempo que hayas seleccionado en Preferencias." #. (itstool) path: note/p #: C/media-keys.page:32 msgid "" "For detailed instructions how to change keyboard shortcuts in GNOME see the " "official " "documentation." msgstr "" "Para obtener instrucciones detalladas sobre cómo modificar los atajos de " "teclado de GNOME, consulte la documentación oficial." #. (itstool) path: page/p #: C/media-keys.page:35 msgid "" "If you are using a dedicated foot pedal, it should be possible to map the " "foot pedal signals to any of the keys. This is not well tested, however. Any " "feedback regarding foot pedals is welcome." msgstr "" "Si estás usando un pedal dedicado, debería ser posible mapear las señales " "del pedal a cualquiera de esas teclas. Sin embargo, esto no se ha probado " "exhaustivamente. Cualquier feedback sobre el uso de pedales será bienvenido." #~ msgid "" #~ "If it’s compressed, uncompress the model. Save it to a folder where it " #~ "can stay. Parlatype doesn’t copy the model internally." #~ msgstr "" #~ "Si está comprimido, descomprima el modelo. Guárdelo en una carpeta donde " #~ "pueda permanecer. Parlatype no copia el modelo internamente." #~ msgid "Models" #~ msgstr "Modelos" #~ msgid "Acoustic model" #~ msgstr "Modelo acústico" #~ msgid "Language model" #~ msgstr "Modelo lingüístico" #~ msgid "Dictionary" #~ msgstr "Diccionario" #~ msgid "" #~ "Dictionaries have the extension .dict or .dic." #~ msgstr "" #~ "Los diccionarios tienen la extensión .dict o .dic." parlatype-3.0/help/fi/000077500000000000000000000000001414030451500147005ustar00rootroot00000000000000parlatype-3.0/help/fi/fi.po000066400000000000000000000733541414030451500156520ustar00rootroot00000000000000# Finnish translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2021-10-18 21:35+0200\n" "PO-Revision-Date: 2020-03-09 16:30+0000\n" "Last-Translator: Gabor Karsay \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" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #. Put one translator per line, in the form NAME , YEAR1, YEAR2 msgctxt "_" msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " Jiri Grönroos https://launchpad.net/~jiri-gronroos" #. (itstool) path: info/title #: C/index.page:7 msgctxt "text" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: info/title #: C/index.page:8 msgctxt "link" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: credit/name #: C/index.page:10 C/drag-and-drop.page:8 C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 C/preferences.page:8 C/selections.page:8 #: C/timestamps.page:8 C/asr.page:9 C/asr-setup.page:9 C/media-keys.page:8 msgid "Gabor Karsay" msgstr "Gabor Karsay" #. (itstool) path: info/desc #. (itstool) path: page/p #: C/index.page:14 C/index.page:23 msgid "" "Parlatype is an easy to use media player. Its main purpose is to " "help you transcribing speech." msgstr "" #. (itstool) path: page/title #: C/index.page:18 msgid "<_:media-1/> Parlatype" msgstr "" #. (itstool) path: page/p #: C/index.page:24 msgid "" "For a quick overview have a look at . Other " "topics are covered below." msgstr "" #. (itstool) path: section/title #: C/index.page:27 msgid "Help topics" msgstr "Ohjeen aihealueet" #. (itstool) path: info/desc #: C/drag-and-drop.page:6 msgid "Drop files, file names or timestamps on Parlatype" msgstr "" #. (itstool) path: page/title #: C/drag-and-drop.page:14 msgid "Drag and Drop" msgstr "Vedä ja pudota" #. (itstool) path: page/p #: C/drag-and-drop.page:16 msgid "" "You can drop files, file names or timestamps on Parlatype’s " "window." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:19 msgid "" "Files: Drag and drop a file from a file manager, e.g. Files, on " "Parlatype and it will open that file." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:20 msgid "" "File names: Select a file name from a word processor, e.g. LibreOffice, drop the selected text on Parlatype and it will open that " "file. This will always work if the selection contains a full path. If you " "select the name only, Parlatype will look up its full path in the " "list of recent files and open it if it can find it in that list." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:21 msgid "" "Timestamps: You can drag and drop timestamps to Parlatype. Select " "a timestamp from a word processor, e.g. LibreOffice, drop the " "selected text on Parlatype and it will jump to that position." msgstr "" #. (itstool) path: info/desc #. (itstool) path: page/title #: C/first-steps.page:6 C/first-steps.page:14 msgid "First steps with Parlatype" msgstr "" #. (itstool) path: page/p #: C/first-steps.page:16 msgid "" "Parlatype is an easy to use audio player to help you transcribing " "or annotating recorded speech. You need to run a word processor, e.g. " "LibreOffice, too. Launch Parlatype and open an audio " "file by clicking on the Open button in the upper left corner." msgstr "" #. (itstool) path: note/p #: C/first-steps.page:19 msgid "You can also drag and drop a file on Parlatype." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:22 msgid "" "In the lower left corner there are the controls with a Play " "button which toggles between play and pause. Whenever you pause, " "Parlatype rewinds a few seconds to make it easier to resume. This " "can be changed in the ." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/first-steps.page:24 msgctxt "_" msgid "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" msgstr "" #. (itstool) path: page/p #: C/first-steps.page:26 msgid "" "The buttons Jump back and Jump forward in the lower " "left corner skip a few seconds back or ahead. The amount of time can be " "changed in the ." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:28 msgid "" "The view scrolls automatically so that the cursor is always visible. You can " "scroll manually by clicking on or dragging the scroll bar or using the " "standard keybindings. Automatic scrolling is stopped then." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:30 msgid "" "To get back to the cursor’s position and let the view scroll automatically " "again, click on the menu button showing the time and then on Go to " "cursor. Clicking on the Play button also turns automatic " "scrolling on." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:32 msgid "" "Clicking in the view with the right mouse button will put the cursor there, " "also holding the right mouse button pressed and moving it. The left mouse " "button is for ." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:34 msgid "" "The speed scale next to the volume button in the lower " "right corner lets you adjust the speed of playback. A value of 1 means " "normal speed, everything lower (down to 0.5) is slower, everything above is " "faster." msgstr "" #. (itstool) path: info/desc #: C/keyboard-shortcuts.page:6 msgid "Standard keyboard shortcuts in Parlatype" msgstr "" #. (itstool) path: page/title #: C/keyboard-shortcuts.page:14 msgid "Keyboard shortcuts" msgstr "Pikanäppäimet" #. (itstool) path: page/p #: C/keyboard-shortcuts.page:16 msgid "" "Keyboard shortcuts for Parlatype control, like Play, " "are described in . Shortcut keys for the window are " "listed below." msgstr "" #. (itstool) path: table/title #: C/keyboard-shortcuts.page:19 msgid "Standard Shortcut keys" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:22 msgid "To Do This" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:23 msgid "Press This" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:28 msgid "Show help" msgstr "Näytä ohje" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:29 msgid "F1" msgstr "F1" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:32 msgid "Open file" msgstr "Avaa tiedosto" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:33 msgid "Ctrlo" msgstr "Ctrlo" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:36 msgid "Play/Pause" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:37 msgid "CtrlSpace" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:40 msgid "Go to …" msgstr "Siirry…" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:41 msgid "Ctrlg" msgstr "Ctrlg" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:44 msgid "Jump back" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:45 msgid "CtrlLeft" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:48 msgid "Jump forward" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:49 msgid "CtrlRight" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:52 msgid "Copy timestamp" msgstr "Kopioi aikaleima" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:53 msgid "Ctrlc" msgstr "Ctrlc" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:56 msgid "Insert timestamp" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:57 msgid "Ctrlv" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:60 msgid "Zoom in" msgstr "Lähennä" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:61 msgid "Ctrl+" msgstr "Ctrl+" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:64 msgid "Zoom out" msgstr "Loitonna" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:65 msgid "Ctrl-" msgstr "Ctrl-" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:68 msgid "Quit" msgstr "Lopeta" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:69 msgid "Ctrlq" msgstr "Ctrlq" #. (itstool) path: p/link #: C/legal.xml:5 msgid "Creative Commons Attribution-ShareAlike 4.0 International" msgstr "" #. (itstool) path: license/p #: C/legal.xml:4 msgid "This work is licensed under a <_:link-1/> license." msgstr "" #. (itstool) path: info/desc #: C/preferences.page:6 msgid "How to customize Parlatype" msgstr "Parlatypen mukauttaminen" #. (itstool) path: page/title #: C/preferences.page:14 msgid "Preferences" msgstr "Asetukset" #. (itstool) path: page/p #: C/preferences.page:16 msgid "" "To open the preferences dialog click on the primary menu in the headerbar." msgstr "" #. (itstool) path: section/title #: C/preferences.page:21 msgid "Preferences for the waveform" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:23 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:26 msgid "" "Resolution: The resolution of the waveform image is given in pixels per " "second, e.g. the default resolution of 100 means, that one second is shown " "with a width of 100 pixels." msgstr "" #. (itstool) path: item/p #: C/preferences.page:27 msgid "" "Fixed vs. moving cursor: There are two modes, how to follow the cursor. On " "slower systems a moving cursor might be smoother." msgstr "" #. (itstool) path: item/p #: C/preferences.page:28 msgid "Show time scale: Turn the time scale on or off." msgstr "" #. (itstool) path: section/title #: C/preferences.page:33 msgid "Preferences for controls" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:35 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:38 msgid "" "Jump back on pause: Parlatype will rewind a few seconds on each " "pause, this way you can easier resume typing. Set this value to 0 if you " "don’t want this behaviour." msgstr "" #. (itstool) path: item/p #: C/preferences.page:39 msgid "" "Jump back: Configures how many seconds to skip when the Jump back " "button is pressed." msgstr "" #. (itstool) path: item/p #: C/preferences.page:40 msgid "" "Jump forward: Configures how many seconds to skip when the Jump " "forward button is pressed." msgstr "" #. (itstool) path: item/p #: C/preferences.page:41 msgid "" "Pressing Play at the end of file – Replay file: Whether you want " "to repeat the file at the end. If not, it will replay a few seconds like on " "pause." msgstr "" #. (itstool) path: item/p #: C/preferences.page:42 msgid "" "Pressing Play at the end of selection – Replay selection: Whether " "you want to repeat the selection. If not, it will replay a few seconds like " "on pause." msgstr "" #. (itstool) path: section/title #: C/preferences.page:47 msgid "Preferences for timestamps" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:49 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" msgstr "" #. (itstool) path: section/p #: C/preferences.page:51 msgid "" "These settings affect how Parlatype formats timestamps. If you " "need a certain format in your transcription, you can adjust it here." msgstr "" #. (itstool) path: note/p #: C/preferences.page:52 msgid "" "There are no settings for reading timestamps. Parlatype " "reads and accepts all of these formats." msgstr "" #. (itstool) path: item/p #: C/preferences.page:54 msgid "" "Always show hours and leading zeroes: Whether to show a fixed number of " "digits. Changing any of these values will show an updated example in the " "Example section below." msgstr "" #. (itstool) path: item/p #: C/preferences.page:55 msgid "Precision: Choose between full seconds, 10th seconds or 100th seconds." msgstr "" #. (itstool) path: item/p #: C/preferences.page:56 msgid "" "Fraction separator: Choose between a point or a hyphen to separate fractions " "of a second." msgstr "" #. (itstool) path: item/p #: C/preferences.page:57 msgid "" "Characters around timestamps: Choose between number signs, round brackets, " "square brackets or none." msgstr "" #. (itstool) path: section/title #: C/preferences.page:62 msgid "Preferences for speech recognition" msgstr "" #. (itstool) path: note/p #: C/preferences.page:65 msgid "" "This tab is only visible, if speech recognition is enabled in Parlatype." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:68 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" msgstr "" #. (itstool) path: section/p #: C/preferences.page:70 msgid "" "Here you can choose which language model to use. If you don’t have a " "language model yet, an assistant will guide you through the process of " "downloading it. You can have as many language models as you need, they can " "be added with the + button." msgstr "" #. (itstool) path: section/p #: C/preferences.page:72 msgid "" "To select a model click on its radio button in the list. If you click just " "on the name, you can see the model’s basic parameters. You could even change " "them, but that’s not recommended." msgstr "" #. (itstool) path: section/p #: C/preferences.page:74 msgid "" "The - button removes a model from the list. The model’s files " "however are not deleted, just the model entry is removed." msgstr "" #. (itstool) path: section/title #: C/preferences.page:80 msgid "Preferences for the window" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:82 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:85 msgid "" "Remember size: On start-up Parlatype sets the window size to the " "size it had the last time." msgstr "" #. (itstool) path: item/p #: C/preferences.page:86 msgid "" "Remember position: On start-up Parlatype can position its window " "where you had it when you closed Parlatype last time." msgstr "" #. (itstool) path: item/p #: C/preferences.page:87 msgid "" "Start on top: This will put Parlatype on start-up on top of other " "windows. This might be useful if you are working with a maximized word " "processor and still want to see the Parlatype window." msgstr "" #. (itstool) path: note/p #: C/preferences.page:91 msgid "" "Remember position and Start on top are not available " "on Wayland." msgstr "" #. (itstool) path: info/desc #: C/selections.page:6 msgid "How to play and repeat a selection" msgstr "" #. (itstool) path: page/title #: C/selections.page:14 msgid "Selections" msgstr "Valinnat" #. (itstool) path: page/p #: C/selections.page:16 msgid "" "You can select a piece of the waveform with the mouse. Next time you press " "Play, it will play the selection only. When it is finished and " "you press Play again, it will loop the selection once." msgstr "" #. (itstool) path: note/p #: C/selections.page:18 msgid "" "When in selection mode, you can not exit the selection anymore until you " "deselect it." msgstr "" #. (itstool) path: page/p #: C/selections.page:20 msgid "" "Selections can be made with the mouse (or pointer device) with a left click, " "holding the mouse button and dragging the pointer. If you click with " "Shift key pressed, an already existing selection will be enlarged " "to that point." msgstr "" #. (itstool) path: page/p #: C/selections.page:22 msgid "" "To deselect click once with the left button into the waveform. If the " "waveform has keyboard focus, you can press Escape." msgstr "" #. (itstool) path: info/desc #: C/timestamps.page:6 msgid "Set and go to timestamps" msgstr "" #. (itstool) path: page/title #: C/timestamps.page:14 msgid "Timestamps" msgstr "Aikaleimat" #. (itstool) path: page/p #: C/timestamps.page:16 msgid "Timestamps help you to navigate in your transcription." msgstr "" #. (itstool) path: note/p #: C/timestamps.page:19 msgid "" "Timestamps can look like this: #03:45.2#. You can select them with or " "without the number signs." msgstr "" #. (itstool) path: page/p #: C/timestamps.page:22 msgid "" "Parlatype can produce different timestamp formats, they can be " "set in ." msgstr "" #. (itstool) path: section/title #: C/timestamps.page:25 msgid "Drag and drop" msgstr "Vedä ja pudota" #. (itstool) path: section/p #: C/timestamps.page:27 msgid "" "If you select the timestamp in the word processor, you can drag and drop it " "on the Parlatype window and it will go to that position. This is " "also possible the other way round: Drag the time label from Parlatype to a word processor and drop it there to insert it." msgstr "" #. (itstool) path: section/title #: C/timestamps.page:31 msgid "Using the clipboard" msgstr "Leikepöydän käyttäminen" #. (itstool) path: section/p #: C/timestamps.page:33 msgid "" "Clicking on the menu button that is showing the current time you can " "Copy time to clipboard or Go to time in clipboard." msgstr "" #. (itstool) path: section/p #: C/timestamps.page:35 msgid "" "This can also be done with keyboard shortcuts. First make sure, the " "Parlatype window has focus. With the key sequence " "Ctrlc the current timestamp is copied " "to the clipboard. Changing to the word processor you can insert now the " "timestamp in your transcription." msgstr "" #. (itstool) path: section/p #: C/timestamps.page:36 msgid "" "To go to a timestamp position, copy the timestamp in the word processor to " "the clipboard. Once you have changed focus to Parlatype press " "Ctrlv." msgstr "" #. (itstool) path: info/desc #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "" #. (itstool) path: page/title #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "" #. (itstool) path: page/p #: C/asr.page:17 msgid "" "Parlatype offers automatic speech recognition that is done on " "your computer. No data is sent over the network." msgstr "" #. (itstool) path: note/p #: C/asr.page:20 msgid "" "Parlatype must have been built with PocketSphinx or " "Mozilla DeepSpeech. Please note that those libraries might be not " "available on your platform." msgstr "" #. (itstool) path: note/p #: C/asr.page:25 msgid "" "Parlatype has no built-in text editor. You need the Parlatype " "Extension for LibreOffice to output recognized text." msgstr "" #. (itstool) path: section/title #: C/asr.page:30 msgid "Start speech recognition" msgstr "" #. (itstool) path: section/p #: C/asr.page:32 msgid "" "Select a language model in the Preferences Dialog, Speech recognition tab, see for more details." msgstr "" #. (itstool) path: section/p #: C/asr.page:35 msgid "" "Open the primary menu and click on Automatic transcription. This " "is only available, if you have setup and chosen a language model." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr.page:38 msgctxt "_" msgid "" "external ref='figures/asr-switch-to-asr.png' " "md5='91dc6bffa3b8a3342889d9bfccabc3c8'" msgstr "" #. (itstool) path: section/p #: C/asr.page:40 msgid "" "Now press Play in Parlatype and the recognized speech " "will be printed in LibreOffice, if the Parlatype Extension is " "installed. Output is silent because decoding speed is dependent on your " "machine and may be slower or faster than real-time speech." msgstr "" #. (itstool) path: section/p #: C/asr.page:45 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #: C/asr.page:47 msgid "" "Accuracy depends on many factors like quality of the recording, " "background noise, speaker’s dialect or pronunciation and the speech model " "used. For general transcription you can expect an word error rate between 10 " "and 50 %. Alas this means that in some cases manual transcription from the " "start will be faster than automatic transcription and the following " "correction process." msgstr "" #. (itstool) path: info/desc #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:17 msgid "" "For speech recognition you need a language model: one or more files trained " "with real speech samples. Parlatype supports language models made " "for CMU Sphinx and Mozilla DeepSpeech and ships a couple of language " "model configurations." msgstr "" #. (itstool) path: note/p #: C/asr-setup.page:22 msgid "" "A language model configuration contains meta data describing the " "language model: A name that you can change, the language it was made for, " "speech recognition engine, publisher, license etc. It has a (third party) " "link, where you can download the files. Part of the configuration is the " "base folder, where you have saved the model. Additionally it contains " "various parameters for the plugin which are not shown." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:29 msgid "" "Open the Preferences Dialog and click on the Speech Recognition " "tab. Initially there are no configurations available, click on the Add " "a configuration button." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:33 msgctxt "_" msgid "" "external ref='figures/asr-setup-initial.png' " "md5='31773b99dcbb1ee84e59e119a0bd35c6'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:36 msgid "download" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:37 msgid "unavailable" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:35 msgid "" "If your installation has CMU Sphinx or Mozilla DeepSpeech enabled, you will " "see configurations with a <_:media-1/> symbol. Otherwise you will see only " "configurations with a <_:media-2/> symbol." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:39 msgctxt "_" msgid "" "external ref='figures/asr-setup-downloadable.png' " "md5='6e00b08a60952e8f408bec4a024be2e5'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:42 msgid "settings" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:41 msgid "" "Select a configuration and click on the <_:media-1/> button. There is a " "short description of the model and where you can download it. After " "downloading, you have to set the folder where your download resides. You can " "also change the Display name." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:47 msgctxt "_" msgid "" "external ref='figures/asr-setup-details.png' " "md5='3273410dfb31da8518a64d28af0da7b1'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:50 msgid "selected" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:49 msgid "" "An installed model has no symbol next to it. Double click on the model and " "it will be selected for speech recognition, a <_:media-1/> symbol appears." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:53 msgid "" "Shipped configurations might get obsolete over time. Therefore you can " "import a configuration with the + button. Configurations are text " "files with an .asr ending." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:57 msgid "" "With the - button you can remove a configuration. This will never " "remove downloaded models, only the configuration file." msgstr "" #. (itstool) path: info/desc #: C/media-keys.page:6 msgid "How to control Parlatype with media keys" msgstr "" #. (itstool) path: page/title #: C/media-keys.page:14 msgid "Media keys" msgstr "Medianäppäimet" #. (itstool) path: page/p #: C/media-keys.page:16 msgid "" "Parlatype’s basic functions can be controlled with so called " "media keys. Media keys are used system wide to control media " "players and they are working even if the media player is not in focus or in " "the background." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:18 msgid "" "You can change the media keys in GNOME settings. You can use dedicated keys " "from a multimedia keyboard or use any other key or combination of keys." msgstr "" #. (itstool) path: note/p #: C/media-keys.page:21 msgid "" "This will affect other media players, e.g. Totem or " "Rhythmbox, as well." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:24 msgid "Parlatype listens to these key strokes:" msgstr "" #. (itstool) path: item/p #: C/media-keys.page:26 msgid "" "Play, Pause, Stop: Each of these keys " "toggles between playing and pause." msgstr "" #. (itstool) path: item/p #: C/media-keys.page:27 msgid "" "Rewind, Previous: Each of these keys will jump back " "the time you selected in Preferences." msgstr "" #. (itstool) path: item/p #: C/media-keys.page:28 msgid "" "Fast Forward, Next: Each of these keys will jump ahead " "the time you selected in Preferences." msgstr "" #. (itstool) path: note/p #: C/media-keys.page:32 msgid "" "For detailed instructions how to change keyboard shortcuts in GNOME see the " "official " "documentation." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:35 msgid "" "If you are using a dedicated foot pedal, it should be possible to map the " "foot pedal signals to any of the keys. This is not well tested, however. Any " "feedback regarding foot pedals is welcome." msgstr "" parlatype-3.0/help/fr/000077500000000000000000000000001414030451500147115ustar00rootroot00000000000000parlatype-3.0/help/fr/fr.po000066400000000000000000001460331414030451500156670ustar00rootroot00000000000000# French translation for parlatype # Copyright (c) 2020 Rosetta Contributors and Canonical Ltd 2020 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2020. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2021-10-18 21:35+0200\n" "PO-Revision-Date: 2020-06-18 10:30+0000\n" "Last-Translator: Jean-Marc \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-06-18 10:32+0000\n" "X-Generator: Launchpad (build 1cbd0aa39df153c901321817f9b57cf3f232b507)\n" #. Put one translator per line, in the form NAME , YEAR1, YEAR2 msgctxt "_" msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " Jean-Marc https://launchpad.net/~m-balthazar" #. (itstool) path: info/title #: C/index.page:7 msgctxt "text" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: info/title #: C/index.page:8 msgctxt "link" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: credit/name #: C/index.page:10 C/drag-and-drop.page:8 C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 C/preferences.page:8 C/selections.page:8 #: C/timestamps.page:8 C/asr.page:9 C/asr-setup.page:9 C/media-keys.page:8 msgid "Gabor Karsay" msgstr "Gabor Karsay" #. (itstool) path: info/desc #. (itstool) path: page/p #: C/index.page:14 C/index.page:23 msgid "" "Parlatype is an easy to use media player. Its main purpose is to " "help you transcribing speech." msgstr "" "Parlatype est un lecteur multimédia facile à utiliser. Son " "objectif principal est de vous aider à transcrire la parole." #. (itstool) path: page/title #: C/index.page:18 msgid "<_:media-1/> Parlatype" msgstr "<_:media-1/> Parlatype" #. (itstool) path: page/p #: C/index.page:24 msgid "" "For a quick overview have a look at . Other " "topics are covered below." msgstr "" "Pour un aperçu rapide, consultez . D'autres " "sujets sont abordés ci-dessous." #. (itstool) path: section/title #: C/index.page:27 msgid "Help topics" msgstr "Sujets d'aide" #. (itstool) path: info/desc #: C/drag-and-drop.page:6 msgid "Drop files, file names or timestamps on Parlatype" msgstr "" "Déposer des fichiers, des noms de fichiers ou des horodatages sur Parlatype" #. (itstool) path: page/title #: C/drag-and-drop.page:14 msgid "Drag and Drop" msgstr "Glisser-déposer" #. (itstool) path: page/p #: C/drag-and-drop.page:16 msgid "" "You can drop files, file names or timestamps on Parlatype’s " "window." msgstr "" "Vous pouvez déposer des fichiers, des noms de fichiers ou des horodatages " "dans la fenêtre de Parlatype." #. (itstool) path: item/p #: C/drag-and-drop.page:19 msgid "" "Files: Drag and drop a file from a file manager, e.g. Files, on " "Parlatype and it will open that file." msgstr "" "Fichiers : faites glisser et déposez un fichier à partir d'un gestionnaire " "de fichiers, par exemple Fichiers, sur Parlatype et il " "ouvrira ce fichier." #. (itstool) path: item/p #: C/drag-and-drop.page:20 msgid "" "File names: Select a file name from a word processor, e.g. LibreOffice, drop the selected text on Parlatype and it will open that " "file. This will always work if the selection contains a full path. If you " "select the name only, Parlatype will look up its full path in the " "list of recent files and open it if it can find it in that list." msgstr "" "Noms de fichiers : sélectionnez un nom de fichier dans un traitement de " "texte, LibreOffice par exemple, déposez le texte sélectionné sur " "Parlatype et il ouvrira ce fichier. Cela fonctionnera toujours si " "la sélection contient un chemin complet. Si vous sélectionnez uniquement le " "nom, Parlatype recherchera son chemin complet dans la liste des " "fichiers récents et l'ouvrira s'il peut le trouver dans cette liste." #. (itstool) path: item/p #: C/drag-and-drop.page:21 msgid "" "Timestamps: You can drag and drop timestamps to Parlatype. Select " "a timestamp from a word processor, e.g. LibreOffice, drop the " "selected text on Parlatype and it will jump to that position." msgstr "" "Horodatages : vous pouvez glisser-déposer des horodatages vers " "Parlatype. Sélectionnez un horodatage dans un traitement de " "texte, LibreOffice par exemple, déposez le texte sélectionné sur " "Parlatype et il ira à cette position." #. (itstool) path: info/desc #. (itstool) path: page/title #: C/first-steps.page:6 C/first-steps.page:14 msgid "First steps with Parlatype" msgstr "Premiers pas avec Parlatype" #. (itstool) path: page/p #: C/first-steps.page:16 msgid "" "Parlatype is an easy to use audio player to help you transcribing " "or annotating recorded speech. You need to run a word processor, e.g. " "LibreOffice, too. Launch Parlatype and open an audio " "file by clicking on the Open button in the upper left corner." msgstr "" "Parlatype est un lecteur audio facile à utiliser pour vous aider " "à transcrire ou annoter la parole enregistrée. Vous devez également exécuter " "un traitement de texte comme LibreOffice par exemple. Lancez " "Parlatype et ouvrez un fichier audio en cliquant sur le bouton " "Ouvrir dans le coin supérieur gauche." #. (itstool) path: note/p #: C/first-steps.page:19 msgid "You can also drag and drop a file on Parlatype." msgstr "" "Vous pouvez également faire glisser et déposer un fichier sur " "Parlatype." #. (itstool) path: page/p #: C/first-steps.page:22 msgid "" "In the lower left corner there are the controls with a Play " "button which toggles between play and pause. Whenever you pause, " "Parlatype rewinds a few seconds to make it easier to resume. This " "can be changed in the ." msgstr "" "Dans le coin inférieur gauche se trouvent les commandes avec un bouton " "Lecture qui bascule entre lecture et pause. À chaque pause, " "Parlatype rembobine de quelques secondes pour faciliter la " "reprise. Cela peut être modifié dans les ." #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/first-steps.page:24 msgctxt "_" msgid "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" msgstr "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" #. (itstool) path: page/p #: C/first-steps.page:26 msgid "" "The buttons Jump back and Jump forward in the lower " "left corner skip a few seconds back or ahead. The amount of time can be " "changed in the ." msgstr "" "Les boutons Saut arrière et Saut avant dans le coin " "inférieur gauche permettent des sauts de quelques secondes en arrière ou en " "avant. La durée peut être modifiée dans les ." #. (itstool) path: page/p #: C/first-steps.page:28 msgid "" "The view scrolls automatically so that the cursor is always visible. You can " "scroll manually by clicking on or dragging the scroll bar or using the " "standard keybindings. Automatic scrolling is stopped then." msgstr "" "La vue défile automatiquement pour que le curseur soit toujours visible. " "Vous pouvez faire défiler manuellement en cliquant ou en faisant glisser la " "barre de défilement ou en utilisant les raccourcis clavier standard. Le " "défilement automatique est alors arrêté." #. (itstool) path: page/p #: C/first-steps.page:30 msgid "" "To get back to the cursor’s position and let the view scroll automatically " "again, click on the menu button showing the time and then on Go to " "cursor. Clicking on the Play button also turns automatic " "scrolling on." msgstr "" "Pour revenir à la position du curseur et laisser la vue défiler à nouveau " "automatiquement, cliquez sur le bouton de menu indiquant le temps, puis sur " "Aller au curseur. Cliquer sur le bouton Lecture active " "également le défilement automatique." #. (itstool) path: page/p #: C/first-steps.page:32 msgid "" "Clicking in the view with the right mouse button will put the cursor there, " "also holding the right mouse button pressed and moving it. The left mouse " "button is for ." msgstr "" "Cliquez dans la vue avec le bouton droit de la souris pour y placer le " "curseur, tout en maintenant le bouton droit de la souris enfoncé et en le " "déplaçant. Le bouton gauche de la souris est pour ." #. (itstool) path: page/p #: C/first-steps.page:34 msgid "" "The speed scale next to the volume button in the lower " "right corner lets you adjust the speed of playback. A value of 1 means " "normal speed, everything lower (down to 0.5) is slower, everything above is " "faster." msgstr "" "L'échelle de vitesse à côté du bouton Volume dans le " "coin inférieur droit vous permet de régler la vitesse de lecture. Une valeur " "de 1 signifie une vitesse normale, tout ce qui est inférieur (jusqu'à 0,5) " "est plus lent, tout ce qui est au-dessus est plus rapide." #. (itstool) path: info/desc #: C/keyboard-shortcuts.page:6 msgid "Standard keyboard shortcuts in Parlatype" msgstr "Raccourcis clavier standard dans Parlatype" #. (itstool) path: page/title #: C/keyboard-shortcuts.page:14 msgid "Keyboard shortcuts" msgstr "Raccourcis clavier" #. (itstool) path: page/p #: C/keyboard-shortcuts.page:16 msgid "" "Keyboard shortcuts for Parlatype control, like Play, " "are described in . Shortcut keys for the window are " "listed below." msgstr "" "Les raccourcis clavier pour les commandes de Parlatype, comme " "Lecture, sont décrites dans . Les " "touches de raccourci pour la fenêtre sont répertoriées ci-dessous." #. (itstool) path: table/title #: C/keyboard-shortcuts.page:19 msgid "Standard Shortcut keys" msgstr "Touches de raccourcis standards" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:22 msgid "To Do This" msgstr "Pour faire ceci" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:23 msgid "Press This" msgstr "Appuyez sur" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:28 msgid "Show help" msgstr "Afficher l’aide" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:29 msgid "F1" msgstr "F1" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:32 msgid "Open file" msgstr "Ouvrir un fichier" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:33 msgid "Ctrlo" msgstr "Ctrlo" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:36 msgid "Play/Pause" msgstr "Lecture/Pause" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:37 msgid "CtrlSpace" msgstr "CtrlBarre d'espace" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:40 msgid "Go to …" msgstr "Aller à..." #. (itstool) path: td/p #: C/keyboard-shortcuts.page:41 msgid "Ctrlg" msgstr "Ctrlg" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:44 msgid "Jump back" msgstr "Saut arrière" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:45 msgid "CtrlLeft" msgstr "CtrlGauche" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:48 msgid "Jump forward" msgstr "Saut avant" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:49 msgid "CtrlRight" msgstr "CtrlDroite" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:52 msgid "Copy timestamp" msgstr "Copier un horodatage" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:53 msgid "Ctrlc" msgstr "Ctrlc" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:56 msgid "Insert timestamp" msgstr "Insérer un horodatage" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:57 msgid "Ctrlv" msgstr "Ctrlv" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:60 msgid "Zoom in" msgstr "Agrandir" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:61 msgid "Ctrl+" msgstr "Ctrl+" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:64 msgid "Zoom out" msgstr "Réduire" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:65 msgid "Ctrl-" msgstr "Ctrl-" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:68 msgid "Quit" msgstr "Quitter" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:69 msgid "Ctrlq" msgstr "Ctrlq" #. (itstool) path: p/link #: C/legal.xml:5 msgid "Creative Commons Attribution-ShareAlike 4.0 International" msgstr "Creative Commons Attribution-ShareAlike 4.0 International" #. (itstool) path: license/p #: C/legal.xml:4 msgid "This work is licensed under a <_:link-1/> license." msgstr "Ce travail est publié sous licence <_:link-1/>." #. (itstool) path: info/desc #: C/preferences.page:6 msgid "How to customize Parlatype" msgstr "Comment personnaliser Parlatype" #. (itstool) path: page/title #: C/preferences.page:14 msgid "Preferences" msgstr "Préférences" #. (itstool) path: page/p #: C/preferences.page:16 msgid "" "To open the preferences dialog click on the primary menu in the headerbar." msgstr "" "Pour ouvrir la boîte de dialogue des préférences, cliquez sur le menu " "principal dans la barre d'en-tête." #. (itstool) path: section/title #: C/preferences.page:21 msgid "Preferences for the waveform" msgstr "Préférences pour l'onde sonore" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:23 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" msgstr "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" #. (itstool) path: item/p #: C/preferences.page:26 msgid "" "Resolution: The resolution of the waveform image is given in pixels per " "second, e.g. the default resolution of 100 means, that one second is shown " "with a width of 100 pixels." msgstr "" "Résolution : la résolution de l'image de l'onde sonore est donnée en pixels " "par seconde, la résolution par défaut de 100 signifie qu'une seconde est " "affichée avec une largeur de 100 pixels." #. (itstool) path: item/p #: C/preferences.page:27 msgid "" "Fixed vs. moving cursor: There are two modes, how to follow the cursor. On " "slower systems a moving cursor might be smoother." msgstr "" "Curseur fixe ou curseur mobile : il existe deux modes, comment suivre le " "curseur. Sur les systèmes plus lents, un curseur en mouvement peut être plus " "fluide." #. (itstool) path: item/p #: C/preferences.page:28 msgid "Show time scale: Turn the time scale on or off." msgstr "" "Afficher l'échelle de temps : activer ou désactiver l'échelle de temps." #. (itstool) path: section/title #: C/preferences.page:33 msgid "Preferences for controls" msgstr "Préférences pour les commandes" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:35 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: item/p #: C/preferences.page:38 msgid "" "Jump back on pause: Parlatype will rewind a few seconds on each " "pause, this way you can easier resume typing. Set this value to 0 if you " "don’t want this behaviour." msgstr "" "Saut arrière à la pause : Parlatype rembobinera de quelques " "secondes à chaque pause, de cette façon, vous pourrez plus facilement " "reprendre la saisie. Définissez cette valeur sur 0 si vous ne souhaitez pas " "ce comportement." #. (itstool) path: item/p #: C/preferences.page:39 msgid "" "Jump back: Configures how many seconds to skip when the Jump back " "button is pressed." msgstr "" "Saut arrière : configure le nombre de secondes à passer lorsque le bouton " "Saut arrière est pressé." #. (itstool) path: item/p #: C/preferences.page:40 msgid "" "Jump forward: Configures how many seconds to skip when the Jump " "forward button is pressed." msgstr "" "Saut avant : configure le nombre de secondes à passer lorsque le bouton " "Saut avant est pressé." #. (itstool) path: item/p #: C/preferences.page:41 msgid "" "Pressing Play at the end of file – Replay file: Whether you want " "to repeat the file at the end. If not, it will replay a few seconds like on " "pause." msgstr "" "Appuyer sur Lecture à la fin du fichier - Relire le fichier : si " "vous souhaitez répéter le fichier à la fin. Sinon, il sera relu quelques " "secondes comme en pause." #. (itstool) path: item/p #: C/preferences.page:42 msgid "" "Pressing Play at the end of selection – Replay selection: Whether " "you want to repeat the selection. If not, it will replay a few seconds like " "on pause." msgstr "" "Appuyer sur Lecture à la fin de la sélection - Relire la " "sélection : si vous souhaitez répéter la sélection à la fin. Sinon, elle " "sera relue quelques secondes comme en pause." #. (itstool) path: section/title #: C/preferences.page:47 msgid "Preferences for timestamps" msgstr "Préférences pour les horodatages" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:49 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" msgstr "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" #. (itstool) path: section/p #: C/preferences.page:51 msgid "" "These settings affect how Parlatype formats timestamps. If you " "need a certain format in your transcription, you can adjust it here." msgstr "" "Ces paramètres affectent la façon dont Parlatype formate les " "horodatages. Si vous avez besoin d'un format particulier dans votre " "transcription, vous pouvez l'ajuster ici." #. (itstool) path: note/p #: C/preferences.page:52 msgid "" "There are no settings for reading timestamps. Parlatype " "reads and accepts all of these formats." msgstr "" "Il n'y a pas de paramètres pour la lecture des horodatages. " "Parlatype lit et accepte tous ces formats." #. (itstool) path: item/p #: C/preferences.page:54 msgid "" "Always show hours and leading zeroes: Whether to show a fixed number of " "digits. Changing any of these values will show an updated example in the " "Example section below." msgstr "" "Toujours afficher les heures et les zéros en tête : afficher ou non un " "nombre fixe de chiffres. La modification de l'une de ces valeurs affichera " "un exemple mis à jour dans la section Exemple ci-dessous." #. (itstool) path: item/p #: C/preferences.page:55 msgid "Precision: Choose between full seconds, 10th seconds or 100th seconds." msgstr "" "Précision : choisissez entre secondes, dixièmes et centièmes de seconde." #. (itstool) path: item/p #: C/preferences.page:56 msgid "" "Fraction separator: Choose between a point or a hyphen to separate fractions " "of a second." msgstr "" "Séparateur : choisissez entre un point ou un trait d'union pour séparer les " "fractions de seconde." #. (itstool) path: item/p #: C/preferences.page:57 msgid "" "Characters around timestamps: Choose between number signs, round brackets, " "square brackets or none." msgstr "" "Caractères autour des horodatages : choisissez entre signes numériques, " "parenthèses, crochets ou rien du tout." #. (itstool) path: section/title #: C/preferences.page:62 msgid "Preferences for speech recognition" msgstr "Préférences pour la reconnaissance de la parole" #. (itstool) path: note/p #: C/preferences.page:65 msgid "" "This tab is only visible, if speech recognition is enabled in Parlatype." msgstr "" "Cet onglet n'est visible que si la reconnaissance de la parole est activée " "dans Parlatype." #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:68 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" msgstr "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" #. (itstool) path: section/p #: C/preferences.page:70 msgid "" "Here you can choose which language model to use. If you don’t have a " "language model yet, an assistant will guide you through the process of " "downloading it. You can have as many language models as you need, they can " "be added with the + button." msgstr "" "Ici, vous pouvez choisir le modèle de langue à utiliser. Si vous n'avez pas " "encore de modèle de langue, un assistant vous guidera tout au long du " "processus de téléchargement. Vous pouvez avoir autant de modèles de langues " "que vous le souhaitez, ils peuvent être ajoutés avec le bouton +." #. (itstool) path: section/p #: C/preferences.page:72 msgid "" "To select a model click on its radio button in the list. If you click just " "on the name, you can see the model’s basic parameters. You could even change " "them, but that’s not recommended." msgstr "" "Pour sélectionner un modèle, cliquez sur son bouton radio dans la liste. Si " "vous cliquez simplement sur le nom, vous pouvez voir les paramètres de base " "du modèle. Vous pouvez même les modifier, mais ce n'est pas recommandé." #. (itstool) path: section/p #: C/preferences.page:74 msgid "" "The - button removes a model from the list. The model’s files " "however are not deleted, just the model entry is removed." msgstr "" "Le bouton - supprime un modèle de la liste. Les fichiers du " "modèle ne sont cependant pas supprimés, seule l'entrée du modèle " "est supprimée." #. (itstool) path: section/title #: C/preferences.page:80 msgid "Preferences for the window" msgstr "Préférences pour la fenêtre" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:82 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" msgstr "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" #. (itstool) path: item/p #: C/preferences.page:85 msgid "" "Remember size: On start-up Parlatype sets the window size to the " "size it had the last time." msgstr "" "Rappel de la taille : au démarrage, Parlatype définit la " "dimension de la fenêtre à la taille qu'elle avait la dernière fois." #. (itstool) path: item/p #: C/preferences.page:86 msgid "" "Remember position: On start-up Parlatype can position its window " "where you had it when you closed Parlatype last time." msgstr "" "Rappel de la position : au démarrage, Parlatype peut positionner " "sa fenêtre là où vous l'aviez laissé lorsque vous avez quitté " "Parlatype la dernière fois." #. (itstool) path: item/p #: C/preferences.page:87 msgid "" "Start on top: This will put Parlatype on start-up on top of other " "windows. This might be useful if you are working with a maximized word " "processor and still want to see the Parlatype window." msgstr "" "Toujours visible : au démarrage, cela placera Parlatype au-dessus " "des autres fenêtres. Cela peut être utile si vous travaillez avec un " "traitement de texte maximisé et que vous souhaitez toujours voir la fenêtre " "Parlatype." #. (itstool) path: note/p #: C/preferences.page:91 msgid "" "Remember position and Start on top are not available " "on Wayland." msgstr "" "Rappel de la position and Toujours visible ne sont pas " "disponible avec Wayland." #. (itstool) path: info/desc #: C/selections.page:6 msgid "How to play and repeat a selection" msgstr "Comment lire et répéter une sélection" #. (itstool) path: page/title #: C/selections.page:14 msgid "Selections" msgstr "Sélections" #. (itstool) path: page/p #: C/selections.page:16 msgid "" "You can select a piece of the waveform with the mouse. Next time you press " "Play, it will play the selection only. When it is finished and " "you press Play again, it will loop the selection once." msgstr "" "Vous pouvez sélectionner une partie de l'onde sonore avec la souris. La " "prochaine fois que vous appuierez sur Lecture, il ne lira que " "cette sélection. À la fin, si vous appuyez à nouveau sur Lecture, " "il fera une nouvelle boucle sur la sélection." #. (itstool) path: note/p #: C/selections.page:18 msgid "" "When in selection mode, you can not exit the selection anymore until you " "deselect it." msgstr "" "En mode sélection, vous ne pourrez plus quitter la sélection à moins de la " "désélectionner" #. (itstool) path: page/p #: C/selections.page:20 msgid "" "Selections can be made with the mouse (or pointer device) with a left click, " "holding the mouse button and dragging the pointer. If you click with " "Shift key pressed, an already existing selection will be enlarged " "to that point." msgstr "" "Les sélections peuvent être effectuées avec la souris (ou un périphérique de " "pointage) avec un clic gauche, en maintenant le bouton de la souris enfoncé " "et en faisant glisser le pointeur. Vous pourrez obtenir un agrandissement de " "la sélection en cliquant avec la touche Shift enfoncée." #. (itstool) path: page/p #: C/selections.page:22 msgid "" "To deselect click once with the left button into the waveform. If the " "waveform has keyboard focus, you can press Escape." msgstr "" "Pour désélectionner, cliquez une fois avec le bouton gauche dans l'onde " "sonore. Dans le cas de commandes au clavier, appuyez sur Échap." #. (itstool) path: info/desc #: C/timestamps.page:6 msgid "Set and go to timestamps" msgstr "Définir et accéder aux horodatages" #. (itstool) path: page/title #: C/timestamps.page:14 msgid "Timestamps" msgstr "Horodatages" #. (itstool) path: page/p #: C/timestamps.page:16 msgid "Timestamps help you to navigate in your transcription." msgstr "Les horodatages vous aident à naviguer dans votre transcription." #. (itstool) path: note/p #: C/timestamps.page:19 msgid "" "Timestamps can look like this: #03:45.2#. You can select them with or " "without the number signs." msgstr "" "Les horodatages peuvent ressembler à ceci : # 03: 45.2 #. Vous pouvez les " "sélectionner avec ou sans les signes numériques." #. (itstool) path: page/p #: C/timestamps.page:22 msgid "" "Parlatype can produce different timestamp formats, they can be " "set in ." msgstr "" "Parlatype peut produire différents formats d'horodatage, ils " "peuvent être définis dans ." #. (itstool) path: section/title #: C/timestamps.page:25 msgid "Drag and drop" msgstr "Glisser-déposer" #. (itstool) path: section/p #: C/timestamps.page:27 msgid "" "If you select the timestamp in the word processor, you can drag and drop it " "on the Parlatype window and it will go to that position. This is " "also possible the other way round: Drag the time label from Parlatype to a word processor and drop it there to insert it." msgstr "" "Si vous sélectionnez l'horodatage dans le traitement de texte, vous pouvez " "le faire glisser et le déposer dans la fenêtre Parlatype, il ira " "à cette position. Ceci est également possible dans l'autre sens : faites " "glisser l'étiquette de temps de Parlatype vers un traitement de " "texte et déposez-la là pour l'insérer." #. (itstool) path: section/title #: C/timestamps.page:31 msgid "Using the clipboard" msgstr "Utilisation du presse-papier" #. (itstool) path: section/p #: C/timestamps.page:33 msgid "" "Clicking on the menu button that is showing the current time you can " "Copy time to clipboard or Go to time in clipboard." msgstr "" "En cliquant sur le bouton de menu qui affiche le temps actuel, vous pouvez " "Copier le temps dans le presse-papier ou Aller au temps dans " "le presse-papier." #. (itstool) path: section/p #: C/timestamps.page:35 msgid "" "This can also be done with keyboard shortcuts. First make sure, the " "Parlatype window has focus. With the key sequence " "Ctrlc the current timestamp is copied " "to the clipboard. Changing to the word processor you can insert now the " "timestamp in your transcription." msgstr "" "Cela peut également être fait par des raccourcis clavier. Assurez-vous " "d'abord que la fenêtre Parlatype soit visible. Avec la séquence " "de touches Ctrlc l'horodatage actuel " "est copié dans le presse-papier. En passant au traitement de texte, vous " "pouvez maintenant insérer l'horodatage dans votre transcription." #. (itstool) path: section/p #: C/timestamps.page:36 msgid "" "To go to a timestamp position, copy the timestamp in the word processor to " "the clipboard. Once you have changed focus to Parlatype press " "Ctrlv." msgstr "" "Pour accéder à une position d'horodatage, copiez l'horodatage du traitement " "de texte dans le presse-papier. Une fois revenu sur Parlatype, " "appuyez sur Ctrlv." #. (itstool) path: info/desc #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "Laissez Parlatype faire une partie du travail de transcription" #. (itstool) path: page/title #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "Reconnaissance automatique de la parole" #. (itstool) path: page/p #: C/asr.page:17 #, fuzzy msgid "" "Parlatype offers automatic speech recognition that is done on " "your computer. No data is sent over the network." msgstr "" "Parlatype offre une reconnaissance automatique de la parole " "depuis votre ordinateur. Aucune donnée n'est envoyée sur le réseau. Gardez à " "l'esprit que la transcription automatique est loin d'être parfaite, elle " "nécessitera toujours des corrections manuelles." #. (itstool) path: note/p #: C/asr.page:20 msgid "" "Parlatype must have been built with PocketSphinx or " "Mozilla DeepSpeech. Please note that those libraries might be not " "available on your platform." msgstr "" #. (itstool) path: note/p #: C/asr.page:25 msgid "" "Parlatype has no built-in text editor. You need the Parlatype " "Extension for LibreOffice to output recognized text." msgstr "" #. (itstool) path: section/title #: C/asr.page:30 msgid "Start speech recognition" msgstr "Lancer la reconnaissance de la parole" #. (itstool) path: section/p #: C/asr.page:32 msgid "" "Select a language model in the Preferences Dialog, Speech recognition tab, see for more details." msgstr "" #. (itstool) path: section/p #: C/asr.page:35 msgid "" "Open the primary menu and click on Automatic transcription. This " "is only available, if you have setup and chosen a language model." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr.page:38 #, fuzzy msgctxt "_" msgid "" "external ref='figures/asr-switch-to-asr.png' " "md5='91dc6bffa3b8a3342889d9bfccabc3c8'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: section/p #: C/asr.page:40 #, fuzzy msgid "" "Now press Play in Parlatype and the recognized speech " "will be printed in LibreOffice, if the Parlatype Extension is " "installed. Output is silent because decoding speed is dependent on your " "machine and may be slower or faster than real-time speech." msgstr "" "Appuyez maintenant sur Lecture dans Parlatype et le " "discours reconnu sera imprimé dans cette fenêtre. La sortie est silencieuse " "car la vitesse dépend de la puissance de votre appareil et peut être plus " "lente ou plus rapide que la parole en temps réel." #. (itstool) path: section/p #: C/asr.page:45 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" "La sortie est sans ponctuation ni majuscule, vous devez l'ajouter ou la " "corriger vous-même." #. (itstool) path: note/p #: C/asr.page:47 #, fuzzy msgid "" "Accuracy depends on many factors like quality of the recording, " "background noise, speaker’s dialect or pronunciation and the speech model " "used. For general transcription you can expect an word error rate between 10 " "and 50 %. Alas this means that in some cases manual transcription from the " "start will be faster than automatic transcription and the following " "correction process." msgstr "" "La précision dépend de nombreux facteurs tels que la qualité de " "l'enregistrement, le bruit de fond, le dialecte ou la prononciation du " "locuteur et le modèle vocal utilisé. Pour la transcription générale, vous " "pouvez vous attendre à un taux d'erreur sur les mots compris entre 10 et " "50 %. Hélas, cela signifie que dans certains cas, la transcription manuelle " "dès le début sera plus rapide que la transcription automatique suivie du " "processus de correction." #. (itstool) path: info/desc #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "Configurer la transcription automatique de la parole" #. (itstool) path: page/title #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "Configurer la reconnaissance automatique de la parole" #. (itstool) path: page/p #: C/asr-setup.page:17 msgid "" "For speech recognition you need a language model: one or more files trained " "with real speech samples. Parlatype supports language models made " "for CMU Sphinx and Mozilla DeepSpeech and ships a couple of language " "model configurations." msgstr "" #. (itstool) path: note/p #: C/asr-setup.page:22 msgid "" "A language model configuration contains meta data describing the " "language model: A name that you can change, the language it was made for, " "speech recognition engine, publisher, license etc. It has a (third party) " "link, where you can download the files. Part of the configuration is the " "base folder, where you have saved the model. Additionally it contains " "various parameters for the plugin which are not shown." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:29 msgid "" "Open the Preferences Dialog and click on the Speech Recognition " "tab. Initially there are no configurations available, click on the Add " "a configuration button." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:33 #, fuzzy msgctxt "_" msgid "" "external ref='figures/asr-setup-initial.png' " "md5='31773b99dcbb1ee84e59e119a0bd35c6'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: media/span #: C/asr-setup.page:36 msgid "download" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:37 msgid "unavailable" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:35 msgid "" "If your installation has CMU Sphinx or Mozilla DeepSpeech enabled, you will " "see configurations with a <_:media-1/> symbol. Otherwise you will see only " "configurations with a <_:media-2/> symbol." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:39 #, fuzzy msgctxt "_" msgid "" "external ref='figures/asr-setup-downloadable.png' " "md5='6e00b08a60952e8f408bec4a024be2e5'" msgstr "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" #. (itstool) path: media/span #: C/asr-setup.page:42 msgid "settings" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:41 msgid "" "Select a configuration and click on the <_:media-1/> button. There is a " "short description of the model and where you can download it. After " "downloading, you have to set the folder where your download resides. You can " "also change the Display name." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:47 #, fuzzy msgctxt "_" msgid "" "external ref='figures/asr-setup-details.png' " "md5='3273410dfb31da8518a64d28af0da7b1'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: media/span #: C/asr-setup.page:50 msgid "selected" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:49 msgid "" "An installed model has no symbol next to it. Double click on the model and " "it will be selected for speech recognition, a <_:media-1/> symbol appears." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:53 msgid "" "Shipped configurations might get obsolete over time. Therefore you can " "import a configuration with the + button. Configurations are text " "files with an .asr ending." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:57 msgid "" "With the - button you can remove a configuration. This will never " "remove downloaded models, only the configuration file." msgstr "" #. (itstool) path: info/desc #: C/media-keys.page:6 msgid "How to control Parlatype with media keys" msgstr "Comment contrôler le Parlatype avec les touches multimédia" #. (itstool) path: page/title #: C/media-keys.page:14 msgid "Media keys" msgstr "Touches multimédia" #. (itstool) path: page/p #: C/media-keys.page:16 msgid "" "Parlatype’s basic functions can be controlled with so called " "media keys. Media keys are used system wide to control media " "players and they are working even if the media player is not in focus or in " "the background." msgstr "" "Les fonctions de base de Parlatype peuvent être commandées par " "les touches multimédia. Les touches multimédia sont utilisées à " "l'échelle du système pour contrôler les lecteurs multimédia et elles " "fonctionnent même si le lecteur multimédia est en arrière-plan." #. (itstool) path: page/p #: C/media-keys.page:18 msgid "" "You can change the media keys in GNOME settings. You can use dedicated keys " "from a multimedia keyboard or use any other key or combination of keys." msgstr "" "Vous pouvez modifier les touches multimédia dans les paramètres GNOME. Vous " "pouvez utiliser des touches dédiées à partir d'un clavier multimédia ou " "utiliser toute autre touche ou combinaison de touches." #. (itstool) path: note/p #: C/media-keys.page:21 msgid "" "This will affect other media players, e.g. Totem or " "Rhythmbox, as well." msgstr "" "Cela affectera d'autres lecteurs multimédia comme Totem ou " "Rhythmbox" #. (itstool) path: page/p #: C/media-keys.page:24 msgid "Parlatype listens to these key strokes:" msgstr "Parlatype écoute ces touches :" #. (itstool) path: item/p #: C/media-keys.page:26 msgid "" "Play, Pause, Stop: Each of these keys " "toggles between playing and pause." msgstr "" "Lecture, Pause, Arrêt : chacune de ces " "touches bascule entre la lecture et la pause." #. (itstool) path: item/p #: C/media-keys.page:27 msgid "" "Rewind, Previous: Each of these keys will jump back " "the time you selected in Preferences." msgstr "" "Retour, Précédent : chacune de ces touches vous fera " "reculer de la valeur de temps que vous avez sélectionné dans les Préférences." #. (itstool) path: item/p #: C/media-keys.page:28 msgid "" "Fast Forward, Next: Each of these keys will jump ahead " "the time you selected in Preferences." msgstr "" "Avance, Suivant : chacune de ces touches vous fera " "avancer de la valeur de temps que vous avez sélectionné dans les Préférences." #. (itstool) path: note/p #: C/media-keys.page:32 msgid "" "For detailed instructions how to change keyboard shortcuts in GNOME see the " "official " "documentation." msgstr "" "Pour des instructions détaillées sur la modification des raccourcis clavier " "dans GNOME, consultez la documentation officielle." #. (itstool) path: page/p #: C/media-keys.page:35 msgid "" "If you are using a dedicated foot pedal, it should be possible to map the " "foot pedal signals to any of the keys. This is not well tested, however. Any " "feedback regarding foot pedals is welcome." msgstr "" "Si vous utilisez une pédale dédiée, il devrait être possible de mapper les " "signaux de la pédale à l'une des touches. Ceci n'a pas encore été testé. " "Tout commentaire à ce sujet sera bienvenu." #~ msgid "" #~ "Automatic speech recognition is disabled by default. In order to try it, " #~ "you have run Parlatype with this parameter:" #~ msgstr "" #~ "La reconnaissance automatique de la parole est désactivée par défaut. " #~ "Pour l'essayer, vous devez exécuter Parlatype avec ce " #~ "paramètre :" #~ msgid "" #~ "Open the primary menu and click on Automatic transcription. If " #~ "you don’t have a language model yet, an assistant will guide you in that " #~ "process (see ). Otherwise a dialog will pop up " #~ "asking you to give focus to a word processor. Any word processor with " #~ "support for accessibility should work, like LibreOffice or " #~ "Gedit." #~ msgstr "" #~ "Ouvrez le menu principal et cliquez sur Transcription automatique. Si vous n’avez pas encore de modèle de langue, un assistant vous " #~ "guidera dans ce processus (voir ). Sinon, une " #~ "boîte de dialogue apparaîtra vous demandant d'ouvrir un traitement de " #~ "texte. Tout traitement de texte prenant en charge l'accessibilité devrait " #~ "fonctionner, comme LibreOffice ou Gedit." #~ msgid "" #~ "If no word processor is recognized you can use an internal textpad as a " #~ "fallback solution. To use that textpad start Parlatype with " #~ "the textpad option: parlatype --textpad." #~ msgstr "" #~ "Si aucun traitement de texte n'est reconnu, vous pouvez utiliser un " #~ "éditeur de texte interne comme solution de secours. Pour utiliser cet " #~ "éditeur de texte, lancez Parlatype avec l'option textpad : " #~ "parlatype --textpad." #~ msgid "" #~ "Parlatype doesn’t ship the language model needed for speech " #~ "recognition. You will have to download it. There is an assistant that " #~ "guides you through that process." #~ msgstr "" #~ "Parlatype ne fournit pas le modèle de langue requis pour la " #~ "reconnaissance de la parole. Vous devrez le télécharger. Il y a un " #~ "assistant qui vous guidera à travers ce processus." #~ msgid "" #~ "The assistant can be started either from the Preferences dialog, tab " #~ "Speech recognition or – if you have no setup yet – from the " #~ "primary menu, Automatic transcription." #~ msgstr "" #~ "L'assistant peut être démarré soit à partir de la boîte de dialogue " #~ "Préférences, onglet Reconnaissance de la parole, soit, si vous " #~ "ne l'avez pas encore configuré, à partir du menu principal, " #~ "Transcription automatique." #~ msgid "" #~ "It asks you to download a speech model. The speech recognition engine " #~ "used is CMU Sphinx. You can download models suitable for CMU Sphinx for " #~ "example from CMU Sphinx’ sourceforge " #~ "repository. It has models for some of the most widespread " #~ "languages." #~ msgstr "" #~ "Il vous demande de télécharger un modèle. Le moteur de reconnaissance " #~ "vocale utilisé est CMU Sphinx. Vous pouvez télécharger des modèles " #~ "adaptés à CMU Sphinx depuis le dépôt CMU " #~ "Sphinx sur Sourceforge. Il a des modèles pour les langues les plus " #~ "répandues." #~ msgid "" #~ "If it’s compressed, uncompress the model. Save it to a folder where it " #~ "can stay. Parlatype doesn’t copy the model internally." #~ msgstr "" #~ "S'il est compressé, décompressez le modèle. Enregistrez-le dans un " #~ "dossier où il pourra rester. Parlatype ne copie pas le modèle en interne." #~ msgid "" #~ "Usually the assistant will find all the files needed and you just have to " #~ "give this configuration a name for your own reference. You can have " #~ "several configurations, e.g. for different languages." #~ msgstr "" #~ "Généralement, l'assistant trouvera tous les fichiers nécessaires et il " #~ "vous suffira de donner un nom à cette configuration. Vous pourrez avoir " #~ "plusieurs configurations, pour différentes langues par exemple." #~ msgid "" #~ "If the assistant doesn’t find all the components or finds more than " #~ "expected, it will ask you to specify their location or to choose between " #~ "them. The next sections explains those components." #~ msgstr "" #~ "Si l'assistant ne trouve pas tous les composants ou en trouve plus que " #~ "prévu, il vous demandera de spécifier leur emplacement ou de choisir " #~ "entre eux. Les sections suivantes expliquent ces composants." #~ msgid "Models" #~ msgstr "Modèles" #~ msgid "" #~ "A model consists of a so called acoustic and language model and a " #~ "dictionary:" #~ msgstr "" #~ "Un modèle se compose d'un modèle acoustique et de langage et d'un " #~ "dictionnaire :" #~ msgid "Acoustic model" #~ msgstr "Modèle acoustique" #~ msgid "" #~ "It consists of several files usually in their own folder: feat." #~ "params, mdef, means and some others." #~ msgstr "" #~ "Il se compose de plusieurs fichiers généralement dans leur propre " #~ "dossier : feat.params, mdef, means " #~ "et quelques autres." #~ msgid "Language model" #~ msgstr "Modèle de langue" #~ msgid "" #~ "Parlatype needs a binary language model. That’s a single file " #~ "with the extension .lm.bin. Models can have several language " #~ "models. They have often one for high quality and one for low quality " #~ "recordings. Typical low quality recordings are from telephones with a " #~ "sample rate of 8000 Hz. Those language models have often phone, 8k or similar as part of their file name." #~ msgstr "" #~ "Parlatype a besoin d'un modèle de langue binaire. Il s'agit " #~ "d'un fichier avec l'extension .lm.bin. Les modèles peuvent " #~ "avoir plusieurs modèles de langues. Ils en ont souvent un pour une " #~ "qualité élevée et un pour des enregistrements de faible qualité. Les " #~ "enregistrements typiques de faible qualité proviennent de téléphones avec " #~ "une fréquence d'échantillonnage de 8 000 Hz. Ces modèles de langues " #~ "comportent souvent le mot phone, 8k " #~ "ou similaire dans leur nom." #~ msgid "Dictionary" #~ msgstr "Dictionnaire" #~ msgid "" #~ "Dictionaries have the extension .dict or .dic." #~ msgstr "" #~ "Les dictionnaires ont une extension .dict ou .dic." #~ msgid "" #~ "All those elements should be somewhere in the folder selected. It doesn’t " #~ "matter whether there are subfolders or how they are named." #~ msgstr "" #~ "Tous ces éléments doivent se trouver quelque part dans le dossier " #~ "sélectionné. Peu importe la présence de sous-dossiers ou la façon dont " #~ "ils ont été nommés." parlatype-3.0/help/he/000077500000000000000000000000001414030451500146765ustar00rootroot00000000000000parlatype-3.0/help/he/he.po000066400000000000000000000715041414030451500156410ustar00rootroot00000000000000msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:35+0200\n" "PO-Revision-Date: 2017-01-26 16:40+0000\n" "Last-Translator: nobody \n" "Language-Team: Hebrew , YEAR1, YEAR2 msgctxt "_" msgid "translator-credits" msgstr "" #. (itstool) path: info/title #: C/index.page:7 msgctxt "text" msgid "Parlatype" msgstr "" #. (itstool) path: info/title #: C/index.page:8 msgctxt "link" msgid "Parlatype" msgstr "" #. (itstool) path: credit/name #: C/index.page:10 C/drag-and-drop.page:8 C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 C/preferences.page:8 C/selections.page:8 #: C/timestamps.page:8 C/asr.page:9 C/asr-setup.page:9 C/media-keys.page:8 msgid "Gabor Karsay" msgstr "" #. (itstool) path: info/desc #. (itstool) path: page/p #: C/index.page:14 C/index.page:23 msgid "" "Parlatype is an easy to use media player. Its main purpose is to " "help you transcribing speech." msgstr "" #. (itstool) path: page/title #: C/index.page:18 msgid "<_:media-1/> Parlatype" msgstr "" #. (itstool) path: page/p #: C/index.page:24 msgid "" "For a quick overview have a look at . Other " "topics are covered below." msgstr "" #. (itstool) path: section/title #: C/index.page:27 msgid "Help topics" msgstr "" #. (itstool) path: info/desc #: C/drag-and-drop.page:6 msgid "Drop files, file names or timestamps on Parlatype" msgstr "" #. (itstool) path: page/title #: C/drag-and-drop.page:14 msgid "Drag and Drop" msgstr "" #. (itstool) path: page/p #: C/drag-and-drop.page:16 msgid "" "You can drop files, file names or timestamps on Parlatype’s " "window." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:19 msgid "" "Files: Drag and drop a file from a file manager, e.g. Files, on " "Parlatype and it will open that file." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:20 msgid "" "File names: Select a file name from a word processor, e.g. LibreOffice, drop the selected text on Parlatype and it will open that " "file. This will always work if the selection contains a full path. If you " "select the name only, Parlatype will look up its full path in the " "list of recent files and open it if it can find it in that list." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:21 msgid "" "Timestamps: You can drag and drop timestamps to Parlatype. Select " "a timestamp from a word processor, e.g. LibreOffice, drop the " "selected text on Parlatype and it will jump to that position." msgstr "" #. (itstool) path: info/desc #. (itstool) path: page/title #: C/first-steps.page:6 C/first-steps.page:14 msgid "First steps with Parlatype" msgstr "" #. (itstool) path: page/p #: C/first-steps.page:16 msgid "" "Parlatype is an easy to use audio player to help you transcribing " "or annotating recorded speech. You need to run a word processor, e.g. " "LibreOffice, too. Launch Parlatype and open an audio " "file by clicking on the Open button in the upper left corner." msgstr "" #. (itstool) path: note/p #: C/first-steps.page:19 msgid "You can also drag and drop a file on Parlatype." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:22 msgid "" "In the lower left corner there are the controls with a Play " "button which toggles between play and pause. Whenever you pause, " "Parlatype rewinds a few seconds to make it easier to resume. This " "can be changed in the ." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/first-steps.page:24 msgctxt "_" msgid "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" msgstr "" #. (itstool) path: page/p #: C/first-steps.page:26 msgid "" "The buttons Jump back and Jump forward in the lower " "left corner skip a few seconds back or ahead. The amount of time can be " "changed in the ." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:28 msgid "" "The view scrolls automatically so that the cursor is always visible. You can " "scroll manually by clicking on or dragging the scroll bar or using the " "standard keybindings. Automatic scrolling is stopped then." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:30 msgid "" "To get back to the cursor’s position and let the view scroll automatically " "again, click on the menu button showing the time and then on Go to " "cursor. Clicking on the Play button also turns automatic " "scrolling on." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:32 msgid "" "Clicking in the view with the right mouse button will put the cursor there, " "also holding the right mouse button pressed and moving it. The left mouse " "button is for ." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:34 msgid "" "The speed scale next to the volume button in the lower " "right corner lets you adjust the speed of playback. A value of 1 means " "normal speed, everything lower (down to 0.5) is slower, everything above is " "faster." msgstr "" #. (itstool) path: info/desc #: C/keyboard-shortcuts.page:6 msgid "Standard keyboard shortcuts in Parlatype" msgstr "" #. (itstool) path: page/title #: C/keyboard-shortcuts.page:14 msgid "Keyboard shortcuts" msgstr "" #. (itstool) path: page/p #: C/keyboard-shortcuts.page:16 msgid "" "Keyboard shortcuts for Parlatype control, like Play, " "are described in . Shortcut keys for the window are " "listed below." msgstr "" #. (itstool) path: table/title #: C/keyboard-shortcuts.page:19 msgid "Standard Shortcut keys" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:22 msgid "To Do This" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:23 msgid "Press This" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:28 msgid "Show help" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:29 msgid "F1" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:32 msgid "Open file" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:33 msgid "Ctrlo" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:36 msgid "Play/Pause" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:37 msgid "CtrlSpace" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:40 msgid "Go to …" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:41 msgid "Ctrlg" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:44 msgid "Jump back" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:45 msgid "CtrlLeft" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:48 msgid "Jump forward" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:49 msgid "CtrlRight" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:52 msgid "Copy timestamp" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:53 msgid "Ctrlc" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:56 msgid "Insert timestamp" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:57 msgid "Ctrlv" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:60 msgid "Zoom in" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:61 msgid "Ctrl+" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:64 msgid "Zoom out" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:65 msgid "Ctrl-" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:68 msgid "Quit" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:69 msgid "Ctrlq" msgstr "" #. (itstool) path: p/link #: C/legal.xml:5 msgid "Creative Commons Attribution-ShareAlike 4.0 International" msgstr "" #. (itstool) path: license/p #: C/legal.xml:4 msgid "This work is licensed under a <_:link-1/> license." msgstr "" #. (itstool) path: info/desc #: C/preferences.page:6 msgid "How to customize Parlatype" msgstr "" #. (itstool) path: page/title #: C/preferences.page:14 msgid "Preferences" msgstr "" #. (itstool) path: page/p #: C/preferences.page:16 msgid "" "To open the preferences dialog click on the primary menu in the headerbar." msgstr "" #. (itstool) path: section/title #: C/preferences.page:21 msgid "Preferences for the waveform" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:23 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:26 msgid "" "Resolution: The resolution of the waveform image is given in pixels per " "second, e.g. the default resolution of 100 means, that one second is shown " "with a width of 100 pixels." msgstr "" #. (itstool) path: item/p #: C/preferences.page:27 msgid "" "Fixed vs. moving cursor: There are two modes, how to follow the cursor. On " "slower systems a moving cursor might be smoother." msgstr "" #. (itstool) path: item/p #: C/preferences.page:28 msgid "Show time scale: Turn the time scale on or off." msgstr "" #. (itstool) path: section/title #: C/preferences.page:33 msgid "Preferences for controls" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:35 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:38 msgid "" "Jump back on pause: Parlatype will rewind a few seconds on each " "pause, this way you can easier resume typing. Set this value to 0 if you " "don’t want this behaviour." msgstr "" #. (itstool) path: item/p #: C/preferences.page:39 msgid "" "Jump back: Configures how many seconds to skip when the Jump back " "button is pressed." msgstr "" #. (itstool) path: item/p #: C/preferences.page:40 msgid "" "Jump forward: Configures how many seconds to skip when the Jump " "forward button is pressed." msgstr "" #. (itstool) path: item/p #: C/preferences.page:41 msgid "" "Pressing Play at the end of file – Replay file: Whether you want " "to repeat the file at the end. If not, it will replay a few seconds like on " "pause." msgstr "" #. (itstool) path: item/p #: C/preferences.page:42 msgid "" "Pressing Play at the end of selection – Replay selection: Whether " "you want to repeat the selection. If not, it will replay a few seconds like " "on pause." msgstr "" #. (itstool) path: section/title #: C/preferences.page:47 msgid "Preferences for timestamps" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:49 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" msgstr "" #. (itstool) path: section/p #: C/preferences.page:51 msgid "" "These settings affect how Parlatype formats timestamps. If you " "need a certain format in your transcription, you can adjust it here." msgstr "" #. (itstool) path: note/p #: C/preferences.page:52 msgid "" "There are no settings for reading timestamps. Parlatype " "reads and accepts all of these formats." msgstr "" #. (itstool) path: item/p #: C/preferences.page:54 msgid "" "Always show hours and leading zeroes: Whether to show a fixed number of " "digits. Changing any of these values will show an updated example in the " "Example section below." msgstr "" #. (itstool) path: item/p #: C/preferences.page:55 msgid "Precision: Choose between full seconds, 10th seconds or 100th seconds." msgstr "" #. (itstool) path: item/p #: C/preferences.page:56 msgid "" "Fraction separator: Choose between a point or a hyphen to separate fractions " "of a second." msgstr "" #. (itstool) path: item/p #: C/preferences.page:57 msgid "" "Characters around timestamps: Choose between number signs, round brackets, " "square brackets or none." msgstr "" #. (itstool) path: section/title #: C/preferences.page:62 msgid "Preferences for speech recognition" msgstr "" #. (itstool) path: note/p #: C/preferences.page:65 msgid "" "This tab is only visible, if speech recognition is enabled in Parlatype." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:68 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" msgstr "" #. (itstool) path: section/p #: C/preferences.page:70 msgid "" "Here you can choose which language model to use. If you don’t have a " "language model yet, an assistant will guide you through the process of " "downloading it. You can have as many language models as you need, they can " "be added with the + button." msgstr "" #. (itstool) path: section/p #: C/preferences.page:72 msgid "" "To select a model click on its radio button in the list. If you click just " "on the name, you can see the model’s basic parameters. You could even change " "them, but that’s not recommended." msgstr "" #. (itstool) path: section/p #: C/preferences.page:74 msgid "" "The - button removes a model from the list. The model’s files " "however are not deleted, just the model entry is removed." msgstr "" #. (itstool) path: section/title #: C/preferences.page:80 msgid "Preferences for the window" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:82 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:85 msgid "" "Remember size: On start-up Parlatype sets the window size to the " "size it had the last time." msgstr "" #. (itstool) path: item/p #: C/preferences.page:86 msgid "" "Remember position: On start-up Parlatype can position its window " "where you had it when you closed Parlatype last time." msgstr "" #. (itstool) path: item/p #: C/preferences.page:87 msgid "" "Start on top: This will put Parlatype on start-up on top of other " "windows. This might be useful if you are working with a maximized word " "processor and still want to see the Parlatype window." msgstr "" #. (itstool) path: note/p #: C/preferences.page:91 msgid "" "Remember position and Start on top are not available " "on Wayland." msgstr "" #. (itstool) path: info/desc #: C/selections.page:6 msgid "How to play and repeat a selection" msgstr "" #. (itstool) path: page/title #: C/selections.page:14 msgid "Selections" msgstr "" #. (itstool) path: page/p #: C/selections.page:16 msgid "" "You can select a piece of the waveform with the mouse. Next time you press " "Play, it will play the selection only. When it is finished and " "you press Play again, it will loop the selection once." msgstr "" #. (itstool) path: note/p #: C/selections.page:18 msgid "" "When in selection mode, you can not exit the selection anymore until you " "deselect it." msgstr "" #. (itstool) path: page/p #: C/selections.page:20 msgid "" "Selections can be made with the mouse (or pointer device) with a left click, " "holding the mouse button and dragging the pointer. If you click with " "Shift key pressed, an already existing selection will be enlarged " "to that point." msgstr "" #. (itstool) path: page/p #: C/selections.page:22 msgid "" "To deselect click once with the left button into the waveform. If the " "waveform has keyboard focus, you can press Escape." msgstr "" #. (itstool) path: info/desc #: C/timestamps.page:6 msgid "Set and go to timestamps" msgstr "" #. (itstool) path: page/title #: C/timestamps.page:14 msgid "Timestamps" msgstr "" #. (itstool) path: page/p #: C/timestamps.page:16 msgid "Timestamps help you to navigate in your transcription." msgstr "" #. (itstool) path: note/p #: C/timestamps.page:19 msgid "" "Timestamps can look like this: #03:45.2#. You can select them with or " "without the number signs." msgstr "" #. (itstool) path: page/p #: C/timestamps.page:22 msgid "" "Parlatype can produce different timestamp formats, they can be " "set in ." msgstr "" #. (itstool) path: section/title #: C/timestamps.page:25 msgid "Drag and drop" msgstr "" #. (itstool) path: section/p #: C/timestamps.page:27 msgid "" "If you select the timestamp in the word processor, you can drag and drop it " "on the Parlatype window and it will go to that position. This is " "also possible the other way round: Drag the time label from Parlatype to a word processor and drop it there to insert it." msgstr "" #. (itstool) path: section/title #: C/timestamps.page:31 msgid "Using the clipboard" msgstr "" #. (itstool) path: section/p #: C/timestamps.page:33 msgid "" "Clicking on the menu button that is showing the current time you can " "Copy time to clipboard or Go to time in clipboard." msgstr "" #. (itstool) path: section/p #: C/timestamps.page:35 msgid "" "This can also be done with keyboard shortcuts. First make sure, the " "Parlatype window has focus. With the key sequence " "Ctrlc the current timestamp is copied " "to the clipboard. Changing to the word processor you can insert now the " "timestamp in your transcription." msgstr "" #. (itstool) path: section/p #: C/timestamps.page:36 msgid "" "To go to a timestamp position, copy the timestamp in the word processor to " "the clipboard. Once you have changed focus to Parlatype press " "Ctrlv." msgstr "" #. (itstool) path: info/desc #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "" #. (itstool) path: page/title #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "" #. (itstool) path: page/p #: C/asr.page:17 msgid "" "Parlatype offers automatic speech recognition that is done on " "your computer. No data is sent over the network." msgstr "" #. (itstool) path: note/p #: C/asr.page:20 msgid "" "Parlatype must have been built with PocketSphinx or " "Mozilla DeepSpeech. Please note that those libraries might be not " "available on your platform." msgstr "" #. (itstool) path: note/p #: C/asr.page:25 msgid "" "Parlatype has no built-in text editor. You need the Parlatype " "Extension for LibreOffice to output recognized text." msgstr "" #. (itstool) path: section/title #: C/asr.page:30 msgid "Start speech recognition" msgstr "" #. (itstool) path: section/p #: C/asr.page:32 msgid "" "Select a language model in the Preferences Dialog, Speech recognition tab, see for more details." msgstr "" #. (itstool) path: section/p #: C/asr.page:35 msgid "" "Open the primary menu and click on Automatic transcription. This " "is only available, if you have setup and chosen a language model." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr.page:38 msgctxt "_" msgid "" "external ref='figures/asr-switch-to-asr.png' " "md5='91dc6bffa3b8a3342889d9bfccabc3c8'" msgstr "" #. (itstool) path: section/p #: C/asr.page:40 msgid "" "Now press Play in Parlatype and the recognized speech " "will be printed in LibreOffice, if the Parlatype Extension is " "installed. Output is silent because decoding speed is dependent on your " "machine and may be slower or faster than real-time speech." msgstr "" #. (itstool) path: section/p #: C/asr.page:45 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #: C/asr.page:47 msgid "" "Accuracy depends on many factors like quality of the recording, " "background noise, speaker’s dialect or pronunciation and the speech model " "used. For general transcription you can expect an word error rate between 10 " "and 50 %. Alas this means that in some cases manual transcription from the " "start will be faster than automatic transcription and the following " "correction process." msgstr "" #. (itstool) path: info/desc #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:17 msgid "" "For speech recognition you need a language model: one or more files trained " "with real speech samples. Parlatype supports language models made " "for CMU Sphinx and Mozilla DeepSpeech and ships a couple of language " "model configurations." msgstr "" #. (itstool) path: note/p #: C/asr-setup.page:22 msgid "" "A language model configuration contains meta data describing the " "language model: A name that you can change, the language it was made for, " "speech recognition engine, publisher, license etc. It has a (third party) " "link, where you can download the files. Part of the configuration is the " "base folder, where you have saved the model. Additionally it contains " "various parameters for the plugin which are not shown." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:29 msgid "" "Open the Preferences Dialog and click on the Speech Recognition " "tab. Initially there are no configurations available, click on the Add " "a configuration button." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:33 msgctxt "_" msgid "" "external ref='figures/asr-setup-initial.png' " "md5='31773b99dcbb1ee84e59e119a0bd35c6'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:36 msgid "download" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:37 msgid "unavailable" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:35 msgid "" "If your installation has CMU Sphinx or Mozilla DeepSpeech enabled, you will " "see configurations with a <_:media-1/> symbol. Otherwise you will see only " "configurations with a <_:media-2/> symbol." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:39 msgctxt "_" msgid "" "external ref='figures/asr-setup-downloadable.png' " "md5='6e00b08a60952e8f408bec4a024be2e5'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:42 msgid "settings" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:41 msgid "" "Select a configuration and click on the <_:media-1/> button. There is a " "short description of the model and where you can download it. After " "downloading, you have to set the folder where your download resides. You can " "also change the Display name." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:47 msgctxt "_" msgid "" "external ref='figures/asr-setup-details.png' " "md5='3273410dfb31da8518a64d28af0da7b1'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:50 msgid "selected" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:49 msgid "" "An installed model has no symbol next to it. Double click on the model and " "it will be selected for speech recognition, a <_:media-1/> symbol appears." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:53 msgid "" "Shipped configurations might get obsolete over time. Therefore you can " "import a configuration with the + button. Configurations are text " "files with an .asr ending." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:57 msgid "" "With the - button you can remove a configuration. This will never " "remove downloaded models, only the configuration file." msgstr "" #. (itstool) path: info/desc #: C/media-keys.page:6 msgid "How to control Parlatype with media keys" msgstr "" #. (itstool) path: page/title #: C/media-keys.page:14 msgid "Media keys" msgstr "" #. (itstool) path: page/p #: C/media-keys.page:16 msgid "" "Parlatype’s basic functions can be controlled with so called " "media keys. Media keys are used system wide to control media " "players and they are working even if the media player is not in focus or in " "the background." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:18 msgid "" "You can change the media keys in GNOME settings. You can use dedicated keys " "from a multimedia keyboard or use any other key or combination of keys." msgstr "" #. (itstool) path: note/p #: C/media-keys.page:21 msgid "" "This will affect other media players, e.g. Totem or " "Rhythmbox, as well." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:24 msgid "Parlatype listens to these key strokes:" msgstr "" #. (itstool) path: item/p #: C/media-keys.page:26 msgid "" "Play, Pause, Stop: Each of these keys " "toggles between playing and pause." msgstr "" #. (itstool) path: item/p #: C/media-keys.page:27 msgid "" "Rewind, Previous: Each of these keys will jump back " "the time you selected in Preferences." msgstr "" #. (itstool) path: item/p #: C/media-keys.page:28 msgid "" "Fast Forward, Next: Each of these keys will jump ahead " "the time you selected in Preferences." msgstr "" #. (itstool) path: note/p #: C/media-keys.page:32 msgid "" "For detailed instructions how to change keyboard shortcuts in GNOME see the " "official " "documentation." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:35 msgid "" "If you are using a dedicated foot pedal, it should be possible to map the " "foot pedal signals to any of the keys. This is not well tested, however. Any " "feedback regarding foot pedals is welcome." msgstr "" parlatype-3.0/help/hu/000077500000000000000000000000001414030451500147165ustar00rootroot00000000000000parlatype-3.0/help/hu/hu.po000066400000000000000000000754741414030451500157130ustar00rootroot00000000000000# Hungarian translation for parlatype # Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2019. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2021-10-18 21:35+0200\n" "PO-Revision-Date: 2020-03-09 16:30+0000\n" "Last-Translator: Gabor Karsay \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" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #. Put one translator per line, in the form NAME , YEAR1, YEAR2 msgctxt "_" msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " Óvári https://launchpad.net/~ovari" #. (itstool) path: info/title #: C/index.page:7 msgctxt "text" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: info/title #: C/index.page:8 msgctxt "link" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: credit/name #: C/index.page:10 C/drag-and-drop.page:8 C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 C/preferences.page:8 C/selections.page:8 #: C/timestamps.page:8 C/asr.page:9 C/asr-setup.page:9 C/media-keys.page:8 msgid "Gabor Karsay" msgstr "Karsay Gábor" #. (itstool) path: info/desc #. (itstool) path: page/p #: C/index.page:14 C/index.page:23 msgid "" "Parlatype is an easy to use media player. Its main purpose is to " "help you transcribing speech." msgstr "" "A Parlatype egy könnyen használható médialejátszó. Fő célja a " "beszéd átírása." #. (itstool) path: page/title #: C/index.page:18 msgid "<_:media-1/> Parlatype" msgstr "<_:media-1/> Parlatype" #. (itstool) path: page/p #: C/index.page:24 msgid "" "For a quick overview have a look at . Other " "topics are covered below." msgstr "" #. (itstool) path: section/title #: C/index.page:27 msgid "Help topics" msgstr "Súgó témák" #. (itstool) path: info/desc #: C/drag-and-drop.page:6 msgid "Drop files, file names or timestamps on Parlatype" msgstr "Fájlok, fájlnevek vagy időbélyegek cseppelése a Parlatype-on" #. (itstool) path: page/title #: C/drag-and-drop.page:14 msgid "Drag and Drop" msgstr "Fogd és vidd" #. (itstool) path: page/p #: C/drag-and-drop.page:16 msgid "" "You can drop files, file names or timestamps on Parlatype’s " "window." msgstr "" "A Parlatype ablakában fájlokat, fájlneveket vagy időbélyegeket " "dobhat le." #. (itstool) path: item/p #: C/drag-and-drop.page:19 msgid "" "Files: Drag and drop a file from a file manager, e.g. Files, on " "Parlatype and it will open that file." msgstr "" "Fájlok: Húzza át a fájlt fájlkezelőből, pl. Fájlokat, a " "Parlatype-on, és megnyitja a fájlt." #. (itstool) path: item/p #: C/drag-and-drop.page:20 msgid "" "File names: Select a file name from a word processor, e.g. LibreOffice, drop the selected text on Parlatype and it will open that " "file. This will always work if the selection contains a full path. If you " "select the name only, Parlatype will look up its full path in the " "list of recent files and open it if it can find it in that list." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:21 msgid "" "Timestamps: You can drag and drop timestamps to Parlatype. Select " "a timestamp from a word processor, e.g. LibreOffice, drop the " "selected text on Parlatype and it will jump to that position." msgstr "" #. (itstool) path: info/desc #. (itstool) path: page/title #: C/first-steps.page:6 C/first-steps.page:14 msgid "First steps with Parlatype" msgstr "Első lépések a Parlatype programmal" #. (itstool) path: page/p #: C/first-steps.page:16 msgid "" "Parlatype is an easy to use audio player to help you transcribing " "or annotating recorded speech. You need to run a word processor, e.g. " "LibreOffice, too. Launch Parlatype and open an audio " "file by clicking on the Open button in the upper left corner." msgstr "" #. (itstool) path: note/p #: C/first-steps.page:19 msgid "You can also drag and drop a file on Parlatype." msgstr "Fogd és vidd egy fájlt a Parlatype-on." #. (itstool) path: page/p #: C/first-steps.page:22 msgid "" "In the lower left corner there are the controls with a Play " "button which toggles between play and pause. Whenever you pause, " "Parlatype rewinds a few seconds to make it easier to resume. This " "can be changed in the ." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/first-steps.page:24 msgctxt "_" msgid "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" msgstr "" #. (itstool) path: page/p #: C/first-steps.page:26 msgid "" "The buttons Jump back and Jump forward in the lower " "left corner skip a few seconds back or ahead. The amount of time can be " "changed in the ." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:28 msgid "" "The view scrolls automatically so that the cursor is always visible. You can " "scroll manually by clicking on or dragging the scroll bar or using the " "standard keybindings. Automatic scrolling is stopped then." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:30 msgid "" "To get back to the cursor’s position and let the view scroll automatically " "again, click on the menu button showing the time and then on Go to " "cursor. Clicking on the Play button also turns automatic " "scrolling on." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:32 msgid "" "Clicking in the view with the right mouse button will put the cursor there, " "also holding the right mouse button pressed and moving it. The left mouse " "button is for ." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:34 msgid "" "The speed scale next to the volume button in the lower " "right corner lets you adjust the speed of playback. A value of 1 means " "normal speed, everything lower (down to 0.5) is slower, everything above is " "faster." msgstr "" #. (itstool) path: info/desc #: C/keyboard-shortcuts.page:6 msgid "Standard keyboard shortcuts in Parlatype" msgstr "A Parlatype szabványos gyorsbillentyűi" #. (itstool) path: page/title #: C/keyboard-shortcuts.page:14 msgid "Keyboard shortcuts" msgstr "Gyorsbillentyűk" #. (itstool) path: page/p #: C/keyboard-shortcuts.page:16 msgid "" "Keyboard shortcuts for Parlatype control, like Play, " "are described in . Shortcut keys for the window are " "listed below." msgstr "" #. (itstool) path: table/title #: C/keyboard-shortcuts.page:19 msgid "Standard Shortcut keys" msgstr "Szabványos gyorsbillentyűk" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:22 msgid "To Do This" msgstr "Ehhez" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:23 msgid "Press This" msgstr "Nyomja meg" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:28 msgid "Show help" msgstr "Súgó megjelenítése" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:29 msgid "F1" msgstr "F1" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:32 msgid "Open file" msgstr "Fájl megnyitása" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:33 msgid "Ctrlo" msgstr "Ctrln" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:36 msgid "Play/Pause" msgstr "Lejátszás/Szünet" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:37 msgid "CtrlSpace" msgstr "CtrlSzóköz" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:40 msgid "Go to …" msgstr "Ugrás…" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:41 msgid "Ctrlg" msgstr "CtrlU" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:44 msgid "Jump back" msgstr "Ugrás vissza" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:45 msgid "CtrlLeft" msgstr "CtrlBalra" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:48 msgid "Jump forward" msgstr "Ugrás előre" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:49 msgid "CtrlRight" msgstr "CtrlJobbra" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:52 msgid "Copy timestamp" msgstr "Időbélyegző másolása" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:53 msgid "Ctrlc" msgstr "CtrlC" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:56 msgid "Insert timestamp" msgstr "Idõbélyeg beillesztése" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:57 msgid "Ctrlv" msgstr "CtrlV" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:60 msgid "Zoom in" msgstr "Nagyítás" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:61 msgid "Ctrl+" msgstr "Ctrl+" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:64 msgid "Zoom out" msgstr "Kicsinyítés" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:65 msgid "Ctrl-" msgstr "Ctrl-" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:68 msgid "Quit" msgstr "Kilépés" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:69 msgid "Ctrlq" msgstr "CtrlQ" #. (itstool) path: p/link #: C/legal.xml:5 msgid "Creative Commons Attribution-ShareAlike 4.0 International" msgstr "" "Creative Commons „Nevezd meg! - Így add tovább!” 4.0 Nemzetközi licenc (CC " "BY-SA 4.0)" #. (itstool) path: license/p #: C/legal.xml:4 msgid "This work is licensed under a <_:link-1/> license." msgstr "Ez a munka <_:link-1/>-licenc alapján engedélyezett." #. (itstool) path: info/desc #: C/preferences.page:6 msgid "How to customize Parlatype" msgstr "" #. (itstool) path: page/title #: C/preferences.page:14 msgid "Preferences" msgstr "" #. (itstool) path: page/p #: C/preferences.page:16 msgid "" "To open the preferences dialog click on the primary menu in the headerbar." msgstr "" #. (itstool) path: section/title #: C/preferences.page:21 msgid "Preferences for the waveform" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:23 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:26 msgid "" "Resolution: The resolution of the waveform image is given in pixels per " "second, e.g. the default resolution of 100 means, that one second is shown " "with a width of 100 pixels." msgstr "" #. (itstool) path: item/p #: C/preferences.page:27 msgid "" "Fixed vs. moving cursor: There are two modes, how to follow the cursor. On " "slower systems a moving cursor might be smoother." msgstr "" #. (itstool) path: item/p #: C/preferences.page:28 msgid "Show time scale: Turn the time scale on or off." msgstr "" #. (itstool) path: section/title #: C/preferences.page:33 msgid "Preferences for controls" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:35 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:38 msgid "" "Jump back on pause: Parlatype will rewind a few seconds on each " "pause, this way you can easier resume typing. Set this value to 0 if you " "don’t want this behaviour." msgstr "" #. (itstool) path: item/p #: C/preferences.page:39 msgid "" "Jump back: Configures how many seconds to skip when the Jump back " "button is pressed." msgstr "" #. (itstool) path: item/p #: C/preferences.page:40 msgid "" "Jump forward: Configures how many seconds to skip when the Jump " "forward button is pressed." msgstr "" #. (itstool) path: item/p #: C/preferences.page:41 msgid "" "Pressing Play at the end of file – Replay file: Whether you want " "to repeat the file at the end. If not, it will replay a few seconds like on " "pause." msgstr "" #. (itstool) path: item/p #: C/preferences.page:42 msgid "" "Pressing Play at the end of selection – Replay selection: Whether " "you want to repeat the selection. If not, it will replay a few seconds like " "on pause." msgstr "" #. (itstool) path: section/title #: C/preferences.page:47 msgid "Preferences for timestamps" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:49 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" msgstr "" #. (itstool) path: section/p #: C/preferences.page:51 msgid "" "These settings affect how Parlatype formats timestamps. If you " "need a certain format in your transcription, you can adjust it here." msgstr "" #. (itstool) path: note/p #: C/preferences.page:52 msgid "" "There are no settings for reading timestamps. Parlatype " "reads and accepts all of these formats." msgstr "" #. (itstool) path: item/p #: C/preferences.page:54 msgid "" "Always show hours and leading zeroes: Whether to show a fixed number of " "digits. Changing any of these values will show an updated example in the " "Example section below." msgstr "" #. (itstool) path: item/p #: C/preferences.page:55 msgid "Precision: Choose between full seconds, 10th seconds or 100th seconds." msgstr "" #. (itstool) path: item/p #: C/preferences.page:56 msgid "" "Fraction separator: Choose between a point or a hyphen to separate fractions " "of a second." msgstr "" #. (itstool) path: item/p #: C/preferences.page:57 msgid "" "Characters around timestamps: Choose between number signs, round brackets, " "square brackets or none." msgstr "" #. (itstool) path: section/title #: C/preferences.page:62 msgid "Preferences for speech recognition" msgstr "" #. (itstool) path: note/p #: C/preferences.page:65 msgid "" "This tab is only visible, if speech recognition is enabled in Parlatype." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:68 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" msgstr "" #. (itstool) path: section/p #: C/preferences.page:70 msgid "" "Here you can choose which language model to use. If you don’t have a " "language model yet, an assistant will guide you through the process of " "downloading it. You can have as many language models as you need, they can " "be added with the + button." msgstr "" #. (itstool) path: section/p #: C/preferences.page:72 msgid "" "To select a model click on its radio button in the list. If you click just " "on the name, you can see the model’s basic parameters. You could even change " "them, but that’s not recommended." msgstr "" #. (itstool) path: section/p #: C/preferences.page:74 msgid "" "The - button removes a model from the list. The model’s files " "however are not deleted, just the model entry is removed." msgstr "" #. (itstool) path: section/title #: C/preferences.page:80 msgid "Preferences for the window" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:82 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:85 msgid "" "Remember size: On start-up Parlatype sets the window size to the " "size it had the last time." msgstr "" #. (itstool) path: item/p #: C/preferences.page:86 msgid "" "Remember position: On start-up Parlatype can position its window " "where you had it when you closed Parlatype last time." msgstr "" #. (itstool) path: item/p #: C/preferences.page:87 msgid "" "Start on top: This will put Parlatype on start-up on top of other " "windows. This might be useful if you are working with a maximized word " "processor and still want to see the Parlatype window." msgstr "" #. (itstool) path: note/p #: C/preferences.page:91 msgid "" "Remember position and Start on top are not available " "on Wayland." msgstr "" #. (itstool) path: info/desc #: C/selections.page:6 msgid "How to play and repeat a selection" msgstr "" #. (itstool) path: page/title #: C/selections.page:14 msgid "Selections" msgstr "" #. (itstool) path: page/p #: C/selections.page:16 msgid "" "You can select a piece of the waveform with the mouse. Next time you press " "Play, it will play the selection only. When it is finished and " "you press Play again, it will loop the selection once." msgstr "" #. (itstool) path: note/p #: C/selections.page:18 msgid "" "When in selection mode, you can not exit the selection anymore until you " "deselect it." msgstr "" #. (itstool) path: page/p #: C/selections.page:20 msgid "" "Selections can be made with the mouse (or pointer device) with a left click, " "holding the mouse button and dragging the pointer. If you click with " "Shift key pressed, an already existing selection will be enlarged " "to that point." msgstr "" #. (itstool) path: page/p #: C/selections.page:22 msgid "" "To deselect click once with the left button into the waveform. If the " "waveform has keyboard focus, you can press Escape." msgstr "" #. (itstool) path: info/desc #: C/timestamps.page:6 msgid "Set and go to timestamps" msgstr "" #. (itstool) path: page/title #: C/timestamps.page:14 msgid "Timestamps" msgstr "" #. (itstool) path: page/p #: C/timestamps.page:16 msgid "Timestamps help you to navigate in your transcription." msgstr "" #. (itstool) path: note/p #: C/timestamps.page:19 msgid "" "Timestamps can look like this: #03:45.2#. You can select them with or " "without the number signs." msgstr "" #. (itstool) path: page/p #: C/timestamps.page:22 msgid "" "Parlatype can produce different timestamp formats, they can be " "set in ." msgstr "" #. (itstool) path: section/title #: C/timestamps.page:25 msgid "Drag and drop" msgstr "" #. (itstool) path: section/p #: C/timestamps.page:27 msgid "" "If you select the timestamp in the word processor, you can drag and drop it " "on the Parlatype window and it will go to that position. This is " "also possible the other way round: Drag the time label from Parlatype to a word processor and drop it there to insert it." msgstr "" #. (itstool) path: section/title #: C/timestamps.page:31 msgid "Using the clipboard" msgstr "" #. (itstool) path: section/p #: C/timestamps.page:33 msgid "" "Clicking on the menu button that is showing the current time you can " "Copy time to clipboard or Go to time in clipboard." msgstr "" #. (itstool) path: section/p #: C/timestamps.page:35 msgid "" "This can also be done with keyboard shortcuts. First make sure, the " "Parlatype window has focus. With the key sequence " "Ctrlc the current timestamp is copied " "to the clipboard. Changing to the word processor you can insert now the " "timestamp in your transcription." msgstr "" #. (itstool) path: section/p #: C/timestamps.page:36 msgid "" "To go to a timestamp position, copy the timestamp in the word processor to " "the clipboard. Once you have changed focus to Parlatype press " "Ctrlv." msgstr "" #. (itstool) path: info/desc #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "" #. (itstool) path: page/title #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "" #. (itstool) path: page/p #: C/asr.page:17 msgid "" "Parlatype offers automatic speech recognition that is done on " "your computer. No data is sent over the network." msgstr "" #. (itstool) path: note/p #: C/asr.page:20 msgid "" "Parlatype must have been built with PocketSphinx or " "Mozilla DeepSpeech. Please note that those libraries might be not " "available on your platform." msgstr "" #. (itstool) path: note/p #: C/asr.page:25 msgid "" "Parlatype has no built-in text editor. You need the Parlatype " "Extension for LibreOffice to output recognized text." msgstr "" #. (itstool) path: section/title #: C/asr.page:30 msgid "Start speech recognition" msgstr "" #. (itstool) path: section/p #: C/asr.page:32 msgid "" "Select a language model in the Preferences Dialog, Speech recognition tab, see for more details." msgstr "" #. (itstool) path: section/p #: C/asr.page:35 msgid "" "Open the primary menu and click on Automatic transcription. This " "is only available, if you have setup and chosen a language model." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr.page:38 msgctxt "_" msgid "" "external ref='figures/asr-switch-to-asr.png' " "md5='91dc6bffa3b8a3342889d9bfccabc3c8'" msgstr "" #. (itstool) path: section/p #: C/asr.page:40 msgid "" "Now press Play in Parlatype and the recognized speech " "will be printed in LibreOffice, if the Parlatype Extension is " "installed. Output is silent because decoding speed is dependent on your " "machine and may be slower or faster than real-time speech." msgstr "" #. (itstool) path: section/p #: C/asr.page:45 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #: C/asr.page:47 msgid "" "Accuracy depends on many factors like quality of the recording, " "background noise, speaker’s dialect or pronunciation and the speech model " "used. For general transcription you can expect an word error rate between 10 " "and 50 %. Alas this means that in some cases manual transcription from the " "start will be faster than automatic transcription and the following " "correction process." msgstr "" #. (itstool) path: info/desc #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:17 msgid "" "For speech recognition you need a language model: one or more files trained " "with real speech samples. Parlatype supports language models made " "for CMU Sphinx and Mozilla DeepSpeech and ships a couple of language " "model configurations." msgstr "" #. (itstool) path: note/p #: C/asr-setup.page:22 msgid "" "A language model configuration contains meta data describing the " "language model: A name that you can change, the language it was made for, " "speech recognition engine, publisher, license etc. It has a (third party) " "link, where you can download the files. Part of the configuration is the " "base folder, where you have saved the model. Additionally it contains " "various parameters for the plugin which are not shown." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:29 msgid "" "Open the Preferences Dialog and click on the Speech Recognition " "tab. Initially there are no configurations available, click on the Add " "a configuration button." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:33 msgctxt "_" msgid "" "external ref='figures/asr-setup-initial.png' " "md5='31773b99dcbb1ee84e59e119a0bd35c6'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:36 msgid "download" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:37 msgid "unavailable" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:35 msgid "" "If your installation has CMU Sphinx or Mozilla DeepSpeech enabled, you will " "see configurations with a <_:media-1/> symbol. Otherwise you will see only " "configurations with a <_:media-2/> symbol." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:39 msgctxt "_" msgid "" "external ref='figures/asr-setup-downloadable.png' " "md5='6e00b08a60952e8f408bec4a024be2e5'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:42 msgid "settings" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:41 msgid "" "Select a configuration and click on the <_:media-1/> button. There is a " "short description of the model and where you can download it. After " "downloading, you have to set the folder where your download resides. You can " "also change the Display name." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:47 msgctxt "_" msgid "" "external ref='figures/asr-setup-details.png' " "md5='3273410dfb31da8518a64d28af0da7b1'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:50 msgid "selected" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:49 msgid "" "An installed model has no symbol next to it. Double click on the model and " "it will be selected for speech recognition, a <_:media-1/> symbol appears." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:53 msgid "" "Shipped configurations might get obsolete over time. Therefore you can " "import a configuration with the + button. Configurations are text " "files with an .asr ending." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:57 msgid "" "With the - button you can remove a configuration. This will never " "remove downloaded models, only the configuration file." msgstr "" #. (itstool) path: info/desc #: C/media-keys.page:6 msgid "How to control Parlatype with media keys" msgstr "Hogyan vezérelhetjük a Parlatype-t a médiabillentyűkkal segítségével" #. (itstool) path: page/title #: C/media-keys.page:14 msgid "Media keys" msgstr "Médiabillentyűk" #. (itstool) path: page/p #: C/media-keys.page:16 msgid "" "Parlatype’s basic functions can be controlled with so called " "media keys. Media keys are used system wide to control media " "players and they are working even if the media player is not in focus or in " "the background." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:18 msgid "" "You can change the media keys in GNOME settings. You can use dedicated keys " "from a multimedia keyboard or use any other key or combination of keys." msgstr "" #. (itstool) path: note/p #: C/media-keys.page:21 msgid "" "This will affect other media players, e.g. Totem or " "Rhythmbox, as well." msgstr "" "Ez hatással lesz más médialejátszókra, pl. Totem vagy " "Rhythmbox is." #. (itstool) path: page/p #: C/media-keys.page:24 msgid "Parlatype listens to these key strokes:" msgstr "" #. (itstool) path: item/p #: C/media-keys.page:26 msgid "" "Play, Pause, Stop: Each of these keys " "toggles between playing and pause." msgstr "" #. (itstool) path: item/p #: C/media-keys.page:27 msgid "" "Rewind, Previous: Each of these keys will jump back " "the time you selected in Preferences." msgstr "" #. (itstool) path: item/p #: C/media-keys.page:28 msgid "" "Fast Forward, Next: Each of these keys will jump ahead " "the time you selected in Preferences." msgstr "" #. (itstool) path: note/p #: C/media-keys.page:32 msgid "" "For detailed instructions how to change keyboard shortcuts in GNOME see the " "official " "documentation." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:35 msgid "" "If you are using a dedicated foot pedal, it should be possible to map the " "foot pedal signals to any of the keys. This is not well tested, however. Any " "feedback regarding foot pedals is welcome." msgstr "" parlatype-3.0/help/id/000077500000000000000000000000001414030451500146765ustar00rootroot00000000000000parlatype-3.0/help/id/id.po000066400000000000000000001070061414030451500156360ustar00rootroot00000000000000# Indonesian translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # Ari Setyo Wibowo , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2021-10-18 21:35+0200\n" "PO-Revision-Date: 2017-04-18 18:57+0000\n" "Last-Translator: Ari Setyo Wibowo \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" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #. Put one translator per line, in the form NAME , YEAR1, YEAR2 msgctxt "_" msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Ari Setyo Wibowo https://launchpad.net/~ari-el-uno" #. (itstool) path: info/title #: C/index.page:7 msgctxt "text" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: info/title #: C/index.page:8 msgctxt "link" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: credit/name #: C/index.page:10 C/drag-and-drop.page:8 C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 C/preferences.page:8 C/selections.page:8 #: C/timestamps.page:8 C/asr.page:9 C/asr-setup.page:9 C/media-keys.page:8 msgid "Gabor Karsay" msgstr "Gabor Karsay" #. (itstool) path: info/desc #. (itstool) path: page/p #: C/index.page:14 C/index.page:23 msgid "" "Parlatype is an easy to use media player. Its main purpose is to " "help you transcribing speech." msgstr "" "Parlatype adalah pemutar media yang mudah digunakan. Tujuan " "utamanya untuk membantu Anda mentranskrip pembicaraan." #. (itstool) path: page/title #: C/index.page:18 msgid "<_:media-1/> Parlatype" msgstr "<_:media-1/> Parlatype" #. (itstool) path: page/p #: C/index.page:24 msgid "" "For a quick overview have a look at . Other " "topics are covered below." msgstr "" "Untuk tinjauan ringkasnya silakan menuju . Topik " "lainnya terdapat di bawah." #. (itstool) path: section/title #: C/index.page:27 msgid "Help topics" msgstr "Topik bantuan" #. (itstool) path: info/desc #: C/drag-and-drop.page:6 msgid "Drop files, file names or timestamps on Parlatype" msgstr "Jatuhkan berkas, nama berkas atau informasi waktu pada Parlatype" #. (itstool) path: page/title #: C/drag-and-drop.page:14 msgid "Drag and Drop" msgstr "Seret dan Jatuhkan" #. (itstool) path: page/p #: C/drag-and-drop.page:16 msgid "" "You can drop files, file names or timestamps on Parlatype’s " "window." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:19 msgid "" "Files: Drag and drop a file from a file manager, e.g. Files, on " "Parlatype and it will open that file." msgstr "" "Berkas: Seret dan jatuhkan sebuah berkas dari sebuah pengatur berkas, e.g. " "Files, pada Parlatype dan ia akan membuka berkas " "tersebut." #. (itstool) path: item/p #: C/drag-and-drop.page:20 msgid "" "File names: Select a file name from a word processor, e.g. LibreOffice, drop the selected text on Parlatype and it will open that " "file. This will always work if the selection contains a full path. If you " "select the name only, Parlatype will look up its full path in the " "list of recent files and open it if it can find it in that list." msgstr "" "Nama berkas: Pilih sebuah nama berkas dari suatu pemroses kata, seperti. " "LibreOffice, jatuhkan teks terpilih pada Parlatype dan " "ia akan membuka berkas tersebut. Ini akan selalu bekerja jika pilihan " "mengandung alamat penuh. Jika Anda hanya memilih nama saja, Parlatype akan mencari alamat penuh dalam daftar berkas terakhir dan akan " "membukanya jika tidak menemukan dari daftar." #. (itstool) path: item/p #: C/drag-and-drop.page:21 msgid "" "Timestamps: You can drag and drop timestamps to Parlatype. Select " "a timestamp from a word processor, e.g. LibreOffice, drop the " "selected text on Parlatype and it will jump to that position." msgstr "" #. (itstool) path: info/desc #. (itstool) path: page/title #: C/first-steps.page:6 C/first-steps.page:14 msgid "First steps with Parlatype" msgstr "Langkah pertama dengan Parlatype" #. (itstool) path: page/p #: C/first-steps.page:16 msgid "" "Parlatype is an easy to use audio player to help you transcribing " "or annotating recorded speech. You need to run a word processor, e.g. " "LibreOffice, too. Launch Parlatype and open an audio " "file by clicking on the Open button in the upper left corner." msgstr "" "Parlatype adalah pemutar audio yang mudah digunakan untuk " "membantu Anda mentranskrip atau mencatat pembicaraan yang terekam. Anda " "perlu menjalankan sebuah pemroses kata, seperti. LibreOffice, " "juga. Jalankan Parlatype dan buka sebuah berkas audio dengan klik " "pada tombol Open di pojok kiri atas." #. (itstool) path: note/p #: C/first-steps.page:19 msgid "You can also drag and drop a file on Parlatype." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:22 msgid "" "In the lower left corner there are the controls with a Play " "button which toggles between play and pause. Whenever you pause, " "Parlatype rewinds a few seconds to make it easier to resume. This " "can be changed in the ." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/first-steps.page:24 msgctxt "_" msgid "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" msgstr "" #. (itstool) path: page/p #: C/first-steps.page:26 msgid "" "The buttons Jump back and Jump forward in the lower " "left corner skip a few seconds back or ahead. The amount of time can be " "changed in the ." msgstr "" "Tombol Jump back dan Jump forward di pojok kiri bawah " "melewati beberapa detik ke belakang atau ke depan. Jumlah waktu dapat diubah " "di ." #. (itstool) path: page/p #: C/first-steps.page:28 msgid "" "The view scrolls automatically so that the cursor is always visible. You can " "scroll manually by clicking on or dragging the scroll bar or using the " "standard keybindings. Automatic scrolling is stopped then." msgstr "" "Tampilan akan scroll otomatis sehingga kursor akan selalu terlihat. Anda " "dapat scroll manual dengan klik atau seret pada bilah scroll atau " "menggunakan tombol standar. Scroll otomatis akan dihentikan." #. (itstool) path: page/p #: C/first-steps.page:30 msgid "" "To get back to the cursor’s position and let the view scroll automatically " "again, click on the menu button showing the time and then on Go to " "cursor. Clicking on the Play button also turns automatic " "scrolling on." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:32 msgid "" "Clicking in the view with the right mouse button will put the cursor there, " "also holding the right mouse button pressed and moving it. The left mouse " "button is for ." msgstr "" "Klik pada tampilan dengan tombol kanan tetikus akan meletakkan kursor ke " "sana, juga menahan tombol kanan tetikus tertekan dan memindahnya. Tombol " "kiri tetikus untuk ." #. (itstool) path: page/p #: C/first-steps.page:34 msgid "" "The speed scale next to the volume button in the lower " "right corner lets you adjust the speed of playback. A value of 1 means " "normal speed, everything lower (down to 0.5) is slower, everything above is " "faster." msgstr "" "Skala kecepatan di samping tombol volume pada pojok " "kanan bawah mengizinkan Anda untuk mengatur kecepatan main. Nilai 1 berarti " "kecepatan normal, semua yang lebih rendah (hingga 0.5) adalah lebih lambat, " "semua yang lebih tinggi adalah lebih cepat." #. (itstool) path: info/desc #: C/keyboard-shortcuts.page:6 msgid "Standard keyboard shortcuts in Parlatype" msgstr "Pintasan papan ketik standar pada Parlatype" #. (itstool) path: page/title #: C/keyboard-shortcuts.page:14 msgid "Keyboard shortcuts" msgstr "Pintasan papan ketik" #. (itstool) path: page/p #: C/keyboard-shortcuts.page:16 msgid "" "Keyboard shortcuts for Parlatype control, like Play, " "are described in . Shortcut keys for the window are " "listed below." msgstr "" "Pintasan papan ketik untuk kendali Parlatype, seperti Main, dideskripsikan di . Tombol pintasan untuk " "jendela terdaftar di bawah ini." #. (itstool) path: table/title #: C/keyboard-shortcuts.page:19 msgid "Standard Shortcut keys" msgstr "Tombol pintasan standar" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:22 msgid "To Do This" msgstr "Untuk Melakukan Ini" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:23 msgid "Press This" msgstr "Tekan Ini" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:28 msgid "Show help" msgstr "Tampilkan bantuan" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:29 msgid "F1" msgstr "F1" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:32 msgid "Open file" msgstr "Buka berkas" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:33 msgid "Ctrlo" msgstr "Ctrlo" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:36 msgid "Play/Pause" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:37 msgid "CtrlSpace" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:40 msgid "Go to …" msgstr "Pergi ke …" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:41 msgid "Ctrlg" msgstr "Ctrlg" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:44 msgid "Jump back" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:45 msgid "CtrlLeft" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:48 msgid "Jump forward" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:49 msgid "CtrlRight" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:52 msgid "Copy timestamp" msgstr "Salin informasi waktu" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:53 msgid "Ctrlc" msgstr "Ctrlc" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:56 msgid "Insert timestamp" msgstr "Masukkan informasi waktu" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:57 msgid "Ctrlv" msgstr "Ctrlv" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:60 msgid "Zoom in" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:61 msgid "Ctrl+" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:64 msgid "Zoom out" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:65 msgid "Ctrl-" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:68 msgid "Quit" msgstr "Keluar" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:69 msgid "Ctrlq" msgstr "Ctrlq" #. (itstool) path: p/link #: C/legal.xml:5 msgid "Creative Commons Attribution-ShareAlike 4.0 International" msgstr "Creative Commons Attribution-ShareAlike 4.0 Internasional" #. (itstool) path: license/p #: C/legal.xml:4 msgid "This work is licensed under a <_:link-1/> license." msgstr "Pekerjaan ini dilisensikan di bawah lisensi <_:link-1/>." #. (itstool) path: info/desc #: C/preferences.page:6 msgid "How to customize Parlatype" msgstr "Bagaimana kustomasi Parlatype" #. (itstool) path: page/title #: C/preferences.page:14 msgid "Preferences" msgstr "Preferensi" #. (itstool) path: page/p #: C/preferences.page:16 msgid "" "To open the preferences dialog click on the primary menu in the headerbar." msgstr "" #. (itstool) path: section/title #: C/preferences.page:21 msgid "Preferences for the waveform" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:23 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:26 msgid "" "Resolution: The resolution of the waveform image is given in pixels per " "second, e.g. the default resolution of 100 means, that one second is shown " "with a width of 100 pixels." msgstr "" "Resolusi: Resolusi gambar gelombang pada satuan pixel per detik, seperti. " "resoluysi default 100 berarti, bahwa satu detik ditampilkan dalam lebar 100 " "pixel." #. (itstool) path: item/p #: C/preferences.page:27 msgid "" "Fixed vs. moving cursor: There are two modes, how to follow the cursor. On " "slower systems a moving cursor might be smoother." msgstr "" "Kursor tetap vs. bergerak: Ada dua mode, bagaimana mengikuti kursor. Pada " "sistem yang lebih lambat kursor yang bergerak mungkin lebih halus." #. (itstool) path: item/p #: C/preferences.page:28 msgid "Show time scale: Turn the time scale on or off." msgstr "Tampilkan skala waktu: Nyalakan atau matikan skala waktu." #. (itstool) path: section/title #: C/preferences.page:33 msgid "Preferences for controls" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:35 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:38 msgid "" "Jump back on pause: Parlatype will rewind a few seconds on each " "pause, this way you can easier resume typing. Set this value to 0 if you " "don’t want this behaviour." msgstr "" #. (itstool) path: item/p #: C/preferences.page:39 msgid "" "Jump back: Configures how many seconds to skip when the Jump back " "button is pressed." msgstr "" "Lompat mundur: Atur berapa detik untuk melewati saat tombol Lompat " "mundur ditekan." #. (itstool) path: item/p #: C/preferences.page:40 msgid "" "Jump forward: Configures how many seconds to skip when the Jump " "forward button is pressed." msgstr "" "Lompat maju: Atur berapa detik untuk melewati saat tombol Lompat maju ditekan." #. (itstool) path: item/p #: C/preferences.page:41 msgid "" "Pressing Play at the end of file – Replay file: Whether you want " "to repeat the file at the end. If not, it will replay a few seconds like on " "pause." msgstr "" #. (itstool) path: item/p #: C/preferences.page:42 msgid "" "Pressing Play at the end of selection – Replay selection: Whether " "you want to repeat the selection. If not, it will replay a few seconds like " "on pause." msgstr "" #. (itstool) path: section/title #: C/preferences.page:47 msgid "Preferences for timestamps" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:49 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" msgstr "" #. (itstool) path: section/p #: C/preferences.page:51 msgid "" "These settings affect how Parlatype formats timestamps. If you " "need a certain format in your transcription, you can adjust it here." msgstr "" #. (itstool) path: note/p #: C/preferences.page:52 msgid "" "There are no settings for reading timestamps. Parlatype " "reads and accepts all of these formats." msgstr "" #. (itstool) path: item/p #: C/preferences.page:54 msgid "" "Always show hours and leading zeroes: Whether to show a fixed number of " "digits. Changing any of these values will show an updated example in the " "Example section below." msgstr "" #. (itstool) path: item/p #: C/preferences.page:55 msgid "Precision: Choose between full seconds, 10th seconds or 100th seconds." msgstr "" #. (itstool) path: item/p #: C/preferences.page:56 msgid "" "Fraction separator: Choose between a point or a hyphen to separate fractions " "of a second." msgstr "" #. (itstool) path: item/p #: C/preferences.page:57 msgid "" "Characters around timestamps: Choose between number signs, round brackets, " "square brackets or none." msgstr "" #. (itstool) path: section/title #: C/preferences.page:62 msgid "Preferences for speech recognition" msgstr "" #. (itstool) path: note/p #: C/preferences.page:65 msgid "" "This tab is only visible, if speech recognition is enabled in Parlatype." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:68 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" msgstr "" #. (itstool) path: section/p #: C/preferences.page:70 msgid "" "Here you can choose which language model to use. If you don’t have a " "language model yet, an assistant will guide you through the process of " "downloading it. You can have as many language models as you need, they can " "be added with the + button." msgstr "" #. (itstool) path: section/p #: C/preferences.page:72 msgid "" "To select a model click on its radio button in the list. If you click just " "on the name, you can see the model’s basic parameters. You could even change " "them, but that’s not recommended." msgstr "" #. (itstool) path: section/p #: C/preferences.page:74 msgid "" "The - button removes a model from the list. The model’s files " "however are not deleted, just the model entry is removed." msgstr "" #. (itstool) path: section/title #: C/preferences.page:80 msgid "Preferences for the window" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:82 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:85 msgid "" "Remember size: On start-up Parlatype sets the window size to the " "size it had the last time." msgstr "" #. (itstool) path: item/p #: C/preferences.page:86 msgid "" "Remember position: On start-up Parlatype can position its window " "where you had it when you closed Parlatype last time." msgstr "" #. (itstool) path: item/p #: C/preferences.page:87 msgid "" "Start on top: This will put Parlatype on start-up on top of other " "windows. This might be useful if you are working with a maximized word " "processor and still want to see the Parlatype window." msgstr "" "Mulai di atas: Ini akan meletakkan Parlatype saat start-up di " "atas jendela lainnya. Ini mungkin berguna saat Anda bekerja dengan pengolah " "kata yang termaksimalkan dan tetap ingin melihat jendela Parlatype." #. (itstool) path: note/p #: C/preferences.page:91 msgid "" "Remember position and Start on top are not available " "on Wayland." msgstr "" #. (itstool) path: info/desc #: C/selections.page:6 msgid "How to play and repeat a selection" msgstr "Bagaimana memainkan dan mengulangi pilihan" #. (itstool) path: page/title #: C/selections.page:14 msgid "Selections" msgstr "Pilihan" #. (itstool) path: page/p #: C/selections.page:16 msgid "" "You can select a piece of the waveform with the mouse. Next time you press " "Play, it will play the selection only. When it is finished and " "you press Play again, it will loop the selection once." msgstr "" "Anda dapat memilih sebagian gelombang dengan tetikus. Saat nanti Anda tekan " "Main, itu akan memainkan pilihan saja. Saat sudah selesai dan " "Anda tekan Main lagi, itu akan mengulangi pilihan sekali lagi." #. (itstool) path: note/p #: C/selections.page:18 msgid "" "When in selection mode, you can not exit the selection anymore until you " "deselect it." msgstr "" "Pada mode pilihan, Anda tidak dapat mengeluarkan pilihan lagi hingga Anda " "menghilangkan pilihan." #. (itstool) path: page/p #: C/selections.page:20 msgid "" "Selections can be made with the mouse (or pointer device) with a left click, " "holding the mouse button and dragging the pointer. If you click with " "Shift key pressed, an already existing selection will be enlarged " "to that point." msgstr "" "Pilihan dapat dibuat dengan tetikus (atau perangkat pointer) dengan klik " "kiri, menahan tombol tetikus dan menyeret pointer. Jika Anda klik dengan " "tombol Shift ditekan, pilihan yang sudah terpilih akan dilebarkan " "ke titik tersebut." #. (itstool) path: page/p #: C/selections.page:22 msgid "" "To deselect click once with the left button into the waveform. If the " "waveform has keyboard focus, you can press Escape." msgstr "" "Untuk menghilangkan pilihan klik sekali dengan tombol kiri ke dalam " "gelombang. Jika gelombang dapat fokus dari papan ketik, Anda dapat menekan " "Escape." #. (itstool) path: info/desc #: C/timestamps.page:6 msgid "Set and go to timestamps" msgstr "Tentukan dan pergi ke informasi waktu" #. (itstool) path: page/title #: C/timestamps.page:14 msgid "Timestamps" msgstr "Informasi waktu" #. (itstool) path: page/p #: C/timestamps.page:16 msgid "Timestamps help you to navigate in your transcription." msgstr "Informasi waktu membantu Anda untuk menavigasi transkripsi Anda." #. (itstool) path: note/p #: C/timestamps.page:19 msgid "" "Timestamps can look like this: #03:45.2#. You can select them with or " "without the number signs." msgstr "" #. (itstool) path: page/p #: C/timestamps.page:22 msgid "" "Parlatype can produce different timestamp formats, they can be " "set in ." msgstr "" #. (itstool) path: section/title #: C/timestamps.page:25 msgid "Drag and drop" msgstr "Seret dan jatuhkan" #. (itstool) path: section/p #: C/timestamps.page:27 msgid "" "If you select the timestamp in the word processor, you can drag and drop it " "on the Parlatype window and it will go to that position. This is " "also possible the other way round: Drag the time label from Parlatype to a word processor and drop it there to insert it." msgstr "" "Jika Anda memilih informasi waktu di pengolah kata, Anda dapat menyeret dan " "menjatuhkannya pada jendela Parlatype dan ia akan pergi ke posisi " "tersebut. Ini juga mungkin cara lainnya: Seret label waktu dari " "Parlatype ke pengolah kata dan jatuhkan ke sana untuk " "memasukkannya." #. (itstool) path: section/title #: C/timestamps.page:31 msgid "Using the clipboard" msgstr "Menggunakan papan salinan" #. (itstool) path: section/p #: C/timestamps.page:33 msgid "" "Clicking on the menu button that is showing the current time you can " "Copy time to clipboard or Go to time in clipboard." msgstr "" #. (itstool) path: section/p #: C/timestamps.page:35 msgid "" "This can also be done with keyboard shortcuts. First make sure, the " "Parlatype window has focus. With the key sequence " "Ctrlc the current timestamp is copied " "to the clipboard. Changing to the word processor you can insert now the " "timestamp in your transcription." msgstr "" #. (itstool) path: section/p #: C/timestamps.page:36 msgid "" "To go to a timestamp position, copy the timestamp in the word processor to " "the clipboard. Once you have changed focus to Parlatype press " "Ctrlv." msgstr "" "Untuk pergi ke posisi informasi waktu, salin informasi waktu di pengolah " "kata ke papan salinan. Setelah Anda berpindah fokus ke Parlatype " "tekan Ctrlv." #. (itstool) path: info/desc #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "" #. (itstool) path: page/title #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "" #. (itstool) path: page/p #: C/asr.page:17 msgid "" "Parlatype offers automatic speech recognition that is done on " "your computer. No data is sent over the network." msgstr "" #. (itstool) path: note/p #: C/asr.page:20 msgid "" "Parlatype must have been built with PocketSphinx or " "Mozilla DeepSpeech. Please note that those libraries might be not " "available on your platform." msgstr "" #. (itstool) path: note/p #: C/asr.page:25 msgid "" "Parlatype has no built-in text editor. You need the Parlatype " "Extension for LibreOffice to output recognized text." msgstr "" #. (itstool) path: section/title #: C/asr.page:30 msgid "Start speech recognition" msgstr "" #. (itstool) path: section/p #: C/asr.page:32 msgid "" "Select a language model in the Preferences Dialog, Speech recognition tab, see for more details." msgstr "" #. (itstool) path: section/p #: C/asr.page:35 msgid "" "Open the primary menu and click on Automatic transcription. This " "is only available, if you have setup and chosen a language model." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr.page:38 msgctxt "_" msgid "" "external ref='figures/asr-switch-to-asr.png' " "md5='91dc6bffa3b8a3342889d9bfccabc3c8'" msgstr "" #. (itstool) path: section/p #: C/asr.page:40 msgid "" "Now press Play in Parlatype and the recognized speech " "will be printed in LibreOffice, if the Parlatype Extension is " "installed. Output is silent because decoding speed is dependent on your " "machine and may be slower or faster than real-time speech." msgstr "" #. (itstool) path: section/p #: C/asr.page:45 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #: C/asr.page:47 msgid "" "Accuracy depends on many factors like quality of the recording, " "background noise, speaker’s dialect or pronunciation and the speech model " "used. For general transcription you can expect an word error rate between 10 " "and 50 %. Alas this means that in some cases manual transcription from the " "start will be faster than automatic transcription and the following " "correction process." msgstr "" #. (itstool) path: info/desc #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:17 msgid "" "For speech recognition you need a language model: one or more files trained " "with real speech samples. Parlatype supports language models made " "for CMU Sphinx and Mozilla DeepSpeech and ships a couple of language " "model configurations." msgstr "" #. (itstool) path: note/p #: C/asr-setup.page:22 msgid "" "A language model configuration contains meta data describing the " "language model: A name that you can change, the language it was made for, " "speech recognition engine, publisher, license etc. It has a (third party) " "link, where you can download the files. Part of the configuration is the " "base folder, where you have saved the model. Additionally it contains " "various parameters for the plugin which are not shown." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:29 msgid "" "Open the Preferences Dialog and click on the Speech Recognition " "tab. Initially there are no configurations available, click on the Add " "a configuration button." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:33 msgctxt "_" msgid "" "external ref='figures/asr-setup-initial.png' " "md5='31773b99dcbb1ee84e59e119a0bd35c6'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:36 msgid "download" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:37 msgid "unavailable" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:35 msgid "" "If your installation has CMU Sphinx or Mozilla DeepSpeech enabled, you will " "see configurations with a <_:media-1/> symbol. Otherwise you will see only " "configurations with a <_:media-2/> symbol." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:39 msgctxt "_" msgid "" "external ref='figures/asr-setup-downloadable.png' " "md5='6e00b08a60952e8f408bec4a024be2e5'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:42 msgid "settings" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:41 msgid "" "Select a configuration and click on the <_:media-1/> button. There is a " "short description of the model and where you can download it. After " "downloading, you have to set the folder where your download resides. You can " "also change the Display name." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:47 msgctxt "_" msgid "" "external ref='figures/asr-setup-details.png' " "md5='3273410dfb31da8518a64d28af0da7b1'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:50 msgid "selected" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:49 msgid "" "An installed model has no symbol next to it. Double click on the model and " "it will be selected for speech recognition, a <_:media-1/> symbol appears." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:53 msgid "" "Shipped configurations might get obsolete over time. Therefore you can " "import a configuration with the + button. Configurations are text " "files with an .asr ending." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:57 msgid "" "With the - button you can remove a configuration. This will never " "remove downloaded models, only the configuration file." msgstr "" #. (itstool) path: info/desc #: C/media-keys.page:6 msgid "How to control Parlatype with media keys" msgstr "Bagaimana mengendalikan Parlatype dengan tombol media" #. (itstool) path: page/title #: C/media-keys.page:14 msgid "Media keys" msgstr "Tombol media" #. (itstool) path: page/p #: C/media-keys.page:16 msgid "" "Parlatype’s basic functions can be controlled with so called " "media keys. Media keys are used system wide to control media " "players and they are working even if the media player is not in focus or in " "the background." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:18 msgid "" "You can change the media keys in GNOME settings. You can use dedicated keys " "from a multimedia keyboard or use any other key or combination of keys." msgstr "" "Anda dapat mengganti tombol media di pengaturan GNOME. Anda dapat " "menggunakan tombol terdedikasi dari papan ketik multimedia atau menggunakan " "tombol lain atau kombinasi tombol." #. (itstool) path: note/p #: C/media-keys.page:21 msgid "" "This will affect other media players, e.g. Totem or " "Rhythmbox, as well." msgstr "" "Ini akan memengaruhi pemutar media lainnya, seperti. Totem atau " "Rhythmbox, juga." #. (itstool) path: page/p #: C/media-keys.page:24 msgid "Parlatype listens to these key strokes:" msgstr "Parlatype menyimak ketukan tombol ini:" #. (itstool) path: item/p #: C/media-keys.page:26 msgid "" "Play, Pause, Stop: Each of these keys " "toggles between playing and pause." msgstr "" "Main, Jeda, Henti: Tiap tombol beralih " "antara main dan jeda." #. (itstool) path: item/p #: C/media-keys.page:27 msgid "" "Rewind, Previous: Each of these keys will jump back " "the time you selected in Preferences." msgstr "" "Putar-kembali, Sebelumnya: Tiap tombol akan lompat " "mundur pada waktu yang Anda pilih di Preferensi." #. (itstool) path: item/p #: C/media-keys.page:28 msgid "" "Fast Forward, Next: Each of these keys will jump ahead " "the time you selected in Preferences." msgstr "" "Maju Cepat, Berikutnya: Tiap tombol akan lompat maju " "pada waktu yang Anda pilih di Preferensi." #. (itstool) path: note/p #: C/media-keys.page:32 msgid "" "For detailed instructions how to change keyboard shortcuts in GNOME see the " "official " "documentation." msgstr "" "Untuk instruksi terperinci bagaimana mengganti pintasan papan ketik di GNOME " "lihat pada dokumentasi " "resmi." #. (itstool) path: page/p #: C/media-keys.page:35 msgid "" "If you are using a dedicated foot pedal, it should be possible to map the " "foot pedal signals to any of the keys. This is not well tested, however. Any " "feedback regarding foot pedals is welcome." msgstr "" "Jika Anda menggunakan pedal kaki terdedikasi, itu memungkinkan untuk " "memetakan sinyal pedal kaki ke tombol apa saja. Namun, ini belum teruji " "dengan baik. Semua umpan balik tentang pedal kaki sangat diterima." parlatype-3.0/help/it/000077500000000000000000000000001414030451500147165ustar00rootroot00000000000000parlatype-3.0/help/it/it.po000066400000000000000000000746271414030451500157120ustar00rootroot00000000000000# Italian translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # Luca Ciavatta , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2021-10-18 21:35+0200\n" "PO-Revision-Date: 2020-05-15 08:27+0000\n" "Last-Translator: Marco Ciampa \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" "X-Launchpad-Export-Date: 2020-05-31 16:44+0000\n" "X-Generator: Launchpad (build 275d46a24253e557e4403d52832837e4bfa425b6)\n" #. Put one translator per line, in the form NAME , YEAR1, YEAR2 msgctxt "_" msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Luca Ciavatta https://launchpad.net/~cialu\n" " Marco Ciampa https://launchpad.net/~ciampix" #. (itstool) path: info/title #: C/index.page:7 msgctxt "text" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: info/title #: C/index.page:8 msgctxt "link" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: credit/name #: C/index.page:10 C/drag-and-drop.page:8 C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 C/preferences.page:8 C/selections.page:8 #: C/timestamps.page:8 C/asr.page:9 C/asr-setup.page:9 C/media-keys.page:8 msgid "Gabor Karsay" msgstr "Gabor Karsay" #. (itstool) path: info/desc #. (itstool) path: page/p #: C/index.page:14 C/index.page:23 msgid "" "Parlatype is an easy to use media player. Its main purpose is to " "help you transcribing speech." msgstr "" "Parlatype è un lettore multimediale facile da usare. Il suo scopo " "principale è quello di aiutare a trascrivere il parlato." #. (itstool) path: page/title #: C/index.page:18 msgid "<_:media-1/> Parlatype" msgstr "<_:media-1/> Parlatype" #. (itstool) path: page/p #: C/index.page:24 msgid "" "For a quick overview have a look at . Other " "topics are covered below." msgstr "" "Per una rapida panoramica dare un'occhiata a . " "Altri argomenti sono trattati di seguito." #. (itstool) path: section/title #: C/index.page:27 msgid "Help topics" msgstr "Argomenti dell'Aiuto" #. (itstool) path: info/desc #: C/drag-and-drop.page:6 msgid "Drop files, file names or timestamps on Parlatype" msgstr "Rilascia file, nomi di file o marchi temporali su Parlatype" #. (itstool) path: page/title #: C/drag-and-drop.page:14 msgid "Drag and Drop" msgstr "Trascina e rilascia" #. (itstool) path: page/p #: C/drag-and-drop.page:16 msgid "" "You can drop files, file names or timestamps on Parlatype’s " "window." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:19 msgid "" "Files: Drag and drop a file from a file manager, e.g. Files, on " "Parlatype and it will open that file." msgstr "" "File: trascina e rilascia un file da un file manager, cioè File, " "su Parlatype e lui aprirà quel file." #. (itstool) path: item/p #: C/drag-and-drop.page:20 msgid "" "File names: Select a file name from a word processor, e.g. LibreOffice, drop the selected text on Parlatype and it will open that " "file. This will always work if the selection contains a full path. If you " "select the name only, Parlatype will look up its full path in the " "list of recent files and open it if it can find it in that list." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:21 msgid "" "Timestamps: You can drag and drop timestamps to Parlatype. Select " "a timestamp from a word processor, e.g. LibreOffice, drop the " "selected text on Parlatype and it will jump to that position." msgstr "" #. (itstool) path: info/desc #. (itstool) path: page/title #: C/first-steps.page:6 C/first-steps.page:14 msgid "First steps with Parlatype" msgstr "Primi passi con Parlatype" #. (itstool) path: page/p #: C/first-steps.page:16 msgid "" "Parlatype is an easy to use audio player to help you transcribing " "or annotating recorded speech. You need to run a word processor, e.g. " "LibreOffice, too. Launch Parlatype and open an audio " "file by clicking on the Open button in the upper left corner." msgstr "" #. (itstool) path: note/p #: C/first-steps.page:19 msgid "You can also drag and drop a file on Parlatype." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:22 msgid "" "In the lower left corner there are the controls with a Play " "button which toggles between play and pause. Whenever you pause, " "Parlatype rewinds a few seconds to make it easier to resume. This " "can be changed in the ." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/first-steps.page:24 msgctxt "_" msgid "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" msgstr "" #. (itstool) path: page/p #: C/first-steps.page:26 msgid "" "The buttons Jump back and Jump forward in the lower " "left corner skip a few seconds back or ahead. The amount of time can be " "changed in the ." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:28 msgid "" "The view scrolls automatically so that the cursor is always visible. You can " "scroll manually by clicking on or dragging the scroll bar or using the " "standard keybindings. Automatic scrolling is stopped then." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:30 msgid "" "To get back to the cursor’s position and let the view scroll automatically " "again, click on the menu button showing the time and then on Go to " "cursor. Clicking on the Play button also turns automatic " "scrolling on." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:32 msgid "" "Clicking in the view with the right mouse button will put the cursor there, " "also holding the right mouse button pressed and moving it. The left mouse " "button is for ." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:34 msgid "" "The speed scale next to the volume button in the lower " "right corner lets you adjust the speed of playback. A value of 1 means " "normal speed, everything lower (down to 0.5) is slower, everything above is " "faster." msgstr "" #. (itstool) path: info/desc #: C/keyboard-shortcuts.page:6 msgid "Standard keyboard shortcuts in Parlatype" msgstr "Scorciatoie da tastiera standard in Parlatype" #. (itstool) path: page/title #: C/keyboard-shortcuts.page:14 msgid "Keyboard shortcuts" msgstr "Scorciatoie da tastiera" #. (itstool) path: page/p #: C/keyboard-shortcuts.page:16 msgid "" "Keyboard shortcuts for Parlatype control, like Play, " "are described in . Shortcut keys for the window are " "listed below." msgstr "" #. (itstool) path: table/title #: C/keyboard-shortcuts.page:19 msgid "Standard Shortcut keys" msgstr "Scorciatoie da tastiera standard" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:22 msgid "To Do This" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:23 msgid "Press This" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:28 msgid "Show help" msgstr "Mostra l'aiuto" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:29 msgid "F1" msgstr "F1" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:32 msgid "Open file" msgstr "Apri file" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:33 msgid "Ctrlo" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:36 msgid "Play/Pause" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:37 msgid "CtrlSpace" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:40 msgid "Go to …" msgstr "Vai a ..." #. (itstool) path: td/p #: C/keyboard-shortcuts.page:41 msgid "Ctrlg" msgstr "Ctrlg" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:44 msgid "Jump back" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:45 msgid "CtrlLeft" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:48 msgid "Jump forward" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:49 msgid "CtrlRight" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:52 msgid "Copy timestamp" msgstr "Copia marca temporale" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:53 msgid "Ctrlc" msgstr "Ctrlc" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:56 msgid "Insert timestamp" msgstr "Inserisci marca temporale" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:57 msgid "Ctrlv" msgstr "Ctrlv" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:60 msgid "Zoom in" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:61 msgid "Ctrl+" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:64 msgid "Zoom out" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:65 msgid "Ctrl-" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:68 msgid "Quit" msgstr "Esci" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:69 msgid "Ctrlq" msgstr "Ctrlq" #. (itstool) path: p/link #: C/legal.xml:5 msgid "Creative Commons Attribution-ShareAlike 4.0 International" msgstr "Creative Commons Attribution-ShareAlike 4.0 International" #. (itstool) path: license/p #: C/legal.xml:4 msgid "This work is licensed under a <_:link-1/> license." msgstr "Questo lavoro è rilasciato sotto licenza <_:link-1/>." #. (itstool) path: info/desc #: C/preferences.page:6 msgid "How to customize Parlatype" msgstr "" #. (itstool) path: page/title #: C/preferences.page:14 msgid "Preferences" msgstr "" #. (itstool) path: page/p #: C/preferences.page:16 msgid "" "To open the preferences dialog click on the primary menu in the headerbar." msgstr "" #. (itstool) path: section/title #: C/preferences.page:21 msgid "Preferences for the waveform" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:23 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:26 msgid "" "Resolution: The resolution of the waveform image is given in pixels per " "second, e.g. the default resolution of 100 means, that one second is shown " "with a width of 100 pixels." msgstr "" #. (itstool) path: item/p #: C/preferences.page:27 msgid "" "Fixed vs. moving cursor: There are two modes, how to follow the cursor. On " "slower systems a moving cursor might be smoother." msgstr "" #. (itstool) path: item/p #: C/preferences.page:28 msgid "Show time scale: Turn the time scale on or off." msgstr "" #. (itstool) path: section/title #: C/preferences.page:33 msgid "Preferences for controls" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:35 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:38 msgid "" "Jump back on pause: Parlatype will rewind a few seconds on each " "pause, this way you can easier resume typing. Set this value to 0 if you " "don’t want this behaviour." msgstr "" #. (itstool) path: item/p #: C/preferences.page:39 msgid "" "Jump back: Configures how many seconds to skip when the Jump back " "button is pressed." msgstr "" #. (itstool) path: item/p #: C/preferences.page:40 msgid "" "Jump forward: Configures how many seconds to skip when the Jump " "forward button is pressed." msgstr "" #. (itstool) path: item/p #: C/preferences.page:41 msgid "" "Pressing Play at the end of file – Replay file: Whether you want " "to repeat the file at the end. If not, it will replay a few seconds like on " "pause." msgstr "" #. (itstool) path: item/p #: C/preferences.page:42 msgid "" "Pressing Play at the end of selection – Replay selection: Whether " "you want to repeat the selection. If not, it will replay a few seconds like " "on pause." msgstr "" #. (itstool) path: section/title #: C/preferences.page:47 msgid "Preferences for timestamps" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:49 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" msgstr "" #. (itstool) path: section/p #: C/preferences.page:51 msgid "" "These settings affect how Parlatype formats timestamps. If you " "need a certain format in your transcription, you can adjust it here." msgstr "" #. (itstool) path: note/p #: C/preferences.page:52 msgid "" "There are no settings for reading timestamps. Parlatype " "reads and accepts all of these formats." msgstr "" #. (itstool) path: item/p #: C/preferences.page:54 msgid "" "Always show hours and leading zeroes: Whether to show a fixed number of " "digits. Changing any of these values will show an updated example in the " "Example section below." msgstr "" #. (itstool) path: item/p #: C/preferences.page:55 msgid "Precision: Choose between full seconds, 10th seconds or 100th seconds." msgstr "" #. (itstool) path: item/p #: C/preferences.page:56 msgid "" "Fraction separator: Choose between a point or a hyphen to separate fractions " "of a second." msgstr "" #. (itstool) path: item/p #: C/preferences.page:57 msgid "" "Characters around timestamps: Choose between number signs, round brackets, " "square brackets or none." msgstr "" #. (itstool) path: section/title #: C/preferences.page:62 msgid "Preferences for speech recognition" msgstr "" #. (itstool) path: note/p #: C/preferences.page:65 msgid "" "This tab is only visible, if speech recognition is enabled in Parlatype." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:68 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" msgstr "" #. (itstool) path: section/p #: C/preferences.page:70 msgid "" "Here you can choose which language model to use. If you don’t have a " "language model yet, an assistant will guide you through the process of " "downloading it. You can have as many language models as you need, they can " "be added with the + button." msgstr "" #. (itstool) path: section/p #: C/preferences.page:72 msgid "" "To select a model click on its radio button in the list. If you click just " "on the name, you can see the model’s basic parameters. You could even change " "them, but that’s not recommended." msgstr "" #. (itstool) path: section/p #: C/preferences.page:74 msgid "" "The - button removes a model from the list. The model’s files " "however are not deleted, just the model entry is removed." msgstr "" #. (itstool) path: section/title #: C/preferences.page:80 msgid "Preferences for the window" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:82 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:85 msgid "" "Remember size: On start-up Parlatype sets the window size to the " "size it had the last time." msgstr "" #. (itstool) path: item/p #: C/preferences.page:86 msgid "" "Remember position: On start-up Parlatype can position its window " "where you had it when you closed Parlatype last time." msgstr "" #. (itstool) path: item/p #: C/preferences.page:87 msgid "" "Start on top: This will put Parlatype on start-up on top of other " "windows. This might be useful if you are working with a maximized word " "processor and still want to see the Parlatype window." msgstr "" #. (itstool) path: note/p #: C/preferences.page:91 msgid "" "Remember position and Start on top are not available " "on Wayland." msgstr "" #. (itstool) path: info/desc #: C/selections.page:6 msgid "How to play and repeat a selection" msgstr "Come avviare e ripetere una selezione" #. (itstool) path: page/title #: C/selections.page:14 msgid "Selections" msgstr "Selezioni" #. (itstool) path: page/p #: C/selections.page:16 msgid "" "You can select a piece of the waveform with the mouse. Next time you press " "Play, it will play the selection only. When it is finished and " "you press Play again, it will loop the selection once." msgstr "" #. (itstool) path: note/p #: C/selections.page:18 msgid "" "When in selection mode, you can not exit the selection anymore until you " "deselect it." msgstr "" #. (itstool) path: page/p #: C/selections.page:20 msgid "" "Selections can be made with the mouse (or pointer device) with a left click, " "holding the mouse button and dragging the pointer. If you click with " "Shift key pressed, an already existing selection will be enlarged " "to that point." msgstr "" #. (itstool) path: page/p #: C/selections.page:22 msgid "" "To deselect click once with the left button into the waveform. If the " "waveform has keyboard focus, you can press Escape." msgstr "" #. (itstool) path: info/desc #: C/timestamps.page:6 msgid "Set and go to timestamps" msgstr "" #. (itstool) path: page/title #: C/timestamps.page:14 msgid "Timestamps" msgstr "Marche temporali" #. (itstool) path: page/p #: C/timestamps.page:16 msgid "Timestamps help you to navigate in your transcription." msgstr "" #. (itstool) path: note/p #: C/timestamps.page:19 msgid "" "Timestamps can look like this: #03:45.2#. You can select them with or " "without the number signs." msgstr "" #. (itstool) path: page/p #: C/timestamps.page:22 msgid "" "Parlatype can produce different timestamp formats, they can be " "set in ." msgstr "" #. (itstool) path: section/title #: C/timestamps.page:25 msgid "Drag and drop" msgstr "Trascina e rilascia" #. (itstool) path: section/p #: C/timestamps.page:27 msgid "" "If you select the timestamp in the word processor, you can drag and drop it " "on the Parlatype window and it will go to that position. This is " "also possible the other way round: Drag the time label from Parlatype to a word processor and drop it there to insert it." msgstr "" #. (itstool) path: section/title #: C/timestamps.page:31 msgid "Using the clipboard" msgstr "" #. (itstool) path: section/p #: C/timestamps.page:33 msgid "" "Clicking on the menu button that is showing the current time you can " "Copy time to clipboard or Go to time in clipboard." msgstr "" #. (itstool) path: section/p #: C/timestamps.page:35 msgid "" "This can also be done with keyboard shortcuts. First make sure, the " "Parlatype window has focus. With the key sequence " "Ctrlc the current timestamp is copied " "to the clipboard. Changing to the word processor you can insert now the " "timestamp in your transcription." msgstr "" #. (itstool) path: section/p #: C/timestamps.page:36 msgid "" "To go to a timestamp position, copy the timestamp in the word processor to " "the clipboard. Once you have changed focus to Parlatype press " "Ctrlv." msgstr "" #. (itstool) path: info/desc #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "" #. (itstool) path: page/title #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "" #. (itstool) path: page/p #: C/asr.page:17 msgid "" "Parlatype offers automatic speech recognition that is done on " "your computer. No data is sent over the network." msgstr "" #. (itstool) path: note/p #: C/asr.page:20 msgid "" "Parlatype must have been built with PocketSphinx or " "Mozilla DeepSpeech. Please note that those libraries might be not " "available on your platform." msgstr "" #. (itstool) path: note/p #: C/asr.page:25 msgid "" "Parlatype has no built-in text editor. You need the Parlatype " "Extension for LibreOffice to output recognized text." msgstr "" #. (itstool) path: section/title #: C/asr.page:30 msgid "Start speech recognition" msgstr "" #. (itstool) path: section/p #: C/asr.page:32 msgid "" "Select a language model in the Preferences Dialog, Speech recognition tab, see for more details." msgstr "" #. (itstool) path: section/p #: C/asr.page:35 msgid "" "Open the primary menu and click on Automatic transcription. This " "is only available, if you have setup and chosen a language model." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr.page:38 msgctxt "_" msgid "" "external ref='figures/asr-switch-to-asr.png' " "md5='91dc6bffa3b8a3342889d9bfccabc3c8'" msgstr "" #. (itstool) path: section/p #: C/asr.page:40 msgid "" "Now press Play in Parlatype and the recognized speech " "will be printed in LibreOffice, if the Parlatype Extension is " "installed. Output is silent because decoding speed is dependent on your " "machine and may be slower or faster than real-time speech." msgstr "" #. (itstool) path: section/p #: C/asr.page:45 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #: C/asr.page:47 msgid "" "Accuracy depends on many factors like quality of the recording, " "background noise, speaker’s dialect or pronunciation and the speech model " "used. For general transcription you can expect an word error rate between 10 " "and 50 %. Alas this means that in some cases manual transcription from the " "start will be faster than automatic transcription and the following " "correction process." msgstr "" #. (itstool) path: info/desc #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:17 msgid "" "For speech recognition you need a language model: one or more files trained " "with real speech samples. Parlatype supports language models made " "for CMU Sphinx and Mozilla DeepSpeech and ships a couple of language " "model configurations." msgstr "" #. (itstool) path: note/p #: C/asr-setup.page:22 msgid "" "A language model configuration contains meta data describing the " "language model: A name that you can change, the language it was made for, " "speech recognition engine, publisher, license etc. It has a (third party) " "link, where you can download the files. Part of the configuration is the " "base folder, where you have saved the model. Additionally it contains " "various parameters for the plugin which are not shown." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:29 msgid "" "Open the Preferences Dialog and click on the Speech Recognition " "tab. Initially there are no configurations available, click on the Add " "a configuration button." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:33 msgctxt "_" msgid "" "external ref='figures/asr-setup-initial.png' " "md5='31773b99dcbb1ee84e59e119a0bd35c6'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:36 msgid "download" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:37 msgid "unavailable" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:35 msgid "" "If your installation has CMU Sphinx or Mozilla DeepSpeech enabled, you will " "see configurations with a <_:media-1/> symbol. Otherwise you will see only " "configurations with a <_:media-2/> symbol." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:39 msgctxt "_" msgid "" "external ref='figures/asr-setup-downloadable.png' " "md5='6e00b08a60952e8f408bec4a024be2e5'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:42 msgid "settings" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:41 msgid "" "Select a configuration and click on the <_:media-1/> button. There is a " "short description of the model and where you can download it. After " "downloading, you have to set the folder where your download resides. You can " "also change the Display name." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:47 msgctxt "_" msgid "" "external ref='figures/asr-setup-details.png' " "md5='3273410dfb31da8518a64d28af0da7b1'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:50 msgid "selected" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:49 msgid "" "An installed model has no symbol next to it. Double click on the model and " "it will be selected for speech recognition, a <_:media-1/> symbol appears." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:53 msgid "" "Shipped configurations might get obsolete over time. Therefore you can " "import a configuration with the + button. Configurations are text " "files with an .asr ending." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:57 msgid "" "With the - button you can remove a configuration. This will never " "remove downloaded models, only the configuration file." msgstr "" #. (itstool) path: info/desc #: C/media-keys.page:6 msgid "How to control Parlatype with media keys" msgstr "Come controllare Parlatype con i tasti multimediali" #. (itstool) path: page/title #: C/media-keys.page:14 msgid "Media keys" msgstr "Tasti multimediali" #. (itstool) path: page/p #: C/media-keys.page:16 msgid "" "Parlatype’s basic functions can be controlled with so called " "media keys. Media keys are used system wide to control media " "players and they are working even if the media player is not in focus or in " "the background." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:18 msgid "" "You can change the media keys in GNOME settings. You can use dedicated keys " "from a multimedia keyboard or use any other key or combination of keys." msgstr "" #. (itstool) path: note/p #: C/media-keys.page:21 msgid "" "This will affect other media players, e.g. Totem or " "Rhythmbox, as well." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:24 msgid "Parlatype listens to these key strokes:" msgstr "" #. (itstool) path: item/p #: C/media-keys.page:26 msgid "" "Play, Pause, Stop: Each of these keys " "toggles between playing and pause." msgstr "" #. (itstool) path: item/p #: C/media-keys.page:27 msgid "" "Rewind, Previous: Each of these keys will jump back " "the time you selected in Preferences." msgstr "" #. (itstool) path: item/p #: C/media-keys.page:28 msgid "" "Fast Forward, Next: Each of these keys will jump ahead " "the time you selected in Preferences." msgstr "" #. (itstool) path: note/p #: C/media-keys.page:32 msgid "" "For detailed instructions how to change keyboard shortcuts in GNOME see the " "official " "documentation." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:35 msgid "" "If you are using a dedicated foot pedal, it should be possible to map the " "foot pedal signals to any of the keys. This is not well tested, however. Any " "feedback regarding foot pedals is welcome." msgstr "" parlatype-3.0/help/ku/000077500000000000000000000000001414030451500147215ustar00rootroot00000000000000parlatype-3.0/help/ku/ku.po000066400000000000000000000725201414030451500157060ustar00rootroot00000000000000# Kurdish translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # Rokar ✌ , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2021-10-18 21:35+0200\n" "PO-Revision-Date: 2020-03-09 16:30+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Kurdish \n" "Language: ku\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #. Put one translator per line, in the form NAME , YEAR1, YEAR2 msgctxt "_" msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " Rokar ✌ https://launchpad.net/~rokarali" #. (itstool) path: info/title #: C/index.page:7 msgctxt "text" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: info/title #: C/index.page:8 msgctxt "link" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: credit/name #: C/index.page:10 C/drag-and-drop.page:8 C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 C/preferences.page:8 C/selections.page:8 #: C/timestamps.page:8 C/asr.page:9 C/asr-setup.page:9 C/media-keys.page:8 msgid "Gabor Karsay" msgstr "Gabor Karsay" #. (itstool) path: info/desc #. (itstool) path: page/p #: C/index.page:14 C/index.page:23 msgid "" "Parlatype is an easy to use media player. Its main purpose is to " "help you transcribing speech." msgstr "" #. (itstool) path: page/title #: C/index.page:18 msgid "<_:media-1/> Parlatype" msgstr "" #. (itstool) path: page/p #: C/index.page:24 msgid "" "For a quick overview have a look at . Other " "topics are covered below." msgstr "" #. (itstool) path: section/title #: C/index.page:27 msgid "Help topics" msgstr "" #. (itstool) path: info/desc #: C/drag-and-drop.page:6 msgid "Drop files, file names or timestamps on Parlatype" msgstr "" #. (itstool) path: page/title #: C/drag-and-drop.page:14 msgid "Drag and Drop" msgstr "" #. (itstool) path: page/p #: C/drag-and-drop.page:16 msgid "" "You can drop files, file names or timestamps on Parlatype’s " "window." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:19 msgid "" "Files: Drag and drop a file from a file manager, e.g. Files, on " "Parlatype and it will open that file." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:20 msgid "" "File names: Select a file name from a word processor, e.g. LibreOffice, drop the selected text on Parlatype and it will open that " "file. This will always work if the selection contains a full path. If you " "select the name only, Parlatype will look up its full path in the " "list of recent files and open it if it can find it in that list." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:21 msgid "" "Timestamps: You can drag and drop timestamps to Parlatype. Select " "a timestamp from a word processor, e.g. LibreOffice, drop the " "selected text on Parlatype and it will jump to that position." msgstr "" #. (itstool) path: info/desc #. (itstool) path: page/title #: C/first-steps.page:6 C/first-steps.page:14 msgid "First steps with Parlatype" msgstr "" #. (itstool) path: page/p #: C/first-steps.page:16 msgid "" "Parlatype is an easy to use audio player to help you transcribing " "or annotating recorded speech. You need to run a word processor, e.g. " "LibreOffice, too. Launch Parlatype and open an audio " "file by clicking on the Open button in the upper left corner." msgstr "" #. (itstool) path: note/p #: C/first-steps.page:19 msgid "You can also drag and drop a file on Parlatype." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:22 msgid "" "In the lower left corner there are the controls with a Play " "button which toggles between play and pause. Whenever you pause, " "Parlatype rewinds a few seconds to make it easier to resume. This " "can be changed in the ." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/first-steps.page:24 msgctxt "_" msgid "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" msgstr "" #. (itstool) path: page/p #: C/first-steps.page:26 msgid "" "The buttons Jump back and Jump forward in the lower " "left corner skip a few seconds back or ahead. The amount of time can be " "changed in the ." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:28 msgid "" "The view scrolls automatically so that the cursor is always visible. You can " "scroll manually by clicking on or dragging the scroll bar or using the " "standard keybindings. Automatic scrolling is stopped then." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:30 msgid "" "To get back to the cursor’s position and let the view scroll automatically " "again, click on the menu button showing the time and then on Go to " "cursor. Clicking on the Play button also turns automatic " "scrolling on." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:32 msgid "" "Clicking in the view with the right mouse button will put the cursor there, " "also holding the right mouse button pressed and moving it. The left mouse " "button is for ." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:34 msgid "" "The speed scale next to the volume button in the lower " "right corner lets you adjust the speed of playback. A value of 1 means " "normal speed, everything lower (down to 0.5) is slower, everything above is " "faster." msgstr "" #. (itstool) path: info/desc #: C/keyboard-shortcuts.page:6 msgid "Standard keyboard shortcuts in Parlatype" msgstr "" #. (itstool) path: page/title #: C/keyboard-shortcuts.page:14 msgid "Keyboard shortcuts" msgstr "" #. (itstool) path: page/p #: C/keyboard-shortcuts.page:16 msgid "" "Keyboard shortcuts for Parlatype control, like Play, " "are described in . Shortcut keys for the window are " "listed below." msgstr "" #. (itstool) path: table/title #: C/keyboard-shortcuts.page:19 msgid "Standard Shortcut keys" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:22 msgid "To Do This" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:23 msgid "Press This" msgstr "Pêl vê bike" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:28 msgid "Show help" msgstr "Alîkariyê nîşan bide" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:29 msgid "F1" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:32 msgid "Open file" msgstr "Pelgeh veke" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:33 msgid "Ctrlo" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:36 msgid "Play/Pause" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:37 msgid "CtrlSpace" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:40 msgid "Go to …" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:41 msgid "Ctrlg" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:44 msgid "Jump back" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:45 msgid "CtrlLeft" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:48 msgid "Jump forward" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:49 msgid "CtrlRight" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:52 msgid "Copy timestamp" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:53 msgid "Ctrlc" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:56 msgid "Insert timestamp" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:57 msgid "Ctrlv" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:60 msgid "Zoom in" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:61 msgid "Ctrl+" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:64 msgid "Zoom out" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:65 msgid "Ctrl-" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:68 msgid "Quit" msgstr "Derkeve" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:69 msgid "Ctrlq" msgstr "" #. (itstool) path: p/link #: C/legal.xml:5 msgid "Creative Commons Attribution-ShareAlike 4.0 International" msgstr "" #. (itstool) path: license/p #: C/legal.xml:4 msgid "This work is licensed under a <_:link-1/> license." msgstr "" #. (itstool) path: info/desc #: C/preferences.page:6 msgid "How to customize Parlatype" msgstr "" #. (itstool) path: page/title #: C/preferences.page:14 msgid "Preferences" msgstr "Vebijêrk" #. (itstool) path: page/p #: C/preferences.page:16 msgid "" "To open the preferences dialog click on the primary menu in the headerbar." msgstr "" #. (itstool) path: section/title #: C/preferences.page:21 msgid "Preferences for the waveform" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:23 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:26 msgid "" "Resolution: The resolution of the waveform image is given in pixels per " "second, e.g. the default resolution of 100 means, that one second is shown " "with a width of 100 pixels." msgstr "" #. (itstool) path: item/p #: C/preferences.page:27 msgid "" "Fixed vs. moving cursor: There are two modes, how to follow the cursor. On " "slower systems a moving cursor might be smoother." msgstr "" #. (itstool) path: item/p #: C/preferences.page:28 msgid "Show time scale: Turn the time scale on or off." msgstr "" #. (itstool) path: section/title #: C/preferences.page:33 msgid "Preferences for controls" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:35 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:38 msgid "" "Jump back on pause: Parlatype will rewind a few seconds on each " "pause, this way you can easier resume typing. Set this value to 0 if you " "don’t want this behaviour." msgstr "" #. (itstool) path: item/p #: C/preferences.page:39 msgid "" "Jump back: Configures how many seconds to skip when the Jump back " "button is pressed." msgstr "" #. (itstool) path: item/p #: C/preferences.page:40 msgid "" "Jump forward: Configures how many seconds to skip when the Jump " "forward button is pressed." msgstr "" #. (itstool) path: item/p #: C/preferences.page:41 msgid "" "Pressing Play at the end of file – Replay file: Whether you want " "to repeat the file at the end. If not, it will replay a few seconds like on " "pause." msgstr "" #. (itstool) path: item/p #: C/preferences.page:42 msgid "" "Pressing Play at the end of selection – Replay selection: Whether " "you want to repeat the selection. If not, it will replay a few seconds like " "on pause." msgstr "" #. (itstool) path: section/title #: C/preferences.page:47 msgid "Preferences for timestamps" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:49 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" msgstr "" #. (itstool) path: section/p #: C/preferences.page:51 msgid "" "These settings affect how Parlatype formats timestamps. If you " "need a certain format in your transcription, you can adjust it here." msgstr "" #. (itstool) path: note/p #: C/preferences.page:52 msgid "" "There are no settings for reading timestamps. Parlatype " "reads and accepts all of these formats." msgstr "" #. (itstool) path: item/p #: C/preferences.page:54 msgid "" "Always show hours and leading zeroes: Whether to show a fixed number of " "digits. Changing any of these values will show an updated example in the " "Example section below." msgstr "" #. (itstool) path: item/p #: C/preferences.page:55 msgid "Precision: Choose between full seconds, 10th seconds or 100th seconds." msgstr "" #. (itstool) path: item/p #: C/preferences.page:56 msgid "" "Fraction separator: Choose between a point or a hyphen to separate fractions " "of a second." msgstr "" #. (itstool) path: item/p #: C/preferences.page:57 msgid "" "Characters around timestamps: Choose between number signs, round brackets, " "square brackets or none." msgstr "" #. (itstool) path: section/title #: C/preferences.page:62 msgid "Preferences for speech recognition" msgstr "" #. (itstool) path: note/p #: C/preferences.page:65 msgid "" "This tab is only visible, if speech recognition is enabled in Parlatype." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:68 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" msgstr "" #. (itstool) path: section/p #: C/preferences.page:70 msgid "" "Here you can choose which language model to use. If you don’t have a " "language model yet, an assistant will guide you through the process of " "downloading it. You can have as many language models as you need, they can " "be added with the + button." msgstr "" #. (itstool) path: section/p #: C/preferences.page:72 msgid "" "To select a model click on its radio button in the list. If you click just " "on the name, you can see the model’s basic parameters. You could even change " "them, but that’s not recommended." msgstr "" #. (itstool) path: section/p #: C/preferences.page:74 msgid "" "The - button removes a model from the list. The model’s files " "however are not deleted, just the model entry is removed." msgstr "" #. (itstool) path: section/title #: C/preferences.page:80 msgid "Preferences for the window" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:82 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:85 msgid "" "Remember size: On start-up Parlatype sets the window size to the " "size it had the last time." msgstr "" #. (itstool) path: item/p #: C/preferences.page:86 msgid "" "Remember position: On start-up Parlatype can position its window " "where you had it when you closed Parlatype last time." msgstr "" #. (itstool) path: item/p #: C/preferences.page:87 msgid "" "Start on top: This will put Parlatype on start-up on top of other " "windows. This might be useful if you are working with a maximized word " "processor and still want to see the Parlatype window." msgstr "" #. (itstool) path: note/p #: C/preferences.page:91 msgid "" "Remember position and Start on top are not available " "on Wayland." msgstr "" #. (itstool) path: info/desc #: C/selections.page:6 msgid "How to play and repeat a selection" msgstr "" #. (itstool) path: page/title #: C/selections.page:14 msgid "Selections" msgstr "" #. (itstool) path: page/p #: C/selections.page:16 msgid "" "You can select a piece of the waveform with the mouse. Next time you press " "Play, it will play the selection only. When it is finished and " "you press Play again, it will loop the selection once." msgstr "" #. (itstool) path: note/p #: C/selections.page:18 msgid "" "When in selection mode, you can not exit the selection anymore until you " "deselect it." msgstr "" #. (itstool) path: page/p #: C/selections.page:20 msgid "" "Selections can be made with the mouse (or pointer device) with a left click, " "holding the mouse button and dragging the pointer. If you click with " "Shift key pressed, an already existing selection will be enlarged " "to that point." msgstr "" #. (itstool) path: page/p #: C/selections.page:22 msgid "" "To deselect click once with the left button into the waveform. If the " "waveform has keyboard focus, you can press Escape." msgstr "" #. (itstool) path: info/desc #: C/timestamps.page:6 msgid "Set and go to timestamps" msgstr "" #. (itstool) path: page/title #: C/timestamps.page:14 msgid "Timestamps" msgstr "Dem" #. (itstool) path: page/p #: C/timestamps.page:16 msgid "Timestamps help you to navigate in your transcription." msgstr "" #. (itstool) path: note/p #: C/timestamps.page:19 msgid "" "Timestamps can look like this: #03:45.2#. You can select them with or " "without the number signs." msgstr "" #. (itstool) path: page/p #: C/timestamps.page:22 msgid "" "Parlatype can produce different timestamp formats, they can be " "set in ." msgstr "" #. (itstool) path: section/title #: C/timestamps.page:25 msgid "Drag and drop" msgstr "Xwêr bikşîne û berde" #. (itstool) path: section/p #: C/timestamps.page:27 msgid "" "If you select the timestamp in the word processor, you can drag and drop it " "on the Parlatype window and it will go to that position. This is " "also possible the other way round: Drag the time label from Parlatype to a word processor and drop it there to insert it." msgstr "" #. (itstool) path: section/title #: C/timestamps.page:31 msgid "Using the clipboard" msgstr "" #. (itstool) path: section/p #: C/timestamps.page:33 msgid "" "Clicking on the menu button that is showing the current time you can " "Copy time to clipboard or Go to time in clipboard." msgstr "" #. (itstool) path: section/p #: C/timestamps.page:35 msgid "" "This can also be done with keyboard shortcuts. First make sure, the " "Parlatype window has focus. With the key sequence " "Ctrlc the current timestamp is copied " "to the clipboard. Changing to the word processor you can insert now the " "timestamp in your transcription." msgstr "" #. (itstool) path: section/p #: C/timestamps.page:36 msgid "" "To go to a timestamp position, copy the timestamp in the word processor to " "the clipboard. Once you have changed focus to Parlatype press " "Ctrlv." msgstr "" #. (itstool) path: info/desc #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "" #. (itstool) path: page/title #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "" #. (itstool) path: page/p #: C/asr.page:17 msgid "" "Parlatype offers automatic speech recognition that is done on " "your computer. No data is sent over the network." msgstr "" #. (itstool) path: note/p #: C/asr.page:20 msgid "" "Parlatype must have been built with PocketSphinx or " "Mozilla DeepSpeech. Please note that those libraries might be not " "available on your platform." msgstr "" #. (itstool) path: note/p #: C/asr.page:25 msgid "" "Parlatype has no built-in text editor. You need the Parlatype " "Extension for LibreOffice to output recognized text." msgstr "" #. (itstool) path: section/title #: C/asr.page:30 msgid "Start speech recognition" msgstr "" #. (itstool) path: section/p #: C/asr.page:32 msgid "" "Select a language model in the Preferences Dialog, Speech recognition tab, see for more details." msgstr "" #. (itstool) path: section/p #: C/asr.page:35 msgid "" "Open the primary menu and click on Automatic transcription. This " "is only available, if you have setup and chosen a language model." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr.page:38 msgctxt "_" msgid "" "external ref='figures/asr-switch-to-asr.png' " "md5='91dc6bffa3b8a3342889d9bfccabc3c8'" msgstr "" #. (itstool) path: section/p #: C/asr.page:40 msgid "" "Now press Play in Parlatype and the recognized speech " "will be printed in LibreOffice, if the Parlatype Extension is " "installed. Output is silent because decoding speed is dependent on your " "machine and may be slower or faster than real-time speech." msgstr "" #. (itstool) path: section/p #: C/asr.page:45 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #: C/asr.page:47 msgid "" "Accuracy depends on many factors like quality of the recording, " "background noise, speaker’s dialect or pronunciation and the speech model " "used. For general transcription you can expect an word error rate between 10 " "and 50 %. Alas this means that in some cases manual transcription from the " "start will be faster than automatic transcription and the following " "correction process." msgstr "" #. (itstool) path: info/desc #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:17 msgid "" "For speech recognition you need a language model: one or more files trained " "with real speech samples. Parlatype supports language models made " "for CMU Sphinx and Mozilla DeepSpeech and ships a couple of language " "model configurations." msgstr "" #. (itstool) path: note/p #: C/asr-setup.page:22 msgid "" "A language model configuration contains meta data describing the " "language model: A name that you can change, the language it was made for, " "speech recognition engine, publisher, license etc. It has a (third party) " "link, where you can download the files. Part of the configuration is the " "base folder, where you have saved the model. Additionally it contains " "various parameters for the plugin which are not shown." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:29 msgid "" "Open the Preferences Dialog and click on the Speech Recognition " "tab. Initially there are no configurations available, click on the Add " "a configuration button." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:33 msgctxt "_" msgid "" "external ref='figures/asr-setup-initial.png' " "md5='31773b99dcbb1ee84e59e119a0bd35c6'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:36 msgid "download" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:37 msgid "unavailable" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:35 msgid "" "If your installation has CMU Sphinx or Mozilla DeepSpeech enabled, you will " "see configurations with a <_:media-1/> symbol. Otherwise you will see only " "configurations with a <_:media-2/> symbol." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:39 msgctxt "_" msgid "" "external ref='figures/asr-setup-downloadable.png' " "md5='6e00b08a60952e8f408bec4a024be2e5'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:42 msgid "settings" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:41 msgid "" "Select a configuration and click on the <_:media-1/> button. There is a " "short description of the model and where you can download it. After " "downloading, you have to set the folder where your download resides. You can " "also change the Display name." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:47 msgctxt "_" msgid "" "external ref='figures/asr-setup-details.png' " "md5='3273410dfb31da8518a64d28af0da7b1'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:50 msgid "selected" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:49 msgid "" "An installed model has no symbol next to it. Double click on the model and " "it will be selected for speech recognition, a <_:media-1/> symbol appears." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:53 msgid "" "Shipped configurations might get obsolete over time. Therefore you can " "import a configuration with the + button. Configurations are text " "files with an .asr ending." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:57 msgid "" "With the - button you can remove a configuration. This will never " "remove downloaded models, only the configuration file." msgstr "" #. (itstool) path: info/desc #: C/media-keys.page:6 msgid "How to control Parlatype with media keys" msgstr "" #. (itstool) path: page/title #: C/media-keys.page:14 msgid "Media keys" msgstr "" #. (itstool) path: page/p #: C/media-keys.page:16 msgid "" "Parlatype’s basic functions can be controlled with so called " "media keys. Media keys are used system wide to control media " "players and they are working even if the media player is not in focus or in " "the background." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:18 msgid "" "You can change the media keys in GNOME settings. You can use dedicated keys " "from a multimedia keyboard or use any other key or combination of keys." msgstr "" #. (itstool) path: note/p #: C/media-keys.page:21 msgid "" "This will affect other media players, e.g. Totem or " "Rhythmbox, as well." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:24 msgid "Parlatype listens to these key strokes:" msgstr "" #. (itstool) path: item/p #: C/media-keys.page:26 msgid "" "Play, Pause, Stop: Each of these keys " "toggles between playing and pause." msgstr "" #. (itstool) path: item/p #: C/media-keys.page:27 msgid "" "Rewind, Previous: Each of these keys will jump back " "the time you selected in Preferences." msgstr "" #. (itstool) path: item/p #: C/media-keys.page:28 msgid "" "Fast Forward, Next: Each of these keys will jump ahead " "the time you selected in Preferences." msgstr "" #. (itstool) path: note/p #: C/media-keys.page:32 msgid "" "For detailed instructions how to change keyboard shortcuts in GNOME see the " "official " "documentation." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:35 msgid "" "If you are using a dedicated foot pedal, it should be possible to map the " "foot pedal signals to any of the keys. This is not well tested, however. Any " "feedback regarding foot pedals is welcome." msgstr "" parlatype-3.0/help/lt/000077500000000000000000000000001414030451500147215ustar00rootroot00000000000000parlatype-3.0/help/lt/lt.po000066400000000000000000001002521414030451500157000ustar00rootroot00000000000000# Lithuanian translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # Moo , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2021-10-18 21:35+0200\n" "PO-Revision-Date: 2018-06-04 13:21+0000\n" "Last-Translator: Moo \n" "Language-Team: Lithuanian \n" "Language: lt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #. Put one translator per line, in the form NAME , YEAR1, YEAR2 msgctxt "_" msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Moo https://launchpad.net/~mooo" #. (itstool) path: info/title #: C/index.page:7 msgctxt "text" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: info/title #: C/index.page:8 msgctxt "link" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: credit/name #: C/index.page:10 C/drag-and-drop.page:8 C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 C/preferences.page:8 C/selections.page:8 #: C/timestamps.page:8 C/asr.page:9 C/asr-setup.page:9 C/media-keys.page:8 msgid "Gabor Karsay" msgstr "Gabor Karsay" #. (itstool) path: info/desc #. (itstool) path: page/p #: C/index.page:14 C/index.page:23 msgid "" "Parlatype is an easy to use media player. Its main purpose is to " "help you transcribing speech." msgstr "" "Parlatype yra lengvas naudoti medijos grotuvas. Jo pagrindinis " "tikslas yra padėti jums perrašyti kalbėjimą." #. (itstool) path: page/title #: C/index.page:18 msgid "<_:media-1/> Parlatype" msgstr "<_:media-1/> Parlatype" #. (itstool) path: page/p #: C/index.page:24 msgid "" "For a quick overview have a look at . Other " "topics are covered below." msgstr "" "Greitai apžvalgai, užmeskite akį į . Kitos temos " "yra aprašytos žemiau." #. (itstool) path: section/title #: C/index.page:27 msgid "Help topics" msgstr "Žinyno temos" #. (itstool) path: info/desc #: C/drag-and-drop.page:6 msgid "Drop files, file names or timestamps on Parlatype" msgstr "Vilkite failus, failų pavadinimus ar laiko žymes į Parlatype" #. (itstool) path: page/title #: C/drag-and-drop.page:14 msgid "Drag and Drop" msgstr "Vilkimas" #. (itstool) path: page/p #: C/drag-and-drop.page:16 msgid "" "You can drop files, file names or timestamps on Parlatype’s " "window." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:19 msgid "" "Files: Drag and drop a file from a file manager, e.g. Files, on " "Parlatype and it will open that file." msgstr "" "Failai: Vilkite failą iš failų tvarkytuvės pvz., iš Failų, į " "Parlatype ir programa atvers tą failą." #. (itstool) path: item/p #: C/drag-and-drop.page:20 msgid "" "File names: Select a file name from a word processor, e.g. LibreOffice, drop the selected text on Parlatype and it will open that " "file. This will always work if the selection contains a full path. If you " "select the name only, Parlatype will look up its full path in the " "list of recent files and open it if it can find it in that list." msgstr "" "Failų pavadinimai: Pažymėkite tekstų rengyklėje, pvz., LibreOffice, failo pavadinimą ir vilkite pažymėtą tekstą į Parlatype, ir " "programa atvers tą failą. Tai visada suveiks, jei žymėjime bus pilnas " "kelias. Jei pažymėsite tik pavadinimą, Parlatype atliks failo " "paiešką paskiausiai naudotų failų sąraše ir jeigu jį ras, iš karto atvers." #. (itstool) path: item/p #: C/drag-and-drop.page:21 msgid "" "Timestamps: You can drag and drop timestamps to Parlatype. Select " "a timestamp from a word processor, e.g. LibreOffice, drop the " "selected text on Parlatype and it will jump to that position." msgstr "" #. (itstool) path: info/desc #. (itstool) path: page/title #: C/first-steps.page:6 C/first-steps.page:14 msgid "First steps with Parlatype" msgstr "Pirmieji žingsniai su Parlatype" #. (itstool) path: page/p #: C/first-steps.page:16 msgid "" "Parlatype is an easy to use audio player to help you transcribing " "or annotating recorded speech. You need to run a word processor, e.g. " "LibreOffice, too. Launch Parlatype and open an audio " "file by clicking on the Open button in the upper left corner." msgstr "" "Parlatype yra lengvas naudoti garso grotuvas, skirtas padėti jums " "perrašyti įrašytą kalbėjimą ar rašyti jam pastabas. Jums taip pat reikia " "paleisti tekstų rengyklę, pvz., LibreOffice. Paleiskite " "Parlatype ir viršutiniame kairiajame kampe spusteldami mygtuką " "Atverti, atverkite garso failą." #. (itstool) path: note/p #: C/first-steps.page:19 msgid "You can also drag and drop a file on Parlatype." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:22 msgid "" "In the lower left corner there are the controls with a Play " "button which toggles between play and pause. Whenever you pause, " "Parlatype rewinds a few seconds to make it easier to resume. This " "can be changed in the ." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/first-steps.page:24 msgctxt "_" msgid "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" msgstr "" #. (itstool) path: page/p #: C/first-steps.page:26 msgid "" "The buttons Jump back and Jump forward in the lower " "left corner skip a few seconds back or ahead. The amount of time can be " "changed in the ." msgstr "" "Apatiniame kairiajame kampe esantys mygtukai Peršokti atgal ir " "Peršokti pirmyn peršoka kelias sekundes atgal arba pirmyn. Laiko " "kiekis gali būti keičiamas skyrelyje ." #. (itstool) path: page/p #: C/first-steps.page:28 msgid "" "The view scrolls automatically so that the cursor is always visible. You can " "scroll manually by clicking on or dragging the scroll bar or using the " "standard keybindings. Automatic scrolling is stopped then." msgstr "" "Rodinys yra slenkamas automatiškai, taigi tokiu būdu žymeklis visada yra " "matomas. Jūs galite slinkti rankiniu būdu, spustelėdami ant slankjuostės ar " "vilkdami ją arba naudodami standartinius klavišų susiejimus. Tuomet " "automatinis slinkimas yra sustabdomas." #. (itstool) path: page/p #: C/first-steps.page:30 msgid "" "To get back to the cursor’s position and let the view scroll automatically " "again, click on the menu button showing the time and then on Go to " "cursor. Clicking on the Play button also turns automatic " "scrolling on." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:32 msgid "" "Clicking in the view with the right mouse button will put the cursor there, " "also holding the right mouse button pressed and moving it. The left mouse " "button is for ." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:34 msgid "" "The speed scale next to the volume button in the lower " "right corner lets you adjust the speed of playback. A value of 1 means " "normal speed, everything lower (down to 0.5) is slower, everything above is " "faster." msgstr "" #. (itstool) path: info/desc #: C/keyboard-shortcuts.page:6 msgid "Standard keyboard shortcuts in Parlatype" msgstr "Standartiniai Parlatype klaviatūros trumpiniai" #. (itstool) path: page/title #: C/keyboard-shortcuts.page:14 msgid "Keyboard shortcuts" msgstr "Klaviatūros trumpiniai" #. (itstool) path: page/p #: C/keyboard-shortcuts.page:16 msgid "" "Keyboard shortcuts for Parlatype control, like Play, " "are described in . Shortcut keys for the window are " "listed below." msgstr "" "Parlatype valdymo trumpiniai, tokie kaip Groti, yra " "aprašyti skyrelyje . Lango trumpiniai yra išvardyti " "žemiau." #. (itstool) path: table/title #: C/keyboard-shortcuts.page:19 msgid "Standard Shortcut keys" msgstr "Standartiniai trumpiniai" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:22 msgid "To Do This" msgstr "Norėdami atlikti tai" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:23 msgid "Press This" msgstr "Paspauskite tai" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:28 msgid "Show help" msgstr "Rodyti žinyną" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:29 msgid "F1" msgstr "F1" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:32 msgid "Open file" msgstr "Atverti failą" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:33 msgid "Ctrlo" msgstr "Valdo" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:36 msgid "Play/Pause" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:37 msgid "CtrlSpace" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:40 msgid "Go to …" msgstr "Eiti …" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:41 msgid "Ctrlg" msgstr "Valdg" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:44 msgid "Jump back" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:45 msgid "CtrlLeft" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:48 msgid "Jump forward" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:49 msgid "CtrlRight" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:52 msgid "Copy timestamp" msgstr "Kopijuoti laiko žymą" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:53 msgid "Ctrlc" msgstr "Valdc" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:56 msgid "Insert timestamp" msgstr "Įterpti laiko žymą" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:57 msgid "Ctrlv" msgstr "Valdv" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:60 msgid "Zoom in" msgstr "Didinti" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:61 msgid "Ctrl+" msgstr "Vald+" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:64 msgid "Zoom out" msgstr "Mažinti" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:65 msgid "Ctrl-" msgstr "Vald-" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:68 msgid "Quit" msgstr "Išeiti" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:69 msgid "Ctrlq" msgstr "Valdq" #. (itstool) path: p/link #: C/legal.xml:5 msgid "Creative Commons Attribution-ShareAlike 4.0 International" msgstr "Creative Commons analogiško platinimo 4.0 tarptautinę" #. (itstool) path: license/p #: C/legal.xml:4 msgid "This work is licensed under a <_:link-1/> license." msgstr "Šis darbas yra licencijuotas pagal <_:link-1/> licenciją." #. (itstool) path: info/desc #: C/preferences.page:6 msgid "How to customize Parlatype" msgstr "" #. (itstool) path: page/title #: C/preferences.page:14 msgid "Preferences" msgstr "Nuostatos" #. (itstool) path: page/p #: C/preferences.page:16 msgid "" "To open the preferences dialog click on the primary menu in the headerbar." msgstr "" #. (itstool) path: section/title #: C/preferences.page:21 msgid "Preferences for the waveform" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:23 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:26 msgid "" "Resolution: The resolution of the waveform image is given in pixels per " "second, e.g. the default resolution of 100 means, that one second is shown " "with a width of 100 pixels." msgstr "" #. (itstool) path: item/p #: C/preferences.page:27 msgid "" "Fixed vs. moving cursor: There are two modes, how to follow the cursor. On " "slower systems a moving cursor might be smoother." msgstr "" #. (itstool) path: item/p #: C/preferences.page:28 msgid "Show time scale: Turn the time scale on or off." msgstr "" #. (itstool) path: section/title #: C/preferences.page:33 msgid "Preferences for controls" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:35 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:38 msgid "" "Jump back on pause: Parlatype will rewind a few seconds on each " "pause, this way you can easier resume typing. Set this value to 0 if you " "don’t want this behaviour." msgstr "" #. (itstool) path: item/p #: C/preferences.page:39 msgid "" "Jump back: Configures how many seconds to skip when the Jump back " "button is pressed." msgstr "" #. (itstool) path: item/p #: C/preferences.page:40 msgid "" "Jump forward: Configures how many seconds to skip when the Jump " "forward button is pressed." msgstr "" #. (itstool) path: item/p #: C/preferences.page:41 msgid "" "Pressing Play at the end of file – Replay file: Whether you want " "to repeat the file at the end. If not, it will replay a few seconds like on " "pause." msgstr "" #. (itstool) path: item/p #: C/preferences.page:42 msgid "" "Pressing Play at the end of selection – Replay selection: Whether " "you want to repeat the selection. If not, it will replay a few seconds like " "on pause." msgstr "" #. (itstool) path: section/title #: C/preferences.page:47 msgid "Preferences for timestamps" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:49 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" msgstr "" #. (itstool) path: section/p #: C/preferences.page:51 msgid "" "These settings affect how Parlatype formats timestamps. If you " "need a certain format in your transcription, you can adjust it here." msgstr "" #. (itstool) path: note/p #: C/preferences.page:52 msgid "" "There are no settings for reading timestamps. Parlatype " "reads and accepts all of these formats." msgstr "" #. (itstool) path: item/p #: C/preferences.page:54 msgid "" "Always show hours and leading zeroes: Whether to show a fixed number of " "digits. Changing any of these values will show an updated example in the " "Example section below." msgstr "" #. (itstool) path: item/p #: C/preferences.page:55 msgid "Precision: Choose between full seconds, 10th seconds or 100th seconds." msgstr "" #. (itstool) path: item/p #: C/preferences.page:56 msgid "" "Fraction separator: Choose between a point or a hyphen to separate fractions " "of a second." msgstr "" #. (itstool) path: item/p #: C/preferences.page:57 msgid "" "Characters around timestamps: Choose between number signs, round brackets, " "square brackets or none." msgstr "" #. (itstool) path: section/title #: C/preferences.page:62 msgid "Preferences for speech recognition" msgstr "" #. (itstool) path: note/p #: C/preferences.page:65 msgid "" "This tab is only visible, if speech recognition is enabled in Parlatype." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:68 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" msgstr "" #. (itstool) path: section/p #: C/preferences.page:70 msgid "" "Here you can choose which language model to use. If you don’t have a " "language model yet, an assistant will guide you through the process of " "downloading it. You can have as many language models as you need, they can " "be added with the + button." msgstr "" #. (itstool) path: section/p #: C/preferences.page:72 msgid "" "To select a model click on its radio button in the list. If you click just " "on the name, you can see the model’s basic parameters. You could even change " "them, but that’s not recommended." msgstr "" #. (itstool) path: section/p #: C/preferences.page:74 msgid "" "The - button removes a model from the list. The model’s files " "however are not deleted, just the model entry is removed." msgstr "" #. (itstool) path: section/title #: C/preferences.page:80 msgid "Preferences for the window" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:82 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:85 msgid "" "Remember size: On start-up Parlatype sets the window size to the " "size it had the last time." msgstr "" #. (itstool) path: item/p #: C/preferences.page:86 msgid "" "Remember position: On start-up Parlatype can position its window " "where you had it when you closed Parlatype last time." msgstr "" #. (itstool) path: item/p #: C/preferences.page:87 msgid "" "Start on top: This will put Parlatype on start-up on top of other " "windows. This might be useful if you are working with a maximized word " "processor and still want to see the Parlatype window." msgstr "" #. (itstool) path: note/p #: C/preferences.page:91 msgid "" "Remember position and Start on top are not available " "on Wayland." msgstr "" #. (itstool) path: info/desc #: C/selections.page:6 msgid "How to play and repeat a selection" msgstr "Kaip groti ir kartoti žymėjimą" #. (itstool) path: page/title #: C/selections.page:14 msgid "Selections" msgstr "Žymėjimai" #. (itstool) path: page/p #: C/selections.page:16 msgid "" "You can select a piece of the waveform with the mouse. Next time you press " "Play, it will play the selection only. When it is finished and " "you press Play again, it will loop the selection once." msgstr "" "Jūs galite pažymėti bangos formos dalį, naudodami pelę. Kitą kartą jums " "spustelėjus Groti, bus grojamas tik žymėjimas. Užbaigus groti " "žymėjimą ir jums dar kartą paspaudus Groti, žymėjimas bus " "pakartotas vieną kartą." #. (itstool) path: note/p #: C/selections.page:18 msgid "" "When in selection mode, you can not exit the selection anymore until you " "deselect it." msgstr "" "Esant žymėjimo veiksenoje, jūs daugiau nebegalite išeiti iš žymėjimo tol, " "kol nepanaikinsite žymėjimą." #. (itstool) path: page/p #: C/selections.page:20 msgid "" "Selections can be made with the mouse (or pointer device) with a left click, " "holding the mouse button and dragging the pointer. If you click with " "Shift key pressed, an already existing selection will be enlarged " "to that point." msgstr "" #. (itstool) path: page/p #: C/selections.page:22 msgid "" "To deselect click once with the left button into the waveform. If the " "waveform has keyboard focus, you can press Escape." msgstr "" #. (itstool) path: info/desc #: C/timestamps.page:6 msgid "Set and go to timestamps" msgstr "" #. (itstool) path: page/title #: C/timestamps.page:14 msgid "Timestamps" msgstr "" #. (itstool) path: page/p #: C/timestamps.page:16 msgid "Timestamps help you to navigate in your transcription." msgstr "" #. (itstool) path: note/p #: C/timestamps.page:19 msgid "" "Timestamps can look like this: #03:45.2#. You can select them with or " "without the number signs." msgstr "" #. (itstool) path: page/p #: C/timestamps.page:22 msgid "" "Parlatype can produce different timestamp formats, they can be " "set in ." msgstr "" #. (itstool) path: section/title #: C/timestamps.page:25 msgid "Drag and drop" msgstr "" #. (itstool) path: section/p #: C/timestamps.page:27 msgid "" "If you select the timestamp in the word processor, you can drag and drop it " "on the Parlatype window and it will go to that position. This is " "also possible the other way round: Drag the time label from Parlatype to a word processor and drop it there to insert it." msgstr "" #. (itstool) path: section/title #: C/timestamps.page:31 msgid "Using the clipboard" msgstr "" #. (itstool) path: section/p #: C/timestamps.page:33 msgid "" "Clicking on the menu button that is showing the current time you can " "Copy time to clipboard or Go to time in clipboard." msgstr "" #. (itstool) path: section/p #: C/timestamps.page:35 msgid "" "This can also be done with keyboard shortcuts. First make sure, the " "Parlatype window has focus. With the key sequence " "Ctrlc the current timestamp is copied " "to the clipboard. Changing to the word processor you can insert now the " "timestamp in your transcription." msgstr "" #. (itstool) path: section/p #: C/timestamps.page:36 msgid "" "To go to a timestamp position, copy the timestamp in the word processor to " "the clipboard. Once you have changed focus to Parlatype press " "Ctrlv." msgstr "" #. (itstool) path: info/desc #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "" #. (itstool) path: page/title #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "" #. (itstool) path: page/p #: C/asr.page:17 msgid "" "Parlatype offers automatic speech recognition that is done on " "your computer. No data is sent over the network." msgstr "" #. (itstool) path: note/p #: C/asr.page:20 msgid "" "Parlatype must have been built with PocketSphinx or " "Mozilla DeepSpeech. Please note that those libraries might be not " "available on your platform." msgstr "" #. (itstool) path: note/p #: C/asr.page:25 msgid "" "Parlatype has no built-in text editor. You need the Parlatype " "Extension for LibreOffice to output recognized text." msgstr "" #. (itstool) path: section/title #: C/asr.page:30 msgid "Start speech recognition" msgstr "" #. (itstool) path: section/p #: C/asr.page:32 msgid "" "Select a language model in the Preferences Dialog, Speech recognition tab, see for more details." msgstr "" #. (itstool) path: section/p #: C/asr.page:35 msgid "" "Open the primary menu and click on Automatic transcription. This " "is only available, if you have setup and chosen a language model." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr.page:38 msgctxt "_" msgid "" "external ref='figures/asr-switch-to-asr.png' " "md5='91dc6bffa3b8a3342889d9bfccabc3c8'" msgstr "" #. (itstool) path: section/p #: C/asr.page:40 msgid "" "Now press Play in Parlatype and the recognized speech " "will be printed in LibreOffice, if the Parlatype Extension is " "installed. Output is silent because decoding speed is dependent on your " "machine and may be slower or faster than real-time speech." msgstr "" #. (itstool) path: section/p #: C/asr.page:45 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #: C/asr.page:47 msgid "" "Accuracy depends on many factors like quality of the recording, " "background noise, speaker’s dialect or pronunciation and the speech model " "used. For general transcription you can expect an word error rate between 10 " "and 50 %. Alas this means that in some cases manual transcription from the " "start will be faster than automatic transcription and the following " "correction process." msgstr "" #. (itstool) path: info/desc #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:17 msgid "" "For speech recognition you need a language model: one or more files trained " "with real speech samples. Parlatype supports language models made " "for CMU Sphinx and Mozilla DeepSpeech and ships a couple of language " "model configurations." msgstr "" #. (itstool) path: note/p #: C/asr-setup.page:22 msgid "" "A language model configuration contains meta data describing the " "language model: A name that you can change, the language it was made for, " "speech recognition engine, publisher, license etc. It has a (third party) " "link, where you can download the files. Part of the configuration is the " "base folder, where you have saved the model. Additionally it contains " "various parameters for the plugin which are not shown." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:29 msgid "" "Open the Preferences Dialog and click on the Speech Recognition " "tab. Initially there are no configurations available, click on the Add " "a configuration button." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:33 msgctxt "_" msgid "" "external ref='figures/asr-setup-initial.png' " "md5='31773b99dcbb1ee84e59e119a0bd35c6'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:36 msgid "download" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:37 msgid "unavailable" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:35 msgid "" "If your installation has CMU Sphinx or Mozilla DeepSpeech enabled, you will " "see configurations with a <_:media-1/> symbol. Otherwise you will see only " "configurations with a <_:media-2/> symbol." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:39 msgctxt "_" msgid "" "external ref='figures/asr-setup-downloadable.png' " "md5='6e00b08a60952e8f408bec4a024be2e5'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:42 msgid "settings" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:41 msgid "" "Select a configuration and click on the <_:media-1/> button. There is a " "short description of the model and where you can download it. After " "downloading, you have to set the folder where your download resides. You can " "also change the Display name." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:47 msgctxt "_" msgid "" "external ref='figures/asr-setup-details.png' " "md5='3273410dfb31da8518a64d28af0da7b1'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:50 msgid "selected" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:49 msgid "" "An installed model has no symbol next to it. Double click on the model and " "it will be selected for speech recognition, a <_:media-1/> symbol appears." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:53 msgid "" "Shipped configurations might get obsolete over time. Therefore you can " "import a configuration with the + button. Configurations are text " "files with an .asr ending." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:57 msgid "" "With the - button you can remove a configuration. This will never " "remove downloaded models, only the configuration file." msgstr "" #. (itstool) path: info/desc #: C/media-keys.page:6 msgid "How to control Parlatype with media keys" msgstr "" #. (itstool) path: page/title #: C/media-keys.page:14 msgid "Media keys" msgstr "" #. (itstool) path: page/p #: C/media-keys.page:16 msgid "" "Parlatype’s basic functions can be controlled with so called " "media keys. Media keys are used system wide to control media " "players and they are working even if the media player is not in focus or in " "the background." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:18 msgid "" "You can change the media keys in GNOME settings. You can use dedicated keys " "from a multimedia keyboard or use any other key or combination of keys." msgstr "" #. (itstool) path: note/p #: C/media-keys.page:21 msgid "" "This will affect other media players, e.g. Totem or " "Rhythmbox, as well." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:24 msgid "Parlatype listens to these key strokes:" msgstr "" #. (itstool) path: item/p #: C/media-keys.page:26 msgid "" "Play, Pause, Stop: Each of these keys " "toggles between playing and pause." msgstr "" #. (itstool) path: item/p #: C/media-keys.page:27 msgid "" "Rewind, Previous: Each of these keys will jump back " "the time you selected in Preferences." msgstr "" #. (itstool) path: item/p #: C/media-keys.page:28 msgid "" "Fast Forward, Next: Each of these keys will jump ahead " "the time you selected in Preferences." msgstr "" #. (itstool) path: note/p #: C/media-keys.page:32 msgid "" "For detailed instructions how to change keyboard shortcuts in GNOME see the " "official " "documentation." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:35 msgid "" "If you are using a dedicated foot pedal, it should be possible to map the " "foot pedal signals to any of the keys. This is not well tested, however. Any " "feedback regarding foot pedals is welcome." msgstr "" parlatype-3.0/help/meson.build000066400000000000000000000021551414030451500164470ustar00rootroot00000000000000media = [ 'figures/asr-setup-initial.png', 'figures/asr-setup-downloadable.png', 'figures/asr-setup-details.png', 'figures/asr-switch-to-asr.png', 'figures/parlatype-icon.png', 'figures/parlatype-prefs-asr.png', 'figures/parlatype-prefs-controls.png', 'figures/parlatype-prefs-timestamps.png', 'figures/parlatype-prefs-waveform.png', 'figures/parlatype-prefs-window.png', 'figures/parlatype-main-window.png', ] # GNOME icons media += [ 'figures/action-unavailable-symbolic.svg', 'figures/emblem-system-symbolic.svg', 'figures/folder-download-symbolic.svg', 'figures/object-select-symbolic.svg', ] sources = [ 'index.page', 'drag-and-drop.page', 'first-steps.page', 'keyboard-shortcuts.page', 'legal.xml', 'preferences.page', 'selections.page', 'timestamps.page', ] if with_pocketsphinx or with_deepspeech sources += [ 'asr.page', 'asr-setup.page', ] endif if host_machine.system() != 'windows' sources += [ 'media-keys.page', ] endif symlinks = true if host_machine.system() == 'windows' symlinks = false endif gnome.yelp( app_id, media: media, sources: sources, symlink_media: symlinks ) parlatype-3.0/help/pl/000077500000000000000000000000001414030451500147155ustar00rootroot00000000000000parlatype-3.0/help/pl/figures/000077500000000000000000000000001414030451500163615ustar00rootroot00000000000000parlatype-3.0/help/pl/figures/parlatype-main-window.png000066400000000000000000000562231414030451500233270ustar00rootroot00000000000000PNG  IHDRN xsBIT|dtEXtSoftwaregnome-screenshot> IDATxy|}'yx(%mnL;Z6޴)MI%pc'MەvWٺS3qHEK>dIAE$78g~$@!}3\yB!B!B!B!Bċ cZfi'B;n> dPՑ}=j3d2a$H0!BHp Zɋo'ߗW)vڵk|5mƤ B!0JePTPZC[˿yn/x 8-]z?)sWB!$4Z -q \S/75NgnC !BOTJs_p &{o͓4L-]tm:nn C !DOP~.(JM1r8OoS4h0us9y, B@$=.{G.[QOgqˉO?e@sta墎B0 LZ BBK"T~dtj.džs$R=!DGT~q''P;Kpͥ].hq.ū׃Xnj0J`7BPBTayB(ET~1 l&X|is YYp3mpD 0+@ H$ #=({Q5mU,9qSxΌ8.h4 q}#!`T.K O$ÀI )8p{9ahBL,e")|$39{MrGqh{.vbB!cٻH/I VAi mSB!kb,5NM"zEuB ޅ]~1^.L!p!"NTGi:}ѰvB!sٻ˯Їֺ֎JDfF6mXFra4C]]^^; 02:=;ʡ98ñw߃NŞe Lad:?[zЍAXVHR$d2hg@L)xSݙsۇ[1\~y؋4K!P/f۽.3bى03|Ō;H2葖qz0f2eH GMQ;!X筯0P.WOo3O=<(dRdeӏC1.xH$JQYZBc{r:2_*5%;aزq*wmV fKGD+V匸˯;0LLf3ux깃qOiNNQn7n`Ր0Yrcx_cpp]rp-_&n{v,7~[,Cٖ-yx'GrڍhnGVFʶlVHq1::084v nR}iT*Db(2-@%?0LK4 l6;nw`xd6jƜlXZa 0ML`H6?iAWw7o^ŭֻ˲HOPL=7rs8ҊH$*{PR }k({t#Ng̕p)L*E<$;m7M@RauI1Rg0xi!+GFT(Ɯl0`R*1z.u #²3͘͡OKӥҊm0 BaAABΗ<^yqd8s,N4'> DD.a[YvB|<<ֱcPբ,n6 #cHNI0>})IIPUB^$GGR<#r2a7pJDjr>:+9Yp:]D 0.gW1f2!%BtA^q89xzA7tZ- mz 5%z&\v;ʃ e|S[k{' zSS70@Ryat`dd6+E/'!aD"/Mt{à>rCs=Ma GYq,  Eyq:6XeaL2~_Wb|^>ͺrV<Шٽ QF~^`XVTue988v c`96'$*%l aIw(SvxX'qY 0cvZahx+ a6[0iciA>1>aFAkW|t"vJYkxt c&RSm&@k[Z;J$UV F 5=BӠR* àn;vt5S|yL-0[H2nPaZ;n0OZy7p^ɤR8:3PޝM$'ndp'oSdgee( ܮD) " h4'HKY5>`5% ##- =}}QV!àӣ;0M8:nOd023201a霑͆kNHAM /7|T65?$O͑# sL;NpR+q. {j~r314<S/5*ٖlHO~'WgB.Z=1u<[zfK? kzBI 'y0N"G.!3= R.]0N$*.bqJ"3:6K HIN{B¿%%}.L]v K`{#ZƘ1F717}AAAXA?8ucph))eJxӃep !222 㐕tTfea`dt Ys62:V^}Mo>?.[JB?8p:v{=N 7'Z3fIK|gޠ~/{6tW]~^qFl޴Ne8Zw۱zr 2 kQe3 o|tʥ2Xs.aGY45ݸ N,}H}r%lݼr MtW"]u~} R:padtt i)q8 `@FZ*GfdgbB.~^zJ t L4j5\3gV3?p5M7*ylv|t =0 o`>iA^J$&0 E".{w>xxh3㴽+V'us?} w]ur`_En[\uZd?=]nS#+ׇ߽‚|l+PT +3Pd ݸtog$mk).\S~e$/ٷn>M׭gpy{v1''m@H,df0ψ~t!'32 n',O&^hՏ[;B[GZ-SS^0 -zK+r6]7o͹>'4T*d˲PGXT*P*108FUˡj,r2126\4,+X > U'8:i8v x)K4jݾ}ܰLt#Q[B In86JT"6I\Jy;BBl$J2τg9.WcAeFש' J`!d8o|;nNtr<i٫ ci Zr3&X^l?7nnu0i9aa 4?I\2s@&j#da%"-{ͦP,c;!MuB bzpM Yu'$b.{Ś8 }E!d. 3{ P+AG@CvB!sٻ˯$BYBlcvާб, ,7 !Ē8^*< a Ia~8m TٮXBaKwsT*Tm#eY A* B!'ʯt1 3do Z?c>tRz(\n&z!)5 WE{B^*fJp\huG#] js R31!9%k&AhR) 2mMm; $|B!ѓʯBql$φ@"aKf9$ު|BF e/_Bj$7GCp-Bpb({z(pY~Qܦh!#e/_3E-OB!$Mjo#B(`SxB!DN[wV;B!GMuB!QD!"NB!QD!"NB!4fǝXB!$.VېG_fC #qƯ\u PTSB!we\n2><$Je%J%?B!G"HIANUUsHIc!iK߻woRD!N# D2gBq^B!89O==!BQD Q'B? !BB!D !BB!D !BB!D !BB!D !BB!D !BB!D !BB!D !BB!D !BB!D !BB!D !DdL&L&SA @Byhii455%85ƉBD!(ÇÉN!&I L`޾ՉL!mc!!466***M?i.Ҧ>}1p8Bh4ty$|qUZZO 6p ThTcc߾^v-6mr Q CSSSHTZZիW͛CQ 4UUU @:5 ^z%tKJJpȑ/ݍ˗CVcƍ1)`wZM(2$ b˖-8s ^9ACۡnFElpɰ竺:AZa67hE V I֩$[5N8q℠i77pM?vo~3j"dZl2籼C& O?t0}-q]o۴4[₈'_X>Siii/Q__/xoJj׾M68n:ÇQUUi~=7LlBBi~3td jjjЀ7SDP2@5~}Q[hka|mhP^^g\x )0q틖* 7ٳgqS,n Ch4b2oMUUUoo]+?k+ڙu&a͵`ËF5Íf>J͌PЀ`֖^CCKkc$^E1S t+7u__5ܹ/ ĺDB-ľ}ZJ_]]] X}PkUUPWW+WԩSh1*SO=M&~m1m䫶_creNHvL~!ͫ?ݎn4`NAJFjXƢI Fb1p󬭭 y|un455'666/J;|R[[oD]MM v; :*++c$;ÇƻeOˌx1]744--- ^L brF{jJpBqEZHjmؿ?jjj/^*UZ󨥥---0L8}4qM[߈HX5/͇R|!^?jP/$ψv~,ñ=0yS<&%RYY n ?pe y$)]kĐyV,Z&J_SZb+++*** rp]475Nvg|vm2Kd2abb"&nUU7h F,5Ѷ+ZO~򓨝0`i*uv j'X-ycQ4J:n8N>G 2WNBeP[ģif ɄIȰ(bjΊy@-mPSS֨b6۹|\See%lD';GR}}3`8~8<ċ84u-sn:˅&>|X48T/b\"}8IH4Umm-<(G> 3ؑ JsBSSnݺ1"$po|D^ ବn( xˑ7UK3sE8544NrwoW&IԋkSSV+._~wM߇6{ɓqϬb]8gmv@Jm| D$#f111%B<mp ӧi&Am4"[JdU9n2<0e߆ZFJJ g8'>_8744̹X _'@B9Y> ݎW^yew~W}fڑFee%~>G;ئ8M&pii):tڦ&ܻw/Ɋpk>}i&dff"55{"}K_Bkk+<|c=8uw^(++ñc`Z*//GWW `@VVN> \-r9n7J%RSScҼg [Q7Yt:Y0MC(?K@0 8KPc`@nn.֮]'Ommm KWyy9L&n޼ty8?x8B! Q# BUWZZ \7̙3vG欬,vr͘V&nT|ܿk׮Ŗ-[ⷿwF; tuutzo3~Ǽ233188 JvMff&,Bbjp\`ΞqS񐚚2Mqk;ҕ߅_QQ!O<*no:17 d׮]A;&%%!##۞|Y(J,_'N?OPtIvchhk֬.-Ʉ,;'apooiiWը9c-ŲoZZJ,Θx-'T%%% `kmLBYzW^,^Fx1111cDtG /^x37 e˖aŊ{.޽Qccc(//lj'f7yvii)=8 ;(UXXA~ܚCF#;1***PWW=pa0|>0:to>ڨʝXVS]]۾};Μ9eϼkcc#}( ۷.\Q^^Ҩ˾[";tPXwM?}yQ$V6ʭ*L&o h :g XlY܂Y!B2^2Pe555!IXXRTXA{d)X4Ed|O=Ҁ2O&q8MvKFO} NV{(w][ZZ\Pmsqkhh.=C2^UO?4|MAΗ)o\(phb3\W$]-FxkaZiӦ8p TYUU%>2Jm;8PGS0GK" Uo w{968vC4|;PXSCT[[W_}1HQ|ޡ*Ѻۭ.h>rsz>a1jkk#n#X\LSI=XZIp\9z(EWnhEs3H,w3E[EERSSQZZSNmX󧮮nc.ɓZJ`Ĭ.j Z/_F,bS{qIdƝc| (hH |ϟ`B TTT(g+cu& rb%fS>FQ_&2WiUUUéSMjRkkkW-v w'Oğw0ШBHV Ɛl4z]0 À㸘/'uammEuuu*QjL]2Z(1ߵHLx5y9r_W!JE@`B7k. [0j4XV@jj*n7V\Ӿ6L^ WB0Fj~c% j1;Mq+lDA_ul;%•_lx"]"F+/t#Sl466X|9vzv2P믦ƻMB6˻WP}hgLN,>'Į|g0 'B#&B d i>rɓr1AB!bESp4 `'@؄2@x$ ݂4!E54WLG'BYH(p"B'B!(p"B'B!(p"B'B!(p"B'B!(p"B'B!(p"B'B!(p"B'B!(p"B'B!(p"B'B!(p"B'B!(p"B'B!(p"B'B!(p"B'B!(p"B'B!(p"B'B!BvmΗ9DM' -[CLbbNNiu_Ӊ9mC'B!Ŋ'B!(p"B'B!ɭ#wZPD_e=^ᦍD q ā8,0[,0 :`'B!(p"B'B!bljB!DL!BHPD!",zvqcll 2 KrsQe3T*w+ׯIz=6[E&kѸ|*.7_y$v5reeP(1]*}0qxqh4T4MM^ǺիliQ4 r_ikٳSNFrXֻwzc##PXb96[d/8B&_40ƣ#9) f Μ;?:++7?w۰ )?DRi&mQp9]Xt) ^~|ݽqy;zXʼ>'`xds͆?eP^Z^Gɤ(ϏFX ÁΞE__?.W`b vk+6[dᣏBVcJ XBn~/_W]{D];#hNCNvʶlFwOXܻ˗/hFU%HOKC`VmarPQn-4TكQtww}PqܺՂGJfvLڊ$l~%XWo܌ٺw6jO|1MB}'?,˃^CXVTt]X!b>N߻.$H<+{˅1$''E3Y B>{Z(:9 F^ +3G- IeYG(Z r;;пYniQ`#O}a0Q^Z < E)VtiHxbrkRDVfl\ͬ"dY8w"6]n58IuXf nsu>ˉ7oڍQJ `ddI>P(X_y(}pu&%!bKd0V+Jedվ k ITӾr?V/F!N_3Kqw>7ٝ6|xc@Fz:|tyd^CjY-X<֯]M6@REe?HRET*hn޾>oMGFz.ɀs>j]1ڨ)X xOUF3 J,lbr]FFnv6͆Y_b>%<ކ48":G=?r[o *#=))Qʐw{lR@QA#}vqÏ< @P{t8ꨯB}AB}`XGgPe3Yr?V~,Fa7+J X,9HOKݻ[CݻXv-n޺'?i$'vTKWg4E%yF(J<{ߴ?* \N[FGGN{8q#auظ~= MXf'sR+H _4ĉBʕqIBs!X8\.f$%=l9 sL0 V pnW^i kH!qP4&i^h%().14<7nM~^::f#:`ɁbZ ,Z/ZeY4: L]۷+ F΅ʏ bnRzxSj>>>p d`@Y]bQȁo6@R!/7;ݒɧZO)C!&X,HRy ʽ{qr3> l6t:-V,[kFaJ¹M0[,QhpN))Xf5U>J\vB^nn4WaվXx޿hhN]E:!BbNlx'F{"B!QTG!"NB!=r8! X[BhQY4N!,R8B!D!B@8B!DY[i#E#B!Q!B@8B!rSR3^!B櫐%J!BQS!B@8B!D!B@qa|/Vb ft\|:~!r*8.2v|1Ddnb>~!GH_x'1:4$X͚ZI ]"BV#%=:8 ?1dnb=~!/za6#'/Iie,]FۄyVdtxwZꐝ7BVlV>AъUHI@b#WbMwv[pP(†ud0̘_o xCL?ӉOZnc``c&l68JBfFV\̀wn`hx,BR!77׮N(]ap"]0lw%rŜKMDٮO#y H(xJ{~|?xKLiYL/1mw1 !.5{&B˗àN>:ss^uj4X7㕝dJ%rbr,-*R.bL z&an޵ qY0^I.EyF0߃M[w xrKw`~A'uA7| KKKk7iUb /~šݶvmo(TJ%232izh5q8#z\n0 %?FgWӕ9utxȀGfcl|ݽț >|ػ{YGJJzUɌ 琕W8N曘0q^Ϻ[[7oDz(^ z(, F?0,[)BZܜٳOL]å<^EQA!6_73Hƫ _xi zcX+W{&Μ;wڼWT*U$=.:šd!>27l+~6Ȣihx]nj(v]]0-P(FZj7184yW^o/Q0k8W}3>|WbO IDATX eM à k6ΝCkXg;`w8𛷏ahxh4aKqʕaI$ڻav/c˗B.c@,n޾>))HII> EQQw~===ו8l3^=2Yp0[,ޗuN&!9ɀI l6+I87}r7#cύ99p8lpp:0<\V@# 9Y8_D֭hG$8t{v4=D&M_ @"9% ~ՅJIˀJur\ֆ{xE:ӅnA`GP_:~ϯ RSR 0`Bo  %|[hkfbbs3gۿ?9E׽x橧P YgŹ-H DIV=p98$J{G'Z_s~72pL)`2+㐖nt401a7t2߼ᑑ?t:hknflヲUtJ|  ˵` #\.JĒ<ؾ mLtخ]PO݁6]^n.6]͎eY#+wId<"ۘy9B.꒙5Ё @RcI^S-ZvExϡow';˲x󭷱}!p À8.}g.2OBv[;~ UA*ojի!asfˍ77~!deY\v m]p906\x-[7o5k0>afgKPe7?HN28\qm@ٖߝ).F[Gخ7BsM:u3OCRHnϞG8g0zk>,j5,f n<#T>W%< RUaM:6GzwČLc=PEs!3-dt)7|;^ȞqlZo>իJpnwcͅ˗ۍ‚lx`YnG][oC"lZʵkֆIYYض:+FBQa<;k7o&m6dffbodR *{#klX__5G$tܾq]D"Q#$R)s󐔒6>J% 22:LKME_\.d9f/K܌E@[{[̗ c8G_|۸~f[jhVf+3goN3>nšGͼPt0ML == \Ao>>(U*\|ٛmeຽ?~c0 ,zs`h))IU` p9h|O= |%l++ÎۡR(G}ԛNJ z%>9ils}'ƦMI*ҕhDGW'vL<{?ʽW*_Nknz柒-7#-%ɯJ?==zzW@JRSށN+t/BL<S=߄-Zst9QpxÏp奥.>Bo\˲h> m޸˗#5%2 vw* Z7l@=ϱrp;#55z[f.p oƭ[ع)0ؽk'l6;?x$XŒ<# Rqtݸ~:vn߆4hZ,/*;cOSp}f88NȦ2 ;>My p[H%qcb:rǛxW(w_GT33  4 f%'jAys^;u0yB ##- =}}QV!àӣ;0Mxy0 ̌ LL P wnm\HAX$u!)ʒe(V-JzB<)CU-*QU.h$IсWM<˾}oW)_Q6c|S"T_v'̯`(D<՝ÞHÅD#!jtI3dG `0LL&[9ذV/"7ndrrLG,'ͬPNNUJ:`aNh>4$~isv4k,g+IQ˖ڵ;~*x1bd_(^9W>OQdYjёav};22gE6LpZ,%f¡06#x'@mpƆEi)A-DQRo F>ef~ J&u7_ϕיQvgr9q:'CNWzrUW32:Fwj|>dEW.}Z EQPKs;8ח!<Ϭc;}J,{^CZ~yۡo2%E+2߲;~mhZp3̓Mzٔ񜸢ӟٜ~sEQ`(V0TѼ-nSƭnNyy=][XHFOp`6bu&2'q8<;;խnLJD( Izٿo/y[AN~nr{nt{r7 M rΛS㴝<ˮqZvFݣ{n]<ΜTU% !eڞ~kUkmvj!Otd1m[QA(kO="+$ua]8lv._v;׿M&L&FTWUqghU˙rRZ[lLZg:ڊfNޕynR)~f&j>!0NBVd`02(q)T m+yEoe%FEQc``ZRj|>31L3MLe}eEE~L;&f~*IdYKwi&&(sҴCC\v |Vflsbω'͏nbu]]/bIشq#g;TUV2<2jfzN}1py|l۲>-> .S{4nqv;*"zzUWSZRB=$Irt8j*̩6$I#%uA*]1ÃDa.5E!iWEQt[ݨʚիd`p[x^~?}46̿w=nޙQ&\x >dcALu9d9F(,4[Yz'9;} ED„9Սǣ>tK]\z38vU|gA5e'9b4hjlLDhд~ozUw&:znN,Wr%*+ lL9N|aI##qjnܼA t{;?b;0?&(I56r&H;!5U Ioe{xp:L&CSiJKiҏu߾͍Z,8 **CÄS.׮IۏO2++ʱXO۫ټi&1xʚ}񸜥p(VHmt?߲cq2[7?$q&''m[5AI  HSC.Wf7384oNW~}@$[ v9tVV|մm'd_y^7[2`?:&mx/._iC*Cj_zn\/X_%(<  JK-L$a2 (rba4J1" RRRRZR$Yja9%ZLV2JѢ:iᆴ ~'-f3GO |~g,2a)-Çq;YVx뗿ؐMT[{r0ذ~=; g1ԯ]ˁ{&g{Z[_:?ϟ̑`dg8Nm[ ݕF  Oqˎx,Fvvu6$IZs(/S],K@Ti=8۶l_y\mv@&@qfm YZEV ͺ$MPUP(#Ibs>NK7}y㞛9j۷e'9'ZkOFY]Qxh4ʙ9oNv cZ,ljbD2AֲazQ_5@eb(pŷ F~?n|HhCE9-ERs ݚbZJ-6VzpzVPj4pa ֬tvi;2MBˉO)f*p|EYdY4]s$E EOזy*^/My m٢; 2c0tMl2d&38x_ji9 PRjbcsyx˭krD:ANĸFFKd0mX,nhT7KDII Ւ&0-WIaF{nĘKL^)I6fK#$IR ,N 43g$0S0q`(!rB/s,F<㸧f-4.s揠x 99R%p՚3X X ¡`sq],m =eN\. FGB( #CCr$[,u(#y NH݁jEGGf*Y3>:ծ؜NlvGAsbiQlG ,MrUS>.ǙeEЫe1V(_c bw$p8)$ ,\.b.)#|֪Kp,((b9 'suL0øOϣ̷R^1\ż.;=IX B X,RMO\Kb?`1tOm~O`q(q/Hb.QlG ,-3[bx_a܋FWBb?`pߙ gTTĸώ@ XԹ@ 1 d@Iljb˨qRmv֔{ P @ E $SBTT&NbT'5q\ `9gJp2%8%5O5NL Nq4)F$g+@I*LifI&Д@ I'%NIyH4N±\ !)${8 M>OF$`tO:s8%K M"Q@ BRIR_K Q4P@ r@)̔ ?<_@  j'IENDB`parlatype-3.0/help/pl/figures/parlatype-prefs-asr.png000066400000000000000000000775301414030451500230040ustar00rootroot00000000000000PNG  IHDR1K{sBIT|dtEXtSoftwaregnome-screenshot> IDATxw|̖ ={"\~m׆w;k{EE&(-$IٝydMH|̙̇g<{ΙB!B!B!B!tb\CB!_7SKG`܀wzs ';#h4vEB!8B麆f*,E^H*߉L$&6lؘտG@Ue56tلH!]E`0ꊫ#==}P v@k04JdZJb :t?jvt!HZ3~⤛۷H;>i199/ڀ]!G:W 8$f'N`jv4۹oC%B!DFU>p\3`_W%3=5Vk B!Pr XZ7RW줊Sa !B4d4BŨ/ߝ}i.Q4{ɍB!Dwu݀aR߹P|ٕ+#BѭyH$0HdԺMF!~t8j\&0{I!/1H^L42~h6g !5LX $!BIj3`h$+B>FiB W'I#Bަ2!]^9I!R51R#Dߖ_jPۡ!D;~"9e70p?Æs9g0Wʕjm̛;s8ٕŨ[,!kݵ?Y,\t64Gォ]TWWinnn(\(*D[ZHb.F}njd2g~V]yvøu̕V·IX׾f0&_$f q䐚o]~Q]S=4֬ tw$puWUv){;NwOBNN?oÆs H,<g͔ɂ%>.p%lbά|W\N;rr> v$S\RfL柆xO},lږ+';Cw \BF BNn.WްcFsϭ79jOE:k[Pz9 W^KR{]gw3tp/+{iu{w-$枇;nEQ} +ĈÂi7O`2"2<qỌQQQc[ndάTTV)?VN̐AlIH?b8 g_`##06jWC}1Q9WaC]ǟ~ LxH(n%#O>C=_|.-'ՠe[1D⎝|x{{qVP bDx=TUex"CٵgK}={NO퍱uP[̙5B 90S&I$f79lH| !ZGIMGE!5-`>0IѯNFf+2zpg.f3O= !e+SӘ78\ﺟ-۶SScecض=ɑĜ0ࠠ6TyM/?(U>o'qg2yk#nsoΖm 튱`>|?UڛJgsƌ}߂(|W|̘6{>4EQr|99\ub6oKh %*~)~ f_uIzF&Ypwmq]׷]1leK*gceGsI>1GO9>mI{dde_Isg;gUUU !ZbKںD 8(zAn던K{7,v*}1ёӓY˯˯JTZ0Ҳk* r4˔[,HM`(u7&c..fgS&$+`n#cG[gI|WddfQCϽNzݿؖ^4JKq[,3 x׭'|H 32TZpKbN߰l{j-zMkIDE{>**ْ)ܞ7hnb)l;5LTb았&F[ƍӓ@&MGLTd{zz0{ Nw||뒊=5TueUXOU855VG<ߑL]]lxbמ}$ rKrRҸGx[}Jo]zѿ  l{:Q$E 0;3M{q -[9ԓZmNLe愭۷ѴG6N<UUٲ1]Td!!Ax7oAUn3)hƔ8~,mNw7GMt4MCUU6ki1jz1mrKEKM̻~ʆMٹk͜ -oB4%O;.ປƃKGzI:I_uW}9N!q?f4[s3e΢ oOyv &CHPfH\{W]ALEtǽ fͨʿNb\ƌ&*"]p۽'Λ;ᡡy@6nh]6Wnp#TX*Iܙd4No !AnA<==HHf>k3C˨h$--/]DD#e΄18{ $&:׮G4O(ޖgxXh !ڰ?5yчm.d޽;ȳep󨨬/!## ΍L`4L<ܼ|~u6 !E;;/??|}}sCC[o8Uoaƴ)s'Ǎr3jYb⸱v٩&pkZA:gw֍W_ILtYXVXxQl??̠691y83X* }$4MˋÆ4OC!ڸzo͊f6+o"Wꕘ;aHRScK"`^~zIkg]x 1Q^g__q1y¸nב-[yts̙u W_v1гS6hȈ3*nh @ $8VvZK?U'M[P09t 9&O߮5!K~_ 3gvJo|Ϧ DwHe洩|-ge_[pq13z?onp!{G\]  +.#*<Վ?|}}X*Xj8㴓Iؼu;UUU5qfi'C_ qhO#B7}b$B!D_'X !_$F!\b-B~INB!D${B/I!BK!_$F!$1B!藚ZB!ۤ&F!$1B!藚mNJ?q!BtHILlC!C9I!$1B!$B!D *--ՅS]]ؽw/Vk-cF y>:qg21~mO3'_[ת2v(lK3G FBfÇ e ǧ[#{{=Bt- 7EJʨ"48C鷢b TuCEU@4' !+( U>޽A!aEQv'IⰓ!Ap4%u7IbA FCopؓ$FqرҜ$E}=#lO z;%Iݯv_;vsuϗCqwsy?Ns/ס 󎛅U 5=Mӈ`H\lZ7qI=_GiƁt2RQUAQ`PL4!Acm6ilRV^fÝDvh]=I;Sv9 :2:ǎ8U\ߛQ *%\\\z;ѓI{ (XpuuۛasgLغSe*ťd̡fLAUDQT+3H޵oo/||pwSudfd2CuR"m68Baq1y6iilܼB^^蔕[(TvxݢN?7W7#yz%G|ܠ c6`4`2z;#۸Rf3~>X,df$'70`@z.ŝzSunǮiRH4\w7W:h{6On'y>rrZbx}}XJʙ1(}}m51{ \]U c葤6nD4桪 :&Mؽ.&GlT( F={[ foj&<=8j8VHiy9L/ ;vS&1ϯۖ;*s?bcrgZyO&JJ gA'|ٗMʹ8n1~{|sؚ__9tf=K>yֲqf tgv2g$Iqq ~w 9tTU[dT| DMM fϗ οJF  W_jyvMk5pnn2yٺ=Znj҅4I\}GmM[ʩ'cxx}O%80-`䰡mێ.tx>`^ǟa!O=ќia43bxqR\Zܼ&B6Uk&0_kЫ: e?-77==%.&h"P?_t]?7C}ۓͧZRQFs굧y0ww|صo?7)+2" oOOb#7WWWr 4(]#e>R32^^MF**+$L8a:_b oBHlfEŬ/ea]Wqi)v ((,BuBQ]@Z:E`cN3RidwURVƖIڈ 80WWTU%$ım /_n]ʪG:DfV6? QÇ;d|wx0rPS8˰!?dz2su$F!q? 23jsrY܋$L'vLa8,LمA5ykaL<3~y%ӧL qNvKEEU55$ŖMӘ6yRϡ=3~FʪxWZ>?+%>."^{n^q9cO=jmsvtO= x6oێ3iNO\dDu|}}06Յ;*[,M>KܑLEe%1_kk51e (ҨΠ:z*0$n^SZVNtd8cF8:o$7H==9nݟNe4%_jyee0ϗʫ;TdX(Y,FE:a%7/Q-N_e48jRvQ\\täqss#2,,rikw=t_@M9؟NLTɻRX\`b((*Յ  q6bn6puuPvw*gzoJ?-~Ǡ}R(˓L2d -TUUjNF=u Gםwfm5 EQ5$_+. c8Ӊ Ǯ9BBx汇PUe+~h4}Y >೯%qG2Çqxdpu7i6N>a.ӧL>&ig2g~*I) ĝ;9fT%`Z^ihm?ʉ?.ajjjK7ߏeKGUUc>+N;+/Y57FZFXmV)vhV+~ ['rgE~~'0վq=ќTYT[nO,;'l}}%OQVǣkS'1ZQ=(OFV6^ @y#LM$5/Z..683*~WPHjz%e_ ћ}}8fd H>HKJٖ&8][d/-+ : f[*ˋ¢b4]Р K((tr/,YCԞm*D_ZvjrWWYQvDs1h}}FN^>9yx{1tpxEIi)6܂BCz1HsSd2x{yq5W:OLS0~s1m }%Y26mƯ!:*֨|YYde쒲#'r;u{?3{RZZVc !:2)55]ILrDlKL">n,=4^|?~j\SQQq`08J5CHRi!3`3={bg MKz9ɵ)ص{/8ww> vK,8vZmG c3xnY~p$Ao=i'&͈뉫Gm{_}5Ar}~F<9ylKL_W*55G q,EE\ưTDhh?.%!uW@EEH#"Tξ4?O7hlٷ2K!MEё|<==2q|Z+OQNO[,[gm "&2]:wN͊0bEe_ZU}n.fBrK>^^5QKHP efd:նg[JQMOxH051S4__8бmB56,WO2M̜vMR'%1i8> ^+Y4M~//&!M 偻n#"K31 u[_oԣ4 o//F f=$Sq%α3xs\L4>^TTUֺ5=uMiX{<~*e>vcB-'/ƸQ#zdmʤzd^-ILt-yWc]c<)7뮼32'wVT3*nh ;? Au4;XړI~gov'DksS'Ml=#Uܼ||)))АHiٹy F7nmN%Zo ƌn_SZO=;H&51ꊵJZF&Zccz\&7/F`݃_{JgN5lqcFzȆzIG2#8Bt\O$I/詫d!;Ҝ$iN~!;ru &C@!aFIiio!`<'?r8Kw3zp%&iǎazqe+@x=~lK@UUƎէ^>&qq$LՕؘ.=86A}1#:I!}N{N!Dwnr\W>1B!藚)=q!?.r~Zu]!("wB!I!BK!_$F!$1B!$B!D$IB!%IbB/I#B~I!BK!_jeÚ(F)3z;!uIpJylOxyA!9I!$1B!z&v3mƛL?v6ʙz,>Nj2fQddfk3=?g-^zӱ-䋯!z]'EX5TQSYfuh ofET>K.hهLeUU/DռcfM g%eݛ:FE#­Ŝ1C `N$TbV鏦t\p޹8߯O>%,4kҋvB!Kbo{.._2 OƳ(o͍ղ(3aD[;9|7{Y?+&N@iii5M7wS\Rc nW~ *+*9zF[V{%~e%Z+=776cueI\t,?guN:ۊy1 ;o'n "y)-)euǟpϝ3d`BCCX|ӍKo햛#8(.~1w{p`)llߞ@Ii)I;wrccO. Q&駞ʠXv8?۹;;#GDFc45H~ntt]炅l6;s{***frmvԖff3׬a1Yɓ&oegr2?|.fq[SRZBFF՝_!D>1:5ߨ6^o9~(.cy K"ykQT3s+&2l6e ݷM73Ϟ `;*GJJK4qt6BnvH>tMk4<иfn~7!ʅ6.9ګ8'VSKqƲ4oŨp=,ϥ-̩OFº=ՔWk˯e!eVAAkyN>y |>;S(,*'Q&Hڱb^} fg_XƿfcF}J|}}v67**+y%\ n2dؙS0fFMIMU_?@zF&bQ\\?`=y%<ӭ.t{ Fy;夓Wdj|:3`f(Ǎ@TViyL, g_jUEQzI= |w}03˳3~JWtYI9TX,h4w !jӓ0}PÉ(gU@ePuP=IjtW~q0LϞb#FW_Ǵ 6Yl Lg'0Y(+)"$<BÓf̴t}L4Z <\uj@11=PTS$0D 09O?,=6TRV\D1躆Z5r|!DQaȈޑ>~uu9{%2(:(fnCī8Br,50*OMls_ldV+}BBt?]f( Qd9R)( 2/Гxee=>ߞ:QYQA$0B!z븹{PYYiӚ(޿[Fu`!Yٻby:jB;uUmL%1UEVlٰCB!9RHMBÌ$1GTZ56U3* _wmpu%qǎ&fJ^yr6:bt.@bi [1:Oup\`ZY5g?jw|Gr1cn6aVUyw *]^gsނK8p Wi8\xmUyw?W__. 2C-7t]^ϿT]M~N!:YjY=#p1QT\ͦS]U˰a-~d˶>zmEܝߓQE5ti<^f27؏IYqS'8УIY>(..f&{~;Svio!? %9@x]V]/-`0PUUſ/K-`ǎd_(R\k9{LIa҄v-~7ylIH`j7Xm"/Cr5iS'syΜq4׭@j*aapՌ9{Je:ScZ{Neլ\ibrw(fG;ku-Ey叧2Q}yM;񄹬߸MӜݰ \κ?670\Vv;\]˯xi'̝-O䯵,@UUY"'47^}Gko-<[̬,xe7x77{ʖmsm|'p!zA^A/fC{00` ܴܤFk\| ~)Ǎ BQs+$9Bf^MӍ| ݎ9ngl\:%L  `7ixvdtt 8p )GMZǟ]BXh0};)/+gƍo፷aJ\|36+555;SQQNUUE\8q"‚1T[k⫯D ]\ge|'nz\]xyp%X~}5p \\p98ПsI;[-N#",?oTVLa!0ws}'^MPgffvUk1QOWk:Fu^zsNuMM.1,ł:Aeeee0v223[uQ eP RSFB#֖?Qa)gf K5NO$F8whx{Ey TVTSRRNAn1~}@dOR*JtOj9s1͖ycYs\b֮: #k5lvf]18vBCB4 jhO)9iZƦ_O/G  Rѕ?h2b69OQ~/<)^?TXʙ1w^[MHs=}b㌋ .c׎L;A3f ʫPjU‚jj)+̅3puW-sQYؽw)v3qXttuIqmv)v1(6 IDATԌt~}n>2S^s!44ĤFח+*+,TTS Yo[oMؙBltLhiO9]$9RfD6ξ|E 6+%MG KieE%sl\ 7?:hg/iSQtps3/k^Kxv2~XvǞ|;s>Ç W_kzm;Ԡ 7N9D|ySvQ\T}h0rkoy6l6Rvfg.gO=_z7Y9|{ ѧk^JyױkvfL<3OdA5|G#F"#uνf.>&WW0xxUKY9vn4j;>.^Cunu~߽vL̳O<^G~Fu;s>n:νp!sfb1 }嵴.t]e/qbP 0w: /8WY9 y|eLzrߧ"*Ⅲ"^[P>PTD@<uŃ]/AVT]EBIf-=RHi|y m&v \*iSDI1UDcL",[nDIRH1c P-+˲0Ƣ]v߸ IH,rti<i|8cHNI&!!'"/Ϗ1dWlZi|^'Drr e" --`0@0XmYI)cb2338h0?ĄӖ c65yzRS0 !!TB ~g;< +^gZZ:"!! 1{IME( \:k)"eА+ضm~-ۤqcޚ3rYQzeY1,k{BzbEr~ce7!b5\R)S'䐳+F@^=@0K]y})>(y>k[r-Z4' o) )tTI-=`ޣYPGi͗[b",DD Lk>[nr 6d;sW!&nTUf{1C^?W!iuB%7l`Mh3frŐ!hEDAΝ7],bg/{\ 1R&c vÕ/"h)z}y-}Q7jE\N{ ͉͞Z8Q%V"X-6\QtЁY/.@ԡ#>bↆFJ8!U|I8]'FDDDbzbm{pVfu]lRV,sEZZ9gTuDD$}9 _&kDJ@ؑƝU$""՛dmF*~̲,l&vkeޑT9""R9NY]#u^mG4TYY6"sl\k^HDDj6OBuh׾#u7D=BLVmCSÁ\{&mq 78O=Kq]~Z@0, Ӱaڵmm}nte; eqF9#ΈиQC4hp EDDbBL1;a{)/+  {lڼ֭[y &u'z(Z{!{g6_/E0bU|\92vf ,Z~Rg5GAٞ._c ?3a|xqwrDD$( m3ks=c:[bԭyHHL~ztv II߰c\h>\G4ԉu֑Lg,{N=dy.YK{ɥ)55^_e~{|a)DDPC]>'͹y8o@RSSe<'XIJN_߾,Zϖ[9];x".^,oN磎*-V9m٣;xͷ*DEDFSc͛5#9)Zj1=qV^ fjz@OX7ܧ}`/͚}29|WT, 1qqYoɼO>eop9gխ[6c!##9|V=+&MӳG xݘ2N<5jD-xYe%U ]{e<ȣQjEZDDeY3#"""1I_;LDDDŲ;4:bDAhQxV^Sf*+(c vbkfrsrp]%""5m{N-]P9AF!+0֯c,lM$h׋HpB!wngRgW}Zh`&{vvȢ}.A'""5eQ#:ufgԡN{^Q1lLӖm:&FDD*1B!,ˢi6lDSk0c %--MFDD*c izsq]7Cꉉ`bDD , שIbjTFDDBIGVp$ ĈH '"0۲)q۲S.uFa""RțiŊ}'%%1VL!&nDcr|9udR 䑕wP7CAFD))xY7ąw[U2xQѤ+Wnm۴m{e :ndlj׉j3#.N}9ujh{H*iKy}[̤Ey3ӕ]UM)ղŋ1<=y*EQfP(@vmK|q1[QE!Ï?aysl,"599 ˲1I}z6ն"_aV`> |h1Lx8ZReu~)t^Cѩ$%%t덶͛6#ɨ W]c)pe.FL>SEcxvٕ֮H(ċ BaY2HNNbyMV^ÃLu]f';rQ:4ǐszB^:ǃ㲫3|ؕX} O?m6|aj ~$6W 8Y >?'ͲyiѼ9@g˯& rrquaY|>zA7|'~,cxwǟsg6:vඑ7-"rДa-&{^'#E/+k֬gZᳵ ʖfhɒ",\/o#$$&018ð+/q]ޞ>gͦ}9笿p;K8`/7^Un}\S㬳d ӵsgNw^ӏ=ʫ3gIq&,;g}{Μgaf͘Y6}KڬU+mc۞ٯϿ{&+pԭWm+"rysrSu8a"N( lz{tjGw[zw2cZ4o&s %Ksvn}ZY3up!7w7y@uĵ 8? Nu{{>yKJJ))I\w0~n~>9/}껑Vx^{M=,m۴Bm+"RUUA!&^D:sᤵk9&0C9e'X=$-^;hb>~uƸiIm:uȆ @#3vD~}ž7n.>C( /y8K6{ 7n،1 ,+W_?/![[$9ؖ} 9YmQn2˖W`P" BB".[I0b,\ =gWq³gCBBǚ8Cfp])s}Wuq]P0HB¾iө[78Xإ8N/:vTܜ9 /`'К8a"EG]9Yf-ݻu`hٲ~Zsl zmwo3׸e<1v.qH&JjoXEެicRSSCnnr "oGp5kFtM7ݢy+:M!&^=VZ?\jժu];&OǶl0P+5 8ǟ̚5#kN&MF&֥+Or<|:vs/L߷{~/"CHMNgYz ;r .r)O~  zZVZg@ZJJ~;Jx;֮I{Sظq3^Y>ӤI "*(pRܨث(H=)+1~(&O{;'ލ8:8&=ͷ0xy~(.*r ݎRhݑWZ16F&Mʘw=qZl W d2?a d0lmHLL F42\_'@-( c Ǎɧ[n%r8vvX;RR#""p )jX%K4*Rɲ ֫O$et[ y1.7N9իWвe1!ۥ{uz<RrqB/fLBB"S^c II$$&i68N,ET@ZZ:``۲,Sǰdff2p` BǶmka[b}`ĄD|\\%5P0|eY$'IHq~Щ""eА+ضm~-ۤqcޚ3rYQzeYXVI(˲>g-'&^T0(yQ 9.q<<<#㒳{W~eʪʾvGV\EIxϯx{ ye(&_n>>""Ua]زukkذ!Y1N5l?lM#:[a7nG}^1+ &<7t܉ysŲ)̸[R"8H:yTDeP7\ǜއq\t=wPܜ]bDt:u^c{p]` PБT 1qCC#q*꤈T#"""1I=1q=8ڋA.S)u+Pea,j!-=%""q!-V0\#&Rh4nƎmxD뒵m 7bj0˲muH]+${GSuH8!wdvdԭKz:ض^pRgYf-ېV̍qUzq"< ddԡ]ԭ 15Z ƶm<4N2^K3OӪep=&?=)||'ԯ_:\q|_~5~Cm]cư?-X&.֭q;L{y~7KO(@ 3Me?E _߾v(RSSK.ߟ-.''ˇ Ock83x⑇ޭ?뮿oo)Suh԰!M7\_kfx͞*-]䧞W_?`ǎt>hq;_|U{WԾ|W믴nՊ;o1]p es[n#99~m("zb1ﻟd&ugiԨGð}M9\v,[_S2% ӎ9wK6}¥W\Iff&~g?4幈9i7^O8y-,^=~gZv|EC'q}8hx[]ew@~Q=(5sz,X ޯ_ɼO>0өWnD{ѷ1̛ݎw ]lƍҠAr|~uEfs/lz9ټ-sѐÏOOVh .|gc~qbj9w~/+ÏLǙ6ι~hN9 3;/J4glG̹J;wfg2۶o?e)qDRϡ<ӥ_iyoGЫ^^n_4|ǟ~6l1z\/?J\OL^^9f~0cN>f׮]tYrUm/i>^t_\gI.'=!@c HpRiҸ1׏qÑGp1y|ΝSGvfdÆ 227l#ڷϫQ:n:Zjt8V9)+kO<5Aڵ)^OBz_1W BJ.-s(.4r*>~=J]wam۶DZrK8Oo.8\zQj$N9_-X1]`7ף;7yyyDRt+s%8sz~\>Rn3? z\v02.9ˬy8kL$%' p]Py~ :w>3N;-eJ FV3 t1>{&0?doDIDATy`JHCa=S+-|kJ̾< M٧$))[nͣo/g֟/^_};gwY* oYr{E*(ġ#8F4rjvfgsMX7nmw( 2Zj1/sUWsarρCD Yp!w#:vlќT\ U|EE7kCW_秦3;ut?=Y_䋯f˖ fNՋ۶_~KrI}h٢Ev^u.m"bm<2hذ999;رy|ڵ-\&Mvwl۾2uac`_flǟIуZiis_y vK3J|^/<(#+͚6)j?^J;reL<%O(bʕK$D$ ]{e ӥ L䝹swbeV~?KRSSSk{|=4]:w4_Ge _x#ؓOP"rbT-Z#w dήYc\<+DDDeQ#:ufgԡN{^Q1lLӖm:@DD*1B!,ˢi6lV&b]cp]on.iii 0""rPcHMכQROLp]'KbDD , שIbjTFDDBIGVp$ ĈH 'aDDQǘ k}k{8~4jѡ'""Ra 1"_RI[l|'d_P+i +q]ZeD$>(ĉH\&{5_kȊo+yAˢv&>0:?e?,9,䤘: ٲL!5%Q5J5./3`ۊ/x.;v7g `Yc$%%sRZFDBLܨ[1ksQS+wW`K(kjt>eD$~(ċlO2~/ƓȑǜDbBZN<|ĸ~J\~ >Ovfg娣u 4iҘ…4u eWg+Yby~J6m2~H.:<>l>+W恉ql7ř}~Nݛe˗CӢysϘɗ_}M 'rHII)yso?>;Ա&M8gϿѫg qf~uiӆF^ϑG^wꡗq1>x.ׯmC=j$?|4-[ql.ԩYCG&M0nɍr7.N>9]2"?bd/;.=ēBufmS`.N4ӸGq]pb.<_ɿ͘_{kooxԯ_KQ^=M"xضGg[iެ9;WgsۨRSlf0n,5bҔA<8ؿgڌsΜ_'##Gňk߳eV7mZd͚m[32VFDߜ7dev bAjQt8a"a ZveO?,eQTLJGn8ϫVa0lbݺճ@o;͛Ҡ~]&ݻv͒%2ۙ1-^']w& q\cݍϗ[~}{9:Z֟V-?{Aͩ[6~^ٻw1}M$Q']3y曌;mZS;=BRR"@#O\r Eptǎ,Z>O !!݀1.mZu\mN;aF0#80{EFz_ƍ˭  }7㺴mw` {cj2+yoOyi*!!7Ѻ*8nhO ]>M6X}כ@NN320@FF-^oq1ݩO=(/.O$==ٻzq]a[vTT"q!psS<6b5\}pnu)$Rdy§7~ E߷j8.!'.k!!!cMǡyf=PWuq]H),=#?8yy:xm|\{mw3q\ׁ,ҟ>[`yV=8&%ҺU+n@FXqSe6˲hg8/ZeD=2>bF})},SVݝ>ݻrXzZwвe 1pِb5 6gqyb3ٽOeH+/YƤ/>Ǜ77jK8k֮*=Sdުիif B,Sr7s#oɾ7?23iӺC_|Q r\Dnv@ !_Ȉk1a\}e( vVov&ץ_Syj4N3g>֮I{Sظq3^YOZJJ~KYW0}lY;vWz9ω`I|lځ/xm C<|?lۺ_~YEft뚿;l6l3M?2:3XF&Mљyb(W_1@NDč^ESᓐ~^}OͿ͵W_.kG1y 9nǡq1p o~'[FqWSvLB덬mndҔ7-pKIIN)SO6hKlݶD`a1<\˭B֎kGJJ2o^W'@-_`l۾;uɓ,?s r}O9>ۨ: ϲ4l3M#33rB0n\- )SO37rHVDu9'j@BUDcL",[nDIRHse(eKhwDr9ytO;/f˲ILOx<{ñHNI&!!'"/Ϗ1d䗴mjyq)X>SE_eBBB~dZA{lƸ]a/99OB~:>`0HbB">_.2ƛXlocn௣nsr9-qnx)ixlPWsOϨ7wwx9OB))(-e'!!]BN@m`SR\!#T,xDT/YQzeYXV-)>xuZ2jG~3P~rrveظ<%^D,e y>k[r-Z4' ?)S+lu w+'(~q||E܋'"7;cJEO{*Q~i{ɬ\[mPͩСT[ Xqt>;v⌙\1d:[<_$oa9ⶈ| 1fyj#e\7F6U]z}y-}Q7jE\N{ VbDy_{8.9w_ԡ^zaϱ.@ԡ` Y"bFl ›;!.*"RtIꉉq~ng8FBL eY,"V-3Y""gj 5b"qAf.Y۶ѠqJ_!, ۶I]uYGwd8T #+$n]k€j<˲x<4kنԴZdn̈H$$Qv;R~C<O (h/۶xRBLAH&2V_ gf˲IJN"=)i{)ȈSrsvҬekm'᠍\u]\K^}9E8;yz'DڀHqQMŗKN]0%ȃ<4Wu@\q|9Uܚb,:ѩ3kW,ǶHMSHq{M[! Vcb1-8fj/cBXEӖmܸTbzP15Ҫ]%Rjp]m)""RL%pT7^cN)˲0n9 ZDD:Z RM= &I6 cTyյ DDDtwʪp@W]bHMPIVQbb8wX.e!ƆQbHM[I0"""#"""1.>,q~gTnSVp"""RN:b8ICV"""QWe~S~O,q~n֦oOi"""5QNUhGDDDOl '$C׉QI1qޥ{=ٝ}u)ˆ 11KRHcIѠ#""R芽"""*jaީྈ 'UvHY4$"""1Rzb,q\leXNr]nC j!Ʋ,1XX$%%搖꣨PT$/$,, HJm[uڶjEDD^TCeYضErr )]#;pP4WS9NY]#)$'`ۖzaDDDpeoX֞ cV+- 8XUTcpz Uݜ"lԔT6nJZ l##""WTBLJJ y~/iض1P+=ԴZ=GϚjpm;`W JA,;b,%%9[)""R=D%4nւM#9%-|Fcce٘v XPFj,R.;wdѢ!U<j!*!AMԭ߈Bo,QR]5)h1/;[ 5▉TQ;ź͡?6} ؙIa@Rf6))h}H!Q]MiXo"""Rt$I 1"""bDDD$&)ĈHLR#"""1I!FDDDbB$I 1"""RО=3IƲt H- HƋH| y{ {M S@== `z IDATxw|SO&ݓIwe *닊'PQQPāF.Ph.nGBۤ+yEz{syrι7 B!B!B!B!ąEт*ΚOqB!a8 M7j,T-٪O&M8F;{{+++BlBq2t:}Iqq?_s]JL݇QcIL ܭ[M󪝝GYi TU0LB!̢P(P֞/HJJ: I@4ts*+˭KKxUBq1w@7`'OGNbt5*d$̌OZv]!;kk*Uh<748L`F!BW'v ` h+*ii%Ft:IoB!Pw T5ʚ2V Ϊ0xWB!uYYܩBǨv,PW5!B5nR;WU$F_h2B!m:h5Չp^/ B!:FlnqU}MB!EM+j &1HB!huY+$!BtJ:NAB!duWI!)zYC^;I!isARͭCB#wg?r B{7EFpˍ~Y Nc%ګϻTV^΃T*Y[X[k::$VSaq1~nQ))//GckkB! aJ#Iňί_toj+L`=Ɗ`gk2ڸVC@"zNg;45~XT*:[|'C#h2cS +CZbź[򢼢.!t"`-.xf?|?~jR),_ø$ąF?6'$_?ᇯV{Lru<:Fc͸Q#H8Hj0ncK֨{|Yog޽mn"",>}3Zf˜|vwv _2rZCՕ1#s5WT*N?V˞I=*_D<ܹ{ƭ$=#C<3w6+X?Y0x@fOٹMX=Ciߌfo,yOq:)=MTx|%,^hr{oaJH׮93K܂(  !Ĉ ^@_~ڊ Y+$2z0JJJw6KKxYL3RS3i]Bbu 5*`a6 U]\\o>Je7TV*a$%P\Z]MSw֥kn_;t9sb$8(c'NRRVʾ:dٜ}CStU: hK~j5%X99tHL#,V8:8}  l3+&]Z551gRRe|^ZVtlKcTV4u難_juml4tx܄OxrBqmslrV)e2%16|>t8tHȈ| !/`ᒗINMNL/ܓsqui}Ja~3^X#( #ǹ۰2ds2 }1\}Mv'$¢"cwB;;v.ETo|AAxUǻ7kLFTR^Vn2G ԟPZZjrSl[bN'Q*TVjMt1 旣vE%.6h{w(F4|ƷgK_!˯7 óp:1/ʫ/Uru\5W}|OȰPEf߁_!w:=j"'//?ɂEK ĩS>188s p?nxdgQ+++X/fGL˓AezՋk! OβǠn}c̞$OA~;I\T<W_1R'SQkؒyg>+++-ðA7(>khKꊋ3חg=Q),# !+;ظ8J9ݫgHNIe@>4u١s%VqV"BC nYGp RRPYYɽ3ƨR}MXT]LsSԿ/IFrr󌯍<^#ݻE֛y>uܴ}}U* J>ymvn!15tzQwυH48&#B11 !KBa$B!EKBa$!BX$+B$cbBa$B!E$F!I!BX/6^!Btn#B$IB!,RII;!Bfi0 q!B4t' !"I#B$IB!,R#?).FXsdލ ybRE%DEDz&CSPXHDX(YRG!DK)NL8^A"BP.xZCGۻgG"RPHT (yy^@TߥSvV[i;: !h UU2_ߎA!,$1(=3C!!E$FvtB!$FU"IBq~.$Qt''++.GŤkejlٱ<߶66=2;[6Y` Cy]WUşT*4n *c8pI)z iZ~2bv.s*Z~;oBZF_\qC ^- ECW[r{q*%ْRϐz&¢"t*!4kG!>'j ý#bd08pl ɉnD{Əvٝ;JRgaXY}TJ%N(6XRJ*G䈫3v*ӝشu;DO;g_x#G샷qqvnː۝F!0 Z}^eWw^g2sRprtĀ¢b K%+++JJJgF SGvhsFWU֝{/(@Lqq )gHdP>xtavzu-;wQPXDʙtw(( FfgTw9 C-=3[crrشu;]x}㷩JErbR)R}1?y|<۫12 rY=TR2g%iE}.;q|˘(9~'8p(q#_p-Ё?;`e"Ϗ#V\t DT=n.;p}{ ߏ #GPÝ"hVjٹ7\lmm  U$*RKl\zkEE|ٗE/7w͸g+o+/F_7 nn5^RJnIjٹg/*)_εW] ށ-YՑz=NaVӯwz- ++O4zywMɩg8q:RVjܿ/QCqNJaĐtqumJhg'GtU:㴪*⏟$=#Jsuˏ 2,R2sYseIDTDXHW˛nnCLUU ^#֠jtqs_MWMX1`Sg\d7‚ܕ@? . Cʙt[^?']g_}áxJ+y1jP`Ƞ[PΤsó+&^b[Jd_fzb=*^^ i;^c>[\R]7Ǜ#NCdx(E%ЩwK| 7?̬l<1lc I$zujj83f S8p(SI(.ƚq#P(8|'NGW&NG8daccMyy9yyý<֘uj*Lkkcc͸e; t wnyPe7YAZ*˥e`ժ=&+M?AR\\ZcQ0϶vOb0 Q&\F]/Er  :<ZUY"6E%h4U^<ͽ:%3;IQYY;:\+?ˡi3[{ܓ/)ůo())5֣C&τӉx9l_T||@\zaA9zC-1c1pi sX|"jS(66/)+3ކ1hzps֖,3pvr$*< oOprr$NGFv65 BgJ"9ۭv_+(^uy?oHΠ@R8JJJ[lX[ʚjj9HNnz<|';wVN.Nؘ,Ϝx2um([Kx%WW iucuےM\YIJvu.,ԲPuu^=P5gS\hӣ^NǁC( i: #4(< j[gTs{LW?yس''zwΖ7okQYm97٣={t'9wƎ'{ͥԊꓥAځ66x|w9c'I=vԴ4nv#Gw˃gmr]ӝXyy6?L\2zg3HLz;0j`\&8Y9dffhڹGcogGee%YٜNN!=&v!5]Cj?,*eM9z{q r/ $(+N$_@qI #.x֒sw] ugN6gN/;ԴP^^aR+3:rvXVcѐz\O5^[/W(IdXY @lQ 7OF''GCQuJϨttVooO==c̹ݑcgkcBX*oQEEe'#%8(h*InڶpT IDATsDft 0t:z}oG3tklij5A 46=lƎ1SlM^u&ߴjZ32۳Û TaՌMR3뚙YTSO]-m8NxqphcιD)z=]_3swKSYJEzC2z:9](O(JNJ$'/߬eSĘ++'_YUwzrsuOw2ټc7>ޞ֨e%elܶG{{3P(Ԝlruqny*VKNNojJ"N$6o/?O=>說8qx@bƻ3O47^w aۇ1"H4[]ft ȱc<ԳxyzmN-~g~"C#<,'G"A|jND~t9TK׫=u'/BڼgG4 xy1fjcx{z`RzBK͕YvϤa0cM:#Wg<ܻSD᎓#l޾;;;3hԄ5y~(+/g8;9R ,+v]vcLm7 `OFV6.XYYF&+'G{j1ֵ92ݠy{_NnnYf\(+kݍWr#2<lj9ؑL~2^[G 'O'r<NMXpWtZ-O&PX\򬮢J2ppgȀ~j(Jk%u坾%i3 dddkT\$DstZz/˝OٜH8EFf6N_XOW}X\$ 9Jw3-!,˝4 JS `͹:I:edfW!,˝Fg3m v.11B2&F4t'/I`H#;}] IBі$FruBK"I0R/(0. %%%a!EKF&T"ݣ"9@yy9=wD©v{DQq QIiJFfV?OOϤ0.KIB!t̹:IZb.b}i!|7B2&F!쌴Ct@E=!0_cb B!DQ(r^!B\$B!E$F!I!BX$IbBa$B!E$F!I!BX$IbBa$B!E$F!I!BX$IbBa$B!E$&--s̢W9B!蜬ZwC( 'ߏOk-R\w=Jo <'Mlq9B!Z-5|P45eo?w޾ !XYYhSRS?YS&B!Dh``0T6ږkOYY3#Gy\w5rrs֮B!DP(S2QRyP-1lmm2 =ʩӧ8i7݈5?>>ggzk\E~~>?IV!Cxb֣0t4oWV}))89:˗hw7GH"#:j vvv32xؽg/xxxpsϝwTZ0"!fI @UUiFCTdam @Aa!?j޽zRsCp*+."~ް"|s]zJJJ)//7v͞7[È?rsQTlٺnݢݫ'v?Ņ-J!&I`dB_Rذ 7N>t(O={Аݼ#Grkyj\v;[n1 DsuS6v 6[ҿo_>|&[T>lܴ6ŘQ8zF0Kh]|w=JnnTB!A'1#G ٙƌIdDyY‹T*/|+개+vӍҥ9tqscklܼ?G+?}MWS⁇[T x??_&B!Di$fYҔe #3{^MDX1Լ&˩Q*\z.d^^|rǎk` lČ6g>z=ǎa7k}Bt`9vu?T*)++c[oзwoFaزmy7Ǎtb"N<1sڻw,^#cݏ?T*޽!]CvDx^Xz&aEEEڳ+B! ^/㕫x*v /r-7ST\ɓ h,KeǗ _~>Cdx8j~KƏ#5 ߭VKA\&M_N㧟W 8*A!j7 =_~{3!"so9cWzѡ!YlSTT^Ɔ;gpB,6# 7_{ЎG!̢!tB!K!BX$IbBa$B!E$F!I!BX$IbBa$B!E$F!I!BX$IbBa::!Db0HKI$/; V~F͒\=Dhl!IKIѨ5Y prq0S'HKI7 Cc-HwLZ\#Υh%/;CMH#GD0D+h[P\$B!E$F!I!BX$IbBa$B!E$F!I!BX6Ob>&z`kͷ(++kN.|s'%pG((,8/V6rk-xf!O_`q/ㅥiZC©SMƸ]#_~dV,k|ky7Fwp8.v~]To~=6믵c6}1Ӧ`1r9_nbؘq<_Lv*F⪩׳_ϩVw0dnVb0~9ٷw 5fl8W[\:?{(..n⽚chj⍷fUS5}~5s%!ILNN.iK-'ݛi7ȾیA0ɸU* /BFF&?[Wtb"oN+(,pUWy}L; Ϲl⥸4X˝0n;vJ a*Z6mb|Ow!$8r7=wiV,=?g#3oՓ{IQQQݥ&yVclܴKǏokw§ ڕMt|Ut%iZOϟkpnj,\Y)ݢ"|hrV#..^={knnf>Zdضcnj1cKb1wήۆӻ7?(nepkmz9x0}/(P\+RoZ.#2"ﻗm܌N~n+{0AyemȃoIJN&4ca^:0g߉gڵmR~[wbJ{Ki,f,M; /-[NII +/kۿXͷ|D0g,z3\".lص聃&&_wQ=6 jnnn_[$  NGYyye3&FWOaќZ[[3bPA=رk7OΛC\|{k-hζh457ooh6oʠpttuejOuPZZj;??_6F́䓜Ly#1-666}͑<%KpqiSt^M;~i=qn-McR-2zԮW'YYYaccӬy_Z޽{1K0 |JN*~={nz{b.ePT\-b΅]cYvdfeٴe ƍ#''={%^ խ9JY۱'^2xGg>?nb ߖֱCZZZ3`10Zy8[O;^\TTԩS6lwi~Bgҙ9;:csHLL˯ᑇb3[բ( |h(.L2&&06oa-<9wN~ڲqf7?/|U~?n"33 ??79s;j;ο73x`XÇ{>6o#98N3;SX6߇Mve4U!Cɓٻ1F6XF[_[n#0둇8?(&S&ڐ_Pp^eKq뭷bgg{.my<_^\+?7k~>?b7<ew-)-eҗx{{Mp-7ͷع{7:qq:`YOdffQ^^ޘlmmqvqGdҗIJN658˵c@~ 6 U3ڬؾs99jnq&x))-a¸TjGʫݻwͿmYm9ݻP\\7߭!//_6Ʊc[\@hV}9i餥꽾d˼k経ZfZ ^OII %%% _SNsyÆ{Eϑ\}3:ScSYK:|lwoŗ1|x>4Oh"nVF5k`}}࠮L.&]9ϾoY.qcI=s1j xɕLe͊2Ug:x&W\3cwQՍ9O0vq鄦$hkMģ3窩Ͽ2t*s#57Ľ$+z?L2k|$&&ҽ{wÇNEdi9;n߾̚3r) <yYx˭{Ok25v6 f>̈aø7ut(m\?ZrUʔn`,ۓ%ngE priV3bԔ x)@PZ( (-1`0pq|;:ш-cɱ qvA&1߮Cvt(~xKcɱ qvA&17m^mr܆8I)9˜ѣ::f؅(.11BiJgŒx]cbBq$F!I!BX$IbBa$Bc֠0Fa*++P[Btf!qs$I*%x$:gG"D0G,@S8~ Zm<< Ph!Q(ѡ!D;I!I!BX$IbBa$B!E$F!INBc0HKI$/;K.pjWwO|Q(N!D=i)I#ƲZkGtX$:AZJrɼHwLZ\#Υh%/;CMH#GD0D+h[P\$B!E$F!I!BX$IbBa$B!E$F!I!BX$IbD}'DL/"DIq^߾G§侇f2g,2}9 /=+.. '3F!hmҝ$ZU>9T75Wy!r2;x(T7/{}'_؉xxQ> [og 9K뭷 V}W_#'\fի5Z Ybxa+iZ!ƐpT1.{}k5uKceng>676GGV)Kt!s Nl&ޫُG_2=_=t6}\3`Ȩ1p?`|7zIWMaKx%IKhU99-]g==J`?CbM7_xyyV/ %%l<"xΞu y9<أLR220'+xqsw_ . nr'SףR*=|JM['w.7>BII9Ibiltcu᎕Zmj3z_0 IDAT777 ¢E .:a>SǐEUU_@dD8u߶}O͛'1ϛφ֡VY[ܽ˗hGVz $1U RRSya+L<޸)'78ߺ9v8/X u?_յ{Ʌ6dee9b8NN892PYY'>wߡ[T$O`YCtӫgvmG+WL`@v`1&clI,u i={6 ,ݝcǎpB&O̮],joSc\Jc=5cij40 l9%%%XY˟|e`7ߒO>|p̞w߯=UIbyٱkU;977寭ysIObb[fWN2ؿ?pFګ0x@RRP^QATdhr1l(vWص'!.>;w$1;Y0 1$s֫mm7>f͚5DFF_1eʔ6Yh}M?x~]kűbccCii)Tt4hqB%I8/W'YYYaccӬy_Z޽{1K0 |J\\KTog>֭_cOeЀ0Ks;~XV-r3YY0rp6m„qɡwϞ&clI,WCu'55ݖ:ӕ?gW'5{\ 8Dy/sQhZz=zRoɞ!KIM`6m-[xrz|e*o@~,^ >Dfw5_[$f̈?#5"$bPJZEQ֪QEUQVUQ{-+ȞGDMd}{|?{[8.MLL gΜIw>gϝgǮ]xz:{]{'/ޔrLmr.mWj}5~_KǐiE%7s.Y;qL #G3<TH e섯(YDet1~B!9u4'NJ1X/ܼyp|ޞB Q>>}hvL5o//(\y ѸQCr(Q8;KZەVƄw)mQQQӇ[rUNM7Զk=iױ8::2p@qrrYfL6 ,IrFzgF< ӿ__F~ўbNNikk?v į჏ccmCV-)S9˶]_Jl ]~ؗ^^tz}nD:zp42@ .iW.¢-?Btsq.]*S\"Fʪ~6-v*""TĈYپsӾZ.DDD{ż̘mn "" ĈYR#"""fIE%1"""bTĈH6DEFvE"##ɂ4/^ё͚ү؋Xƚu zj <%Kлχ4c鶛X]iڤ1[ ([ C sDEE1et͛(Q8we߲Kl*Tgbcc`!lD{|9Hɒ%a믄R+6}eq!!!)SHK1zݣ; ]&'N}طs;1"#v]ʖl¤ɼEΝC th&5>ԮMV-qp_~57nb"/^%??Θb{<ぃiJ+~߸o'}Eƍ.XȦ-2n\^x"E +#ݷO|¦kY9JTT6668991b6n];3r'Y/C֮Z{!AAAi3g}N8biiA>}`ʴٷ)'bd4Ŝ)ZhۛL>Eoͅ $/S[eWznrc,1`+|9a"[L2/w{Ӻe[a9Wq4?6oHzdQ|2oݺETt4>)X 0.d̝5gqŋ/GFh%c~}gUR"]GڴjŲ+9qʖ5>xzu~;aoӮk._ysGbWع{^u=Yr 5Ƙ# M0`Æ ёs1rHZljo¼ļry%c`00~dBBB2yROs.]:YDEk{x+-_wnI^c'z|n !E?N]MXxx1*TGZF{6򕫄GD[t#>;;;BC̺wʑcǹwҒWO2Z~[5_޼TR/R31퓘%gL/ì۰}BڵvDNL%$hhh(viF5ʕ-]Ҥ>L"##%`_666CTTKrʕoQoooǽ3OnbTH e섯(YDetԑ)Ӧs!9u4'NJ1X/ܼyp|ޞB Q>>}oƗvX`V@6ms'{9sپs'̚35ijܴ@zc3s]OL |qǍSܽy;+&~MaQQQӇ[rUN w1I\~'GGuLU ⏭ۘ2m:!!+WϽ&NsDGVʕS!#|r|̘=f̤gLzuf4nݾ{j̟5 LO;`111xխˌ)]=l &~ |kZjI2׮_&sDDDɉf͚1mڴ4O?_9fzv{N`.O~}F{99ѦUKMIoIi`LDyþ[s;Lй+ھƫ_T2=/"00{Iמ h'mڽ(2VJ3īQڴ{akibj=w6Nj>NDD61_`cc )RHRJ.>rY/sK,$4z0m,.Pjظy Ձ~ݸ)w$M[~%2*gQTGum*p`EsZ)ws}QDĜYgGЈH|2P2jU:+KK/^dLl#p%_3gxYSƎ-y|>vkVȕ_{&̨K~(PϸUfXYYQ9,2yԮź+T8yRdK3~$Ν?O/m|mț7/nٔlYhh(otz˗0sg=ڿюH܉zowJ1޽{zw;pȨ(eP#CL=vn` >[c"22%˖ޞO1*߻l۱7޽{8accMtً#G䅗(U$ׯNY.OUYDG89:DfSf ΜADDf}϶;{7g*W PwO:NC.\Daaa'iP;Y_Ʀ^qp/_n߾^nAݰL{ ^]43\_GW]3~ Sh|;i"6Hͽ{t璟?hѢ/bےٹɹ,?Mv\1t#?i2֥3z_rPjUݻ7S3~'K_G5ظe #>c|̀!CY֭.\8SL@TTUB &[ެq#p>goS3U}'O_V,Q.:ҩC{7m!__ HPPaa>/_bcciڸ1ap(@5=rn{p+WǕ8; ϹWKtԑ6Ɔժ.Kw{k00oL$~I=bTX&sXuJۙeb㒟u<|a#Fq""ͿKŊe:oɺ_6^:}d#kV%~7p7٩{ٳkv%<<ϳkjըY3f^,S5aC,Y7o{'OV~&̚3ЦU+֮kׯNuټi1|ӭKg|n搯//>ߜ4iԐǏ{^֩ìiS`=o>?!`ogNJK([٘wz|:j4KŊIN#vJ1AZiZ:}SvqXZY$.LUlYV,Y%׬e̗q4=SSDi#1C $=[~[d*8Fl^ V U}8޿?YьU?':}@PPgϞOtOMTܼ/':.ͅ6aaa`ҷreZɅ#G#4mҘgq_q3j*/V70PP$L]{MTvu[.wB zO8ǃ+yI$L-/3iڨ!L^?DDIEL2oct /KܷKS/kڼҊ˖&y-Zbcb)X*_>}[n%[w~\+W =yӦq18?8.!M4a4a}#LrVVV9kGK?q[ 4~jOf3q./1ډ^L=MT,_?m7={۵r3)ܸy]`ӈ>)^X뤶>{ѫGw>{^^j݆Upu/ fXYZR˕ӼNwJ*Ŷ;ʡ|5 {գWTPʳkUBZ.TRBʗ+\8v8owARcV *DǷRYn=1e jTNzRS9 `dv;/WK~~tz; `iƻq&ov}w`eeE8)RHs1Gv;"t8cX[[3__lYtNNɠÌ䅗rDsQQQmЈ /2)YVHͺ^̞;/6 ʆMx5l̾Y#Qóܽ@dd$ -_ / INuܕy ѱk76hc|+V^:tʲ?ҹ{O6cn:}:>Ăy|W _8yz [DD$%9^$k##ܹ @ٲe6sw䛉Xx!Ӈ5ir)"عg1ޑpt,J Q?^m ۿ{գ{m$0i2/xsPý:c$<ԮMV-qp(_MƍXqϏ3f&ֽOشv 5ks]cމ/hsիS?"E S} 'M&$$џ0y=SȊ91 8::J˗ݽ1bq\|yRJ.^H USjd0 @݌&,<cggGhhSD%UIgΰyښ)rˎNN6ALL,V&`_T4mܘVѥSGn޺KŊx{sn5i;w^jFZOLxyss`0|B .lr_vK2Yӣ6~~~,q%>taײ""y"N'%\l2e0 =߄ט7\˃Ϟ;ώ] ]t0졡O˥3Fjvͮݻ$;.=wJs}Se&^ppp:}_F]dIƍKuwqDDDRD1i)P^n/sܹ{&Sx1<=39~fSDD\JՀ`HKLL =MXh0]6is+"#¹poO*4й+ھƫ_TDD)daaB!~s믅8+W8}̗ӮɓǎBEp(VGDDD$---)\0/TtSXXX`mmM޼y)XF`DDD(Fb *… SP!'&XZZj$FDDDrdNL%E᱙($r:IDDD$%z],͔"FDDD̒1K*bDDD,"FDDD̒1K*bDDD,"FDDD̒1K*bDDD,"FDDDR1׮]͛e\8t9vv*OXGeELwÓ/\0>/"00{Iמ h'mڽ(2VJ3īQڴ{akibj=wV,5yreH@| 'H"^cggKE\+`kkmfe-P:w@U c-V:dr}w ̒6mȨ(̞ER)֭۷­;w?'N͝k%\e&"O6ɀOOSj_geiŋ}vz 8u 7kѣ`00s;ǎc ^IF88$/:3% (3n:cVVVx= ~knJr;'^vk"d˖"fI;-^ۦz 7o^ܲ)ٲP6/_a)ԩAMzl߹+++:]b{wQQx׭ˠG""">{@}ƍ7 2Edd$K-'=b,T,,,xw/vǩӧٶc/4oν{7qƚR%ڳG /QdI6_˛:ٳ,]0jUN-fϫqrt$((͞V̝9m;vpn T}?4th&vy~F*T(O wwfϛlG}:>>\xvm_‚'NҠwM=~3g_ܾ}'''Z܂^ݻai@Oingz˗Ż^=fLLevD7l`kSzu=޴}UGԶmSm֯ylүGyE~ٸ׮õ #yX'M& 2ݺt^]O+VWʽ{fwbbcA_6+^]lac0d(>^ܺu… g*)JQ`d˛5n.lwʖqʳrIkۼҊ%JХSG:uh@M8 ĝ "4, GKll,M7!,^EUGЭwo._6b*gTrq9tԑ.:VPZUa|nob ͚!/VVV޳+Фq#˜9{+9ݾNi1u;SۿL_ҒVi}ծdž"tͿKŊe:oɺ_6^:}d#kV%~7p7٩{ٳkv%<<ϳkjըY3^,S5aC,Y7o{'OV~&̚3ЦU+֮kׯNuټi1|ӭKg|n搯//>ߜ4iԐǏ{^֩ìiS0~aŏ 8{;;V,]B2|Q\*VHr1S zOٽw/۽jsP2%qz췴7uNf/8(^Y^ 4a#>co>/bcp1_`%X` j'0꧟Yз Ξ=@S"RvXҥߦW=,,,L_lY\+pQbbb=rMsq7:AVBbؾs'м7PP$L]{MTvu[.&zO8ի9s,w&YΙ咑)ۛVg/MپMp(Z4ݼ\DNY~:lg7ڱe%[i¥ĩIke5m^ieK<-JpH11^,S/W N>í[-߻o?\+ƄּiSB8rOÃ^sIiڨ!aaq&X0W>,881_ʊ1#G`muq߷7nbؠA,_0S2s1e5JLތyF2KiyE-^kӚF | a舑ɮ:M&t86G9<*WǨX2T+d_f\zZߏk%|7}.c$H A,\(>{θ,"""X)ۛ>O/vzCjfձaj"" $Çs[;~s^ϗΝ?ςKx۩_\9ٓgcXuSUV^^޻.{ҴIc.Q@ޔ-S'NҥGOܫUԙ3|9z4%KPj"+V! (gЧw/zNvKPJ_pŒ>+KK|r:}NRضcGv\]9/|A}z*PByvCUȟ??U… A*V@rµ ǎn=(]lJBV7 k֭Ғ0L@iS?CUj8ǝZ|9AAA?ngqϏNt`?p08i[zֺۛEjjҋ^gHOfsydEpfϛcǰf@X[lŏޝ۝x͍˗43jqtԑ`͜ vwuh޴ W\eDEEqAǚ3{J;K݌H1 9I6{ >}D%>683[\qmno3tOE[ $9 j֭?qڵj9W!+ܽȿ.BfXYYqo&"""ԌĜ=.{͚1qlk+$4 .\(Q˫EDD$m<5E y+V0ޯBDDD?1vuP)_DDD̏#DDD,"FDDD̒1K*bDDD,"FDDD̒1K*bDDD,"FDDD̒1K*bDDD,d x&Q&cckc1J:"3sE̵~V։߿\G27A19z:.[+++bccMzXYY޾c.GHMIuTO?͙wO=^t8[~;wf$P/nj*~XwҨAN㉠yH̟۷mԪY[>Zi0Χw|WQX.X/7x5{Rd }6(&hI&M nrO,[׭gͺ,_w{tWiСsW:6r)&5/2)Ƽ lu EdꌙǟDFEҴqc닽1f&ٺ}^@2e:h 5ⷿwiMҍ`يSͫ@L6vq-J/Nhtup(fQQQiNeY@WưضcG)yH˵[{?_OLL k֭OR4_?wč-[i3g}N8biiA>}Y&?p+'N"2*{v9z GǢTP֯б޿^=F &rY8w5ܫ!>F£Nڴn"|DnܸɊ%Xx:cfmݻo?MkPs 2Ŕx@yĈCظ'u1_^l i˯9+-H9ڗ)""/ uLZ5O{oM㠯^ԼY:&6p2cƍu˖*X._gÇRŅ2Ό|4g=x׫KTt4OCtԑ{iڨQFM-Z ;;$1m3~ul`Ƞ)Rŋ^l۱#z-[ijϸP~}ݻƼ35 KxzxDVpX'Onz9;223r0}ƍŊr/3""}rtW^ҊԩU?)qёWZL[˛UpE7l@}zݿjU!3gwe˔aSK)1 k6^^899Qƹ4,qIb(^}rLj#%!%KH֖.:2et:Dtt4NK+/GǢrOi˯;wޤuӓ^4a섯 8$;w}^""3r%:*J pE ˢ"t?gou 44S$yM&r*u+:ԯ۷3 l:ŋիm?im{ݣ;;vdWnܔO?dLV^˕?`ټҶv^]O)-33*+O=xUk,[νs/MSDD_Jc6?1AW/De1((H#-yXXX€GHÀ[ҹ.| a6)DIٜ-b,--)]%J5#ZZZ>K+++&"""Hr,d1K*bDDD,"FDDD̒1K*bDDD,"FDDD̒1K*bDDD,"FDDD̒1K*bDDD,"FDDD̒1K*bDDD,"FDDD̒1K*bDDD,"FDDD̒1K*bDDD,"FDDD̒1K*bDDD,"FDDD̒1K*bDDD,"FDDD̒1K*bDDD,"FDDD̒1K*bDDD,"FDDD̒1K*bDDD,"FDDD̒1K*bDDD,"FDDD̒1K*bDDD,"FDDD̒1K*bDDD,"FDDD̒1K*bDDD,"FDDD̒yE 6a`J `߄+[GgW"""T"&Gb&x"iʺ""""*a%FcN-;0 CLBq#"""ꏄGhLBm ĤTDI"""=jGFb0X"FDDDGބ#IيE 늈<#q1_NJ(h,od&CDDD$zĒ6I0_` K tIENDB`parlatype-3.0/help/pl/figures/parlatype-prefs-timestamps.png000066400000000000000000001053701414030451500243770ustar00rootroot00000000000000PNG  IHDR1K{sBIT|dtEXtSoftwaregnome-screenshot> IDATxw\W{\ܣaVmj]%{$HAD 1>wyB!B!B!B!8(^I)N+B6?ou ?Y3gκBP(#`!BGtZUE˷7r@:P 4ȴ|N ܴqKv5U֢4ӵ !BDPRY`emՕEYt!բT(|-` Xjx]%M0m(33}z(f!ByA!ӁzQhiE*t=B!DK~诐n1j (!B3Mөw#L^*NbE;B!8yH$D(mh!w4ݏ}KypkB!KTKZ_h3@B!DokNGB')x(Z<ھ:I !Q$B!DoS􀓆HwB!R-1#DVXXRյCB^#wfϐ|(BA?7Wrpw/5c_riٝjjk끅(J>~ ԽY;SDe%?ܓ4Omm-Z PTcIb-F}###ȱT6mNV[.φM|+}} G?V[2p,T*,-UU'];۷xrѪpvrran<=ѧm;9mJw0+nR*Ytqoq9IEW^ϠPnIJ^x5$/?$a~t-ZmԉIM '8ࢫY`dݦ- fcSQQGa7622b7_{%}uRr/d9ػ?N̻x6bc:\z>;)/ ϗ믺@@2{Oٻ VjKOW-_y3YwƗ~ρɔ \v(JC3M{Y08<>_ͱ "Y99LCUU5n'g TUW'ZEXp{k fPX(VN|B"@jZjiw?K!o+C>^~DBC6i"{'13itA]suqϡR*5|oOJFTȐ0<[M4)ƖXt1J?m>1$1'ϡ#'&9tO=B_WkbBXapx(KxB|ǚ~lܓW ssB&J\\x(J>[ 3M#3+\lVƴU\Mu;QY٪lcL47l'1g3~>[?^DVq 9o4Chotn b9w? xyzK/V*|%ҟ$2}WJ%Wλ_CukUbeu%j+zt&ӕe999`@TCGp[ Fiz[`e6;vzCr綻R3tOoc!)>uM*`R32(/]Yj>Je7i;,TaAdfeSY]mSrܧnKnm~x9Sb ϗǨfOb"FݟBӨiҒX8JL#֨8ӃQ#vL"19 ߏ[jno{guC#R asϠkԷξEx1=+vOYxq~&++Kuǃ2`aaG=B\F*O,e{橇}qTJ%O> 1c),*bRGDE8ۣR*y|DB\s=b8xv\(Λ1 M jpvWͿ9N}}=p]j* _Er]2Q#u(.)5L?& Vy:P6UkGѠh5oi}=$uu\u˝sc/tj^Vko&7|#̿Q# vI2}DFg=-(lȥ@ Pj8[c<Q(  nc{.zHzք/Q^BjV1VVj. qXҙ3SEرkVVj"~wg +Ӄ{n?MB9;;QYY?7%eϑI7OGMM cFBmay 瓟 昘dLB!zOpxHJ/BN.B!Y$F!fI.B!YBad`B!̒B!Y$F!fI!B%IbBaھZ'{BѷIKB!̒$1B!0Kmv'dtB!f:B!NB!Y$F!fI!Bv~RaO`mmEʱTjkk:xGSӺ<#3*CC9-s(?q >GWBmfz#Btڞ}aggۡtF$bDEC.jGU5@|Lt:<<ΚB Ib0S Fatz;!$F3W!t=z;!$F36ۻCv*CB Ib0cFMoFFFvB3Objjj0/KlNڵ'Cg@_:n٣e.KK řaXet:~ZLwF7mET0k3ҌFzf6Z߁~g=n..#uV%-#\jQ)OO@]鰰8nCIgڰ-[wImM-^^LE?]',--q#4(~٧7g#NGJjE gGG>c?6!#=)RIiy99y1uBL|੔JQ((͵2sH>|GG\SuEd''j))+ǷbwCqi)Nʪ~}mҝ˖kk|}4edQvN=}:nHHϸ(V}e4Z- =fړУL9 `d28'IL7k&1dT0CxQM%@S'Ğ^kﷰP;`O @_TJ%98LS1l>kh a ic0j{OkB‚YS'-ITc N@2[6UۼGrrqrt`pX(NlغL7Wg'4 ߄Neڤ X[ihh6Ȉ:r}V%7RA@̙d;Gvlmm T)l׬S[9/(--Յ'pM[_֎xEed3OڿֱE  Mhlqý_힟槵HeU5EXY kq9ݲ۫5ss:nAђ_XBE/n8|0tp8\]nήC}L3Hf(\\NuVXZ*C:SPXLiy9x{yQaÖTUW3.jnFcG۵7j-2HG{{\ '8_( \tl߹yx뇫 sIwrjjkkhU'o̔'GKEӝR8Kxp`g-#=+t7eppt@miAUu5oCzX_ L۶pؙȱtj\](.)ek. eqSWiy9 4j4PT\NBi>HȤWg'9x8uL2֝CCC#BZ%0- s>EcaaAXh0*D `\hjko8o fØѣpsqҒqcHHoXV}8;twR*CZ_GfRQU+UM矢n)zjqMIy9Nra6m JHDݶ]/(*6ē_X*t8;;V[2~bEe)L<~h^k9QYIzz& U_Jdq]YiaA8ۓWPH }}2M/,B2R{;[& 5#IH:%{/,갼'*()+řM57םw7EŜ$װ>-[T*g [U*cFÔIjF&.ND dfPS[KpaLm<_RVFAanD0|CMM$o )G).-%JJR|<=R:!B)MMuL`4֝t_H`adZ-ƌ&j2B`|X9\t:YĎշص3&%u @?i\)S8 ޾[n)l>nV|зj]IV%A[|IʦGC$ >lJcit^o)۵F I/wo/j6t%5BII)Eq3Nq+KK"6\EΖ !!q?S&avi}CE%U:cIMHjcByRWQ/*B;zd:*OP0nHQQYɉJ'< N#+'g'V CP(9AuMߺEl8QYEEeN6UHO*NTmո)d <=ܙ8nlSP4Իŷ)c+^Ŕ9pes  +;#R$<4IDï??x1c8 4mBhp CVTxyv~w"0n ZG d4޺: GSӨ7Z@?HښB= {n)=FtXYZe'SLGp?V+t:0eBL?@UM IMO1u,3Rx$fc>r <];g^xS's}9)0?y'3Æv8g=KQy P[bm8NG~~C qt淓z5#6 /}GMM#''G(;qm^.ęfJwRooh`[.j|z;IhZRZN.i$kkkʦiVIm0"2i}uu/(1}ŒutsuB#0;!L%If,IwTaƼ<ή$! Ib0cVVvݦBa\b-Sդe0(s |}زmcY( Ck0cT<Ȩ#xP(z=z]bǍ#v8j1t#Aޏ^J^O>eW|<Ιob{\wz iiqż&xt͛9t0.~-[Q[[56֬S|mⓙKe6IbB&ݒĸ8oxmA̹4Z ))AP0styRSH H 6fa)ܼu?!!tgia)):DeU^^A*غm;3O6h+cuZ899J`o!aJJJ 1 !B[VC?wfΘ3o/QjךQ@-,y9T*K| WCR9®lٶWWFnryE+.o5[s/yt ˯TLB!ٮ[Fsхo'QXXhV꽁~!ٲu!af4MӫZp vZϘouYa{&0mʔNm/`&OXH2vكVeڔL0O.BqvK^&%o\2Aa*8`b)66 ڛna7[W_y9q0)koެ߸Ѱ;w?T*ao0""w:n߁>oj9gZ纒3>&-۶qͷ2m32ptp`-sk/;^B!ٮۮutt`p]cPxGID0/z^Xﹲ8w9s.&? Rɛ1ѤK ~O/࣏࣏۵˱Ϝ> V3FԼY9j**+y9v,UeN:+ͥaC3&*k+'Bmf{<^a&}`ϹB! ť@ Pj;0uҤ D!&'1u~֌!D$fTUU3v,VB!ِ11B!sdLB!Z!,I#B$IB!̒$1B!0K!,u@vDu8]hJo!B$9i1dF!BINCѐ~09՚45} ERI"#BuktdKc'bemmҼu>c)"#Bu^VK~n6#LN` IAn6ZB!Y[斘Zm:= uurMLccc۰I3f;~)eͼBYegfesR~DnvM[L~]]u+⏿r әT__OdtKlU?KbB%ޮ[i1Xxæ͜3m'Np /O S0oh`&үm /_O?O>&=#W| ﻗ\W\Ξ۸햛Owwwxa~[n:\ ޷m!~{F΃?BCCCc:+;Xb9_~1 ̬,Zņxe|G( n.4 +_Mll'uUz7?Gf puui3ήgG~{7?|Ær]wSQQa:G[4_}<~4V4 >(a!48;[w;:F:Zf99<ЂmJ\|7{B$1##P$$`G.bƎ ΖmHܿ'''Cb;n, ۷r$%1eD ihldX bKJJ`]\Ք>ȷɓی ~^...xyzrm~Nm믹1QQs@Aw.puu޻GqIId+1ձ櫯Y#ݟo5/WG bK^LyY9lҏB#|Qyfb}Uxm)-:痯ŋoݎS92d z;ng|6B711-YXX3v ;wbltwЃʼngqojPL873bx$l%:j45j\v'璋0&* +++njcێ :;w IJNf{\mG>x322t\sM5m$$,CkT[lll.ĔFePXᵖwFjx֖C@oVRRʊW ;5 R223/uu[^{쇟!)9+0Lة1nt[2_>Kk++bBwmC]NI;- {Ĵolش71stTJ%:j<}L2m;vP[[KAa!ALe8KJ(..&b6cG'O?O?oe&oj&KXS[v&FZm쩯CѢ=)YDmeECCC7{~ ""1s uR:UT껜:JZG1Q5_^3'tw'h}XB7Mw@u~]#G=ztbƎǎ;>'>zH<{7QPP[xa͌җ9!6]{ؼu+&L@l{ Ɔ 7wN'C3{= wʮt{9w@t:{ĩhH>t lڼ[C ;&%h| ?9r[Sc[u[4}6W #ֹ3>BђY%1 5_1E0ix~WFj)迡N4_zȈ}_?LAA!'$`cco=j$oz}뎻;}3evcU\լ| vIIAxyz=n'Eņ+19N_?7*++o)--巵r=еr9p %%><< 3lϿ?_~2r!M_bT*qvvFTbFccѱ.  lmmqttfk׾}t325b^}MnˬgdLUU666XˆBno=]qrr2~1ͭ/J[b2I:t/-2 ***yy'ಹ2z;,6H>tn%O>abocDauLL~h0MKww% !¼ nה$!B8c?;В$)B!ngfwB!g$1B!0K!,I#B$IB!̒$1B!0K!,I#B$IB!̒$1B!0K!,I#B$IB!̒$1B!0K!,I#B$IB!̒$1B!0K!,I#B$IL7:qEPQQe+^pJJG%B-ۈcx8n?L.G5]r"píu9_Cd.іe+VӯySX?[)BWYtwS'Oʊ̬l۵^]Ry6dx7kfi:w? ;\K !gnObΟO^9}.`GN|-W^6g ڟi ~ ggg E/D'B}=i)4$=7$1uuumoHII)ᡡ :2kWW2hP8o݈OH`7o.vSTT;?nSVVs/.g]XZZPFeq\q<ٰi*kƤxw>sqtp 00WW,GVSWWfM2(<ﻗ3BhZ/|O>WWFA|B7~;Y٧dees1n )[n#00S&SSS[W~gx]g;Ї!Sߓ@С򫯑7hIɇxTTVpe~ÆCHpqM0ۛ׭ɉl};??V^}M=o{;;,--I9r?>>|TTTsw|2`Rx3Yqc,=,ZI&`kkˏ?RdA;p [n%r0&'ņЅBgãw6@BIh H7AE@:Hҫ"RwP zHHfm#dMHHd|x1;339Όx<cܺu5f2zv o+ Wr qkn |}|ץcJr5, ЁpuqaM-]ڼbvR\YO\/_iS啮I+^ ǟX~>>92a<%KʒiҨ!׮]g붯X,DEG=B!^p)=yU43D!N0C@2#B$IB!$1B!pJ!)I#B$IB!$1B!pJO-B<.M2;Ix!I2I^ӐsHR#$Fd i"s:TU-GQd/_Ar$I#2]Bs%E?0KE"?qlV+Qv">ѹ(X L"S%$0QwThlS\f'':},WOlDFg$ItqujȜthVNG"ܹy9%‰-"Si xyyI#:MFlUUgN'&=1"KPU\P3Pm2q\g'I4R-g%=VpB!ĈCzbBd$1"ːF!DFH#IcB,]A-;`p]:ua7SvOlbP0W\FNqϗ~&2ZZ ڗVm3t9zz}0%_pgd2;.{v=&36ڵr).BОWTaTk}>J.ӳ#R4Mc3u|rHøuEQT\93g̅]}1v<UO:)VCkk΂xzx0o1:EAWކٴ'x184qqq9(W K1d(6nD\1u#Fj0"g˛^G+zJ+JJP&0aР^-fۿlLjR'se# Bysb׭Keؾ;,[oI{TTÇ?dcbbҝך6WnfN ܾ}|yҳ[͛nf`b ԮU3I:uQ7x… 1z0*WX8EϥKCƍد/Czz}H*/χ#?>f|ڦڃ6TՂ([4~>=ol"gN_>45ϗdo{0[-ԫ]zCG`U\|];2uX*W@虳 >v|@W6{ҿR`AG-[cA&'M^3vp[r fǀB2\rrqr/.?"meK&5kۆN;ط0~ʕ3!gsɼřXr9&񓧰xJM|8a`eJ޼y;rD硃LxeR( c6d蠁X,f,fseK+Ԏ#7eJѳ[W,@P})‘3b8edUe6jcSUw0-sM,^B3y؝[}/п_TMבPOhv#Æ -~.WpqQ@>JRxԮm*/Glޤ ŋ#944L8TMŦ 1MiI/X:4,Xhd$t%.W)V0ٍH^FWlg(O^>Xm6Nq/:гg]#8eʜ^ݻѳ{B8gs;<3rjX}{6//^.WK.Ѡ^]vg7pwsՅ\9sJuc8~$qUv R&0VZÃXc֭SUi{ԭSVoIpPЃg2Q:ԣ{J nSP$"#`RF[hv:ѥ{/jF-RWT]jVEרZ#c s~C&,, ɒtCǐfR%H]=[7&?mϪf^hTbE 봘zB:8p0ʕ#RO_=a1i߶ .JWntɜLzbNRD f6/+WWWퟃ^!7m{E <==ccci%nnVL8%Kڷ[,TUE}sb+ KgޜOpssc ??> S3˙(QXus.Bԯ]ii]۶cVvm?|l,Ξ'N‡&XhgAߍV:~VU2a<-p ̙jE0׮_;x1b ,VKzΟOOO~b 1bCQ ʕ dXd1?dup߯ʗ#{v/~<mZ3T&GŒ Yy {7νGIXW@Nu*WUT"n?fji~fھCn!B׎_OXmVF#X.+Va =~uiF3LA虳܍`ƬoIPFuIr5t>]*ϓ'7111l%_Ζ-fpi"""YEK+֨h[n߾C\\G_rE:uqUb vكh`O<)<ˬ6+q8bc\/7maڌ92~QX#s-_yC4pѻб|lGb9DGgu6qa<==ɑPo~e+w_?I5?8݈Hq*KZǑiTT^ݻ1}ln+T`-ܺu[nIcH{೗osDFDz݆$+_6-B x{m1 ԁN0' xa9tNGQn}EH”)ڕ+(\(]cF1`Pl65Wgܹ)#+N2d֮XN2~T>2A?`%[ըQ=8IG g's`\]\yEs =OjR˯̝C"E0uL3gө[wVJXܸy7W@Ư,ǎIӖo(  XX\X?ܺ} قS&z9.ݝO,[ɝKҥ0bسo?/_AlB Ӧ^4 d@,_+VJʔ)MhZr uA|8lH2իҕ7XR;lV oӡ<ş͡^L1{'7-5%QϚ2l`.XqpջмLr cL3MK}Ϸ]5MAfiiXVN;D*掛{3Olͦ$\]p n1ՊW6VKnn( ?aQww}-Ǫb2a?qusCU5fϝ˕+aL;wV^cZ3ˀ<ՊŒ˴bI8o~ `|p'z ?CLtes`4lt:=$>\]\1 ;wxs7vnۂ{ps\%t:][ȅOӵ@Ők#'/YG;b&SB,fs?Cu[cc]WB=O?·_nf'j2iI+5$aa2Iܲ=(+U]IBIbD^®_חxzz&Co6o$!Hb-ċkP⿗3;Lvg_f yIO2ܹ9}g!q/B ߉$!c$Fd!LUmc#yQQ2; !$!B8%Y$oNiQUEO{G!D&I4:MtxeF\l ^3;,3lyFIYBnDFgeBdD?f"xBĈLP>x|I"#OQl6+Q=Iv__s(d8Id:N^'@/U\y?x]yI#2UEDQz=9s3w }Qž;pnĈLp("!IH^$¹I#)˅Ed :!x>9$l|{,Oȝ+ŋuD/]dɺ.ǥgϟ+4[ǡ-y[Wm:-6nʸ#alB|qpƿWlf֧syyKSg|hooש 7nSԬ׀]B8 ba֜Oiު5jץe6}uŽӳԬ׀Yn֧svmD5Y 1-b9-ZC톍0d7nLl6>[ZIFM8u}%,kP1(HzϺ}8@N]SofmQ].|rPn}mߑ`8)ɱ^ 5:IƁCw|O7C?ӧ?[Ӵ[7gջ?q94,Mx{Y7ڳ/':th׆Bzb:-Z;ٸK5m@͚ݿ*/"pzquuo0m\7-A`R31bٸf&'E:ľÑ)/?+׬g5ٳgϏqGQhQ<Ȅ)S)r9.l/ 2aQP6h !E9x0sf~;?K~ffz}m=l:sg"{6oXʾ{mi^[^7?rLv/޽wj<>2+TTYQ'F BXv-GuFӡ(:Egp1ƌNyYb&Oeո&:6Ƹ),UݺClӓbdFޜ9s՞IqRk7nbҩ#!:<Y&=s۾#B۷GEGͷ;5|(9s$_޼ك_-I=ۆJ*ǰșӗ]?@  ϏZDut}{)U%<<<].1 ?f4/(AMDԽ(ݗj[ظy nj&dI ψDZb/0tuܹjNZȑJ\ٲUWj7{2ɕ+'nDW^VXVN {QQ Ap4K~́]F|y{5Kۓ3/?;=q '.W)V0ٍH^f߮is,h42vf&sbSU &44TM@\ ~u؁Wn5 !&_m6_˯0dFVos4MC{Պ1.u*B `޽{O^=^JC=ݓՓr]Izyyrr\t~qNa׮aSUץPHfϙ˘Q#ɑ#ź:wŊ#jUZuԦ[oXu'qss~:TTZ+dϞ=Cu:b2/w$ul6TkrsdAI+z<<<0M}v|ϳ}&Pur={32;T{^Z)ƳjR~moyY:wQ׭$7W=nnܺu'A!&~gΞXhhxzs/:*pCJ_?j{^?N[سomV5Y[na3Mk=г[];=?!sHc43a"?./7ndXa#ol;0Vӡ,Z{0hܰy&&&[$22~ iƖrÄ߽h${xS YFD0cl0üe:}H|DCl,>?C|R+s~wxzzR:JzuɧTP!PҴI ]g Kܹs;Ѳٷ "b: ԫS 4X6o֭ܺuLSJ1>]4*W@ݘ>s6aa7@(w#"3ƁqJ(w8b1 ԁN0LOV991Ea5aZ)Z(cG䵦 >Yܸyϝp*/ŋquuh"  ,aETFiƖrmۼǎ4mҘI2f>lfQzuΝd +ohNw1}{n޺Ŝyt|{Of~L5Օڹ>?+s/cH"#RH\WصkX,c>t>ƍ`Nd7qsMϰIƮ,w+U* ՂXl9wR\9ΟA}z1uL:v_ܴl NlV oӡ<ş͡[-9~:Р~]F Spssd>ٔ[BWJ1e sN]hӺo23!O>kxwtM4 MӰZ:v)Q(^h@16ٶnӮsV~A|y3`oقZ@)l6L&# :OzTMj!&//ۣ-рfK `5^cZ32i |sd`^:f8υr`\\\tInBd>N0C@v5,-_}ů?~u7AT]I 2!aM$(/ ѫ[XM%9W5-Y}Dډ5$/s?h0ؿˁGXRB' I ,ul6wD'Es]Um|л] MP\=~=AB!2ޝ$Uh[ 1*&dĕa=K IZ52;dr^!Rsbċ91Jyjmyy{c1"҅32'F,L'zbc?BdNB!S%(-W4(x|I"#2J!bY|IEQF'&I"t:z=镍a r[ߤ-Dj..dCRe͕^/ NN."əѴۭ+ēHyٳg`*YL6FforZn޺ń)SiTU7jPU5vbcciު5UCԨ[F5Ko_NG톍Q>w>kнO_L&~FVY!!={˧'囷jbyM8zxL&ޡVFtӗα`T Nlf{ߎӦ]׭O7Zлfs>B!&'11nd"#ѽkWTlpq*2E1yzSx16hdђlۚ1k6Wҹ5WpבG8)߿OcIđ?*4`ȈQ^\9sQre?NH^\ KW,)Sͱ&oѬZԪɝ;Rb:whOye \]]P4_虳81y6ԯ[<~}'B7pQ*WdWi{mIRǏ?oA ׻Wq5iԐy ctNx8G嵦M8x ϓ'ٻ?իUct,X9KXκ>dpV~Uܻ @ܹt*Uh_}T\e(V8 !])Q8@˗4%yϗϾoZm2tB͡=1O'M^Oq?WW./+@TT?xMy}m 2=~ΤqcNbE K%8l6?N (S:#.<|˕#?Οvt:^m/Kj®a3P`ܹuN$|NJ,IHjAϟ{~oҶC'vٓf/^B!6%1&cb6[p LW ɿNw@nݾÇÇadN=[ږ4jD'8)]\_| "qI$ xzwbI3Nyd1C|Y-11Lz)ߡ˝+;ӧq% toFΟB9,dgs"ڔ^:8vԭS+ıcpsseM Sh"у,d)lݰ.͇/VŊ}޼\,>><|ŊQHjժIɗJpI:t`/iƒVylpuu X:S _ܽ˗3L4W(hdTP!w1OB:uߢ( e˖%<ތ?!isHỎw~vSQI'ָakVoIre  z]:vt` Wh`WQDFzxզܸqnZ[_4cI CŅ7q {],Y8&runBTtN UUY~WbU:r$wS0vo'S&'dtozϟBRXiG"BNk !F {B!^ !)I#B$IB!$1B!pJ!)I#BX'дB̒bS!aILB"ɋ"+JݔHR#sHi}/;7cAUS~BdEѓ|DFgILBs%E?0KEF"lV+Qv">ѹ(X 2&*.ё*WMS1M`sTBt:XO;>9s=$!=1wn^'_@V̉BdMjEӑ/wn^#oNI`pbOtiJ$0B,O4<k@UU%sU/!t6@gI÷T_3Bg/V{Bw!r{UB!D:8t!qܜ-˂KXasz6>֮gаQI='?݄gd2'Y׽nW`KXcEY"pz:S(^V((IR=D\ʘp0^ n` 'QL :ԭSbE$ٖcB!eᤇ˦TFTT?GҴqCV Wlaۿlt/iB49aVVۀlBUˀ!л%ɝ^b0z$TD׎mo?z,&R,^~'oǫM0o 毶ѵC{tl߱h`05`קk|0h(5kTo?1!q2Uӝڵ#Kg[=yص;# reM f'M@|ʧ 2x` Lw4bE S|dU(z N;˯<JTt4aaaM~gϟgMiǛcB<Lm%2wkXL"ʔM[bMšXq3111 1 V.YD\|^-&OeyjFѠnmՊ" 3jtW-n&zucB<{#=0B2e8mڹ_]:ďew aCxlYbcc'X-օ3j$͝{pߧ>جVTՆKjM{^?Nπa)S::j$kqAfھ?۵cdCBK%}(V&`4>JFܹa ǟ$/?8݈Hq4Mr ލ3gv#Y;>YdLHtdzNρo~"?qVz4 d@,_!=w ի%٧[-G!|pQlV oKJ7y2&S#5= ,8j10PRXiZ̚iVSQB/U\y(I( zəCc4yx" HMʕEt:/]Ƣ%KxIt"BgIL[ۿV~{Q:0о'I}*Y.(\Jש &EEG1eGL7^78# RbPρCټu+gΝ#""2|T/^Vt:|}}'!B<;BS-hF^=ٸfݻvILLL S^gʄq[ڤ16#eʕ**ٷgNB2c$m} ;|8|8VL`+a,%i"BgIȡC:qw#Tt\nݾM.4i84H2|( ǎ͕u7qIʫǎ*ԧnM4Oh;6UЭi"Bgݝ^f7Q \uԦpJcJFɇo)B=lBO Ζ WWW_k(?v߿?&Z )P:vFߒ쓞XBldz7cPU57|*\š#GڸKժURK jXs,Ņ([4yʷ|}Jj{2z~ ZIDATOB6/$'!B<}ֹjf~摤b= :lıc$!9ZF bH߯hX^;>Y)!E~ݍ$!BNwի&!p91B!x<7sbB!&IB!$1B!pJ!)I#B$IB!$1B!pJ!)I#B$擹|jvשϋ.bPp{X˾Hqvp4cLmߴB!D, ܉ᅲdo{TbƇ#'v}&O?jW!Y3Nrss;h٢#_k'Y9{QQʥvFB!D@ZW`2šC;ww..l۴??$_ob-RƬ0v$G޽݈:CR5}7~!B<yC:whOdgҹ?d\n+U!"2=HB9'fͺ,[ шNcu@AŅ'̦/-qqX>>)\n9"ǎ_!!ILؾ]\_e-7̣yR_!/S~իS@dۦ}d?ofi8t۷pߌ3lll1c6S+}B\^1y߸y7gƘfrdzfs rIᇸp^wQT SBۥbQ@ыM4p(P"@C%)Tj)hB|R1%Qn)e?ݱ.ݭL~y9sf/gl+fJiei+Q]`/itJwb111111111111b^ܨת߈l^@~}z}P']/%ag-|fϫT]ȱW6oزq˧>ަ-ƭnџ;y<>|X^ommǵ`"OW,ס/ңO[|$1Rsom9]^ƕmi7i}_ҫ__'pnޔT]{htitFhiYF$)''GNR>W?*7''n^OyyK HTo^ W(Zx8,)Ѫ׶ܻlrsssJ>ڷ_L+ԹTS]'7dXs[\+c^WldGQQQbϝsō+%uyxJ]zIS\T(GvvdQQbS:j$Xsn]y]Zc^O;Tu6 Ǝ}Kkd:}z֯sbylÑP($ǣAA:VVV<e0ԞwC+Wئ$ݹRܵPjjI_~Y/ծ7ki#)g'YYYr::9az r,Da5I{Ei竨PeW^6Tq PZI_s}r8ڹVE){NqѵK[a:]4\GjQrhJ&SDe$fޜP3gw^ pF56ԟ\3Qmx~/+sP5ӏMMê>-k~5ݖy4}uR P\(D=yٞ5B?9Ks~kiA IDATxuxWj<ٸ;RJ{+ Jіmߺ{PJ *BgM \{eٙs晙Ϝ93 B!B!B!B!B(0r !Bt餿[zݢPv@'}0wΜ;8xjB쎀Bq2+~qu7 T@'2M%1Ac6UTWc0c2 !BtB@RcckcbNKKi06y4KdZKb0`m[ߩ!tfVk[3r{CsӘ̴ĜγBB!JU/+'0uM[zdZdF!B/[ju4t´HKI 襘B!P䄄GjGmã2*L޽B!DSjҍg{/-%1 F!L&HMA}eB!z9ỉr( B!Fl14M`*sMB! sI $!B ꤿ @~I!ɣ嫓dPB!E Z:Ir!B5I8iȋNB!Uj'F:b Qu(Bgμ^V!0JFg=Zy޺_#|й8wqB>'FXookjx8ʦۙ3szܷ q+~jR)xji_I.xlNz{$8w_|1I5ֆS&q<%,0y g`)//Ͼdob6민 gggZO+އXR<[-][hd2YձsO<*gP[[_ˎ=̵_FXH0^{Oze5ոK.8̬&&sq:qBS[[g_ˎ8JK ꅗ?&Faִ|z 7\}fl;o/V&iAKJpsue\|9(JKsfN{嬹g0h@$~x{zp5W2x@49rVOkyhѝĎ٩TPPfmf]Ow-Ã_Y]>JJZ:.}އOZ0 F TNY./]ChpÆ f=[1d`K@tT$~#˞=7O_9JTD:ZƲ_ZNJ={ !*2Xj5N̛=RGTx8yP* EP&˯+:rZִ=u4ƖYS3kd /(伳ƒ}I$fϾ}\ost5+?KJZ^ )٧d$Vd2ϿRdAi6Z-/> _/vxJ*sgGg>jjj9u {%9nL.K1\ugP)|ŗ|$8B$.>Y胖#ٛСaSKQ*xޒĜ>%.!!yP(||z ?qQ FP7k-z>x\n]t?q{%S(J>YsgNk!-=lm[Vi=tu+^=3N I,cb&峯V71KGzf̛=.Z۟UUUnBFx4$2>޼hU }S Lr>Iky[^Q*\vYگ#>>ed?XjWڸtfԡ2]Y jR 2z='RR=r8-o8?R#xnuO53r{z8n _^CzF& 14%ljR{OM^߬JٰTjeztD8i+7$1M7>u[ߞڊѩگtJ>>^qX2UIH`1δ !SoG/E;h4Tvv쓘'FXQ#bprtۋ1F̜6l!2)RJR,+0jJǀViuZs<#hjoxj6>̲+ 榫˓;2*թR^;TV{ZkO]%r"5س7'EG؎6h%O=Gzfy ʣ˞GUmJanr|ڟAp` FnwLG`xΛ?I]r:!~>O(83P*k.9޸x.8lTJ%UƱ!F#ƎbTVV[=v枘)iFJ%uk=ףjwfXO;OW~q8|S'[>CWڝAtD8#c'a-yqcG=]ź;]j"&5<_ooMO'֛po6oWb,,*枇Žq(J=snqFp`%OɶprtdDZ'xp2|ر;ٶl^os_Wx)rV7䌿/=7vYt "Gh:fV3 X O0uN -c=h6nB aElm⎛o$8 &at.s#nn\pY\|y QUUEQh՚S9\Dcb11B!;8&FRz!BwrB!$1B!JrB!\$B${BadLB!$1B!J!*I#B%&+BMzbBa$B!UjtRfډގC!SZLb¢vB!"Ba$B!U$F!VI!BX%IbBa$B!U$F!VI!BX%IbBa$B!U:퓘 :VNGUUUTUWuBXy߈o'?CP(x3h@W]z ^^=Ly^IhH0<)ӫ{Q|t{ _=k[O}]=Θťez.f f{%2HM#=3JT %@&ju5^So0-( ΘJ:,-3̬l˩7``O/!}Zؼ}Ŗk4 ˳g>NW&#OW@^ :ggFEbogku82ǠѨ9_r^],vv ZTjϿ/ ":"o~_W''#+F 5T_og=3w~xu'R# ::2F#;+(DR ez}^@VSQQIaq ;4>W_7֤``ˎݔjqչWMNncG ݽ|z{S]]K6n3z;TJ%/=d՟?;]묪j2qvrbq( %NP0u⸾S& _o/F lIM&{C }r"-Ib5oɑcɔͨDc>v̘<_9g6̚:O /g9h߰?EGN)-72{4ωߗH]]=#cq5W^_+Hw.]p>S&+Ύ~ KFei\̶,c$?@qq nn̘2K*lhD%4] {;[fO@M]&CFcfR*IсcGc08x4Jiivv 47vmg׿߶eHT*15<A^~!ťdݬlۨdQxڮ}O Fnn~Z?o/g1kj"0汊z)P<>~lk>1Led/T*22F=,c5<^{K/8vƠ⊋f}'R8xF㏡P(oXSqMH$5=gۼ>M{Trr{Y/NV=C)..xjSpչ0f0#-=j"B-cbr (-+'$(ظu @?RɴI-E%%Ƅ,GS cI(EP]]Caq1~7|Px{ak `_'4(򺭭 3&O@PO#W_i`Ѷ1{D#qjH"^ s.Nbdl#pTUUدks3L8:80mkJz I8RuNo~>Va$sHqB6x nJ^^_d oree@=ɪfg䒖NGtTDiG6z=?,ϕJ%_r!a!לO?DHpi棦g{3***qi8bj6i8c33OYF{71RΥs]hXo;Biir_\2n,EeeCqI){0~̨V˕1%-Gouu-VcI`J{PG\_NNc4(,*ۛ GE8[z IIKZjŤT(,حa73WlmIdEUU瓞ᡖ^nّON^>.N G{{()-܂JEzf[o5jm(UJK}^$${n߬}Ӵn]x% :zj,uw~n׶lkcN^OJRԘ_IIIXkm7z3zp&vHBC-SYYkoJn4pGGfM96+ӹ`j.ʼGWp!9O/'<4[ooOn_@knğ[Y[i '<84ǎ]ÍGU7R‚Pk9vR svfؠ8ǦmlGZ]]`n%TTV6K'! JCoo{0{$rr'+'qL >,;J~ayyhZ]שAё8S[[Kn~)5ˎֶ]K,*eݴv[1Mݟ@mˎ =ťTWX\.''kZbR22rYfl؎lKګ[;gq4 27GhpѴWUUYΓ% 8ԫګ1ޱ{q0UUyS⁃Fǎf̨x4 ԔR?<F0΢iWBinul|耳scbgyߔ 0{?h O#G,sxi9ꪮWoh4`4ذM6  nW>aTP"ӍG &'7|viItD8`RyёڶkTW[gmS-u# mYRh$>i? @Jzy8;9YNMCT*I>JIvmnd{ (Jjk/ŘQ#5b8q{ѥ7̬l+-uqC϶Q*s֙,+:*DGb]^߆7RQQͦ;ۡVIIKe՚Yp]d=Mwjqrh2QpJ,єE'Ã0\u.xyz_B_Fi(g''JJشmdj6a:9:@n~:j5:gZ E89:`ph|": AjOW׫7 2oڂ#ZҲ2|&-#BDdke IDATp7W]۫=Z"-3 Bj>{{\Hd2YƚG:<=/($D*a¢V]FUu5lٙ| !8:[ӑvo~t<8:b M\!,W5rt':2ڽOGkowJ:`7|Z{{Zt?J;2hwG3oj  .FmէR*y>lg0fs$bp֜ f"ˆ22]Rq Qv%/lDbgkCr}.NN:r@TX^a1DP_W+P*n cFCeu Ex{y2ef#:) <~M| d2+՛Z S'202g`o&T?'((*R`gKVV6)h5jF ɄF//nj@D`>:m`ckKn~>N; 'Gn5mMwn4mY2ux"BC1_Id2Z9"4g'*8ԖnW&^J}*[o**'/q3b K4ى tm}%8,rPT6<*<ᢕ04'hdW\< ࠀ>J+;'ZBX+iO߬Zc;~i&6&03dRLKk#m$\]umqypEuXBKy-?'I!ߑ11B!ג$F!VI!BX%IbBa$B!U$F!VKsCoV?Ba'F!VŞv@(B{M&ܱW!}FP{B$IB!$1B!J!*I#B$IB!$1B!J!*I#B$IB!$1B!J!*I#B$IB!idg琛aKQ^^+^#Bu[s͍73&4ct3[mEb3&o]|{E{TWW[oIi)1cbƛ+v-_M[2u/z-!Sww'MΞt-aݽ%<< ZV8Zɯŏ2ofL&g;',BۓYD`@O-Yů$FTϺi zNBBۓDG9jjjxͷ(**f@TwkoJ=?{%%%< l߹ Feʎ2 {{{֯^|l۱ں:&}յu7Ͽ6RT\{םsCmk}~y-}8;9++^@նѝ B!ĿS%1'RRX{ƌey}yVb #487s7+3Ҳ24 Æ?ÆՕXmlS8YgIyy9?[GW_zشy QL8]n[[^Ǘe_DEE%ՖS^-S!=Ĝ}f?c,Θ5yVƍ˛B|K&/%<,xgԈ( |]x&jٓm޲Csт xXxl޲Ł lڼQ#FT=ۻ嶷Æ d2.ǧCB!D\b}Ƭ=Lt:O-]bnDx sf:6m?LTd$]su'mW'KnUZ&K6=eVƎ6nbs䊫ذqc)Bκ'o#0 lƪq%PUe0OY3T*-y boKZ+{2ggg;g> /4wwwNJd[Yvkmo}U6l{owB!o~}* / E4~/\lkHP6nPዾQkeO@BBRٗ7HС?x.%5=͘Z߸=,^'cooϚ@T2h@BBZ]B!G['R\\JWǙs ;;w1eD>t..̧_> ##vڅJW˸ر`ofٖX W_q9z=V;Ш|K xW=sY|;(-+m7WVǺ_ϿřeKFiuB!1LB!DB*MWrًB!$1B!J!*I#B$IB!$1B!J!*I#B$IB!$1B!J!*I#B$IB!$1B!J!*I#BF rɢ*llpv퇇/J џI#8dr~',*[{*))*$38'r<8b!Dk$BL&ɇŠa#йy`2,;8bPŅLKiqуQ(}eW*8-$OiIc&NDo&L&:7LJiqǏpI;@̘Xb2"v=LtT$7p=ee}{]= 󨩩sSQQO>G_+,jοuv}xX4 <Ѓev,{CԬZMG/;v/{}ԩ遺7AC.Nſ grNDRRR~!>a%%cZ6]t2231 LozW#?=4֣q|?CӌBZL})zuZpRѤ_qJ_ew#wcG/<#&/>Nn%_򕕕\~u̜>\@pP>pecZ6m\:F#F[wO83W֦PWWסVa {TOuu +)Jp_HqI1by Li'JxuRg̲':d3ML=j$G/OvvvlشoߖQRZʢ;ﰼT}wm;;[JJK1Oލ۫?h Ғ"٩ÒB=}6*":paFayرd>SҁyzBylgPZVw?@^^>cggVW\08u?pĤt:220L<<|*y/9ry:mFѧCvNgIڿb~}xŗ:L!z͓._^F׫#D0  1 i#bQRRG+.1Guj;%i?˟z_} }X%˻뱵^ ;'O* K.fOr,9g=]?^mq-uhm|,<$_|)^7lԝ;/ݽZù&002ilnĖVs]Cz1J 邒Bjk!^[MZnqrra&>s\]9̹.\<=sTۣKV/boozK_"DN$rP;wZvAPXDE(8BXT &ϫ~}:IO|\sՕ}돛SW_GO?Pb<^xVH#:-#3 Haa!z]¾(-.lw Liq!/(n%:9$:+^dO^nfϜ! !eeee~[<|p鰱 rs/0w/_۸1gtt$1BJMM TP/R_NM&]66;:a茣wll~ב$_$???jݩr9J{{{I^!NK666ad`B!$1B!J!*I#B$IB!$1B!J!*I#B$IB!$1B!J!*I#B$IB!$1B!JVĔx2˻\GvvyyUq !Y$1/^B̘Xf/~bfbɲ'yVbIJe^+شekb / /Ce*++L&k%ČoRB!)4ai;(//gIǮqʵ'#3_e9]֖0"#j*s۝w1qL̞K!J&Rdo> *LQ*|8aaܽJر?ߟu?|[cT)|G].Sk\B!D-=1: DUU`O^< vǶ:|aCqrr⢅3&DK}˞y1Mǟr+8 8;+"fL,IfҌY2;n S1sg.Ň|j3q !¬N>R\|<666xص2h4Z?c,|іmpwGK)חs1m<x F#7&N#i:ks9+.犅*[ʌӨ⍷U6oW_'aCPRRKϒ$u&.!Bu[3q9)kHbe!=Fvl9$dg0kt1LDGFr xxbc$fwI' ’lo1m)n޲Cs<#X, bTWWsxpWp-'1_3">}\<==X\WcK!f2&`Ѐgoyys֙s8n+kwDGFHtTIWTe6fϚIhH>lظ 71 :[oiSDdD8{b0g$g8}N )&?׫zM˱o۱STd>SZZlZJi <BomIB`|9bY7/KNsiVvY>r]ؼunn>Rɏ߮?7a&~_w{?}> b̙'$/1/'G'~=%&Ɲb΀K/i6ݽ/1}\fJK!֛Mn8Eߠj:tcFFVjf5=s&l̜>RhDTrY/(//gSǹtFGB!D78;;1TRb)e̚hD1jJ׏ug3˖,5ÜĎc^!0^F+?W\N^;@rq667p=ӧNc|;rPshj>_% ҋ.~YbB!(ZxMc2j{; 7r=qBя(@Ph 7,SOZ!d"e%?E B[Hb6mBEEƍ B!hK#BȪ!Bt$1B!J!*I#B$IB!$1B!J!*uXwdj9BhB!D>IbL&& }yYP]U =:7qtr$B!ĩz=1Lדr9Y2pHSKR<JDF!4&0vVk0d8*uyT}}R__ϠѨՒ!~& HʱCj43ZMʱCSrŗ0vfΝmwŁ,PS۹l :U`[{~ IDATUװz.'BIc`*f;iF IK M[#/p1<0o:eg_X-{WL!}ĘL&r FTv8Q*Cf `য়2<&w77BCz` Bџ餒=dӛSшd"%-ߗY{>[%#Mwߣ^/g_p΂o㣪7?3dID!4ݥ@BTV*OQ%jVD+ bCAʺ+]U"*DR =!!m@I)ž؁4q4?XaMLWrrex_99:16M}{9s?ojܨQ}MЌUn]mݾ]3g=fMNT+>Ң71ocϖ锗L۰i-Cf<ƍjc<>׹4mdM2YQk))M6]ӦLV=\w/гOϕnWscx}ryyyZ?J$I.S. b5zp}nF-Z%KEfsۭڹs5oy}XlnDE?cԺUKM2YIoժe ={t:g^2337uǪ_>GU~A:wFAA toՒ˴՗uuُ=^}jӖkRkGPc*;;S.hLnZ==o{kizh>kt͛ժe m޲U*00+VҞ{{n/^znF SΝ4?DGK',6T_M4!TڜŢP$'r^r2B*͚Gf_l\vYYY1jOАA5G԰aC+OݴafIԳ[2DU5/JV-\0_?|||44yڽ\9geCpUJX,X, +??=%??_GS+k֔ݧ={)-=]S'MTt6Z~ݎ+_O?/Ե]ʾ\ue͚zrcz%tFz??_WҴmZf>E7)))YQkr]ۧW7`J  UXHnOSXxCBKl=8}Ouu<1Q׮Ӓԯ9 WDFj;ɓVՕᄃT^NPvHH=枇ct].zԢy2/%ء=c:pDԪE -ZDu<1QXQ~V\d˝;`* ٻO'SR4g^"##ܗcq~7*(({D _|CaWf1CuԭcР7ieS^8X0Hsũn:PG^)?jU=;V%!rЁzGTk$f+-夾kT:XPB?rݻ孺 jufYdt8r8 ԸI Y,\r +=yyy~byuѧX\r\X/Zue{5vbv rvKuѷk/Uu7ݪɪS\gKYP K2=:χ׃MW趗..;iTu7ݪ91'Fdbs\ jm۾]ԱC[/y{bUxdM%8zW[?--MwOߤ7\6ZĤ*8$壳˪W5kTZZY[MpHN[;??_-[jcmڽ+oۭ]u>rV^;ݭ]ӶwHnۦ#G)sW0H/,pt:;p:&N+YTyǎ-[yūgg/=>gK.cPǮiĨڽgϯ{EcYֲպ}G*ZD(%%Us3puꢾnԪkJ=/#o\{Klbm})Ycθ͝7V-+)M6]꓏WyOu׺%mظI>=WK!բ;Ə(fQ?O='EZx~>tHXbW\&h;բYS9~N>4aCKm/Befܯ?xOGYpy[~*(YJ+ORr>ݰQ;] u}F _PΝQPPn@MrfJnn,]4PZ4GM[Y/)}rHuZqcsӐղysEDkڔ 4χVi?ɓnybjPnw\*uNWywؾV)~CL{-y42"Bީ?ڴju}ۋ}W۴!ԥs' O1ђ Gr9ոQ#wjjڤ\JSOڶsV^^.LRly ˥PHHCYV|}}}=99Լy3ݽ.++K#F]!NTxpyV#R?N#$eUl)ٻ o>pOM+?a]4^-~ee??__T۶imZk|p%%%+vm\.}k{ph}q_]?""XZW])???mؼYcc=Q={ᶘ_wODzg-ڼe_X={)-=]S'MtZf@*uNLPpBB+*:stpYsۜ.'VWPp#VUO͞L=,V-Zhђ%:㉉zoŊ k:+W*))Y999rN)8$X}f=1G{ɔ͙Ȉ2/ ]H֛G(~ SAAvS_~E6mRjj^zefe_U}/{,|24{S0.ռYՕᄃT^NwU[_?}[?AԓUu{\?((P{Z_{]wMS'M׀!}*|i232UN}RvI҃M3x^GC۷ׂxYQ}|}}StQk¸ԬiRwig1_ɿ͚鵗^fU}/{,|>hOг?瞟sթcGMp,\1ԡ}#UN=|@RS'ӧҔ2Gw\N{F}Qq@ ׷{oÓg'US}}}UAc(=>\IݮjjX!a38#ZuUTIR <9Nz&Vcr8:yr) @Px믿e 0nZ(.U2'<̉aDF"#b1H`$B 0!TtJR>>>vUPeb|@YSzO^n_G~>=ԡ'Umr:-6}'LN̮߹J 1yyyl5kʼkEtZDǨUL0H_Pvvg%9Raۑo_aõOܟ> R/'IᄃO ۵mZqO@ޣs;_UtIW7ɏ򙲻VNQ$ooo($$D騙LI[ҵ]\*}$FEFb>ZZXt[z&S|>ݰݮgt-[H;aar:z7JMKS-5iY I /S׭SVf:]]eoksEuk'Kk4b0+~ ڰyuEd3Z}n[>ǧغ 2v]oq~-[Ï͚jƍe?00clݶM/OtkPnkq{*njۺ$vqmӆ T夳_FXmX,y0rmڲݾWܿv1N<3U[4ŗz鹲{.^wY.///A S`haC5|P'(22Baa%kfܯuj9q5kDu_/kuCf<ƍjc$ɣZ^y zrc ՗_ThhH/Niʴ6ez衤$zvk<Z4oT-[?$mAI=u~*rS]:r jeZ˺AIU>}iVule,T %IwDWSO.<lZ\~[ucjݪM,#O.Ks)33Sqju1OVQ;Fzݦ.;i`~.TʟrөQ&vI4LarmZ[WoިXƏ˕,l6|vt:9ԼyrdeeiĨJ#M>Mvožlo Fbs\1FI.mܴYCn%$I][.K_ڥ6ZI:3d}qPժUKί.m56mޢ[Ǟ&Ywe͚zrc?y5m^jպ3w6iq==F6նMk1BodEDWiBĔ\\Nn>>MWLhM i mLWڶSjͷHj>3B5J]ٽlǩ[&O[ .TA7jƍ>XCE3KԦU+M>]WDFVXY鞷3uDja;~jՒw\J>as\y`~گ ]UO~#,yy:rN?2HRKfْr*#ģ :oB:]!k(Zw$b|}teQS\'λQPP~%^m'0HV`$B 0!DF"#b1H`$B 0!DF"#b1H`$B 0!DF"#b1H`$B 0!DF"#b1H`$B 0!DF"#b1H`$B 0!DF"#b1H`$B 0!DF"#b1H`$B 0!DF"#b1H`$B 0!DF"#b1H`$B 0!DF"#b1H`$B 0!DF"#b1H`$B 0!DF"#b1H`$B 0!DF"#b1H`$B 0!DF"#b1H`$B 0!DF"#b1H`$B 0!DF"#b1H`$B 0!DF"#b1H`$B 0!DF"#b1H`$B 0!DF"#b1H`$B 0!DF"#b1H`$B 0!DF"#b1H`$B 0!K*88$9.KeX$J+ZW]w\%]u. 2ԙSpvg/I" .Ue@BL΅Gbt.LxW(c__p%OFc /-U8S8 P0 GR8SMg#1|1)\p1([;^HL{/d>IDAT0R G0Sգ EFf.5yS%IA+AIENDB`parlatype-3.0/help/pl/figures/parlatype-prefs-window.png000066400000000000000000000437661414030451500235320ustar00rootroot00000000000000PNG  IHDR1K{sBIT|dtEXtSoftwaregnome-screenshot> IDATxw|TUL2R! IM@zolXA{/kEqu]EAE\]ׂ"v[ Jz23?IHd5$3s9; """"""""""""""""rj1`YC u~4{ަģ+Qys>+<<=5(BEE on8@&256 %1o޽ZE`6W`֛`0䌫nd:]@KGD$w^lX_ee%Em+"""W酋[!C;t`/ILELeS4Ĝ򶹼<$."""un2Ct?zd;oժFDDDNC??WprNzb I G*NR""""5R#{LʀҪGYգ2j0EDDDjrvvL#Fsa,9ٗ\r#"""֬VH5ɽNU? '1ʈGFeKzrkHL^LԾ2Qo@V3aqKDDDC20xu&Hc@W')f:S^4$"""ޞuĈtlY t hPDDڍ+'b :w wX2;p  9sW\r ٚKJ1!9jO̼6zk,  PT) $1ꋑoЀL8Ǫֱg~/{y*D/tDn]qvrdrZ=YaO_ȞyivE:#k&$8R<ijzzΞ4enߵn]C[+Vd4h)-ړȩ䢫fѻW,N||*2;weGtu8kVpsqqc;OrQEg1圳pu1˪5u ɹs8v| [w줬Aq5WOcϾa;EO=AP`ׁml0k9ɔ-8L=l.reee|/ذi3yLj3"*2+ %n^qɅ$MeqS?zTSVV 6wpfMؘ(_;vbb|W0j;sR}M|ܵ\0v4_|Fٓ&R^^[E^=x烏9t88IjZA c;|o{fAjOٍP=pjo-wԹ3o{<ʑD}ko?ʼa?nx6Dɞyl|C 9.zb`X1u?a29="0 ?Ɍ3"VBL0¢"rYxyz:-VBCBm;xO#=cx l#2۪/{D8Oˆ?6+GNݫ6mFu -[<^^4!h4ҧW,a;pŋrW=c}uVSSL0̬,22s#q$!wڒ۷KlLtdzwf ,4wGx`0p$>.!!,zvX'=&%1ЬV+I,F#O?I 6nBܑxΙ|\7 }[SZZƤغ}gesdB\zRmsl<xy38'|2vރhdӖmՓ'c_[cM!!,FYkow?lKbشmN?~OQ#ػ}z2`0/䋯jmno4nA6mV+AK a4y쫯9gDnv&w=4$SpkR_{ +ƺ_PPʙ4~?X]L96'f̈|lݱ+]DbQ228Iv,..nvi3^^;ﻟ# Ib4`>9LCXky|}3vTxh)'7- 19ȪH|>4~'M)u5`nس\7 g禛Kֱg=svpNjIǎنl@xqT ܳ0lZ^Dx]Wƻi \8'&صg/3d5NS<+{b$`X07^CDcX/ǩ+(uaxX&v&>CdzW>O-x992 .;pGGϘ>=L`NmIY9DGEMF.<8?طs@o//s&r00s{ 6V]WnHpewSXPĎ{;ǭgm|}ڥ ))<ؓxyymǮz\Z1-;'*{nܵWxq%8\aj jiBܑ#gZQ;Ңo\<.;IR.: l$&&cri|rcK9y5li ***(3Y ϗLXh(ah`ddfcn sO>NF#>7K2tȡ9IͬXQ&gԽBRVVͳgĵӯɉoHtdD\vɅ {Zy"P ~߯/ZQlb6c({ ~m{{1ڷG""v)--c عY-.zGyǟ//{bm7oE/1y8nZO-gi@1PT({1P/q0;VέjH̉ena] o6x]#k"%@ xwquu w8|2ز';fp8$%1"""␔ĈCj EDDCqpZ;ܢ{ƒ|4c{lL4i7N71)>@YoIDDDeӳCi v5kӀbQXbDI"""j%$(ȡMV#"" fK{*N߯MU#""AwbmRkhh{*ڤ\%1"""!AI$⒒A="y2p[ڤܓv57c͍?ݭMiZfǽ^a6Ӫ0 sƄ6w# IX,wgLT˖Ͽߟ1#bp8> p2${$]zjԻ QG<&JH>JŒ]ޡI& /Ob ܎zio'f>kؼD:՝klXkk/<זa4'FrHNI%;'3ƎjF|0 &< Iwo}}pPĖH:dח2s79gյm}4ba3pvr+V_Pᵻ8;;SXXDVN.6mawh G3-v=quq-[^VΆM[ݍ(B?9ghrvCFfF''"ºP{x76kvU7F 42)))͕nD5ԍ=Wgf U'DOV5{/+pw 〦붾?zf3{"5-Ҳ2|}3?_Vc9?_f3 ¤cqsu~^A?5x GcXHIKh4ALT$6Ӟ, j21iz< N9ps,sF 1(STTل'd ;Ƹ`ۮIHb̈t?9 >TԸ1Wc5-1Q =kh ⒒F#7eGa1[Hىp:stw>d6wۭ-75T^^oՕn!`00Kٴe;b?5bxuKJGHMKG\t5YM89(++?|ƆOtdNmSMh~= Vj 9O$.>Oww|#{$1#  `ʺ h*A;OlYk;%%عElڶXx5{۰i I)xxz;CqX //"ix{zDރ8tUyRxxbrVaZ&[W*8t$:2nm:|W:o6RXTDhH0YU^9yySa6@fV6V ]p|Y9RVZƮ}[fӱB, ~ 6v5U_l޾ w#$(77WF#]T,۶2puu%ϯM% OJRc` @aOfvNP;m9ys$!<|)..a}Z;^;-0Mms=rSIGSS Gt=*7ƿ%%5K/ތ?k^z!?{,[|}|9w/v')iO@>epHNl;L3ֽ cxϘhHM /a Uk7lxyz0n0ر{/˞22-/?ٹtcLUy{d_=»E~AQ٣RPT+אQrvrbܻ\Oϗݝ$$&S\RBLۜz_㟝KzF&5dw$س Y99;9RRRJVNa]lz!Au \9c( `rf{caQ.Uعs oz{=%E+(:O+kv nj?xyz2aT$F X;m츅;yc*޳ -}{PPPji nmᤴ ||}=00LjZn?XEXf\yYx8G|7ص-[9i9 |R{nvfq2I50 zDۺp\\Lji$&Ǜ8vЏ$DP^^kedq!ؽcOhlum7wjzfG?FYYl7˸&h GSRc݌:7?/5kXA!^x{j%+;`sr̪Ȟc`4loNoe'{U&+0wwwR3HMǛ^=b or򨨨 -3Ъ ɉ䣶acTPmn ZFicϛeUW2:9G~Ae57ګ-75T=]9!UW+(7[o<ۥmTs# tX5O>_Jb=='C\₧!ATTTmcrt֕ZT'0uU8Ikǚ/WWW?igp45 0np}}%=&==:w>={AYYiIL"X^3:[ԞvM}W8\ko֖N `0pP9ڲv5z̼<BYlٹΝjnoossYnb"˓L|qvvYx{yUUMj~L}b{Gn~>? _o/\\\!V IDATϧKp0]B<ǚ6oEHP NN$$`0SQ9>h V6פ#%s'228t81QMޟu` {$^'\vCiy~mٞͺ v˦-[ᎻMf🏷7w\9ddу5 W]6>ů//|F 8nݿAA]o/.8זwʬZ:ρ;l{~t/(Xg(*2' <1d@]g09x;qcMLnXVS5`0зwO #)*XvwuGTw\/(XA! ׷VE HbV "KE%dfeȸ#pqR)> A+MhOSMh~L..&ƏN1p<<=<kk xqh brf`OPKcZq5:e5Ô5zyInnedalbo;?Uϛ~ߨmٞx\<|:u{ZIY/)Du$%-w?89=LYx{5n[ 'f;P&[;=x}1lȟR3ذi a]دo{s4'xڣ-U='[K#"4(z(8D|JK,T*jUI8h~w_U;LZz&>撛OXh+X,MKɉ'6 Ҟګ-3Nee'&QV^A.rHKϠ/~qTՖ:QI#""AMM]4'FDDDDDDbmZE[ ')B(-)\]Mw'huH# كq)))>=>!c%hrJ^~>1Ѥg4t G܊DW'HcI .нC8i>^|ehN8z{b2RNv"""BT{pҴFQժ91"""n +"""&%1"""␔ĈCR#"""II8$%1"""␔ĈCR#"""II8$%1"""␔ĈCR#"""II8$%1"""␔ĈCR#"""II8$%1"""␔ĈCR#"""II8$%1"""␔ĈCR#"""II8$%1"""␜ۢPBr3)/+k+ JDDD&Ix ]딗pG޽-SHtyd lqdeEH"""ri$Ԭu]?sO :C3pH\c.JFM8{\:7~'|ﲲ2\ijgۆ/| F7߲;ycĸ \>l֢>s6,nQ'nX,xLRƜ1T>1pH NvvNԣuR_zF7~;fUW? …S*hoH6!i}{3bpγ-dΘ0 TCV+II<̳\8e >>̺zÇ%00N%:*;wZwʹ36N~XVf]=DsjԔW_Üߟ`nF~]|:\zI@?w~Y$$&J r3NBl(-->汹M0 rXZ~7?x:HMm7*!1/g5ki[l\4uj0S;V&D;w)s^eٲm;y$&&RRR`y= %5󣨨Z\=mVTTP6Z;nnn?DԒ\]kjgl9ONۗÇ3q8sXbyЖ(֧IݸEDDj:){V+]r1XaͺuG.bG^|'"f̾I'pKi|_r1;Iu޳ܼ<.sFcDXPYz5527Ƅwjem 8̞{qZkŧ7VTH1i91VK/+/eZsNgò߳ߍ\\\u /y 7RQQݻk f݆ʢ'x{{3xgٽg/YZ6lh{.%88Oم$186=aC@ݓSx6zfډɽw߅7_~%7~'aa8;w{6IV_j}(8OhX&)/+hR<^>E8Ɲ],zEDDb0@Qգ@I|Nrw!erq/3]"V_CKj$ənt #шq_KQ%%lVkEDDm^dծdr`AL"}p"""rɜaϜ6$FDDDqHJbDDD!)$FDDDqHJbDDD!ZHwMꤥɌiJ'1V̑CHIĮ\]FDt,NNNJdDDDQXVV+S\XpuskҒJt P4'Z,R͍}biDDDӪILuOLYi n^͝[95o3`p #r4/y ^3%n򥥥77j'""'G̉DʨkȠA,^صyhJ =m5e1DGٽ bϩ""rrZS78$f58;;ѣxѹrǝr\;k]qM:c"Xɡ8»ug`5'Ϝ͔e?qAw#O>}9Lo_\~:?p?]ǟŶV+__s/OqoĒjW#''ȃХKu# e3?{{4YYwd2÷_~ugOPk 7/U3gʒ!%5ů6^ii|ww9K^+`tvǵvz˖~ɠs)//ov Y7{, w7~'ǎ`kb*^xn>Fo~ 2 N! &Of0טbjΚ4 7~e˿'ɧϹg_14C&1VĤ$|Y.2_f]=CESŎj;sKnfV+AP"ùfUlٺ0'$8[o_Wl4^:\zI@?w~Y$$&J W]~OPP XÏG܇[XyyZ[2<} #(`sn&GYYo}޽zy眍[3ViJ 'Ɯ;s\0|n:빹,[=[m'7/DJJٞ?%5󣨨Z\=mVTTP6Z;nnnUKcf49HHLj36Ç8~9,za1szۜ$bki uF(++l`Zq1d2jم߿gyfr>s2/{_Wɓ8VP9TDD̡NoXbqw1t`1[a]CqwwgՍ.WQQfqCM޵{QQwje?f3{GL4Va5}5b'''e˿gGC(%aF***ص{w-!;YYz\PkzVz¢B&1oooO>,%+;g."88CRXTļ [r\&/2c7 bժ61p`%!.nڼe%X9ߝ=wo˯ƈ9bxoo777Yd˹[wZ_RؼO3'mjƐJ`\7k-F /-!#3_d20y0͌1WW^VHMKㅗ_ŗ{5 'O掿[Rk'[oL􌍭2p/K0Y7b`69o7EDew"SVZB܁xxz'''6(j =wzK{Ҡ3gsٴK ڤd.rVӔ[1FqU/`0LGaߋVk00 u!3-6QZjU3nv $ (VNG_CiWC۝XV?]ƑȩկN2a4DEEEs] xxx{`b6[u5Y< \\]=rdF%""Wkd=1Cbqs8sI{YBYj5K^x6'GDDZuNL~uui['}NL ipHsݷXנ$EDDDZ[ǟA+"""R%1"""␔ĈCR#"""II8$%1"""N%ֺO6Ib{t^W'1V̑CHInַXu #":'''%2"""ҨVMbV+VC).,`ЈqٵniI vm%~GFDDD{- i)IowFϾHOIbvX"""ri$'W7fNii(=q뤧g0`prZwSϜ͗_ʯn`kwe8G[i+m2')l1DGuetDDZO%1uHDV_v^ I8ٝڲ >s6,nQ'n?lؼٶ܎9nBp\t|w>RRRmoc3f_Ljq|5lٺ r"S.ư1`e|bz3}lF^Ǟx+5 rssm||[[ou(++cዋ9{L<zv> lG2`ps灇m69syzs1nqۺuL9c3i,~&h4UW_sC}hi[͒y-} qyΛbvl osDvQV^Ϊ߲u;w"{wrSoxq&Odٟ޺n8mMEK۲9%n L!G nv\!UVVswq9gZ /osMBb"C 䢩Sb]1sKnfV+AP"ùfU>e6;޽zcMy|7y> ֛nו+p=w#(`=Ff]=<[\kׯg҄ dddP^Q1&&:}4GK[uwcn]h[q$mm192\]UnRQJJK3֮qss?77e˿g˶咘HII7\RZZ9?\ۨcM XV} )/;;E/,f+.WWWƌwZ_sd=۰nX~<ݻwg\r;K.C6GKuwC8Ѷ,"H0i{x{{{uaQ!xyzTO+8n\TTČ1i.v _cDc~ -FCj{R=p3lV\&NYW =#(Ǝͪ5k|deep2y%i3_} {! ̋ k4O]-=ٿN4Dڲ.0I11lڼҲZoڲ18;75x/]1ٳ{^r:d0AA{EUko#k(XڮW^5kЃ͎k1W3|ƎMYo;v32xO>/~]Fh4uݒkeh<h&`F{h!-=e˿W^nk2JJj*/]j{S@ǎe$$&RPXȊUΝ;QPP}NNN˖$;6\\\u /y 7RQQݻQXTļ [<=<2xG 00na]yw8amټ|~5im4OS[ٿZwcuq"m?ODD:VKbjՍҒf'0%Ÿ[/<=vt>r) }Q#G4߽w߅7_~%7~'spIDATaazoctd7p χ42"{Wx ]Ư+W2rp{.mo3f̂8ܷ˾#5-^~ak֮;gL$Qs~˸1c̴^;v~+q/h34Gs)-k{>-hi[~rj-&Y,f3pqJK;O/b`7 4(z(iՏX@@P2Ӓٽm]!o@Bm刈4F#~~~F|;QQQggg<<, 2018. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2021-10-18 21:35+0200\n" "PO-Revision-Date: 2021-10-23 10:54+0000\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2021-11-02 18:32+0000\n" "X-Generator: Launchpad (build 5c9d2c413ed946c4f70cb1ddd4149326eda16fc5)\n" "Language: pl\n" #. Put one translator per line, in the form NAME , YEAR1, YEAR2 msgctxt "_" msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Piotr Drąg https://launchpad.net/~piotrdrag\n" " tydell https://launchpad.net/~marcin-tydelski" #. (itstool) path: info/title #: C/index.page:7 msgctxt "text" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: info/title #: C/index.page:8 msgctxt "link" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: credit/name #: C/index.page:10 #: C/drag-and-drop.page:8 #: C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 #: C/preferences.page:8 #: C/selections.page:8 #: C/timestamps.page:8 #: C/asr.page:9 #: C/asr-setup.page:9 #: C/media-keys.page:8 msgid "Gabor Karsay" msgstr "Gabor Karsay" #. (itstool) path: info/desc #. (itstool) path: page/p #: C/index.page:14 #: C/index.page:23 msgid "" "Parlatype is an easy to use media player. Its main purpose is to " "help you transcribing speech." msgstr "" "Parlatype to łatwy w obsłudze odtwarzacz multimedialny. Jego " "głównym celem jest pomoc przy transkrypcji mowy." #. (itstool) path: page/title #: C/index.page:18 msgid "<_:media-1/> Parlatype" msgstr "<_:media-1/> Parlatype" #. (itstool) path: page/p #: C/index.page:24 msgid "" "For a quick overview have a look at . Other " "topics are covered below." msgstr "" " zawiera krótki przegląd programu. Pozostałe " "tematy są opisane poniżej." #. (itstool) path: section/title #: C/index.page:27 msgid "Help topics" msgstr "Tematy pomocy" #. (itstool) path: info/desc #: C/drag-and-drop.page:6 msgid "Drop files, file names or timestamps on Parlatype" msgstr "Przeciąganie plików, nazw plików i czasów na program Parlatype" #. (itstool) path: page/title #: C/drag-and-drop.page:14 msgid "Drag and Drop" msgstr "Przeciąganie" #. (itstool) path: page/p #: C/drag-and-drop.page:16 msgid "" "You can drop files, file names or timestamps on Parlatype’s " "window." msgstr "" "Można przeciągać pliki, nazwy plików i czasy na okno programu " "Parlatype." #. (itstool) path: item/p #: C/drag-and-drop.page:19 msgid "" "Files: Drag and drop a file from a file manager, e.g. Files, on " "Parlatype and it will open that file." msgstr "" "Pliki: przeciągnij plik z menedżera plików, np. Pliki, na okno " "programu Parlatype, a otworzy on ten plik." #. (itstool) path: item/p #: C/drag-and-drop.page:20 msgid "" "File names: Select a file name from a word processor, e.g. " "LibreOffice, drop the selected text on Parlatype and " "it will open that file. This will always work if the selection contains a " "full path. If you select the name only, Parlatype will look up " "its full path in the list of recent files and open it if it can find it in " "that list." msgstr "" "Nazwy plików: zaznacz nazwę pliku w edytorze tekstu, np. " "LibreOffice, przeciągnij zaznaczony tekst do programu " "Parlatype, a otworzy on ten plik. Działa to zawsze, jeśli " "zaznaczenie zawiera pełną ścieżkę. Jeśli zaznaczona zostanie tylko nazwa, " "Parlatype wyszuka pełną ścieżkę na liście ostatnio używanych " "plików i otworzy ją, jeśli ją na niej znajdzie." #. (itstool) path: item/p #: C/drag-and-drop.page:21 msgid "" "Timestamps: You can drag and drop timestamps to Parlatype. Select " "a timestamp from a word processor, e.g. LibreOffice, drop the " "selected text on Parlatype and it will jump to that position." msgstr "" "Czasy: można przeciągać czasy do programu Parlatype. Zaznacz czas " "w procesorze tekstu, np. LibreOffice, przeciągnij zaznaczony " "tekst do programu Parlatype, a przejdzie on do tego miejsca." #. (itstool) path: info/desc #. (itstool) path: page/title #: C/first-steps.page:6 #: C/first-steps.page:14 msgid "First steps with Parlatype" msgstr "Pierwsze kroki z programem Parlatype" #. (itstool) path: page/p #: C/first-steps.page:16 msgid "" "Parlatype is an easy to use audio player to help you transcribing " "or annotating recorded speech. You need to run a word processor, e.g. " "LibreOffice, too. Launch Parlatype and open an audio " "file by clicking on the Open button in the upper left corner." msgstr "" "Parlatype to łatwy w użyciu odtwarzacz dźwięku pomagający " "w transkrypcji lub dodawaniu przypisów do nagranej mowy. Należy także " "uruchomić edytor tekstu, np. LibreOffice. Uruchom " "Parlatype i odtwórz plik dźwiękowy klikając przycisk " "Otwórz w górnym lewym rogu." #. (itstool) path: note/p #: C/first-steps.page:19 msgid "You can also drag and drop a file on Parlatype." msgstr "Można także przeciągnąć plik do programu Parlatype." #. (itstool) path: page/p #: C/first-steps.page:22 msgid "" "In the lower left corner there are the controls with a Play " "button which toggles between play and pause. Whenever you pause, " "Parlatype rewinds a few seconds to make it easier to resume. This " "can be changed in the ." msgstr "" "W dolnym lewym rogu znajdują się elementy sterowania, w tym przycisk " "Odtwórz, który przełącza między odtwarzaniem a wstrzymaniem. Po " "wstrzymaniu Parlatype przewija o kilka sekund, aby ułatwić " "wznowienie. Można to zmienić w oknie ." #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/first-steps.page:24 msgctxt "_" msgid "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" msgstr "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" #. (itstool) path: page/p #: C/first-steps.page:26 msgid "" "The buttons Jump back and Jump forward in the lower " "left corner skip a few seconds back or ahead. The amount of time can be " "changed in the ." msgstr "" "Przyciski Przejdź wsteczPrzejdź naprzód w dolnym " "lewym rogu przewijają o kilka sekund do tyłu lub do przodu. Przewijany czas " "można zmienić w oknie ." #. (itstool) path: page/p #: C/first-steps.page:28 msgid "" "The view scrolls automatically so that the cursor is always visible. You can " "scroll manually by clicking on or dragging the scroll bar or using the " "standard keybindings. Automatic scrolling is stopped then." msgstr "" "Widok przewija się automatycznie, aby kursor był zawsze widoczny. Można " "przewinąć ręcznie klikając lub przeciągając pasek przewijania lub za pomocą " "standardowych skrótów klawiszowych. Automatyczne przewijanie zostaje wtedy " "zatrzymane." #. (itstool) path: page/p #: C/first-steps.page:30 msgid "" "To get back to the cursor’s position and let the view scroll automatically " "again, click on the menu button showing the time and then on Go to " "cursor. Clicking on the Play button also turns automatic " "scrolling on." msgstr "" "Aby wrócić do pozycji kursora i ponownie włączyć automatyczne przewijanie " "widoku, kliknij przycisk menu wyświetlający czas, a następnie kliknij " "Przejdź do kursora. Kliknięcie przycisku Odtwórz także " "włącza automatyczne przewijanie." #. (itstool) path: page/p #: C/first-steps.page:32 msgid "" "Clicking in the view with the right mouse button will put the cursor there, " "also holding the right mouse button pressed and moving it. The left mouse " "button is for ." msgstr "" "Kliknięcie w widoku prawym przyciskiem myszy umieści kursor w danym miejscu, " "a także przytrzymanie prawego przycisku myszy i poruszanie się. Funkcją " "lewego przycisku myszy jest ." #. (itstool) path: page/p #: C/first-steps.page:34 msgid "" "The speed scale next to the volume button in the lower " "right corner lets you adjust the speed of playback. A value of 1 means " "normal speed, everything lower (down to 0.5) is slower, everything above is " "faster." msgstr "" "Podziałka prędkości obok głośności w dolnym prawym " "rogu umożliwia dostosowanie prędkości odtwarzania. Wartość „1” oznacza " "zwykłą prędkość, wszystko poniżej (do 0,5) jest wolniejsze, a wszystko " "powyżej jest szybsze." #. (itstool) path: info/desc #: C/keyboard-shortcuts.page:6 msgid "Standard keyboard shortcuts in Parlatype" msgstr "Standardowe skróty klawiszowe w programie Parlatype" #. (itstool) path: page/title #: C/keyboard-shortcuts.page:14 msgid "Keyboard shortcuts" msgstr "Skróty klawiszowe" #. (itstool) path: page/p #: C/keyboard-shortcuts.page:16 msgid "" "Keyboard shortcuts for Parlatype control, like Play, " "are described in . Shortcut keys for the window are " "listed below." msgstr "" "Skróty klawiszowe do sterowania programem Parlatype, takie jak " "Odtwórz, są opisane w sekcji . Klawisze " "skrótów dla okna są wymienione poniżej." #. (itstool) path: table/title #: C/keyboard-shortcuts.page:19 msgid "Standard Shortcut keys" msgstr "Standardowe skróty klawiszowe" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:22 msgid "To Do This" msgstr "Aby to zrobić" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:23 msgid "Press This" msgstr "Naciśnij to" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:28 msgid "Show help" msgstr "Wyświetlenie pomocy" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:29 msgid "F1" msgstr "F1" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:32 msgid "Open file" msgstr "Otwarcie pliku" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:33 msgid "Ctrlo" msgstr "CtrlO" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:36 msgid "Play/Pause" msgstr "Odtworzenie/wstrzymanie" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:37 msgid "CtrlSpace" msgstr "CtrlSpacja" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:40 msgid "Go to …" msgstr "Przejście do…" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:41 msgid "Ctrlg" msgstr "CtrlG" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:44 msgid "Jump back" msgstr "Przejście wstecz" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:45 msgid "CtrlLeft" msgstr "CtrlW lewo" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:48 msgid "Jump forward" msgstr "Przejście naprzód" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:49 msgid "CtrlRight" msgstr "CtrlW prawo" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:52 msgid "Copy timestamp" msgstr "Skopiowanie czasu" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:53 msgid "Ctrlc" msgstr "CtrlC" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:56 msgid "Insert timestamp" msgstr "Wstawienie czasu" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:57 msgid "Ctrlv" msgstr "CtrlV" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:60 msgid "Zoom in" msgstr "Powiększenie" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:61 msgid "Ctrl+" msgstr "Ctrl+" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:64 msgid "Zoom out" msgstr "Pomniejszenie" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:65 msgid "Ctrl-" msgstr "Ctrl-" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:68 msgid "Quit" msgstr "Zakończenie działania" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:69 msgid "Ctrlq" msgstr "CtrlQ" #. (itstool) path: p/link #: C/legal.xml:5 msgid "Creative Commons Attribution-ShareAlike 4.0 International" msgstr "Creative Commons Attribution-Share Alike 4.0 International" #. (itstool) path: license/p #: C/legal.xml:4 msgid "This work is licensed under a <_:link-1/> license." msgstr "Na warunkach licencji <_:link-1/>." #. (itstool) path: info/desc #: C/preferences.page:6 msgid "How to customize Parlatype" msgstr "Jak dostosować program Parlatype" #. (itstool) path: page/title #: C/preferences.page:14 msgid "Preferences" msgstr "Preferencje" #. (itstool) path: page/p #: C/preferences.page:16 msgid "" "To open the preferences dialog click on the primary menu in the headerbar." msgstr "" "Aby otworzyć okno preferencji, kliknij główne menu na pasku nagłówka." #. (itstool) path: section/title #: C/preferences.page:21 msgid "Preferences for the waveform" msgstr "Preferencje przebiegu fali" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:23 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" msgstr "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" #. (itstool) path: item/p #: C/preferences.page:26 msgid "" "Resolution: The resolution of the waveform image is given in pixels per " "second, e.g. the default resolution of 100 means, that one second is shown " "with a width of 100 pixels." msgstr "" "Rozdzielczość: rozdzielczość obrazu przebiegu fali jest podawana " "w pikselach. Domyślna rozdzielczość „100” oznacza, że jedna sekunda jest " "wyświetlana za pomocą 100 pikseli szerokości." #. (itstool) path: item/p #: C/preferences.page:27 msgid "" "Fixed vs. moving cursor: There are two modes, how to follow the cursor. On " "slower systems a moving cursor might be smoother." msgstr "" "Stały i poruszający się kursor: podążanie za kursorem ma dwa tryby. Na " "wolniejszych komputerach poruszający się kursor może być płynniejszy." #. (itstool) path: item/p #: C/preferences.page:28 msgid "Show time scale: Turn the time scale on or off." msgstr "Podziałka czasu: włączanie i wyłączanie podziałki czasu." #. (itstool) path: section/title #: C/preferences.page:33 msgid "Preferences for controls" msgstr "Preferencje sterowania" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:35 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: item/p #: C/preferences.page:38 msgid "" "Jump back on pause: Parlatype will rewind a few seconds on each " "pause, this way you can easier resume typing. Set this value to 0 if you " "don’t want this behaviour." msgstr "" "Przejście wstecz przy wstrzymaniu: Parlatype przewinie o kilka " "sekund przy każdym wstrzymaniu, dzięki czemu można łatwiej wznowić pisanie. " "Ustaw na wartość „0”, aby to wyłączyć." #. (itstool) path: item/p #: C/preferences.page:39 msgid "" "Jump back: Configures how many seconds to skip when the Jump back " "button is pressed." msgstr "" "Przejście wstecz: konfiguruje liczbę sekund przewijanych po naciśnięciu " "przycisku Przejdź wstecz." #. (itstool) path: item/p #: C/preferences.page:40 msgid "" "Jump forward: Configures how many seconds to skip when the Jump " "forward button is pressed." msgstr "" "Przejście naprzód: konfiguruje liczbę sekund przewijanych po naciśnięciu " "przycisku Przejdź naprzód." #. (itstool) path: item/p #: C/preferences.page:41 msgid "" "Pressing Play at the end of file – Replay file: Whether you want " "to repeat the file at the end. If not, it will replay a few seconds like on " "pause." msgstr "" "Kliknięcie Odtwórz na końcu pliku — powtórzenie pliku: czy " "powtarzać plik na końcu. Jeśli nie, to odtworzy kilka sekund, jak " "w przypadku wstrzymania." #. (itstool) path: item/p #: C/preferences.page:42 msgid "" "Pressing Play at the end of selection – Replay selection: Whether " "you want to repeat the selection. If not, it will replay a few seconds like " "on pause." msgstr "" "Kliknięcie Odtwórz na końcu zaznaczenia — powtórzenie " "zaznaczenia: czy powtarzać zaznaczenie. Jeśli nie, to odtworzy kilka sekund, " "jak w przypadku wstrzymania." #. (itstool) path: section/title #: C/preferences.page:47 msgid "Preferences for timestamps" msgstr "Preferencje czasów" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:49 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" msgstr "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" #. (itstool) path: section/p #: C/preferences.page:51 msgid "" "These settings affect how Parlatype formats timestamps. If you " "need a certain format in your transcription, you can adjust it here." msgstr "" "Te ustawienia wpływają na to, jak Parlatype formatuje czasy. " "Jeśli w transkrypcji potrzebny jest konkretny format, to można go dostosować " "tutaj." #. (itstool) path: note/p #: C/preferences.page:52 msgid "" "There are no settings for reading timestamps. Parlatype " "reads and accepts all of these formats." msgstr "" "Nie ma ustawień odczytywania czasów. Parlatype odczytuje " "i przyjmuje wszystkie formaty." #. (itstool) path: item/p #: C/preferences.page:54 msgid "" "Always show hours and leading zeroes: Whether to show a fixed number of " "digits. Changing any of these values will show an updated example in the " "Example section below." msgstr "" "Wyświetlanie godzin i początkowych zer: czy wyświetlać stałą liczbę cyfr. " "Zmiana każdej z tych wartości zaktualizuje przykład w sekcji " "Przykład poniżej." #. (itstool) path: item/p #: C/preferences.page:55 msgid "" "Precision: Choose between full seconds, 10th seconds or 100th seconds." msgstr "" "Dokładność: wybór między pełną sekundą, dziesiątą sekundy lub setną sekundy." #. (itstool) path: item/p #: C/preferences.page:56 msgid "" "Fraction separator: Choose between a point or a hyphen to separate fractions " "of a second." msgstr "" "Separator dziesiętny: wybór między punktem a dywizem do rozdzielania ułamków " "sekundy." #. (itstool) path: item/p #: C/preferences.page:57 msgid "" "Characters around timestamps: Choose between number signs, round brackets, " "square brackets or none." msgstr "" "Znaki wokół czasów: wybór między kratkami, nawiasami okrągłymi, nawiasami " "kwadratowymi lub bez żadnych znaków." #. (itstool) path: section/title #: C/preferences.page:62 msgid "Preferences for speech recognition" msgstr "Preferencje rozpoznawania mowy" #. (itstool) path: note/p #: C/preferences.page:65 msgid "" "This tab is only visible, if speech recognition is enabled in Parlatype." msgstr "" "Ta karta jest widoczna tylko, jeśli rozpoznawanie mowy jest włączone " "w programie Parlatype." #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:68 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" msgstr "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" #. (itstool) path: section/p #: C/preferences.page:70 msgid "" "Here you can choose which language model to use. If you don’t have a " "language model yet, an assistant will guide you through the process of " "downloading it. You can have as many language models as you need, they can " "be added with the + button." msgstr "" "Tutaj można wybrać używany model języka. Jeśli nie ma jeszcze żadnego " "modelu, to asystent umożliwi jego pobranie. Można mieć dowolną liczbę modeli " "języków, i można je dodawać za pomocą przycisku +." #. (itstool) path: section/p #: C/preferences.page:72 msgid "" "To select a model click on its radio button in the list. If you click just " "on the name, you can see the model’s basic parameters. You could even change " "them, but that’s not recommended." msgstr "" "Aby wybrać model, kliknij jego przycisk wyboru na liście. Kliknięcie nazwy " "wyświetli jego podstawowe parametry. Można je zmienić, ale nie jest to " "zalecane." #. (itstool) path: section/p #: C/preferences.page:74 msgid "" "The - button removes a model from the list. The model’s files " "however are not deleted, just the model entry is removed." msgstr "" "Przycisk - usunie model z listy. Jego pliki nie są " "usuwane." #. (itstool) path: section/title #: C/preferences.page:80 msgid "Preferences for the window" msgstr "Preferencje okna" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:82 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" msgstr "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" #. (itstool) path: item/p #: C/preferences.page:85 msgid "" "Remember size: On start-up Parlatype sets the window size to the " "size it had the last time." msgstr "" "Pamiętanie rozmiaru: po uruchomieniu Parlatype ustawia rozmiar " "okna na rozmiar używany poprzednim razem." #. (itstool) path: item/p #: C/preferences.page:86 msgid "" "Remember position: On start-up Parlatype can position its window " "where you had it when you closed Parlatype last time." msgstr "" "Pamiętanie pozycji: po uruchomieniu Parlatype może umieścić swoje " "okno w miejscu, w którym było ostatnim razem." #. (itstool) path: item/p #: C/preferences.page:87 msgid "" "Start on top: This will put Parlatype on start-up on top of other " "windows. This might be useful if you are working with a maximized word " "processor and still want to see the Parlatype window." msgstr "" "Uruchamianie zawsze na wierzchu: spowoduje umieszczanie programu " "Parlatype nad pozostałymi oknami po uruchomieniu. Może to być " "przydatne w czasie pracy ze zmaksymalizowanym oknem edytora tekstu, aby " "widzieć okno Parlatype." #. (itstool) path: note/p #: C/preferences.page:91 msgid "" "Remember position and Start on top are not available " "on Wayland." msgstr "" "Pamiętanie pozycjiUruchamianie zawsze na wierzchu " "nie są dostępne podczas działania w technologii Wayland." #. (itstool) path: info/desc #: C/selections.page:6 msgid "How to play and repeat a selection" msgstr "Jak odtwarzać i powtarzać zaznaczenie" #. (itstool) path: page/title #: C/selections.page:14 msgid "Selections" msgstr "Zaznaczanie" #. (itstool) path: page/p #: C/selections.page:16 msgid "" "You can select a piece of the waveform with the mouse. Next time you press " "Play, it will play the selection only. When it is finished and " "you press Play again, it will loop the selection once." msgstr "" "Można zaznaczyć fragment przebiegu fali za pomocą myszy. Następne kliknięcie " "przycisku Odtwórz odtworzy tylko ten fragment. Po ukończeniu " "odtwarzania następne kliknięcie przycisku Odtwórz spowoduje " "powtórzenie zaznaczenia jeden raz." #. (itstool) path: note/p #: C/selections.page:18 msgid "" "When in selection mode, you can not exit the selection anymore until you " "deselect it." msgstr "" "W trybie zaznaczania nie można wyjść z zaznaczenia do jego odznaczenia." #. (itstool) path: page/p #: C/selections.page:20 msgid "" "Selections can be made with the mouse (or pointer device) with a left click, " "holding the mouse button and dragging the pointer. If you click with " "Shift key pressed, an already existing selection will be enlarged " "to that point." msgstr "" "Można zaznaczać za pomocą myszy (lub innego urządzenia wskazującego) lewym " "przyciskiem, przytrzymując go i przeciągając kursor. Kliknięcie przy " "przytrzymanym klawiszu Shift powiększa już istniejące zaznaczenie " "do tego miejsca." #. (itstool) path: page/p #: C/selections.page:22 msgid "" "To deselect click once with the left button into the waveform. If the " "waveform has keyboard focus, you can press Escape." msgstr "" "Aby odznaczyć, kliknij raz przebieg fali lewym przyciskiem myszy. Jeśli " "przebieg fali jest aktywny, to można nacisnąć klawisz Esc." #. (itstool) path: info/desc #: C/timestamps.page:6 msgid "Set and go to timestamps" msgstr "Ustawianie i przechodzenie do czasów" #. (itstool) path: page/title #: C/timestamps.page:14 msgid "Timestamps" msgstr "Czasy" #. (itstool) path: page/p #: C/timestamps.page:16 msgid "Timestamps help you to navigate in your transcription." msgstr "Czasy pomagają nawigować w transkrypcji." #. (itstool) path: note/p #: C/timestamps.page:19 msgid "" "Timestamps can look like this: #03:45.2#. You can select them with or " "without the number signs." msgstr "" "Czasy mogą wyglądać w ten sposób: #03:45.2#. Można zaznaczać je z lub bez " "kratek." #. (itstool) path: page/p #: C/timestamps.page:22 msgid "" "Parlatype can produce different timestamp formats, they can be " "set in ." msgstr "" "Parlatype może generować różne formaty czasów, które można " "ustawić w oknie ." #. (itstool) path: section/title #: C/timestamps.page:25 msgid "Drag and drop" msgstr "Przeciąganie" #. (itstool) path: section/p #: C/timestamps.page:27 msgid "" "If you select the timestamp in the word processor, you can drag and drop it " "on the Parlatype window and it will go to that position. This is " "also possible the other way round: Drag the time label from " "Parlatype to a word processor and drop it there to insert it." msgstr "" "Po zaznaczeniu czasu w edytorze tekstu można przeciągnąć go do okna " "Parlatype, a program przejdzie do tego miejsca. Można to robić " "także w drugą stronę: przeciągnij czas z programu Parlatype do " "edytora tekstu, aby go tam wstawić." #. (itstool) path: section/title #: C/timestamps.page:31 msgid "Using the clipboard" msgstr "Używanie schowka" #. (itstool) path: section/p #: C/timestamps.page:33 msgid "" "Clicking on the menu button that is showing the current time you can " "Copy time to clipboard or Go to time in clipboard." msgstr "" "Kliknięcie przycisku menu wyświetlającego obecny czas umożliwia wybranie " "Skopiuj czas do schowka lub Przejdź do czasu w schowku." #. (itstool) path: section/p #: C/timestamps.page:35 msgid "" "This can also be done with keyboard shortcuts. First make sure, the " "Parlatype window has focus. With the key sequence " "Ctrlc the current timestamp is copied " "to the clipboard. Changing to the word processor you can insert now the " "timestamp in your transcription." msgstr "" "Można także korzystać ze skrótów klawiszowych. Najpierw upewnij się, że okno " "Parlatype jest aktywne. Za pomocą klawiszy " "CtrlC obecny czas jest kopiowany do " "schowka. Po przełączeniu do procesora tekstu można go wkleić do transkrypcji." #. (itstool) path: section/p #: C/timestamps.page:36 msgid "" "To go to a timestamp position, copy the timestamp in the word processor to " "the clipboard. Once you have changed focus to Parlatype press " "Ctrlv." msgstr "" "Aby przejść do pozycji czasu, skopiuj czas w edytorze tekstu do schowka. Po " "przejściu do programu Parlatype naciśnij klawisze " "CtrlV." #. (itstool) path: info/desc #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "Pozwól Parlatype wykonać część transkrypcji" #. (itstool) path: page/title #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "Automatyczne rozpoznawanie mowy" #. (itstool) path: page/p #: C/asr.page:17 msgid "" "Parlatype offers automatic speech recognition that is done on " "your computer. No data is sent over the network." msgstr "" #. (itstool) path: note/p #: C/asr.page:20 msgid "" "Parlatype must have been built with PocketSphinx or " "Mozilla DeepSpeech. Please note that those libraries might be not " "available on your platform." msgstr "" #. (itstool) path: note/p #: C/asr.page:25 msgid "" "Parlatype has no built-in text editor. You need the Parlatype " "Extension for LibreOffice to output recognized text." msgstr "" #. (itstool) path: section/title #: C/asr.page:30 msgid "Start speech recognition" msgstr "Rozpoczynanie rozpoznawania mowy" #. (itstool) path: section/p #: C/asr.page:32 msgid "" "Select a language model in the Preferences Dialog, Speech " "recognition tab, see for more details." msgstr "" #. (itstool) path: section/p #: C/asr.page:35 msgid "" "Open the primary menu and click on Automatic transcription. This " "is only available, if you have setup and chosen a language model." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr.page:38 msgctxt "_" msgid "" "external ref='figures/asr-switch-to-asr.png' " "md5='91dc6bffa3b8a3342889d9bfccabc3c8'" msgstr "" "external ref='figures/asr-switch-to-asr.png' " "md5='91dc6bffa3b8a3342889d9bfccabc3c8'" #. (itstool) path: section/p #: C/asr.page:40 msgid "" "Now press Play in Parlatype and the recognized speech " "will be printed in LibreOffice, if the Parlatype Extension is " "installed. Output is silent because decoding speed is dependent on your " "machine and may be slower or faster than real-time speech." msgstr "" #. (itstool) path: section/p #: C/asr.page:45 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" "Wyjście jest bez interpunkcji i wielkich znaków, należy to dodać lub " "poprawić ręcznie." #. (itstool) path: note/p #: C/asr.page:47 msgid "" "Accuracy depends on many factors like quality of the recording, " "background noise, speaker’s dialect or pronunciation and the speech model " "used. For general transcription you can expect an word error rate between 10 " "and 50 %. Alas this means that in some cases manual transcription from the " "start will be faster than automatic transcription and the following " "correction process." msgstr "" #. (itstool) path: info/desc #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "Konfiguracja automatycznej transkrypcji mowy" #. (itstool) path: page/title #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "Konfiguracja automatycznego rozpoznawania mowy" #. (itstool) path: page/p #: C/asr-setup.page:17 msgid "" "For speech recognition you need a language model: one or more files trained " "with real speech samples. Parlatype supports language models made " "for CMU Sphinx and Mozilla DeepSpeech and ships a couple of language " "model configurations." msgstr "" #. (itstool) path: note/p #: C/asr-setup.page:22 msgid "" "A language model configuration contains meta data describing the " "language model: A name that you can change, the language it was made for, " "speech recognition engine, publisher, license etc. It has a (third party) " "link, where you can download the files. Part of the configuration is the " "base folder, where you have saved the model. Additionally it contains " "various parameters for the plugin which are not shown." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:29 msgid "" "Open the Preferences Dialog and click on the Speech Recognition " "tab. Initially there are no configurations available, click on the Add " "a configuration button." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:33 msgctxt "_" msgid "" "external ref='figures/asr-setup-initial.png' " "md5='31773b99dcbb1ee84e59e119a0bd35c6'" msgstr "" "external ref='figures/asr-setup-initial.png' " "md5='31773b99dcbb1ee84e59e119a0bd35c6'" #. (itstool) path: media/span #: C/asr-setup.page:36 msgid "download" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:37 msgid "unavailable" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:35 msgid "" "If your installation has CMU Sphinx or Mozilla DeepSpeech enabled, you will " "see configurations with a <_:media-1/> symbol. Otherwise you will see only " "configurations with a <_:media-2/> symbol." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:39 msgctxt "_" msgid "" "external ref='figures/asr-setup-downloadable.png' " "md5='6e00b08a60952e8f408bec4a024be2e5'" msgstr "" "external ref='figures/asr-setup-downloadable.png' " "md5='6e00b08a60952e8f408bec4a024be2e5'" #. (itstool) path: media/span #: C/asr-setup.page:42 msgid "settings" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:41 msgid "" "Select a configuration and click on the <_:media-1/> button. There is a " "short description of the model and where you can download it. After " "downloading, you have to set the folder where your download resides. You can " "also change the Display name." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:47 msgctxt "_" msgid "" "external ref='figures/asr-setup-details.png' " "md5='3273410dfb31da8518a64d28af0da7b1'" msgstr "" "external ref='figures/asr-setup-details.png' " "md5='3273410dfb31da8518a64d28af0da7b1'" #. (itstool) path: media/span #: C/asr-setup.page:50 msgid "selected" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:49 msgid "" "An installed model has no symbol next to it. Double click on the model and " "it will be selected for speech recognition, a <_:media-1/> symbol appears." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:53 msgid "" "Shipped configurations might get obsolete over time. Therefore you can " "import a configuration with the + button. Configurations are text " "files with an .asr ending." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:57 msgid "" "With the - button you can remove a configuration. This will never " "remove downloaded models, only the configuration file." msgstr "" #. (itstool) path: info/desc #: C/media-keys.page:6 msgid "How to control Parlatype with media keys" msgstr "Jak sterować programem Parlatype za pomocą klawiszy multimedialnych" #. (itstool) path: page/title #: C/media-keys.page:14 msgid "Media keys" msgstr "Klawisze multimedialne" #. (itstool) path: page/p #: C/media-keys.page:16 msgid "" "Parlatype’s basic functions can be controlled with so called " "media keys. Media keys are used system wide to control media " "players and they are working even if the media player is not in focus or in " "the background." msgstr "" "Podstawowe funkcje programu Parlatype mogą być sterowane za " "pomocą tak zwanych klawiszy multimedialnych. Klawisze multimedialne " "są używane do sterowania odtwarzaczami multimediów i działają także, kiedy " "odtwarzacz nie jest aktywny lub w tle." #. (itstool) path: page/p #: C/media-keys.page:18 msgid "" "You can change the media keys in GNOME settings. You can use dedicated keys " "from a multimedia keyboard or use any other key or combination of keys." msgstr "" "Można zmienić klawisze multimedialne w ustawieniach GNOME. Można używać " "specjalnych klawiszy na klawiaturach multimedialnych lub dowolnego innego " "klawisza lub kombinacji klawiszy." #. (itstool) path: note/p #: C/media-keys.page:21 msgid "" "This will affect other media players, e.g. Totem or " "Rhythmbox, as well." msgstr "" "Wpływa to także na inne odtwarzacze multimedialne, np. Totem " "i Rhythmbox." #. (itstool) path: page/p #: C/media-keys.page:24 msgid "Parlatype listens to these key strokes:" msgstr "Parlatype nasłuchuje tych klawiszy:" #. (itstool) path: item/p #: C/media-keys.page:26 msgid "" "Play, Pause, Stop: Each of these keys " "toggles between playing and pause." msgstr "" "Odtwórz, Wstrzymaj, Zatrzymaj: każdy z tych " "klawiszy przełącza między odtwarzaniem a wstrzymaniem." #. (itstool) path: item/p #: C/media-keys.page:27 msgid "" "Rewind, Previous: Each of these keys will jump back " "the time you selected in Preferences." msgstr "" "Przewiń do tyłu, Poprzedni: każdy z tych klawiszy " "przewinie w tył o czas wybrany w preferencjach." #. (itstool) path: item/p #: C/media-keys.page:28 msgid "" "Fast Forward, Next: Each of these keys will jump ahead " "the time you selected in Preferences." msgstr "" "Przewiń do przodu, Następny: każdy z tych klawiszy " "przewinie do przodu o czas wybrany w preferencjach." #. (itstool) path: note/p #: C/media-keys.page:32 msgid "" "For detailed instructions how to change keyboard shortcuts in GNOME see the " "official " "documentation." msgstr "" "Oficjalna " "dokumentacja zawiera szczegółowe instrukcje zmiany skrótów " "klawiszowych w środowisku GNOME." #. (itstool) path: page/p #: C/media-keys.page:35 msgid "" "If you are using a dedicated foot pedal, it should be possible to map the " "foot pedal signals to any of the keys. This is not well tested, however. Any " "feedback regarding foot pedals is welcome." msgstr "" "Jeśli używany jest specjalny pedał, to można przypisać go do dowolnego " "z klawiszy. Nie zostało to dobrze przetestowane. Opinie na temat obsługi " "pedału są mile widziane." parlatype-3.0/help/pt/000077500000000000000000000000001414030451500147255ustar00rootroot00000000000000parlatype-3.0/help/pt/pt.po000066400000000000000000000770031414030451500157170ustar00rootroot00000000000000# Portuguese translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # Bruno Barreto , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2021-10-18 21:35+0200\n" "PO-Revision-Date: 2018-06-04 13:21+0000\n" "Last-Translator: Bruno Barreto \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" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #. Put one translator per line, in the form NAME , YEAR1, YEAR2 msgctxt "_" msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Bruno Barreto https://launchpad.net/~brunoafbarreto" #. (itstool) path: info/title #: C/index.page:7 msgctxt "text" msgid "Parlatype" msgstr "" #. (itstool) path: info/title #: C/index.page:8 msgctxt "link" msgid "Parlatype" msgstr "" #. (itstool) path: credit/name #: C/index.page:10 C/drag-and-drop.page:8 C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 C/preferences.page:8 C/selections.page:8 #: C/timestamps.page:8 C/asr.page:9 C/asr-setup.page:9 C/media-keys.page:8 msgid "Gabor Karsay" msgstr "" #. (itstool) path: info/desc #. (itstool) path: page/p #: C/index.page:14 C/index.page:23 msgid "" "Parlatype is an easy to use media player. Its main purpose is to " "help you transcribing speech." msgstr "" #. (itstool) path: page/title #: C/index.page:18 msgid "<_:media-1/> Parlatype" msgstr "" #. (itstool) path: page/p #: C/index.page:24 msgid "" "For a quick overview have a look at . Other " "topics are covered below." msgstr "" #. (itstool) path: section/title #: C/index.page:27 msgid "Help topics" msgstr "" #. (itstool) path: info/desc #: C/drag-and-drop.page:6 msgid "Drop files, file names or timestamps on Parlatype" msgstr "" #. (itstool) path: page/title #: C/drag-and-drop.page:14 msgid "Drag and Drop" msgstr "" #. (itstool) path: page/p #: C/drag-and-drop.page:16 msgid "" "You can drop files, file names or timestamps on Parlatype’s " "window." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:19 msgid "" "Files: Drag and drop a file from a file manager, e.g. Files, on " "Parlatype and it will open that file." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:20 msgid "" "File names: Select a file name from a word processor, e.g. LibreOffice, drop the selected text on Parlatype and it will open that " "file. This will always work if the selection contains a full path. If you " "select the name only, Parlatype will look up its full path in the " "list of recent files and open it if it can find it in that list." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:21 msgid "" "Timestamps: You can drag and drop timestamps to Parlatype. Select " "a timestamp from a word processor, e.g. LibreOffice, drop the " "selected text on Parlatype and it will jump to that position." msgstr "" #. (itstool) path: info/desc #. (itstool) path: page/title #: C/first-steps.page:6 C/first-steps.page:14 msgid "First steps with Parlatype" msgstr "" #. (itstool) path: page/p #: C/first-steps.page:16 msgid "" "Parlatype is an easy to use audio player to help you transcribing " "or annotating recorded speech. You need to run a word processor, e.g. " "LibreOffice, too. Launch Parlatype and open an audio " "file by clicking on the Open button in the upper left corner." msgstr "" #. (itstool) path: note/p #: C/first-steps.page:19 msgid "You can also drag and drop a file on Parlatype." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:22 msgid "" "In the lower left corner there are the controls with a Play " "button which toggles between play and pause. Whenever you pause, " "Parlatype rewinds a few seconds to make it easier to resume. This " "can be changed in the ." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/first-steps.page:24 msgctxt "_" msgid "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" msgstr "" #. (itstool) path: page/p #: C/first-steps.page:26 msgid "" "The buttons Jump back and Jump forward in the lower " "left corner skip a few seconds back or ahead. The amount of time can be " "changed in the ." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:28 msgid "" "The view scrolls automatically so that the cursor is always visible. You can " "scroll manually by clicking on or dragging the scroll bar or using the " "standard keybindings. Automatic scrolling is stopped then." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:30 msgid "" "To get back to the cursor’s position and let the view scroll automatically " "again, click on the menu button showing the time and then on Go to " "cursor. Clicking on the Play button also turns automatic " "scrolling on." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:32 msgid "" "Clicking in the view with the right mouse button will put the cursor there, " "also holding the right mouse button pressed and moving it. The left mouse " "button is for ." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:34 msgid "" "The speed scale next to the volume button in the lower " "right corner lets you adjust the speed of playback. A value of 1 means " "normal speed, everything lower (down to 0.5) is slower, everything above is " "faster." msgstr "" #. (itstool) path: info/desc #: C/keyboard-shortcuts.page:6 msgid "Standard keyboard shortcuts in Parlatype" msgstr "" #. (itstool) path: page/title #: C/keyboard-shortcuts.page:14 msgid "Keyboard shortcuts" msgstr "" #. (itstool) path: page/p #: C/keyboard-shortcuts.page:16 msgid "" "Keyboard shortcuts for Parlatype control, like Play, " "are described in . Shortcut keys for the window are " "listed below." msgstr "" #. (itstool) path: table/title #: C/keyboard-shortcuts.page:19 msgid "Standard Shortcut keys" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:22 msgid "To Do This" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:23 msgid "Press This" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:28 msgid "Show help" msgstr "Mostrar ajuda" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:29 msgid "F1" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:32 msgid "Open file" msgstr "Abrir arquivo" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:33 msgid "Ctrlo" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:36 msgid "Play/Pause" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:37 msgid "CtrlSpace" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:40 msgid "Go to …" msgstr "Ir para ..." #. (itstool) path: td/p #: C/keyboard-shortcuts.page:41 msgid "Ctrlg" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:44 msgid "Jump back" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:45 msgid "CtrlLeft" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:48 msgid "Jump forward" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:49 msgid "CtrlRight" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:52 msgid "Copy timestamp" msgstr "Copiar timestamp" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:53 msgid "Ctrlc" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:56 msgid "Insert timestamp" msgstr "Inserir timestamp" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:57 msgid "Ctrlv" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:60 msgid "Zoom in" msgstr "Ampliar" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:61 msgid "Ctrl+" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:64 msgid "Zoom out" msgstr "Reduzir" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:65 msgid "Ctrl-" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:68 msgid "Quit" msgstr "Sair" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:69 msgid "Ctrlq" msgstr "" #. (itstool) path: p/link #: C/legal.xml:5 msgid "Creative Commons Attribution-ShareAlike 4.0 International" msgstr "Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional" #. (itstool) path: license/p #: C/legal.xml:4 msgid "This work is licensed under a <_:link-1/> license." msgstr "Este trabalho é licenciado sob uma licença <_:link-1/>" #. (itstool) path: info/desc #: C/preferences.page:6 msgid "How to customize Parlatype" msgstr "Como personalizar o Parlatype" #. (itstool) path: page/title #: C/preferences.page:14 msgid "Preferences" msgstr "Preferências" #. (itstool) path: page/p #: C/preferences.page:16 msgid "" "To open the preferences dialog click on the primary menu in the headerbar." msgstr "" #. (itstool) path: section/title #: C/preferences.page:21 msgid "Preferences for the waveform" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:23 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:26 msgid "" "Resolution: The resolution of the waveform image is given in pixels per " "second, e.g. the default resolution of 100 means, that one second is shown " "with a width of 100 pixels." msgstr "" "Resolução: A resolução da imagem da forma da onda é dada em pixels por " "segundo, isto é, a resolução padrão de 100 significa que um segundo é " "mostrado com uma largura de 100 pixels." #. (itstool) path: item/p #: C/preferences.page:27 msgid "" "Fixed vs. moving cursor: There are two modes, how to follow the cursor. On " "slower systems a moving cursor might be smoother." msgstr "" "Cursor fixo vs. móvel: Existem dois modos que você pode acompanhar o cursor. " "Em sistemas mais lentos, um cursor móvel pode ser mais suave." #. (itstool) path: item/p #: C/preferences.page:28 msgid "Show time scale: Turn the time scale on or off." msgstr "Exibir escala de tempo: Habilita ou desabilita a escala de tempo." #. (itstool) path: section/title #: C/preferences.page:33 msgid "Preferences for controls" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:35 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:38 msgid "" "Jump back on pause: Parlatype will rewind a few seconds on each " "pause, this way you can easier resume typing. Set this value to 0 if you " "don’t want this behaviour." msgstr "" #. (itstool) path: item/p #: C/preferences.page:39 msgid "" "Jump back: Configures how many seconds to skip when the Jump back " "button is pressed." msgstr "" "Voltar atrás: Configure quantos segudos serão retrocedidos quando o botão " "Voltar atrás for pressionado." #. (itstool) path: item/p #: C/preferences.page:40 msgid "" "Jump forward: Configures how many seconds to skip when the Jump " "forward button is pressed." msgstr "" "Avançar: configure quantos segundos deverão ser avançados quando o botão " "Avançar for pressionado." #. (itstool) path: item/p #: C/preferences.page:41 msgid "" "Pressing Play at the end of file – Replay file: Whether you want " "to repeat the file at the end. If not, it will replay a few seconds like on " "pause." msgstr "" #. (itstool) path: item/p #: C/preferences.page:42 msgid "" "Pressing Play at the end of selection – Replay selection: Whether " "you want to repeat the selection. If not, it will replay a few seconds like " "on pause." msgstr "" #. (itstool) path: section/title #: C/preferences.page:47 msgid "Preferences for timestamps" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:49 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" msgstr "" #. (itstool) path: section/p #: C/preferences.page:51 msgid "" "These settings affect how Parlatype formats timestamps. If you " "need a certain format in your transcription, you can adjust it here." msgstr "" #. (itstool) path: note/p #: C/preferences.page:52 msgid "" "There are no settings for reading timestamps. Parlatype " "reads and accepts all of these formats." msgstr "" #. (itstool) path: item/p #: C/preferences.page:54 msgid "" "Always show hours and leading zeroes: Whether to show a fixed number of " "digits. Changing any of these values will show an updated example in the " "Example section below." msgstr "" #. (itstool) path: item/p #: C/preferences.page:55 msgid "Precision: Choose between full seconds, 10th seconds or 100th seconds." msgstr "" #. (itstool) path: item/p #: C/preferences.page:56 msgid "" "Fraction separator: Choose between a point or a hyphen to separate fractions " "of a second." msgstr "" #. (itstool) path: item/p #: C/preferences.page:57 msgid "" "Characters around timestamps: Choose between number signs, round brackets, " "square brackets or none." msgstr "" #. (itstool) path: section/title #: C/preferences.page:62 msgid "Preferences for speech recognition" msgstr "" #. (itstool) path: note/p #: C/preferences.page:65 msgid "" "This tab is only visible, if speech recognition is enabled in Parlatype." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:68 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" msgstr "" #. (itstool) path: section/p #: C/preferences.page:70 msgid "" "Here you can choose which language model to use. If you don’t have a " "language model yet, an assistant will guide you through the process of " "downloading it. You can have as many language models as you need, they can " "be added with the + button." msgstr "" #. (itstool) path: section/p #: C/preferences.page:72 msgid "" "To select a model click on its radio button in the list. If you click just " "on the name, you can see the model’s basic parameters. You could even change " "them, but that’s not recommended." msgstr "" #. (itstool) path: section/p #: C/preferences.page:74 msgid "" "The - button removes a model from the list. The model’s files " "however are not deleted, just the model entry is removed." msgstr "" #. (itstool) path: section/title #: C/preferences.page:80 msgid "Preferences for the window" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:82 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:85 msgid "" "Remember size: On start-up Parlatype sets the window size to the " "size it had the last time." msgstr "" #. (itstool) path: item/p #: C/preferences.page:86 msgid "" "Remember position: On start-up Parlatype can position its window " "where you had it when you closed Parlatype last time." msgstr "" #. (itstool) path: item/p #: C/preferences.page:87 msgid "" "Start on top: This will put Parlatype on start-up on top of other " "windows. This might be useful if you are working with a maximized word " "processor and still want to see the Parlatype window." msgstr "" "Iniciar à frente: Isto irá colocar o Parlatype à frente de outras " "janelas ao iniciar. Isso pode ser útil se você estiver trabalhando com um " "editor de texto maximizado e ainda gostaria de ver a janela do " "Parlatype." #. (itstool) path: note/p #: C/preferences.page:91 msgid "" "Remember position and Start on top are not available " "on Wayland." msgstr "" #. (itstool) path: info/desc #: C/selections.page:6 msgid "How to play and repeat a selection" msgstr "Como tocar e repetir uma seleção" #. (itstool) path: page/title #: C/selections.page:14 msgid "Selections" msgstr "Seleções" #. (itstool) path: page/p #: C/selections.page:16 msgid "" "You can select a piece of the waveform with the mouse. Next time you press " "Play, it will play the selection only. When it is finished and " "you press Play again, it will loop the selection once." msgstr "" #. (itstool) path: note/p #: C/selections.page:18 msgid "" "When in selection mode, you can not exit the selection anymore until you " "deselect it." msgstr "" #. (itstool) path: page/p #: C/selections.page:20 msgid "" "Selections can be made with the mouse (or pointer device) with a left click, " "holding the mouse button and dragging the pointer. If you click with " "Shift key pressed, an already existing selection will be enlarged " "to that point." msgstr "" #. (itstool) path: page/p #: C/selections.page:22 msgid "" "To deselect click once with the left button into the waveform. If the " "waveform has keyboard focus, you can press Escape." msgstr "" #. (itstool) path: info/desc #: C/timestamps.page:6 msgid "Set and go to timestamps" msgstr "" #. (itstool) path: page/title #: C/timestamps.page:14 msgid "Timestamps" msgstr "" #. (itstool) path: page/p #: C/timestamps.page:16 msgid "Timestamps help you to navigate in your transcription." msgstr "" #. (itstool) path: note/p #: C/timestamps.page:19 msgid "" "Timestamps can look like this: #03:45.2#. You can select them with or " "without the number signs." msgstr "" #. (itstool) path: page/p #: C/timestamps.page:22 msgid "" "Parlatype can produce different timestamp formats, they can be " "set in ." msgstr "" #. (itstool) path: section/title #: C/timestamps.page:25 msgid "Drag and drop" msgstr "" #. (itstool) path: section/p #: C/timestamps.page:27 msgid "" "If you select the timestamp in the word processor, you can drag and drop it " "on the Parlatype window and it will go to that position. This is " "also possible the other way round: Drag the time label from Parlatype to a word processor and drop it there to insert it." msgstr "" #. (itstool) path: section/title #: C/timestamps.page:31 msgid "Using the clipboard" msgstr "" #. (itstool) path: section/p #: C/timestamps.page:33 msgid "" "Clicking on the menu button that is showing the current time you can " "Copy time to clipboard or Go to time in clipboard." msgstr "" #. (itstool) path: section/p #: C/timestamps.page:35 msgid "" "This can also be done with keyboard shortcuts. First make sure, the " "Parlatype window has focus. With the key sequence " "Ctrlc the current timestamp is copied " "to the clipboard. Changing to the word processor you can insert now the " "timestamp in your transcription." msgstr "" #. (itstool) path: section/p #: C/timestamps.page:36 msgid "" "To go to a timestamp position, copy the timestamp in the word processor to " "the clipboard. Once you have changed focus to Parlatype press " "Ctrlv." msgstr "" #. (itstool) path: info/desc #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "" #. (itstool) path: page/title #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "" #. (itstool) path: page/p #: C/asr.page:17 msgid "" "Parlatype offers automatic speech recognition that is done on " "your computer. No data is sent over the network." msgstr "" #. (itstool) path: note/p #: C/asr.page:20 msgid "" "Parlatype must have been built with PocketSphinx or " "Mozilla DeepSpeech. Please note that those libraries might be not " "available on your platform." msgstr "" #. (itstool) path: note/p #: C/asr.page:25 msgid "" "Parlatype has no built-in text editor. You need the Parlatype " "Extension for LibreOffice to output recognized text." msgstr "" #. (itstool) path: section/title #: C/asr.page:30 msgid "Start speech recognition" msgstr "" #. (itstool) path: section/p #: C/asr.page:32 msgid "" "Select a language model in the Preferences Dialog, Speech recognition tab, see for more details." msgstr "" #. (itstool) path: section/p #: C/asr.page:35 msgid "" "Open the primary menu and click on Automatic transcription. This " "is only available, if you have setup and chosen a language model." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr.page:38 msgctxt "_" msgid "" "external ref='figures/asr-switch-to-asr.png' " "md5='91dc6bffa3b8a3342889d9bfccabc3c8'" msgstr "" #. (itstool) path: section/p #: C/asr.page:40 msgid "" "Now press Play in Parlatype and the recognized speech " "will be printed in LibreOffice, if the Parlatype Extension is " "installed. Output is silent because decoding speed is dependent on your " "machine and may be slower or faster than real-time speech." msgstr "" #. (itstool) path: section/p #: C/asr.page:45 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #: C/asr.page:47 msgid "" "Accuracy depends on many factors like quality of the recording, " "background noise, speaker’s dialect or pronunciation and the speech model " "used. For general transcription you can expect an word error rate between 10 " "and 50 %. Alas this means that in some cases manual transcription from the " "start will be faster than automatic transcription and the following " "correction process." msgstr "" #. (itstool) path: info/desc #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:17 msgid "" "For speech recognition you need a language model: one or more files trained " "with real speech samples. Parlatype supports language models made " "for CMU Sphinx and Mozilla DeepSpeech and ships a couple of language " "model configurations." msgstr "" #. (itstool) path: note/p #: C/asr-setup.page:22 msgid "" "A language model configuration contains meta data describing the " "language model: A name that you can change, the language it was made for, " "speech recognition engine, publisher, license etc. It has a (third party) " "link, where you can download the files. Part of the configuration is the " "base folder, where you have saved the model. Additionally it contains " "various parameters for the plugin which are not shown." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:29 msgid "" "Open the Preferences Dialog and click on the Speech Recognition " "tab. Initially there are no configurations available, click on the Add " "a configuration button." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:33 msgctxt "_" msgid "" "external ref='figures/asr-setup-initial.png' " "md5='31773b99dcbb1ee84e59e119a0bd35c6'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:36 msgid "download" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:37 msgid "unavailable" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:35 msgid "" "If your installation has CMU Sphinx or Mozilla DeepSpeech enabled, you will " "see configurations with a <_:media-1/> symbol. Otherwise you will see only " "configurations with a <_:media-2/> symbol." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:39 msgctxt "_" msgid "" "external ref='figures/asr-setup-downloadable.png' " "md5='6e00b08a60952e8f408bec4a024be2e5'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:42 msgid "settings" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:41 msgid "" "Select a configuration and click on the <_:media-1/> button. There is a " "short description of the model and where you can download it. After " "downloading, you have to set the folder where your download resides. You can " "also change the Display name." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:47 msgctxt "_" msgid "" "external ref='figures/asr-setup-details.png' " "md5='3273410dfb31da8518a64d28af0da7b1'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:50 msgid "selected" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:49 msgid "" "An installed model has no symbol next to it. Double click on the model and " "it will be selected for speech recognition, a <_:media-1/> symbol appears." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:53 msgid "" "Shipped configurations might get obsolete over time. Therefore you can " "import a configuration with the + button. Configurations are text " "files with an .asr ending." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:57 msgid "" "With the - button you can remove a configuration. This will never " "remove downloaded models, only the configuration file." msgstr "" #. (itstool) path: info/desc #: C/media-keys.page:6 msgid "How to control Parlatype with media keys" msgstr "Como controlar o Parlatype com as teclas multimídia" #. (itstool) path: page/title #: C/media-keys.page:14 msgid "Media keys" msgstr "Teclas multimídia" #. (itstool) path: page/p #: C/media-keys.page:16 msgid "" "Parlatype’s basic functions can be controlled with so called " "media keys. Media keys are used system wide to control media " "players and they are working even if the media player is not in focus or in " "the background." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:18 msgid "" "You can change the media keys in GNOME settings. You can use dedicated keys " "from a multimedia keyboard or use any other key or combination of keys." msgstr "" "Você pode mudar as teclas multimídia nas configurações do GNOME. Você pode " "usar as teclas dedicadas de um teclado multimídia ou utilizar qualquer outra " "combinação de teclas." #. (itstool) path: note/p #: C/media-keys.page:21 msgid "" "This will affect other media players, e.g. Totem or " "Rhythmbox, as well." msgstr "" "Isto afetará outros tocadores de mídia, como o Totem ou o " "Rhythmbox." #. (itstool) path: page/p #: C/media-keys.page:24 msgid "Parlatype listens to these key strokes:" msgstr "O Parlatype obedece aos seguintes atalhos:" #. (itstool) path: item/p #: C/media-keys.page:26 msgid "" "Play, Pause, Stop: Each of these keys " "toggles between playing and pause." msgstr "" "Tocar, Pausar, Parar: Cada uma dessas " "teclas mudam entre tocar e pausar." #. (itstool) path: item/p #: C/media-keys.page:27 msgid "" "Rewind, Previous: Each of these keys will jump back " "the time you selected in Preferences." msgstr "" "Voltar, Anterior: Cada uma dessas teclas irão voltar o " "tempo que você selecionou em Preferências." #. (itstool) path: item/p #: C/media-keys.page:28 msgid "" "Fast Forward, Next: Each of these keys will jump ahead " "the time you selected in Preferences." msgstr "" "Avançar, Próxima: Cada uma dessas teclas irão avançar " "o tempo que você selecionou em Preferências." #. (itstool) path: note/p #: C/media-keys.page:32 msgid "" "For detailed instructions how to change keyboard shortcuts in GNOME see the " "official " "documentation." msgstr "" "Para instruções detalhadas de como mudar os atalhos de teclado no GNOME, " "veja a documentação " "oficial." #. (itstool) path: page/p #: C/media-keys.page:35 msgid "" "If you are using a dedicated foot pedal, it should be possible to map the " "foot pedal signals to any of the keys. This is not well tested, however. Any " "feedback regarding foot pedals is welcome." msgstr "" "Se você estiver utilizando um pedal dedicado, deverá ser possível mapear os " "sinais enviados para qualquer uma das teclas. Isto ainda não foi testado. " "Qualquer feedback sobre pedais é bem vindo." parlatype-3.0/help/pt_BR/000077500000000000000000000000001414030451500153105ustar00rootroot00000000000000parlatype-3.0/help/pt_BR/pt_BR.po000066400000000000000000000762021414030451500166650ustar00rootroot00000000000000# Brazilian Portuguese translation for parlatype # Copyright (c) 2020 Rosetta Contributors and Canonical Ltd 2020 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2020. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2021-10-18 21:35+0200\n" "PO-Revision-Date: 2020-05-31 17:30+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-06-18 10:32+0000\n" "X-Generator: Launchpad (build 1cbd0aa39df153c901321817f9b57cf3f232b507)\n" #. Put one translator per line, in the form NAME , YEAR1, YEAR2 msgctxt "_" msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Celio Alves https://launchpad.net/~celio.alves\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " Matheus Reich https://launchpad.net/~matheusr98" #. (itstool) path: info/title #: C/index.page:7 msgctxt "text" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: info/title #: C/index.page:8 msgctxt "link" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: credit/name #: C/index.page:10 C/drag-and-drop.page:8 C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 C/preferences.page:8 C/selections.page:8 #: C/timestamps.page:8 C/asr.page:9 C/asr-setup.page:9 C/media-keys.page:8 msgid "Gabor Karsay" msgstr "Gabor Karsay" #. (itstool) path: info/desc #. (itstool) path: page/p #: C/index.page:14 C/index.page:23 msgid "" "Parlatype is an easy to use media player. Its main purpose is to " "help you transcribing speech." msgstr "" #. (itstool) path: page/title #: C/index.page:18 msgid "<_:media-1/> Parlatype" msgstr "<_:media-1/> Parlatype" #. (itstool) path: page/p #: C/index.page:24 msgid "" "For a quick overview have a look at . Other " "topics are covered below." msgstr "" "Para um rápido resumo, dê uma olhada em . Outros " "tópicos são abordados abaixo." #. (itstool) path: section/title #: C/index.page:27 msgid "Help topics" msgstr "Ajuda dos tópicos" #. (itstool) path: info/desc #: C/drag-and-drop.page:6 msgid "Drop files, file names or timestamps on Parlatype" msgstr "" "Solte arquivos, nomes de arquivos ou carimbos de data e hora no Parlatype" #. (itstool) path: page/title #: C/drag-and-drop.page:14 msgid "Drag and Drop" msgstr "Arrastar e Soltar" #. (itstool) path: page/p #: C/drag-and-drop.page:16 msgid "" "You can drop files, file names or timestamps on Parlatype’s " "window." msgstr "" "Você pode soltar arquivos, nome de arquivos ou carimbo de data e hora na " "janela do Parlatype." #. (itstool) path: item/p #: C/drag-and-drop.page:19 msgid "" "Files: Drag and drop a file from a file manager, e.g. Files, on " "Parlatype and it will open that file." msgstr "" "Arquivos: Arraste e sole um arquivo de um explorador de arquivos, por " "exemplo Files, no Parlatype e ele irá abrir o arquivo." #. (itstool) path: item/p #: C/drag-and-drop.page:20 msgid "" "File names: Select a file name from a word processor, e.g. LibreOffice, drop the selected text on Parlatype and it will open that " "file. This will always work if the selection contains a full path. If you " "select the name only, Parlatype will look up its full path in the " "list of recent files and open it if it can find it in that list." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:21 msgid "" "Timestamps: You can drag and drop timestamps to Parlatype. Select " "a timestamp from a word processor, e.g. LibreOffice, drop the " "selected text on Parlatype and it will jump to that position." msgstr "" #. (itstool) path: info/desc #. (itstool) path: page/title #: C/first-steps.page:6 C/first-steps.page:14 msgid "First steps with Parlatype" msgstr "Primeiros passos com Parlatype" #. (itstool) path: page/p #: C/first-steps.page:16 msgid "" "Parlatype is an easy to use audio player to help you transcribing " "or annotating recorded speech. You need to run a word processor, e.g. " "LibreOffice, too. Launch Parlatype and open an audio " "file by clicking on the Open button in the upper left corner." msgstr "" "Parlatype é um reprodutor de mídia fácil de usar que te ajuda a " "transcrever ou anotar conversas gravadas. Você precisa executar também um " "editor de texto, como o LibreOffice. Inicie Parlatype " "e abra um arquivo de áudio clicando no botão Abrir no canto " "superior esquerdo." #. (itstool) path: note/p #: C/first-steps.page:19 msgid "You can also drag and drop a file on Parlatype." msgstr "Você pode também arrastar e soltar um arquivo no Parlatype." #. (itstool) path: page/p #: C/first-steps.page:22 msgid "" "In the lower left corner there are the controls with a Play " "button which toggles between play and pause. Whenever you pause, " "Parlatype rewinds a few seconds to make it easier to resume. This " "can be changed in the ." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/first-steps.page:24 msgctxt "_" msgid "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" msgstr "" #. (itstool) path: page/p #: C/first-steps.page:26 msgid "" "The buttons Jump back and Jump forward in the lower " "left corner skip a few seconds back or ahead. The amount of time can be " "changed in the ." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:28 msgid "" "The view scrolls automatically so that the cursor is always visible. You can " "scroll manually by clicking on or dragging the scroll bar or using the " "standard keybindings. Automatic scrolling is stopped then." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:30 msgid "" "To get back to the cursor’s position and let the view scroll automatically " "again, click on the menu button showing the time and then on Go to " "cursor. Clicking on the Play button also turns automatic " "scrolling on." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:32 msgid "" "Clicking in the view with the right mouse button will put the cursor there, " "also holding the right mouse button pressed and moving it. The left mouse " "button is for ." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:34 msgid "" "The speed scale next to the volume button in the lower " "right corner lets you adjust the speed of playback. A value of 1 means " "normal speed, everything lower (down to 0.5) is slower, everything above is " "faster." msgstr "" #. (itstool) path: info/desc #: C/keyboard-shortcuts.page:6 msgid "Standard keyboard shortcuts in Parlatype" msgstr "" #. (itstool) path: page/title #: C/keyboard-shortcuts.page:14 msgid "Keyboard shortcuts" msgstr "Atalhos de teclado" #. (itstool) path: page/p #: C/keyboard-shortcuts.page:16 msgid "" "Keyboard shortcuts for Parlatype control, like Play, " "are described in . Shortcut keys for the window are " "listed below." msgstr "" #. (itstool) path: table/title #: C/keyboard-shortcuts.page:19 msgid "Standard Shortcut keys" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:22 msgid "To Do This" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:23 msgid "Press This" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:28 msgid "Show help" msgstr "Mostrar ajuda" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:29 msgid "F1" msgstr "F1" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:32 msgid "Open file" msgstr "Abrir arquivo" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:33 msgid "Ctrlo" msgstr "Ctrlo" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:36 msgid "Play/Pause" msgstr "Reproduzir/pausar" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:37 msgid "CtrlSpace" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:40 msgid "Go to …" msgstr "Ir para..." #. (itstool) path: td/p #: C/keyboard-shortcuts.page:41 msgid "Ctrlg" msgstr "Ctrlg" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:44 msgid "Jump back" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:45 msgid "CtrlLeft" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:48 msgid "Jump forward" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:49 msgid "CtrlRight" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:52 msgid "Copy timestamp" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:53 msgid "Ctrlc" msgstr "Ctrlc" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:56 msgid "Insert timestamp" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:57 msgid "Ctrlv" msgstr "Ctrlv" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:60 msgid "Zoom in" msgstr "Ampliar" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:61 msgid "Ctrl+" msgstr "Ctrl+" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:64 msgid "Zoom out" msgstr "Reduzir" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:65 msgid "Ctrl-" msgstr "Ctrl-" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:68 msgid "Quit" msgstr "Sair" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:69 msgid "Ctrlq" msgstr "Ctrlq" #. (itstool) path: p/link #: C/legal.xml:5 msgid "Creative Commons Attribution-ShareAlike 4.0 International" msgstr "" #. (itstool) path: license/p #: C/legal.xml:4 msgid "This work is licensed under a <_:link-1/> license." msgstr "Este trabalho está licenciado sob uma licença <_:link-1/>." #. (itstool) path: info/desc #: C/preferences.page:6 msgid "How to customize Parlatype" msgstr "Como personalizar o Parlatype" #. (itstool) path: page/title #: C/preferences.page:14 msgid "Preferences" msgstr "Preferências" #. (itstool) path: page/p #: C/preferences.page:16 msgid "" "To open the preferences dialog click on the primary menu in the headerbar." msgstr "" #. (itstool) path: section/title #: C/preferences.page:21 msgid "Preferences for the waveform" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:23 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:26 msgid "" "Resolution: The resolution of the waveform image is given in pixels per " "second, e.g. the default resolution of 100 means, that one second is shown " "with a width of 100 pixels." msgstr "" #. (itstool) path: item/p #: C/preferences.page:27 msgid "" "Fixed vs. moving cursor: There are two modes, how to follow the cursor. On " "slower systems a moving cursor might be smoother." msgstr "" #. (itstool) path: item/p #: C/preferences.page:28 msgid "Show time scale: Turn the time scale on or off." msgstr "" #. (itstool) path: section/title #: C/preferences.page:33 msgid "Preferences for controls" msgstr "Preferências para controles" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:35 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:38 msgid "" "Jump back on pause: Parlatype will rewind a few seconds on each " "pause, this way you can easier resume typing. Set this value to 0 if you " "don’t want this behaviour." msgstr "" #. (itstool) path: item/p #: C/preferences.page:39 msgid "" "Jump back: Configures how many seconds to skip when the Jump back " "button is pressed." msgstr "" #. (itstool) path: item/p #: C/preferences.page:40 msgid "" "Jump forward: Configures how many seconds to skip when the Jump " "forward button is pressed." msgstr "" #. (itstool) path: item/p #: C/preferences.page:41 msgid "" "Pressing Play at the end of file – Replay file: Whether you want " "to repeat the file at the end. If not, it will replay a few seconds like on " "pause." msgstr "" #. (itstool) path: item/p #: C/preferences.page:42 msgid "" "Pressing Play at the end of selection – Replay selection: Whether " "you want to repeat the selection. If not, it will replay a few seconds like " "on pause." msgstr "" #. (itstool) path: section/title #: C/preferences.page:47 msgid "Preferences for timestamps" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:49 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" msgstr "" #. (itstool) path: section/p #: C/preferences.page:51 msgid "" "These settings affect how Parlatype formats timestamps. If you " "need a certain format in your transcription, you can adjust it here." msgstr "" #. (itstool) path: note/p #: C/preferences.page:52 msgid "" "There are no settings for reading timestamps. Parlatype " "reads and accepts all of these formats." msgstr "" #. (itstool) path: item/p #: C/preferences.page:54 msgid "" "Always show hours and leading zeroes: Whether to show a fixed number of " "digits. Changing any of these values will show an updated example in the " "Example section below." msgstr "" #. (itstool) path: item/p #: C/preferences.page:55 msgid "Precision: Choose between full seconds, 10th seconds or 100th seconds." msgstr "" #. (itstool) path: item/p #: C/preferences.page:56 msgid "" "Fraction separator: Choose between a point or a hyphen to separate fractions " "of a second." msgstr "" #. (itstool) path: item/p #: C/preferences.page:57 msgid "" "Characters around timestamps: Choose between number signs, round brackets, " "square brackets or none." msgstr "" #. (itstool) path: section/title #: C/preferences.page:62 msgid "Preferences for speech recognition" msgstr "Preferências para reconhecimento de fala" #. (itstool) path: note/p #: C/preferences.page:65 msgid "" "This tab is only visible, if speech recognition is enabled in Parlatype." msgstr "" "Esta aba só estará visível se o reconhecimento de fala estiver ativado no " "Parlatype." #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:68 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" msgstr "" #. (itstool) path: section/p #: C/preferences.page:70 msgid "" "Here you can choose which language model to use. If you don’t have a " "language model yet, an assistant will guide you through the process of " "downloading it. You can have as many language models as you need, they can " "be added with the + button." msgstr "" #. (itstool) path: section/p #: C/preferences.page:72 msgid "" "To select a model click on its radio button in the list. If you click just " "on the name, you can see the model’s basic parameters. You could even change " "them, but that’s not recommended." msgstr "" #. (itstool) path: section/p #: C/preferences.page:74 msgid "" "The - button removes a model from the list. The model’s files " "however are not deleted, just the model entry is removed." msgstr "" #. (itstool) path: section/title #: C/preferences.page:80 msgid "Preferences for the window" msgstr "Preferências para a janela" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:82 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:85 msgid "" "Remember size: On start-up Parlatype sets the window size to the " "size it had the last time." msgstr "" #. (itstool) path: item/p #: C/preferences.page:86 msgid "" "Remember position: On start-up Parlatype can position its window " "where you had it when you closed Parlatype last time." msgstr "" "Lembrar posição: Ao iniciar, Parlatype pode posicionar sua janela " "onde estava quando você fechouParlatype pela última vez." #. (itstool) path: item/p #: C/preferences.page:87 msgid "" "Start on top: This will put Parlatype on start-up on top of other " "windows. This might be useful if you are working with a maximized word " "processor and still want to see the Parlatype window." msgstr "" #. (itstool) path: note/p #: C/preferences.page:91 msgid "" "Remember position and Start on top are not available " "on Wayland." msgstr "" #. (itstool) path: info/desc #: C/selections.page:6 msgid "How to play and repeat a selection" msgstr "Como reproduzir e repetir uma seleção" #. (itstool) path: page/title #: C/selections.page:14 msgid "Selections" msgstr "Seleções" #. (itstool) path: page/p #: C/selections.page:16 msgid "" "You can select a piece of the waveform with the mouse. Next time you press " "Play, it will play the selection only. When it is finished and " "you press Play again, it will loop the selection once." msgstr "" #. (itstool) path: note/p #: C/selections.page:18 msgid "" "When in selection mode, you can not exit the selection anymore until you " "deselect it." msgstr "" #. (itstool) path: page/p #: C/selections.page:20 msgid "" "Selections can be made with the mouse (or pointer device) with a left click, " "holding the mouse button and dragging the pointer. If you click with " "Shift key pressed, an already existing selection will be enlarged " "to that point." msgstr "" #. (itstool) path: page/p #: C/selections.page:22 msgid "" "To deselect click once with the left button into the waveform. If the " "waveform has keyboard focus, you can press Escape." msgstr "" #. (itstool) path: info/desc #: C/timestamps.page:6 msgid "Set and go to timestamps" msgstr "" #. (itstool) path: page/title #: C/timestamps.page:14 msgid "Timestamps" msgstr "" #. (itstool) path: page/p #: C/timestamps.page:16 msgid "Timestamps help you to navigate in your transcription." msgstr "" #. (itstool) path: note/p #: C/timestamps.page:19 msgid "" "Timestamps can look like this: #03:45.2#. You can select them with or " "without the number signs." msgstr "" #. (itstool) path: page/p #: C/timestamps.page:22 msgid "" "Parlatype can produce different timestamp formats, they can be " "set in ." msgstr "" #. (itstool) path: section/title #: C/timestamps.page:25 msgid "Drag and drop" msgstr "" #. (itstool) path: section/p #: C/timestamps.page:27 msgid "" "If you select the timestamp in the word processor, you can drag and drop it " "on the Parlatype window and it will go to that position. This is " "also possible the other way round: Drag the time label from Parlatype to a word processor and drop it there to insert it." msgstr "" #. (itstool) path: section/title #: C/timestamps.page:31 msgid "Using the clipboard" msgstr "" #. (itstool) path: section/p #: C/timestamps.page:33 msgid "" "Clicking on the menu button that is showing the current time you can " "Copy time to clipboard or Go to time in clipboard." msgstr "" #. (itstool) path: section/p #: C/timestamps.page:35 msgid "" "This can also be done with keyboard shortcuts. First make sure, the " "Parlatype window has focus. With the key sequence " "Ctrlc the current timestamp is copied " "to the clipboard. Changing to the word processor you can insert now the " "timestamp in your transcription." msgstr "" #. (itstool) path: section/p #: C/timestamps.page:36 msgid "" "To go to a timestamp position, copy the timestamp in the word processor to " "the clipboard. Once you have changed focus to Parlatype press " "Ctrlv." msgstr "" #. (itstool) path: info/desc #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "" #. (itstool) path: page/title #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "" #. (itstool) path: page/p #: C/asr.page:17 msgid "" "Parlatype offers automatic speech recognition that is done on " "your computer. No data is sent over the network." msgstr "" #. (itstool) path: note/p #: C/asr.page:20 msgid "" "Parlatype must have been built with PocketSphinx or " "Mozilla DeepSpeech. Please note that those libraries might be not " "available on your platform." msgstr "" #. (itstool) path: note/p #: C/asr.page:25 msgid "" "Parlatype has no built-in text editor. You need the Parlatype " "Extension for LibreOffice to output recognized text." msgstr "" #. (itstool) path: section/title #: C/asr.page:30 msgid "Start speech recognition" msgstr "" #. (itstool) path: section/p #: C/asr.page:32 msgid "" "Select a language model in the Preferences Dialog, Speech recognition tab, see for more details." msgstr "" #. (itstool) path: section/p #: C/asr.page:35 msgid "" "Open the primary menu and click on Automatic transcription. This " "is only available, if you have setup and chosen a language model." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr.page:38 msgctxt "_" msgid "" "external ref='figures/asr-switch-to-asr.png' " "md5='91dc6bffa3b8a3342889d9bfccabc3c8'" msgstr "" #. (itstool) path: section/p #: C/asr.page:40 msgid "" "Now press Play in Parlatype and the recognized speech " "will be printed in LibreOffice, if the Parlatype Extension is " "installed. Output is silent because decoding speed is dependent on your " "machine and may be slower or faster than real-time speech." msgstr "" #. (itstool) path: section/p #: C/asr.page:45 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #: C/asr.page:47 msgid "" "Accuracy depends on many factors like quality of the recording, " "background noise, speaker’s dialect or pronunciation and the speech model " "used. For general transcription you can expect an word error rate between 10 " "and 50 %. Alas this means that in some cases manual transcription from the " "start will be faster than automatic transcription and the following " "correction process." msgstr "" #. (itstool) path: info/desc #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:17 msgid "" "For speech recognition you need a language model: one or more files trained " "with real speech samples. Parlatype supports language models made " "for CMU Sphinx and Mozilla DeepSpeech and ships a couple of language " "model configurations." msgstr "" #. (itstool) path: note/p #: C/asr-setup.page:22 msgid "" "A language model configuration contains meta data describing the " "language model: A name that you can change, the language it was made for, " "speech recognition engine, publisher, license etc. It has a (third party) " "link, where you can download the files. Part of the configuration is the " "base folder, where you have saved the model. Additionally it contains " "various parameters for the plugin which are not shown." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:29 msgid "" "Open the Preferences Dialog and click on the Speech Recognition " "tab. Initially there are no configurations available, click on the Add " "a configuration button." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:33 msgctxt "_" msgid "" "external ref='figures/asr-setup-initial.png' " "md5='31773b99dcbb1ee84e59e119a0bd35c6'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:36 msgid "download" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:37 msgid "unavailable" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:35 msgid "" "If your installation has CMU Sphinx or Mozilla DeepSpeech enabled, you will " "see configurations with a <_:media-1/> symbol. Otherwise you will see only " "configurations with a <_:media-2/> symbol." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:39 msgctxt "_" msgid "" "external ref='figures/asr-setup-downloadable.png' " "md5='6e00b08a60952e8f408bec4a024be2e5'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:42 msgid "settings" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:41 msgid "" "Select a configuration and click on the <_:media-1/> button. There is a " "short description of the model and where you can download it. After " "downloading, you have to set the folder where your download resides. You can " "also change the Display name." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:47 msgctxt "_" msgid "" "external ref='figures/asr-setup-details.png' " "md5='3273410dfb31da8518a64d28af0da7b1'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:50 msgid "selected" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:49 msgid "" "An installed model has no symbol next to it. Double click on the model and " "it will be selected for speech recognition, a <_:media-1/> symbol appears." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:53 msgid "" "Shipped configurations might get obsolete over time. Therefore you can " "import a configuration with the + button. Configurations are text " "files with an .asr ending." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:57 msgid "" "With the - button you can remove a configuration. This will never " "remove downloaded models, only the configuration file." msgstr "" #. (itstool) path: info/desc #: C/media-keys.page:6 msgid "How to control Parlatype with media keys" msgstr "" #. (itstool) path: page/title #: C/media-keys.page:14 msgid "Media keys" msgstr "" #. (itstool) path: page/p #: C/media-keys.page:16 msgid "" "Parlatype’s basic functions can be controlled with so called " "media keys. Media keys are used system wide to control media " "players and they are working even if the media player is not in focus or in " "the background." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:18 msgid "" "You can change the media keys in GNOME settings. You can use dedicated keys " "from a multimedia keyboard or use any other key or combination of keys." msgstr "" #. (itstool) path: note/p #: C/media-keys.page:21 msgid "" "This will affect other media players, e.g. Totem or " "Rhythmbox, as well." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:24 msgid "Parlatype listens to these key strokes:" msgstr "" #. (itstool) path: item/p #: C/media-keys.page:26 msgid "" "Play, Pause, Stop: Each of these keys " "toggles between playing and pause." msgstr "" #. (itstool) path: item/p #: C/media-keys.page:27 msgid "" "Rewind, Previous: Each of these keys will jump back " "the time you selected in Preferences." msgstr "" #. (itstool) path: item/p #: C/media-keys.page:28 msgid "" "Fast Forward, Next: Each of these keys will jump ahead " "the time you selected in Preferences." msgstr "" #. (itstool) path: note/p #: C/media-keys.page:32 msgid "" "For detailed instructions how to change keyboard shortcuts in GNOME see the " "official " "documentation." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:35 msgid "" "If you are using a dedicated foot pedal, it should be possible to map the " "foot pedal signals to any of the keys. This is not well tested, however. Any " "feedback regarding foot pedals is welcome." msgstr "" parlatype-3.0/help/ru/000077500000000000000000000000001414030451500147305ustar00rootroot00000000000000parlatype-3.0/help/ru/ru.po000066400000000000000000001704461414030451500157320ustar00rootroot00000000000000# Russian translation for parlatype # Copyright (c) 2020 Rosetta Contributors and Canonical Ltd 2020 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2020. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2021-10-18 21:35+0200\n" "PO-Revision-Date: 2020-05-31 17:33+0000\n" "Last-Translator: Gabor Karsay \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" "X-Launchpad-Export-Date: 2020-06-18 10:32+0000\n" "X-Generator: Launchpad (build 1cbd0aa39df153c901321817f9b57cf3f232b507)\n" #. Put one translator per line, in the form NAME , YEAR1, YEAR2 msgctxt "_" msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Aleksey Kabanov https://launchpad.net/~ak099\n" " Gabor Karsay https://launchpad.net/~gabor-karsay" #. (itstool) path: info/title #: C/index.page:7 msgctxt "text" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: info/title #: C/index.page:8 msgctxt "link" msgid "Parlatype" msgstr "Parlatype" #. (itstool) path: credit/name #: C/index.page:10 C/drag-and-drop.page:8 C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 C/preferences.page:8 C/selections.page:8 #: C/timestamps.page:8 C/asr.page:9 C/asr-setup.page:9 C/media-keys.page:8 msgid "Gabor Karsay" msgstr "Gabor Karsay" #. (itstool) path: info/desc #. (itstool) path: page/p #: C/index.page:14 C/index.page:23 msgid "" "Parlatype is an easy to use media player. Its main purpose is to " "help you transcribing speech." msgstr "" "Parlatype — простой в использовании медиапроигрыватель. Его " "основным назначением является помощь в транскрибировании речи." #. (itstool) path: page/title #: C/index.page:18 msgid "<_:media-1/> Parlatype" msgstr "<_:media-1/> Parlatype" #. (itstool) path: page/p #: C/index.page:24 msgid "" "For a quick overview have a look at . Other " "topics are covered below." msgstr "" "Для быстрого знакомства смотрите . Другие темы " "приведены ниже." #. (itstool) path: section/title #: C/index.page:27 msgid "Help topics" msgstr "Темы справки" #. (itstool) path: info/desc #: C/drag-and-drop.page:6 msgid "Drop files, file names or timestamps on Parlatype" msgstr "Перетаскивание файлов, имён файлов или меток времени в Parlatype" #. (itstool) path: page/title #: C/drag-and-drop.page:14 msgid "Drag and Drop" msgstr "Перетаскивание" #. (itstool) path: page/p #: C/drag-and-drop.page:16 msgid "" "You can drop files, file names or timestamps on Parlatype’s " "window." msgstr "" "Вы можете перетаскивать файлы, имена файлов или метки времени в окно " "Parlatype." #. (itstool) path: item/p #: C/drag-and-drop.page:19 msgid "" "Files: Drag and drop a file from a file manager, e.g. Files, on " "Parlatype and it will open that file." msgstr "" "Файлы: перетащите файл из файлового менеджера, например Файлы в " "Parlatype, и он откроет этот файл." #. (itstool) path: item/p #: C/drag-and-drop.page:20 msgid "" "File names: Select a file name from a word processor, e.g. LibreOffice, drop the selected text on Parlatype and it will open that " "file. This will always work if the selection contains a full path. If you " "select the name only, Parlatype will look up its full path in the " "list of recent files and open it if it can find it in that list." msgstr "" "Имена файлов: выделите имя файла в текстовом редакторе, например, из " "LibreOffice, перетащите выделенный текст в Parlatype, " "и он откроет этот файл. Это работает, если выделение содержит полный путь к " "файлу. Если выделено только имя, Parlatype поищет полный путь в " "списке недавно открывавшихся файлов, и откроет файл, если найдёт его в этом " "списке." #. (itstool) path: item/p #: C/drag-and-drop.page:21 msgid "" "Timestamps: You can drag and drop timestamps to Parlatype. Select " "a timestamp from a word processor, e.g. LibreOffice, drop the " "selected text on Parlatype and it will jump to that position." msgstr "" "Метки времени: вы можете перетаскивать метки времени в окно Parlatype. Выделите метку времени в текстовом редакторе, например, из " "LibreOffice, перетащите выделенный текст в Parlatype, " "и программа перейдёт в соответствующую позицию аудиозаписи." #. (itstool) path: info/desc #. (itstool) path: page/title #: C/first-steps.page:6 C/first-steps.page:14 msgid "First steps with Parlatype" msgstr "Первые шаги в Parlatype" #. (itstool) path: page/p #: C/first-steps.page:16 msgid "" "Parlatype is an easy to use audio player to help you transcribing " "or annotating recorded speech. You need to run a word processor, e.g. " "LibreOffice, too. Launch Parlatype and open an audio " "file by clicking on the Open button in the upper left corner." msgstr "" "Parlatype — простой в использовании аудиоплеер, помогающий в " "транскрибировании или аннотации аудиозаписей речи. Вам также понадобится " "запустить текстовый редактор, например, из LibreOffice. " "Запустите Parlatype и откройте аудиофайл щелчком на кнопке " "Открыть в верхнем левом углу." #. (itstool) path: note/p #: C/first-steps.page:19 msgid "You can also drag and drop a file on Parlatype." msgstr "Можно также просто перетащить файл в окно Parlatype." #. (itstool) path: page/p #: C/first-steps.page:22 msgid "" "In the lower left corner there are the controls with a Play " "button which toggles between play and pause. Whenever you pause, " "Parlatype rewinds a few seconds to make it easier to resume. This " "can be changed in the ." msgstr "" "В левом нижнем углу расположены элементы управления с кнопкой Пуск, переключающей режимы воспроизведения и паузы. При постановке на паузу, " "Parlatype перематывает запись на несколько секунд назад, чтобы " "было проще продолжить транскрибацию. Время перемотки можно изменить в " "разделе ." #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/first-steps.page:24 msgctxt "_" msgid "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" msgstr "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" #. (itstool) path: page/p #: C/first-steps.page:26 msgid "" "The buttons Jump back and Jump forward in the lower " "left corner skip a few seconds back or ahead. The amount of time can be " "changed in the ." msgstr "" "Кнопки Перемотать назад и Перемотать вперёд в левом " "нижнем углу перематывают на несколько секунд назад или вперёд. " "Продолжительность перемотки можно изменить в разделе ." #. (itstool) path: page/p #: C/first-steps.page:28 msgid "" "The view scrolls automatically so that the cursor is always visible. You can " "scroll manually by clicking on or dragging the scroll bar or using the " "standard keybindings. Automatic scrolling is stopped then." msgstr "" "Рабочая область автоматически прокручивается, чтобы курсор всегда был виден. " "Можно выполнить прокрутку вручную, щёлкнув в нужном месте полосы прокрутки " "или перетащив полозок на ней, либо с помощью стандартных комбинаций клавиш. " "В этом случае автоматическая прокрутка останавливается." #. (itstool) path: page/p #: C/first-steps.page:30 msgid "" "To get back to the cursor’s position and let the view scroll automatically " "again, click on the menu button showing the time and then on Go to " "cursor. Clicking on the Play button also turns automatic " "scrolling on." msgstr "" "Чтобы вернуться в позицию курсора и вновь активировать автоматическую " "прокрутку, щёлкните на кнопке меню, отображающей время, и выберите " "Перейти к курсору. Щелчок на кнопке Пуск также " "включает автоматическую прокрутку." #. (itstool) path: page/p #: C/first-steps.page:32 msgid "" "Clicking in the view with the right mouse button will put the cursor there, " "also holding the right mouse button pressed and moving it. The left mouse " "button is for ." msgstr "" "Щелчок в рабочей области правой кнопкой мыши перемещает курсор в указанную " "позицию, а при перемещении мыши с нажатой правой кнопкой курсор движется " "вслед за указателем мыши. Назначение левой кнопки мыши — ." #. (itstool) path: page/p #: C/first-steps.page:34 msgid "" "The speed scale next to the volume button in the lower " "right corner lets you adjust the speed of playback. A value of 1 means " "normal speed, everything lower (down to 0.5) is slower, everything above is " "faster." msgstr "" "Движок Скорость рядом со кнопкой с изображением динамика в правом нижнем углу позволяет регулировать скорость воспроизведения. " "Значение 1 устанавливает обычную скорость, меньшие значения (вплоть до 0.5) " "замедляют воспроизведение, а большие ускоряют его." #. (itstool) path: info/desc #: C/keyboard-shortcuts.page:6 msgid "Standard keyboard shortcuts in Parlatype" msgstr "Стандартные комбинации клавиш в Parlatype" #. (itstool) path: page/title #: C/keyboard-shortcuts.page:14 msgid "Keyboard shortcuts" msgstr "Комбинации клавиш" #. (itstool) path: page/p #: C/keyboard-shortcuts.page:16 msgid "" "Keyboard shortcuts for Parlatype control, like Play, " "are described in . Shortcut keys for the window are " "listed below." msgstr "" "Комбинации клавиш Parlatype для управления воспроизведением, типа " "Пуск, описаны в разделе . Остальные " "комбинации клавиш перечислены ниже." #. (itstool) path: table/title #: C/keyboard-shortcuts.page:19 msgid "Standard Shortcut keys" msgstr "Стандартные комбинации клавиш" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:22 msgid "To Do This" msgstr "Действие" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:23 msgid "Press This" msgstr "Клавиши" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:28 msgid "Show help" msgstr "Показать справку" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:29 msgid "F1" msgstr "F1" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:32 msgid "Open file" msgstr "Открыть файл" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:33 msgid "Ctrlo" msgstr "Ctrlo" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:36 msgid "Play/Pause" msgstr "Воспроизведение/Пауза" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:37 msgid "CtrlSpace" msgstr "Ctrlпробел" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:40 msgid "Go to …" msgstr "Перейти …" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:41 msgid "Ctrlg" msgstr "Ctrlg" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:44 msgid "Jump back" msgstr "Перемотать назад" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:45 msgid "CtrlLeft" msgstr "Ctrlстрелка влево" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:48 msgid "Jump forward" msgstr "Перемотать вперёд" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:49 msgid "CtrlRight" msgstr "Ctrlстрелка вправо" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:52 msgid "Copy timestamp" msgstr "Копировать метку времени" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:53 msgid "Ctrlc" msgstr "Ctrlc" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:56 msgid "Insert timestamp" msgstr "Вставить метку времени" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:57 msgid "Ctrlv" msgstr "Ctrlv" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:60 msgid "Zoom in" msgstr "Увеличить масштаб" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:61 msgid "Ctrl+" msgstr "Ctrl+" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:64 msgid "Zoom out" msgstr "Уменьшить масштаб" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:65 msgid "Ctrl-" msgstr "Ctrl-" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:68 msgid "Quit" msgstr "Выход" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:69 msgid "Ctrlq" msgstr "Ctrlq" #. (itstool) path: p/link #: C/legal.xml:5 msgid "Creative Commons Attribution-ShareAlike 4.0 International" msgstr "Creative Commons Attribution-ShareAlike 4.0 International" #. (itstool) path: license/p #: C/legal.xml:4 msgid "This work is licensed under a <_:link-1/> license." msgstr "Этот документ распространяется под лицензией <_:link-1/> license." #. (itstool) path: info/desc #: C/preferences.page:6 msgid "How to customize Parlatype" msgstr "Как настроить Parlatype" #. (itstool) path: page/title #: C/preferences.page:14 msgid "Preferences" msgstr "Настройки" #. (itstool) path: page/p #: C/preferences.page:16 msgid "" "To open the preferences dialog click on the primary menu in the headerbar." msgstr "" "Для открытия диалогового окна настроек щёлкните на основном меню в заголовке " "окна." #. (itstool) path: section/title #: C/preferences.page:21 msgid "Preferences for the waveform" msgstr "Настройки графика звука" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:23 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" msgstr "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" #. (itstool) path: item/p #: C/preferences.page:26 msgid "" "Resolution: The resolution of the waveform image is given in pixels per " "second, e.g. the default resolution of 100 means, that one second is shown " "with a width of 100 pixels." msgstr "" "Разрешение: разрешение графика звука задаётся в пикселях на секунду, т.е. по " "умолчанию разрешение 100 означает, что одна секунда звука отображается на " "ширине 100 пикселей графика." #. (itstool) path: item/p #: C/preferences.page:27 msgid "" "Fixed vs. moving cursor: There are two modes, how to follow the cursor. On " "slower systems a moving cursor might be smoother." msgstr "" "Фиксированный или движущийся курсор: существует два режима перемещения " "курсора по графику. На более медленных компьютерах режим движущегося курсора " "может быть более плавным." #. (itstool) path: item/p #: C/preferences.page:28 msgid "Show time scale: Turn the time scale on or off." msgstr "Показать шкалу времени: включение или отключение показа шкалы времени." #. (itstool) path: section/title #: C/preferences.page:33 msgid "Preferences for controls" msgstr "Настройки элементов управления" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:35 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: item/p #: C/preferences.page:38 msgid "" "Jump back on pause: Parlatype will rewind a few seconds on each " "pause, this way you can easier resume typing. Set this value to 0 if you " "don’t want this behaviour." msgstr "" "Перемотка назад на паузе: Parlatype при приостановке " "воспроизведения перематывает аудиозапись на несколько секунд назад, чтобы " "потом было удобнее продолжить транскрибирование. Задайте значение 0, если " "эта перемотка вам не нужна." #. (itstool) path: item/p #: C/preferences.page:39 msgid "" "Jump back: Configures how many seconds to skip when the Jump back " "button is pressed." msgstr "" "Перемотать назад: количество секунд перемотки при нажатии кнопки " "Перемотать назад." #. (itstool) path: item/p #: C/preferences.page:40 msgid "" "Jump forward: Configures how many seconds to skip when the Jump " "forward button is pressed." msgstr "" "Перемотать вперёд: количество секунд перемотки при нажатии кнопки " "Перемотать вперёд." #. (itstool) path: item/p #: C/preferences.page:41 msgid "" "Pressing Play at the end of file – Replay file: Whether you want " "to repeat the file at the end. If not, it will replay a few seconds like on " "pause." msgstr "" "Нажатие Пуск в конце файла – Повторное воспроизведение файла: " "если вы хотите, чтобы файл был повторно воспроизведён с начала. Если нет, то " "будут заново воспроизведены лишь несколько секунд, как при постановке на " "паузу." #. (itstool) path: item/p #: C/preferences.page:42 msgid "" "Pressing Play at the end of selection – Replay selection: Whether " "you want to repeat the selection. If not, it will replay a few seconds like " "on pause." msgstr "" "Нажатие Пуск в конце выделения – Повторное воспроизведение " "выделенного: если вы хотите заново воспроизвести выделение. Если нет, то " "будут заново воспроизведены лишь несколько секунд, как при постановке на " "паузу." #. (itstool) path: section/title #: C/preferences.page:47 msgid "Preferences for timestamps" msgstr "Настройки меток времени" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:49 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" msgstr "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" #. (itstool) path: section/p #: C/preferences.page:51 msgid "" "These settings affect how Parlatype formats timestamps. If you " "need a certain format in your transcription, you can adjust it here." msgstr "" "Эти настройки влияют на форматы меток времени в Parlatype. Если в " "ваших транскрипциях требуется определённый формат меток, то вы можете " "настроить его здесь." #. (itstool) path: note/p #: C/preferences.page:52 msgid "" "There are no settings for reading timestamps. Parlatype " "reads and accepts all of these formats." msgstr "" "Нет настроек для чтения меток времени. Parlatype читает " "и принимает все эти форматы." #. (itstool) path: item/p #: C/preferences.page:54 msgid "" "Always show hours and leading zeroes: Whether to show a fixed number of " "digits. Changing any of these values will show an updated example in the " "Example section below." msgstr "" "Всегда показывать часы и предшествующие нули: всегда отображать " "фиксированное число цифр. Увидеть результат включения этой опции можно в " "разделе Примеры внизу окна." #. (itstool) path: item/p #: C/preferences.page:55 msgid "Precision: Choose between full seconds, 10th seconds or 100th seconds." msgstr "" "Точность: выбор между показом полных секунд, десятых и сотых долей секунды." #. (itstool) path: item/p #: C/preferences.page:56 msgid "" "Fraction separator: Choose between a point or a hyphen to separate fractions " "of a second." msgstr "" "Разделитель дроби: выбор между точкой и дефисом в качестве десятичного " "разделителя долей секунды." #. (itstool) path: item/p #: C/preferences.page:57 msgid "" "Characters around timestamps: Choose between number signs, round brackets, " "square brackets or none." msgstr "" "Символы возле меток времени: решётки (#), круглые скобки, квадратные скобки " "или никаких символов." #. (itstool) path: section/title #: C/preferences.page:62 msgid "Preferences for speech recognition" msgstr "Настройки распознавания речи" #. (itstool) path: note/p #: C/preferences.page:65 msgid "" "This tab is only visible, if speech recognition is enabled in Parlatype." msgstr "" "Эта вкладка видна только когда в Parlatype включено распознавание речи." #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:68 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" msgstr "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" #. (itstool) path: section/p #: C/preferences.page:70 msgid "" "Here you can choose which language model to use. If you don’t have a " "language model yet, an assistant will guide you through the process of " "downloading it. You can have as many language models as you need, they can " "be added with the + button." msgstr "" "Здесь вы можете выбрать, какую языковую модель следует использовать. Если у " "вас ещё нет языковой модели, помощник проведёт вас через процесс её " "загрузки. Можно загрузить любое нужное количество языковых моделей, они " "добавляются с помощью кнопки +." #. (itstool) path: section/p #: C/preferences.page:72 msgid "" "To select a model click on its radio button in the list. If you click just " "on the name, you can see the model’s basic parameters. You could even change " "them, but that’s not recommended." msgstr "" "Чтобы выбрать модель, щёлкните на её радиокнопке в списке. При щелчке на её " "имени вы увидите базовые параметры модели. Вы даже можете изменить их, хотя " "это не рекомендуется." #. (itstool) path: section/p #: C/preferences.page:74 msgid "" "The - button removes a model from the list. The model’s files " "however are not deleted, just the model entry is removed." msgstr "" "Кнопка - убирает модель из списка. Сами файлы модели не " "удаляются, удаляется лишь строка из списка." #. (itstool) path: section/title #: C/preferences.page:80 msgid "Preferences for the window" msgstr "Настройки окна" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:82 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" msgstr "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" #. (itstool) path: item/p #: C/preferences.page:85 msgid "" "Remember size: On start-up Parlatype sets the window size to the " "size it had the last time." msgstr "" "Запомнить размер: при следующем запуске Parlatype восстановит " "запомненный в прошлый раз размер окна." #. (itstool) path: item/p #: C/preferences.page:86 msgid "" "Remember position: On start-up Parlatype can position its window " "where you had it when you closed Parlatype last time." msgstr "" "Запомнить позицию: при следующем запуске окно Parlatype будет " "размещено в том же месте экрана, где оно было закрыто в прошлый раз." #. (itstool) path: item/p #: C/preferences.page:87 msgid "" "Start on top: This will put Parlatype on start-up on top of other " "windows. This might be useful if you are working with a maximized word " "processor and still want to see the Parlatype window." msgstr "" "Запускать поверх других окон: при следующем запуске окно Parlatype будет размещено поверх других окон. Это может быть полезно, если вы " "работаете с развёрнутым во весь экран окном текстового редактора и хотите " "одновременно видеть окно Parlatype." #. (itstool) path: note/p #: C/preferences.page:91 msgid "" "Remember position and Start on top are not available " "on Wayland." msgstr "" "Опции Запомнить позицию и Запускать поверх других окон " "недоступны в Wayland." #. (itstool) path: info/desc #: C/selections.page:6 msgid "How to play and repeat a selection" msgstr "Как воспроизводить и повторять выделенное" #. (itstool) path: page/title #: C/selections.page:14 msgid "Selections" msgstr "Выделение" #. (itstool) path: page/p #: C/selections.page:16 msgid "" "You can select a piece of the waveform with the mouse. Next time you press " "Play, it will play the selection only. When it is finished and " "you press Play again, it will loop the selection once." msgstr "" "Вы можете выделить часть графика звука мышью. При следующем нажатии кнопки " "Пуск будет воспроизведена только выделенная часть. Когда " "воспроизведение завершится и вы нажмёте Пуск снова, выделение " "будет воспроизведено повторно." #. (itstool) path: note/p #: C/selections.page:18 msgid "" "When in selection mode, you can not exit the selection anymore until you " "deselect it." msgstr "" "Из режима воспроизведения выделенного можно выйти, только сняв выделение." #. (itstool) path: page/p #: C/selections.page:20 msgid "" "Selections can be made with the mouse (or pointer device) with a left click, " "holding the mouse button and dragging the pointer. If you click with " "Shift key pressed, an already existing selection will be enlarged " "to that point." msgstr "" "Чтобы сделать выделение, нажмите левую кнопку мыши, и перемещайте мышь, " "удерживая кнопку нажатой. Если вы щёлкнете левой кнопкой при нажатой клавише " "Shift, то уже существующее выделение будет расширено до того " "места, на котором выполнен щелчок." #. (itstool) path: page/p #: C/selections.page:22 msgid "" "To deselect click once with the left button into the waveform. If the " "waveform has keyboard focus, you can press Escape." msgstr "" "Для снятия выделения щёлкните левой кнопкой в любом месте графика звука. " "Если фокус клавиатурного ввода находится в графике звука, то можно также " "нажать клавишу Escape." #. (itstool) path: info/desc #: C/timestamps.page:6 msgid "Set and go to timestamps" msgstr "Установка меток времени и переход к ним" #. (itstool) path: page/title #: C/timestamps.page:14 msgid "Timestamps" msgstr "Метки времени" #. (itstool) path: page/p #: C/timestamps.page:16 msgid "Timestamps help you to navigate in your transcription." msgstr "Метки времени помогают перемещаться по вашей транскрипции." #. (itstool) path: note/p #: C/timestamps.page:19 msgid "" "Timestamps can look like this: #03:45.2#. You can select them with or " "without the number signs." msgstr "" "Метки времени имеют вид наподобие: #03:45.2#. Вы можете выбрать формат меток " "с символами решётки или без них." #. (itstool) path: page/p #: C/timestamps.page:22 msgid "" "Parlatype can produce different timestamp formats, they can be " "set in ." msgstr "" "Parlatype может создавать метки времени в нескольких форматах, " "нужный можно выбрать в окне ." #. (itstool) path: section/title #: C/timestamps.page:25 msgid "Drag and drop" msgstr "Перетаскивание" #. (itstool) path: section/p #: C/timestamps.page:27 msgid "" "If you select the timestamp in the word processor, you can drag and drop it " "on the Parlatype window and it will go to that position. This is " "also possible the other way round: Drag the time label from Parlatype to a word processor and drop it there to insert it." msgstr "" "Выделенную в текстовом редакторе метку времени можно перетащить в окно " "Parlatype, и программа перейдёт к соответствующей позиции в " "аудиофайле. Можно сделать и наоборот: перетащить метку времени из " "Parlatype в текстовый редактор, чтобы вставить её туда." #. (itstool) path: section/title #: C/timestamps.page:31 msgid "Using the clipboard" msgstr "Использование буфера обмена" #. (itstool) path: section/p #: C/timestamps.page:33 msgid "" "Clicking on the menu button that is showing the current time you can " "Copy time to clipboard or Go to time in clipboard." msgstr "" "Щёлкнув на кнопке меню с временем, можно Копировать время в буфер " "обмена или Перейти к времени в буфере обмена." #. (itstool) path: section/p #: C/timestamps.page:35 msgid "" "This can also be done with keyboard shortcuts. First make sure, the " "Parlatype window has focus. With the key sequence " "Ctrlc the current timestamp is copied " "to the clipboard. Changing to the word processor you can insert now the " "timestamp in your transcription." msgstr "" "Это можно сделать и с помощью комбинаций клавиш. Сначала убедитесь, что " "фокус ввода находится в окне Parlatype . Комбинация клавиш " "Ctrlc копирует текущую метку времени " "в буфер обмена. Переключившись в текстовый редактор, вы сможете вставить " "скопированную метку в вашу транскрипцию." #. (itstool) path: section/p #: C/timestamps.page:36 msgid "" "To go to a timestamp position, copy the timestamp in the word processor to " "the clipboard. Once you have changed focus to Parlatype press " "Ctrlv." msgstr "" "Для перехода к позиции, соответствующей метке времени, скопируйте метку из " "текстового редактора в буфер обмена. Переключившись в окно Parlatype, нажмите Ctrlv." #. (itstool) path: info/desc #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "Позвольте Parlatype выполнить часть работы по транскрибации" #. (itstool) path: page/title #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "Автоматическое распознавание речи" #. (itstool) path: page/p #: C/asr.page:17 #, fuzzy msgid "" "Parlatype offers automatic speech recognition that is done on " "your computer. No data is sent over the network." msgstr "" "Parlatype предоставляет возможность автоматического распознавания " "речи компьютером. При этом по сети не передаются никакие данные. Учтите, что " "автоматическая транскрибация пока ещё далека от совершенства, после неё " "всегда требуется корректировка вручную." #. (itstool) path: note/p #: C/asr.page:20 msgid "" "Parlatype must have been built with PocketSphinx or " "Mozilla DeepSpeech. Please note that those libraries might be not " "available on your platform." msgstr "" #. (itstool) path: note/p #: C/asr.page:25 msgid "" "Parlatype has no built-in text editor. You need the Parlatype " "Extension for LibreOffice to output recognized text." msgstr "" #. (itstool) path: section/title #: C/asr.page:30 msgid "Start speech recognition" msgstr "Запуск распознавания речи" #. (itstool) path: section/p #: C/asr.page:32 msgid "" "Select a language model in the Preferences Dialog, Speech recognition tab, see for more details." msgstr "" #. (itstool) path: section/p #: C/asr.page:35 msgid "" "Open the primary menu and click on Automatic transcription. This " "is only available, if you have setup and chosen a language model." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr.page:38 #, fuzzy msgctxt "_" msgid "" "external ref='figures/asr-switch-to-asr.png' " "md5='91dc6bffa3b8a3342889d9bfccabc3c8'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: section/p #: C/asr.page:40 #, fuzzy msgid "" "Now press Play in Parlatype and the recognized speech " "will be printed in LibreOffice, if the Parlatype Extension is " "installed. Output is silent because decoding speed is dependent on your " "machine and may be slower or faster than real-time speech." msgstr "" "Теперь нажмите Пуск в Parlatype и распознаваемая речь " "будет выводиться в окно редактора. Вывод беззвучен, так как скорость зависит " "от мощности компьютера и может быть медленнее или быстрее, чем речь в " "реальном времени." #. (itstool) path: section/p #: C/asr.page:45 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" "Вывод не содержит пунктуации и не учитывает регистра букв, вам придётся " "поправить всё это вручную." #. (itstool) path: note/p #: C/asr.page:47 #, fuzzy msgid "" "Accuracy depends on many factors like quality of the recording, " "background noise, speaker’s dialect or pronunciation and the speech model " "used. For general transcription you can expect an word error rate between 10 " "and 50 %. Alas this means that in some cases manual transcription from the " "start will be faster than automatic transcription and the following " "correction process." msgstr "" "Точность зависит от многих факторов, таких как качество записи, " "фоновые шумы, акцент или особенности произношения говорящего, а также " "используемая речевая модель. Для типовой транскрибации можно ожидать " "содержание ошибок в диапазоне от 10 до 50 %. К сожалению, это означает, что " "в некоторых случаях транскрибирование полностью вручную окажется быстрее, " "чем автоматическое с последующей коррекцией ошибок." #. (itstool) path: info/desc #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "Настройка автоматического транскрибирования речи" #. (itstool) path: page/title #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "Настройка автоматического распознавания речи" #. (itstool) path: page/p #: C/asr-setup.page:17 msgid "" "For speech recognition you need a language model: one or more files trained " "with real speech samples. Parlatype supports language models made " "for CMU Sphinx and Mozilla DeepSpeech and ships a couple of language " "model configurations." msgstr "" #. (itstool) path: note/p #: C/asr-setup.page:22 msgid "" "A language model configuration contains meta data describing the " "language model: A name that you can change, the language it was made for, " "speech recognition engine, publisher, license etc. It has a (third party) " "link, where you can download the files. Part of the configuration is the " "base folder, where you have saved the model. Additionally it contains " "various parameters for the plugin which are not shown." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:29 msgid "" "Open the Preferences Dialog and click on the Speech Recognition " "tab. Initially there are no configurations available, click on the Add " "a configuration button." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:33 #, fuzzy msgctxt "_" msgid "" "external ref='figures/asr-setup-initial.png' " "md5='31773b99dcbb1ee84e59e119a0bd35c6'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: media/span #: C/asr-setup.page:36 msgid "download" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:37 msgid "unavailable" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:35 msgid "" "If your installation has CMU Sphinx or Mozilla DeepSpeech enabled, you will " "see configurations with a <_:media-1/> symbol. Otherwise you will see only " "configurations with a <_:media-2/> symbol." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:39 #, fuzzy msgctxt "_" msgid "" "external ref='figures/asr-setup-downloadable.png' " "md5='6e00b08a60952e8f408bec4a024be2e5'" msgstr "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" #. (itstool) path: media/span #: C/asr-setup.page:42 msgid "settings" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:41 msgid "" "Select a configuration and click on the <_:media-1/> button. There is a " "short description of the model and where you can download it. After " "downloading, you have to set the folder where your download resides. You can " "also change the Display name." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:47 #, fuzzy msgctxt "_" msgid "" "external ref='figures/asr-setup-details.png' " "md5='3273410dfb31da8518a64d28af0da7b1'" msgstr "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" #. (itstool) path: media/span #: C/asr-setup.page:50 msgid "selected" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:49 msgid "" "An installed model has no symbol next to it. Double click on the model and " "it will be selected for speech recognition, a <_:media-1/> symbol appears." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:53 msgid "" "Shipped configurations might get obsolete over time. Therefore you can " "import a configuration with the + button. Configurations are text " "files with an .asr ending." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:57 msgid "" "With the - button you can remove a configuration. This will never " "remove downloaded models, only the configuration file." msgstr "" #. (itstool) path: info/desc #: C/media-keys.page:6 msgid "How to control Parlatype with media keys" msgstr "Как управлять Parlatype с помощью медиаклавиш" #. (itstool) path: page/title #: C/media-keys.page:14 msgid "Media keys" msgstr "Мультимедийные клавиши" #. (itstool) path: page/p #: C/media-keys.page:16 msgid "" "Parlatype’s basic functions can be controlled with so called " "media keys. Media keys are used system wide to control media " "players and they are working even if the media player is not in focus or in " "the background." msgstr "" "Основными функциями Parlatype можно управлять с помощью так " "называемых мультимедийных клавиш. Это общесистемные клавиши для " "управления мультимедийными проигрывателями, которые работают даже если окно " "медиапроигрывателя не имеет фокуса или он работает в фоновом режиме." #. (itstool) path: page/p #: C/media-keys.page:18 msgid "" "You can change the media keys in GNOME settings. You can use dedicated keys " "from a multimedia keyboard or use any other key or combination of keys." msgstr "" "Вы можете изменить мультимедийные клавиши в настройках GNOME. Можно " "использовать в их качестве специальные клавиши на мультимедийных " "клавиатурах, либо назначить какие-то другие клавиши или комбинации клавиш." #. (itstool) path: note/p #: C/media-keys.page:21 msgid "" "This will affect other media players, e.g. Totem or " "Rhythmbox, as well." msgstr "" "Это изменение повлияет также на другие медиапроигрыватели, например " "Totem или Rhythmbox." #. (itstool) path: page/p #: C/media-keys.page:24 msgid "Parlatype listens to these key strokes:" msgstr "Parlatype реагирует на следующие типы клавиш:" #. (itstool) path: item/p #: C/media-keys.page:26 msgid "" "Play, Pause, Stop: Each of these keys " "toggles between playing and pause." msgstr "" "Play, Pause, Stop: каждая из них " "переключает между воспроизведением и паузой." #. (itstool) path: item/p #: C/media-keys.page:27 msgid "" "Rewind, Previous: Each of these keys will jump back " "the time you selected in Preferences." msgstr "" "Rewind, Previous: каждая из этих клавиш перематывает " "на назад на количество секунд, заданное в настройках." #. (itstool) path: item/p #: C/media-keys.page:28 msgid "" "Fast Forward, Next: Each of these keys will jump ahead " "the time you selected in Preferences." msgstr "" "Fast Forward, Next: каждая из этих клавиш перематывает " "вперёд на количество секунд, заданное в настройках." #. (itstool) path: note/p #: C/media-keys.page:32 msgid "" "For detailed instructions how to change keyboard shortcuts in GNOME see the " "official " "documentation." msgstr "" "За подробными инструкциями по изменению комбинаций клавиш в GNOME обратитесь " "к официальной " "документации." #. (itstool) path: page/p #: C/media-keys.page:35 msgid "" "If you are using a dedicated foot pedal, it should be possible to map the " "foot pedal signals to any of the keys. This is not well tested, however. Any " "feedback regarding foot pedals is welcome." msgstr "" "Если вы используете специальную ножную педаль, она должна уметь " "преобразовывать сигналы педали в нажатия клавиш. Это пока не очень хорошо " "оттестировано. Приветствуются любые сообщения о проблемах, касающихся ножных " "педалей." #~ msgid "" #~ "Automatic speech recognition is disabled by default. In order to try it, " #~ "you have run Parlatype with this parameter:" #~ msgstr "" #~ "Автоматическое распознавание речи по умолчанию отключено. Чтобы " #~ "попробовать её, запустите Parlatype со следующим параметром:" #~ msgid "" #~ "Open the primary menu and click on Automatic transcription. If " #~ "you don’t have a language model yet, an assistant will guide you in that " #~ "process (see ). Otherwise a dialog will pop up " #~ "asking you to give focus to a word processor. Any word processor with " #~ "support for accessibility should work, like LibreOffice or " #~ "Gedit." #~ msgstr "" #~ "Откройте главное меню и выберите Автоматическая транскрибация. " #~ "Если у вас ещё нет языковой модели, помощник сопроводит вас в этом " #~ "процессе (см. ). В противном случае откроется " #~ "диалоговое окно, которое попроси перевести фокус ввода в текстовый " #~ "редактор. Должен подойти любой текстовый редактор с поддержкой " #~ "специальных возможностей, например, текстовый процессор из " #~ "LibreOffice или редактор Gedit." #~ msgid "" #~ "If no word processor is recognized you can use an internal textpad as a " #~ "fallback solution. To use that textpad start Parlatype with " #~ "the textpad option: parlatype --textpad." #~ msgstr "" #~ "Если ни один из имеющихся у вас текстовых редакторов не подоходит, можете " #~ "воспользоваться встроенным текстовым редактором. Для этого запустите " #~ "Parlatype с параметром: parlatype --textpad." #~ msgid "" #~ "Parlatype doesn’t ship the language model needed for speech " #~ "recognition. You will have to download it. There is an assistant that " #~ "guides you through that process." #~ msgstr "" #~ "Parlatype не поставляется с языковыми моделями, необходимыми " #~ "для распознавания речи. Вам нужно будет загрузить их. В программе имеется " #~ "помощник, который проведёт вас через этот процесс." #~ msgid "" #~ "The assistant can be started either from the Preferences dialog, tab " #~ "Speech recognition or – if you have no setup yet – from the " #~ "primary menu, Automatic transcription." #~ msgstr "" #~ "Помощник запускается либо из диалогового окна настроек (вкладка " #~ "Распознавание речи), либо – если вы ещё не настраивали " #~ "распознавание – из главного меню, пункт Автоматическое " #~ "транскрибирование." #~ msgid "" #~ "It asks you to download a speech model. The speech recognition engine " #~ "used is CMU Sphinx. You can download models suitable for CMU Sphinx for " #~ "example from CMU Sphinx’ sourceforge " #~ "repository. It has models for some of the most widespread " #~ "languages." #~ msgstr "" #~ "Он попросит загрузить речевую модель. В качестве движка распознавания " #~ "речи используется CMU Sphinx. Подходящие для CMU Sphinx можно загрузить, " #~ "например, из sourceforge-репозитория CMU " #~ "Sphinx. Там содержатся модели для большинства основных языков." #~ msgid "" #~ "If it’s compressed, uncompress the model. Save it to a folder where it " #~ "can stay. Parlatype doesn’t copy the model internally." #~ msgstr "" #~ "Если модель сжата, распакуйте её. Сохраните её в нужную папку. Parlatype " #~ "не копирует модели самостоятельно." #~ msgid "" #~ "Usually the assistant will find all the files needed and you just have to " #~ "give this configuration a name for your own reference. You can have " #~ "several configurations, e.g. for different languages." #~ msgstr "" #~ "Обычно помощник находит все нужные файлы, и вам останется лишь дать имя " #~ "этой конфигурации для собственного удобства. Можно создать несколько " #~ "конфигураций, например, для нескольких языков." #~ msgid "" #~ "If the assistant doesn’t find all the components or finds more than " #~ "expected, it will ask you to specify their location or to choose between " #~ "them. The next sections explains those components." #~ msgstr "" #~ "Если помощник не найдёт все компоненты или найдёт больше ожидаемого, он " #~ "попросит указать их местоположение или выбрать нужные из имеющихся. В " #~ "следующем разделе описываются эти компоненты." #~ msgid "Models" #~ msgstr "Модели" #~ msgid "" #~ "A model consists of a so called acoustic and language model and a " #~ "dictionary:" #~ msgstr "" #~ "Модель состоит из так называемых акустической и языковой модели и словаря:" #~ msgid "Acoustic model" #~ msgstr "Акустическая модель" #~ msgid "" #~ "It consists of several files usually in their own folder: feat." #~ "params, mdef, means and some others." #~ msgstr "" #~ "Она состоит из нескольких файлов, обычно в их собственной папке: " #~ "feat.params, mdef, means и " #~ "некоторые другие." #~ msgid "Language model" #~ msgstr "Языковая модель" #~ msgid "" #~ "Parlatype needs a binary language model. That’s a single file " #~ "with the extension .lm.bin. Models can have several language " #~ "models. They have often one for high quality and one for low quality " #~ "recordings. Typical low quality recordings are from telephones with a " #~ "sample rate of 8000 Hz. Those language models have often phone, 8k or similar as part of their file name." #~ msgstr "" #~ "Parlatype требуется двоичная языковая модель. Это один файл с " #~ "расширением .lm.bin. Модели могут иметь несколько языковых " #~ "моделей. Зачастую одна для высококачественных записей и одна для " #~ "низкокачественных. Типичные записи низкого качества — с телефона с " #~ "частотой дискретизации 8000 Гц. Эти языковые модели часто содержат в " #~ "имени файла phone, 8k или что-то подобное." #~ msgid "Dictionary" #~ msgstr "Словарь" #~ msgid "" #~ "Dictionaries have the extension .dict or .dic." #~ msgstr "Словари имеют расширение .dict или .dic." #~ msgid "" #~ "All those elements should be somewhere in the folder selected. It doesn’t " #~ "matter whether there are subfolders or how they are named." #~ msgstr "" #~ "Все эти элементы должны находиться где-то в отдельной папке. Не имеет " #~ "значения, есть ли в ней вложенные папки, и как они называются." parlatype-3.0/help/sk/000077500000000000000000000000001414030451500147175ustar00rootroot00000000000000parlatype-3.0/help/sk/sk.po000066400000000000000000000721231414030451500157010ustar00rootroot00000000000000# Slovak translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2021-10-18 21:35+0200\n" "PO-Revision-Date: 2017-11-23 21:21+0000\n" "Last-Translator: Launchpad Translations Administrators \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" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #. Put one translator per line, in the form NAME , YEAR1, YEAR2 msgctxt "_" msgid "translator-credits" msgstr "" #. (itstool) path: info/title #: C/index.page:7 msgctxt "text" msgid "Parlatype" msgstr "" #. (itstool) path: info/title #: C/index.page:8 msgctxt "link" msgid "Parlatype" msgstr "" #. (itstool) path: credit/name #: C/index.page:10 C/drag-and-drop.page:8 C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 C/preferences.page:8 C/selections.page:8 #: C/timestamps.page:8 C/asr.page:9 C/asr-setup.page:9 C/media-keys.page:8 msgid "Gabor Karsay" msgstr "" #. (itstool) path: info/desc #. (itstool) path: page/p #: C/index.page:14 C/index.page:23 msgid "" "Parlatype is an easy to use media player. Its main purpose is to " "help you transcribing speech." msgstr "" #. (itstool) path: page/title #: C/index.page:18 msgid "<_:media-1/> Parlatype" msgstr "" #. (itstool) path: page/p #: C/index.page:24 msgid "" "For a quick overview have a look at . Other " "topics are covered below." msgstr "" #. (itstool) path: section/title #: C/index.page:27 msgid "Help topics" msgstr "" #. (itstool) path: info/desc #: C/drag-and-drop.page:6 msgid "Drop files, file names or timestamps on Parlatype" msgstr "" #. (itstool) path: page/title #: C/drag-and-drop.page:14 msgid "Drag and Drop" msgstr "" #. (itstool) path: page/p #: C/drag-and-drop.page:16 msgid "" "You can drop files, file names or timestamps on Parlatype’s " "window." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:19 msgid "" "Files: Drag and drop a file from a file manager, e.g. Files, on " "Parlatype and it will open that file." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:20 msgid "" "File names: Select a file name from a word processor, e.g. LibreOffice, drop the selected text on Parlatype and it will open that " "file. This will always work if the selection contains a full path. If you " "select the name only, Parlatype will look up its full path in the " "list of recent files and open it if it can find it in that list." msgstr "" #. (itstool) path: item/p #: C/drag-and-drop.page:21 msgid "" "Timestamps: You can drag and drop timestamps to Parlatype. Select " "a timestamp from a word processor, e.g. LibreOffice, drop the " "selected text on Parlatype and it will jump to that position." msgstr "" #. (itstool) path: info/desc #. (itstool) path: page/title #: C/first-steps.page:6 C/first-steps.page:14 msgid "First steps with Parlatype" msgstr "" #. (itstool) path: page/p #: C/first-steps.page:16 msgid "" "Parlatype is an easy to use audio player to help you transcribing " "or annotating recorded speech. You need to run a word processor, e.g. " "LibreOffice, too. Launch Parlatype and open an audio " "file by clicking on the Open button in the upper left corner." msgstr "" #. (itstool) path: note/p #: C/first-steps.page:19 msgid "You can also drag and drop a file on Parlatype." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:22 msgid "" "In the lower left corner there are the controls with a Play " "button which toggles between play and pause. Whenever you pause, " "Parlatype rewinds a few seconds to make it easier to resume. This " "can be changed in the ." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/first-steps.page:24 msgctxt "_" msgid "" "external ref='figures/parlatype-main-window.png' " "md5='48f6b285bedaf2f9ab0a8760807f0fda'" msgstr "" #. (itstool) path: page/p #: C/first-steps.page:26 msgid "" "The buttons Jump back and Jump forward in the lower " "left corner skip a few seconds back or ahead. The amount of time can be " "changed in the ." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:28 msgid "" "The view scrolls automatically so that the cursor is always visible. You can " "scroll manually by clicking on or dragging the scroll bar or using the " "standard keybindings. Automatic scrolling is stopped then." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:30 msgid "" "To get back to the cursor’s position and let the view scroll automatically " "again, click on the menu button showing the time and then on Go to " "cursor. Clicking on the Play button also turns automatic " "scrolling on." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:32 msgid "" "Clicking in the view with the right mouse button will put the cursor there, " "also holding the right mouse button pressed and moving it. The left mouse " "button is for ." msgstr "" #. (itstool) path: page/p #: C/first-steps.page:34 msgid "" "The speed scale next to the volume button in the lower " "right corner lets you adjust the speed of playback. A value of 1 means " "normal speed, everything lower (down to 0.5) is slower, everything above is " "faster." msgstr "" #. (itstool) path: info/desc #: C/keyboard-shortcuts.page:6 msgid "Standard keyboard shortcuts in Parlatype" msgstr "" #. (itstool) path: page/title #: C/keyboard-shortcuts.page:14 msgid "Keyboard shortcuts" msgstr "" #. (itstool) path: page/p #: C/keyboard-shortcuts.page:16 msgid "" "Keyboard shortcuts for Parlatype control, like Play, " "are described in . Shortcut keys for the window are " "listed below." msgstr "" #. (itstool) path: table/title #: C/keyboard-shortcuts.page:19 msgid "Standard Shortcut keys" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:22 msgid "To Do This" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:23 msgid "Press This" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:28 msgid "Show help" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:29 msgid "F1" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:32 msgid "Open file" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:33 msgid "Ctrlo" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:36 msgid "Play/Pause" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:37 msgid "CtrlSpace" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:40 msgid "Go to …" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:41 msgid "Ctrlg" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:44 msgid "Jump back" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:45 msgid "CtrlLeft" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:48 msgid "Jump forward" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:49 msgid "CtrlRight" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:52 msgid "Copy timestamp" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:53 msgid "Ctrlc" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:56 msgid "Insert timestamp" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:57 msgid "Ctrlv" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:60 msgid "Zoom in" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:61 msgid "Ctrl+" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:64 msgid "Zoom out" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:65 msgid "Ctrl-" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:68 msgid "Quit" msgstr "" #. (itstool) path: td/p #: C/keyboard-shortcuts.page:69 msgid "Ctrlq" msgstr "" #. (itstool) path: p/link #: C/legal.xml:5 msgid "Creative Commons Attribution-ShareAlike 4.0 International" msgstr "" #. (itstool) path: license/p #: C/legal.xml:4 msgid "This work is licensed under a <_:link-1/> license." msgstr "" #. (itstool) path: info/desc #: C/preferences.page:6 msgid "How to customize Parlatype" msgstr "" #. (itstool) path: page/title #: C/preferences.page:14 msgid "Preferences" msgstr "" #. (itstool) path: page/p #: C/preferences.page:16 msgid "" "To open the preferences dialog click on the primary menu in the headerbar." msgstr "" #. (itstool) path: section/title #: C/preferences.page:21 msgid "Preferences for the waveform" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:23 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-waveform.png' " "md5='9d91fd985b6758d99cdf9479ef54105c'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:26 msgid "" "Resolution: The resolution of the waveform image is given in pixels per " "second, e.g. the default resolution of 100 means, that one second is shown " "with a width of 100 pixels." msgstr "" #. (itstool) path: item/p #: C/preferences.page:27 msgid "" "Fixed vs. moving cursor: There are two modes, how to follow the cursor. On " "slower systems a moving cursor might be smoother." msgstr "" #. (itstool) path: item/p #: C/preferences.page:28 msgid "Show time scale: Turn the time scale on or off." msgstr "" #. (itstool) path: section/title #: C/preferences.page:33 msgid "Preferences for controls" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:35 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-controls.png' " "md5='e4a386123491d156f4a1415d70fae2fc'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:38 msgid "" "Jump back on pause: Parlatype will rewind a few seconds on each " "pause, this way you can easier resume typing. Set this value to 0 if you " "don’t want this behaviour." msgstr "" #. (itstool) path: item/p #: C/preferences.page:39 msgid "" "Jump back: Configures how many seconds to skip when the Jump back " "button is pressed." msgstr "" #. (itstool) path: item/p #: C/preferences.page:40 msgid "" "Jump forward: Configures how many seconds to skip when the Jump " "forward button is pressed." msgstr "" #. (itstool) path: item/p #: C/preferences.page:41 msgid "" "Pressing Play at the end of file – Replay file: Whether you want " "to repeat the file at the end. If not, it will replay a few seconds like on " "pause." msgstr "" #. (itstool) path: item/p #: C/preferences.page:42 msgid "" "Pressing Play at the end of selection – Replay selection: Whether " "you want to repeat the selection. If not, it will replay a few seconds like " "on pause." msgstr "" #. (itstool) path: section/title #: C/preferences.page:47 msgid "Preferences for timestamps" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:49 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-timestamps.png' " "md5='03e59b46213ae5cb77eb6a52d9729969'" msgstr "" #. (itstool) path: section/p #: C/preferences.page:51 msgid "" "These settings affect how Parlatype formats timestamps. If you " "need a certain format in your transcription, you can adjust it here." msgstr "" #. (itstool) path: note/p #: C/preferences.page:52 msgid "" "There are no settings for reading timestamps. Parlatype " "reads and accepts all of these formats." msgstr "" #. (itstool) path: item/p #: C/preferences.page:54 msgid "" "Always show hours and leading zeroes: Whether to show a fixed number of " "digits. Changing any of these values will show an updated example in the " "Example section below." msgstr "" #. (itstool) path: item/p #: C/preferences.page:55 msgid "Precision: Choose between full seconds, 10th seconds or 100th seconds." msgstr "" #. (itstool) path: item/p #: C/preferences.page:56 msgid "" "Fraction separator: Choose between a point or a hyphen to separate fractions " "of a second." msgstr "" #. (itstool) path: item/p #: C/preferences.page:57 msgid "" "Characters around timestamps: Choose between number signs, round brackets, " "square brackets or none." msgstr "" #. (itstool) path: section/title #: C/preferences.page:62 msgid "Preferences for speech recognition" msgstr "" #. (itstool) path: note/p #: C/preferences.page:65 msgid "" "This tab is only visible, if speech recognition is enabled in Parlatype." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:68 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-asr.png' " "md5='6dee1ebd03b65edbb0bff9811d602c10'" msgstr "" #. (itstool) path: section/p #: C/preferences.page:70 msgid "" "Here you can choose which language model to use. If you don’t have a " "language model yet, an assistant will guide you through the process of " "downloading it. You can have as many language models as you need, they can " "be added with the + button." msgstr "" #. (itstool) path: section/p #: C/preferences.page:72 msgid "" "To select a model click on its radio button in the list. If you click just " "on the name, you can see the model’s basic parameters. You could even change " "them, but that’s not recommended." msgstr "" #. (itstool) path: section/p #: C/preferences.page:74 msgid "" "The - button removes a model from the list. The model’s files " "however are not deleted, just the model entry is removed." msgstr "" #. (itstool) path: section/title #: C/preferences.page:80 msgid "Preferences for the window" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/preferences.page:82 msgctxt "_" msgid "" "external ref='figures/parlatype-prefs-window.png' " "md5='be540a7e2a351b80f5710048450c0735'" msgstr "" #. (itstool) path: item/p #: C/preferences.page:85 msgid "" "Remember size: On start-up Parlatype sets the window size to the " "size it had the last time." msgstr "" #. (itstool) path: item/p #: C/preferences.page:86 msgid "" "Remember position: On start-up Parlatype can position its window " "where you had it when you closed Parlatype last time." msgstr "" #. (itstool) path: item/p #: C/preferences.page:87 msgid "" "Start on top: This will put Parlatype on start-up on top of other " "windows. This might be useful if you are working with a maximized word " "processor and still want to see the Parlatype window." msgstr "" #. (itstool) path: note/p #: C/preferences.page:91 msgid "" "Remember position and Start on top are not available " "on Wayland." msgstr "" #. (itstool) path: info/desc #: C/selections.page:6 msgid "How to play and repeat a selection" msgstr "" #. (itstool) path: page/title #: C/selections.page:14 msgid "Selections" msgstr "" #. (itstool) path: page/p #: C/selections.page:16 msgid "" "You can select a piece of the waveform with the mouse. Next time you press " "Play, it will play the selection only. When it is finished and " "you press Play again, it will loop the selection once." msgstr "" #. (itstool) path: note/p #: C/selections.page:18 msgid "" "When in selection mode, you can not exit the selection anymore until you " "deselect it." msgstr "" #. (itstool) path: page/p #: C/selections.page:20 msgid "" "Selections can be made with the mouse (or pointer device) with a left click, " "holding the mouse button and dragging the pointer. If you click with " "Shift key pressed, an already existing selection will be enlarged " "to that point." msgstr "" #. (itstool) path: page/p #: C/selections.page:22 msgid "" "To deselect click once with the left button into the waveform. If the " "waveform has keyboard focus, you can press Escape." msgstr "" #. (itstool) path: info/desc #: C/timestamps.page:6 msgid "Set and go to timestamps" msgstr "" #. (itstool) path: page/title #: C/timestamps.page:14 msgid "Timestamps" msgstr "" #. (itstool) path: page/p #: C/timestamps.page:16 msgid "Timestamps help you to navigate in your transcription." msgstr "" #. (itstool) path: note/p #: C/timestamps.page:19 msgid "" "Timestamps can look like this: #03:45.2#. You can select them with or " "without the number signs." msgstr "" #. (itstool) path: page/p #: C/timestamps.page:22 msgid "" "Parlatype can produce different timestamp formats, they can be " "set in ." msgstr "" #. (itstool) path: section/title #: C/timestamps.page:25 msgid "Drag and drop" msgstr "" #. (itstool) path: section/p #: C/timestamps.page:27 msgid "" "If you select the timestamp in the word processor, you can drag and drop it " "on the Parlatype window and it will go to that position. This is " "also possible the other way round: Drag the time label from Parlatype to a word processor and drop it there to insert it." msgstr "" #. (itstool) path: section/title #: C/timestamps.page:31 msgid "Using the clipboard" msgstr "" #. (itstool) path: section/p #: C/timestamps.page:33 msgid "" "Clicking on the menu button that is showing the current time you can " "Copy time to clipboard or Go to time in clipboard." msgstr "" #. (itstool) path: section/p #: C/timestamps.page:35 msgid "" "This can also be done with keyboard shortcuts. First make sure, the " "Parlatype window has focus. With the key sequence " "Ctrlc the current timestamp is copied " "to the clipboard. Changing to the word processor you can insert now the " "timestamp in your transcription." msgstr "" #. (itstool) path: section/p #: C/timestamps.page:36 msgid "" "To go to a timestamp position, copy the timestamp in the word processor to " "the clipboard. Once you have changed focus to Parlatype press " "Ctrlv." msgstr "" #. (itstool) path: info/desc #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "" #. (itstool) path: page/title #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "" #. (itstool) path: page/p #: C/asr.page:17 msgid "" "Parlatype offers automatic speech recognition that is done on " "your computer. No data is sent over the network." msgstr "" #. (itstool) path: note/p #: C/asr.page:20 msgid "" "Parlatype must have been built with PocketSphinx or " "Mozilla DeepSpeech. Please note that those libraries might be not " "available on your platform." msgstr "" #. (itstool) path: note/p #: C/asr.page:25 msgid "" "Parlatype has no built-in text editor. You need the Parlatype " "Extension for LibreOffice to output recognized text." msgstr "" #. (itstool) path: section/title #: C/asr.page:30 msgid "Start speech recognition" msgstr "" #. (itstool) path: section/p #: C/asr.page:32 msgid "" "Select a language model in the Preferences Dialog, Speech recognition tab, see for more details." msgstr "" #. (itstool) path: section/p #: C/asr.page:35 msgid "" "Open the primary menu and click on Automatic transcription. This " "is only available, if you have setup and chosen a language model." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr.page:38 msgctxt "_" msgid "" "external ref='figures/asr-switch-to-asr.png' " "md5='91dc6bffa3b8a3342889d9bfccabc3c8'" msgstr "" #. (itstool) path: section/p #: C/asr.page:40 msgid "" "Now press Play in Parlatype and the recognized speech " "will be printed in LibreOffice, if the Parlatype Extension is " "installed. Output is silent because decoding speed is dependent on your " "machine and may be slower or faster than real-time speech." msgstr "" #. (itstool) path: section/p #: C/asr.page:45 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #: C/asr.page:47 msgid "" "Accuracy depends on many factors like quality of the recording, " "background noise, speaker’s dialect or pronunciation and the speech model " "used. For general transcription you can expect an word error rate between 10 " "and 50 %. Alas this means that in some cases manual transcription from the " "start will be faster than automatic transcription and the following " "correction process." msgstr "" #. (itstool) path: info/desc #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:17 msgid "" "For speech recognition you need a language model: one or more files trained " "with real speech samples. Parlatype supports language models made " "for CMU Sphinx and Mozilla DeepSpeech and ships a couple of language " "model configurations." msgstr "" #. (itstool) path: note/p #: C/asr-setup.page:22 msgid "" "A language model configuration contains meta data describing the " "language model: A name that you can change, the language it was made for, " "speech recognition engine, publisher, license etc. It has a (third party) " "link, where you can download the files. Part of the configuration is the " "base folder, where you have saved the model. Additionally it contains " "various parameters for the plugin which are not shown." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:29 msgid "" "Open the Preferences Dialog and click on the Speech Recognition " "tab. Initially there are no configurations available, click on the Add " "a configuration button." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:33 msgctxt "_" msgid "" "external ref='figures/asr-setup-initial.png' " "md5='31773b99dcbb1ee84e59e119a0bd35c6'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:36 msgid "download" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:37 msgid "unavailable" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:35 msgid "" "If your installation has CMU Sphinx or Mozilla DeepSpeech enabled, you will " "see configurations with a <_:media-1/> symbol. Otherwise you will see only " "configurations with a <_:media-2/> symbol." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:39 msgctxt "_" msgid "" "external ref='figures/asr-setup-downloadable.png' " "md5='6e00b08a60952e8f408bec4a024be2e5'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:42 msgid "settings" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:41 msgid "" "Select a configuration and click on the <_:media-1/> button. There is a " "short description of the model and where you can download it. After " "downloading, you have to set the folder where your download resides. You can " "also change the Display name." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/asr-setup.page:47 msgctxt "_" msgid "" "external ref='figures/asr-setup-details.png' " "md5='3273410dfb31da8518a64d28af0da7b1'" msgstr "" #. (itstool) path: media/span #: C/asr-setup.page:50 msgid "selected" msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:49 msgid "" "An installed model has no symbol next to it. Double click on the model and " "it will be selected for speech recognition, a <_:media-1/> symbol appears." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:53 msgid "" "Shipped configurations might get obsolete over time. Therefore you can " "import a configuration with the + button. Configurations are text " "files with an .asr ending." msgstr "" #. (itstool) path: page/p #: C/asr-setup.page:57 msgid "" "With the - button you can remove a configuration. This will never " "remove downloaded models, only the configuration file." msgstr "" #. (itstool) path: info/desc #: C/media-keys.page:6 msgid "How to control Parlatype with media keys" msgstr "" #. (itstool) path: page/title #: C/media-keys.page:14 msgid "Media keys" msgstr "" #. (itstool) path: page/p #: C/media-keys.page:16 msgid "" "Parlatype’s basic functions can be controlled with so called " "media keys. Media keys are used system wide to control media " "players and they are working even if the media player is not in focus or in " "the background." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:18 msgid "" "You can change the media keys in GNOME settings. You can use dedicated keys " "from a multimedia keyboard or use any other key or combination of keys." msgstr "" #. (itstool) path: note/p #: C/media-keys.page:21 msgid "" "This will affect other media players, e.g. Totem or " "Rhythmbox, as well." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:24 msgid "Parlatype listens to these key strokes:" msgstr "" #. (itstool) path: item/p #: C/media-keys.page:26 msgid "" "Play, Pause, Stop: Each of these keys " "toggles between playing and pause." msgstr "" #. (itstool) path: item/p #: C/media-keys.page:27 msgid "" "Rewind, Previous: Each of these keys will jump back " "the time you selected in Preferences." msgstr "" #. (itstool) path: item/p #: C/media-keys.page:28 msgid "" "Fast Forward, Next: Each of these keys will jump ahead " "the time you selected in Preferences." msgstr "" #. (itstool) path: note/p #: C/media-keys.page:32 msgid "" "For detailed instructions how to change keyboard shortcuts in GNOME see the " "official " "documentation." msgstr "" #. (itstool) path: page/p #: C/media-keys.page:35 msgid "" "If you are using a dedicated foot pedal, it should be possible to map the " "foot pedal signals to any of the keys. This is not well tested, however. Any " "feedback regarding foot pedals is welcome." msgstr "" parlatype-3.0/libparlatype/000077500000000000000000000000001414030451500160425ustar00rootroot00000000000000parlatype-3.0/libparlatype/data/000077500000000000000000000000001414030451500167535ustar00rootroot00000000000000parlatype-3.0/libparlatype/data/icons/000077500000000000000000000000001414030451500200665ustar00rootroot00000000000000parlatype-3.0/libparlatype/data/icons/16x16/000077500000000000000000000000001414030451500206535ustar00rootroot00000000000000parlatype-3.0/libparlatype/data/icons/16x16/actions/000077500000000000000000000000001414030451500223135ustar00rootroot00000000000000parlatype-3.0/libparlatype/data/icons/16x16/actions/widget-pt-waveviewer.png000066400000000000000000000002301414030451500271020ustar00rootroot00000000000000PNG  IHDRa_IDAT8c`@3 (bƒ:. &\jra>| @*0Xr%#C[ aA FU 9R*88FIENDB`parlatype-3.0/libparlatype/data/icons/22x22/000077500000000000000000000000001414030451500206455ustar00rootroot00000000000000parlatype-3.0/libparlatype/data/icons/22x22/actions/000077500000000000000000000000001414030451500223055ustar00rootroot00000000000000parlatype-3.0/libparlatype/data/icons/22x22/actions/widget-pt-waveviewer.png000066400000000000000000000002601414030451500270770ustar00rootroot00000000000000PNG  IHDRĴl;wIDAT8c @ @ 3pwwB&ah0M{2R\DIZg #rYlʕ+a1 .B6`!V!jh,t.X}V)|J@ulIENDB`parlatype-3.0/libparlatype/data/icons/meson.build000066400000000000000000000003771414030451500222370ustar00rootroot00000000000000icon_sizes = ['16x16', '22x22'] foreach icon_size: icon_sizes icon_dir = join_paths(icon_size, 'actions') install_data( join_paths(icon_dir, 'widget-pt-waveviewer.png'), install_dir: join_paths(glade_pixmapdir, 'hicolor', icon_dir), ) endforeach parlatype-3.0/libparlatype/data/meson.build000066400000000000000000000005011414030451500211110ustar00rootroot00000000000000glade = get_option('glade') if glade glade_dep = dependency('gladeui-2.0', version: '>= 3.12.2') glade_catalogdir = glade_dep.get_pkgconfig_variable('catalogdir') glade_pixmapdir = glade_dep.get_pkgconfig_variable('pixmapdir') install_data('parlatype.xml', install_dir: glade_catalogdir, ) subdir('icons') endif parlatype-3.0/libparlatype/data/parlatype.xml000066400000000000000000000012421414030451500214750ustar00rootroot00000000000000 parlatype-3.0/libparlatype/docs/000077500000000000000000000000001414030451500167725ustar00rootroot00000000000000parlatype-3.0/libparlatype/docs/meson.build000066400000000000000000000001071414030451500211320ustar00rootroot00000000000000gtk_doc = get_option('gtk-doc') if gtk_doc subdir('reference') endif parlatype-3.0/libparlatype/docs/reference/000077500000000000000000000000001414030451500207305ustar00rootroot00000000000000parlatype-3.0/libparlatype/docs/reference/gallery.xml000066400000000000000000000007521414030451500231150ustar00rootroot00000000000000 Widget gallery Parlatype provides one widget: PtWaveviewer. parlatype-3.0/libparlatype/docs/reference/images/000077500000000000000000000000001414030451500221755ustar00rootroot00000000000000parlatype-3.0/libparlatype/docs/reference/images/pt-waveviewer.png000066400000000000000000000164421414030451500255170ustar00rootroot00000000000000PNG  IHDRu2bKGD pHYs  tIME1✑IDATx{\Te ̀8,0/Ix VЬZܬV7tmi_KnmeRy)K-j% x&΀03ܙ933g<9GRYYʇI@DD$>_?999L """7KLL4 ”!޽L#_|5Z}MqWX6'Mb"xlMD^'$-  $- E0y<S aB0͘٠Am~/4A3f0$>>蕞1X֮V10[&b&"r!fF1001110011001BJJ*LNJB;c'|-Zex"9q_w08:1U*5@'=ҡp~>XMtQ˵Z:^P1|8Nʕ_qy}w uUC]Sc8^yE gO&<wٲu`CV\r\A0=#ΟGq%@p`/\r+WASJ=z9Uj5pq@*BVAu?pF 3Y4 `j|</wݰi3TgfaC tS+W\zF6-y(8qÇŴvڷ2g;I8^P QwE  S+JfީV=z85_::C+/5! iRRswA`(rli D ^(=#/\ mPbXȣvhH(F2wU ӓfb!t{5f9Eg0?u޲u!eg#:*]ӅE A#ݝR%%¡]h6 h> 6tKZ벳۴0ީc}u[sWʤx|l@ɥ(&HQQ,\lm8]XQ&,0]ӥR999HIIcdN\v:z~ql5{;ֽ1#PQQJQXj/Znv0십nC޽wG<]yyV}áT*q5 sf?֮1=uC<p=v1܃Ncؐ޽ 4+P{D}#& xke-o. t$ƍys=SزufH峄WGo G/vsAIl˜=~8v3w͖jzFakWXcƱ5 'tE[֋.K1LOp2Uofil\W>s"8A,foo- 㧝M KČ9띪t?pjיҺ2?u.2LR4. zf+$nYr}r\$mZ[?qk㫯Mbqetk݋.hbw`3O`dL TjXkO]Sbczgd:7|og+[ 8օf wowK{NَPFO6mVe<|uIdfV0%:]{߆Y(8q1\kI+̤LLK8br^z,! }c`W_|PX-L5B¹ :aaA ;uho8!bN_{B1|8JJ˸??)u튫^~2dGv\-+C]HdDo `'RJSl= /މUXz͇m?m*+ǣwx8u DzF&KJPWWۧzcU힩 aK_^pFsѱ\>i'-%= ޴ݟ *x[ xZV Fyyv}KYǞME>p"nܸjmbY?G=avA{ݽ>RX0թxM0 _{j07{ZB-k|;q BdDaُ֜YG??_tME}}} =!bH'Idٖ6,m A`` Tt豄k,mU%5;r Gxh6Zവx7> spT-$5l\544,kkZ-Dѣ7QԨDLe4<(ma'-ma*Q\RBnRᯫ N!; &Nl2@kM])~ 1$ERX=2)^bu?={0V1z<8LҹȦf$ylw#gO.k잺}wq._l -˳ܲ_=kbcQYUvuzGfpH0{>Xh*`e޺ PW_'NUo1=:UxxQ\l,-[ep(CM^fvñ?k`Wߊ"#"vy:h}Lȅhll@A\t:\~rS&MD^RAHxXhhs]kҹUЈ벳0xbʀqL&ţ? xkr9}Ts+{[%+g!-bU*w㶱˳0-!dBr\?M&t , a+ bW.Ac-3if7NfN?O$'5kٺb-͚{ˑLnM:T$E]]=$a[7ZɥK.UH|f}}}׷}͓))ɤ dR: R@6bKm@. mA.IANWHw#A#k]n:΂v˲cg.IS> . ˲L'mج¸'(MXhLIdz[@l#DFD*,h]z;޽7wԣz4Uҳ',v i/AYI JԄcǚ%٣ScdO047 #4YGz:lςf@enFogmh{ӽ=&e)/,TFh3w`_&G'-Z 6\lu]1\D$ ""b&""b&"""`"""`"""b&""b&"""`"""`"""b&""b&""b&"""`"""`"""b&""b&"""`"""`"""b&""b&""b&"""`""[UUU&6y3fg|p78s|͏8k!s?Bx(/>q027&(C`d]~'C`W q<ք9оqQ=*^|p}>/%x̚93#ѣGO2>H&$FTMT S0v?g]`;[C~IxuqlGɏH|"^̞|pu>h+Q~Q gA|Lq=ZɯM@("E+LNaP[I͉ob_8+|v\r>h`O^E]G@? s\2ſu(b ~w"/^o?f Ǡ)ϩET7@i%"6G7x}Hu|q\r>4\Y cƂW ]܇w^Cϛxw!ew?UZx>_ܕ: e *A#/c2?:h}Bq3#?@H{ގ CdL{1_vn X9;?'f>4A ŐĐ~A6_C6qlZ0fG顪uu=tСz54Gn`7_9»WUt @rb_SذMf":-j>4\aB.M454@/S@HlwZ:,H^gO&w-Ɩ[_Q|܌ xk9܈- g>a,}Dnu(cm X*\Q/0~UlSyX&g( `KL½-:M jQFPV]|#_͘NM\{*Z>s\r>H79~˱2gsRz~ rQ0¶M!6W4T "7<'hݜqo?oJü 7fJLy<~n'lD <7^x"!!M<36?Z.5ee4?4'A"ȴ`{1k!H!1yZfLDDLDDD.µ.je^/ \ "sP(ܨ=^Ǎ: /0ue<""`V=h4aɼg/9#"`$BCzz͹2C:\~} {I$_߾w !ːAK&""b&"""L!""Rd ""<{sկs/IENDB`parlatype-3.0/libparlatype/docs/reference/introduction.xml.in000066400000000000000000000022531414030451500246020ustar00rootroot00000000000000 ]> Introduction Parlatype (that is libparlatype) is the core library for the Parlatype program, a basic audio player intended for speech transcription. The library is published separately as it might be useful for other applications as well. PtPlayer is the core GStreamer backend that can be used as an audio player. PtWaveviewer is a GtkWidget to show a wave form and uses PtWaveloader to extract the wave form from a given file. Parlatype is stable. That means that the library is versioned, API changes are documented, however, it changes frequently. The library versioning is decoupled from release versions. The current release is &version;, the API version is &apiversion; (for GObject introspection) and the library’s soname is &soname;. parlatype-3.0/libparlatype/docs/reference/meson.build000066400000000000000000000036741414030451500231040ustar00rootroot00000000000000version_conf = configuration_data() version_conf.set('PACKAGE_VERSION', meson.project_version()) version_conf.set('API_VERSION', libparlatype_api_version) version_conf.set('SONAME', libparlatype_version) configure_file( input: 'parlatype-docs.xml.in', output: 'parlatype-docs.xml', configuration: version_conf, ) configure_file( input: 'introduction.xml.in', output: 'introduction.xml', configuration: version_conf, ) configure_file( input: 'using_library.xml.in', output: 'using_library.xml', configuration: version_conf, ) configure_file( input: 'parlatype-example.py.in', output: 'parlatype-example.py', configuration: version_conf, ) gnome.gtkdoc( 'parlatype', main_xml: join_paths(meson.current_build_dir(), 'parlatype-docs.xml'), src_dir: [ join_paths(meson.source_root(), 'libparlatype', 'src'), join_paths(meson.build_root(), 'libparlatype', 'src'), ], gobject_typesfile: join_paths(meson.current_source_dir(), 'libparlatype.types'), dependencies: libparlatype_dep, scan_args: [ '--source-dir=' + join_paths(meson.source_root(), 'libparlatype', 'src'), '--rebuild-types', '--deprecated-guards="PT_DISABLE_DEPRECATED"', ], mkdb_args: [ '--xml-mode', '--output-format=xml', ], content_files: [ 'gallery.xml', join_paths(meson.current_build_dir(), 'introduction.xml'), join_paths(meson.current_build_dir(), 'using_library.xml'), 'python_example.xml', join_paths(meson.current_build_dir(), 'parlatype-example.py'), 'parlatype-example.ui', ], ignore_headers: [ 'gnome-languages.h', 'gst-helpers.h', 'gstparlasphinx.h', 'gstptaudioasrbin.h', 'gstptaudiobin.h', 'gstptaudioplaybin.h', 'gstptdeepspeech.h', 'pt-i18n.h', 'pt-position-manager.h', 'pt-waveviewer-cursor.h', 'pt-waveviewer-focus.h', 'pt-waveviewer-scrollbox.h', 'pt-waveviewer-selection.h', 'pt-waveviewer-ruler.h', 'pt-waveviewer-waveform.h', 'vad_private.h', ], html_assets: [ 'images/pt-waveviewer.png', ], install: true, ) parlatype-3.0/libparlatype/docs/reference/parlatype-docs.xml.in000066400000000000000000000053441414030451500250140ustar00rootroot00000000000000 ]> Parlatype Reference Manual for parlatype &version; The latest version of this documentation can be found on-line at https://www.parlatype.org/reference/index.html. Gabor Karsay Overview Main backend: PtPlayer ASR configuration GtkWidgets Internals: Get Wavedata Object Hierarchy API Index Index of new or changed symbols in 1.4 Index of new or changed symbols in 1.5 Index of new or changed symbols in 1.6 Index of new or changed symbols in 2.0 Index of new or changed symbols in 2.1 Index of new or changed symbols in 3.0 parlatype-3.0/libparlatype/docs/reference/parlatype-example.py.in000077500000000000000000000125561414030451500253550ustar00rootroot00000000000000#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ parlatype-example.py demonstrates libparlatype. """ import os import sys import gi gi.require_version('Parlatype', '@API_VERSION@') gi.require_version('Gtk', '3.0') from gi.repository import Parlatype as Pt from gi.repository import Gtk from gi.repository import GObject def error_message(message, parent): msg = Gtk.MessageDialog(parent=parent, modal=True, message_type=Gtk.MessageType.ERROR, buttons=Gtk.ButtonsType.OK, text=message) msg.run() msg.destroy() class ParlatypeExample: def __init__(self): self.player = Pt.Player.new() self.player.connect("error", self.player_error) self.player.connect("end-of-stream", self.player_end_of_stream) builder = Gtk.Builder() builder.add_from_file('parlatype-example.ui') builder.connect_signals(self) self.win = builder.get_object('window') self.win.connect("delete-event", Gtk.main_quit) self.viewer = builder.get_object('waveviewer') self.player.connect_waveviewer(self.viewer) self.progress = builder.get_object('progress') self.viewer.connect('load-progress', self.update_progress) self.button = builder.get_object('button_play') self.label = builder.get_object('pos_label') follow_cursor = builder.get_object('follow_cursor') GObject.GObject.bind_property(follow_cursor, "active", self.viewer, "follow-cursor", GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE) volumebutton = builder.get_object('volumebutton') GObject.GObject.bind_property(volumebutton, "value", self.player, "volume", GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE) pause = builder.get_object('pause_spin') back = builder.get_object('back_spin') forward = builder.get_object('forward_spin') self.player.set_property("pause", pause.get_value() * 1000) self.player.set_property("back", back.get_value() * 1000) self.player.set_property("forward", forward.get_value() * 1000) self.timer = 0 self.win.show_all() def update_progress(self, viewer, value): self.progress.set_fraction(value) def open_file(self, filename): try: self.player.open_uri(filename) except Exception as err: error_message(err.args[0], self.win) if self.timer > 0: self.viewer.remove_tick_callback(self.timer) self.timer = 0 return # this could also fail, skip checking in this example self.viewer.load_wave_async(filename, None, None) self.timer = self.viewer.add_tick_callback(self.update_cursor) def filechooser(self, button): dialog = Gtk.FileChooserDialog( title="Please choose a file", parent=self.win, action=Gtk.FileChooserAction.OPEN) dialog.add_button("_Cancel", Gtk.ResponseType.CANCEL) dialog.add_button("_Open", Gtk.ResponseType.OK) response = dialog.run() if response == Gtk.ResponseType.OK: self.open_file(dialog.get_uri()) dialog.destroy() def player_error(self, player, error): error_message(error.args[0], self.win) Gtk.main_quit def player_end_of_stream(self, player): GObject.GObject.handler_block_by_func(self.button, self.button_toggled) self.button.set_active(False) GObject.GObject.handler_unblock_by_func(self.button, self.button_toggled) self.player.pause() def button_toggled(self, button): if button.get_active(): self.viewer.set_property("follow-cursor", True) self.player.play() else: self.player.pause_and_rewind() def update_cursor(self, viewer, frame_clock): viewer.set_property("playback-cursor", self.player.get_position()) text = self.player.get_current_time_string( Pt.PrecisionType.SECOND_10TH) # Sometimes the position can't be retrieved and None is returned. if (text): self.label.set_text(text) # Continue updating return True def show_ruler_toggled(self, button): self.viewer.set_property("show-ruler", button.get_active()) def fixed_cursor_toggled(self, button): self.viewer.set_property("fixed-cursor", button.get_active()) def speed_value_changed(self, gtkrange): self.player.set_speed(gtkrange.get_value()) def pause_value_changed(self, gtkrange): self.player.set_property("pause", gtkrange.get_value() * 1000) def back_value_changed(self, gtkrange): self.player.set_property("back", gtkrange.get_value() * 1000) def forward_value_changed(self, gtkrange): self.player.set_property("forward", gtkrange.get_value() * 1000) def back_clicked(self, button): self.player.jump_back() def forward_clicked(self, button): self.player.jump_forward() def main(): app = ParlatypeExample() Gtk.main() if __name__ == "__main__": sys.exit(main()) parlatype-3.0/libparlatype/docs/reference/parlatype-example.ui000066400000000000000000000600011414030451500247160ustar00rootroot00000000000000 1 60 5 1 10 1 60 5 1 10 10 2 1 1 -3 3 0.10000000000000001 10 0.5 2 1 0.10000000000000001 0.10000000000000001 1000 1 10 1 1 0.10000000000000001 0.10000000000000001 False Parlatype center audio-x-generic True False True 6 vertical 6 True False 6 Open File True True True False True 0 time_label True False 00:00 True 1 False True end 1 True False Current Time: False True end 2 False True 0 True False False True 1 True False vertical 6 True False start PtWaveviewer False True 0 100 True True True True False True 1 True False False True 2 True False True False Properties: False True 0 Show ruler True True False True True False True 1 Fixed cursor True True False True True False True 2 Follow cursor True True False True True False True 3 False True 3 False True 2 True False False True 3 True False PtPlayer Controls and Properties 0 False True 4 True False True True True start True False media-skip-backward-symbolic False False 0 True True True True False 2 True False media-playback-start-symbolic False True 0 True False _Play True False True 1 False True 2 True True True start True False media-skip-forward-symbolic False False 4 False True 5 True False 6 6 True False Jump forward: 1 0 4 True True forward_adj 1 4 True False Jump back: 1 0 3 True True back_adj 1 3 True False Rewind on pause: 1 0 2 True True pause_adj 1 2 True False end Speed: 0 0 110 True True start speed_adj off off right 1 0 True True False True True start none vertical 1 vol_adj audio-volume-muted-symbolic audio-volume-high-symbolic audio-volume-low-symbolic audio-volume-medium-symbolic True False True False 1 1 True False Volume: 1 0 1 False True 6 parlatype-3.0/libparlatype/docs/reference/parlatype-sections.txt000066400000000000000000000046341414030451500253260ustar00rootroot00000000000000

pt-player PtPlayer PtPlayer pt_player_new pt_player_set_mode pt_player_get_mode pt_player_configure_asr pt_player_config_is_loadable pt_player_open_uri pt_player_play pt_player_play_pause pt_player_pause pt_player_pause_and_rewind pt_player_get_pause pt_player_connect_waveviewer pt_player_set_selection pt_player_clear_selection pt_player_selection_active pt_player_jump_relative pt_player_jump_back pt_player_jump_forward pt_player_get_back pt_player_get_forward pt_player_jump_to_position pt_player_set_speed pt_player_get_volume pt_player_set_volume pt_player_get_mute pt_player_set_mute pt_player_get_position pt_player_get_duration pt_player_get_uri pt_player_get_filename pt_player_get_time_string pt_player_get_current_time_string pt_player_get_duration_time_string pt_player_get_timestamp_for_time pt_player_get_timestamp pt_player_get_timestamp_position pt_player_string_is_timestamp pt_player_goto_timestamp PtPrecisionType PtModeType PT_IS_PLAYER PT_PLAYER PT_TYPE_PLAYER PtPlayerClass PtPlayerPrivate pt_player_get_type
pt-waveloader PtWaveloader PtWaveloader pt_waveloader_new pt_waveloader_load_async pt_waveloader_load_finish pt_waveloader_resize_async pt_waveloader_resize_finish pt_waveloader_resize pt_waveloader_get_duration pt_waveloader_get_data PT_IS_WAVELOADER PT_TYPE_WAVELOADER PT_WAVELOADER PtWaveloaderClass PtWaveloaderPrivate pt_waveloader_get_type
pt-waveviewer PtWaveviewer PtWaveviewer pt_waveviewer_new pt_waveviewer_load_wave_async pt_waveviewer_load_wave_finish pt_waveviewer_set_follow_cursor pt_waveviewer_get_follow_cursor PT_IS_WAVEVIEWER PT_IS_WAVEVIEWER_CLASS PT_TYPE_WAVEVIEWER PT_WAVEVIEWER PT_WAVEVIEWER_CLASS PtWaveviewerClass PtWaveviewerPrivate pt_waveviewer_get_type parlatype_get_resource
pt-config PtConfig PtConfig pt_config_new pt_config_is_valid pt_config_is_installed pt_config_apply pt_config_get_file pt_config_set_file pt_config_get_name pt_config_set_name pt_config_get_base_folder pt_config_set_base_folder pt_config_get_plugin pt_config_get_lang_code pt_config_get_lang_name pt_config_get_key PtError PT_CONFIG PT_IS_CONFIG PT_TYPE_CONFIG PtConfigClass PtConfigPrivate pt_config_get_type pt_error_quark PT_ERROR
parlatype-3.0/libparlatype/docs/reference/python_example.xml000066400000000000000000000011021414030451500245000ustar00rootroot00000000000000 A python example This is a complete working example of how to use PtPlayer with Python: MISSING XINCLUDE CONTENT parlatype-3.0/libparlatype/docs/reference/using_library.xml.in000066400000000000000000000017121414030451500247310ustar00rootroot00000000000000 ]> Using the library Programs using libparlatype written in C can be compiled with GCC using: gcc `pkg-config --cflags parlatype` -o example example.c `pkg-config --libs parlatype` There are bindings for other languages, e.g. in Python Parlatype can be imported like this: gi.require_version('Parlatype', '&apiversion;') from gi.repository import Parlatype There is a glade catalog for PtWaveviewer so you can include it in your glade projects. parlatype-3.0/libparlatype/meson.build000066400000000000000000000032771414030451500202150ustar00rootroot00000000000000# For information on how to properly maintain the library version information, # refer to the libtool manual, section "Updating library version information": # http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html libparlatype_current = 5 libparlatype_revision = 0 libparlatype_age = 0 libparlatype_current_minus_age = libparlatype_current - libparlatype_age libparlatype_version = '@0@.@1@.@2@'.format(libparlatype_current_minus_age, libparlatype_age, libparlatype_revision) # API or namespace version # Increment with every API break (changed or removed symbols) # For x this will be used as 'x.0', the zero never changes libparlatype_api = 4 libparlatype_api_version = '@0@.0'.format(libparlatype_api) gstreamer = dependency('gstreamer-1.0', version : '>= 1.6.3') gstreamer_app = dependency('gstreamer-app-1.0') gstreamer_audio = dependency('gstreamer-audio-1.0') math = compiler.find_library('m', required: false) # library message catalog is soname versioned for parallel installs gettext_package_lib = 'libparlatype@0@'.format(libparlatype_current_minus_age) iso_codes = dependency('iso-codes') iso_codes_prefix = iso_codes.get_pkgconfig_variable('prefix') libconf = configuration_data() libconf.set_quoted('PACKAGE_VERSION', meson.project_version()) libconf.set_quoted('GETTEXT_LIB', gettext_package_lib) libconf.set_quoted('ISO_CODES_PREFIX', iso_codes_prefix) libconf.set('HAVE_POCKETSPHINX', with_pocketsphinx) libconf.set('HAVE_DEEPSPEECH', with_deepspeech) libconf_input = configure_file(output: 'config.h', configuration: libconf) libconf_inc = include_directories('.', 'src') subdir('data') subdir('po') subdir('src') subdir('tests') subdir('docs') # must be after src parlatype-3.0/libparlatype/po/000077500000000000000000000000001414030451500164605ustar00rootroot00000000000000parlatype-3.0/libparlatype/po/LINGUAS000066400000000000000000000001251414030451500175030ustar00rootroot00000000000000ca cs de en_AU en_GB es fi fr he hu id it ja kab ku lt lv ms nl pl pt pt_BR ru sk sv parlatype-3.0/libparlatype/po/Makevars000066400000000000000000000070571414030451500201650ustar00rootroot00000000000000# Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. DOMAIN = $(PACKAGE) # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --from-code=UTF-8 \ --keyword=_ \ --keyword=N_ \ --keyword=C_:1c,2 \ --keyword=NC_:1c,2 \ --keyword=g_dngettext:2,3 \ --add-comments # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding # package. (Note that the msgstr strings, extracted from the package's # sources, belong to the copyright holder of the package.) Translators are # expected to transfer the copyright for their translations to this person # or entity, or to disclaim their copyright. The empty string stands for # the public domain; in this case the translators are expected to disclaim # their copyright. COPYRIGHT_HOLDER = Gabor Karsay # This tells whether or not to prepend "GNU " prefix to the package # name that gets inserted into the header of the $(DOMAIN).pot file. # Possible values are "yes", "no", or empty. If it is empty, try to # detect it automatically by scanning the files in $(top_srcdir) for # "GNU packagename" string. PACKAGE_GNU = # This is the email address or URL to which the translators shall report # bugs in the untranslated strings: # - Strings which are not entire sentences, see the maintainer guidelines # in the GNU gettext documentation, section 'Preparing Strings'. # - Strings which use unclear terms or require additional context to be # understood. # - Strings which make invalid assumptions about notation of date, time or # money. # - Pluralisation problems. # - Incorrect English spelling. # - Incorrect formatting. # It can be your email address, or a mailing list address where translators # can write to without being subscribed, or the URL of a web page through # which the translators can contact you. MSGID_BUGS_ADDRESS = https://github.com/gkarsay/parlatype/issues # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = # This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt' # context. Possible values are "yes" and "no". Set this to yes if the # package uses functions taking also a message context, like pgettext(), or # if in $(XGETTEXT_OPTIONS) you define keywords with a context argument. USE_MSGCTXT = no # These options get passed to msgmerge. # Useful options are in particular: # --previous to keep previous msgids of translated messages, # --quiet to reduce the verbosity. MSGMERGE_OPTIONS = # These options get passed to msginit. # If you want to disable line wrapping when writing PO files, add # --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and # MSGINIT_OPTIONS. MSGINIT_OPTIONS = # This tells whether or not to regenerate a PO file when $(DOMAIN).pot # has changed. Possible values are "yes" and "no". Set this to no if # the POT file is checked in the repository and the version control # program ignores timestamps. PO_DEPENDS_ON_POT = yes # This tells whether or not to forcibly update $(DOMAIN).pot and # regenerate PO files on "make dist". Possible values are "yes" and # "no". Set this to no if the POT file and PO files are maintained # externally. DIST_DEPENDS_ON_UPDATE_PO = yes parlatype-3.0/libparlatype/po/POTFILES.in000066400000000000000000000003011414030451500202270ustar00rootroot00000000000000# List of source files which contain translatable strings. libparlatype/src/pt-player.c libparlatype/src/pt-waveloader.c libparlatype/src/pt-waveviewer.c libparlatype/src/pt-waveviewer-ruler.cparlatype-3.0/libparlatype/po/POTFILES.skip000066400000000000000000000000001414030451500205630ustar00rootroot00000000000000parlatype-3.0/libparlatype/po/ca.po000066400000000000000000000131531414030451500174060ustar00rootroot00000000000000# Catalan translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # VPablo , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-05-08 13:41+0000\n" "Last-Translator: VPablo \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" "X-Launchpad-Export-Date: 2020-05-31 16:44+0000\n" "X-Generator: Launchpad (build 275d46a24253e557e4403d52832837e4bfa425b6)\n" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1183 libparlatype/src/pt-waveviewer-ruler.c:168 #: libparlatype/src/pt-waveviewer-ruler.c:222 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is a time format, like "2:05:30.1" for 2 #. hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1190 #, c-format msgctxt "long time format, 1 digit" msgid "%d:%02d:%02d.%d" msgstr "%d:%02d:%02d.%d" #. Translators: This is a time format, like "2:05:30.12" for 2 #. hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1197 #, c-format msgctxt "long time format, 2 digits" msgid "%d:%02d:%02d.%02d" msgstr "%d:%02d:%02d.%02d" #. Translators: This is a time format, like "05:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%I02d" instead #. of "%02d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1214 #, c-format msgctxt "short time format" msgid "%02d:%02d" msgstr "%02d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1221 #, c-format msgctxt "short time format, 1 digit" msgid "%02d:%02d.%d" msgstr "%02d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1228 #, c-format msgctxt "short time format, 2 digits" msgid "%02d:%02d.%02d" msgstr "%02d:%02d.%02d" #. Translators: This is a time format, like "5:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1241 libparlatype/src/pt-waveviewer-ruler.c:173 #: libparlatype/src/pt-waveviewer-ruler.c:224 #, c-format msgctxt "shortest time format" msgid "%d:%02d" msgstr "%d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1248 #, c-format msgctxt "shortest time format, 1 digit" msgid "%d:%02d.%d" msgstr "%d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1255 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-waveloader.c:494 msgid "Waveloader has outstanding operation." msgstr "El Waveloader té operacions pendents." #: libparlatype/src/pt-waveloader.c:509 msgid "Failed to setup GStreamer pipeline." msgstr "Ha fallat la configuració de la canonada GStreamer." #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:986 #, c-format msgid "URI not valid: %s" msgstr "URI no vàlida:%s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:998 #, c-format msgid "File not found: %s" msgstr "No s'ha trobat el fitxer: %s" #: libparlatype/src/pt-waveviewer.c:1480 msgid "Follow cursor" msgstr "Segueix el cursor" #: libparlatype/src/pt-waveviewer.c:1481 msgid "Scroll automatically to the cursor’s position" msgstr "Desplaça automàticament a la posició del cursor." #: libparlatype/src/pt-waveviewer.c:1497 msgid "Fixed cursor" msgstr "Cursor fixe" #: libparlatype/src/pt-waveviewer.c:1498 msgid "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." msgstr "" "Si VERDADER, el cursor està a una posició fixa i la ona es mou.\n" "Si FALS, el curso es mou." #: libparlatype/src/pt-waveviewer.c:1512 msgid "Show ruler" msgstr "Mostra regla" #: libparlatype/src/pt-waveviewer.c:1513 msgid "Show the time scale with time marks" msgstr "Mostra la escala de temps amb marques" #, c-format #~ msgid "Failed to load plugin “%s”." #~ msgstr "No s'ha pogut carregar el complement “%s”." parlatype-3.0/libparlatype/po/cs.po000066400000000000000000000132611414030451500174300ustar00rootroot00000000000000# Czech translation for parlatype # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the parlatype package. # # FIRST AUTHOR , 2018. # Pavel Fric , 2018. msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2019-03-11 07:57+0000\n" "Last-Translator: fri \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" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1183 libparlatype/src/pt-waveviewer-ruler.c:168 #: libparlatype/src/pt-waveviewer-ruler.c:222 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is a time format, like "2:05:30.1" for 2 #. hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1190 #, c-format msgctxt "long time format, 1 digit" msgid "%d:%02d:%02d.%d" msgstr "%d:%02d:%02d.%d" #. Translators: This is a time format, like "2:05:30.12" for 2 #. hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1197 #, c-format msgctxt "long time format, 2 digits" msgid "%d:%02d:%02d.%02d" msgstr "%d:%02d:%02d.%02d" #. Translators: This is a time format, like "05:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%I02d" instead #. of "%02d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1214 #, c-format msgctxt "short time format" msgid "%02d:%02d" msgstr "%02d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1221 #, c-format msgctxt "short time format, 1 digit" msgid "%02d:%02d.%d" msgstr "%02d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1228 #, c-format msgctxt "short time format, 2 digits" msgid "%02d:%02d.%02d" msgstr "%02d:%02d.%02d" #. Translators: This is a time format, like "5:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1241 libparlatype/src/pt-waveviewer-ruler.c:173 #: libparlatype/src/pt-waveviewer-ruler.c:224 #, c-format msgctxt "shortest time format" msgid "%d:%02d" msgstr "%d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1248 #, c-format msgctxt "shortest time format, 1 digit" msgid "%d:%02d.%d" msgstr "%d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1255 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-waveloader.c:494 msgid "Waveloader has outstanding operation." msgstr "" #: libparlatype/src/pt-waveloader.c:509 msgid "Failed to setup GStreamer pipeline." msgstr "Nepodařilo se nastavit příkazy pro GStreamer." #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:986 #, c-format msgid "URI not valid: %s" msgstr "URI není platný: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:998 #, c-format msgid "File not found: %s" msgstr "Soubor nenalezen: %s" #: libparlatype/src/pt-waveviewer.c:1480 msgid "Follow cursor" msgstr "Následovat ukazatel" #: libparlatype/src/pt-waveviewer.c:1481 msgid "Scroll automatically to the cursor’s position" msgstr "Projíždět automaticky na polohu ukazatele" #: libparlatype/src/pt-waveviewer.c:1497 msgid "Fixed cursor" msgstr "Pevný ukazatel" #: libparlatype/src/pt-waveviewer.c:1498 msgid "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." msgstr "" "Pokud je PRAVDA, ukazatel je v pevné poloze a tvar křivky (tvar průběhu " "signálu)\n" "se pohybuje. Pokud není PRAVDA, pohybuje se ukazatel." #: libparlatype/src/pt-waveviewer.c:1512 msgid "Show ruler" msgstr "Ukázat pravítko" #: libparlatype/src/pt-waveviewer.c:1513 msgid "Show the time scale with time marks" msgstr "Ukázat časovou stupnici s časovými značkami" #, c-format #~ msgid "Failed to load plugin “%s”." #~ msgstr "Nepodařilo se nahrát přídavný modul “%s”." parlatype-3.0/libparlatype/po/de.po000066400000000000000000000132271414030451500174150ustar00rootroot00000000000000# German translations for parlatype. # Copyright (C) 2016 Gabor Karsay # This file is distributed under the same license as the parlatype package. # Gabor Karsay , 2016, 2018, 2019. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-05-09 12:35+0000\n" "Last-Translator: Stephan Woidowski \n" "Language-Team: Deutsch <>\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-05-31 16:44+0000\n" "X-Generator: Launchpad (build 275d46a24253e557e4403d52832837e4bfa425b6)\n" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1183 libparlatype/src/pt-waveviewer-ruler.c:168 #: libparlatype/src/pt-waveviewer-ruler.c:222 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is a time format, like "2:05:30.1" for 2 #. hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1190 #, c-format msgctxt "long time format, 1 digit" msgid "%d:%02d:%02d.%d" msgstr "%d:%02d:%02d.%d" #. Translators: This is a time format, like "2:05:30.12" for 2 #. hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1197 #, c-format msgctxt "long time format, 2 digits" msgid "%d:%02d:%02d.%02d" msgstr "%d:%02d:%02d.%02d" #. Translators: This is a time format, like "05:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%I02d" instead #. of "%02d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1214 #, c-format msgctxt "short time format" msgid "%02d:%02d" msgstr "%02d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1221 #, c-format msgctxt "short time format, 1 digit" msgid "%02d:%02d.%d" msgstr "%02d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1228 #, c-format msgctxt "short time format, 2 digits" msgid "%02d:%02d.%02d" msgstr "%02d:%02d.%02d" #. Translators: This is a time format, like "5:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1241 libparlatype/src/pt-waveviewer-ruler.c:173 #: libparlatype/src/pt-waveviewer-ruler.c:224 #, c-format msgctxt "shortest time format" msgid "%d:%02d" msgstr "%d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1248 #, c-format msgctxt "shortest time format, 1 digit" msgid "%d:%02d.%d" msgstr "%d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1255 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-waveloader.c:494 msgid "Waveloader has outstanding operation." msgstr "Es gibt ausstehende Aufgaben für Waveloader." #: libparlatype/src/pt-waveloader.c:509 msgid "Failed to setup GStreamer pipeline." msgstr "Die GStreamer-Pipeline konnte nicht eingerichtet werden." #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:986 #, c-format msgid "URI not valid: %s" msgstr "URI nicht gültig: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:998 #, c-format msgid "File not found: %s" msgstr "Datei nicht gefunden: %s" #: libparlatype/src/pt-waveviewer.c:1480 msgid "Follow cursor" msgstr "Cursor folgen" #: libparlatype/src/pt-waveviewer.c:1481 msgid "Scroll automatically to the cursor’s position" msgstr "Scrollt automatisch zur Cursorposition" #: libparlatype/src/pt-waveviewer.c:1497 msgid "Fixed cursor" msgstr "Fixierter Cursor" #: libparlatype/src/pt-waveviewer.c:1498 msgid "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." msgstr "" "Wenn WAHR, befindet sich der Cursor an einer festen Position und die " "Wellenform bewegt sich.\n" "Wenn FALSCH, bewegt sich der Cursor." #: libparlatype/src/pt-waveviewer.c:1512 msgid "Show ruler" msgstr "Zeitskala anzeigen" #: libparlatype/src/pt-waveviewer.c:1513 msgid "Show the time scale with time marks" msgstr "Zeigt die Zeitskala mit Zeitmarkierungen" #, c-format #~ msgid "Failed to load plugin “%s”." #~ msgstr "Das Plugin »%s« konnte nicht geladen werden." parlatype-3.0/libparlatype/po/en_AU.po000066400000000000000000000131451414030451500200130ustar00rootroot00000000000000# English (Australia) translation for parlatype # Copyright (c) 2020 Rosetta Contributors and Canonical Ltd 2020 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2020. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-05-09 10:08+0000\n" "Last-Translator: Jared Norris \n" "Language-Team: English (Australia) \n" "Language: en_AU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-05-31 16:44+0000\n" "X-Generator: Launchpad (build 275d46a24253e557e4403d52832837e4bfa425b6)\n" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1183 libparlatype/src/pt-waveviewer-ruler.c:168 #: libparlatype/src/pt-waveviewer-ruler.c:222 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is a time format, like "2:05:30.1" for 2 #. hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1190 #, c-format msgctxt "long time format, 1 digit" msgid "%d:%02d:%02d.%d" msgstr "%d:%02d:%02d.%d" #. Translators: This is a time format, like "2:05:30.12" for 2 #. hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1197 #, c-format msgctxt "long time format, 2 digits" msgid "%d:%02d:%02d.%02d" msgstr "%d:%02d:%02d.%02d" #. Translators: This is a time format, like "05:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%I02d" instead #. of "%02d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1214 #, c-format msgctxt "short time format" msgid "%02d:%02d" msgstr "%02d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1221 #, c-format msgctxt "short time format, 1 digit" msgid "%02d:%02d.%d" msgstr "%02d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1228 #, c-format msgctxt "short time format, 2 digits" msgid "%02d:%02d.%02d" msgstr "%02d:%02d.%02d" #. Translators: This is a time format, like "5:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1241 libparlatype/src/pt-waveviewer-ruler.c:173 #: libparlatype/src/pt-waveviewer-ruler.c:224 #, c-format msgctxt "shortest time format" msgid "%d:%02d" msgstr "%d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1248 #, c-format msgctxt "shortest time format, 1 digit" msgid "%d:%02d.%d" msgstr "%d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1255 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-waveloader.c:494 msgid "Waveloader has outstanding operation." msgstr "Waveloader has outstanding operation." #: libparlatype/src/pt-waveloader.c:509 msgid "Failed to setup GStreamer pipeline." msgstr "Failed to setup GStreamer pipeline." #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:986 #, c-format msgid "URI not valid: %s" msgstr "URI not valid: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:998 #, c-format msgid "File not found: %s" msgstr "File not found: %s" #: libparlatype/src/pt-waveviewer.c:1480 msgid "Follow cursor" msgstr "Follow cursor" #: libparlatype/src/pt-waveviewer.c:1481 msgid "Scroll automatically to the cursor’s position" msgstr "Scroll automatically to the cursor’s position" #: libparlatype/src/pt-waveviewer.c:1497 msgid "Fixed cursor" msgstr "Fixed cursor" #: libparlatype/src/pt-waveviewer.c:1498 msgid "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." msgstr "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." #: libparlatype/src/pt-waveviewer.c:1512 msgid "Show ruler" msgstr "Show ruler" #: libparlatype/src/pt-waveviewer.c:1513 msgid "Show the time scale with time marks" msgstr "Show the time scale with time marks" #, c-format #~ msgid "Failed to load plugin “%s”." #~ msgstr "Failed to load plugin “%s”." parlatype-3.0/libparlatype/po/en_GB.po000066400000000000000000000132141414030451500177730ustar00rootroot00000000000000# English (United Kingdom) translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # Anthony Harrington , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-04-24 18:28+0000\n" "Last-Translator: Stephan Woidowski \n" "Language-Team: English (United Kingdom) \n" "Language: en_GB\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-05-31 16:44+0000\n" "X-Generator: Launchpad (build 275d46a24253e557e4403d52832837e4bfa425b6)\n" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1183 libparlatype/src/pt-waveviewer-ruler.c:168 #: libparlatype/src/pt-waveviewer-ruler.c:222 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is a time format, like "2:05:30.1" for 2 #. hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1190 #, c-format msgctxt "long time format, 1 digit" msgid "%d:%02d:%02d.%d" msgstr "%d:%02d:%02d.%d" #. Translators: This is a time format, like "2:05:30.12" for 2 #. hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1197 #, c-format msgctxt "long time format, 2 digits" msgid "%d:%02d:%02d.%02d" msgstr "%d:%02d:%02d.%02d" #. Translators: This is a time format, like "05:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%I02d" instead #. of "%02d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1214 #, c-format msgctxt "short time format" msgid "%02d:%02d" msgstr "%02d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1221 #, c-format msgctxt "short time format, 1 digit" msgid "%02d:%02d.%d" msgstr "%02d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1228 #, c-format msgctxt "short time format, 2 digits" msgid "%02d:%02d.%02d" msgstr "%02d:%02d.%02d" #. Translators: This is a time format, like "5:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1241 libparlatype/src/pt-waveviewer-ruler.c:173 #: libparlatype/src/pt-waveviewer-ruler.c:224 #, c-format msgctxt "shortest time format" msgid "%d:%02d" msgstr "%d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1248 #, c-format msgctxt "shortest time format, 1 digit" msgid "%d:%02d.%d" msgstr "%d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1255 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-waveloader.c:494 msgid "Waveloader has outstanding operation." msgstr "Waveloader has outstanding operation." #: libparlatype/src/pt-waveloader.c:509 msgid "Failed to setup GStreamer pipeline." msgstr "Failed to setup GStreamer pipeline." #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:986 #, c-format msgid "URI not valid: %s" msgstr "URI not valid: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:998 #, c-format msgid "File not found: %s" msgstr "File not found: %s" #: libparlatype/src/pt-waveviewer.c:1480 msgid "Follow cursor" msgstr "Follow cursor" #: libparlatype/src/pt-waveviewer.c:1481 msgid "Scroll automatically to the cursor’s position" msgstr "Scroll automatically to the cursor’s position" #: libparlatype/src/pt-waveviewer.c:1497 msgid "Fixed cursor" msgstr "Fixed cursor" #: libparlatype/src/pt-waveviewer.c:1498 msgid "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." msgstr "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." #: libparlatype/src/pt-waveviewer.c:1512 msgid "Show ruler" msgstr "Show ruler" #: libparlatype/src/pt-waveviewer.c:1513 msgid "Show the time scale with time marks" msgstr "Show the time scale with time marks" #, c-format #~ msgid "Failed to load plugin “%s”." #~ msgstr "Failed to load plugin “%s”." parlatype-3.0/libparlatype/po/es.po000066400000000000000000000132001414030451500174230ustar00rootroot00000000000000# Spanish translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # VPablo , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-05-08 21:04+0000\n" "Last-Translator: Rodrigo Lledó \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" "X-Launchpad-Export-Date: 2020-05-31 16:44+0000\n" "X-Generator: Launchpad (build 275d46a24253e557e4403d52832837e4bfa425b6)\n" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1183 libparlatype/src/pt-waveviewer-ruler.c:168 #: libparlatype/src/pt-waveviewer-ruler.c:222 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is a time format, like "2:05:30.1" for 2 #. hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1190 #, c-format msgctxt "long time format, 1 digit" msgid "%d:%02d:%02d.%d" msgstr "%d:%02d:%02d,%d" #. Translators: This is a time format, like "2:05:30.12" for 2 #. hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1197 #, c-format msgctxt "long time format, 2 digits" msgid "%d:%02d:%02d.%02d" msgstr "%d:%02d:%02d,%02d" #. Translators: This is a time format, like "05:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%I02d" instead #. of "%02d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1214 #, c-format msgctxt "short time format" msgid "%02d:%02d" msgstr "%02d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1221 #, c-format msgctxt "short time format, 1 digit" msgid "%02d:%02d.%d" msgstr "%02d:%02d,%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1228 #, c-format msgctxt "short time format, 2 digits" msgid "%02d:%02d.%02d" msgstr "%02d:%02d,%02d" #. Translators: This is a time format, like "5:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1241 libparlatype/src/pt-waveviewer-ruler.c:173 #: libparlatype/src/pt-waveviewer-ruler.c:224 #, c-format msgctxt "shortest time format" msgid "%d:%02d" msgstr "%d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1248 #, c-format msgctxt "shortest time format, 1 digit" msgid "%d:%02d.%d" msgstr "%d:%02d,%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1255 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d,%02d" #: libparlatype/src/pt-waveloader.c:494 msgid "Waveloader has outstanding operation." msgstr "Waveloader tiene una operación sobresaliente." #: libparlatype/src/pt-waveloader.c:509 msgid "Failed to setup GStreamer pipeline." msgstr "Ha fallado la configuración de la tubería GStreamer." #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:986 #, c-format msgid "URI not valid: %s" msgstr "URI no válido: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:998 #, c-format msgid "File not found: %s" msgstr "Archivo no encontrado: %s" #: libparlatype/src/pt-waveviewer.c:1480 msgid "Follow cursor" msgstr "Seguir cursor" #: libparlatype/src/pt-waveviewer.c:1481 msgid "Scroll automatically to the cursor’s position" msgstr "Desplazarse automáticamente a la posición del cursor" #: libparlatype/src/pt-waveviewer.c:1497 msgid "Fixed cursor" msgstr "Cursor fijo" #: libparlatype/src/pt-waveviewer.c:1498 msgid "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." msgstr "" "Si VERDADERO, el cursor está en una posición fija y la onda se mueve.\n" "Si FALSO, el cursor se mueve." #: libparlatype/src/pt-waveviewer.c:1512 msgid "Show ruler" msgstr "Muestra regla" #: libparlatype/src/pt-waveviewer.c:1513 msgid "Show the time scale with time marks" msgstr "Muestra la escala de tiempo con marcas" #, c-format #~ msgid "Failed to load plugin “%s”." #~ msgstr "No se pudo cargar el complemento «%s»." parlatype-3.0/libparlatype/po/fi.po000066400000000000000000000124411414030451500174200ustar00rootroot00000000000000# Finnish translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-05-08 15:57+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish \n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-05-31 16:44+0000\n" "X-Generator: Launchpad (build 275d46a24253e557e4403d52832837e4bfa425b6)\n" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1183 libparlatype/src/pt-waveviewer-ruler.c:168 #: libparlatype/src/pt-waveviewer-ruler.c:222 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "" #. Translators: This is a time format, like "2:05:30.1" for 2 #. hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1190 #, c-format msgctxt "long time format, 1 digit" msgid "%d:%02d:%02d.%d" msgstr "" #. Translators: This is a time format, like "2:05:30.12" for 2 #. hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1197 #, c-format msgctxt "long time format, 2 digits" msgid "%d:%02d:%02d.%02d" msgstr "" #. Translators: This is a time format, like "05:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%I02d" instead #. of "%02d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1214 #, c-format msgctxt "short time format" msgid "%02d:%02d" msgstr "" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1221 #, c-format msgctxt "short time format, 1 digit" msgid "%02d:%02d.%d" msgstr "" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1228 #, c-format msgctxt "short time format, 2 digits" msgid "%02d:%02d.%02d" msgstr "" #. Translators: This is a time format, like "5:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1241 libparlatype/src/pt-waveviewer-ruler.c:173 #: libparlatype/src/pt-waveviewer-ruler.c:224 #, c-format msgctxt "shortest time format" msgid "%d:%02d" msgstr "" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1248 #, c-format msgctxt "shortest time format, 1 digit" msgid "%d:%02d.%d" msgstr "" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1255 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "" #: libparlatype/src/pt-waveloader.c:494 msgid "Waveloader has outstanding operation." msgstr "" #: libparlatype/src/pt-waveloader.c:509 msgid "Failed to setup GStreamer pipeline." msgstr "" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:986 #, c-format msgid "URI not valid: %s" msgstr "URI on virheellinen: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:998 #, c-format msgid "File not found: %s" msgstr "Tiedostoa ei löydy: %s" #: libparlatype/src/pt-waveviewer.c:1480 msgid "Follow cursor" msgstr "Seuraa kohdistinta" #: libparlatype/src/pt-waveviewer.c:1481 msgid "Scroll automatically to the cursor’s position" msgstr "Vieritä automaattisesti kohdistimen sijaintiin" #: libparlatype/src/pt-waveviewer.c:1497 msgid "Fixed cursor" msgstr "Kiinteä kohdistin" #: libparlatype/src/pt-waveviewer.c:1498 msgid "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." msgstr "" #: libparlatype/src/pt-waveviewer.c:1512 msgid "Show ruler" msgstr "Näytä viivain" #: libparlatype/src/pt-waveviewer.c:1513 msgid "Show the time scale with time marks" msgstr "" #, c-format #~ msgid "Failed to load plugin “%s”." #~ msgstr "Liitännäisen “%s” avaaminen epäonnistui." parlatype-3.0/libparlatype/po/fr.po000066400000000000000000000132751414030451500174370ustar00rootroot00000000000000# French translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # archi02 , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-05-28 17:28+0000\n" "Last-Translator: Jean-Marc \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-05-31 16:44+0000\n" "X-Generator: Launchpad (build 275d46a24253e557e4403d52832837e4bfa425b6)\n" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1183 libparlatype/src/pt-waveviewer-ruler.c:168 #: libparlatype/src/pt-waveviewer-ruler.c:222 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is a time format, like "2:05:30.1" for 2 #. hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1190 #, c-format msgctxt "long time format, 1 digit" msgid "%d:%02d:%02d.%d" msgstr "%d:%02d:%02d.%d" #. Translators: This is a time format, like "2:05:30.12" for 2 #. hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1197 #, c-format msgctxt "long time format, 2 digits" msgid "%d:%02d:%02d.%02d" msgstr "%d:%02d:%02d.%02d" #. Translators: This is a time format, like "05:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%I02d" instead #. of "%02d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1214 #, c-format msgctxt "short time format" msgid "%02d:%02d" msgstr "%02d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1221 #, c-format msgctxt "short time format, 1 digit" msgid "%02d:%02d.%d" msgstr "%02d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1228 #, c-format msgctxt "short time format, 2 digits" msgid "%02d:%02d.%02d" msgstr "%02d:%02d.%02d" #. Translators: This is a time format, like "5:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1241 libparlatype/src/pt-waveviewer-ruler.c:173 #: libparlatype/src/pt-waveviewer-ruler.c:224 #, c-format msgctxt "shortest time format" msgid "%d:%02d" msgstr "%d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1248 #, c-format msgctxt "shortest time format, 1 digit" msgid "%d:%02d.%d" msgstr "%d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1255 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-waveloader.c:494 msgid "Waveloader has outstanding operation." msgstr "Waveloader a un fonctionnement exceptionnel." #: libparlatype/src/pt-waveloader.c:509 msgid "Failed to setup GStreamer pipeline." msgstr "Échec de configuration du pipeline GStreamer." #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:986 #, c-format msgid "URI not valid: %s" msgstr "URI non valide : %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:998 #, c-format msgid "File not found: %s" msgstr "Fichier introuvable : %s" #: libparlatype/src/pt-waveviewer.c:1480 msgid "Follow cursor" msgstr "Suivre le curseur" #: libparlatype/src/pt-waveviewer.c:1481 msgid "Scroll automatically to the cursor’s position" msgstr "Faire défiler automatiquement jusqu’à la position du curseur" #: libparlatype/src/pt-waveviewer.c:1497 msgid "Fixed cursor" msgstr "Curseur positionné" #: libparlatype/src/pt-waveviewer.c:1498 msgid "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." msgstr "" "Si VRAI, le curseur est placé à une position fixe et le graphique " "représentant l'onde sonore se déplace.\n" "Si FAUX, le curseur se déplace." #: libparlatype/src/pt-waveviewer.c:1512 msgid "Show ruler" msgstr "Afficher la règle" #: libparlatype/src/pt-waveviewer.c:1513 msgid "Show the time scale with time marks" msgstr "Afficher l’échelle de temps avec les marqueurs" #, c-format #~ msgid "Failed to load plugin “%s”." #~ msgstr "Échec du chargement du greffon « %s »." parlatype-3.0/libparlatype/po/he.po000066400000000000000000000117761414030451500174300ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2016-11-18 21:02+0000\n" "Last-Translator: nobody \n" "Language-Team: Hebrew , 2019. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2019-07-06 12:07+0000\n" "Last-Translator: Óvári \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" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1183 libparlatype/src/pt-waveviewer-ruler.c:168 #: libparlatype/src/pt-waveviewer-ruler.c:222 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is a time format, like "2:05:30.1" for 2 #. hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1190 #, c-format msgctxt "long time format, 1 digit" msgid "%d:%02d:%02d.%d" msgstr "%d:%02d:%02d.%d" #. Translators: This is a time format, like "2:05:30.12" for 2 #. hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1197 #, c-format msgctxt "long time format, 2 digits" msgid "%d:%02d:%02d.%02d" msgstr "%d:%02d:%02d.%02d" #. Translators: This is a time format, like "05:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%I02d" instead #. of "%02d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1214 #, c-format msgctxt "short time format" msgid "%02d:%02d" msgstr "%02d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1221 #, c-format msgctxt "short time format, 1 digit" msgid "%02d:%02d.%d" msgstr "%02d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1228 #, c-format msgctxt "short time format, 2 digits" msgid "%02d:%02d.%02d" msgstr "%02d:%02d.%02d" #. Translators: This is a time format, like "5:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1241 libparlatype/src/pt-waveviewer-ruler.c:173 #: libparlatype/src/pt-waveviewer-ruler.c:224 #, c-format msgctxt "shortest time format" msgid "%d:%02d" msgstr "%d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1248 #, c-format msgctxt "shortest time format, 1 digit" msgid "%d:%02d.%d" msgstr "%d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1255 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-waveloader.c:494 msgid "Waveloader has outstanding operation." msgstr "" #: libparlatype/src/pt-waveloader.c:509 msgid "Failed to setup GStreamer pipeline." msgstr "Nem sikerült beállítani a GStreamer csővezetéket." #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:986 #, c-format msgid "URI not valid: %s" msgstr "Az URI nem érvényes: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:998 #, c-format msgid "File not found: %s" msgstr "A fájl nem található: %s" #: libparlatype/src/pt-waveviewer.c:1480 msgid "Follow cursor" msgstr "Kurzor nyomonkövetése" #: libparlatype/src/pt-waveviewer.c:1481 msgid "Scroll automatically to the cursor’s position" msgstr "Önműködő görgetés a kurzor pozíciójához" #: libparlatype/src/pt-waveviewer.c:1497 msgid "Fixed cursor" msgstr "Rögzített kurzor" #: libparlatype/src/pt-waveviewer.c:1498 msgid "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." msgstr "" "Ha IGAZ, a kurzor rögzített helyzetben van és a hanghullám mozog.\n" "Ha HAMIS, a kurzor mozog." #: libparlatype/src/pt-waveviewer.c:1512 msgid "Show ruler" msgstr "Vonalzó megjelenítése" #: libparlatype/src/pt-waveviewer.c:1513 msgid "Show the time scale with time marks" msgstr "Mutassa az időméretet időjelekkel" #, c-format #~ msgid "Failed to load plugin “%s”." #~ msgstr "Nem sikerült betölteni a(z) „%s” bővítményt." parlatype-3.0/libparlatype/po/id.po000066400000000000000000000131671414030451500174240ustar00rootroot00000000000000# Indonesian translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # Ari Setyo Wibowo , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-04-11 15:44+0000\n" "Last-Translator: Ari Setyo Wibowo \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" "X-Launchpad-Export-Date: 2020-05-31 16:44+0000\n" "X-Generator: Launchpad (build 275d46a24253e557e4403d52832837e4bfa425b6)\n" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1183 libparlatype/src/pt-waveviewer-ruler.c:168 #: libparlatype/src/pt-waveviewer-ruler.c:222 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is a time format, like "2:05:30.1" for 2 #. hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1190 #, c-format msgctxt "long time format, 1 digit" msgid "%d:%02d:%02d.%d" msgstr "%d:%02d:%02d.%d" #. Translators: This is a time format, like "2:05:30.12" for 2 #. hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1197 #, c-format msgctxt "long time format, 2 digits" msgid "%d:%02d:%02d.%02d" msgstr "%d:%02d:%02d.%02d" #. Translators: This is a time format, like "05:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%I02d" instead #. of "%02d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1214 #, c-format msgctxt "short time format" msgid "%02d:%02d" msgstr "%02d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1221 #, c-format msgctxt "short time format, 1 digit" msgid "%02d:%02d.%d" msgstr "%02d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1228 #, c-format msgctxt "short time format, 2 digits" msgid "%02d:%02d.%02d" msgstr "%02d:%02d.%02d" #. Translators: This is a time format, like "5:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1241 libparlatype/src/pt-waveviewer-ruler.c:173 #: libparlatype/src/pt-waveviewer-ruler.c:224 #, c-format msgctxt "shortest time format" msgid "%d:%02d" msgstr "%d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1248 #, c-format msgctxt "shortest time format, 1 digit" msgid "%d:%02d.%d" msgstr "%d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1255 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-waveloader.c:494 msgid "Waveloader has outstanding operation." msgstr "Waveloader memiliki operasi yang luar biasa." #: libparlatype/src/pt-waveloader.c:509 msgid "Failed to setup GStreamer pipeline." msgstr "Gagal menyiapkan GStreamer pipeline." #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:986 #, c-format msgid "URI not valid: %s" msgstr "URI tidak benar: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:998 #, c-format msgid "File not found: %s" msgstr "Berkas tidak ditemukan: %s" #: libparlatype/src/pt-waveviewer.c:1480 msgid "Follow cursor" msgstr "Ikuti kursor" #: libparlatype/src/pt-waveviewer.c:1481 msgid "Scroll automatically to the cursor’s position" msgstr "Gulir secara otomatis ke posisi kursor" #: libparlatype/src/pt-waveviewer.c:1497 msgid "Fixed cursor" msgstr "Kursor tetap" #: libparlatype/src/pt-waveviewer.c:1498 msgid "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." msgstr "" "Jika BENAR, kursor dalam posisi tetap dan bentuk gelombang bergerak.\n" "Jika SALAH, kursor bergerak." #: libparlatype/src/pt-waveviewer.c:1512 msgid "Show ruler" msgstr "Tunjukkan penggaris" #: libparlatype/src/pt-waveviewer.c:1513 msgid "Show the time scale with time marks" msgstr "Tunjukkan skala waktu dengan tanda waktu" #, c-format #~ msgid "Failed to load plugin “%s”." #~ msgstr "Gagal untuk memuat plugin “%s”." parlatype-3.0/libparlatype/po/it.po000066400000000000000000000131701414030451500174360ustar00rootroot00000000000000# Italian translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # Luca Ciavatta 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-05-15 08:24+0000\n" "Last-Translator: Marco Ciampa \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" "X-Launchpad-Export-Date: 2020-05-31 16:44+0000\n" "X-Generator: Launchpad (build 275d46a24253e557e4403d52832837e4bfa425b6)\n" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1183 libparlatype/src/pt-waveviewer-ruler.c:168 #: libparlatype/src/pt-waveviewer-ruler.c:222 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is a time format, like "2:05:30.1" for 2 #. hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1190 #, c-format msgctxt "long time format, 1 digit" msgid "%d:%02d:%02d.%d" msgstr "%d:%02d:%02d.%d" #. Translators: This is a time format, like "2:05:30.12" for 2 #. hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1197 #, c-format msgctxt "long time format, 2 digits" msgid "%d:%02d:%02d.%02d" msgstr "%d:%02d:%02d.%02d" #. Translators: This is a time format, like "05:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%I02d" instead #. of "%02d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1214 #, c-format msgctxt "short time format" msgid "%02d:%02d" msgstr "%02d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1221 #, c-format msgctxt "short time format, 1 digit" msgid "%02d:%02d.%d" msgstr "%02d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1228 #, c-format msgctxt "short time format, 2 digits" msgid "%02d:%02d.%02d" msgstr "%02d:%02d.%02d" #. Translators: This is a time format, like "5:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1241 libparlatype/src/pt-waveviewer-ruler.c:173 #: libparlatype/src/pt-waveviewer-ruler.c:224 #, c-format msgctxt "shortest time format" msgid "%d:%02d" msgstr "%d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1248 #, c-format msgctxt "shortest time format, 1 digit" msgid "%d:%02d.%d" msgstr "%d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1255 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-waveloader.c:494 msgid "Waveloader has outstanding operation." msgstr "" #: libparlatype/src/pt-waveloader.c:509 msgid "Failed to setup GStreamer pipeline." msgstr "Impossibile configurare la pipeline di GStreamer." #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:986 #, c-format msgid "URI not valid: %s" msgstr "URI non valido: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:998 #, c-format msgid "File not found: %s" msgstr "File non trovato: %s" #: libparlatype/src/pt-waveviewer.c:1480 msgid "Follow cursor" msgstr "Seguire il cursore" #: libparlatype/src/pt-waveviewer.c:1481 msgid "Scroll automatically to the cursor’s position" msgstr "Scorri automaticamente fino alla posizione del cursore" #: libparlatype/src/pt-waveviewer.c:1497 msgid "Fixed cursor" msgstr "Cursore fisso" #: libparlatype/src/pt-waveviewer.c:1498 msgid "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." msgstr "" "Se TRUE, il cursore si trova in posizione fissa e la forma d'onda è in " "movimento.\n" "Se FALSE, il cursore si muove." #: libparlatype/src/pt-waveviewer.c:1512 msgid "Show ruler" msgstr "Mostra righello" #: libparlatype/src/pt-waveviewer.c:1513 msgid "Show the time scale with time marks" msgstr "Mostra la scala di tempo con i marcatori temporali" #, c-format #~ msgid "Failed to load plugin “%s”." #~ msgstr "Fallito il caricamento del plugin “%s”." parlatype-3.0/libparlatype/po/ja.po000066400000000000000000000134361414030451500174210ustar00rootroot00000000000000# Japanese translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-05-15 13:03+0000\n" "Last-Translator: Shinichirou Yamada \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" "X-Launchpad-Export-Date: 2020-05-31 16:44+0000\n" "X-Generator: Launchpad (build 275d46a24253e557e4403d52832837e4bfa425b6)\n" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1183 libparlatype/src/pt-waveviewer-ruler.c:168 #: libparlatype/src/pt-waveviewer-ruler.c:222 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is a time format, like "2:05:30.1" for 2 #. hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1190 #, c-format msgctxt "long time format, 1 digit" msgid "%d:%02d:%02d.%d" msgstr "%d:%02d:%02d.%d" #. Translators: This is a time format, like "2:05:30.12" for 2 #. hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1197 #, c-format msgctxt "long time format, 2 digits" msgid "%d:%02d:%02d.%02d" msgstr "%d:%02d:%02d.%02d" #. Translators: This is a time format, like "05:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%I02d" instead #. of "%02d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1214 #, c-format msgctxt "short time format" msgid "%02d:%02d" msgstr "%02d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1221 #, c-format msgctxt "short time format, 1 digit" msgid "%02d:%02d.%d" msgstr "%02d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1228 #, c-format msgctxt "short time format, 2 digits" msgid "%02d:%02d.%02d" msgstr "%02d:%02d.%02d" #. Translators: This is a time format, like "5:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1241 libparlatype/src/pt-waveviewer-ruler.c:173 #: libparlatype/src/pt-waveviewer-ruler.c:224 #, c-format msgctxt "shortest time format" msgid "%d:%02d" msgstr "%d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1248 #, c-format msgctxt "shortest time format, 1 digit" msgid "%d:%02d.%d" msgstr "%d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1255 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-waveloader.c:494 msgid "Waveloader has outstanding operation." msgstr "" #: libparlatype/src/pt-waveloader.c:509 msgid "Failed to setup GStreamer pipeline." msgstr "GStreamer パイプラインのセットアップに失敗しました。" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:986 #, c-format msgid "URI not valid: %s" msgstr "URI が無効です: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:998 #, c-format msgid "File not found: %s" msgstr "ファイルが見つかりません: %s" #: libparlatype/src/pt-waveviewer.c:1480 msgid "Follow cursor" msgstr "カーソルに追従する" #: libparlatype/src/pt-waveviewer.c:1481 msgid "Scroll automatically to the cursor’s position" msgstr "自動的にカーソルの位置までスクロールします" #: libparlatype/src/pt-waveviewer.c:1497 msgid "Fixed cursor" msgstr "カーソルを固定する" #: libparlatype/src/pt-waveviewer.c:1498 msgid "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." msgstr "" "TRUE の場合、カーソルの位置は固定され、波形が動きます。\n" "FALSE の場合、カーソルが動きます。" #: libparlatype/src/pt-waveviewer.c:1512 msgid "Show ruler" msgstr "ルーラーを表示する" #: libparlatype/src/pt-waveviewer.c:1513 msgid "Show the time scale with time marks" msgstr "タイムマークの付いたタイムスケールを表示します" #, c-format #~ msgid "Failed to load plugin “%s”." #~ msgstr "プラグイン“%s”の読み込みに失敗しました。" parlatype-3.0/libparlatype/po/kab.po000066400000000000000000000124601414030451500175600ustar00rootroot00000000000000# Kabyle translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # Belkacem Mohammed , 2017 # Slimane Amiri , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2018-06-04 13:12+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Kabyle \n" "Language: kab\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1183 libparlatype/src/pt-waveviewer-ruler.c:168 #: libparlatype/src/pt-waveviewer-ruler.c:222 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is a time format, like "2:05:30.1" for 2 #. hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1190 #, c-format msgctxt "long time format, 1 digit" msgid "%d:%02d:%02d.%d" msgstr "%d:%02d:%02d.%d" #. Translators: This is a time format, like "2:05:30.12" for 2 #. hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1197 #, c-format msgctxt "long time format, 2 digits" msgid "%d:%02d:%02d.%02d" msgstr "%d:%02d:%02d.%02d" #. Translators: This is a time format, like "05:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%I02d" instead #. of "%02d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1214 #, c-format msgctxt "short time format" msgid "%02d:%02d" msgstr "%02d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1221 #, c-format msgctxt "short time format, 1 digit" msgid "%02d:%02d.%d" msgstr "%02d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1228 #, c-format msgctxt "short time format, 2 digits" msgid "%02d:%02d.%02d" msgstr "%02d:%02d.%02d" #. Translators: This is a time format, like "5:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1241 libparlatype/src/pt-waveviewer-ruler.c:173 #: libparlatype/src/pt-waveviewer-ruler.c:224 #, c-format msgctxt "shortest time format" msgid "%d:%02d" msgstr "%d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1248 #, c-format msgctxt "shortest time format, 1 digit" msgid "%d:%02d.%d" msgstr "%d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1255 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-waveloader.c:494 msgid "Waveloader has outstanding operation." msgstr "" #: libparlatype/src/pt-waveloader.c:509 msgid "Failed to setup GStreamer pipeline." msgstr "Ur izmir ara ad iswel ajeɛbub GStreamer." #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:986 #, c-format msgid "URI not valid: %s" msgstr "Tansa URI mačči d tameɣtut: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:998 #, c-format msgid "File not found: %s" msgstr "Ulac afaylu: %s" #: libparlatype/src/pt-waveviewer.c:1480 msgid "Follow cursor" msgstr "Ḍfer taḥnaccaṭ" #: libparlatype/src/pt-waveviewer.c:1481 msgid "Scroll automatically to the cursor’s position" msgstr "" #: libparlatype/src/pt-waveviewer.c:1497 msgid "Fixed cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1498 msgid "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." msgstr "" #: libparlatype/src/pt-waveviewer.c:1512 msgid "Show ruler" msgstr "" #: libparlatype/src/pt-waveviewer.c:1513 msgid "Show the time scale with time marks" msgstr "" parlatype-3.0/libparlatype/po/ku.po000066400000000000000000000122161414030451500174410ustar00rootroot00000000000000# Kurdish translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # Rokar ✌ , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2018-06-04 13:09+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Kurdish \n" "Language: ku\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1183 libparlatype/src/pt-waveviewer-ruler.c:168 #: libparlatype/src/pt-waveviewer-ruler.c:222 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is a time format, like "2:05:30.1" for 2 #. hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1190 #, c-format msgctxt "long time format, 1 digit" msgid "%d:%02d:%02d.%d" msgstr "%d:%02d:%02d.%d" #. Translators: This is a time format, like "2:05:30.12" for 2 #. hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1197 #, c-format msgctxt "long time format, 2 digits" msgid "%d:%02d:%02d.%02d" msgstr "%d:%02d:%02d.%02d" #. Translators: This is a time format, like "05:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%I02d" instead #. of "%02d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1214 #, c-format msgctxt "short time format" msgid "%02d:%02d" msgstr "%02d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1221 #, c-format msgctxt "short time format, 1 digit" msgid "%02d:%02d.%d" msgstr "%02d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1228 #, c-format msgctxt "short time format, 2 digits" msgid "%02d:%02d.%02d" msgstr "%02d:%02d.%02d" #. Translators: This is a time format, like "5:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1241 libparlatype/src/pt-waveviewer-ruler.c:173 #: libparlatype/src/pt-waveviewer-ruler.c:224 #, c-format msgctxt "shortest time format" msgid "%d:%02d" msgstr "%d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1248 #, c-format msgctxt "shortest time format, 1 digit" msgid "%d:%02d.%d" msgstr "%d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1255 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-waveloader.c:494 msgid "Waveloader has outstanding operation." msgstr "" #: libparlatype/src/pt-waveloader.c:509 msgid "Failed to setup GStreamer pipeline." msgstr "" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:986 #, c-format msgid "URI not valid: %s" msgstr "" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:998 #, c-format msgid "File not found: %s" msgstr "" #: libparlatype/src/pt-waveviewer.c:1480 msgid "Follow cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1481 msgid "Scroll automatically to the cursor’s position" msgstr "" #: libparlatype/src/pt-waveviewer.c:1497 msgid "Fixed cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1498 msgid "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." msgstr "" #: libparlatype/src/pt-waveviewer.c:1512 msgid "Show ruler" msgstr "" #: libparlatype/src/pt-waveviewer.c:1513 msgid "Show the time scale with time marks" msgstr "" parlatype-3.0/libparlatype/po/lt.po000066400000000000000000000131151414030451500174400ustar00rootroot00000000000000# Lithuanian translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2019-03-13 21:43+0000\n" "Last-Translator: Moo \n" "Language-Team: Lithuanian \n" "Language: lt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1183 libparlatype/src/pt-waveviewer-ruler.c:168 #: libparlatype/src/pt-waveviewer-ruler.c:222 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is a time format, like "2:05:30.1" for 2 #. hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1190 #, c-format msgctxt "long time format, 1 digit" msgid "%d:%02d:%02d.%d" msgstr "%d:%02d:%02d.%d" #. Translators: This is a time format, like "2:05:30.12" for 2 #. hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1197 #, c-format msgctxt "long time format, 2 digits" msgid "%d:%02d:%02d.%02d" msgstr "%d:%02d:%02d.%02d" #. Translators: This is a time format, like "05:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%I02d" instead #. of "%02d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1214 #, c-format msgctxt "short time format" msgid "%02d:%02d" msgstr "%02d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1221 #, c-format msgctxt "short time format, 1 digit" msgid "%02d:%02d.%d" msgstr "%02d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1228 #, c-format msgctxt "short time format, 2 digits" msgid "%02d:%02d.%02d" msgstr "%02d:%02d.%02d" #. Translators: This is a time format, like "5:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1241 libparlatype/src/pt-waveviewer-ruler.c:173 #: libparlatype/src/pt-waveviewer-ruler.c:224 #, c-format msgctxt "shortest time format" msgid "%d:%02d" msgstr "%d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1248 #, c-format msgctxt "shortest time format, 1 digit" msgid "%d:%02d.%d" msgstr "%d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1255 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-waveloader.c:494 msgid "Waveloader has outstanding operation." msgstr "" #: libparlatype/src/pt-waveloader.c:509 msgid "Failed to setup GStreamer pipeline." msgstr "Nepavyko nustatyti GStreamer komandų grandinės." #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:986 #, c-format msgid "URI not valid: %s" msgstr "Neteisingas URI: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:998 #, c-format msgid "File not found: %s" msgstr "Failas nerastas: %s" #: libparlatype/src/pt-waveviewer.c:1480 msgid "Follow cursor" msgstr "Sekti paskui žymeklį" #: libparlatype/src/pt-waveviewer.c:1481 msgid "Scroll automatically to the cursor’s position" msgstr "Automatiškai slinkti į žymeklio poziciją" #: libparlatype/src/pt-waveviewer.c:1497 msgid "Fixed cursor" msgstr "Fiksuotas žymeklis" #: libparlatype/src/pt-waveviewer.c:1498 msgid "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." msgstr "" "Jei TEISINGA, bangos formai judant, žymeklis liks fiksuotoje pozicijoje.\n" "Jei NETEISINGA, žymeklis judės." #: libparlatype/src/pt-waveviewer.c:1512 msgid "Show ruler" msgstr "Rodyti liniuotę" #: libparlatype/src/pt-waveviewer.c:1513 msgid "Show the time scale with time marks" msgstr "Rodyti laiko mastelį su laiko žymėmis" #, c-format #~ msgid "Failed to load plugin “%s”." #~ msgstr "Nepavyko įkelti įskiepio “%s”." parlatype-3.0/libparlatype/po/lv.po000066400000000000000000000120741414030451500174450ustar00rootroot00000000000000# Latvian translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # Jānis Marks Gailis , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2017-01-17 21:20+0000\n" "Last-Translator: AMM \n" "Language-Team: Latvian \n" "Language: lv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1183 libparlatype/src/pt-waveviewer-ruler.c:168 #: libparlatype/src/pt-waveviewer-ruler.c:222 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "" #. Translators: This is a time format, like "2:05:30.1" for 2 #. hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1190 #, c-format msgctxt "long time format, 1 digit" msgid "%d:%02d:%02d.%d" msgstr "" #. Translators: This is a time format, like "2:05:30.12" for 2 #. hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1197 #, c-format msgctxt "long time format, 2 digits" msgid "%d:%02d:%02d.%02d" msgstr "" #. Translators: This is a time format, like "05:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%I02d" instead #. of "%02d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1214 #, c-format msgctxt "short time format" msgid "%02d:%02d" msgstr "" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1221 #, c-format msgctxt "short time format, 1 digit" msgid "%02d:%02d.%d" msgstr "" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1228 #, c-format msgctxt "short time format, 2 digits" msgid "%02d:%02d.%02d" msgstr "" #. Translators: This is a time format, like "5:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1241 libparlatype/src/pt-waveviewer-ruler.c:173 #: libparlatype/src/pt-waveviewer-ruler.c:224 #, c-format msgctxt "shortest time format" msgid "%d:%02d" msgstr "" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1248 #, c-format msgctxt "shortest time format, 1 digit" msgid "%d:%02d.%d" msgstr "" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1255 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "" #: libparlatype/src/pt-waveloader.c:494 msgid "Waveloader has outstanding operation." msgstr "" #: libparlatype/src/pt-waveloader.c:509 msgid "Failed to setup GStreamer pipeline." msgstr "" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:986 #, c-format msgid "URI not valid: %s" msgstr "" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:998 #, c-format msgid "File not found: %s" msgstr "Datne nav atrasta: %s" #: libparlatype/src/pt-waveviewer.c:1480 msgid "Follow cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1481 msgid "Scroll automatically to the cursor’s position" msgstr "" #: libparlatype/src/pt-waveviewer.c:1497 msgid "Fixed cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1498 msgid "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." msgstr "" #: libparlatype/src/pt-waveviewer.c:1512 msgid "Show ruler" msgstr "" #: libparlatype/src/pt-waveviewer.c:1513 msgid "Show the time scale with time marks" msgstr "" parlatype-3.0/libparlatype/po/meson.build000066400000000000000000000000621414030451500206200ustar00rootroot00000000000000i18n.gettext(gettext_package_lib, preset: 'glib') parlatype-3.0/libparlatype/po/ms.po000066400000000000000000000123021414030451500174350ustar00rootroot00000000000000# Malay translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # abuyop , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2018-06-04 13:06+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Malay \n" "Language: ms\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1183 libparlatype/src/pt-waveviewer-ruler.c:168 #: libparlatype/src/pt-waveviewer-ruler.c:222 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is a time format, like "2:05:30.1" for 2 #. hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1190 #, c-format msgctxt "long time format, 1 digit" msgid "%d:%02d:%02d.%d" msgstr "%d:%02d:%02d.%d" #. Translators: This is a time format, like "2:05:30.12" for 2 #. hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1197 #, c-format msgctxt "long time format, 2 digits" msgid "%d:%02d:%02d.%02d" msgstr "%d:%02d:%02d.%02d" #. Translators: This is a time format, like "05:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%I02d" instead #. of "%02d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1214 #, c-format msgctxt "short time format" msgid "%02d:%02d" msgstr "%02d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1221 #, c-format msgctxt "short time format, 1 digit" msgid "%02d:%02d.%d" msgstr "%02d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1228 #, c-format msgctxt "short time format, 2 digits" msgid "%02d:%02d.%02d" msgstr "%02d:%02d.%02d" #. Translators: This is a time format, like "5:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1241 libparlatype/src/pt-waveviewer-ruler.c:173 #: libparlatype/src/pt-waveviewer-ruler.c:224 #, c-format msgctxt "shortest time format" msgid "%d:%02d" msgstr "%d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1248 #, c-format msgctxt "shortest time format, 1 digit" msgid "%d:%02d.%d" msgstr "%d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1255 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-waveloader.c:494 msgid "Waveloader has outstanding operation." msgstr "" #: libparlatype/src/pt-waveloader.c:509 msgid "Failed to setup GStreamer pipeline." msgstr "Gagal memasang talian paip GStreamer." #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:986 #, c-format msgid "URI not valid: %s" msgstr "" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:998 #, c-format msgid "File not found: %s" msgstr "Fail tidak ditemui: %s" #: libparlatype/src/pt-waveviewer.c:1480 msgid "Follow cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1481 msgid "Scroll automatically to the cursor’s position" msgstr "" #: libparlatype/src/pt-waveviewer.c:1497 msgid "Fixed cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1498 msgid "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." msgstr "" #: libparlatype/src/pt-waveviewer.c:1512 msgid "Show ruler" msgstr "" #: libparlatype/src/pt-waveviewer.c:1513 msgid "Show the time scale with time marks" msgstr "" parlatype-3.0/libparlatype/po/nl.po000066400000000000000000000127451414030451500174420ustar00rootroot00000000000000# Dutch translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # Heimen Stoffels , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2017-06-26 09:37+0000\n" "Last-Translator: Heimen Stoffels \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" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1183 libparlatype/src/pt-waveviewer-ruler.c:168 #: libparlatype/src/pt-waveviewer-ruler.c:222 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is a time format, like "2:05:30.1" for 2 #. hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1190 #, c-format msgctxt "long time format, 1 digit" msgid "%d:%02d:%02d.%d" msgstr "%d:%02d:%02d.%d" #. Translators: This is a time format, like "2:05:30.12" for 2 #. hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1197 #, c-format msgctxt "long time format, 2 digits" msgid "%d:%02d:%02d.%02d" msgstr "%d:%02d:%02d.%02d" #. Translators: This is a time format, like "05:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%I02d" instead #. of "%02d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1214 #, c-format msgctxt "short time format" msgid "%02d:%02d" msgstr "%02d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1221 #, c-format msgctxt "short time format, 1 digit" msgid "%02d:%02d.%d" msgstr "%02d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1228 #, c-format msgctxt "short time format, 2 digits" msgid "%02d:%02d.%02d" msgstr "%02d:%02d.%02d" #. Translators: This is a time format, like "5:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1241 libparlatype/src/pt-waveviewer-ruler.c:173 #: libparlatype/src/pt-waveviewer-ruler.c:224 #, c-format msgctxt "shortest time format" msgid "%d:%02d" msgstr "%d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1248 #, c-format msgctxt "shortest time format, 1 digit" msgid "%d:%02d.%d" msgstr "%d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1255 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-waveloader.c:494 msgid "Waveloader has outstanding operation." msgstr "" #: libparlatype/src/pt-waveloader.c:509 msgid "Failed to setup GStreamer pipeline." msgstr "GStreamer-pipeline instellen is mislukt." #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:986 #, c-format msgid "URI not valid: %s" msgstr "URI is ongeldig: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:998 #, c-format msgid "File not found: %s" msgstr "Bestand niet gevonden: %s" #: libparlatype/src/pt-waveviewer.c:1480 msgid "Follow cursor" msgstr "Cursor volgen" #: libparlatype/src/pt-waveviewer.c:1481 msgid "Scroll automatically to the cursor’s position" msgstr "" #: libparlatype/src/pt-waveviewer.c:1497 msgid "Fixed cursor" msgstr "Vastgezette cursor" #: libparlatype/src/pt-waveviewer.c:1498 msgid "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." msgstr "" "Als dit wordt ingesteld op TRUE, dan is de cursor vastgezet en beweegt de " "golfvorm.\n" "Als dit wordt ingesteld op FALSE, dan beweegt de cursor." #: libparlatype/src/pt-waveviewer.c:1512 msgid "Show ruler" msgstr "Liniaal weergeven" #: libparlatype/src/pt-waveviewer.c:1513 msgid "Show the time scale with time marks" msgstr "Tijdschaal weergeven met tijdmarkeringen" parlatype-3.0/libparlatype/po/pl.po000066400000000000000000000131761414030451500174430ustar00rootroot00000000000000# Polish translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-03-12 15:52+0000\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2021-11-02 18:32+0000\n" "X-Generator: Launchpad (build 5c9d2c413ed946c4f70cb1ddd4149326eda16fc5)\n" "Language: pl\n" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1183 libparlatype/src/pt-waveviewer-ruler.c:168 #: libparlatype/src/pt-waveviewer-ruler.c:222 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d∶%02d∶%02d" #. Translators: This is a time format, like "2:05:30.1" for 2 #. hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1190 #, c-format msgctxt "long time format, 1 digit" msgid "%d:%02d:%02d.%d" msgstr "%d∶%02d∶%02d.%d" #. Translators: This is a time format, like "2:05:30.12" for 2 #. hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1197 #, c-format msgctxt "long time format, 2 digits" msgid "%d:%02d:%02d.%02d" msgstr "%d∶%02d∶%02d.%02d" #. Translators: This is a time format, like "05:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%I02d" instead #. of "%02d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1214 #, c-format msgctxt "short time format" msgid "%02d:%02d" msgstr "%02d∶%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1221 #, c-format msgctxt "short time format, 1 digit" msgid "%02d:%02d.%d" msgstr "%02d∶%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1228 #, c-format msgctxt "short time format, 2 digits" msgid "%02d:%02d.%02d" msgstr "%02d∶%02d.%02d" #. Translators: This is a time format, like "5:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1241 libparlatype/src/pt-waveviewer-ruler.c:173 #: libparlatype/src/pt-waveviewer-ruler.c:224 #, c-format msgctxt "shortest time format" msgid "%d:%02d" msgstr "%d∶%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1248 #, c-format msgctxt "shortest time format, 1 digit" msgid "%d:%02d.%d" msgstr "%d∶%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1255 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d∶%02d.%02d" #: libparlatype/src/pt-waveloader.c:494 msgid "Waveloader has outstanding operation." msgstr "Program Waveloader ma trwające działanie." #: libparlatype/src/pt-waveloader.c:509 msgid "Failed to setup GStreamer pipeline." msgstr "Konfiguracja potoku biblioteki GStreamer się nie powiodła." #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:986 #, c-format msgid "URI not valid: %s" msgstr "Adres URI jest nieprawidłowy: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:998 #, c-format msgid "File not found: %s" msgstr "Nie odnaleziono pliku: %s" #: libparlatype/src/pt-waveviewer.c:1480 msgid "Follow cursor" msgstr "Podążanie za kursorem" #: libparlatype/src/pt-waveviewer.c:1481 msgid "Scroll automatically to the cursor’s position" msgstr "Automatyczne przewijanie do pozycji kursora" #: libparlatype/src/pt-waveviewer.c:1497 msgid "Fixed cursor" msgstr "Stały kursor" #: libparlatype/src/pt-waveviewer.c:1498 msgid "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." msgstr "" "Wartość „TRUE” oznacza, że kursor ma stałą pozycję, a przebieg fali się " "porusza.\n" "Wartość „FALSE” oznacza, że kursor się porusza." #: libparlatype/src/pt-waveviewer.c:1512 msgid "Show ruler" msgstr "Wyświetlanie linijki" #: libparlatype/src/pt-waveviewer.c:1513 msgid "Show the time scale with time marks" msgstr "Wyświetlanie podziałki czasu ze znacznikami czasu" parlatype-3.0/libparlatype/po/pt.po000066400000000000000000000122651414030451500174510ustar00rootroot00000000000000# Portuguese translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # Vitor Loureiro , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2018-06-04 13:06+0000\n" "Last-Translator: Gabor Karsay \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" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1183 libparlatype/src/pt-waveviewer-ruler.c:168 #: libparlatype/src/pt-waveviewer-ruler.c:222 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is a time format, like "2:05:30.1" for 2 #. hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1190 #, c-format msgctxt "long time format, 1 digit" msgid "%d:%02d:%02d.%d" msgstr "%d:%02d:%02d.%d" #. Translators: This is a time format, like "2:05:30.12" for 2 #. hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1197 #, c-format msgctxt "long time format, 2 digits" msgid "%d:%02d:%02d.%02d" msgstr "%d:%02d:%02d.%02d" #. Translators: This is a time format, like "05:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%I02d" instead #. of "%02d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1214 #, c-format msgctxt "short time format" msgid "%02d:%02d" msgstr "%02d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1221 #, c-format msgctxt "short time format, 1 digit" msgid "%02d:%02d.%d" msgstr "%02d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1228 #, c-format msgctxt "short time format, 2 digits" msgid "%02d:%02d.%02d" msgstr "%02d:%02d.%02d" #. Translators: This is a time format, like "5:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1241 libparlatype/src/pt-waveviewer-ruler.c:173 #: libparlatype/src/pt-waveviewer-ruler.c:224 #, c-format msgctxt "shortest time format" msgid "%d:%02d" msgstr "%d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1248 #, c-format msgctxt "shortest time format, 1 digit" msgid "%d:%02d.%d" msgstr "%d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1255 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-waveloader.c:494 msgid "Waveloader has outstanding operation." msgstr "" #: libparlatype/src/pt-waveloader.c:509 msgid "Failed to setup GStreamer pipeline." msgstr "" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:986 #, c-format msgid "URI not valid: %s" msgstr "" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:998 #, c-format msgid "File not found: %s" msgstr "Ficheiro não encontrado: %s" #: libparlatype/src/pt-waveviewer.c:1480 msgid "Follow cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1481 msgid "Scroll automatically to the cursor’s position" msgstr "" #: libparlatype/src/pt-waveviewer.c:1497 msgid "Fixed cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1498 msgid "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." msgstr "" #: libparlatype/src/pt-waveviewer.c:1512 msgid "Show ruler" msgstr "" #: libparlatype/src/pt-waveviewer.c:1513 msgid "Show the time scale with time marks" msgstr "" parlatype-3.0/libparlatype/po/pt_BR.po000066400000000000000000000124771414030451500200410ustar00rootroot00000000000000# Brazilian Portuguese translation for parlatype # Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2019. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2019-03-28 11:45+0000\n" "Last-Translator: Rodrigo Macedo \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1183 libparlatype/src/pt-waveviewer-ruler.c:168 #: libparlatype/src/pt-waveviewer-ruler.c:222 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is a time format, like "2:05:30.1" for 2 #. hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1190 #, c-format msgctxt "long time format, 1 digit" msgid "%d:%02d:%02d.%d" msgstr "%d:%02d:%02d.%d" #. Translators: This is a time format, like "2:05:30.12" for 2 #. hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1197 #, c-format msgctxt "long time format, 2 digits" msgid "%d:%02d:%02d.%02d" msgstr "%d:%02d:%02d.%02d" #. Translators: This is a time format, like "05:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%I02d" instead #. of "%02d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1214 #, c-format msgctxt "short time format" msgid "%02d:%02d" msgstr "%02d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1221 #, c-format msgctxt "short time format, 1 digit" msgid "%02d:%02d.%d" msgstr "%02d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1228 #, c-format msgctxt "short time format, 2 digits" msgid "%02d:%02d.%02d" msgstr "%02d:%02d.%02d" #. Translators: This is a time format, like "5:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1241 libparlatype/src/pt-waveviewer-ruler.c:173 #: libparlatype/src/pt-waveviewer-ruler.c:224 #, c-format msgctxt "shortest time format" msgid "%d:%02d" msgstr "%d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1248 #, c-format msgctxt "shortest time format, 1 digit" msgid "%d:%02d.%d" msgstr "%d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1255 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "" #: libparlatype/src/pt-waveloader.c:494 msgid "Waveloader has outstanding operation." msgstr "" #: libparlatype/src/pt-waveloader.c:509 msgid "Failed to setup GStreamer pipeline." msgstr "" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:986 #, c-format msgid "URI not valid: %s" msgstr "URI não válida: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:998 #, c-format msgid "File not found: %s" msgstr "Arquivo não encontrado: %s" #: libparlatype/src/pt-waveviewer.c:1480 msgid "Follow cursor" msgstr "Seguir o cursor" #: libparlatype/src/pt-waveviewer.c:1481 msgid "Scroll automatically to the cursor’s position" msgstr "" #: libparlatype/src/pt-waveviewer.c:1497 msgid "Fixed cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1498 msgid "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." msgstr "" #: libparlatype/src/pt-waveviewer.c:1512 msgid "Show ruler" msgstr "" #: libparlatype/src/pt-waveviewer.c:1513 msgid "Show the time scale with time marks" msgstr "" #, c-format #~ msgid "Failed to load plugin “%s”." #~ msgstr "Falha ao carrgar plugin \"%s\"." parlatype-3.0/libparlatype/po/ru.po000066400000000000000000000133621414030451500174530ustar00rootroot00000000000000# Russian translation for parlatype # Copyright (c) 2020 Rosetta Contributors and Canonical Ltd 2020 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2020. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-05-21 13:06+0000\n" "Last-Translator: Aleksey Kabanov \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" "X-Launchpad-Export-Date: 2020-05-31 16:44+0000\n" "X-Generator: Launchpad (build 275d46a24253e557e4403d52832837e4bfa425b6)\n" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1183 libparlatype/src/pt-waveviewer-ruler.c:168 #: libparlatype/src/pt-waveviewer-ruler.c:222 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is a time format, like "2:05:30.1" for 2 #. hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1190 #, c-format msgctxt "long time format, 1 digit" msgid "%d:%02d:%02d.%d" msgstr "%d:%02d:%02d.%d" #. Translators: This is a time format, like "2:05:30.12" for 2 #. hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1197 #, c-format msgctxt "long time format, 2 digits" msgid "%d:%02d:%02d.%02d" msgstr "%d:%02d:%02d.%02d" #. Translators: This is a time format, like "05:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%I02d" instead #. of "%02d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1214 #, c-format msgctxt "short time format" msgid "%02d:%02d" msgstr "%02d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1221 #, c-format msgctxt "short time format, 1 digit" msgid "%02d:%02d.%d" msgstr "%02d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1228 #, c-format msgctxt "short time format, 2 digits" msgid "%02d:%02d.%02d" msgstr "%02d:%02d.%02d" #. Translators: This is a time format, like "5:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1241 libparlatype/src/pt-waveviewer-ruler.c:173 #: libparlatype/src/pt-waveviewer-ruler.c:224 #, c-format msgctxt "shortest time format" msgid "%d:%02d" msgstr "%d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1248 #, c-format msgctxt "shortest time format, 1 digit" msgid "%d:%02d.%d" msgstr "%d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1255 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-waveloader.c:494 msgid "Waveloader has outstanding operation." msgstr "" #: libparlatype/src/pt-waveloader.c:509 msgid "Failed to setup GStreamer pipeline." msgstr "" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:986 #, c-format msgid "URI not valid: %s" msgstr "Неправильный URI: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:998 #, c-format msgid "File not found: %s" msgstr "Файл не найден: %s" #: libparlatype/src/pt-waveviewer.c:1480 msgid "Follow cursor" msgstr "Следовать за курсором" #: libparlatype/src/pt-waveviewer.c:1481 msgid "Scroll automatically to the cursor’s position" msgstr "Автоматически прокручивать к позиции курсора" #: libparlatype/src/pt-waveviewer.c:1497 msgid "Fixed cursor" msgstr "Фиксированный курсор" #: libparlatype/src/pt-waveviewer.c:1498 msgid "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." msgstr "" "Если TRUE, то курсор неподвижен, а график звука перемещается.\n" "Если FALSE, то движется курсор." #: libparlatype/src/pt-waveviewer.c:1512 msgid "Show ruler" msgstr "Показать линейку" #: libparlatype/src/pt-waveviewer.c:1513 msgid "Show the time scale with time marks" msgstr "Показать шкалу с отметками времени" #, c-format #~ msgid "Failed to load plugin “%s”." #~ msgstr "Не удалось загрузить плагин “%s”." parlatype-3.0/libparlatype/po/sk.po000066400000000000000000000120271414030451500174370ustar00rootroot00000000000000# Slovak translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2017-11-23 21:21+0000\n" "Last-Translator: nobody yet \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" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1183 libparlatype/src/pt-waveviewer-ruler.c:168 #: libparlatype/src/pt-waveviewer-ruler.c:222 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "" #. Translators: This is a time format, like "2:05:30.1" for 2 #. hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1190 #, c-format msgctxt "long time format, 1 digit" msgid "%d:%02d:%02d.%d" msgstr "" #. Translators: This is a time format, like "2:05:30.12" for 2 #. hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1197 #, c-format msgctxt "long time format, 2 digits" msgid "%d:%02d:%02d.%02d" msgstr "" #. Translators: This is a time format, like "05:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%I02d" instead #. of "%02d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1214 #, c-format msgctxt "short time format" msgid "%02d:%02d" msgstr "" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1221 #, c-format msgctxt "short time format, 1 digit" msgid "%02d:%02d.%d" msgstr "" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1228 #, c-format msgctxt "short time format, 2 digits" msgid "%02d:%02d.%02d" msgstr "" #. Translators: This is a time format, like "5:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1241 libparlatype/src/pt-waveviewer-ruler.c:173 #: libparlatype/src/pt-waveviewer-ruler.c:224 #, c-format msgctxt "shortest time format" msgid "%d:%02d" msgstr "" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1248 #, c-format msgctxt "shortest time format, 1 digit" msgid "%d:%02d.%d" msgstr "" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1255 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "" #: libparlatype/src/pt-waveloader.c:494 msgid "Waveloader has outstanding operation." msgstr "" #: libparlatype/src/pt-waveloader.c:509 msgid "Failed to setup GStreamer pipeline." msgstr "" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:986 #, c-format msgid "URI not valid: %s" msgstr "" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:998 #, c-format msgid "File not found: %s" msgstr "" #: libparlatype/src/pt-waveviewer.c:1480 msgid "Follow cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1481 msgid "Scroll automatically to the cursor’s position" msgstr "" #: libparlatype/src/pt-waveviewer.c:1497 msgid "Fixed cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1498 msgid "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." msgstr "" #: libparlatype/src/pt-waveviewer.c:1512 msgid "Show ruler" msgstr "" #: libparlatype/src/pt-waveviewer.c:1513 msgid "Show the time scale with time marks" msgstr "" parlatype-3.0/libparlatype/po/sv.po000066400000000000000000000123041414030451500174500ustar00rootroot00000000000000# Swedish translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2017-11-20 20:40+0000\n" "Last-Translator: Tommy Brunn \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" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1183 libparlatype/src/pt-waveviewer-ruler.c:168 #: libparlatype/src/pt-waveviewer-ruler.c:222 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is a time format, like "2:05:30.1" for 2 #. hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1190 #, c-format msgctxt "long time format, 1 digit" msgid "%d:%02d:%02d.%d" msgstr "%d:%02d:%02d.%d" #. Translators: This is a time format, like "2:05:30.12" for 2 #. hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may #. change ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1197 #, c-format msgctxt "long time format, 2 digits" msgid "%d:%02d:%02d.%02d" msgstr "%d:%02d:%02d.%02d" #. Translators: This is a time format, like "05:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%I02d" instead #. of "%02d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1214 #, c-format msgctxt "short time format" msgid "%02d:%02d" msgstr "%02d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1221 #, c-format msgctxt "short time format, 1 digit" msgid "%02d:%02d.%d" msgstr "%02d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1228 #, c-format msgctxt "short time format, 2 digits" msgid "%02d:%02d.%02d" msgstr "%02d:%02d.%02d" #. Translators: This is a time format, like "5:30" for #. 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1241 libparlatype/src/pt-waveviewer-ruler.c:173 #: libparlatype/src/pt-waveviewer-ruler.c:224 #, c-format msgctxt "shortest time format" msgid "%d:%02d" msgstr "%d:%02d" #. Translators: This is a time format, like "05:30.1" for #. 5 minutes, 30 seconds, and 1 tenthsecond. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1248 #, c-format msgctxt "shortest time format, 1 digit" msgid "%d:%02d.%d" msgstr "%d:%02d.%d" #. Translators: This is a time format, like "05:30.12" for #. 5 minutes, 30 seconds, and 12 hundrethseconds. You may change #. ":" or "." to the separator that your locale uses or #. use "%Id" instead of "%d" if your locale uses localized digits. #: libparlatype/src/pt-player.c:1255 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-waveloader.c:494 msgid "Waveloader has outstanding operation." msgstr "" #: libparlatype/src/pt-waveloader.c:509 msgid "Failed to setup GStreamer pipeline." msgstr "" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:986 #, c-format msgid "URI not valid: %s" msgstr "Ogiltig URI: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-waveviewer.c:998 #, c-format msgid "File not found: %s" msgstr "Filen hittades inte: %s" #: libparlatype/src/pt-waveviewer.c:1480 msgid "Follow cursor" msgstr "Följ markör" #: libparlatype/src/pt-waveviewer.c:1481 msgid "Scroll automatically to the cursor’s position" msgstr "" #: libparlatype/src/pt-waveviewer.c:1497 msgid "Fixed cursor" msgstr "Fast pekare" #: libparlatype/src/pt-waveviewer.c:1498 msgid "" "If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving." msgstr "" #: libparlatype/src/pt-waveviewer.c:1512 msgid "Show ruler" msgstr "" #: libparlatype/src/pt-waveviewer.c:1513 msgid "Show the time scale with time marks" msgstr "" parlatype-3.0/libparlatype/src/000077500000000000000000000000001414030451500166315ustar00rootroot00000000000000parlatype-3.0/libparlatype/src/contrib/000077500000000000000000000000001414030451500202715ustar00rootroot00000000000000parlatype-3.0/libparlatype/src/contrib/gnome-languages.c000066400000000000000000001204231414030451500235100ustar00rootroot00000000000000/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- * * Copyright 2008 Red Hat, Inc, * 2007 William Jon McCann * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . * * Written by : William Jon McCann * Ray Strode */ #include "config.h" #include #include #include #include #include #include #include #include #include #include #define GETTEXT_PACKAGE GETTEXT_LIB #include #include #include "gnome-languages.h" #include #ifndef __LC_LAST #define __LC_LAST 13 #endif #define ISO_CODES_DATADIR ISO_CODES_PREFIX "/share/xml/iso-codes" #define ISO_CODES_LOCALESDIR ISO_CODES_PREFIX "/share/locale" typedef struct _GnomeLocale { char *id; char *name; char *language_code; char *territory_code; char *codeset; char *modifier; } GnomeLocale; static GHashTable *gnome_languages_map; static GHashTable *gnome_territories_map; static GHashTable *gnome_available_locales_map; static GHashTable *gnome_language_count_map; static GHashTable *gnome_territory_count_map; static char * construct_language_name (const char *language, const char *territory, const char *codeset, const char *modifier); static gboolean language_name_is_valid (const char *language_name); static void gnome_locale_free (GnomeLocale *locale) { if (locale == NULL) { return; } g_free (locale->id); g_free (locale->name); g_free (locale->codeset); g_free (locale->modifier); g_free (locale->language_code); g_free (locale->territory_code); g_free (locale); } static char * normalize_codeset (const char *codeset) { if (codeset == NULL) return NULL; if (g_str_equal (codeset, "UTF-8") || g_str_equal (codeset, "utf8")) return g_strdup ("UTF-8"); return g_strdup (codeset); } /** * gnome_parse_locale: * @locale: a locale string * @language_codep: (out) (optional) (transfer full): location to * store the language code, or %NULL * @country_codep: (out) (optional) (nullable) (transfer full): location to * store the country code, or %NULL * @codesetp: (out) (optional) (nullable) (transfer full): location to * store the codeset, or %NULL * @modifierp: (out) (optional) (nullable) (transfer full): location to * store the modifier, or %NULL * * Extracts the various components of a locale string of the form * [language[_country][.codeset][@modifier]]. See * http://en.wikipedia.org/wiki/Locale. * * Return value: %TRUE if parsing was successful. * * Since: 3.8 */ gboolean gnome_parse_locale (const char *locale, char **language_codep, char **country_codep, char **codesetp, char **modifierp) { static GRegex *re = NULL; GMatchInfo *match_info; gboolean res; gboolean retval; match_info = NULL; retval = FALSE; if (re == NULL) { GError *error = NULL; re = g_regex_new ("^(?P[^_.@[:space:]]+)" "(_(?P[[:upper:]]+))?" "(\\.(?P[-_0-9a-zA-Z]+))?" "(@(?P[[:ascii:]]+))?$", 0, 0, &error); if (re == NULL) { g_warning ("%s", error->message); g_error_free (error); goto out; } } if (!g_regex_match (re, locale, 0, &match_info) || g_match_info_is_partial_match (match_info)) { g_warning ("locale '%s' isn't valid\n", locale); goto out; } res = g_match_info_matches (match_info); if (! res) { g_warning ("Unable to parse locale: %s", locale); goto out; } retval = TRUE; if (language_codep != NULL) { *language_codep = g_match_info_fetch_named (match_info, "language"); } if (country_codep != NULL) { *country_codep = g_match_info_fetch_named (match_info, "territory"); if (*country_codep != NULL && *country_codep[0] == '\0') { g_free (*country_codep); *country_codep = NULL; } } if (codesetp != NULL) { *codesetp = g_match_info_fetch_named (match_info, "codeset"); if (*codesetp != NULL && *codesetp[0] == '\0') { g_free (*codesetp); *codesetp = NULL; } } if (modifierp != NULL) { *modifierp = g_match_info_fetch_named (match_info, "modifier"); if (*modifierp != NULL && *modifierp[0] == '\0') { g_free (*modifierp); *modifierp = NULL; } } if (codesetp != NULL && *codesetp != NULL) { g_autofree gchar *normalized_codeset = NULL; g_autofree gchar *normalized_name = NULL; normalized_codeset = normalize_codeset (*codesetp); normalized_name = construct_language_name (language_codep ? *language_codep : NULL, country_codep ? *country_codep : NULL, normalized_codeset, modifierp ? *modifierp : NULL); if (language_name_is_valid (normalized_name)) { g_free (*codesetp); *codesetp = g_steal_pointer (&normalized_codeset); } } out: g_match_info_free (match_info); return retval; } static char * construct_language_name (const char *language, const char *territory, const char *codeset, const char *modifier) { char *name; g_assert (language != NULL && language[0] != 0); g_assert (territory == NULL || territory[0] != 0); g_assert (codeset == NULL || codeset[0] != 0); g_assert (modifier == NULL || modifier[0] != 0); name = g_strdup_printf ("%s%s%s%s%s%s%s", language, territory != NULL? "_" : "", territory != NULL? territory : "", codeset != NULL? "." : "", codeset != NULL? codeset : "", modifier != NULL? "@" : "", modifier != NULL? modifier : ""); return name; } /** * gnome_normalize_locale: * @locale: a locale string * * Gets the normalized locale string in the form * [language[_country][.codeset][@modifier]] for @name. * * Return value: (transfer full): normalized locale string. Caller * takes ownership. * * Since: 3.8 */ char * gnome_normalize_locale (const char *locale) { char *normalized_name; gboolean valid; g_autofree char *language_code = NULL; g_autofree char *territory_code = NULL; g_autofree char *codeset = NULL; g_autofree char *modifier = NULL; if (locale[0] == '\0') { return NULL; } valid = gnome_parse_locale (locale, &language_code, &territory_code, &codeset, &modifier); if (!valid) return NULL; normalized_name = construct_language_name (language_code, territory_code, codeset, modifier); return normalized_name; } static gboolean language_name_is_valid (const char *language_name) { locale_t locale; if (language_name == NULL) return FALSE; locale = newlocale (LC_MESSAGES_MASK, language_name, (locale_t) 0); if (locale != (locale_t) 0) { freelocale (locale); return TRUE; } return FALSE; } static void language_name_get_codeset_details (const char *language_name, char **pcodeset, gboolean *is_utf8) { locale_t locale; const char *codeset = NULL; if (language_name == NULL) { language_name = setlocale (LC_MESSAGES, NULL); } locale = newlocale (LC_CTYPE_MASK, language_name, (locale_t) 0); if (locale == (locale_t) 0) return; codeset = nl_langinfo_l (CODESET, locale); if (pcodeset != NULL) { *pcodeset = g_strdup (codeset); } if (is_utf8 != NULL) { g_autofree char *normalized_codeset = normalize_codeset (codeset); *is_utf8 = strcmp (normalized_codeset, "UTF-8") == 0; } freelocale (locale); } /** * gnome_language_has_translations: * @code: an ISO 639 code string * * Returns %TRUE if there are translations for language @code. * * Return value: %TRUE if there are translations for language @code. * * Since: 3.8 */ gboolean gnome_language_has_translations (const char *code) { GDir *dir; const char *name; gboolean has_translations; g_autofree char *path = NULL; path = g_build_filename (LOCALEDIR, code, "LC_MESSAGES", NULL); has_translations = FALSE; dir = g_dir_open (path, 0, NULL); if (dir == NULL) { goto out; } do { name = g_dir_read_name (dir); if (name == NULL) { break; } if (g_str_has_suffix (name, ".mo")) { has_translations = TRUE; break; } } while (name != NULL); g_dir_close (dir); out: return has_translations; } static gboolean add_locale (const char *language_name, gboolean utf8_only) { GnomeLocale *locale; GnomeLocale *old_locale; g_autofree char *name = NULL; gboolean is_utf8 = FALSE; gboolean valid = FALSE; g_return_val_if_fail (language_name != NULL, FALSE); g_return_val_if_fail (*language_name != '\0', FALSE); language_name_get_codeset_details (language_name, NULL, &is_utf8); if (is_utf8) { name = g_strdup (language_name); } else if (utf8_only) { if (strchr (language_name, '.')) return FALSE; /* If the locale name has no dot, assume that its * encoding part is missing and try again after adding * ".UTF-8". This catches locale names like "de_DE". */ name = g_strdup_printf ("%s.UTF-8", language_name); language_name_get_codeset_details (name, NULL, &is_utf8); if (!is_utf8) return FALSE; } else { name = g_strdup (language_name); } if (!language_name_is_valid (name)) { g_debug ("Ignoring '%s' as a locale, since it's invalid", name); return FALSE; } locale = g_new0 (GnomeLocale, 1); valid = gnome_parse_locale (name, &locale->language_code, &locale->territory_code, &locale->codeset, &locale->modifier); if (!valid) { gnome_locale_free (locale); return FALSE; } locale->id = construct_language_name (locale->language_code, locale->territory_code, NULL, locale->modifier); locale->name = construct_language_name (locale->language_code, locale->territory_code, locale->codeset, locale->modifier); if (!gnome_language_has_translations (locale->name) && !gnome_language_has_translations (locale->id) && !gnome_language_has_translations (locale->language_code) && utf8_only) { g_debug ("Ignoring '%s' as a locale, since it lacks translations", locale->name); gnome_locale_free (locale); return FALSE; } if (!utf8_only) { g_free (locale->id); locale->id = g_strdup (locale->name); } old_locale = g_hash_table_lookup (gnome_available_locales_map, locale->id); if (old_locale != NULL) { if (strlen (old_locale->name) > strlen (locale->name)) { gnome_locale_free (locale); return FALSE; } } g_hash_table_insert (gnome_available_locales_map, g_strdup (locale->id), locale); return TRUE; } static int select_dirs (const struct dirent *dirent) { int result = 0; if (strcmp (dirent->d_name, ".") != 0 && strcmp (dirent->d_name, "..") != 0) { mode_t mode = 0; #ifdef _DIRENT_HAVE_D_TYPE if (dirent->d_type != DT_UNKNOWN && dirent->d_type != DT_LNK) { mode = DTTOIF (dirent->d_type); } else #endif { struct stat st; g_autofree char *path = NULL; path = g_build_filename (LOCALEDIR, dirent->d_name, NULL); if (g_stat (path, &st) == 0) { mode = st.st_mode; } } result = S_ISDIR (mode); } return result; } static gboolean collect_locales_from_directory (void) { gboolean found_locales = FALSE; struct dirent **dirents; int ndirents; int cnt; ndirents = scandir (LOCALEDIR, &dirents, select_dirs, alphasort); for (cnt = 0; cnt < ndirents; ++cnt) { if (add_locale (dirents[cnt]->d_name, TRUE)) found_locales = TRUE; } if (ndirents > 0) { free (dirents); } return found_locales; } static gboolean collect_locales_from_localebin (void) { gboolean found_locales = FALSE; const gchar *argv[] = { "locale", "-a", NULL }; gchar **linep; g_auto (GStrv) lines = NULL; g_autofree gchar *output = NULL; if (g_spawn_sync (NULL, (gchar **) argv, NULL, G_SPAWN_SEARCH_PATH|G_SPAWN_STDERR_TO_DEV_NULL, NULL, NULL, &output, NULL, NULL, NULL) == FALSE) return FALSE; g_return_val_if_fail (output != NULL, FALSE); lines = g_strsplit (output, "\n", 0); if (lines) { linep = lines; while (*linep) { if (*linep[0] && add_locale (*linep, TRUE)) found_locales = TRUE; linep++; } } return found_locales; } static void count_languages_and_territories (void) { gpointer value; GHashTableIter iter; gnome_language_count_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); gnome_territory_count_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); g_hash_table_iter_init (&iter, gnome_available_locales_map); while (g_hash_table_iter_next (&iter, NULL, &value)) { GnomeLocale *locale; locale = (GnomeLocale *) value; if (locale->language_code != NULL) { int count; count = GPOINTER_TO_INT (g_hash_table_lookup (gnome_language_count_map, locale->language_code)); count++; g_hash_table_insert (gnome_language_count_map, g_strdup (locale->language_code), GINT_TO_POINTER (count)); } if (locale->territory_code != NULL) { int count; count = GPOINTER_TO_INT (g_hash_table_lookup (gnome_territory_count_map, locale->territory_code)); count++; g_hash_table_insert (gnome_territory_count_map, g_strdup (locale->territory_code), GINT_TO_POINTER (count)); } } } static void collect_locales (void) { gboolean found_localebin_locales = FALSE; gboolean found_dir_locales = FALSE; if (gnome_available_locales_map == NULL) { gnome_available_locales_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) gnome_locale_free); } found_localebin_locales = collect_locales_from_localebin (); found_dir_locales = collect_locales_from_directory (); if (!(found_localebin_locales || found_dir_locales)) { g_warning ("Could not read list of available locales from libc, " "guessing possible locales from available translations, " "but list may be incomplete!"); } count_languages_and_territories (); } static gint get_language_count (const char *language) { if (gnome_language_count_map == NULL) { collect_locales (); } return GPOINTER_TO_INT (g_hash_table_lookup (gnome_language_count_map, language)); } static gboolean is_unique_language (const char *language) { return get_language_count (language) == 1; } static gint get_territory_count (const char *territory) { if (gnome_territory_count_map == NULL) { collect_locales (); } return GPOINTER_TO_INT (g_hash_table_lookup (gnome_territory_count_map, territory)); } static gboolean is_unique_territory (const char *territory) { return get_territory_count (territory) == 1; } static gboolean is_fallback_language (const char *code) { const char *fallback_language_names[] = { "C", "POSIX", NULL }; int i; for (i = 0; fallback_language_names[i] != NULL; i++) { if (strcmp (code, fallback_language_names[i]) == 0) { return TRUE; } } return FALSE; } static const char * get_language (const char *code) { const char *name; int len; g_assert (code != NULL); if (is_fallback_language (code)) { return "Unspecified"; } len = strlen (code); if (len != 2 && len != 3) { return NULL; } name = (const char *) g_hash_table_lookup (gnome_languages_map, code); return name; } static char * get_first_item_in_semicolon_list (const char *list) { char **items; char *item; /* Some entries in iso codes have multiple values, separated * by semicolons. Not really sure which one to pick, so * we just arbitrarily pick the first one. */ items = g_strsplit (list, "; ", 2); item = g_strdup (items[0]); g_strfreev (items); return item; } static char * capitalize_utf8_string (const char *str) { char first[8] = { 0 }; if (!str) return NULL; g_unichar_to_utf8 (g_unichar_totitle (g_utf8_get_char (str)), first); return g_strconcat (first, g_utf8_offset_to_pointer (str, 1), NULL); } static char * get_translated_language (const char *code, const char *locale) { const char *language; char *name; language = get_language (code); name = NULL; if (language != NULL) { const char *translated_name; locale_t loc = 0; if (locale == NULL) { locale = setlocale (LC_MESSAGES, NULL); } loc = newlocale (LC_MESSAGES_MASK, locale, (locale_t) 0); if (loc == (locale_t) 0) return NULL; if (is_fallback_language (code)) { name = g_strdup (_("Unspecified")); } else { g_autofree char *tmp = NULL; translated_name = dgettext ("iso_639", language); tmp = get_first_item_in_semicolon_list (translated_name); name = capitalize_utf8_string (tmp); } freelocale (loc); } return name; } static const char * get_territory (const char *code) { const char *name; int len; g_assert (code != NULL); len = strlen (code); if (len != 2 && len != 3) { return NULL; } name = (const char *) g_hash_table_lookup (gnome_territories_map, code); return name; } static char * get_translated_territory (const char *code, const char *locale) { const char *territory; char *name; territory = get_territory (code); name = NULL; if (territory != NULL) { const char *translated_territory; locale_t loc; g_autofree char *tmp = NULL; if (locale == NULL) { locale = setlocale (LC_MESSAGES, NULL); } loc = newlocale (LC_MESSAGES_MASK, locale, (locale_t) 0); if (loc == (locale_t) 0) return NULL; translated_territory = dgettext ("iso_3166", territory); tmp = get_first_item_in_semicolon_list (translated_territory); name = capitalize_utf8_string (tmp); freelocale (loc); } return name; } static void languages_parse_start_tag (GMarkupParseContext *ctx, const char *element_name, const char **attr_names, const char **attr_values, gpointer user_data, GError **error) { const char *ccode_longB; const char *ccode_longT; const char *ccode; const char *ccode_id; const char *lang_common_name; const char *lang_name; if (! (g_str_equal (element_name, "iso_639_entry") || g_str_equal (element_name, "iso_639_3_entry")) || attr_names == NULL || attr_values == NULL) { return; } ccode = NULL; ccode_longB = NULL; ccode_longT = NULL; ccode_id = NULL; lang_common_name = NULL; lang_name = NULL; while (*attr_names && *attr_values) { if (g_str_equal (*attr_names, "iso_639_1_code")) { /* skip if empty */ if (**attr_values) { if (strlen (*attr_values) != 2) { return; } ccode = *attr_values; } } else if (g_str_equal (*attr_names, "iso_639_2B_code")) { /* skip if empty */ if (**attr_values) { if (strlen (*attr_values) != 3) { return; } ccode_longB = *attr_values; } } else if (g_str_equal (*attr_names, "iso_639_2T_code")) { /* skip if empty */ if (**attr_values) { if (strlen (*attr_values) != 3) { return; } ccode_longT = *attr_values; } } else if (g_str_equal (*attr_names, "id")) { /* skip if empty */ if (**attr_values) { if (strlen (*attr_values) != 2 && strlen (*attr_values) != 3) { return; } ccode_id = *attr_values; } } else if (g_str_equal (*attr_names, "common_name")) { /* skip if empty */ if (**attr_values) { lang_common_name = *attr_values; } } else if (g_str_equal (*attr_names, "name")) { lang_name = *attr_values; } ++attr_names; ++attr_values; } if (lang_common_name != NULL) { lang_name = lang_common_name; } if (lang_name == NULL) { return; } if (ccode != NULL) { g_hash_table_insert (gnome_languages_map, g_strdup (ccode), g_strdup (lang_name)); } if (ccode_longB != NULL) { g_hash_table_insert (gnome_languages_map, g_strdup (ccode_longB), g_strdup (lang_name)); } if (ccode_longT != NULL) { g_hash_table_insert (gnome_languages_map, g_strdup (ccode_longT), g_strdup (lang_name)); } if (ccode_id != NULL) { g_hash_table_insert (gnome_languages_map, g_strdup (ccode_id), g_strdup (lang_name)); } } static void territories_parse_start_tag (GMarkupParseContext *ctx, const char *element_name, const char **attr_names, const char **attr_values, gpointer user_data, GError **error) { const char *acode_2; const char *acode_3; const char *ncode; const char *territory_common_name; const char *territory_name; if (! g_str_equal (element_name, "iso_3166_entry") || attr_names == NULL || attr_values == NULL) { return; } acode_2 = NULL; acode_3 = NULL; ncode = NULL; territory_common_name = NULL; territory_name = NULL; while (*attr_names && *attr_values) { if (g_str_equal (*attr_names, "alpha_2_code")) { /* skip if empty */ if (**attr_values) { if (strlen (*attr_values) != 2) { return; } acode_2 = *attr_values; } } else if (g_str_equal (*attr_names, "alpha_3_code")) { /* skip if empty */ if (**attr_values) { if (strlen (*attr_values) != 3) { return; } acode_3 = *attr_values; } } else if (g_str_equal (*attr_names, "numeric_code")) { /* skip if empty */ if (**attr_values) { if (strlen (*attr_values) != 3) { return; } ncode = *attr_values; } } else if (g_str_equal (*attr_names, "common_name")) { /* skip if empty */ if (**attr_values) { territory_common_name = *attr_values; } } else if (g_str_equal (*attr_names, "name")) { territory_name = *attr_values; } ++attr_names; ++attr_values; } if (territory_common_name != NULL) { territory_name = territory_common_name; } if (territory_name == NULL) { return; } if (acode_2 != NULL) { g_hash_table_insert (gnome_territories_map, g_strdup (acode_2), g_strdup (territory_name)); } if (acode_3 != NULL) { g_hash_table_insert (gnome_territories_map, g_strdup (acode_3), g_strdup (territory_name)); } if (ncode != NULL) { g_hash_table_insert (gnome_territories_map, g_strdup (ncode), g_strdup (territory_name)); } } static void languages_variant_init (const char *variant) { gboolean res; gsize buf_len; g_autofree char *buf = NULL; g_autofree char *filename = NULL; g_autoptr (GError) error = NULL; bindtextdomain (variant, ISO_CODES_LOCALESDIR); bind_textdomain_codeset (variant, "UTF-8"); error = NULL; filename = g_strdup_printf (ISO_CODES_DATADIR "/%s.xml", variant); res = g_file_get_contents (filename, &buf, &buf_len, &error); if (res) { g_autoptr (GMarkupParseContext) ctx = NULL; GMarkupParser parser = { languages_parse_start_tag, NULL, NULL, NULL, NULL }; ctx = g_markup_parse_context_new (&parser, 0, NULL, NULL); error = NULL; res = g_markup_parse_context_parse (ctx, buf, buf_len, &error); if (! res) { g_warning ("Failed to parse '%s': %s\n", filename, error->message); } } else { g_warning ("Failed to load '%s': %s\n", filename, error->message); } } static void languages_init (void) { if (gnome_languages_map) return; bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); gnome_languages_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); languages_variant_init ("iso_639"); languages_variant_init ("iso_639_3"); } static void territories_init (void) { gboolean res; gsize buf_len; g_autofree char *buf = NULL; g_autoptr (GError) error = NULL; if (gnome_territories_map) return; bindtextdomain ("iso_3166", ISO_CODES_LOCALESDIR); bind_textdomain_codeset ("iso_3166", "UTF-8"); gnome_territories_map = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); error = NULL; res = g_file_get_contents (ISO_CODES_DATADIR "/iso_3166.xml", &buf, &buf_len, &error); if (res) { g_autoptr (GMarkupParseContext) ctx = NULL; GMarkupParser parser = { territories_parse_start_tag, NULL, NULL, NULL, NULL }; ctx = g_markup_parse_context_new (&parser, 0, NULL, NULL); error = NULL; res = g_markup_parse_context_parse (ctx, buf, buf_len, &error); if (! res) { g_warning ("Failed to parse '%s': %s\n", ISO_CODES_DATADIR "/iso_3166.xml", error->message); } } else { g_warning ("Failed to load '%s': %s\n", ISO_CODES_DATADIR "/iso_3166.xml", error->message); } } /** * gnome_get_language_from_locale: * @locale: a locale string * @translation: (nullable): a locale string * * Gets the language description for @locale. If @translation is * provided the returned string is translated accordingly. * * Return value: (transfer full): the language description. Caller * takes ownership. * * Since: 3.8 */ char * gnome_get_language_from_locale (const char *locale, const char *translation) { GString *full_language; g_autofree char *language_code = NULL; g_autofree char *territory_code = NULL; g_autofree char *codeset_code = NULL; g_autofree char *langinfo_codeset = NULL; g_autofree char *translated_language = NULL; g_autofree char *translated_territory = NULL; gboolean is_utf8 = TRUE; g_return_val_if_fail (locale != NULL, NULL); g_return_val_if_fail (*locale != '\0', NULL); full_language = g_string_new (NULL); languages_init (); territories_init (); gnome_parse_locale (locale, &language_code, &territory_code, &codeset_code, NULL); if (language_code == NULL) { goto out; } translated_language = get_translated_language (language_code, translation); if (translated_language == NULL) { goto out; } full_language = g_string_append (full_language, translated_language); if (is_unique_language (language_code)) { goto out; } if (territory_code != NULL) { translated_territory = get_translated_territory (territory_code, translation); } if (translated_territory != NULL) { g_string_append_printf (full_language, " (%s)", translated_territory); } language_name_get_codeset_details (locale, &langinfo_codeset, &is_utf8); if (codeset_code == NULL && langinfo_codeset != NULL) { codeset_code = g_strdup (langinfo_codeset); } if (!is_utf8 && codeset_code) { g_string_append_printf (full_language, " [%s]", codeset_code); } out: if (full_language->len == 0) { g_string_free (full_language, TRUE); return NULL; } return g_string_free (full_language, FALSE); } /** * gnome_get_country_from_locale: * @locale: a locale string * @translation: (nullable): a locale string * * Gets the country description for @locale. If @translation is * provided the returned string is translated accordingly. * * Return value: (transfer full): the country description. Caller * takes ownership. * * Since: 3.8 */ char * gnome_get_country_from_locale (const char *locale, const char *translation) { GString *full_name; g_autofree char *language_code = NULL; g_autofree char *territory_code = NULL; g_autofree char *codeset_code = NULL; g_autofree char *langinfo_codeset = NULL; g_autofree char *translated_language = NULL; g_autofree char *translated_territory = NULL; gboolean is_utf8 = TRUE; g_return_val_if_fail (locale != NULL, NULL); g_return_val_if_fail (*locale != '\0', NULL); full_name = g_string_new (NULL); languages_init (); territories_init (); gnome_parse_locale (locale, &language_code, &territory_code, &codeset_code, NULL); if (territory_code == NULL) { goto out; } translated_territory = get_translated_territory (territory_code, translation); g_string_append (full_name, translated_territory); if (is_unique_territory (territory_code)) { goto out; } if (language_code != NULL) { translated_language = get_translated_language (language_code, translation); } if (translated_language != NULL) { g_string_append_printf (full_name, " (%s", translated_language); } if (translated_language != NULL) g_string_append_printf (full_name, ")"); language_name_get_codeset_details (translation, &langinfo_codeset, &is_utf8); if (codeset_code == NULL && langinfo_codeset != NULL) { codeset_code = g_strdup (langinfo_codeset); } if (!is_utf8 && codeset_code) { g_string_append_printf (full_name, " [%s]", codeset_code); } out: if (full_name->len == 0) { g_string_free (full_name, TRUE); return NULL; } return g_string_free (full_name, FALSE); } /** * gnome_get_all_locales: * * Gets all locales. * * Return value: (array zero-terminated=1) (element-type utf8) (transfer full): * a newly allocated %NULL-terminated string array containing the * all locales. Free with g_strfreev(). * * Since: 3.8 */ char ** gnome_get_all_locales (void) { GHashTableIter iter; gpointer key, value; GPtrArray *array; if (gnome_available_locales_map == NULL) { collect_locales (); } array = g_ptr_array_new (); g_hash_table_iter_init (&iter, gnome_available_locales_map); while (g_hash_table_iter_next (&iter, &key, &value)) { GnomeLocale *locale; locale = (GnomeLocale *) value; g_ptr_array_add (array, g_strdup (locale->name)); } g_ptr_array_add (array, NULL); return (char **) g_ptr_array_free (array, FALSE); } /** * gnome_get_language_from_code: * @code: an ISO 639 code string * @translation: (nullable): a locale string * * Gets the language name for @code. If @translation is provided the * returned string is translated accordingly. * * Return value: (transfer full): the language name. Caller takes * ownership. * * Since: 3.8 */ char * gnome_get_language_from_code (const char *code, const char *translation) { g_return_val_if_fail (code != NULL, NULL); languages_init (); return get_translated_language (code, translation); } /** * gnome_get_country_from_code: * @code: an ISO 3166 code string * @translation: (nullable): a locale string * * Gets the country name for @code. If @translation is provided the * returned string is translated accordingly. * * Return value: (transfer full): the country name. Caller takes * ownership. * * Since: 3.8 */ char * gnome_get_country_from_code (const char *code, const char *translation) { g_return_val_if_fail (code != NULL, NULL); territories_init (); return get_translated_territory (code, translation); } parlatype-3.0/libparlatype/src/contrib/gnome-languages.h000066400000000000000000000041471414030451500235210ustar00rootroot00000000000000/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- * * Copyright 2008 Red Hat, Inc. * Copyright 2007 William Jon McCann * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . * * Written by: Ray Strode * William Jon McCann */ #ifndef __GNOME_LANGUAGES_H #define __GNOME_LANGUAGES_H #include G_BEGIN_DECLS char * gnome_get_language_from_locale (const char *locale, const char *translation); char * gnome_get_country_from_locale (const char *locale, const char *translation); char ** gnome_get_all_locales (void); gboolean gnome_parse_locale (const char *locale, char **language_codep, char **country_codep, char **codesetp, char **modifierp); char * gnome_normalize_locale (const char *locale); gboolean gnome_language_has_translations (const char *code); char * gnome_get_language_from_code (const char *code, const char *translation); char * gnome_get_country_from_code (const char *code, const char *translation); G_END_DECLS #endif /* __GNOME_LANGUAGES_H */ parlatype-3.0/libparlatype/src/gst/000077500000000000000000000000001414030451500174265ustar00rootroot00000000000000parlatype-3.0/libparlatype/src/gst/gst-helpers.c000066400000000000000000000027361414030451500220370ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2021 * * 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 . */ #include "config.h" #define GETTEXT_PACKAGE GETTEXT_LIB #include #include #include #include "gst-helpers.h" GstElement* _pt_make_element (gchar *factoryname, gchar *name, GError **error) { g_return_val_if_fail (error == NULL || *error == NULL, NULL); GstElement *result; result = gst_element_factory_make (factoryname, name); if (!result) { if (error == NULL) { g_log_structured ( G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, "MESSAGE", _("Failed to load plugin “%s”."), factoryname); } else { g_set_error (error, GST_CORE_ERROR, GST_CORE_ERROR_MISSING_PLUGIN, _("Failed to load plugin “%s”."), factoryname); } } return result; } parlatype-3.0/libparlatype/src/gst/gst-helpers.h000066400000000000000000000017251414030451500220410ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2020 * * 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 . */ #ifndef GST_HELPERS_H #define GST_HELPERS_H #include G_BEGIN_DECLS GstElement* _pt_make_element (gchar *factoryname, gchar *name, GError **error); G_END_DECLS #endif parlatype-3.0/libparlatype/src/gst/gstparlasphinx.c000066400000000000000000000712401414030451500226450ustar00rootroot00000000000000/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */ /* ==================================================================== * Copyright (c) 2014 Alpha Cephei Inc. * Copyright (c) 2007 Carnegie Mellon University. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * This work was supported in part by funding from the Defense Advanced * Research Projects Agency and the National Science Foundation of the * United States of America, and the CMU Sphinx Speech Consortium. * * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * ==================================================================== * * Author: David Huggins-Daines * Slightly modified by Gabor Karsay to make it work * with Parlatype. * TODO test and propose patch to upstream */ /** * element-pocketsphix * * The element runs the speech recognition on incoming audio buffers and * generates an element messages named "pocketsphinx" * for each hypothesis and one for the final result. The message's structure * contains these fields: * * * * * #GstClockTime * "timestamp": * the timestamp of the buffer that triggered the message. * * * * * #gboolean * "final": * %FALSE for intermediate messages. * * * * * #gin32 * "confidence": * posterior probability (confidence) of the result in log domain * * * * * #gchar * "hypothesis": * the recognized text * * * * * * Example pipeline * |[ * gst-launch-1.0 -m autoaudiosrc ! audioconvert ! audioresample ! pocketsphinx ! fakesink * ]| * */ #include #include #include #include #include #include "gstparlasphinx.h" GST_DEBUG_CATEGORY_STATIC(parlasphinx_debug); #define GST_CAT_DEFAULT parlasphinx_debug static void gst_parlasphinx_set_property(GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec); static void gst_parlasphinx_get_property(GObject * object, guint prop_id, GValue * value, GParamSpec * pspec); static GstStateChangeReturn gst_parlasphinx_change_state(GstElement *element, GstStateChange transition); static GstFlowReturn gst_parlasphinx_chain(GstPad * pad, GstObject *parent, GstBuffer * buffer); static gboolean gst_parlasphinx_event(GstPad *pad, GstObject *parent, GstEvent *event); static void gst_parlasphinx_finalize_utt(GstParlaSphinx *ps); static void gst_parlasphinx_finalize(GObject * gobject); enum { PROP_0, PROP_HMM_DIR, PROP_LM_FILE, PROP_LMCTL_FILE, PROP_DICT_FILE, PROP_MLLR_FILE, PROP_FSG_FILE, PROP_ALLPHONE_FILE, PROP_KWS_FILE, PROP_JSGF_FILE, PROP_FWDFLAT, PROP_BESTPATH, PROP_MAXHMMPF, PROP_MAXWPF, PROP_BEAM, PROP_WBEAM, PROP_PBEAM, PROP_DSRATIO, PROP_LATDIR, PROP_LM_NAME, PROP_DECODER }; /* * Static data. */ /* Default command line. (will go away soon and be constructed using properties) */ static char *default_argv[] = { "gst-parlasphinx", }; static const int default_argc = sizeof(default_argv)/sizeof(default_argv[0]); static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE("sink", GST_PAD_SINK, GST_PAD_ALWAYS, GST_STATIC_CAPS("audio/x-raw, " "format = (string) { S16LE }, " "channels = (int) 1, " "rate = (int) 16000") ); static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE("src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS("audio/x-raw, " "format = (string) { S16LE }, " "channels = (int) 1, " "rate = (int) 16000") ); /* * Boxing of ps_decoder_t. */ GType ps_decoder_get_type(void) { static GType ps_decoder_type = 0; if (G_UNLIKELY(ps_decoder_type == 0)) { ps_decoder_type = g_boxed_type_register_static ("PSDecoder", /* Conveniently, these should just work. */ (GBoxedCopyFunc) ps_retain, (GBoxedFreeFunc) ps_free); } return ps_decoder_type; } G_DEFINE_TYPE(GstParlaSphinx, gst_parlasphinx, GST_TYPE_ELEMENT); static void gst_parlasphinx_class_init(GstParlaSphinxClass * klass) { GObjectClass *gobject_class; GstElementClass *element_class;; gobject_class =(GObjectClass *) klass; element_class = (GstElementClass *)klass; gobject_class->set_property = gst_parlasphinx_set_property; gobject_class->get_property = gst_parlasphinx_get_property; gobject_class->finalize = gst_parlasphinx_finalize; /* TODO: We will bridge cmd_ln.h properties to GObject * properties here somehow eventually. */ g_object_class_install_property (gobject_class, PROP_HMM_DIR, g_param_spec_string("hmm", "HMM Directory", "Directory containing acoustic model parameters", NULL, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_LM_FILE, g_param_spec_string("lm", "LM File", "Language model file", NULL, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_LMCTL_FILE, g_param_spec_string("lmctl", "LM Control File", "Language model control file (for class LMs)", NULL, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_FSG_FILE, g_param_spec_string("fsg", "FSG File", "Finite state grammar file", NULL, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_ALLPHONE_FILE, g_param_spec_string("allphone", "Allphone File", "Phonetic language model file", NULL, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_KWS_FILE, g_param_spec_string("kws", "Keyphrases File", "List of keyphrases for spotting", NULL, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_JSGF_FILE, g_param_spec_string("jsgf", "Grammar file", "File with grammar in Java Speech Grammar Format (JSGF)", NULL, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_DICT_FILE, g_param_spec_string("dict", "Dictionary File", "Dictionary File", NULL, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_FWDFLAT, g_param_spec_boolean("fwdflat", "Flat Lexicon Search", "Enable Flat Lexicon Search", FALSE, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_BESTPATH, g_param_spec_boolean("bestpath", "Graph Search", "Enable Graph Search", FALSE, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_MAXHMMPF, g_param_spec_int("maxhmmpf", "Maximum HMMs per frame", "Maximum number of HMMs searched per frame", 1, 100000, 1000, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_MAXWPF, g_param_spec_int("maxwpf", "Maximum words per frame", "Maximum number of words searched per frame", 1, 100000, 10, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_BEAM, g_param_spec_double("beam", "Beam width applied to every frame in Viterbi search", "Beam width applied to every frame in Viterbi search", -1, 1, 1e-48, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_PBEAM, g_param_spec_double("pbeam", "Beam width applied to phone transitions", "Beam width applied to phone transitions", -1, 1, 1e-48, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_WBEAM, g_param_spec_double("wbeam", "Beam width applied to word exits", "Beam width applied to phone transitions", -1, 1, 7e-29, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_DSRATIO, g_param_spec_int("dsratio", "Frame downsampling ratio", "Evaluate acoustic model every N frames", 1, 10, 1, G_PARAM_READWRITE)); /* Could be changed on runtime when ps is already initialized */ g_object_class_install_property (gobject_class, PROP_LM_NAME, g_param_spec_string("lmname", "LM Name", "Language model name (to select LMs from lmctl)", NULL, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_LATDIR, g_param_spec_string("latdir", "Lattice Directory", "Output Directory for Lattices", NULL, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, PROP_DECODER, g_param_spec_boxed("decoder", "Decoder object", "The underlying decoder", PS_DECODER_TYPE, G_PARAM_READABLE)); GST_DEBUG_CATEGORY_INIT(parlasphinx_debug, "pocketsphinx", 0, "Automatic Speech Recognition"); element_class->change_state = gst_parlasphinx_change_state; gst_element_class_add_pad_template(element_class, gst_static_pad_template_get(&sink_factory)); gst_element_class_add_pad_template(element_class, gst_static_pad_template_get(&src_factory)); gst_element_class_set_static_metadata(element_class, "PocketSphinx", "Filter/Audio", "Convert speech to text", "CMUSphinx-devel "); } static void gst_parlasphinx_set_string(GstParlaSphinx *ps, const gchar *key, const GValue *value) { if (value != NULL) { cmd_ln_set_str_r(ps->config, key, g_value_get_string(value)); } else { cmd_ln_set_str_r(ps->config, key, NULL); } } static void gst_parlasphinx_set_int(GstParlaSphinx *ps, const gchar *key, const GValue *value) { cmd_ln_set_int32_r(ps->config, key, g_value_get_int(value)); } static void gst_parlasphinx_set_boolean(GstParlaSphinx *ps, const gchar *key, const GValue *value) { cmd_ln_set_boolean_r(ps->config, key, g_value_get_boolean(value)); } static void gst_parlasphinx_set_double(GstParlaSphinx *ps, const gchar *key, const GValue *value) { cmd_ln_set_float_r(ps->config, key, g_value_get_double(value)); } static void gst_parlasphinx_set_property(GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) { GstParlaSphinx *ps = GST_PARLASPHINX(object); switch (prop_id) { case PROP_HMM_DIR: gst_parlasphinx_set_string(ps, "-hmm", value); break; case PROP_LM_FILE: /* FSG and LM are mutually exclusive. */ gst_parlasphinx_set_string(ps, "-lm", value); gst_parlasphinx_set_string(ps, "-lmctl", NULL); gst_parlasphinx_set_string(ps, "-fsg", NULL); gst_parlasphinx_set_string(ps, "-allphone", NULL); gst_parlasphinx_set_string(ps, "-kws", NULL); gst_parlasphinx_set_string(ps, "-jsgf", NULL); break; case PROP_LMCTL_FILE: /* FSG and LM are mutually exclusive. */ gst_parlasphinx_set_string(ps, "-lm", NULL); gst_parlasphinx_set_string(ps, "-lmctl", value); gst_parlasphinx_set_string(ps, "-fsg", NULL); gst_parlasphinx_set_string(ps, "-allphone", NULL); gst_parlasphinx_set_string(ps, "-kws", NULL); gst_parlasphinx_set_string(ps, "-jsgf", NULL); break; case PROP_DICT_FILE: gst_parlasphinx_set_string(ps, "-dict", value); break; case PROP_MLLR_FILE: gst_parlasphinx_set_string(ps, "-mllr", value); break; case PROP_FSG_FILE: /* FSG and LM are mutually exclusive */ gst_parlasphinx_set_string(ps, "-lm", NULL); gst_parlasphinx_set_string(ps, "-lmctl", NULL); gst_parlasphinx_set_string(ps, "-fsg", value); gst_parlasphinx_set_string(ps, "-allphone", NULL); gst_parlasphinx_set_string(ps, "-kws", NULL); gst_parlasphinx_set_string(ps, "-jsgf", NULL); break; case PROP_ALLPHONE_FILE: /* FSG and LM are mutually exclusive. */ gst_parlasphinx_set_string(ps, "-lm", NULL); gst_parlasphinx_set_string(ps, "-lmctl", NULL); gst_parlasphinx_set_string(ps, "-fsg", NULL); gst_parlasphinx_set_string(ps, "-allphone", value); gst_parlasphinx_set_string(ps, "-kws", NULL); gst_parlasphinx_set_string(ps, "-jsgf", NULL); break; case PROP_KWS_FILE: /* FSG and LM are mutually exclusive. */ gst_parlasphinx_set_string(ps, "-lm", NULL); gst_parlasphinx_set_string(ps, "-lmctl", NULL); gst_parlasphinx_set_string(ps, "-fsg", NULL); gst_parlasphinx_set_string(ps, "-allphone", NULL); gst_parlasphinx_set_string(ps, "-jsgf", NULL); gst_parlasphinx_set_string(ps, "-kws", value); break; case PROP_JSGF_FILE: /* FSG and LM are mutually exclusive. */ gst_parlasphinx_set_string(ps, "-lm", NULL); gst_parlasphinx_set_string(ps, "-lmctl", NULL); gst_parlasphinx_set_string(ps, "-fsg", NULL); gst_parlasphinx_set_string(ps, "-allphone", NULL); gst_parlasphinx_set_string(ps, "-kws", NULL); gst_parlasphinx_set_string(ps, "-jsgf", value); break; case PROP_FWDFLAT: gst_parlasphinx_set_boolean(ps, "-fwdflat", value); break; case PROP_BESTPATH: gst_parlasphinx_set_boolean(ps, "-bestpath", value); break; case PROP_MAXHMMPF: gst_parlasphinx_set_int(ps, "-maxhmmpf", value); break; case PROP_MAXWPF: gst_parlasphinx_set_int(ps, "-maxwpf", value); break; case PROP_BEAM: gst_parlasphinx_set_double(ps, "-beam", value); break; case PROP_PBEAM: gst_parlasphinx_set_double(ps, "-pbeam", value); break; case PROP_WBEAM: gst_parlasphinx_set_double(ps, "-wbeam", value); break; case PROP_DSRATIO: gst_parlasphinx_set_int(ps, "-ds", value); break; case PROP_LATDIR: if (ps->latdir) g_free(ps->latdir); ps->latdir = g_strdup(g_value_get_string(value)); break; case PROP_LM_NAME: gst_parlasphinx_set_string(ps, "-fsg", NULL); gst_parlasphinx_set_string(ps, "-lm", NULL); gst_parlasphinx_set_string(ps, "-allphone", NULL); gst_parlasphinx_set_string(ps, "-kws", NULL); gst_parlasphinx_set_string(ps, "-jsgf", NULL); gst_parlasphinx_set_string(ps, "-lmname", value); /* * Chances are that lmctl is already loaded and all * corresponding searches are configured, so we simply * try to set the search */ if (value != NULL && ps->ps) { ps_set_search(ps->ps, g_value_get_string(value)); } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); return; } /* If decoder was already initialized, reinit */ if (ps->ps && prop_id != PROP_LATDIR && prop_id != PROP_LM_NAME) ps_reinit(ps->ps, ps->config); } static void gst_parlasphinx_get_property(GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) { GstParlaSphinx *ps = GST_PARLASPHINX(object); switch (prop_id) { case PROP_DECODER: g_value_set_boxed(value, ps->ps); break; case PROP_HMM_DIR: g_value_set_string(value, cmd_ln_str_r(ps->config, "-hmm")); break; case PROP_LM_FILE: g_value_set_string(value, cmd_ln_str_r(ps->config, "-lm")); break; case PROP_LMCTL_FILE: g_value_set_string(value, cmd_ln_str_r(ps->config, "-lmctl")); break; case PROP_LM_NAME: g_value_set_string(value, cmd_ln_str_r(ps->config, "-lmname")); break; case PROP_DICT_FILE: g_value_set_string(value, cmd_ln_str_r(ps->config, "-dict")); break; case PROP_MLLR_FILE: g_value_set_string(value, cmd_ln_str_r(ps->config, "-mllr")); break; case PROP_FSG_FILE: g_value_set_string(value, cmd_ln_str_r(ps->config, "-fsg")); break; case PROP_ALLPHONE_FILE: g_value_set_string(value, cmd_ln_str_r(ps->config, "-allphone")); break; case PROP_KWS_FILE: g_value_set_string(value, cmd_ln_str_r(ps->config, "-kws")); break; case PROP_JSGF_FILE: g_value_set_string(value, cmd_ln_str_r(ps->config, "-jsgf")); break; case PROP_FWDFLAT: g_value_set_boolean(value, cmd_ln_boolean_r(ps->config, "-fwdflat")); break; case PROP_BESTPATH: g_value_set_boolean(value, cmd_ln_boolean_r(ps->config, "-bestpath")); break; case PROP_LATDIR: g_value_set_string(value, ps->latdir); break; case PROP_MAXHMMPF: g_value_set_int(value, cmd_ln_int32_r(ps->config, "-maxhmmpf")); break; case PROP_MAXWPF: g_value_set_int(value, cmd_ln_int32_r(ps->config, "-maxwpf")); break; case PROP_BEAM: g_value_set_double(value, cmd_ln_float_r(ps->config, "-beam")); break; case PROP_PBEAM: g_value_set_double(value, cmd_ln_float_r(ps->config, "-pbeam")); break; case PROP_WBEAM: g_value_set_double(value, cmd_ln_float_r(ps->config, "-wbeam")); break; case PROP_DSRATIO: g_value_set_int(value, cmd_ln_int32_r(ps->config, "-ds")); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; } } static void gst_parlasphinx_finalize(GObject * gobject) { GstParlaSphinx *ps = GST_PARLASPHINX(gobject); ps_free(ps->ps); cmd_ln_free_r(ps->config); g_free(ps->last_result); g_free(ps->latdir); G_OBJECT_CLASS(gst_parlasphinx_parent_class)->finalize(gobject); } static void gst_parlasphinx_init(GstParlaSphinx * ps) { ps->sinkpad = gst_pad_new_from_static_template(&sink_factory, "sink"); ps->srcpad = gst_pad_new_from_static_template(&src_factory, "src"); /* Parse default command-line options. */ ps->config = cmd_ln_parse_r(NULL, ps_args(), default_argc, default_argv, FALSE); ps_default_search_args(ps->config); /* Set up pads. */ gst_element_add_pad(GST_ELEMENT(ps), ps->sinkpad); gst_pad_set_chain_function(ps->sinkpad, gst_parlasphinx_chain); gst_pad_set_event_function(ps->sinkpad, gst_parlasphinx_event); gst_pad_use_fixed_caps(ps->sinkpad); gst_element_add_pad(GST_ELEMENT(ps), ps->srcpad); gst_pad_use_fixed_caps(ps->srcpad); /* Initialize time. */ ps->last_result_time = 0; ps->last_result = NULL; } static GstStateChangeReturn gst_parlasphinx_change_state(GstElement *element, GstStateChange transition) { GstParlaSphinx *ps = GST_PARLASPHINX(element); GstStateChangeReturn ret; GstEvent *seek = NULL; GstSegment *seg = NULL; gboolean success; /* handle upward state changes */ switch (transition) { case GST_STATE_CHANGE_NULL_TO_READY: ps->ps = ps_init(ps->config); if (ps->ps == NULL) { GST_ELEMENT_ERROR(GST_ELEMENT(ps), LIBRARY, INIT, ("Failed to initialize PocketSphinx"), ("Failed to initialize PocketSphinx")); return GST_STATE_CHANGE_FAILURE; } break; default: break; } ret = GST_ELEMENT_CLASS(gst_parlasphinx_parent_class)->change_state(element, transition); /* handle downward state changes */ switch (transition) { case GST_STATE_CHANGE_PLAYING_TO_PAUSED: if (ps->eos) break; //gst_parlasphinx_finalize_utt(ps); // crash in pocketsphinx /* Work around a problem with unknown cause: * When changing to paused position queries return the running * time instead of stream time */ seg = &ps->segment; if (seg->position > seg->stop) seg->position = seg->stop; seek = gst_event_new_seek (1.0, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE, GST_SEEK_TYPE_SET, seg->position, GST_SEEK_TYPE_NONE, -1); success = gst_pad_push_event (ps->sinkpad, seek); GST_DEBUG_OBJECT (ps, "pushed segment event: %s", success ? "yes" : "no"); break; case GST_STATE_CHANGE_READY_TO_NULL: ps_free(ps->ps); ps->ps = NULL; default: break; } return ret; } static void gst_parlasphinx_post_message(GstParlaSphinx *ps, gboolean final, GstClockTime timestamp, gint32 prob, const gchar *hyp) { GstStructure *s = gst_structure_new ("pocketsphinx", "timestamp", G_TYPE_UINT64, timestamp, "final", G_TYPE_BOOLEAN, final, "confidence", G_TYPE_LONG, prob, "hypothesis", G_TYPE_STRING, hyp, NULL); gst_element_post_message (GST_ELEMENT (ps), gst_message_new_element (GST_OBJECT (ps), s)); } static GstFlowReturn gst_parlasphinx_chain(GstPad * pad, GstObject *parent, GstBuffer * buffer) { GstParlaSphinx *ps; GstMapInfo info; gboolean in_speech; GstClockTime position, duration; ps = GST_PARLASPHINX(parent); if (GST_STATE (GST_ELEMENT (ps)) != GST_STATE_PLAYING) return gst_pad_push (ps->srcpad, buffer); /* Track current position */ position = GST_BUFFER_TIMESTAMP (buffer); if (GST_CLOCK_TIME_IS_VALID (position)) { duration = GST_BUFFER_DURATION (buffer); if (GST_CLOCK_TIME_IS_VALID (duration)) { position += duration; } ps->segment.position = position; } /* Start an utterance for the first buffer we get */ if (!ps->listening_started) { ps->listening_started = TRUE; ps->speech_started = FALSE; ps_start_utt(ps->ps); } gst_buffer_map (buffer, &info, GST_MAP_READ); ps_process_raw(ps->ps, (short*) info.data, info.size / sizeof(short), FALSE, FALSE); gst_buffer_unmap (buffer, &info); in_speech = ps_get_in_speech(ps->ps); if (in_speech && !ps->speech_started) { ps->speech_started = TRUE; } if (!in_speech && ps->speech_started) { gst_parlasphinx_finalize_utt(ps); } else if (ps->last_result_time == 0 /* Get a partial result every now and then, see if it is different. */ /* Check every 100 milliseconds. */ || (GST_BUFFER_TIMESTAMP(buffer) - ps->last_result_time) > GST_MSECOND * 500) { int32 score; char const *hyp; hyp = ps_get_hyp(ps->ps, &score); ps->last_result_time = GST_BUFFER_TIMESTAMP(buffer); if (hyp && strlen(hyp) > 0) { if (ps->last_result == NULL || 0 != strcmp(ps->last_result, hyp)) { g_free(ps->last_result); ps->last_result = g_strdup(hyp); gst_parlasphinx_post_message(ps, FALSE, ps->last_result_time, ps_get_prob(ps->ps), hyp); } } } return gst_pad_push (ps->srcpad, buffer); } static void gst_parlasphinx_finalize_utt(GstParlaSphinx *ps) { char const *hyp; int32 score; hyp = NULL; if (!ps->listening_started) return; ps_end_utt(ps->ps); ps->listening_started = FALSE; hyp = ps_get_hyp(ps->ps, &score); if (hyp) gst_parlasphinx_post_message(ps, TRUE, GST_CLOCK_TIME_NONE, ps_get_prob(ps->ps), hyp); if (ps->latdir) { char *latfile; char uttid[16]; sprintf(uttid, "%09u", ps->uttno); ps->uttno++; latfile = string_join(ps->latdir, "/", uttid, ".lat", NULL); ps_lattice_t *dag; if ((dag = ps_get_lattice(ps->ps))) ps_lattice_write(dag, latfile); ckd_free(latfile); } } static gboolean gst_parlasphinx_event(GstPad *pad, GstObject *parent, GstEvent *event) { GstParlaSphinx *ps; ps = GST_PARLASPHINX(parent); ps->eos = FALSE; switch (event->type) { case GST_EVENT_EOS: { gst_parlasphinx_finalize_utt(ps); ps->eos = TRUE; return gst_pad_event_default(pad, parent, event); } case GST_EVENT_SEGMENT: /* keep current segment, used for tracking current position */ gst_event_copy_segment (event, &ps->segment); /* fall through */ default: return gst_pad_event_default(pad, parent, event); } } static void gst_parlasphinx_log(void *user_data, err_lvl_t lvl, const char *fmt, ...) { static const int gst_level[ERR_MAX] = {GST_LEVEL_DEBUG, GST_LEVEL_INFO, GST_LEVEL_INFO, GST_LEVEL_WARNING, GST_LEVEL_ERROR, GST_LEVEL_ERROR}; va_list ap; va_start(ap, fmt); gst_debug_log_valist(parlasphinx_debug, gst_level[lvl], "", "", 0, NULL, fmt, ap); va_end(ap); } static gboolean plugin_init(GstPlugin * plugin) { err_set_callback(gst_parlasphinx_log, NULL); if (!gst_element_register(plugin, "parlasphinx", GST_RANK_NONE, GST_TYPE_PARLASPHINX)) return FALSE; return TRUE; } /** * gst_parlasphinx_register: * * Registers a plugin holding our single element to use privately in this * library. * * Return value: TRUE if successful, otherwise FALSE */ gboolean gst_parlasphinx_register (void) { return gst_plugin_register_static ( GST_VERSION_MAJOR, GST_VERSION_MINOR, "parlasphinx", "ParlaSphinx plugin", plugin_init, PACKAGE_VERSION, "BSD", "libparlatype", "Parlatype", "https://www.parlatype.org/"); } parlatype-3.0/libparlatype/src/gst/gstparlasphinx.h000066400000000000000000000071371414030451500226560ustar00rootroot00000000000000/* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */ /* ==================================================================== * Copyright (c) 2007 Carnegie Mellon University. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * This work was supported in part by funding from the Defense Advanced * Research Projects Agency and the National Science Foundation of the * United States of America, and the CMU Sphinx Speech Consortium. * * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE * * ==================================================================== * * Author: David Huggins-Daines */ #ifndef __GST_PARLASPHINX_H__ #define __GST_PARLASPHINX_H__ #include #include G_BEGIN_DECLS #define GST_TYPE_PARLASPHINX \ (gst_parlasphinx_get_type()) #define GST_PARLASPHINX(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_PARLASPHINX,GstParlaSphinx)) #define GST_PARLASPHINX_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_PARLASPHINX,GstParlaSphinxClass)) #define GST_IS_PARLASPHINX(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_PARLASPHINX)) #define GST_IS_PARLASPHINX_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_PARLASPHINX)) typedef struct _GstParlaSphinx GstParlaSphinx; typedef struct _GstParlaSphinxClass GstParlaSphinxClass; struct _GstParlaSphinx { GstElement element; GstPad *sinkpad, *srcpad; ps_decoder_t *ps; cmd_ln_t *config; gchar *latdir; /**< Output directory for word lattices. */ gboolean speech_started; gboolean listening_started; gint uttno; GstClockTime last_result_time; /**< Timestamp of last partial result. */ char *last_result; /**< String of last partial result. */ GstSegment segment; gboolean eos; }; struct _GstParlaSphinxClass { GstElementClass parent_class; void (*partial_result) (GstElement *element, const gchar *hyp_str); void (*result) (GstElement *element, const gchar *hyp_str); }; GType gst_parlasphinx_get_type(void); /* * Boxing of decoder. */ #define PS_DECODER_TYPE (ps_decoder_get_type()) GType ps_decoder_get_type(void); gboolean gst_parlasphinx_register (void); G_END_DECLS #endif /* __GST_PARLASPHINX_H__ */ parlatype-3.0/libparlatype/src/gst/gstptaudioasrbin.c000066400000000000000000000215001414030451500231520ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2020 * * 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 . */ /** * gstptaudioasrbin * Child bin (GstBin) for parent PtAudioBin. * * This bin is for Automatic Speech Recognition (ASR). * * .--------------------------------------------------------. * | pt_audio_asr_bin | * | .---------. .----------. .--------. .----------. | * | | audio- | | audio- | | ASR | | fakesink | | * --> convert ----> resample ----> Plugin ----> | | * | '---------' '----------' '--------' '----------' | * '--------------------------------------------------------' * */ #include "config.h" #define GETTEXT_PACKAGE GETTEXT_LIB #include #include #include #include "pt-config.h" #include "gst-helpers.h" #include "gstptaudioasrbin.h" GST_DEBUG_CATEGORY_STATIC (gst_pt_audio_asr_bin_debug); #define GST_CAT_DEFAULT gst_pt_audio_asr_bin_debug #define parent_class gst_pt_audio_asr_bin_parent_class G_DEFINE_TYPE (GstPtAudioAsrBin, gst_pt_audio_asr_bin, GST_TYPE_BIN); gboolean gst_pt_audio_asr_bin_is_configured (GstPtAudioAsrBin *self) { return self->is_configured; } gboolean gst_pt_audio_asr_bin_configure_asr_finish (GstPtAudioAsrBin *self, GAsyncResult *result, GError **error) { g_return_val_if_fail (g_task_is_valid (result, self), FALSE); return g_task_propagate_boolean (G_TASK (result), error); } static void configure_plugin (GTask *task) { GstPtAudioAsrBin *self; gchar *plugin; gboolean success; GError *error = NULL; self = g_task_get_source_object (task); plugin = pt_config_get_plugin (self->config); GST_DEBUG_OBJECT (self, "configuring plugin"); /* For simplicity always recreate plugin, even if the plugin is the * same and only its configuration changed */ if (self->asr_plugin) { GST_DEBUG_OBJECT (self, "removing previous plugin"); /* setting state deadlocks without previous flush-start event */ gst_element_set_state (self->asr_plugin, GST_STATE_NULL); gst_bin_remove (GST_BIN (self), self->asr_plugin); } GST_DEBUG_OBJECT (self, "creating new plugin %s", plugin); self->asr_plugin = _pt_make_element (plugin, plugin, &error); if (!self->asr_plugin) { self->is_configured = FALSE; g_task_return_error (task, error); g_object_unref (task); return; } /* Apply config in NULL state */ success = pt_config_apply (self->config, G_OBJECT (self->asr_plugin), &error); self->is_configured = success; if (!success) { g_task_return_error (task, error); g_object_unref (task); return; } gst_element_set_state (self->fakesink, GST_STATE_NULL); gst_bin_add (GST_BIN (self), self->asr_plugin); gst_element_sync_state_with_parent (self->audioresample); gst_element_sync_state_with_parent (self->asr_plugin); gst_element_sync_state_with_parent (self->fakesink); gst_element_link_many (self->audioresample, self->asr_plugin, self->fakesink, NULL); gst_element_sync_state_with_parent (GST_ELEMENT (self)); g_task_return_boolean (task, TRUE); g_object_unref (task); } static void flush_plugin (GstPtAudioAsrBin *self) { GstPad *sinkpad; gboolean success; GST_DEBUG_OBJECT (self, "flushing ASR plugin"); sinkpad = gst_element_get_static_pad (self->asr_plugin, "sink"); g_assert (sinkpad != NULL); success = gst_pad_send_event (sinkpad, gst_event_new_flush_start ()); GST_DEBUG_OBJECT (self, "flush-start event %s", success ? "sent" : "not sent"); gst_object_unref (sinkpad); } static GstPadProbeReturn pad_probe_cb (GstPad *pad, GstPadProbeInfo *info, gpointer user_data) { GTask *task = G_TASK (user_data); GstPtAudioAsrBin *self; self = g_task_get_source_object (task); GST_DEBUG_OBJECT (self, "pad is blocked now"); /* remove the probe first */ gst_pad_remove_probe (pad, GST_PAD_PROBE_INFO_ID (info)); /* Send flush-start event if plugin exists (EOS event would deadlock * in playing state). Don't add event probe, that didn't work before * and seems like not necessary, just send event without waiting for * it. */ if (self->asr_plugin) { flush_plugin (self); } configure_plugin (task); return GST_PAD_PROBE_OK; } void gst_pt_audio_asr_bin_configure_asr_async (GstPtAudioAsrBin *self, PtConfig *config, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { GST_DEBUG_OBJECT (self, "configuring asr"); GTask *task; GstPad *blockpad; gulong probe_id; GstState debug_state; task = g_task_new (self, cancellable, callback, user_data); /* TODO Compare PtConfigs properly/investigate whether they are still * equal if a value has changed */ if (self->config && self->config == config) { g_task_return_boolean (task, TRUE); g_object_unref (task); GST_DEBUG_OBJECT (self, "config didn't change"); return; } if (self->config) g_object_unref (self->config); self->config = g_object_ref (config); debug_state = GST_STATE(self->audioresample); GST_DEBUG_OBJECT (self, "pad element state: %s", gst_element_state_get_name (debug_state)); GST_DEBUG_OBJECT (self, "adding probe for blocking pad"); blockpad = gst_element_get_static_pad (self->audioresample, "src"); probe_id = gst_pad_add_probe (blockpad, GST_PAD_PROBE_TYPE_BLOCKING | GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM, pad_probe_cb, task, NULL); if (debug_state == GST_STATE_PAUSED) { gst_pad_remove_probe (blockpad, probe_id); if (self->asr_plugin) { flush_plugin (self); } configure_plugin (task); flush_plugin (self); } gst_object_unref (blockpad); } static void gst_pt_audio_asr_bin_finalize (GObject *object) { GstPtAudioAsrBin *self = GST_PT_AUDIO_ASR_BIN (object); if (self->config) g_object_unref (self->config); G_OBJECT_CLASS (parent_class)->finalize(object); } static void gst_pt_audio_asr_bin_init (GstPtAudioAsrBin *bin) { GstElement *audioconvert; GstPad *audioconvert_sink; audioconvert = _pt_make_element ("audioconvert", "audioconvert", NULL); bin->audioresample = _pt_make_element ("audioresample", "audioresample", NULL); bin->fakesink = _pt_make_element ("fakesink", "fakesink", NULL); /* create audio output */ gst_bin_add_many (GST_BIN (bin), audioconvert, bin->audioresample, bin->fakesink, NULL); gst_element_link_many (audioconvert, bin->audioresample, NULL); /* create ghost pad for audiosink */ audioconvert_sink = gst_element_get_static_pad (audioconvert, "sink"); gst_element_add_pad (GST_ELEMENT (bin), gst_ghost_pad_new ("sink", audioconvert_sink)); gst_object_unref (GST_OBJECT (audioconvert_sink)); bin->asr_plugin = NULL; bin->is_configured = FALSE; } static void gst_pt_audio_asr_bin_class_init (GstPtAudioAsrBinClass *klass) { G_OBJECT_CLASS (klass)->finalize = gst_pt_audio_asr_bin_finalize; } static gboolean plugin_init (GstPlugin *plugin) { GST_DEBUG_CATEGORY_INIT (gst_pt_audio_asr_bin_debug, "ptaudioasrbin", 0, "Audio bin for Automatic Speech Recognition " "for Parlatype"); return (gst_element_register (plugin, "ptaudioasrbin", GST_RANK_NONE, GST_TYPE_PT_AUDIO_ASR_BIN)); } /** * gst_pt_audio_asr_bin_register: * * Registers a plugin holding our single element to use privately in this * library. * * Return value: TRUE if successful, otherwise FALSE */ gboolean gst_pt_audio_asr_bin_register (void) { return gst_plugin_register_static ( GST_VERSION_MAJOR, GST_VERSION_MINOR, "ptaudioasrbin", "Audio bin for Automatic Speech Recognition " "for Parlatype", plugin_init, PACKAGE_VERSION, "GPL", "libparlatype", "Parlatype", "https://www.parlatype.org/"); } parlatype-3.0/libparlatype/src/gst/gstptaudioasrbin.h000066400000000000000000000051001414030451500231550ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2020 * * 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 . */ #ifndef GST_PT_AUDIO_ASR_BIN_H #define GST_PT_AUDIO_ASR_BIN_H #include #include "pt-config.h" G_BEGIN_DECLS #define GST_TYPE_PT_AUDIO_ASR_BIN (gst_pt_audio_asr_bin_get_type()) #define GST_PT_AUDIO_ASR_BIN(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_PT_AUDIO_ASR_BIN, GstPtAudioAsrBin)) #define GST_IS_PT_AUDIO_ASR_BIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_PT_AUDIO_ASR_BIN)) #define GST_PT_AUDIO_ASR_BIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_PT_AUDIO_ASR_BIN, GstPtAudioAsrBinClass)) #define GST_IS_PT_AUDIO_ASR_BIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_PT_AUDIO_ASR_BIN)) typedef struct _GstPtAudioAsrBin GstPtAudioAsrBin; typedef struct _GstPtAudioAsrBinClass GstPtAudioAsrBinClass; struct _GstPtAudioAsrBin { GstBin parent; PtConfig *config; GstElement *asr_plugin; GstElement *audioresample; GstElement *fakesink; gboolean is_configured; }; struct _GstPtAudioAsrBinClass { GstBinClass parent_class; }; GType gst_pt_audio_asr_bin_get_type (void) G_GNUC_CONST; gboolean gst_pt_audio_asr_bin_is_configured (GstPtAudioAsrBin *self); gboolean gst_pt_audio_asr_bin_configure_asr_finish (GstPtAudioAsrBin *self, GAsyncResult *result, GError **error); void gst_pt_audio_asr_bin_configure_asr_async (GstPtAudioAsrBin *self, PtConfig *config, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean gst_pt_audio_asr_bin_register (void); G_END_DECLS #endif parlatype-3.0/libparlatype/src/gst/gstptaudiobin.c000066400000000000000000000305101414030451500224450ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2020 * * 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 . */ /** * gstptaudiobin * Audio bin (GstBin) for Parlatype. * * An audio bin that can be connected to a playbin element via playbin's * audio-filter property. It supports normal playback and silent ASR output * using an ASR plugin. * .--------------------------------------. * | pt_audio_bin | * | .-----------. .-------------------. | * | | identity | | pt_audio_play_bin | | * --> | | | | * | | dynamic ---> | | * | | linking | '-------------------' | * | | to 1 of 2 | .-------------------. | * | | sinks ---> | | * | | | | pt_audio_asr_bin | | * | | | | | | * | '-----------' '-------------------' | * '--------------------------------------' Note 1: It doesn’t work if play_audio_play_bin or pt_audio_asr_bin are added to pt_audio_bin but are not linked! Either link it or remove it from bin! */ #include "config.h" #define GETTEXT_PACKAGE GETTEXT_LIB #include #include #include #include #include "pt-config.h" #include "gst-helpers.h" #include "gstptaudioasrbin.h" #include "gstptaudioplaybin.h" #include "gstptaudiobin.h" GST_DEBUG_CATEGORY_STATIC (gst_pt_audio_bin_debug); #define GST_CAT_DEFAULT gst_pt_audio_bin_debug #define parent_class gst_pt_audio_bin_parent_class G_DEFINE_TYPE_WITH_CODE (GstPtAudioBin, gst_pt_audio_bin, GST_TYPE_BIN, G_IMPLEMENT_INTERFACE (GST_TYPE_STREAM_VOLUME, NULL)); enum { PROP_0, PROP_MUTE, PROP_VOLUME, N_PROPERTIES }; static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, }; static GstPadProbeReturn change_mode_cb (GstPad *pad, GstPadProbeInfo *info, gpointer user_data) { GstPtAudioBin *self = GST_PT_AUDIO_BIN (user_data); GstElement *old_child, *new_child; GstPad *sinkpad; GstObject *parent; GstPadLinkReturn r; gst_pad_remove_probe (pad, GST_PAD_PROBE_INFO_ID (info)); self->probe_id = 0; /* get element to remove */ switch (self->pending) { case (PT_MODE_PLAYBACK): old_child = self->asr_bin; new_child = self->play_bin; break; case (PT_MODE_ASR): old_child = self->play_bin; new_child = self->asr_bin; break; default: g_return_val_if_reached (GST_PAD_PROBE_OK); } parent = gst_element_get_parent (old_child); if (!parent) { GST_DEBUG_OBJECT (old_child, "%s has no parent", GST_OBJECT_NAME (old_child)); return GST_PAD_PROBE_OK; } /* Unlink upstream, i.e. child's sink pad */ sinkpad = gst_element_get_static_pad (old_child, "sink"); GST_DEBUG_OBJECT (old_child, "unlinking %s", GST_OBJECT_NAME (old_child)); gst_pad_unlink (pad, sinkpad); /* TODO investigate if flushing necessary */ /* set to null or ready */ gst_element_set_state (old_child, GST_STATE_NULL); /* remove from bin, dereferences removed element, we want to keep it */ GST_DEBUG_OBJECT (old_child, "removing %s from %s", GST_OBJECT_NAME (old_child), GST_OBJECT_NAME (parent)); gst_object_ref (old_child); gst_bin_remove (GST_BIN (parent), old_child); gst_object_unref (parent); g_object_unref (sinkpad); /* check if in bin */ parent = gst_element_get_parent (new_child); if (parent) { GST_DEBUG_OBJECT (new_child, "%s has already a parent %s", GST_OBJECT_NAME (new_child), GST_OBJECT_NAME (parent)); gst_object_unref (parent); return GST_PAD_PROBE_OK; } GST_DEBUG_OBJECT (new_child, "adding %s to %s", GST_OBJECT_NAME (new_child), GST_OBJECT_NAME (self)); gst_bin_add (GST_BIN (self), new_child); GST_DEBUG_OBJECT (new_child, "state: %s", gst_element_state_get_name (GST_STATE(new_child))); gst_element_sync_state_with_parent (new_child); GST_DEBUG_OBJECT (new_child, "state: %s", gst_element_state_get_name (GST_STATE(new_child))); sinkpad = gst_element_get_static_pad (new_child, "sink"); r = gst_pad_link (self->id_src, sinkpad); g_assert (r == GST_PAD_LINK_OK); gst_object_unref (sinkpad); GST_DEBUG_OBJECT (self, "switched mode to %d", self->pending); self->mode = self->pending; return GST_PAD_PROBE_OK; } typedef struct { GAsyncResult *res; GMainLoop *loop; } SyncData; static void quit_loop_cb (GstPtAudioBin *self, GAsyncResult *res, gpointer user_data) { SyncData *data = user_data; data->res = g_object_ref (res); g_main_loop_quit (data->loop); } gboolean gst_pt_audio_bin_configure_asr (GstPtAudioBin *self, PtConfig *config, GError **error) { g_return_val_if_fail (error == NULL || *error == NULL, FALSE); GstPtAudioAsrBin *bin; SyncData data; GMainContext *context; gboolean result; bin = GST_PT_AUDIO_ASR_BIN (self->asr_bin); context = g_main_context_new (); g_main_context_push_thread_default (context); data.loop = g_main_loop_new (context, FALSE); data.res = NULL; gst_pt_audio_asr_bin_configure_asr_async (bin, config, NULL, (GAsyncReadyCallback) quit_loop_cb, &data); g_main_loop_run (data.loop); result = gst_pt_audio_asr_bin_configure_asr_finish (bin, data.res, error); GST_DEBUG_OBJECT (self, "Finished asr configuration"); GST_DEBUG_OBJECT (self, "asr state: %s", gst_element_state_get_name (GST_STATE (GST_ELEMENT (bin)))); g_main_context_pop_thread_default (context); g_main_context_unref (context); g_main_loop_unref (data.loop); g_object_unref (data.res); return result; } PtModeType gst_pt_audio_bin_get_mode (GstPtAudioBin *self) { return self->mode; } void gst_pt_audio_bin_set_mode (GstPtAudioBin *self, PtModeType new) { GstState state, pending; /* Already in requested mode, bail out */ if (self->mode == new && self->pending == new) return; /* Already in requested mode, but have to cancel a pending change */ if (self->mode == new && self->pending != new && self->probe_id > 0) { gst_pad_remove_probe(self->id_src, self->probe_id); self->probe_id = 0; GST_DEBUG_OBJECT (self, "cancelled switch from %d to %d", self->mode, self->pending); self->pending = new; return; } self->pending = new; if (self->pending == PT_MODE_ASR && !GST_PT_AUDIO_ASR_BIN (self->asr_bin)->is_configured) return; GST_DEBUG_OBJECT (self, "blocking pad for mode switch from %d to %d", self->mode, self->pending); /* Wait for any pending state change. Prevents internal stream error * (unlinked element) when going to PLAYBACK and pt_player_pause() was * called just before. */ gst_element_get_state ( GST_ELEMENT (self), &state, &pending, GST_CLOCK_TIME_NONE); GST_DEBUG_OBJECT (self, "state: %s", gst_element_state_get_name (state)); GST_DEBUG_OBJECT (self, "pending: %s", gst_element_state_get_name (pending)); self->probe_id = gst_pad_add_probe (self->id_src, GST_PAD_PROBE_TYPE_BLOCKING | GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM, change_mode_cb, self, NULL); } static void unref_element_without_parent (GstElement *element) { GstObject *parent; parent = gst_element_get_parent (element); if (!parent) { gst_element_set_state (element, GST_STATE_NULL); gst_object_unref (element); } else { gst_object_unref (parent); } element = NULL; } static void gst_pt_audio_bin_dispose (GObject *object) { GstPtAudioBin *self = GST_PT_AUDIO_BIN (object); if (self->play_bin) unref_element_without_parent (self->play_bin); if (self->asr_bin) unref_element_without_parent (self->asr_bin); if (self->id_sink) gst_object_unref (GST_OBJECT (self->id_sink)); if (self->id_src) gst_object_unref (GST_OBJECT (self->id_src)); G_OBJECT_CLASS (gst_pt_audio_bin_parent_class)->dispose (object); } static void gst_pt_audio_bin_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { GstPtAudioBin *self = GST_PT_AUDIO_BIN (object); switch (property_id) { case PROP_MUTE: g_object_set (self->play_bin, "mute", g_value_get_boolean (value), NULL); break; case PROP_VOLUME: g_object_set (self->play_bin, "volume", g_value_get_double (value), NULL); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void gst_pt_audio_bin_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { GstPtAudioBin *self = GST_PT_AUDIO_BIN (object); gboolean mute; gdouble volume; switch (property_id) { case PROP_MUTE: g_object_get (self->play_bin, "mute", &mute, NULL); g_value_set_boolean (value, mute); break; case PROP_VOLUME: g_object_get (self->play_bin, "volume", &volume, NULL); g_value_set_double (value, volume); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void gst_pt_audio_bin_init (GstPtAudioBin *self) { GstElement *identity; GstPad *play_sink; gst_pt_audio_play_bin_register (); gst_pt_audio_asr_bin_register (); identity = _pt_make_element ("identity", "identity", NULL); self->play_bin = _pt_make_element ("ptaudioplaybin", "play-audiobin", NULL); self->asr_bin = _pt_make_element ("ptaudioasrbin", "asr-audiobin", NULL); gst_bin_add_many (GST_BIN (self), identity, self->play_bin, NULL); self->id_sink = gst_element_get_static_pad (identity, "sink"); self->id_src = gst_element_get_static_pad (identity, "src"); play_sink = gst_element_get_static_pad (self->play_bin, "sink"); /* link play bin with identity */ gst_pad_link (self->id_src, play_sink); self->mode = PT_MODE_PLAYBACK; self->pending = PT_MODE_PLAYBACK; self->probe_id = 0; /* create ghost pad for audiosink */ gst_element_add_pad (GST_ELEMENT (self), gst_ghost_pad_new ("sink", self->id_sink)); gst_object_unref (GST_OBJECT (play_sink)); } static void gst_pt_audio_bin_class_init (GstPtAudioBinClass *klass) { G_OBJECT_CLASS (klass)->set_property = gst_pt_audio_bin_set_property; G_OBJECT_CLASS (klass)->get_property = gst_pt_audio_bin_get_property; G_OBJECT_CLASS (klass)->dispose = gst_pt_audio_bin_dispose; obj_properties[PROP_MUTE] = g_param_spec_boolean ( "mute", "Mute", "mute channel", FALSE, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS); obj_properties[PROP_VOLUME] = g_param_spec_double ( "volume", "Volume", "volume factor, 1.0=100%", 0.0, 1.0, 1.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties ( G_OBJECT_CLASS (klass), N_PROPERTIES, obj_properties); } static gboolean plugin_init (GstPlugin *plugin) { GST_DEBUG_CATEGORY_INIT (gst_pt_audio_bin_debug, "ptaudiobin", 0, "Audio bin for Parlatype"); return (gst_element_register (plugin, "ptaudiobin", GST_RANK_NONE, GST_TYPE_PT_AUDIO_BIN)); } /** * gst_pt_audio_bin_register: * * Registers a plugin holding our single element to use privately in this * library. * * Return value: TRUE if successful, otherwise FALSE */ gboolean gst_pt_audio_bin_register (void) { return gst_plugin_register_static ( GST_VERSION_MAJOR, GST_VERSION_MINOR, "ptaudiobin", "Audio bin for Parlatype", plugin_init, PACKAGE_VERSION, "GPL", "libparlatype", "Parlatype", "https://www.parlatype.org/"); } parlatype-3.0/libparlatype/src/gst/gstptaudiobin.h000066400000000000000000000041571414030451500224620ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2020 * * 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 . */ #ifndef GST_PT_AUDIO_BIN_H #define GST_PT_AUDIO_BIN_H #include #include "pt-config.h" #include "pt-player.h" G_BEGIN_DECLS #define GST_TYPE_PT_AUDIO_BIN (gst_pt_audio_bin_get_type()) #define GST_PT_AUDIO_BIN(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_PT_AUDIO_BIN, GstPtAudioBin)) #define GST_IS_PT_AUDIO_BIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_PT_AUDIO_BIN)) #define GST_PT_AUDIO_BIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_PT_AUDIO_BIN, GstPtAudioBinClass)) #define GST_IS_PT_AUDIO_BIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_PT_AUDIO_BIN)) typedef struct _GstPtAudioBin GstPtAudioBin; typedef struct _GstPtAudioBinClass GstPtAudioBinClass; struct _GstPtAudioBin { GstBin parent; PtModeType mode; PtModeType pending; gulong probe_id; GstElement *play_bin; GstElement *asr_bin; GstPad *id_sink; GstPad *id_src; /* properties */ gboolean player; gboolean asr; gdouble volume; gboolean mute; }; struct _GstPtAudioBinClass { GstBinClass parent_class; }; GType gst_pt_audio_bin_get_type (void) G_GNUC_CONST; gboolean gst_pt_audio_bin_configure_asr (GstPtAudioBin *bin, PtConfig *config, GError **error); PtModeType gst_pt_audio_bin_get_mode (GstPtAudioBin *bin); void gst_pt_audio_bin_set_mode (GstPtAudioBin *bin, PtModeType mode); gboolean gst_pt_audio_bin_register (void); G_END_DECLS #endif parlatype-3.0/libparlatype/src/gst/gstptaudioplaybin.c000066400000000000000000000175021414030451500233410ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2020 * * 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 . */ /** * gstptaudioplaybin * Child bin (GstBin) for parent PtAudioBin. * * This bin is an audio sink for normal playback. * * .----------------------------------------------------. * | pt_audio_play_bin | * | .-------------. .-------------. .------------. | * | | capsfilter | | volume | | audiosink | | * --> ----> (optional) ----> | | * | '-------------' '-------------' '------------' | * '----------------------------------------------------' * * PtAudioPlaybin implements GstStreamVolume, that means it has "volume" and * "mute" properties. * * audiosink is chosen at runtime. If the chosen audiosink does not implement * GstStreamVolume a volume element is added. PtAudioPlayBin relays audiosink's * "volume" and "mute" properties or those of the volume element. */ #include "config.h" #define GETTEXT_PACKAGE GETTEXT_LIB #include #include #include #include #include "gst-helpers.h" #include "gstptaudioplaybin.h" GST_DEBUG_CATEGORY_STATIC (gst_pt_audio_play_bin_debug); #define GST_CAT_DEFAULT gst_pt_audio_play_bin_debug #define parent_class gst_pt_audio_play_bin_parent_class G_DEFINE_TYPE_WITH_CODE (GstPtAudioPlayBin, gst_pt_audio_play_bin, GST_TYPE_BIN, G_IMPLEMENT_INTERFACE (GST_TYPE_STREAM_VOLUME, NULL)); enum { PROP_0, PROP_VOLUME, PROP_MUTE, N_PROPERTIES }; static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, }; #ifndef G_OS_WIN32 static gboolean have_pulseaudio_server (void) { /* Adapted from Quod Libet ...quodlibet/player/gstbe/util.py: * If we have a pulsesink we can get the server presence through * setting the ready state */ GstElement *pulse; GstStateChangeReturn state; pulse = gst_element_factory_make ("pulsesink", NULL); if (!pulse) return FALSE; gst_element_set_state (pulse, GST_STATE_READY); state = gst_element_get_state (pulse, NULL, NULL, GST_CLOCK_TIME_NONE); gst_element_set_state (pulse, GST_STATE_NULL); gst_object_unref (pulse); return (state != GST_STATE_CHANGE_FAILURE); } #endif static void gst_pt_audio_play_bin_init (GstPtAudioPlayBin *bin) { /* Create gstreamer elements */ GstElement *capsfilter; GstElement *audiosink; gchar *sink; capsfilter = _pt_make_element ("capsfilter", "audiofilter", NULL); /* Choose an audiosink ourselves instead of relying on autoaudiosink. * It chose waveformsink on win32 (not a good choice) and it will be * a fakesink until the first stream is loaded, so we can't query the * sinks properties until then. */ #ifdef G_OS_WIN32 sink = "directsoundsink"; #else if (have_pulseaudio_server ()) sink = "pulsesink"; else sink = "alsasink"; #endif audiosink = gst_element_factory_make (sink, "audiosink"); if (!audiosink) { sink = "autoaudiosink"; audiosink = _pt_make_element (sink, "audiosink", NULL); } g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "MESSAGE", "Audio sink is %s", sink); /* Audiosinks without a "volume" property can be controlled by the * playbin element, but there is a noticeable delay in setting the volume. * Create a "volume" element for those audiosinks. * The exception for directsoundsink is because "mute" doesn't work. */ if (!GST_IS_STREAM_VOLUME (audiosink) || g_strcmp0 ("sink", "directsoundsink") == 0) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "MESSAGE", "Creating a \"volume\" element for %s", sink); bin->volume_changer = gst_element_factory_make ("volume", "volume"); } if (bin->volume_changer) { gst_bin_add_many (GST_BIN (bin), capsfilter, bin->volume_changer, audiosink, NULL); gst_element_link_many (capsfilter, bin->volume_changer, audiosink, NULL); } else { gst_bin_add_many (GST_BIN (bin), capsfilter, audiosink, NULL); gst_element_link_many (capsfilter, audiosink, NULL); bin->volume_changer = audiosink; } /* create ghost pad for audiosink */ GstPad *audiopad = gst_element_get_static_pad (capsfilter, "sink"); gst_element_add_pad (GST_ELEMENT (bin), gst_ghost_pad_new ("sink", audiopad)); gst_object_unref (GST_OBJECT (audiopad)); } static void gst_pt_audio_play_bin_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { GstPtAudioPlayBin *bin = GST_PT_AUDIO_PLAY_BIN (object); switch (property_id) { case PROP_MUTE: bin->mute = g_value_get_boolean (value); g_object_set (bin->volume_changer, "mute", bin->mute, NULL); break; case PROP_VOLUME: bin->volume = g_value_get_double (value); g_object_set (bin->volume_changer, "volume", bin->volume, NULL); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void gst_pt_audio_play_bin_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { GstPtAudioPlayBin *bin = GST_PT_AUDIO_PLAY_BIN (object); switch (property_id) { case PROP_MUTE: g_object_get (bin->volume_changer, "mute", &bin->mute, NULL); g_value_set_boolean (value, bin->mute); break; case PROP_VOLUME: g_object_get (bin->volume_changer, "volume", &bin->volume, NULL); g_value_set_double (value, bin->volume); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void gst_pt_audio_play_bin_class_init (GstPtAudioPlayBinClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); gobject_class->get_property = gst_pt_audio_play_bin_get_property; gobject_class->set_property = gst_pt_audio_play_bin_set_property; obj_properties[PROP_MUTE] = g_param_spec_boolean ( "mute", "Mute", "mute channel", FALSE, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS); obj_properties[PROP_VOLUME] = g_param_spec_double ( "volume", "Volume", "volume factor, 1.0=100%", 0.0, 1.0, 1.0, G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_properties ( G_OBJECT_CLASS (klass), N_PROPERTIES, obj_properties); } static gboolean plugin_init (GstPlugin *plugin) { GST_DEBUG_CATEGORY_INIT (gst_pt_audio_play_bin_debug, "ptaudioplaybin", 0, "Audio playback bin for Parlatype"); return (gst_element_register (plugin, "ptaudioplaybin", GST_RANK_NONE, GST_TYPE_PT_AUDIO_PLAY_BIN)); } /** * gst_pt_audio_play_bin_register: * * Registers a plugin holding our single element to use privately in this * library. * * Return value: TRUE if successful, otherwise FALSE */ gboolean gst_pt_audio_play_bin_register (void) { return gst_plugin_register_static ( GST_VERSION_MAJOR, GST_VERSION_MINOR, "ptaudioplaybin", "Audio playback bin for Parlatype", plugin_init, PACKAGE_VERSION, "GPL", "libparlatype", "Parlatype", "https://www.parlatype.org/"); } parlatype-3.0/libparlatype/src/gst/gstptaudioplaybin.h000066400000000000000000000035071414030451500233460ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2020 * * 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 . */ #ifndef GST_PT_AUDIO_PLAY_BIN_H #define GST_PT_AUDIO_PLAY_BIN_H #include G_BEGIN_DECLS #define GST_TYPE_PT_AUDIO_PLAY_BIN (gst_pt_audio_play_bin_get_type()) #define GST_PT_AUDIO_PLAY_BIN(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_PT_AUDIO_PLAY_BIN, GstPtAudioPlayBin)) #define GST_IS_PT_AUDIO_PLAY_BIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_PT_AUDIO_PLAY_BIN)) #define GST_PT_AUDIO_PLAY_BIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_PT_AUDIO_PLAY_BIN, GstPtAudioPlayBinClass)) #define GST_IS_PT_AUDIO_PLAY_BIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_PT_AUDIO_PLAY_BIN)) typedef struct _GstPtAudioPlayBin GstPtAudioPlayBin; typedef struct _GstPtAudioPlayBinClass GstPtAudioPlayBinClass; struct _GstPtAudioPlayBin { GstBin parent; GstElement *volume_changer; /* properties */ gdouble volume; gboolean mute; }; struct _GstPtAudioPlayBinClass { GstBinClass parent_class; }; GType gst_pt_audio_play_bin_get_type (void) G_GNUC_CONST; GstElement* gst_pt_audio_play_bin_get_volume (GstPtAudioPlayBin *bin); gboolean gst_pt_audio_play_bin_register (void); G_END_DECLS #endif parlatype-3.0/libparlatype/src/gst/gstptdeepspeech.c000066400000000000000000000353141414030451500227670ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2021 * * 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 . */ /* DeepSpeech plugin for Parlatype with some boilerplate from Mike Sheldon's * gst-deepspeech but different implementation. vad_private.c and vad_private.h * are taken unmodified from gst-remove-silence (GStreamer bad plugins). */ #include #include #include #include #include "vad_private.h" #include "gstptdeepspeech.h" GST_DEBUG_CATEGORY_STATIC (gst_ptdeepspeech_debug); #define GST_CAT_DEFAULT gst_ptdeepspeech_debug #define DEFAULT_BEAM_WIDTH 500 #define DEFAULT_VAD_HYSTERESIS 480 /* 60 mseg */ #define DEFAULT_VAD_THRESHOLD -60 #define INTERMEDIATE FALSE #define FINAL TRUE enum { PROP_0, PROP_SPEECH_MODEL, PROP_SCORER, PROP_BEAM_WIDTH, PROP_VAD_MIN_SILENCE, N_PROPERTIES }; static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, }; static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, GST_STATIC_CAPS ("audio/x-raw,format=S16LE,rate=16000,channels=1") ); static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS ("audio/x-raw,format=S16LE,rate=16000,channels=1") ); #define gst_ptdeepspeech_parent_class parent_class G_DEFINE_TYPE (GstPtDeepspeech, gst_ptdeepspeech, GST_TYPE_ELEMENT); static gboolean gst_ptdeepspeech_load_model (GstPtDeepspeech *self) { int status; status = DS_CreateModel (self->speech_model_path, &self->model_state); if (status != DS_ERR_OK) { GST_ELEMENT_ERROR (GST_ELEMENT(self), LIBRARY, SETTINGS, ("%s", DS_ErrorCodeToErrorMessage(status)), ("model path: %s", self->speech_model_path)); return FALSE; } status = DS_SetModelBeamWidth (self->model_state, self->beam_width); if (status != DS_ERR_OK) { GST_ELEMENT_ERROR (GST_ELEMENT(self), LIBRARY, SETTINGS, ("%s", DS_ErrorCodeToErrorMessage(status)), ("beam width: %d", self->beam_width)); return FALSE; } status = DS_EnableExternalScorer (self->model_state, self->scorer_path); if (status != DS_ERR_OK) { GST_ELEMENT_ERROR (GST_ELEMENT(self), LIBRARY, SETTINGS, ("%s", DS_ErrorCodeToErrorMessage(status)), ("scorer path: %s", self->scorer_path)); return FALSE; } status = DS_CreateStream (self->model_state, &self->streaming_state); if (status != DS_ERR_OK) { GST_ELEMENT_ERROR (GST_ELEMENT(self), LIBRARY, SETTINGS, ("%s", DS_ErrorCodeToErrorMessage(status)), (NULL)); return FALSE; } return TRUE; } static GstMessage * gst_ptdeepspeech_message_new (GstPtDeepspeech *self, GstBuffer *buf, const char *text, gboolean final) { GstClockTime timestamp = GST_CLOCK_TIME_NONE; GstStructure *s; if (buf) timestamp = GST_BUFFER_TIMESTAMP (buf); s = gst_structure_new ("deepspeech", "timestamp", G_TYPE_UINT64, timestamp, "final", G_TYPE_BOOLEAN, final, "hypothesis", G_TYPE_STRING, text, NULL); return gst_message_new_element (GST_OBJECT (self), s); } static void get_text (GstPtDeepspeech *self, GstBuffer *buf, gboolean final) { GstMessage *msg; char *result; int status; if (final) result = DS_FinishStream (self->streaming_state); else result = DS_IntermediateDecode (self->streaming_state); if (strlen(result) > 0) { msg = gst_ptdeepspeech_message_new (self, buf, result, final); gst_element_post_message (GST_ELEMENT (self), msg); } DS_FreeString (result); if (final) { /* Recreate stream, we still need it */ status = DS_CreateStream (self->model_state, &self->streaming_state); if (status != DS_ERR_OK) { GST_ELEMENT_ERROR (GST_ELEMENT(self), LIBRARY, SETTINGS, ("%s", DS_ErrorCodeToErrorMessage(status)), (NULL)); } } } static GstStateChangeReturn gst_ptdeepspeech_change_state (GstElement *element, GstStateChange transition) { GstPtDeepspeech *self = GST_PTDEEPSPEECH (element); GstStateChangeReturn ret; GstEvent *seek = NULL; GstSegment *seg = NULL; gboolean success; /* handle upward state changes */ switch (transition) { case GST_STATE_CHANGE_NULL_TO_READY: if (!gst_ptdeepspeech_load_model (self)) return GST_STATE_CHANGE_FAILURE; break; default: break; } ret = GST_ELEMENT_CLASS(gst_ptdeepspeech_parent_class)->change_state(element, transition); if (ret == GST_STATE_CHANGE_FAILURE) return ret; /* handle downward state changes */ switch (transition) { case GST_STATE_CHANGE_PLAYING_TO_PAUSED: if (self->eos) break; /* Getting the final result – crashes sometimes */ //get_text (self, NULL, FINAL); /* Work around a problem with unknown cause: * When changing to paused position queries return the running * time instead of stream time */ seg = &self->segment; if (seg->position > seg->stop) seg->position = seg->stop; seek = gst_event_new_seek (1.0, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE, GST_SEEK_TYPE_SET, seg->position, GST_SEEK_TYPE_NONE, -1); success = gst_pad_push_event (self->sinkpad, seek); GST_DEBUG_OBJECT (self, "pushed segment event: %s", success ? "yes" : "no"); /* This seems to have the same effect: */ /*success = gst_pad_push_event (self->srcpad, gst_event_new_flush_start ()); GST_DEBUG_OBJECT (self, "flush-start event %s", success ? "sent" : "not sent"); success = gst_pad_push_event (self->srcpad, gst_event_new_flush_stop (TRUE)); GST_DEBUG_OBJECT (self, "flush-stop event %s", success ? "sent" : "not sent");*/ break; case GST_STATE_CHANGE_READY_TO_NULL: DS_FreeModel (self->model_state); break; default: break; } return ret; } static GstFlowReturn gst_ptdeepspeech_chain (GstPad *pad, GstObject *parent, GstBuffer *buf) { GstPtDeepspeech *self = GST_PTDEEPSPEECH (parent); GstMapInfo info; int frame_type; gboolean final = FALSE; GstClockTime position, duration; /* Don't bother with other states then playing */ if (GST_STATE (GST_ELEMENT (self)) != GST_STATE_PLAYING) return gst_pad_push (self->srcpad, buf); /* Track current position */ position = GST_BUFFER_TIMESTAMP (buf); if (GST_CLOCK_TIME_IS_VALID (position)) { duration = GST_BUFFER_DURATION (buf); if (GST_CLOCK_TIME_IS_VALID (duration)) { position += duration; } self->segment.position = position; } gst_buffer_map(buf, &info, GST_MAP_READ); /* Is the current buffer silent? */ frame_type = vad_update (self->vad, (gint16 *)info.data, info.size / sizeof (gint16)); if (frame_type == VAD_SILENCE && self->in_speech) { if (GST_BUFFER_DURATION_IS_VALID (buf)) { self->silence_time += duration; } else { GST_WARNING ("Invalid buffer duration, consecutive_silence_time update not possible"); } if (self->silence_time >= (self->vad_min_silence * GST_MSECOND)) { self->in_speech = FALSE; final = TRUE; } } if (frame_type != VAD_SILENCE) { self->silence_time = 0; self->in_speech = TRUE; } /* Feed DeepSpeech with data */ DS_FeedAudioContent (self->streaming_state, (const short *) info.data, (unsigned int) info.size/sizeof(short)); /* Get either a final result or an intermediate result every 500 * milliseconds */ if (final) { get_text (self, buf, FINAL); self->last_result_time = position; } else { if (self->in_speech && (position - self->last_result_time) > GST_MSECOND * 500) { get_text (self, buf, INTERMEDIATE); self->last_result_time = position; } } return gst_pad_push (self->srcpad, buf); } static gboolean gst_ptdeepspeech_event (GstPad *pad, GstObject *parent, GstEvent *event) { GstPtDeepspeech *self = GST_PTDEEPSPEECH (parent); gboolean ret; GST_LOG_OBJECT (self, "Received %s event: %" GST_PTR_FORMAT, GST_EVENT_TYPE_NAME (event), (GST_EVENT_TYPE (event) == GST_EVENT_TAG) ? NULL : event); self->eos = FALSE; switch (GST_EVENT_TYPE (event)) { case GST_EVENT_CUSTOM_DOWNSTREAM_OOB: g_assert (gst_event_has_name (event, "unblock")); gst_event_unref (event); return TRUE; case GST_EVENT_CAPS:; GstCaps * caps; gst_event_parse_caps (event, &caps); ret = gst_pad_event_default (pad, parent, event); break; case GST_EVENT_EOS: get_text (self, NULL, FINAL); ret = gst_pad_event_default (pad, parent, event); self->eos = TRUE; break; case GST_EVENT_SEGMENT: /* keep current segment, used for tracking current position */ gst_event_copy_segment (event, &self->segment); /* fall through */ default: ret = gst_pad_event_default (pad, parent, event); } return ret; } static void gst_ptdeepspeech_finalize (GObject *object) { GstPtDeepspeech *self = GST_PTDEEPSPEECH (object); vad_destroy (self->vad); self->vad = NULL; g_free (self->speech_model_path); g_free (self->scorer_path); G_OBJECT_CLASS (gst_ptdeepspeech_parent_class)->finalize(object); } static void gst_ptdeepspeech_init (GstPtDeepspeech *self) { self->sinkpad = gst_pad_new_from_static_template (&sink_factory, "sink"); gst_pad_set_event_function (self->sinkpad, GST_DEBUG_FUNCPTR(gst_ptdeepspeech_event)); gst_pad_set_chain_function (self->sinkpad, GST_DEBUG_FUNCPTR(gst_ptdeepspeech_chain)); GST_PAD_SET_PROXY_CAPS (self->sinkpad); gst_element_add_pad (GST_ELEMENT (self), self->sinkpad); self->srcpad = gst_pad_new_from_static_template (&src_factory, "src"); GST_PAD_SET_PROXY_CAPS (self->srcpad); gst_element_add_pad (GST_ELEMENT (self), self->srcpad); self->vad = vad_new (DEFAULT_VAD_HYSTERESIS, DEFAULT_VAD_THRESHOLD); self->in_speech = FALSE; self->silence_time = 0; self->last_result_time = GST_CLOCK_TIME_NONE; self->eos = FALSE; } static void gst_ptdeepspeech_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GstPtDeepspeech *self = GST_PTDEEPSPEECH (object); switch (prop_id) { case PROP_SPEECH_MODEL: g_free (self->speech_model_path); self->speech_model_path = g_value_dup_string (value); break; case PROP_SCORER: g_free (self->scorer_path); self->scorer_path = g_value_dup_string (value); break; case PROP_BEAM_WIDTH: self->beam_width = g_value_get_int (value); break; case PROP_VAD_MIN_SILENCE: self->vad_min_silence = g_value_get_int (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void gst_ptdeepspeech_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GstPtDeepspeech *self = GST_PTDEEPSPEECH (object); switch (prop_id) { case PROP_SPEECH_MODEL: g_value_set_string (value, self->speech_model_path); break; case PROP_SCORER: g_value_set_string (value, self->scorer_path); break; case PROP_BEAM_WIDTH: g_value_set_int (value, self->beam_width); break; case PROP_VAD_MIN_SILENCE: g_value_set_int (value, self->vad_min_silence); default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void gst_ptdeepspeech_class_init (GstPtDeepspeechClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; GstElementClass *element_class = (GstElementClass *) klass;; object_class->set_property = gst_ptdeepspeech_set_property; object_class->get_property = gst_ptdeepspeech_get_property; object_class->finalize = gst_ptdeepspeech_finalize; element_class->change_state = gst_ptdeepspeech_change_state; obj_properties[PROP_SPEECH_MODEL] = g_param_spec_string ( "speech-model", "Speech Model", "Location of the speech graph file.", NULL, G_PARAM_READWRITE); obj_properties[PROP_SCORER] = g_param_spec_string ( "scorer", "Scorer", "Location of the scorer file.", NULL, G_PARAM_READWRITE); obj_properties[PROP_BEAM_WIDTH] = g_param_spec_int ( "beam-width", "Beam Width", "The beam width used by the decoder. A larger beam width generates better results at the cost of decoding time.", 0, G_MAXINT, DEFAULT_BEAM_WIDTH, G_PARAM_READWRITE | G_PARAM_CONSTRUCT); obj_properties[PROP_VAD_MIN_SILENCE] = g_param_spec_int ( "vad-min-silence", "VAD minimum silence", "The minimum time of silence in microseconds for voice activity detection", 0, G_MAXINT, 500, G_PARAM_READWRITE | G_PARAM_CONSTRUCT); g_object_class_install_properties ( G_OBJECT_CLASS (klass), N_PROPERTIES, obj_properties); gst_element_class_set_static_metadata ( element_class, "Parlatype Deepspeech", "Filter/Audio", "Performs speech recognition using the Mozilla DeepSpeech model", "Gabor Karsay "); gst_element_class_add_pad_template ( element_class, gst_static_pad_template_get (&src_factory)); gst_element_class_add_pad_template ( element_class, gst_static_pad_template_get (&sink_factory)); } static gboolean plugin_init (GstPlugin *plugin) { GST_DEBUG_CATEGORY_INIT (gst_ptdeepspeech_debug, "ptdeepspeech", 0, "Performs speech recognition using Mozilla's DeepSpeech model."); if (!gst_element_register(plugin, "ptdeepspeech", GST_RANK_NONE, GST_TYPE_PTDEEPSPEECH)) return FALSE; return TRUE; } /** * gst_ptdeepspeech_register: * * Registers a plugin holding our single element to use privately in this * library. * * Return value: TRUE if successful, otherwise FALSE */ gboolean gst_ptdeepspeech_register (void) { return gst_plugin_register_static ( GST_VERSION_MAJOR, GST_VERSION_MINOR, "ptdeepspeech", "PtDeepspeech plugin", plugin_init, PACKAGE_VERSION, "LGPL", "libparlatype", "Parlatype", "https://www.parlatype.org/"); } parlatype-3.0/libparlatype/src/gst/gstptdeepspeech.h000066400000000000000000000045541414030451500227760ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2021 * * 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 . */ #ifndef __GST_PTDEEPSPEECH_H__ #define __GST_PTDEEPSPEECH_H__ #include #include #include "vad_private.h" #include "deepspeech.h" G_BEGIN_DECLS #define GST_TYPE_PTDEEPSPEECH (gst_ptdeepspeech_get_type()) #define GST_PTDEEPSPEECH(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_PTDEEPSPEECH,GstPtDeepspeech)) #define GST_IS_PTDEEPSPEECH(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_PTDEEPSPEECH)) #define GST_PTDEEPSPEECH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_PTDEEPSPEECH,GstPtDeepspeechClass)) #define GST_IS_PTDEEPSPEECH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_PTDEEPSPEECH)) typedef struct _GstPtDeepspeech GstPtDeepspeech; typedef struct _GstPtDeepspeechClass GstPtDeepspeechClass; struct _GstPtDeepspeech { /* GStreamer internals */ GstBaseTransform element; GstPad *sinkpad; GstPad *srcpad; GstSegment segment; gboolean eos; /* Deepspeech */ gchar *speech_model_path; gchar *scorer_path; ModelState *model_state; StreamingState *streaming_state; gint beam_width; /* Voice Activity Detection (VAD) */ VADFilter *vad; gint quiet_bufs; gdouble silence_threshold; guint64 silence_time; gint vad_min_silence; gboolean in_speech; GstClockTime last_result_time; /* timestamp of last partial result */ }; struct _GstPtDeepspeechClass { GstElementClass parent_class; }; GType gst_ptdeepspeech_get_type (void); gboolean gst_ptdeepspeech_register (void); G_END_DECLS #endif /* __GST_PTDEEPSPEECH_H__ */ parlatype-3.0/libparlatype/src/gst/vad_private.c000066400000000000000000000076411414030451500221060ustar00rootroot00000000000000/* GStreamer * Copyright (C) 2009 Tiago Katcipis * Copyright (C) 2009 Paulo Pizarro * Copyright (C) 2009 Rogério Santos * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include "vad_private.h" #define VAD_POWER_ALPHA 0x0800 /* Q16 */ #define VAD_ZCR_THRESHOLD 0 #define VAD_BUFFER_SIZE 256 union pgen { guint64 a; gpointer v; guint64 *l; guchar *b; guint16 *w; gint16 *s; }; struct _cqueue_s { union pgen base; union pgen tail; union pgen head; gint size; }; typedef struct _cqueue_s cqueue_t; struct _vad_s { gint16 vad_buffer[VAD_BUFFER_SIZE]; cqueue_t cqueue; gint vad_state; guint64 hysteresis; guint64 vad_samples; guint64 vad_power; guint64 threshold; long vad_zcr; }; VADFilter * vad_new (guint64 hysteresis, gint threshold) { VADFilter *vad = malloc (sizeof (VADFilter)); vad_reset (vad); vad->hysteresis = hysteresis; vad_set_threshold (vad, threshold); return vad; } void vad_reset (VADFilter * vad) { memset (vad, 0, sizeof (*vad)); vad->cqueue.base.s = vad->vad_buffer; vad->cqueue.tail.a = vad->cqueue.head.a = 0; vad->cqueue.size = VAD_BUFFER_SIZE; vad->vad_state = VAD_SILENCE; } void vad_destroy (VADFilter * p) { free (p); } void vad_set_hysteresis (struct _vad_s *p, guint64 hysteresis) { p->hysteresis = hysteresis; } guint64 vad_get_hysteresis (struct _vad_s *p) { return p->hysteresis; } void vad_set_threshold (struct _vad_s *p, gint threshold_db) { gint power = (gint) (threshold_db / 10.0); p->threshold = (guint64) (pow (10, (power)) * 4294967295UL); } gint vad_get_threshold_as_db (struct _vad_s *p) { return (gint) (10 * log10 (p->threshold / 4294967295.0)); } gint vad_update (struct _vad_s * p, gint16 * data, gint len) { guint64 tail; gint frame_type; gint16 sample; gint i; for (i = 0; i < len; i++) { p->vad_power = VAD_POWER_ALPHA * ((data[i] * data[i] >> 14) & 0xFFFF) + (0xFFFF - VAD_POWER_ALPHA) * (p->vad_power >> 16) + ((0xFFFF - VAD_POWER_ALPHA) * (p->vad_power & 0xFFFF) >> 16); /* Update VAD buffer */ p->cqueue.base.s[p->cqueue.head.a] = data[i]; p->cqueue.head.a = (p->cqueue.head.a + 1) & (p->cqueue.size - 1); if (p->cqueue.head.a == p->cqueue.tail.a) p->cqueue.tail.a = (p->cqueue.tail.a + 1) & (p->cqueue.size - 1); } tail = p->cqueue.tail.a; p->vad_zcr = 0; for (;;) { sample = p->cqueue.base.s[tail]; tail = (tail + 1) & (p->cqueue.size - 1); if (tail == p->cqueue.head.a) break; p->vad_zcr += ((sample & 0x8000) != (p->cqueue.base.s[tail] & 0x8000)) ? 1 : -1; } frame_type = (p->vad_power > p->threshold && p->vad_zcr < VAD_ZCR_THRESHOLD) ? VAD_VOICE : VAD_SILENCE; if (p->vad_state != frame_type) { /* Voice to silence transition */ if (p->vad_state == VAD_VOICE) { p->vad_samples += len; if (p->vad_samples >= p->hysteresis) { p->vad_state = frame_type; p->vad_samples = 0; } } else { p->vad_state = frame_type; p->vad_samples = 0; } } else { p->vad_samples = 0; } return p->vad_state; } parlatype-3.0/libparlatype/src/gst/vad_private.h000066400000000000000000000027371414030451500221140ustar00rootroot00000000000000/* GStreamer * Copyright (C) 2009 Tiago Katcipis * Copyright (C) 2009 Paulo Pizarro * Copyright (C) 2009 Rogério Santos * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301, USA. */ #ifndef __VAD_FILTER_H__ #define __VAD_FILTER_H__ #define VAD_SILENCE 0 #define VAD_VOICE 1 typedef struct _vad_s VADFilter; gint vad_update(VADFilter *p, gint16 *data, gint len); void vad_set_hysteresis(VADFilter *p, guint64 hysteresis); guint64 vad_get_hysteresis(VADFilter *p); void vad_set_threshold(VADFilter *p, gint threshold_db); gint vad_get_threshold_as_db(VADFilter *p); VADFilter* vad_new(guint64 hysteresis, gint threshold); void vad_reset(VADFilter *p); void vad_destroy(VADFilter *p); #endif /* __VAD_FILTER__ */ parlatype-3.0/libparlatype/src/libparlatype.map000066400000000000000000000013161414030451500220210ustar00rootroot00000000000000{ global: pt_*; local: *; pt_position_manager_get_type; pt_position_manager_load; pt_position_manager_new; pt_position_manager_save; pt_waveviewer_cursor_get_type; pt_waveviewer_cursor_new; pt_waveviewer_cursor_render; pt_waveviewer_cursor_set_focus; pt_waveviewer_focus_get_type; pt_waveviewer_focus_new; pt_waveviewer_focus_set; pt_waveviewer_ruler_get_type; pt_waveviewer_ruler_new; pt_waveviewer_ruler_set_ruler; pt_waveviewer_scrollbox_get_type; pt_waveviewer_scrollbox_new; pt_waveviewer_scrollbox_set; pt_waveviewer_selection_get_type; pt_waveviewer_selection_new; pt_waveviewer_selection_set; pt_waveviewer_waveform_get_type; pt_waveviewer_waveform_new; pt_waveviewer_waveform_set; }; parlatype-3.0/libparlatype/src/libparlatype.symbols000066400000000000000000000031301414030451500227300ustar00rootroot00000000000000pt_config_apply pt_config_get_base_folder pt_config_get_file pt_config_get_key pt_config_get_lang_code pt_config_get_lang_name pt_config_get_name pt_config_get_plugin pt_config_get_type pt_config_is_installed pt_config_is_valid pt_config_new pt_config_set_base_folder pt_config_set_file pt_config_set_name pt_error_quark pt_player_clear_selection pt_player_connect_waveviewer pt_player_fast_forward pt_player_get_back pt_player_get_current_time_string pt_player_get_duration pt_player_get_duration_time_string pt_player_get_filename pt_player_get_forward pt_player_get_mode pt_player_get_mute pt_player_get_pause pt_player_get_position pt_player_get_timestamp pt_player_get_timestamp_for_time pt_player_get_timestamp_position pt_player_get_time_string pt_player_get_type pt_player_get_uri pt_player_get_volume pt_player_goto_timestamp pt_player_jump_back pt_player_jump_forward pt_player_jump_relative pt_player_jump_to_position pt_player_mute_volume pt_player_new pt_player_open_uri pt_player_pause pt_player_pause_and_rewind pt_player_play pt_player_play_pause pt_player_rewind pt_player_selection_active pt_player_set_mode pt_player_set_mute pt_player_set_selection pt_player_set_speed pt_player_set_volume pt_player_string_is_timestamp pt_waveloader_get_data pt_waveloader_get_duration pt_waveloader_get_type pt_waveloader_load_async pt_waveloader_load_finish pt_waveloader_new pt_waveloader_resize pt_waveloader_resize_async pt_waveloader_resize_finish pt_waveviewer_get_follow_cursor pt_waveviewer_get_type pt_waveviewer_load_wave_async pt_waveviewer_load_wave_finish pt_waveviewer_new pt_waveviewer_set_follow_cursor parlatype-3.0/libparlatype/src/meson.build000066400000000000000000000060641414030451500210010ustar00rootroot00000000000000gresources = gnome.compile_resources( 'pt-lib-resources', 'resources/libparlatype.gresource.xml', source_dir: 'resources', c_name: '_pt', ) marshalers = gnome.genmarshal( 'pt-marshalers', sources: 'ptmarshalers.list', prefix: '_pt_cclosure_marshal', valist_marshallers: true, ) marshal_h = marshalers[1] sources = [ gresources, marshalers, 'contrib/gnome-languages.c', 'contrib/gnome-languages.h', 'gst/gst-helpers.c', 'gst/gst-helpers.h', 'gst/gstptaudiobin.c', 'gst/gstptaudiobin.h', 'gst/gstptaudioasrbin.c', 'gst/gstptaudioasrbin.h', 'gst/gstptaudioplaybin.c', 'gst/gstptaudioplaybin.h', 'pt-config.c', 'pt-i18n.c', 'pt-i18n.h', 'pt-player.c', 'pt-position-manager.c', 'pt-position-manager.h', 'pt-waveloader.c', 'pt-waveviewer.c', 'pt-waveviewer-cursor.c', 'pt-waveviewer-cursor.h', 'pt-waveviewer-focus.c', 'pt-waveviewer-focus.h', 'pt-waveviewer-ruler.c', 'pt-waveviewer-ruler.h', 'pt-waveviewer-scrollbox.c', 'pt-waveviewer-scrollbox.h', 'pt-waveviewer-selection.c', 'pt-waveviewer-selection.h', 'pt-waveviewer-waveform.c', 'pt-waveviewer-waveform.h', ] deps = [gtk, gstreamer, gstreamer_app, gstreamer_audio, math, ] if with_pocketsphinx sources += [ 'gst/gstparlasphinx.c', 'gst/gstparlasphinx.h', ] sphinxbase = dependency('sphinxbase') pocketsphinx = dependency('pocketsphinx') deps += [sphinxbase, pocketsphinx] endif if with_deepspeech sources += [ 'gst/gstptdeepspeech.c', 'gst/gstptdeepspeech.h', 'gst/vad_private.c', 'gst/vad_private.h', ] deepspeech = compiler.find_library('deepspeech') deps += [deepspeech] endif headers = [ 'pt-config.h', 'pt-player.h', 'pt-waveloader.h', 'pt-waveviewer.h', ] install_headers(headers, subdir: 'parlatype') mapfile = 'libparlatype.map' vflag = '-Wl,--version-script,@0@/@1@'.format(meson.current_source_dir(), mapfile) libparlatype = shared_library( 'parlatype', sources: sources, version: libparlatype_version, dependencies: deps, include_directories: libconf_inc, link_args: vflag, link_depends: mapfile, install: true, c_args: [ '-DPARLATYPE_COMPILATION', '-DG_LOG_DOMAIN="libparlatype"', ], ) libparlatype_dep = declare_dependency( link_with: libparlatype, include_directories: libconf_inc, dependencies: [ gtk, ], ) pkg = import('pkgconfig') pkg.generate( libparlatype, filebase: meson.project_name(), name: meson.project_name(), description: 'libparlatype, core support for parlatype', version: meson.project_version(), subdirs: meson.project_name(), requires: [ 'gtk+-3.0', ], requires_private: [ 'gstreamer-1.0', ], ) gir = get_option('gir') if gir gir_dep = dependency('gobject-introspection-1.0') introspection_sources = [ headers, 'pt-config.c', 'pt-player.c', 'pt-waveloader.c', 'pt-waveviewer.c', ] gir_args = [ '-DPARLATYPE_COMPILATION', '--quiet', ] gnome.generate_gir(libparlatype, sources: introspection_sources, nsversion: libparlatype_api_version, namespace: 'Parlatype', symbol_prefix: 'pt_', identifier_prefix: 'Pt', includes: ['GObject-2.0', 'Gtk-3.0'], install: true, extra_args: gir_args, ) endif parlatype-3.0/libparlatype/src/parlatype.h000066400000000000000000000016331414030451500210060ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2021 * * 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 . */ #ifndef PARLATYPE_H #define PARLATYPE_H #define __PARLATYPE_H_INSIDE__ #include "pt-config.h" #include "pt-player.h" #include "pt-waveloader.h" #include "pt-waveviewer.h" #undef __PARLATYPE_H_INSIDE__ #endif parlatype-3.0/libparlatype/src/pt-config.c000066400000000000000000000612471414030451500206750ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2021 * * 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 . */ #include "config.h" #include #define GETTEXT_PACKAGE GETTEXT_LIB #include #include "contrib/gnome-languages.h" #include "pt-config.h" struct _PtConfigPrivate { gchar *path; GFile *file; GKeyFile *keyfile; gchar *name; gchar *lang_name; gchar *lang_code; gchar *plugin; gchar *base_folder; gboolean is_valid; gboolean is_installed; }; enum { PROP_0, PROP_FILE, PROP_IS_VALID, PROP_IS_INSTALLED, PROP_NAME, N_PROPERTIES }; static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, }; static gboolean pt_config_verify_install (PtConfig *config); G_DEFINE_TYPE_WITH_PRIVATE (PtConfig, pt_config, G_TYPE_OBJECT) /** * SECTION: pt-config * @short_description: Configuration for ASR plugins * @include: parlatype/pt-config.h * * A PtConfig represents a configuration for a GStreamer ASR plugin. * Configuration files are written in .ini-like style. Each file holds one * configuration that is used to instantiate a PtConfig. * * Its main use is to be applied to a GStreamer plugin. * * PtConfig is used for reading configurations in, not for writing them. * To add your own configuration, edit it yourself. Learn more about the file * format in the description of #GKeyFile in general and in * pt_config_is_valid() in particular. * * To delete a configuration, get its #PtConfig:file property, delete the file * and unref the config object. */ GQuark pt_error_quark (void) { return g_quark_from_static_string ("pt-error-quark"); } static gboolean pt_config_save (PtConfig *config) { GError *error = NULL; gboolean result; result = g_key_file_save_to_file ( config->priv->keyfile, config->priv->path, &error); if (error) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "Keyfile not saved: %s", error->message); g_error_free (error); } return result; } static GValue pt_config_get_value (PtConfig *config, gchar *group, gchar *key, GType type) { GError *error = NULL; GValue result = G_VALUE_INIT; if (g_strcmp0 (group, "Files") == 0) { g_value_init (&result, G_TYPE_STRING); gchar *base = pt_config_get_base_folder (config); gchar **pieces = g_key_file_get_string_list (config->priv->keyfile, "Files", key, NULL, &error); gchar *relative = g_build_filenamev (pieces); gchar *absolute = g_build_filename (base, relative, NULL); g_value_set_string (&result, absolute); g_free (absolute); g_free (relative); g_strfreev (pieces); } else { switch (type) { case (G_TYPE_STRING): g_value_init (&result, G_TYPE_STRING); gchar *string = g_key_file_get_string (config->priv->keyfile, "Parameters", key, &error); g_value_set_string (&result, string); g_free (string); break; case (G_TYPE_UINT): case (G_TYPE_INT): g_value_init (&result, G_TYPE_INT); gint integer = g_key_file_get_integer (config->priv->keyfile, "Parameters", key, &error); g_value_set_int (&result, integer); break; case (G_TYPE_FLOAT): g_value_init (&result, G_TYPE_FLOAT); gfloat floaty = g_key_file_get_double (config->priv->keyfile, "Parameters", key, &error); g_value_set_float (&result, floaty); break; case (G_TYPE_DOUBLE): g_value_init (&result, G_TYPE_DOUBLE); gdouble doubly = g_key_file_get_double (config->priv->keyfile, "Parameters", key, &error); g_value_set_double (&result, doubly); break; case (G_TYPE_BOOLEAN): g_value_init (&result, G_TYPE_BOOLEAN); gboolean boolean = g_key_file_get_boolean (config->priv->keyfile, "Parameters", key, &error); g_value_set_boolean (&result, boolean); break; default: g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "G_TYPE \"%s\" not handled", g_type_name (type)); g_assert_not_reached (); } } if (error) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "Keyfile value \"%s\" not retrieved: %s", key, error->message); g_error_free (error); } return result; } static gchar* pt_config_get_string (PtConfig *config, gchar *group, gchar *parameter) { GError *error = NULL; gchar *result; result = g_key_file_get_string (config->priv->keyfile, group, parameter, &error); if (error) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Keyfile value not retrieved: %s", error->message); g_error_free (error); } return result; } static gboolean pt_config_set_string (PtConfig *config, gchar *group, gchar *parameter, gchar *value) { g_key_file_set_string ( config->priv->keyfile, group, parameter, value); return pt_config_save (config); } /** * pt_config_get_name: * @config: a configuration instance * * The human-visible name to identify a configuration. * * Return value: (transfer none): the configuration’s name as a string * * Since: 3.0 */ gchar* pt_config_get_name (PtConfig *config) { g_return_val_if_fail (PT_IS_CONFIG (config), NULL); g_return_val_if_fail (config->priv->is_valid, NULL); return config->priv->name; } /** * pt_config_set_name: * @config: a configuration instance * @name: the new name * * Sets the human-visible name of a configuration. It doesn’t have to be * unique. This saves the new name immediately to the configuration file. * * Return value: TRUE on success, otherwise FALSE * * Since: 3.0 */ gboolean pt_config_set_name (PtConfig *config, gchar *name) { g_return_val_if_fail (PT_IS_CONFIG (config), FALSE); g_return_val_if_fail (config->priv->is_valid, FALSE); if (g_strcmp0 (config->priv->name, name) == 0) return TRUE; if (!pt_config_set_string (config, "Model", "Name", name)) return FALSE; g_free (config->priv->name); config->priv->name = g_strdup (name); g_object_notify_by_pspec (G_OBJECT (config), obj_properties[PROP_NAME]); return TRUE; } /** * pt_config_set_base_folder: * @config: a configuration instance * @name: the new base folder * * Sets the configuration’s base folder. * * Return value: TRUE on success, otherwise FALSE * * Since: 3.0 */ gboolean pt_config_set_base_folder (PtConfig *config, gchar *name) { g_return_val_if_fail (PT_IS_CONFIG (config), FALSE); g_return_val_if_fail (config->priv->is_valid, FALSE); gboolean result; gboolean installed; result = pt_config_set_string (config, "Model", "BaseFolder", name); if (result) { g_free (config->priv->base_folder); config->priv->base_folder = g_strdup (name); installed = pt_config_verify_install (config); if (installed != config->priv->is_installed) { config->priv->is_installed = installed; g_object_notify_by_pspec (G_OBJECT (config), obj_properties[PROP_IS_INSTALLED]); } } return result; } /** * pt_config_get_base_folder: * @config: a configuration instance * * Gets the configuration’s base folder. If the model is not installed, the * base folder is not set and the return value is NULL. Another reason for * returning NULL is an invalid configuration, check #PtConfig:is-valid for * that. * * Return value: (transfer none): the configuaration’s base folder as a string or NULL * * Since: 3.0 */ gchar* pt_config_get_base_folder (PtConfig *config) { g_return_val_if_fail (PT_IS_CONFIG (config), NULL); g_return_val_if_fail (config->priv->is_valid, NULL); return config->priv->base_folder; } /** * pt_config_get_plugin: * @config: a configuration instance * * Gets the name of the GStreamer plugin the configuration is intended for. * It has to be exactly the string GStreamer uses to instantiate the plugin. * * Return value: the plugin’s name as a string * * Since: 3.0 */ gchar* pt_config_get_plugin (PtConfig *config) { g_return_val_if_fail (PT_IS_CONFIG (config), NULL); g_return_val_if_fail (config->priv->is_valid, NULL); return config->priv->plugin; } /** * pt_config_get_lang_code: * @config: a configuration instance * * Gets the language the model was made for. It’s the ISO 639-1 code * (2 letters) if available, otherwise ISO 639-2 (3 letters). * * Return value: (transfer none): the language code as a string * * Since: 3.0 */ gchar* pt_config_get_lang_code (PtConfig *config) { g_return_val_if_fail (PT_IS_CONFIG (config), NULL); g_return_val_if_fail (config->priv->is_valid, NULL); return config->priv->lang_code; } /** * pt_config_get_lang_name: * @config: a configuration instance * * Gets the localized name of the language the model was made for. * * Return value: (transfer none): the language code as a string * * Since: 3.0 */ gchar* pt_config_get_lang_name (PtConfig *config) { g_return_val_if_fail (PT_IS_CONFIG (config), NULL); g_return_val_if_fail (config->priv->is_valid, NULL); return config->priv->lang_name; } /** * pt_config_get_key: * @config: a configuration instance * @key: the name of a key in the [Model] group * * Get other optional keys in the [Model] group. All keys are assumed to be * strings. If the key is not set, NULL is returned. * * Return value: (transfer full): the key’s value as a string or NULL * * Since: 3.0 */ gchar* pt_config_get_key (PtConfig *config, gchar *key) { g_return_val_if_fail (PT_IS_CONFIG (config), NULL); g_return_val_if_fail (config->priv->is_valid, NULL); return pt_config_get_string (config, "Model", key); } /** * pt_config_apply: * @config: a configuration instance * @plugin: the GStreamer ASR plugin * @error: (nullable): return location for an error, or NULL * * Applies a configuration to a GStreamer plugin. * * Return value: TRUE on success, FALSE if a parameter could not be set * * Since: 3.0 */ gboolean pt_config_apply (PtConfig *config, GObject *plugin, GError **error) { g_return_val_if_fail (PT_IS_CONFIG (config), FALSE); g_return_val_if_fail (config->priv->is_valid, FALSE); g_return_val_if_fail (G_IS_OBJECT (plugin), FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); gchar **keys = NULL; GParamSpec *spec; GType type; GValue value; gchar *groups[] = {"Parameters", "Files", NULL}; g_object_freeze_notify (plugin); /* Iterate over all groups and all their keys, get the properties’ * type and set the properties. */ for (int g = 0; groups[g] != NULL; g++) { keys = g_key_file_get_keys (config->priv->keyfile, groups[g], NULL, NULL); /* "Parameters" is optional */ if (!keys) continue; for (int k = 0; keys[k] != NULL; k++) { spec = g_object_class_find_property (G_OBJECT_GET_CLASS(plugin), keys[k]); if (!spec) { g_set_error (error, PT_ERROR, PT_ERROR_PLUGIN_MISSING_PROPERTY, _("Plugin doesn’t have a property “%s”"), keys[k]); g_strfreev (keys); g_object_thaw_notify (plugin); return FALSE; } if ((spec->flags & G_PARAM_WRITABLE) == 0) { g_set_error (error, PT_ERROR, PT_ERROR_PLUGIN_NOT_WRITABLE, _("Plugin property “%s” is not writable"), keys[k]); g_strfreev (keys); g_object_thaw_notify (plugin); return FALSE; } type = G_PARAM_SPEC_VALUE_TYPE(spec); value = pt_config_get_value (config, groups[g], keys[k], type); if (g_param_value_validate (spec, &value)) { /* TRUE == modifying value was necessary == value is not valid */ g_set_error (error, PT_ERROR, PT_ERROR_PLUGIN_WRONG_VALUE, _("Value for property “%s” is not valid"), keys[k]); g_strfreev (keys); g_value_unset (&value); g_object_thaw_notify (plugin); return FALSE; } g_object_set_property (plugin, keys[k], &value); g_value_unset (&value); } g_strfreev (keys); } g_object_thaw_notify (plugin); return TRUE; } static gboolean key_is_empty (PtConfig *config, gchar *key) { gboolean result = FALSE; gchar *value; value = g_key_file_get_string (config->priv->keyfile, "Model", key, NULL); if (!value) return TRUE; if (g_strcmp0 (value, "") == 0) result = TRUE; g_free (value); return result; } static gboolean pt_config_version_is_valid (PtConfig *config) { gchar *version; gchar **version_split; gint64 major; gboolean success; version = pt_config_get_string (config, "Model", "Version"); if (!version || g_strcmp0 (version, "") == 0) { g_free (version); return FALSE; } version_split = g_strsplit (version, ".", 2); success = g_ascii_string_to_signed (version_split[0], 10, 1, 1, /* base, min, max */ &major, NULL); g_free (version); if (!success) { g_strfreev (version_split); return FALSE; } if (!version_split[1]) { g_strfreev (version_split); return FALSE; } success = g_ascii_string_to_signed (version_split[1], 10, 0, G_MAXINT, NULL, NULL); g_strfreev (version_split); return success; } /** * pt_config_is_installed: * @config: a configuration instance * * Checks whether the model is installed, that means the base folder exists * and all files listed in the configuration are located inside the base folder. * * Return value: TRUE for an installed model, otherwise FALSE * * Since: 3.0 */ gboolean pt_config_is_installed (PtConfig *config) { g_return_val_if_fail (PT_IS_CONFIG (config), FALSE); g_return_val_if_fail (config->priv->is_valid, FALSE); return config->priv->is_installed; } /** * pt_config_is_valid: * @config: the configuration to test * * Checks if a configuration is formally valid: * * * It has a version string of the form 1.x (major.minor). Major versions higher * than 1 are not understood by this version of libparlatype. Minor numbers are * supposed to be compatible and are checked only for existence * * * It has the following groups: [Model], [Files]. A [Parameters] group is optional. * * * [Model] has the following keys: Name, Plugin, BaseFolder, Language. * * * [Files] has at least one key. * * * All keys have non-empty values, except BaseFolder, which might be empty. * * * * What is not tested: * * * Optional (URL) or unknown groups or keys * * * Order of groups and keys. * * * If BaseFolder is set. * * * If the language code exists. * * * If files and paths in [Files] are formally valid (relative paths * with a slash as separator, e.g. subdir/subdir/file.name) * * * If files and paths exist on the file system. * * * If the plugin is installed. * * * If the plugin supports given parameters. * * * * Return value: TRUE for a formally valid configuration, otherwise FALSE * * Since: 3.0 */ gboolean pt_config_is_valid (PtConfig *config) { g_return_val_if_fail (PT_IS_CONFIG (config), FALSE); return config->priv->is_valid; } static gboolean is_valid (PtConfig *config) { gchar *groups[] = {"Model", "Files", NULL}; gchar *model_keys[] = {"Name", "Plugin", "BaseFolder", "Language", NULL}; gchar *mandatory[] = {"Name", "Plugin", "Language", NULL}; gchar **parameters = NULL; gboolean valid = TRUE; int i; for (i = 0; groups[i] != NULL; i++) { if (!g_key_file_has_group (config->priv->keyfile, groups[i])) return FALSE; } if (!pt_config_version_is_valid (config)) return FALSE; for (i = 0; model_keys[i] != NULL; i++) { if (!g_key_file_has_key (config->priv->keyfile, "Model", model_keys[i], NULL)) return FALSE; } for (i = 0; mandatory[i] != NULL; i++) { if (key_is_empty (config, mandatory[i])) return FALSE; } parameters = g_key_file_get_keys (config->priv->keyfile, "Files", NULL, NULL); if (!parameters || parameters[0] == NULL) return FALSE; g_strfreev (parameters); return valid; } static gboolean pt_config_verify_install (PtConfig *config) { gchar **keys = NULL; GValue value; gboolean result = TRUE; if (!config->priv->base_folder) return FALSE; if (!g_file_test (config->priv->base_folder, G_FILE_TEST_IS_DIR | G_FILE_TEST_EXISTS)) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "MESSAGE", "Base folder \"%s\" not found", config->priv->base_folder); return FALSE; } keys = g_key_file_get_keys (config->priv->keyfile, "Files", NULL, NULL); for (int i = 0; keys[i] != NULL; i++) { value = pt_config_get_value (config, "Files", keys[i], G_TYPE_NONE); result = g_file_test (g_value_get_string (&value), G_FILE_TEST_EXISTS); if (!result) g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "MESSAGE", "File \"%s\" not found", g_value_get_string(&value)); g_value_unset (&value); if (!result) break; } g_strfreev (keys); return result; } static void free_private (PtConfigPrivate *priv) { if (priv->keyfile) g_key_file_free (priv->keyfile); if (priv->file) g_object_unref (priv->file); g_free (priv->path); g_free (priv->lang_name); g_free (priv->lang_code); g_free (priv->name); g_free (priv->plugin); g_free (priv->base_folder); } static void tabula_rasa (PtConfigPrivate *priv) { priv->is_valid = FALSE; priv->is_installed = FALSE; priv->path = NULL; priv->file = NULL; priv->keyfile = NULL; priv->name = NULL; priv->lang_name = NULL; priv->lang_code = NULL; priv->plugin = NULL; priv->base_folder = NULL; } static void setup_config (PtConfig *config) { PtConfigPrivate *priv = config->priv; GError *error = NULL; gboolean loaded; priv->keyfile = g_key_file_new (); g_key_file_set_list_separator (priv->keyfile, '/'); priv->path = g_file_get_path (priv->file); if (!priv->path) { return; } loaded = g_key_file_load_from_file ( priv->keyfile, priv->path, G_KEY_FILE_KEEP_COMMENTS, &error); if (!loaded) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "MESSAGE", "Key file \"%s\" not loaded: %s", priv->path, error->message); g_error_free (error); } if (!loaded || !is_valid (config)) return; priv->is_valid = TRUE; priv->name = pt_config_get_string (config, "Model", "Name"); priv->plugin = pt_config_get_string (config, "Model", "Plugin"); priv->base_folder = pt_config_get_string (config, "Model", "BaseFolder"); priv->lang_code = pt_config_get_string (config, "Model", "Language"); priv->lang_name = gnome_get_language_from_locale (config->priv->lang_code, NULL); priv->is_installed = pt_config_verify_install (config); } /** * pt_config_get_file: * @config: a configuration instance * * The #GFile that storing the configuration. * * Return value: (transfer none): the file this object is based on * * Since: 3.0 */ GFile* pt_config_get_file (PtConfig *config) { g_return_val_if_fail (PT_IS_CONFIG (config), NULL); g_return_val_if_fail (config->priv->is_valid, NULL); return config->priv->file; } /** * pt_config_set_file: * @config: a configuration instance * @file: the new file * * Sets a new file, invalidating all fields and reevaluating status. * * Since: 3.0 */ void pt_config_set_file (PtConfig *config, GFile *file) { g_return_if_fail (PT_IS_CONFIG (config)); g_return_if_fail (file != NULL); PtConfigPrivate *priv = config->priv; free_private (priv); tabula_rasa (priv); config->priv->file = g_object_ref (file); setup_config (config); } static void pt_config_init (PtConfig *config) { config->priv = pt_config_get_instance_private (config); tabula_rasa (config->priv); } static void pt_config_dispose (GObject *object) { G_OBJECT_CLASS (pt_config_parent_class)->dispose (object); } static void pt_config_finalize (GObject *object) { PtConfig *config = PT_CONFIG (object); free_private (config->priv); G_OBJECT_CLASS (pt_config_parent_class)->finalize (object); } static void pt_config_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { PtConfig *config = PT_CONFIG (object); switch (property_id) { case PROP_FILE: pt_config_set_file (config, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void pt_config_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { PtConfig *config = PT_CONFIG (object); switch (property_id) { case PROP_FILE: g_value_set_object (value, config->priv->file); break; case PROP_IS_VALID: g_value_set_boolean (value, config->priv->is_valid); break; case PROP_IS_INSTALLED: g_value_set_boolean (value, config->priv->is_installed); break; case PROP_NAME: g_value_set_string (value, config->priv->name); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void pt_config_class_init (PtConfigClass *klass) { G_OBJECT_CLASS (klass)->set_property = pt_config_set_property; G_OBJECT_CLASS (klass)->get_property = pt_config_get_property; G_OBJECT_CLASS (klass)->dispose = pt_config_dispose; G_OBJECT_CLASS (klass)->finalize = pt_config_finalize; /** * PtConfig:file: * * The file that was used to construct the object and contains * the configuration settings. This property is immutable and the file * can not be reloaded. */ obj_properties[PROP_FILE] = g_param_spec_object ( "file", "File", "File used to construct object", G_TYPE_FILE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); /** * PtConfig:is-valid: * * Indicates whether the configuration is formally valid. See * pt_config_is_valid() for the checks done. This property is available * from the very beginning and is immutable. You can not recover from * an invalid state. */ obj_properties[PROP_IS_VALID] = g_param_spec_boolean ( "is-valid", "Valid", "Whether the config is formally valid", FALSE, G_PARAM_READABLE); /** * PtConfig:is-installed: * * Indicates whether the language model is installed. */ obj_properties[PROP_IS_INSTALLED] = g_param_spec_boolean ( "is-installed", "Installed", "Whether the language model is installed", FALSE, G_PARAM_READABLE); /** * PtConfig:name: * * The display name for the model. */ obj_properties[PROP_NAME] = g_param_spec_string ( "name", "Name", "Display name for the model", NULL, G_PARAM_READABLE); g_object_class_install_properties ( G_OBJECT_CLASS (klass), N_PROPERTIES, obj_properties); } /** * pt_config_new: * @file: (not nullable): a file with configuration settings in .ini-like format * * Returns a new configuration instance for the given file. The configuration * is immediately checked for formal validity. This can be queried with * pt_config_is_valid() or the property #PtConfig:is-valid. The property * doesn’t change anymore. * * * If the configuration is not valid, all methods are no-operations and * return FALSE or NULL. * * * After use g_object_unref() it. * * Return value: (transfer full): a new #PtConfig * * Since: 3.0 */ PtConfig * pt_config_new (GFile *file) { g_return_val_if_fail (file != NULL, NULL); g_return_val_if_fail (G_IS_FILE (file), NULL); return g_object_new (PT_TYPE_CONFIG, "file", file, NULL); } parlatype-3.0/libparlatype/src/pt-config.h000066400000000000000000000060241414030451500206720ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2020 * * 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 . */ #ifndef PT_CONFIG_H #define PT_CONFIG_H #if !defined (__PARLATYPE_H_INSIDE__) && !defined (PARLATYPE_COMPILATION) #error "Only can be included directly." #endif #include #define PT_TYPE_CONFIG (pt_config_get_type()) #define PT_CONFIG(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PT_TYPE_CONFIG, PtConfig)) #define PT_IS_CONFIG(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PT_TYPE_CONFIG)) typedef struct _PtConfig PtConfig; typedef struct _PtConfigClass PtConfigClass; typedef struct _PtConfigPrivate PtConfigPrivate; /** * PtConfig: * * #PtConfig contains only private fields and should not be directly accessed. */ struct _PtConfig { GObject parent; /*< private > */ PtConfigPrivate *priv; }; struct _PtConfigClass { GObjectClass parent_class; }; /** * PT_ERROR: * * Error domain for Parlatype. Errors in this domain will be from the * #PtError enumeration. See #GError for more information on error domains. */ #define PT_ERROR pt_error_quark () /** * PtError: * @PT_ERROR_PLUGIN_MISSING_PROPERTY: The plugin doesn’t have a property. * @PT_ERROR_PLUGIN_NOT_WRITABLE: The plugin’s property is not writable. * @PT_ERROR_PLUGIN_WRONG_VALUE: The value is not valid for the property. * * Error codes for Parlatype in the PT_ERROR domain. */ typedef enum { PT_ERROR_PLUGIN_MISSING_PROPERTY, PT_ERROR_PLUGIN_NOT_WRITABLE, PT_ERROR_PLUGIN_WRONG_VALUE, } PtError; GType pt_config_get_type (void) G_GNUC_CONST; GQuark pt_error_quark (void); gchar* pt_config_get_name (PtConfig *config); gboolean pt_config_set_name (PtConfig *config, gchar *name); gchar* pt_config_get_base_folder (PtConfig *config); gboolean pt_config_set_base_folder (PtConfig *config, gchar *name); gchar* pt_config_get_plugin (PtConfig *config); gchar* pt_config_get_lang_code (PtConfig *config); gchar* pt_config_get_lang_name (PtConfig *config); gchar* pt_config_get_key (PtConfig *config, gchar *key); GFile* pt_config_get_file (PtConfig *config); void pt_config_set_file (PtConfig *config, GFile *file); gboolean pt_config_apply (PtConfig *config, GObject *plugin, GError **error); gboolean pt_config_is_valid (PtConfig *config); gboolean pt_config_is_installed (PtConfig *config); PtConfig* pt_config_new (GFile *file); #endif parlatype-3.0/libparlatype/src/pt-i18n.c000066400000000000000000000031101414030451500201700ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2019 * * 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 . */ /** * pt-i18n * Initialize i18n for the library. * * Libraries have to be initialized just like applications, see * GLib Reference Manual → GLib Utilities → Internationalization * * This is called from pt_player_new() and also from pt_waveloader_new() * because PtWaveloader can be used without a PtPlayer. All other objects * with translations are run after creating either a PtPlayer or PtWaveloader * and don’t need this call anymore. * * “Inspired” by totem-pl-parser.c: totem_pl_parser_init_i18n(). */ #include "config.h" #define GETTEXT_PACKAGE GETTEXT_LIB #include static gpointer pt_i18n_real_init (gpointer data) { bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); return NULL; } void _pt_i18n_init (void) { static GOnce my_once = G_ONCE_INIT; g_once (&my_once, pt_i18n_real_init, NULL); } parlatype-3.0/libparlatype/src/pt-i18n.h000066400000000000000000000015011414030451500201770ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2019 * * 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 . */ #ifndef PT_I18N_H #define PT_I18N_H #include G_BEGIN_DECLS void _pt_i18n_init (void); G_END_DECLS #endif parlatype-3.0/libparlatype/src/pt-player.c000066400000000000000000001701471414030451500207240ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2016-2020 * * 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 . */ /** * SECTION: pt-player * @short_description: The GStreamer backend for Parlatype. * @stability: Stable * @include: parlatype/pt-player.h * * PtPlayer is the GStreamer backend for Parlatype. Construct it with #pt_player_new(). * Then you have to open a file with pt_player_open_uri(). * * The internal time unit in PtPlayer are milliseconds. */ #include "config.h" #include #define GETTEXT_PACKAGE GETTEXT_LIB #include #include #include #include "gst/gst-helpers.h" #include "gst/gstptaudiobin.h" #ifdef HAVE_POCKETSPHINX #include "gst/gstparlasphinx.h" #endif #ifdef HAVE_DEEPSPEECH #include "gst/gstptdeepspeech.h" #endif #include "pt-config.h" #include "pt-i18n.h" #include "pt-position-manager.h" #include "pt-waveviewer.h" #include "pt-player.h" struct _PtPlayerPrivate { GstElement *play; GstElement *scaletempo; GstElement *audio_bin; guint bus_watch_id; PtPositionManager *pos_mgr; GHashTable *plugins; gint64 dur; gdouble speed; gdouble volume; gboolean mute; gint pause; gint back; gint forward; gboolean repeat_all; gboolean repeat_selection; gint64 segstart; gint64 segend; GCancellable *c; PtPrecisionType timestamp_precision; gboolean timestamp_fixed; gchar *timestamp_left; gchar *timestamp_right; gchar *timestamp_sep; PtWaveviewer *wv; }; enum { PROP_0, PROP_SPEED, PROP_MUTE, PROP_VOLUME, PROP_TIMESTAMP_PRECISION, PROP_TIMESTAMP_FIXED, PROP_TIMESTAMP_DELIMITER, PROP_TIMESTAMP_FRACTION_SEP, PROP_REWIND_ON_PAUSE, PROP_BACK, PROP_FORWARD, PROP_REPEAT_ALL, PROP_REPEAT_SELECTION, N_PROPERTIES }; static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, }; #define ONE_HOUR 3600000 #define TEN_MINUTES 600000 static gboolean bus_call (GstBus *bus, GstMessage *msg, gpointer data); static void remove_message_bus (PtPlayer *player); G_DEFINE_TYPE_WITH_PRIVATE (PtPlayer, pt_player, G_TYPE_OBJECT) /* -------------------------- static helpers -------------------------------- */ static gboolean pt_player_query_position (PtPlayer *player, gpointer position) { gboolean result; result = gst_element_query_position (player->priv->play, GST_FORMAT_TIME, position); return result; } static void pt_player_clear (PtPlayer *player) { remove_message_bus (player); gst_element_set_state (player->priv->play, GST_STATE_NULL); } static void pt_player_seek (PtPlayer *player, gint64 position) { /* Set the pipeline to @position. The stop position (player->priv->segend) usually doesn’t has to be set, but it’s important after a segment/selection change and after a rewind (trickmode) has been completed. To simplify things, we always set the stop position. */ gst_element_seek ( player->priv->play, player->priv->speed, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE, GST_SEEK_TYPE_SET, position, GST_SEEK_TYPE_SET, player->priv->segend); /* Block until state changed */ gst_element_get_state ( player->priv->play, NULL, NULL, GST_CLOCK_TIME_NONE); } static GFile* pt_player_get_file (PtPlayer *player) { gchar *uri = NULL; GFile *result = NULL; g_object_get (G_OBJECT (player->priv->play), "current_uri", &uri, NULL); if (uri) { result = g_file_new_for_uri (uri); g_free (uri); } return result; } static void metadata_save_position (PtPlayer *player) { GFile *file = NULL; gint64 pos; if (!pt_player_query_position (player, &pos)) return; file = pt_player_get_file (player); if (!file) return; pos = pos / GST_MSECOND; pt_position_manager_save (player->priv->pos_mgr, file, pos); g_object_unref (file); } static void metadata_goto_position (PtPlayer *player) { GFile *file = NULL; gint64 pos; file = pt_player_get_file (player); if (!file) return; pos = pt_position_manager_load (player->priv->pos_mgr, file); pt_player_jump_to_position (player, pos); g_object_unref (file); } static void remove_message_bus (PtPlayer *player) { if (player->priv->bus_watch_id > 0) { g_source_remove (player->priv->bus_watch_id); player->priv->bus_watch_id = 0; } } static void add_message_bus (PtPlayer *player) { GstBus *bus; remove_message_bus (player); bus = gst_pipeline_get_bus (GST_PIPELINE (player->priv->play)); player->priv->bus_watch_id = gst_bus_add_watch (bus, bus_call, player); gst_object_unref (bus); } static gboolean bus_call (GstBus *bus, GstMessage *msg, gpointer data) { PtPlayer *player = (PtPlayer *) data; gint64 pos; switch (GST_MESSAGE_TYPE (msg)) { case GST_MESSAGE_SEGMENT_DONE: /* From GStreamer documentation: When performing a segment seek: after the playback of the segment completes, no EOS will be emitted by the element that performed the seek, but a GST_MESSAGE_SEGMENT_DONE message will be posted on the bus by the element. */ case GST_MESSAGE_EOS: /* We rely on that SEGMENT_DONE/EOS is exactly at the end of segment. This works in Debian 8, but not Ubuntu 16.04 (because of newer GStreamer?) with mp3s. Jump to the real end. */ pt_player_query_position (player, &pos); if (pos != player->priv->segend) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Correcting EOS position: %" G_GINT64_FORMAT " ms", GST_TIME_AS_MSECONDS (player->priv->segend - pos)); pt_player_seek (player, player->priv->segend); } g_signal_emit_by_name (player, "end-of-stream"); break; case GST_MESSAGE_DURATION_CHANGED: { gint64 dur; gst_element_query_duration (player->priv->play, GST_FORMAT_TIME, &dur); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "New duration: %" G_GINT64_FORMAT, dur); if (player->priv->dur != player->priv->segend) { player->priv->dur = dur; } else { player->priv->dur = player->priv->segend = dur; pt_player_query_position (player, &pos); pt_player_seek (player, pos); } break; } case GST_MESSAGE_STATE_CHANGED: { if (GST_MESSAGE_SRC(msg) != GST_OBJECT (player->priv->play)) break; gdouble volume; volume = gst_stream_volume_get_volume (GST_STREAM_VOLUME (player->priv->audio_bin), GST_STREAM_VOLUME_FORMAT_CUBIC); if (player->priv->volume != volume) { player->priv->volume = volume; g_object_notify_by_pspec (G_OBJECT (player), obj_properties[PROP_VOLUME]); } break; } case GST_MESSAGE_ERROR: { gchar *debug; GError *error; gst_message_parse_error (msg, &error, &debug); /* Error is returned. Log the message here at level DEBUG, as higher levels will abort tests. */ g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Error from element %s: %s", GST_OBJECT_NAME (msg->src), error->message); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Debugging info: %s", (debug) ? debug : "none"); g_free (debug); g_signal_emit_by_name (player, "error", error); g_error_free (error); pt_player_clear (player); break; } case GST_MESSAGE_ELEMENT: if (g_strcmp0 (GST_MESSAGE_SRC_NAME (msg), "parlasphinx") == 0 || g_strcmp0 (GST_MESSAGE_SRC_NAME (msg), "ptdeepspeech") == 0) { const GstStructure *st = gst_message_get_structure (msg); if (g_value_get_boolean (gst_structure_get_value (st, "final"))) { g_signal_emit_by_name (player, "asr-final", g_value_get_string ( gst_structure_get_value (st, "hypothesis"))); } else { g_signal_emit_by_name (player, "asr-hypothesis", g_value_get_string ( gst_structure_get_value (st, "hypothesis"))); } } break; default: break; } return TRUE; } /* -------------------------- opening files --------------------------------- */ /** * pt_player_open_uri: * @player: a #PtPlayer * @uri: the URI of the file * * Opens a local audio file for playback. It doesn’t work with videos or streams. * Only one file can be open at a time, playlists are not supported by the * backend. Opening a new file will close the previous one. * * When closing a file or on object destruction PtPlayer tries to write the * last position into the file’s metadata. On opening a file it reads the * metadata and jumps to the last known position if found. * * The player is set to the paused state and ready for playback. To start * playback use @pt_player_play(). * * This operation blocks until it is finished. It returns TRUE on success or * FALSE on error. Errors are emitted async via #PtPlayer::error signal. * * Return value: TRUE if successful, otherwise FALSE * * Since: 2.0 */ gboolean pt_player_open_uri (PtPlayer *player, gchar *uri) { g_return_val_if_fail (PT_IS_PLAYER (player), FALSE); g_return_val_if_fail (uri != NULL, FALSE); /* If we had an open file before, remember its position */ metadata_save_position (player); /* Reset any open streams */ pt_player_clear (player); player->priv->dur = -1; g_object_set (G_OBJECT (player->priv->play), "uri", uri, NULL); /* setup message handler */ add_message_bus (player); pt_player_pause (player); /* Block until state changed, return on failure */ if (gst_element_get_state (player->priv->play, NULL, NULL, GST_CLOCK_TIME_NONE) == GST_STATE_CHANGE_FAILURE) return FALSE; gint64 dur = 0; gst_element_query_duration (player->priv->play, GST_FORMAT_TIME, &dur); player->priv->dur = player->priv->segend = dur; player->priv->segstart = 0; g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Initial duration: %" G_GINT64_FORMAT, dur); metadata_goto_position (player); return TRUE; } /* ------------------------- Basic controls --------------------------------- */ /** * pt_player_pause: * @player: a #PtPlayer * * Sets the player to the paused state, meaning it stops playback and doesn’t * change position. To resume playback use @pt_player_play(). * * Since: 1.4 */ void pt_player_pause (PtPlayer *player) { g_return_if_fail (PT_IS_PLAYER (player)); GstState previous; gst_element_get_state ( player->priv->play, &previous, NULL, GST_CLOCK_TIME_NONE); if (previous != GST_STATE_PAUSED) gst_element_set_state (player->priv->play, GST_STATE_PAUSED); if (previous == GST_STATE_PLAYING) g_signal_emit_by_name (player, "play-toggled"); } /** * pt_player_pause_and_rewind: * @player: a #PtPlayer * * Like @pt_player_pause(), additionally rewinds the value of * #PtPlayer:pause in milliseconds. * * Since: 1.6 */ void pt_player_pause_and_rewind (PtPlayer *player) { pt_player_pause (player); pt_player_jump_relative (player, player->priv->pause * -1); } /** * pt_player_get_pause: * @player: a #PtPlayer * * Returns the value of #PtPlayer:pause. * * Return value: time to rewind on pause in milliseconds * * Since: 1.6 */ gint pt_player_get_pause (PtPlayer *player) { g_return_val_if_fail (PT_IS_PLAYER (player), 0); return player->priv->pause; } /** * pt_player_play: * @player: a #PtPlayer * * Starts playback in playback mode at the defined speed until it reaches the * end of stream (or the end of the selection). If the current position is at * the end, playback will start from the beginning of the stream or selection. * * In ASR mode it starts decoding the stream silently at the fastest possible * speed and emitting textual results via the #PtPlayer::asr-hypothesis and * #PtPlayer::asr-final signals. * * Since: 1.4 */ void pt_player_play (PtPlayer *player) { g_return_if_fail (PT_IS_PLAYER (player)); gint64 pos; gint64 start, end; gboolean selection; GstState previous; if (player->priv->wv) { /* If there is a selection, play it */ g_object_get (player->priv->wv, "selection-start", &start, "selection-end", &end, "has-selection", &selection, NULL); if (selection) { /* Note: changes position if outside selection */ pt_player_set_selection (player, start, end); } } else { selection = pt_player_selection_active (player); } if (!pt_player_query_position (player, &pos)) return; gst_element_get_state ( player->priv->play, &previous, NULL, GST_CLOCK_TIME_NONE); if (pos == player->priv->segend) { if ((selection && player->priv->repeat_selection) || (!selection && player->priv->repeat_all)) pt_player_seek (player, player->priv->segstart); else pt_player_jump_relative (player, player->priv->pause * -1); } gst_element_set_state (player->priv->play, GST_STATE_PLAYING); if (previous == GST_STATE_PAUSED) g_signal_emit_by_name (player, "play-toggled"); } /** * pt_player_play_pause: * @player: a #PtPlayer * * Toggles between playback and pause, rewinds on pause. * * Since: 1.6 */ void pt_player_play_pause (PtPlayer *player) { g_return_if_fail (PT_IS_PLAYER (player)); GstState state; gst_element_get_state ( player->priv->play, &state, NULL, GST_CLOCK_TIME_NONE); switch (state) { case GST_STATE_NULL: return; case GST_STATE_PAUSED: pt_player_play (player); break; case GST_STATE_PLAYING: pt_player_pause_and_rewind (player); break; case GST_STATE_VOID_PENDING: return; case GST_STATE_READY: return; } } /** * pt_player_set_selection: * @player: a #PtPlayer * @start: selection start time in milliseconds * @end: selection end time in milliseconds * * Set a selection. If the current position is outside the selection, it will * be set to the selection’s start position, otherwise the current position is * not changed. Playing will end at the stop position and it’s not possible to * jump out of the selection until it is cleared with #pt_player_clear_selection. * * Since: 1.5 */ void pt_player_set_selection (PtPlayer *player, gint64 start, gint64 end) { g_return_if_fail (PT_IS_PLAYER (player)); g_return_if_fail (start < end); player->priv->segstart = GST_MSECOND * start; player->priv->segend = GST_MSECOND * end; gint64 pos; if (!pt_player_query_position (player, &pos)) return; if (pos < player->priv->segstart || pos > player->priv->segend) pos = player->priv->segstart; pt_player_seek (player, pos); } /** * pt_player_clear_selection: * @player: a #PtPlayer * * Clear and reset any selection. * * Since: 1.5 */ void pt_player_clear_selection (PtPlayer *player) { g_return_if_fail (PT_IS_PLAYER (player)); gint64 pos; if (!pt_player_query_position (player, &pos)) return; player->priv->segstart = 0; player->priv->segend = player->priv->dur; pt_player_seek (player, pos); } /** * pt_player_selection_active: * @player: a #PtPlayer * * Returns whether there is currently a selection set or not. * * Return value: TRUE if there is a selection * * Since: 1.6 */ gboolean pt_player_selection_active (PtPlayer *player) { g_return_val_if_fail (PT_IS_PLAYER (player), FALSE); return !(player->priv->segstart == 0 && player->priv->segend == player->priv->dur); } /* -------------------- Positioning, speed, volume -------------------------- */ /** * pt_player_jump_relative: * @player: a #PtPlayer * @milliseconds: time in milliseconds to jump * * Skips @milliseconds in stream. A positive value means jumping ahead. If the * resulting position would be beyond the end of stream (or selection), it goes * to the end of stream (or selection). A negative value means jumping back. * If the resulting position would be negative (or before the selection), it * jumps to position 0:00 (or to the start of the selection). * * Since: 1.4 */ void pt_player_jump_relative (PtPlayer *player, gint milliseconds) { g_return_if_fail (PT_IS_PLAYER (player)); if (milliseconds == 0) return; gint64 pos, new; if (!pt_player_query_position (player, &pos)) return; new = pos + GST_MSECOND * (gint64) milliseconds; g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Jump relative: dur = %" G_GINT64_FORMAT, player->priv->dur); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Jump relative: new = %" G_GINT64_FORMAT, new); if (new > player->priv->segend) new = player->priv->segend; if (new < player->priv->segstart) new = player->priv->segstart; pt_player_seek (player, new); } /** * pt_player_jump_back: * @player: a #PtPlayer * * Jumps back the value of #PtPlayer:back. * * Since: 1.6 */ void pt_player_jump_back (PtPlayer *player) { gint back; back = player->priv->back; if (back > 0) back = back * -1; pt_player_jump_relative (player, back); g_signal_emit_by_name (player, "jumped-back"); } /** * pt_player_jump_forward: * @player: a #PtPlayer * * Jumps forward the value of #PtPlayer:forward. * * Since: 1.6 */ void pt_player_jump_forward (PtPlayer *player) { pt_player_jump_relative (player, player->priv->forward); g_signal_emit_by_name (player, "jumped-forward"); } /** * pt_player_get_back: * @player: a #PtPlayer * * Returns the value of #PtPlayer:back. * * Return value: time to jump back in milliseconds * * Since: 1.6 */ gint pt_player_get_back (PtPlayer *player) { g_return_val_if_fail (PT_IS_PLAYER (player), 0); return player->priv->back; } /** * pt_player_get_forward: * @player: a #PtPlayer * * Returns the value of #PtPlayer:forward. * * Return value: time to jump forward in milliseconds * * Since: 1.6 */ gint pt_player_get_forward (PtPlayer *player) { g_return_val_if_fail (PT_IS_PLAYER (player), 0); return player->priv->forward; } /** * pt_player_jump_to_position: * @player: a #PtPlayer * @milliseconds: position in milliseconds * * Jumps to a given position in stream. The position is given in @milliseconds * starting from position 0:00. A position beyond the duration of stream (or * outside the selection) is ignored. * * Since: 1.4 */ void pt_player_jump_to_position (PtPlayer *player, gint milliseconds) { g_return_if_fail (PT_IS_PLAYER (player)); gint64 pos; pos = GST_MSECOND * (gint64) milliseconds; if (pos < 0) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Jump to position failed: negative value"); return; } /* TODO on opening a new file and jumping to the initial position, * sometimes there is no duration yet and the jump is not done. */ if (pos > player->priv->segend || pos < player->priv->segstart) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Jump to position failed: start = %" G_GINT64_FORMAT, player->priv->segstart); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Jump to position failed: pos = %" G_GINT64_FORMAT, pos); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Jump to position failed: end = %" G_GINT64_FORMAT, player->priv->segend); return; } pt_player_seek (player, pos); } /** * pt_player_set_speed: * @player: a #PtPlayer * @speed: speed * * Sets the speed of playback in the paused state as well as during playback. * Normal speed is 1.0, everything above that is faster, everything below slower. * A speed of 0 is not allowed, use pt_player_pause() instead. * Recommended speed is starting from 0.5 as quality is rather poor below that. * Parlatype doesn’t change the pitch during slower or faster playback. * * Since: 1.4 */ void pt_player_set_speed (PtPlayer *player, gdouble speed) { g_return_if_fail (PT_IS_PLAYER (player)); g_return_if_fail (speed > 0); gint64 pos; player->priv->speed = speed; /* on object construction there is no pipeline yet */ if (player->priv->play == NULL) return; if (pt_player_query_position (player, &pos)) pt_player_seek (player, pos); g_object_notify_by_pspec (G_OBJECT (player), obj_properties[PROP_SPEED]); } /** * pt_player_get_volume: * @player: a #PtPlayer * * Gets the volume on a scale between 0 and 1. * * Return value: the current volume * * Since: 2.1 */ gdouble pt_player_get_volume (PtPlayer *player) { g_return_val_if_fail (PT_IS_PLAYER (player), -1); gdouble volume; /* Pulseaudio sink does not propagate volume changes in GST_STATE_PAUSED * or lower. Ask for real value and update cached volume. */ if (player->priv->play) { volume = gst_stream_volume_get_volume ( GST_STREAM_VOLUME (player->priv->audio_bin), GST_STREAM_VOLUME_FORMAT_CUBIC); if (player->priv->volume != volume) player->priv->volume = volume; } return player->priv->volume; } /** * pt_player_set_volume: * @player: a #PtPlayer * @volume: volume * * Sets the volume on a scale between 0 and 1. Instead of using this method * you could set the "volume" property. * * Since: 1.4 */ void pt_player_set_volume (PtPlayer *player, gdouble volume) { g_return_if_fail (PT_IS_PLAYER (player)); g_return_if_fail (volume >= 0 && volume <= 1); player->priv->volume = volume; if (player->priv->play) gst_stream_volume_set_volume (GST_STREAM_VOLUME (player->priv->audio_bin), GST_STREAM_VOLUME_FORMAT_CUBIC, volume); g_object_notify_by_pspec (G_OBJECT (player), obj_properties[PROP_VOLUME]); } /** * pt_player_get_mute: * @player: a #PtPlayer * * Get mute state of the audio stream. * Return value: TRUE for muted state, FALSE for normal state * * Since: 2.1 */ gboolean pt_player_get_mute (PtPlayer *player) { g_return_val_if_fail (PT_IS_PLAYER (player), FALSE); gboolean retval = FALSE; if (player->priv->play) retval = gst_stream_volume_get_mute (GST_STREAM_VOLUME (player->priv->audio_bin)); return retval; } /** * pt_player_set_mute: * @player: a #PtPlayer * @mute: a gboolean * * Mute the player (with TRUE) or set it back to normal volume (with FALSE). * This remembers the volume level, so you don’t have to keep track of the old value. * * Since: 2.1 */ void pt_player_set_mute (PtPlayer *player, gboolean mute) { g_return_if_fail (PT_IS_PLAYER (player)); if (player->priv->play) gst_stream_volume_set_mute (GST_STREAM_VOLUME (player->priv->audio_bin), mute); } /** * pt_player_get_position: * @player: a #PtPlayer * * Returns the current position in stream. * * Return value: position in milliseconds or -1 on failure * * Since: 1.5 */ gint64 pt_player_get_position (PtPlayer *player) { g_return_val_if_fail (PT_IS_PLAYER (player), -1); gint64 time; if (!pt_player_query_position (player, &time)) return -1; return GST_TIME_AS_MSECONDS (time); } /** * pt_player_get_duration: * @player: a #PtPlayer * * Returns the duration of stream. * * Return value: duration in milliseconds * * Since: 1.5 */ gint64 pt_player_get_duration (PtPlayer *player) { g_return_val_if_fail (PT_IS_PLAYER (player), -1); return GST_TIME_AS_MSECONDS (player->priv->dur); } /* --------------------- Other widgets -------------------------------------- */ static void wv_update_cursor (PtPlayer *player) { g_object_set (player->priv->wv, "playback-cursor", pt_player_get_position (player), NULL); } static void wv_selection_changed_cb (GtkWidget *widget, PtPlayer *player) { /* Selection changed in Waveviewer widget: - if we are not playing a selection: ignore it - if we are playing a selection and we are still in the selection: update selection - if we are playing a selection and the new one is somewhere else: stop playing the selection */ gint64 start, end, pos; if (pt_player_selection_active (player)) { if (!pt_player_query_position (player, &pos)) return; g_object_get (player->priv->wv, "selection-start", &start, "selection-end", &end, NULL); if (start <= pos && pos <= end) { pt_player_set_selection (player, start, end); } else { pt_player_clear_selection (player); } } } static void wv_cursor_changed_cb (PtWaveviewer *wv, gint64 pos, PtPlayer *player) { /* user changed cursor position */ pt_player_jump_to_position (player, pos); wv_update_cursor (player); pt_waveviewer_set_follow_cursor (wv, TRUE); } static void wv_play_toggled_cb (GtkWidget *widget, PtPlayer *player) { pt_player_play_pause (player); } /** * pt_player_connect_waveviewer: * @player: a #PtPlayer * @wv: a #PtWaveviewer * * Connect a #PtWaveviewer. The #PtPlayer will monitor selections made in the * #PtWaveviewer and act accordingly. * * Since: 1.6 */ void pt_player_connect_waveviewer (PtPlayer *player, PtWaveviewer *wv) { player->priv->wv = wv; g_signal_connect (player->priv->wv, "selection-changed", G_CALLBACK (wv_selection_changed_cb), player); g_signal_connect (player->priv->wv, "cursor-changed", G_CALLBACK (wv_cursor_changed_cb), player); g_signal_connect (player->priv->wv, "play-toggled", G_CALLBACK (wv_play_toggled_cb), player); } /* --------------------- File utilities ------------------------------------- */ /** * pt_player_get_uri: * @player: a #PtPlayer * * Returns the URI of the currently open file or NULL if it can’t be determined. * * Return value: (transfer full): the uri * * Since: 1.4 */ gchar* pt_player_get_uri (PtPlayer *player) { g_return_val_if_fail (PT_IS_PLAYER (player), NULL); gchar *uri = NULL; g_object_get (G_OBJECT (player->priv->play), "current_uri", &uri, NULL); return uri; } /** * pt_player_get_filename: * @player: a #PtPlayer * * Returns the display name of the currently open file or NULL if it can’t be determined. * * Return value: (transfer full): the file name * * Since: 1.4 */ gchar* pt_player_get_filename (PtPlayer *player) { g_return_val_if_fail (PT_IS_PLAYER (player), NULL); GError *error = NULL; const gchar *filename = NULL; GFile *file = NULL; GFileInfo *info = NULL; gchar *result; file = pt_player_get_file (player); if (file) info = g_file_query_info ( file, G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME, G_FILE_QUERY_INFO_NONE, NULL, &error); else return NULL; if (error) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "File attributes not retrieved: %s", error->message); g_error_free (error); g_object_unref (file); return NULL; } filename = g_file_info_get_attribute_string ( info, G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME); if (filename) result = g_strdup (filename); else result = NULL; if (info) g_object_unref (info); if (file) g_object_unref (file); return result; } /* --------------------- Time strings and timestamps ------------------------ */ /** * pt_player_get_time_string: * @time: time in milliseconds to converse * @duration: duration of stream in milliseconds (max time) * @precision: a #PtPrecisionType * * Returns the given time as a string for display to the user. Format type is * determined by @duration, e.g. if duration is long format, it returns a string * in long format, too. * * Return value: (transfer full): the time string * * Since: 1.4 */ gchar* pt_player_get_time_string (gint time, gint duration, PtPrecisionType precision) { /* Don’t assert time <= duration because duration is not exact */ g_return_val_if_fail (precision < PT_PRECISION_INVALID, NULL); gchar *result; gint h, m, s, ms, mod; h = time / 3600000; mod = time % 3600000; m = mod / 60000; ms = time % 60000; s = ms / 1000; ms = ms % 1000; /* Short or long format depends on total duration */ if (duration >= ONE_HOUR) { switch (precision) { case PT_PRECISION_SECOND: /* Translators: This is a time format, like "2:05:30" for 2 hours, 5 minutes, and 30 seconds. You may change ":" to the separator that your locale uses or use "%Id" instead of "%d" if your locale uses localized digits. */ result = g_strdup_printf (C_("long time format", "%d:%02d:%02d"), h, m, s); break; case PT_PRECISION_SECOND_10TH: /* Translators: This is a time format, like "2:05:30.1" for 2 hours, 5 minutes, 30 seconds, and 1 tenthsecond. You may change ":" or "." to the separator that your locale uses or use "%Id" instead of "%d" if your locale uses localized digits. */ result = g_strdup_printf (C_("long time format, 1 digit", "%d:%02d:%02d.%d"), h, m, s, ms / 100); break; case PT_PRECISION_SECOND_100TH: /* Translators: This is a time format, like "2:05:30.12" for 2 hours, 5 minutes, 30 seconds, and 12 hundrethseconds. You may change ":" or "." to the separator that your locale uses or use "%Id" instead of "%d" if your locale uses localized digits. */ result = g_strdup_printf (C_("long time format, 2 digits", "%d:%02d:%02d.%02d"), h, m, s, ms / 10); break; default: g_return_val_if_reached (NULL); break; } return result; } if (duration >= TEN_MINUTES) { switch (precision) { case PT_PRECISION_SECOND: /* Translators: This is a time format, like "05:30" for 5 minutes, and 30 seconds. You may change ":" to the separator that your locale uses or use "%I02d" instead of "%02d" if your locale uses localized digits. */ result = g_strdup_printf (C_("short time format", "%02d:%02d"), m, s); break; case PT_PRECISION_SECOND_10TH: /* Translators: This is a time format, like "05:30.1" for 5 minutes, 30 seconds, and 1 tenthsecond. You may change ":" or "." to the separator that your locale uses or use "%Id" instead of "%d" if your locale uses localized digits. */ result = g_strdup_printf (C_("short time format, 1 digit", "%02d:%02d.%d"), m, s, ms / 100); break; case PT_PRECISION_SECOND_100TH: /* Translators: This is a time format, like "05:30.12" for 5 minutes, 30 seconds, and 12 hundrethseconds. You may change ":" or "." to the separator that your locale uses or use "%Id" instead of "%d" if your locale uses localized digits. */ result = g_strdup_printf (C_("short time format, 2 digits", "%02d:%02d.%02d"), m, s, ms / 10); break; default: g_return_val_if_reached (NULL); break; } } else { switch (precision) { case PT_PRECISION_SECOND: /* Translators: This is a time format, like "5:30" for 5 minutes, and 30 seconds. You may change ":" to the separator that your locale uses or use "%Id" instead of "%d" if your locale uses localized digits. */ result = g_strdup_printf (C_("shortest time format", "%d:%02d"), m, s); break; case PT_PRECISION_SECOND_10TH: /* Translators: This is a time format, like "05:30.1" for 5 minutes, 30 seconds, and 1 tenthsecond. You may change ":" or "." to the separator that your locale uses or use "%Id" instead of "%d" if your locale uses localized digits. */ result = g_strdup_printf (C_("shortest time format, 1 digit", "%d:%02d.%d"), m, s, ms / 100); break; case PT_PRECISION_SECOND_100TH: /* Translators: This is a time format, like "05:30.12" for 5 minutes, 30 seconds, and 12 hundrethseconds. You may change ":" or "." to the separator that your locale uses or use "%Id" instead of "%d" if your locale uses localized digits. */ result = g_strdup_printf (C_("shortest time format, 2 digits", "%d:%02d.%02d"), m, s, ms / 10); break; default: g_return_val_if_reached (NULL); break; } } return result; } /** * pt_player_get_current_time_string: * @player: a #PtPlayer * @precision: a #PtPrecisionType * * Returns the current position of the stream as a string for display to the user. * * If the current position can not be determined, NULL is returned. * * Return value: (transfer full): the time string * * Since: 1.4 */ gchar* pt_player_get_current_time_string (PtPlayer *player, PtPrecisionType precision) { g_return_val_if_fail (PT_IS_PLAYER (player), NULL); g_return_val_if_fail (precision < PT_PRECISION_INVALID, NULL); gint64 time; if (!pt_player_query_position (player, &time)) return NULL; return pt_player_get_time_string ( GST_TIME_AS_MSECONDS (time), GST_TIME_AS_MSECONDS (player->priv->dur), precision); } /** * pt_player_get_duration_time_string: * @player: a #PtPlayer * @precision: a #PtPrecisionType * * Returns the duration of the stream as a string for display to the user. * * If the duration can not be determined, NULL is returned. * * Return value: (transfer full): the time string * * Since: 1.4 */ gchar* pt_player_get_duration_time_string (PtPlayer *player, PtPrecisionType precision) { g_return_val_if_fail (PT_IS_PLAYER (player), NULL); g_return_val_if_fail (precision < PT_PRECISION_INVALID, NULL); return pt_player_get_time_string ( GST_TIME_AS_MSECONDS (player->priv->dur), GST_TIME_AS_MSECONDS (player->priv->dur), precision); } /** * pt_player_get_timestamp_for_time: * @player: a #PtPlayer * @time: the time in milliseconds * @duration: duration in milliseconds * * Returns the timestamp for the given time as a string. Duration is needed * for some short time formats, the resulting timestamp format depends on * whether duration is less than one hour or more than (including) an hour * (3600000 milliseconds). * * The format of the timestamp can be influenced with * #PtPlayer:timestamp-precision, #PtPlayer:timestamp-fixed, * #PtPlayer:timestamp-fraction-sep and #PtPlayer:timestamp-delimiter. * * Return value: (transfer full): the timestamp * * Since: 1.6 */ gchar* pt_player_get_timestamp_for_time (PtPlayer *player, gint time, gint duration) { g_return_val_if_fail (PT_IS_PLAYER (player), NULL); gint h, m, s, ms, mod, fraction; gchar *timestamp = NULL; /* This is the same code as in pt_player_get_timestring() */ h = time / 3600000; mod = time % 3600000; m = mod / 60000; ms = time % 60000; s = ms / 1000; ms = ms % 1000; switch (player->priv->timestamp_precision) { case PT_PRECISION_SECOND: fraction = -1; break; case PT_PRECISION_SECOND_10TH: fraction = ms / 100; break; case PT_PRECISION_SECOND_100TH: fraction = ms / 10; break; default: g_return_val_if_reached (NULL); break; } if (player->priv->timestamp_fixed) { if (fraction >= 0) { if (player->priv->timestamp_precision == PT_PRECISION_SECOND_10TH) { timestamp = g_strdup_printf ("%s%02d:%02d:%02d%s%d%s", player->priv->timestamp_left, h, m, s, player->priv->timestamp_sep, fraction, player->priv->timestamp_right); } else { timestamp = g_strdup_printf ("%s%02d:%02d:%02d%s%02d%s", player->priv->timestamp_left, h, m, s, player->priv->timestamp_sep, fraction, player->priv->timestamp_right); } } else { timestamp = g_strdup_printf ("%s%02d:%02d:%02d%s", player->priv->timestamp_left, h, m, s, player->priv->timestamp_right); } } else { if (fraction >= 0) { if (duration >= ONE_HOUR) { if (player->priv->timestamp_precision == PT_PRECISION_SECOND_10TH) { timestamp = g_strdup_printf ("%s%d:%02d:%02d%s%d%s", player->priv->timestamp_left, h, m, s, player->priv->timestamp_sep, fraction, player->priv->timestamp_right); } else { timestamp = g_strdup_printf ("%s%d:%02d:%02d%s%02d%s", player->priv->timestamp_left, h, m, s, player->priv->timestamp_sep, fraction, player->priv->timestamp_right); } } else { if (player->priv->timestamp_precision == PT_PRECISION_SECOND_10TH) { timestamp = g_strdup_printf ("%s%d:%02d%s%d%s", player->priv->timestamp_left, m, s, player->priv->timestamp_sep, fraction, player->priv->timestamp_right); } else { timestamp = g_strdup_printf ("%s%d:%02d%s%02d%s", player->priv->timestamp_left, m, s, player->priv->timestamp_sep, fraction, player->priv->timestamp_right); } } } else { if (duration >= ONE_HOUR) { timestamp = g_strdup_printf ("%s%d:%02d:%02d%s", player->priv->timestamp_left, h, m, s, player->priv->timestamp_right); } else { timestamp = g_strdup_printf ("%s%d:%02d%s", player->priv->timestamp_left, m, s, player->priv->timestamp_right); } } } return timestamp; } /** * pt_player_get_timestamp: * @player: a #PtPlayer * * Returns the current timestamp as a string. The format of the timestamp can * be influenced with #PtPlayer:timestamp-precision, #PtPlayer:timestamp-fixed, * #PtPlayer:timestamp-fraction-sep and #PtPlayer:timestamp-delimiter. * * If the current position can not be determined, NULL is returned. * * Return value: (transfer full): the timestamp * * Since: 1.4 */ gchar* pt_player_get_timestamp (PtPlayer *player) { g_return_val_if_fail (PT_IS_PLAYER (player), NULL); gint64 time; gint duration; if (!pt_player_query_position (player, &time)) return NULL; duration = GST_TIME_AS_MSECONDS (player->priv->dur); return pt_player_get_timestamp_for_time (player, GST_TIME_AS_MSECONDS (time), duration); } /** * pt_player_get_timestamp_position: * @player: a #PtPlayer * @timestamp: the timestamp * @check_duration: checking the timestamp’s validity also check duration * * Returns the time in milliseconds represented by the timestamp or -1 for * invalid timestamps. * * Return value: the time in milliseconds represented by the timestamp or -1 * for invalid timestamps * * Since: 1.6 */ gint pt_player_get_timestamp_position (PtPlayer *player, gchar *timestamp, gboolean check_duration) { gint h, m, s, ms, result; gchar *cmp; /* timestamp without delimiters */ gboolean long_format; gboolean fraction; gchar **split = NULL; guint n_split; /* Check for formal validity */ if (!g_regex_match_simple ("^[#|\\(|\\[]?[0-9][0-9]?:[0-9][0-9]:[0-9][0-9][\\.|\\-][0-9][0-9]?[#|\\)|\\]]?$", timestamp, 0, 0) && !g_regex_match_simple ("^[#|\\(|\\[]?[0-9][0-9]?:[0-9][0-9][\\.|\\-][0-9][0-9]?[#|\\)|\\]]?$", timestamp, 0, 0) && !g_regex_match_simple ("^[#|\\(|\\[]?[0-9][0-9]?:[0-9][0-9]:[0-9][0-9][#|\\)|\\]]?$", timestamp, 0, 0) && !g_regex_match_simple ("^[#|\\(|\\[]?[0-9][0-9]?:[0-9][0-9][#|\\)|\\]]?$", timestamp, 0, 0)) { return -1; } /* Delimiters must match */ if (g_str_has_prefix (timestamp, "#") && !g_str_has_suffix (timestamp, "#")) return -1; if (g_str_has_prefix (timestamp, "(") && !g_str_has_suffix (timestamp, ")")) return -1; if (g_str_has_prefix (timestamp, "[") && !g_str_has_suffix (timestamp, "]")) return -1; if (g_regex_match_simple ("^[0-9]", timestamp, 0, 0)) { if (!g_regex_match_simple ("[0-9]$", timestamp, 0, 0)) return -1; } /* Remove delimiters */ if (g_str_has_prefix (timestamp, "#") || g_str_has_prefix (timestamp, "(") || g_str_has_prefix (timestamp, "[")) { timestamp++; cmp = g_strdup_printf ("%.*s", (int)strlen (timestamp) -1, timestamp); } else { cmp = g_strdup (timestamp); } /* Determine format and split timestamp into h, m, s, ms */ h = 0; ms = 0; long_format = g_regex_match_simple (":[0-9][0-9]:", cmp, 0, 0); fraction = !g_regex_match_simple (".*:[0-9][0-9]$", cmp, 0, 0); split = g_regex_split_simple ("[:|\\.|\\-]", cmp, 0, 0); g_free (cmp); if (!split) return -1; n_split = 2; if (long_format) n_split += 1; if (fraction) n_split += 1; if (n_split != g_strv_length (split)) { g_strfreev (split); return -1; } if (long_format) { h = (int)g_ascii_strtoull (split[0], NULL, 10); m = (int)g_ascii_strtoull (split[1], NULL, 10); s = (int)g_ascii_strtoull (split[2], NULL, 10); if (fraction) { ms = (int)g_ascii_strtoull (split[3], NULL, 10); if (strlen (split[3]) == 1) ms = ms * 100; else ms = ms * 10; } } else { m = (int)g_ascii_strtoull (split[0], NULL, 10); s = (int)g_ascii_strtoull (split[1], NULL, 10); if (fraction) { ms = (int)g_ascii_strtoull (split[2], NULL, 10); if (strlen (split[2]) == 1) ms = ms * 100; else ms = ms * 10; } } g_strfreev (split); /* Sanity check */ if (s > 59 || m > 59) return -1; result = (h * 3600 + m * 60 + s) * 1000 + ms; if (check_duration) { if (GST_MSECOND * (gint64) result > player->priv->dur) { return -1; } } return result; } /** * pt_player_string_is_timestamp: * @player: a #PtPlayer * @timestamp: the string to be checked * @check_duration: whether timestamp’s time is less or equal stream’s duration * * Returns whether the given string is a valid timestamp. With @check_duration * FALSE it checks only for the formal validity of the timestamp. With * @check_duration TRUE the timestamp must be within the duration to be valid. * * See also pt_player_goto_timestamp() if you want to go to the timestamp’s * position immediately after. * * Return value: TRUE if the timestamp is valid, FALSE if not * * Since: 1.4 */ gboolean pt_player_string_is_timestamp (PtPlayer *player, gchar *timestamp, gboolean check_duration) { g_return_val_if_fail (PT_IS_PLAYER (player), FALSE); g_return_val_if_fail (timestamp != NULL, FALSE); return (pt_player_get_timestamp_position (player, timestamp, check_duration) != -1); } /** * pt_player_goto_timestamp: * @player: a #PtPlayer * @timestamp: the timestamp to go to * * Goes to the position of the timestamp. Returns false, if it’s not a * valid timestamp. * * Return value: TRUE on success, FALSE if the timestamp is not valid * * Since: 1.4 */ gboolean pt_player_goto_timestamp (PtPlayer *player, gchar *timestamp) { g_return_val_if_fail (PT_IS_PLAYER (player), FALSE); g_return_val_if_fail (timestamp != NULL, FALSE); gint pos; pos = pt_player_get_timestamp_position (player, timestamp, TRUE); if (pos == -1) return FALSE; pt_player_jump_to_position (player, pos); return TRUE; } /* --------------------- Init and GObject management ------------------------ */ static gboolean notify_volume_idle_cb (PtPlayer *player) { gdouble vol; vol = gst_stream_volume_get_volume (GST_STREAM_VOLUME (player->priv->audio_bin), GST_STREAM_VOLUME_FORMAT_CUBIC); player->priv->volume = vol; g_object_notify_by_pspec (G_OBJECT (player), obj_properties[PROP_VOLUME]); return FALSE; } static void vol_changed (GObject *object, GParamSpec *pspec, PtPlayer *player) { /* This is taken from Totem’s bacon-video-widget.c Changing the property immediately will crash, it has to be an idle source */ guint id; id = g_idle_add ((GSourceFunc) notify_volume_idle_cb, player); g_source_set_name_by_id (id, "[parlatype] notify_volume_idle_cb"); } static gboolean notify_mute_idle_cb (PtPlayer *player) { gboolean mute; mute = gst_stream_volume_get_mute (GST_STREAM_VOLUME (player->priv->audio_bin)); player->priv->mute = mute; g_object_notify_by_pspec (G_OBJECT (player), obj_properties[PROP_MUTE]); return FALSE; } static void mute_changed (GObject *object, GParamSpec *pspec, PtPlayer *player) { guint id; id = g_idle_add ((GSourceFunc) notify_mute_idle_cb, player); g_source_set_name_by_id (id, "[parlatype] notify_mute_idle_cb"); } /** * pt_player_configure_asr: * @player: a #PtPlayer * @config: a #PtConfig * @error: (nullable): return location for an error, or NULL * * Configure ASR setup with a #PtConfig instance. This is necessary before * switching into #PT_MODE_ASR the first time. The configuration remains if * you switch to normal playback and back to ASR again. Subsequently it can * be changed in both modes. * * Return value: TRUE on success, otherwise FALSE * * Since: 3.0 */ gboolean pt_player_configure_asr (PtPlayer *player, PtConfig *config, GError **error) { g_return_val_if_fail (error == NULL || *error == NULL, FALSE); gboolean result; GstPtAudioBin *bin; bin = GST_PT_AUDIO_BIN (player->priv->audio_bin); result = gst_pt_audio_bin_configure_asr (bin, config, error); return result; } /** * pt_player_config_is_loadable: * @player: a #PtPlayer * @config: a #PtConfig * * Checks if #PtPlayer is able to load the GStreamer plugin used by @config * without actually loading it. It does not guarantee that the plugin is * functional, merely that it is either a private plugin of PtPlayer itself * or an installed external plugin. * * Return value: TRUE on success, otherwise FALSE * * Since: 3.0 */ gboolean pt_player_config_is_loadable (PtPlayer *player, PtConfig *config) { g_return_val_if_fail (PT_IS_PLAYER (player), FALSE); g_return_val_if_fail (PT_IS_CONFIG (config), FALSE); gchar *plugin_name; GstElement *plugin; gpointer pointer; gboolean result; plugin_name = pt_config_get_plugin (config); if (!plugin_name) return FALSE; if (g_hash_table_contains (player->priv->plugins, plugin_name)) { pointer = g_hash_table_lookup (player->priv->plugins, plugin_name); return GPOINTER_TO_INT (pointer); } plugin = gst_element_factory_make (plugin_name, NULL); if (plugin) { gst_object_unref (plugin); result = TRUE; } else { result = FALSE; } g_hash_table_insert (player->priv->plugins, g_strdup (plugin_name), GINT_TO_POINTER (result)); return result; } /** * pt_player_set_mode: * @player: a #PtPlayer * @type: the desired output mode * * Set output mode. Initially #PtPlayer is in #PT_MODE_PLAYBACK. Before switching * to #PT_MODE_ASR the programmer has to call pt_player_configure_asr() and check * the result. Setting the mode is an asynchronous operation and when done in * paused state, it will happen only during the change to playing state. * * Currently this works only well when done in paused state, in playing * state there are severe synchronisation issues. * * To get the results in ASR mode, connect to the #PtPlayer::asr-hypothesis and/or * #PtPlayer::asr-final signal. Start recognition with pt_player_play(). * * Since: 3.0 */ void pt_player_set_mode (PtPlayer *player, PtModeType type) { GstPtAudioBin *bin = GST_PT_AUDIO_BIN (player->priv->audio_bin); gst_pt_audio_bin_set_mode (bin, type); } /** * pt_player_get_mode: * @player: a #PtPlayer * * Get current output mode. * * Return value: the current mode * * Since: 3.0 */ PtModeType pt_player_get_mode (PtPlayer *player) { GstPtAudioBin *bin = GST_PT_AUDIO_BIN (player->priv->audio_bin); return gst_pt_audio_bin_get_mode (bin); } static void pt_player_dispose (GObject *object) { PtPlayer *player = PT_PLAYER (object); if (player->priv->play) { /* remember position */ metadata_save_position (player); g_clear_object (&player->priv->pos_mgr); gst_element_set_state (player->priv->play, GST_STATE_NULL); gst_object_unref (GST_OBJECT (player->priv->play)); player->priv->play = NULL; g_hash_table_destroy (player->priv->plugins); } G_OBJECT_CLASS (pt_player_parent_class)->dispose (object); } static void pt_player_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { PtPlayer *player = PT_PLAYER (object); const gchar *tmpchar; switch (property_id) { case PROP_SPEED: pt_player_set_speed (player, g_value_get_double (value)); break; case PROP_VOLUME: pt_player_set_volume (player, g_value_get_double (value)); break; case PROP_MUTE: pt_player_set_mute (player, g_value_get_boolean (value)); break; case PROP_TIMESTAMP_PRECISION: player->priv->timestamp_precision = g_value_get_int (value); break; case PROP_TIMESTAMP_FIXED: player->priv->timestamp_fixed = g_value_get_boolean (value); break; case PROP_TIMESTAMP_DELIMITER: tmpchar = g_value_get_string (value); if (g_strcmp0 (tmpchar, "None") == 0) { player->priv->timestamp_left = player->priv->timestamp_right = ""; break; } if (g_strcmp0 (tmpchar, "(") == 0) { player->priv->timestamp_left = "("; player->priv->timestamp_right = ")"; break; } if (g_strcmp0 (tmpchar, "[") == 0) { player->priv->timestamp_left = "["; player->priv->timestamp_right = "]"; break; } player->priv->timestamp_left = player->priv->timestamp_right = "#"; break; case PROP_TIMESTAMP_FRACTION_SEP: tmpchar = g_value_get_string (value); if (g_strcmp0 (tmpchar, "-") == 0) { player->priv->timestamp_sep = "-"; break; } player->priv->timestamp_sep = "."; break; case PROP_REWIND_ON_PAUSE: player->priv->pause = g_value_get_int (value); break; case PROP_BACK: player->priv->back = g_value_get_int (value); break; case PROP_FORWARD: player->priv->forward = g_value_get_int (value); break; case PROP_REPEAT_ALL: player->priv->repeat_all = g_value_get_boolean (value); break; case PROP_REPEAT_SELECTION: player->priv->repeat_selection = g_value_get_boolean (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void pt_player_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { PtPlayer *player = PT_PLAYER (object); switch (property_id) { case PROP_SPEED: g_value_set_double (value, player->priv->speed); break; case PROP_VOLUME: g_value_set_double (value, pt_player_get_volume (player)); break; case PROP_MUTE: g_value_set_boolean (value, player->priv->mute); break; case PROP_TIMESTAMP_PRECISION: g_value_set_int (value, player->priv->timestamp_precision); break; case PROP_TIMESTAMP_FIXED: g_value_set_boolean (value, player->priv->timestamp_fixed); break; case PROP_TIMESTAMP_DELIMITER: g_value_set_string (value, player->priv->timestamp_left); break; case PROP_TIMESTAMP_FRACTION_SEP: g_value_set_string (value, player->priv->timestamp_sep); break; case PROP_REWIND_ON_PAUSE: g_value_set_int (value, player->priv->pause); break; case PROP_BACK: g_value_set_int (value, player->priv->back); break; case PROP_FORWARD: g_value_set_int (value, player->priv->forward); break; case PROP_REPEAT_ALL: g_value_set_boolean (value, player->priv->repeat_all); break; case PROP_REPEAT_SELECTION: g_value_set_boolean (value, player->priv->repeat_selection); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void pt_player_init (PtPlayer *player) { player->priv = pt_player_get_instance_private (player); PtPlayerPrivate *priv = player->priv; GstElementFactory *factory; priv->timestamp_precision = PT_PRECISION_SECOND_10TH; priv->timestamp_fixed = FALSE; priv->wv = NULL; priv->pos_mgr = pt_position_manager_new (); priv->plugins = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); gst_init (NULL, NULL); /* Check if elements are already statically registered, otherwise * gst_element_get_factory() (used e.g. by playbin/decodebin) will * return an invalid factory. */ factory = gst_element_factory_find ("ptaudiobin"); if (factory == NULL) gst_pt_audio_bin_register (); else gst_object_unref (factory); #ifdef HAVE_POCKETSPHINX factory = gst_element_factory_find ("parlasphinx"); if (factory == NULL) gst_parlasphinx_register (); else gst_object_unref (factory); #endif #ifdef HAVE_DEEPSPEECH factory = gst_element_factory_find ("ptdeepspeech"); if (factory == NULL) gst_ptdeepspeech_register (); else gst_object_unref (factory); #endif priv->play = _pt_make_element ("playbin", "play", NULL); priv->scaletempo = _pt_make_element ("scaletempo", "tempo", NULL); priv->audio_bin = _pt_make_element ("ptaudiobin", "audiobin", NULL); g_object_set (G_OBJECT (priv->play), "audio-filter", priv->scaletempo, "audio-sink", priv->audio_bin, NULL); /* This is responsible for syncing system volume with Parlatype volume. Syncing is done only in Play state */ g_signal_connect (G_OBJECT (priv->play), "notify::volume", G_CALLBACK (vol_changed), player); g_signal_connect (G_OBJECT (priv->play), "notify::mute", G_CALLBACK (mute_changed), player); } static void pt_player_class_init (PtPlayerClass *klass) { G_OBJECT_CLASS (klass)->set_property = pt_player_set_property; G_OBJECT_CLASS (klass)->get_property = pt_player_get_property; G_OBJECT_CLASS (klass)->dispose = pt_player_dispose; /** * PtPlayer::end-of-stream: * @player: the player emitting the signal * * The #PtPlayer::end-of-stream signal is emitted when the stream is at its end * or when the end of selection is reached. */ g_signal_new ("end-of-stream", PT_TYPE_PLAYER, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * PtPlayer::error: * @player: the player emitting the signal * @error: a GError * * The #PtPlayer::error signal is emitted on errors opening the file or during * playback. It’s a severe error and the player is always reset. */ g_signal_new ("error", PT_TYPE_PLAYER, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__BOXED, G_TYPE_NONE, 1, G_TYPE_ERROR); /** * PtPlayer::play-toggled: * @player: the player emitting the signal * * The #PtPlayer::play-toggled signal is emitted when the player changed * to pause or play. */ g_signal_new ("play-toggled", PT_TYPE_PLAYER, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * PtPlayer::jumped-back: * @player: the player emitting the signal * * The #PtPlayer::jumped-back signal is emitted when the player jumped * back. */ g_signal_new ("jumped-back", PT_TYPE_PLAYER, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * PtPlayer::jumped-forward: * @player: the player emitting the signal * * The #PtPlayer::jumped-forward signal is emitted when the player jumped * forward. */ g_signal_new ("jumped-forward", PT_TYPE_PLAYER, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * PtPlayer::asr-final: * @player: the player emitting the signal * @word: recognized word(s) * * The #PtPlayer::asr-final signal is emitted in automatic speech recognition * mode whenever a word or a sequence of words was recognized and won’t change * anymore. For intermediate results see #PtPlayer::asr-hypothesis. */ g_signal_new ("asr-final", PT_TYPE_PLAYER, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); /** * PtPlayer::asr-hypothesis: * @player: the player emitting the signal * @word: probably recognized word(s) * * The #PtPlayer::asr-hypothesis signal is emitted in automatic speech recognition * mode as an intermediate result (hypothesis) of recognized words. * The hypothesis can still change. The programmer is responsible for * replacing an emitted hypothesis by either the next following hypothesis * or a following #PtPlayer::asr-final signal. * * It’s not necessary to connect to this signal if you want the final * result only. However, it can take a few seconds until a final result * is emitted and without an intermediate hypothesis the end user might * have the impression that there is nothing going on. */ g_signal_new ("asr-hypothesis", PT_TYPE_PLAYER, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); /** * PtPlayer:speed: * * The speed for playback. */ obj_properties[PROP_SPEED] = g_param_spec_double ( "speed", "Speed of playback", "1 is normal speed", 0.1, /* minimum */ 2.0, /* maximum */ 1.0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT); /** * PtPlayer:volume: * * The volume for playback. * * Pulseaudio sink does not propagate volume changes at GST_STATE_PAUSED * or lower. This property will notify of changes only in GST_STATE_PLAYING and * on state changes, e.g. from GST_STATE_READY to GST_STATE_PAUSED. Getting this * property returns the real current volume level even if there was no notification before. * */ obj_properties[PROP_VOLUME] = g_param_spec_double ( "volume", "Volume of playback", "Volume from 0 to 1", 0.0, /* minimum */ 1.0, /* maximum */ 1.0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT); /** * PtPlayer:mute: * * Mute state of the audio stream. */ obj_properties[PROP_MUTE] = g_param_spec_boolean ( "mute", "Mute", "Mute state of audio stream", FALSE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT); /** * PtPlayer:timestamp-precision: * * How precise timestamps should be. */ obj_properties[PROP_TIMESTAMP_PRECISION] = g_param_spec_int ( "timestamp-precision", "Precision of timestamps", "Precision of timestamps", 0, /* minimum = PT_PRECISION_SECOND */ 3, /* maximum = PT_PRECISION_INVALID */ 1, G_PARAM_READWRITE | G_PARAM_CONSTRUCT); /** * PtPlayer:timestamp-fixed: * * Whether timestamp format should have a fixed number of digits. */ obj_properties[PROP_TIMESTAMP_FIXED] = g_param_spec_boolean ( "timestamp-fixed", "Timestamps with fixed digits", "Timestamps with fixed digits", FALSE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT); /** * PtPlayer:timestamp-delimiter: * * Character to delimit start and end of timestamp. Allowed values are * "None", hashtag "#", left bracket "(" and left square bracket "[". * PtPlayer will of course end with a right (square) bracket if those * are chosen. Any other character is changed to a hashtag "#". */ obj_properties[PROP_TIMESTAMP_DELIMITER] = g_param_spec_string ( "timestamp-delimiter", "Timestamp delimiter", "Timestamp delimiter", "#", G_PARAM_READWRITE | G_PARAM_CONSTRUCT); /** * PtPlayer:timestamp-fraction-sep: * * Character to separate fractions of a second from seconds. Only * point "." and minus "-" are allowed. Any other character is changed * to a point ".". */ obj_properties[PROP_TIMESTAMP_FRACTION_SEP] = g_param_spec_string ( "timestamp-fraction-sep", "Timestamp fraction separator", "Timestamp fraction separator", ".", G_PARAM_READWRITE | G_PARAM_CONSTRUCT); /** * PtPlayer:pause: * * Milliseconds to rewind on pause. */ obj_properties[PROP_REWIND_ON_PAUSE] = g_param_spec_int ( "pause", "Milliseconds to rewind on pause", "Milliseconds to rewind on pause", 0, /* minimum */ 10000, /* maximum */ 0, G_PARAM_READWRITE); /** * PtPlayer:back: * * Milliseconds to jump back. */ obj_properties[PROP_BACK] = g_param_spec_int ( "back", "Milliseconds to jump back", "Milliseconds to jump back", 1000, /* minimum */ 60000, /* maximum */ 10000, G_PARAM_READWRITE); /** * PtPlayer:forward: * * Milliseconds to jump forward. */ obj_properties[PROP_FORWARD] = g_param_spec_int ( "forward", "Milliseconds to jump forward", "Milliseconds to jump forward", 1000, /* minimum */ 60000, /* maximum */ 10000, G_PARAM_READWRITE); /** * PtPlayer:repeat-all: * * "Play" at the end of the file replays it. */ obj_properties[PROP_REPEAT_ALL] = g_param_spec_boolean ( "repeat-all", "Repeat all", "Repeat all", FALSE, G_PARAM_READWRITE); /** * PtPlayer:repeat-selection: * * "Play" at the end of a selection replays it. */ obj_properties[PROP_REPEAT_SELECTION] = g_param_spec_boolean ( "repeat-selection", "Repeat selection", "Repeat selection", FALSE, G_PARAM_READWRITE); g_object_class_install_properties ( G_OBJECT_CLASS (klass), N_PROPERTIES, obj_properties); } /** * pt_player_new: * * Returns a new PtPlayer in #PT_MODE_PLAYBACK. The next step would be to open * a file with pt_player_open_uri(). * * After use g_object_unref() it. * * Return value: (transfer full): a new pt_player * * Since: 1.6 */ PtPlayer * pt_player_new (void) { _pt_i18n_init (); return g_object_new (PT_TYPE_PLAYER, NULL); } parlatype-3.0/libparlatype/src/pt-player.h000066400000000000000000000116571414030451500207310ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2016-2018 * * 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 . */ #ifndef PT_PLAYER_H #define PT_PLAYER_H #if !defined (__PARLATYPE_H_INSIDE__) && !defined (PARLATYPE_COMPILATION) #error "Only can be included directly." #endif #include #include "pt-config.h" #include "pt-waveviewer.h" G_BEGIN_DECLS #define PT_TYPE_PLAYER (pt_player_get_type()) #define PT_PLAYER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PT_TYPE_PLAYER, PtPlayer)) #define PT_IS_PLAYER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PT_TYPE_PLAYER)) typedef struct _PtPlayer PtPlayer; typedef struct _PtPlayerClass PtPlayerClass; typedef struct _PtPlayerPrivate PtPlayerPrivate; /** * PtPlayer: * * The #PtPlayer contains only private fields and should not be directly accessed. */ struct _PtPlayer { GObject parent; /*< private > */ PtPlayerPrivate *priv; }; struct _PtPlayerClass { GObjectClass parent_class; }; /** * PtModeType: * @PT_MODE_PLAYBACK: normal audible playback * @PT_MODE_ASR: silent automatic speech recognition * * Enum values indicating PtPlayer output mode. */ typedef enum { PT_MODE_PLAYBACK, PT_MODE_ASR, /*< private >*/ PT_MODE_INVALID } PtModeType; /** * PtPrecisionType: * @PT_PRECISION_SECOND: Rounds to full seconds, e.g. 1:23 (1 minute, 23 seconds) * @PT_PRECISION_SECOND_10TH: Round to 1/10 seconds, e.g. 1:23.4 * @PT_PRECISION_SECOND_100TH: Round to 1/100 seconds, e.g. 1:23.45 * * Enum values indicating desired precision of time strings. */ typedef enum { PT_PRECISION_SECOND, PT_PRECISION_SECOND_10TH, PT_PRECISION_SECOND_100TH, /*< private >*/ PT_PRECISION_INVALID } PtPrecisionType; GType pt_player_get_type (void) G_GNUC_CONST; void pt_player_pause (PtPlayer *player); void pt_player_pause_and_rewind (PtPlayer *player); gint pt_player_get_pause (PtPlayer *player); void pt_player_play (PtPlayer *player); void pt_player_play_pause (PtPlayer *player); void pt_player_set_selection (PtPlayer *player, gint64 start, gint64 end); void pt_player_clear_selection (PtPlayer *player); gboolean pt_player_selection_active (PtPlayer *player); gboolean pt_player_open_uri (PtPlayer *player, gchar *uri); void pt_player_jump_relative (PtPlayer *player, gint milliseconds); void pt_player_jump_back (PtPlayer *player); void pt_player_jump_forward (PtPlayer *player); gint pt_player_get_back (PtPlayer *player); gint pt_player_get_forward (PtPlayer *player); void pt_player_jump_to_position (PtPlayer *player, gint milliseconds); void pt_player_set_speed (PtPlayer *player, gdouble speed); gdouble pt_player_get_volume (PtPlayer *player); void pt_player_set_volume (PtPlayer *player, gdouble volume); gboolean pt_player_get_mute (PtPlayer *player); void pt_player_set_mute (PtPlayer *player, gboolean mute); gint64 pt_player_get_position (PtPlayer *player); gint64 pt_player_get_duration (PtPlayer *player); gchar* pt_player_get_uri (PtPlayer *player); gchar* pt_player_get_filename (PtPlayer *player); gchar* pt_player_get_time_string (gint time, gint duration, PtPrecisionType precision); gchar* pt_player_get_current_time_string (PtPlayer *player, PtPrecisionType precision); gchar* pt_player_get_duration_time_string (PtPlayer *player, PtPrecisionType precision); gchar* pt_player_get_timestamp_for_time (PtPlayer *player, gint time, gint duration); gchar* pt_player_get_timestamp (PtPlayer *player); gint pt_player_get_timestamp_position (PtPlayer *player, gchar *timestamp, gboolean check_duration); gboolean pt_player_string_is_timestamp (PtPlayer *player, gchar *timestamp, gboolean check_duration); gboolean pt_player_goto_timestamp (PtPlayer *player, gchar *timestamp); void pt_player_connect_waveviewer (PtPlayer *player, PtWaveviewer *wv); void pt_player_set_mode (PtPlayer *player, PtModeType type); PtModeType pt_player_get_mode (PtPlayer *player); gboolean pt_player_configure_asr (PtPlayer *player, PtConfig *config, GError **error); gboolean pt_player_config_is_loadable (PtPlayer *player, PtConfig *config); PtPlayer* pt_player_new (void); G_END_DECLS #endif parlatype-3.0/libparlatype/src/pt-position-manager.c000066400000000000000000000102401414030451500226670ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2020 * * 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 . */ /** * pt-position-manager * Saves and loads last playback position for a file. * * The current implementation is using g_file_set_attribute() from GIO, which * to my knowledge works only with GVFS. The GVFS daemon saves custom * attributes in ~/.local/share/gvfs-metadata in binary format. * * The manager is a class/object although that is not necessary at the moment. * It doesn't have public or private attributes but this could change if other * backends would be supported (e.g. SQlite based). */ #include "config.h" #include #include "pt-position-manager.h" #define METADATA_POSITION "metadata::parlatype::position" G_DEFINE_TYPE (PtPositionManager, pt_position_manager, G_TYPE_OBJECT) /** * pt_position_manager_save: * @self: a #PtPositionManager * @file: #GFile holding the file * @pos: position to save in milliseconds * * Tries to save the given position for the given file. * Success and failure are logged at info level. */ void pt_position_manager_save (PtPositionManager *self, GFile *file, gint64 pos) { GError *error = NULL; GFileInfo *info; gchar value[64]; if (!file) return; info = g_file_info_new (); g_snprintf (value, sizeof (value), "%" G_GINT64_FORMAT, pos); g_file_info_set_attribute_string (info, METADATA_POSITION, value); g_file_set_attributes_from_info ( file, info, G_FILE_QUERY_INFO_NONE, NULL, &error); if (error) { /* There are valid cases were setting attributes is not * possible, e.g. in sandboxed environments, containers etc. * Use G_LOG_LEVEL_INFO because other log levels go to stderr * and might result in failed tests. */ g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "MESSAGE", "Position not saved: %s", error->message); g_error_free (error); } else { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "MESSAGE", "Position saved"); } g_object_unref (info); } /** * pt_position_manager_load: * @self: a #PtPositionManager * @file: #GFile holding the file * * Tries to get the position where the given file ended the last time. * Success is logged at info level, "soft" failure (no position saved) is * not logged and other "hard" failures are logged at warning level. * * Return value: Position in milliseconds or zero on failure. * */ gint64 pt_position_manager_load (PtPositionManager *self, GFile *file) { GError *error = NULL; GFileInfo *info; gchar *value = NULL; gint64 pos = 0; if (!file) return 0; info = g_file_query_info (file, METADATA_POSITION, G_FILE_QUERY_INFO_NONE, NULL, &error); if (error) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "Metadata not retrieved: %s", error->message); g_error_free (error); return 0; } value = g_file_info_get_attribute_as_string (info, METADATA_POSITION); if (value) { pos = g_ascii_strtoull (value, NULL, 0); g_free (value); if (pos > 0) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "MESSAGE", "Metadata: got position"); } } g_object_unref (info); return pos; } /* --------------------- Init and GObject management ------------------------ */ static void pt_position_manager_init (PtPositionManager *player) { } static void pt_position_manager_class_init (PtPositionManagerClass *klass) { } PtPositionManager * pt_position_manager_new (void) { return g_object_new (PT_TYPE_POSITION_MANAGER, NULL); } parlatype-3.0/libparlatype/src/pt-position-manager.h000066400000000000000000000034561414030451500227070ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2020 * * 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 . */ #ifndef PT_POSITION_MANAGER_H #define PT_POSITION_MANAGER_H #include G_BEGIN_DECLS #define PT_TYPE_POSITION_MANAGER (pt_position_manager_get_type()) #define PT_POSITION_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PT_TYPE_POSITION_MANAGER, PtPositionManager)) #define PT_IS_POSITION_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PT_TYPE_POSITION_MANAGER)) typedef struct _PtPositionManager PtPositionManager; typedef struct _PtPositionManagerClass PtPositionManagerClass; typedef struct _PtPositionManagerPrivate PtPositionManagerPrivate; /** * PtPositionManager: * * The #PtPositionManager contains only private fields and should not be directly accessed. */ struct _PtPositionManager { GObject parent; }; struct _PtPositionManagerClass { GObjectClass parent_class; }; GType pt_position_manager_get_type (void) G_GNUC_CONST; void pt_position_manager_save (PtPositionManager *self, GFile *file, gint64 pos); gint64 pt_position_manager_load (PtPositionManager *self, GFile *file); PtPositionManager* pt_position_manager_new (void); G_END_DECLS #endif parlatype-3.0/libparlatype/src/pt-waveloader.c000066400000000000000000000700461414030451500215560ustar00rootroot00000000000000/* Copyright (C) 2006 Buzztrax team * Copyright (C) Gabor Karsay 2016, 2020 * * Taken from wave.c (bt_wave_load_from_uri) from Buzztrax and heavily modified. * * 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 . */ /** * SECTION: pt-waveloader * @short_description: Loads the waveform for a given file. * @stability: Stable * @include: parlatype/pt-waveloader.h * * An object to load waveform data from an audio file. The raw data can be * used by a widget to visually represent a waveform. */ #include "config.h" #include #define GETTEXT_PACKAGE GETTEXT_LIB #include #include #include #include #include "pt-i18n.h" #include "pt-waveloader.h" struct _PtWaveloaderPrivate { GstElement *pipeline; GstElement *fmt; GArray *hires; GArray *lowres; gint lowres_pps; gint lowres_index; gchar *uri; gboolean load_pending; gboolean data_pending; gint64 duration; gint bus_watch_id; gint progress_timeout; gdouble progress; }; enum { PROP_0, PROP_URI, N_PROPERTIES }; enum { PROGRESS, ARRAY_SIZE_CHANGED, LAST_SIGNAL }; static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, }; static guint signals[LAST_SIGNAL] = { 0 }; G_DEFINE_TYPE_WITH_PRIVATE (PtWaveloader, pt_waveloader, G_TYPE_OBJECT) static void remove_timeout (PtWaveloader *wl) { if (wl->priv->progress_timeout > 0) { g_source_remove (wl->priv->progress_timeout); wl->priv->progress_timeout = 0; } } static void on_wave_loader_new_pad (GstElement *bin, GstPad *pad, gpointer user_data) { if (!gst_element_link (bin, GST_ELEMENT (user_data))) { GST_WARNING ("Can’t link output of wave decoder to converter."); } } static gint calc_lowres_len (gint hires_len, gint pps) { /* High resolution array has 8000 samples (single values) per second. * Convert to low resolution array with @pps × 2 values (min, max) per * second. */ gint i, ratio, mod, correct, remains, result; /* First full seconds */ result = hires_len / 8000 * pps; /* Add remainder, * keep in sync with implementation in convert_one_second() */ remains = hires_len % 8000; /* what remains to convert */ ratio = 8000 / pps; /* conversion ratio */ mod = 8000 % pps; /* remainder of ratio */ for (i = 0; i < pps; i++) { result += 1; /* If there is a remainder for in_rate/out_rate, correct * it by adding an additional sample. */ correct = 0; if (i < mod) correct = 1; remains -= (ratio + correct); if (remains <= 0) break; } /* We have min/max pairs */ result = result *2; return result; } static void convert_one_second (PtWaveloader *wl, gint nr) { gint pps = wl->priv->lowres_pps; gint k, m; gint16 d; gfloat vmin, vmax; gint chunk_size; gint mod; chunk_size = 8000 / pps; mod = 8000 % pps; gint index_in = nr * 8000; gint correct; if (index_in >= wl->priv->hires->len) return; /* Loop data worth 1 second */ for (k = 0; k < pps; k++) { vmin = 0; vmax = 0; /* If there is a remainder for in_rate/out_rate, correct * it by reading in an additional sample. */ correct = 0; if (k < mod) correct = 1; for (m = 0; m < (chunk_size + correct); m++) { /* Get highest and lowest value */ d = g_array_index (wl->priv->hires, gint16, index_in); if (d < vmin) vmin = d; if (d > vmax) vmax = d; index_in++; if (index_in == wl->priv->hires->len) break; } /* Always include 0, looks better at higher resolutions */ if (vmin > 0 && vmax > 0) vmin = 0; else if (vmin < 0 && vmax < 0) vmax = 0; /* Save as a float in the range 0 to 1 */ vmin = vmin / 32768.0; vmax = vmax / 32768.0; memcpy (wl->priv->lowres->data + wl->priv->lowres_index * sizeof (float), &vmin, sizeof (float)); wl->priv->lowres_index++; memcpy (wl->priv->lowres->data + wl->priv->lowres_index * sizeof (float), &vmax, sizeof (float)); wl->priv->lowres_index++; if (index_in == wl->priv->hires->len) break; } } static GstFlowReturn new_sample_cb (GstAppSink *sink, gpointer user_data) { PtWaveloader *wl = PT_WAVELOADER (user_data); GstSample *sample = gst_app_sink_pull_sample (sink); GstBuffer *buffer = gst_sample_get_buffer (sample); GstMapInfo map; if (!gst_buffer_map (buffer, &map, GST_MAP_READ)) { gst_sample_unref (sample); return GST_FLOW_ERROR; }; /* One sample is 2 bytes (16 bit signed integer), see caps in * setup_pipeline(). The buffer contains several samples, the number * of elements/samples is map.size / sample size. */ g_array_append_vals (wl->priv->hires, map.data, map.size / 2); gst_buffer_unmap (buffer, &map); gst_sample_unref (sample); /* If hires has more than one second of new data available, add it to * lowres. The very last data will be added at the EOS signal. */ gint hires_full_seconds = wl->priv->hires->len / 8000; gint lowres_full_seconds = wl->priv->lowres_index / 2 / wl->priv->lowres_pps; gint pps = wl->priv->lowres_pps; if (hires_full_seconds > lowres_full_seconds) { /* Make sure lowres is big enough */ if (wl->priv->lowres_index + pps * 2 + 1 > wl->priv->lowres->len) { g_array_set_size (wl->priv->lowres, wl->priv->lowres_index + pps * 2 + 2); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "lowres->len resized in new_sample_cb: %d", wl->priv->lowres_index + pps * 2 + 2); } convert_one_second (wl, lowres_full_seconds); } return GST_FLOW_OK; } static gboolean setup_pipeline (PtWaveloader *wl) { gboolean result = TRUE; GstElement *src, *dec, *conv, *resample, *sink; GstCaps *caps; /* create loader pipeline TODO: this is probably leaking on 2nd run */ wl->priv->pipeline = gst_pipeline_new ("wave-loader"); /* TODO gst_element_make_from_uri(): The URI must be gst_uri_is_valid(). */ src = gst_element_make_from_uri (GST_URI_SRC, wl->priv->uri, NULL, NULL); dec = gst_element_factory_make ("decodebin", NULL); conv = gst_element_factory_make ("audioconvert", NULL); resample = gst_element_factory_make ("audioresample", NULL); wl->priv->fmt = gst_element_factory_make ("capsfilter", NULL); sink = gst_element_factory_make ("appsink", NULL); /* configure elements */ caps = gst_caps_new_simple ("audio/x-raw", "format", G_TYPE_STRING, GST_AUDIO_NE (S16), "layout", G_TYPE_STRING, "interleaved", "channels", G_TYPE_INT, 1, "rate", G_TYPE_INT, 8000, NULL); g_object_set (wl->priv->fmt, "caps", caps, NULL); gst_caps_unref (caps); g_object_set (sink, "emit-signals", TRUE, "sync", FALSE, NULL); /* add and link */ gst_bin_add_many (GST_BIN (wl->priv->pipeline), src, dec, conv, resample, wl->priv->fmt, sink, NULL); result = gst_element_link (src, dec); if (!result) { GST_WARNING_OBJECT (wl->priv->pipeline, "Can’t link wave loader pipeline (src ! dec ! conv ! resample ! fmt ! sink)."); return result; } result = gst_element_link_many (conv, resample, wl->priv->fmt, sink, NULL); if (!result) { GST_WARNING_OBJECT (wl->priv->pipeline, "Can’t link wave loader pipeline (conv ! resample ! fmt ! sink)."); return result; } g_signal_connect (dec, "pad-added", G_CALLBACK (on_wave_loader_new_pad), (gpointer) conv); g_signal_connect (sink, "new-sample", G_CALLBACK (new_sample_cb), wl); return result; } static gboolean check_progress (GTask *task) { /* This timeout runs parallel to message bus (bus_handler()). If it’s removed, the message bus has to be removed, too, and also the other way round. */ /* TODO think about moving all this to new_sample_cb() */ PtWaveloader *wl = g_task_get_source_object (task); gint64 dur; gint64 pos; gdouble temp; gint new_size; /* Check if task was cancelled and reset pipeline */ if (g_cancellable_is_cancelled (g_task_get_cancellable (task))) { gst_element_set_state (wl->priv->pipeline, GST_STATE_NULL); g_source_remove (wl->priv->bus_watch_id); wl->priv->bus_watch_id = 0; wl->priv->progress_timeout = 0; g_array_set_size (wl->priv->lowres, 0); g_task_return_boolean (task, FALSE); g_object_unref (task); return G_SOURCE_REMOVE; } /* Query position and duration and emit progress signal */ if (!gst_element_query_position (wl->priv->pipeline, GST_FORMAT_TIME, &pos)) return G_SOURCE_CONTINUE; if (!gst_element_query_duration (wl->priv->pipeline, GST_FORMAT_TIME, &dur)) return G_SOURCE_CONTINUE; if (dur > wl->priv->duration) { wl->priv->duration = dur; new_size = wl->priv->duration / 1000000000 * wl->priv->lowres_pps * 2; if (wl->priv->lowres->len != new_size) { g_array_set_size (wl->priv->lowres, new_size); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Duration changed signal: %" GST_TIME_FORMAT" lowres resized to len %d", GST_TIME_ARGS (wl->priv->duration), new_size); g_signal_emit_by_name (wl, "array-size-changed"); } } temp = (gdouble) pos / dur; if (temp > wl->priv->progress && temp < 1) { wl->priv->progress = temp; g_signal_emit_by_name (wl, "progress", wl->priv->progress); } return G_SOURCE_CONTINUE; } static gboolean bus_handler (GstBus *bus, GstMessage *msg, gpointer data) { GTask *task = (GTask *) data; PtWaveloader *wl = g_task_get_source_object (task); switch (GST_MESSAGE_TYPE (msg)) { case GST_MESSAGE_ERROR: { gchar *debug; GError *error; remove_timeout (wl); gst_message_parse_error (msg, &error, &debug); /* Error is returned. Log the message here at level DEBUG, as higher levels will abort tests. */ g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Error from element %s: %s", GST_OBJECT_NAME (msg->src), error->message); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Debugging info: %s", (debug) ? debug : "none"); g_free (debug); wl->priv->bus_watch_id = 0; g_task_return_error (task, error); g_object_unref (task); return FALSE; } case GST_MESSAGE_EOS: { /* convert remaining data from hires to lowres */ g_array_set_size (wl->priv->lowres, calc_lowres_len (wl->priv->hires->len, wl->priv->lowres_pps)); /* while hires has more full seconds than lowres ... */ while (wl->priv->hires->len / 8000 > wl->priv->lowres_index / 2 / wl->priv->lowres_pps) { convert_one_second (wl, wl->priv->lowres_index / 2 / wl->priv->lowres_pps); } /* ... and now add the last data */ convert_one_second (wl, (wl->priv->lowres_index / 2 / wl->priv->lowres_pps)); /* query length and convert to samples */ if (!gst_element_query_duration (wl->priv->pipeline, GST_FORMAT_TIME, &wl->priv->duration)) { GST_WARNING ("getting sample duration failed"); } g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Sample decoded: hires->len=%d, lowres->len=%d, pps=%d, duration=%" GST_TIME_FORMAT, wl->priv->hires->len, wl->priv->lowres->len, wl->priv->lowres_pps, GST_TIME_ARGS (wl->priv->duration)); remove_timeout (wl); wl->priv->bus_watch_id = 0; g_task_return_boolean (task, TRUE); g_object_unref (task); return FALSE; } case GST_MESSAGE_DURATION_CHANGED: { gst_element_query_duration (wl->priv->pipeline, GST_FORMAT_TIME, &wl->priv->duration); gint new_size; new_size = wl->priv->duration / 1000000000 * wl->priv->lowres_pps * 2; g_array_set_size (wl->priv->lowres, new_size); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Duration changed signal: %" GST_TIME_FORMAT" lowres resized to len %d", GST_TIME_ARGS (wl->priv->duration), new_size); g_signal_emit_by_name (wl, "array-size-changed"); break; } default: break; } return TRUE; } /** * pt_waveloader_load_finish: * @wl: a #PtWaveloader * @result: the #GAsyncResult passed to your #GAsyncReadyCallback * @error: (nullable): a pointer to a NULL #GError, or NULL * * Gives the result of the async load operation. A cancelled operation results * in an error, too. * * Return value: TRUE if successful, or FALSE with error set * * Since: 1.4 */ gboolean pt_waveloader_load_finish (PtWaveloader *wl, GAsyncResult *result, GError **error) { g_return_val_if_fail (g_task_is_valid (result, wl), FALSE); wl->priv->load_pending = FALSE; g_signal_emit_by_name (wl, "progress", 1); return g_task_propagate_boolean (G_TASK (result), error); } /** * pt_waveloader_load_async: * @wl: a #PtWaveloader * @pps: pixels per second * @cancellable: (nullable): a #GCancellable or NULL * @callback: (scope async): a #GAsyncReadyCallback to call when the operation is complete * @user_data: (closure): user_data for callback * * Saves sample data to private memory. To keep the memory footprint low, the * raw data is downsampled to 8000 samples per second (16 bit per sample). This * requires approx. 1 MB of memory per minute. * * #PtWaveloader:uri must be set. If it is not valid, an error will be returned. * If there is another load operation going on, an error will be returned. * * While saving data #PtWaveloader::progress is emitted every 30 ms. * * In your callback call #pt_waveloader_load_finish to get the result of the * operation. * * You can get a pointer to the #GArray holding the data with #pt_waveloader_get_data * either before loading it or afterwards. * * Since: 2.0 */ void pt_waveloader_load_async (PtWaveloader *wl, gint pps, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (PT_IS_WAVELOADER (wl)); g_return_if_fail (wl->priv->uri != NULL); GTask *task; GstBus *bus; task = g_task_new (wl, cancellable, callback, user_data); /* Lets have an initial size of 60 sec */ g_array_set_size (wl->priv->lowres, pps * 60); wl->priv->lowres_pps = pps; wl->priv->lowres_index = 0; if (wl->priv->load_pending) { g_task_return_new_error ( task, GST_CORE_ERROR, GST_CORE_ERROR_FAILED, _("Waveloader has outstanding operation.")); g_object_unref (task); return; } wl->priv->load_pending = TRUE; wl->priv->progress = 0; g_array_set_size (wl->priv->hires, 0); /* setup pipeline TODO: do it just on init */ if (!setup_pipeline (wl)) { g_task_return_new_error ( task, GST_CORE_ERROR, GST_CORE_ERROR_FAILED, _("Failed to setup GStreamer pipeline.")); g_object_unref (task); return; } /* setup message handler */ bus = gst_pipeline_get_bus (GST_PIPELINE (wl->priv->pipeline)); wl->priv->bus_watch_id = gst_bus_add_watch (bus, bus_handler, task); gst_object_unref (bus); /* Run pipeline and start timeout for progress and cancellation. * Errors are reported on bus. */ gst_element_set_state (wl->priv->pipeline, GST_STATE_PLAYING); wl->priv->progress_timeout = g_timeout_add (30, (GSourceFunc) check_progress, task); } /** * pt_waveloader_get_duration: * @wl: a #PtWaveloader * * Returns the duration of stream. As the whole stream is scanned, this is * supposed to be an exact duration, not an estimate. * * Return value: duration in nanoseconds as used by GStreamer * * Since: 1.4 */ gint64 pt_waveloader_get_duration (PtWaveloader *wl) { return wl->priv->duration; } /** * pt_waveloader_resize_finish: * @wl: a #PtWaveloader * @result: the #GAsyncResult passed to your #GAsyncReadyCallback * @error: (nullable): a pointer to a NULL #GError, or NULL * * Gives the result of the async resize operation. A cancelled operation results * in an error, too. * * Return value: TRUE if successful, or FALSE with error set * * Since: 2.0 */ gboolean pt_waveloader_resize_finish (PtWaveloader *wl, GAsyncResult *result, GError **error) { g_return_val_if_fail (g_task_is_valid (result, wl), FALSE); wl->priv->data_pending = FALSE; g_signal_emit_by_name (wl, "progress", 1); return g_task_propagate_boolean (G_TASK (result), error); } static void pt_waveloader_resize_real (GTask *task, gpointer source_object, gpointer task_data, GCancellable *cancellable) { /* TODO share code with convert_one_second() */ PtWaveloader *wl = source_object; gint pps = GPOINTER_TO_INT (task_data); gint k, m; gint16 d; gfloat vmin, vmax; gint chunk_size; gint mod; gint lowres_len; gboolean result = TRUE; lowres_len = calc_lowres_len (wl->priv->hires->len, pps); chunk_size = 8000 / pps; mod = 8000 % pps; if (wl->priv->lowres == NULL || wl->priv->lowres->len != lowres_len) { g_array_set_size (wl->priv->lowres, lowres_len); g_signal_emit_by_name (wl, "array-size-changed"); } gint index_in = 0; gint index_out = 0; gdouble progress = 0; gint correct; while (index_in < wl->priv->hires->len && index_out < lowres_len) { progress = (gdouble) index_out / lowres_len; g_signal_emit_by_name (wl, "progress", progress); if (g_cancellable_is_cancelled (cancellable)) { result = FALSE; break; } /* Loop data worth 1 second */ for (k = 0; k < pps; k++) { vmin = 0; vmax = 0; /* If there is a remainder for in_rate/out_rate, correct * it by reading in an additional sample. */ correct = 0; if (k < mod) correct = 1; for (m = 0; m < (chunk_size + correct); m++) { /* Get highest and lowest value */ d = g_array_index (wl->priv->hires, gint16, index_in); if (d < vmin) vmin = d; if (d > vmax) vmax = d; index_in++; if (index_in == wl->priv->hires->len) break; } /* Always include 0, looks better at higher resolutions */ if (vmin > 0 && vmax > 0) vmin = 0; else if (vmin < 0 && vmax < 0) vmax = 0; /* Save as a float in the range 0 to 1 */ vmin = vmin / 32768.0; vmax = vmax / 32768.0; memcpy (wl->priv->lowres->data + index_out * sizeof (float), &vmin, sizeof (float)); index_out++; memcpy (wl->priv->lowres->data + index_out * sizeof (float), &vmax, sizeof (float)); index_out++; if (index_out > lowres_len - 2) break; } } g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "hires->len: %d", wl->priv->hires->len); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Array size: %" G_GINT64_FORMAT " ", lowres_len); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "samples: %" G_GINT64_FORMAT " ", lowres_len / 2); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "pixels per sec: %d", pps); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "index_in: %d", index_in); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "index_out: %d", index_out); g_task_return_boolean (task, result); } /** * pt_waveloader_resize_async: * @wl: a #PtWaveloader * @pps: the requested pixel per second ratio * @cancellable: (nullable): a #GCancellable or NULL * @callback: (scope async): a #GAsyncReadyCallback to call when the operation is complete * @user_data: (closure): user_data for callback * * Resizes wave form data at the requested resolution @pps. If the array's * size has to be changed, #PtWaveloader::array-size-changed is emitted. * Any data in the array will be overwritten. * * The resolution is given as pixel per seconds, e.g. 100 means one second * is represented by 100 samples, is 100 pixels wide. @pps must be >= 25 and <= 200. * * You should have loaded a file with #pt_waveloader_load_async before resizing * it. There are no concurrent operations allowed. An error is returned, * if the file was not loaded before, if it is still loading or if there is * another #pt_waveloader_get_data_async operation going on. * * Cancelling the operation returns an error and lets the array in an inconsistent * state. Its size will be according to the requested new resolution, but the data * will be partly old, partly new. * * In your callback call #pt_waveloader_get_data_finish to get the result of the * operation. * * Since: 2.0 */ void pt_waveloader_resize_async (PtWaveloader *wl, gint pps, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (PT_IS_WAVELOADER (wl)); g_return_if_fail ((pps >= 25) && (pps <= 200)); GTask *task; task = g_task_new (wl, cancellable, callback, user_data); if (wl->priv->hires->len == 0) { g_task_return_new_error ( task, GST_CORE_ERROR, GST_CORE_ERROR_FAILED, /* error message not for users, maybe * g_return_if_fail() would be better here. */ "No Array!"); g_object_unref (task); return; } if (wl->priv->load_pending || wl->priv->data_pending) { g_task_return_new_error ( task, GST_CORE_ERROR, GST_CORE_ERROR_FAILED, /* error message not for users, should be * handled by application */ "Waveloader has outstanding operation."); g_object_unref (task); return; } wl->priv->data_pending = TRUE; g_task_set_task_data (task, GINT_TO_POINTER (pps), NULL); g_task_run_in_thread (task, pt_waveloader_resize_real); g_object_unref (task); } typedef struct { GAsyncResult *res; GMainLoop *loop; } SyncData; static void quit_loop_cb (PtWaveloader *wl, GAsyncResult *res, gpointer user_data) { SyncData *data = user_data; data->res = g_object_ref (res); g_main_loop_quit (data->loop); } /** * pt_waveloader_resize: * @wl: a #PtWaveloader * @pps: the requested pixel per second ratio * @error: (nullable): return location for an error, or NULL * * Sync version of #pt_waveloader_resize_async. * * Return value: TRUE if successful, or FALSE with error set * * Since: 2.0 */ gboolean pt_waveloader_resize (PtWaveloader *wl, gint pps, GError **error) { g_return_val_if_fail (PT_IS_WAVELOADER (wl), FALSE); g_return_val_if_fail ((pps >= 25) && (pps <= 200), FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); gboolean result; SyncData data; GMainContext *context; /* Note: If done in the default thread, all sorts of bad things happen, * mostly segfaults in painting, freezes etc. I have to admit that * I don't fully understand this. – Signals are not emitted now. */ context = g_main_context_new (); g_main_context_push_thread_default (context); data.loop = g_main_loop_new (context, FALSE); data.res = NULL; pt_waveloader_resize_async (wl, pps, NULL, (GAsyncReadyCallback) quit_loop_cb, &data); g_main_loop_run (data.loop); result = pt_waveloader_resize_finish (wl, data.res, error); g_main_context_pop_thread_default (context); g_main_context_unref (context); g_main_loop_unref (data.loop); g_object_unref (data.res); return result; } /** * pt_waveloader_get_data: * @wl: a #PtWaveloader * * This returns the pointer to a GArray that is holding all the wave form data. * It consists of a minimum value in the range of -1 to 0 and a maximum value * in the range of 0 to 1, repeating this until the end. Each min/max pair can * be drawn by the application as one vertical line in the wave form. * * Don't modify the data. * * Return value: (element-type float) (transfer none): a #GArray with wave data * * Since: 2.0 */ GArray * pt_waveloader_get_data (PtWaveloader *wl) { return wl->priv->lowres; } /* --------------------- Init and GObject management ------------------------ */ static void pt_waveloader_init (PtWaveloader *wl) { wl->priv = pt_waveloader_get_instance_private (wl); GError *gst_error = NULL; gst_init_check (NULL, NULL, &gst_error); if (gst_error) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, "MESSAGE", "PtWaveloader failed to init GStreamer: %s", gst_error->message); g_clear_error (&gst_error); } wl->priv->pipeline = NULL; wl->priv->uri = NULL; wl->priv->hires = g_array_new (FALSE, /* zero terminated */ TRUE, /* clear to zero */ sizeof(gint16)); wl->priv->lowres = g_array_new (FALSE, TRUE, sizeof(float)); wl->priv->bus_watch_id = 0; wl->priv->progress_timeout = 0; wl->priv->load_pending = FALSE; wl->priv->data_pending = FALSE; } static void pt_waveloader_dispose (GObject *object) { PtWaveloader *wl; wl = PT_WAVELOADER (object); g_free (wl->priv->uri); g_array_unref (wl->priv->hires); g_array_unref (wl->priv->lowres); if (wl->priv->bus_watch_id > 0) { g_source_remove (wl->priv->bus_watch_id); wl->priv->bus_watch_id = 0; } remove_timeout (wl); if (wl->priv->pipeline) { gst_element_set_state (wl->priv->pipeline, GST_STATE_NULL); gst_object_unref (GST_OBJECT (wl->priv->pipeline)); wl->priv->pipeline = NULL; } G_OBJECT_CLASS (pt_waveloader_parent_class)->dispose (object); } static void pt_waveloader_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { PtWaveloader *wl; wl = PT_WAVELOADER (object); switch (property_id) { case PROP_URI: g_free (wl->priv->uri); wl->priv->uri = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void pt_waveloader_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { PtWaveloader *wl; wl = PT_WAVELOADER (object); switch (property_id) { case PROP_URI: g_value_set_string (value, wl->priv->uri); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void pt_waveloader_class_init (PtWaveloaderClass *klass) { G_OBJECT_CLASS (klass)->set_property = pt_waveloader_set_property; G_OBJECT_CLASS (klass)->get_property = pt_waveloader_get_property; G_OBJECT_CLASS (klass)->dispose = pt_waveloader_dispose; /** * PtWaveloader::progress: * @wl: the waveloader emitting the signal * @progress: the new progress state, ranging from 0.0 to 1.0 * * Indicates progress on a scale from 0.0 to 1.0, however it does not * emit the value 0.0 nor 1.0. Wait for a successful operation until * any gui element showing progress is dismissed. */ signals[PROGRESS] = g_signal_new ("progress", PT_TYPE_WAVELOADER, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__DOUBLE, G_TYPE_NONE, 1, G_TYPE_DOUBLE); /** * PtWaveloader::array-size-changed: * @wl: the waveloader emitting the signal * * The size of the array with waveform data has changed. */ signals[ARRAY_SIZE_CHANGED] = g_signal_new ("array-size-changed", PT_TYPE_WAVELOADER, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * PtWaveloader:uri: * * URI of the audio file. */ obj_properties[PROP_URI] = g_param_spec_string ( "uri", "URI to load from", "URI to load from", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT); g_object_class_install_properties ( G_OBJECT_CLASS (klass), N_PROPERTIES, obj_properties); } /** * pt_waveloader_new: * @uri: (nullable): URI of the audio file to load * * Returns a new #PtWaveloader. The @uri is not checked on construction, but * calling pt_waveloader_load_async() will fail with an error message. * * After use g_object_unref() it. * * Return value: (transfer full): a new #PtWaveloader * * Since: 1.4 */ PtWaveloader * pt_waveloader_new (gchar *uri) { _pt_i18n_init (); return g_object_new (PT_TYPE_WAVELOADER, "uri", uri, NULL); } parlatype-3.0/libparlatype/src/pt-waveloader.h000066400000000000000000000050241414030451500215550ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2016 * * 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 . */ #ifndef PT_WAVELOADER_H #define PT_WAVELOADER_H #if !defined (__PARLATYPE_H_INSIDE__) && !defined (PARLATYPE_COMPILATION) #error "Only can be included directly." #endif #include G_BEGIN_DECLS #define PT_TYPE_WAVELOADER (pt_waveloader_get_type()) #define PT_WAVELOADER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PT_TYPE_WAVELOADER, PtWaveloader)) #define PT_IS_WAVELOADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PT_TYPE_WAVELOADER)) typedef struct _PtWaveloader PtWaveloader; typedef struct _PtWaveloaderClass PtWaveloaderClass; typedef struct _PtWaveloaderPrivate PtWaveloaderPrivate; /** * PtWaveloader: * * The #PtWaveloader contains only private fields and should not be directly accessed. */ struct _PtWaveloader { GObject parent; /*< private > */ PtWaveloaderPrivate *priv; }; struct _PtWaveloaderClass { GObjectClass parent_class; }; GType pt_waveloader_get_type (void) G_GNUC_CONST; gboolean pt_waveloader_load_finish (PtWaveloader *wl, GAsyncResult *result, GError **error); void pt_waveloader_load_async (PtWaveloader *wl, gint pps, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gint64 pt_waveloader_get_duration (PtWaveloader *wl); gboolean pt_waveloader_resize_finish (PtWaveloader *wl, GAsyncResult *result, GError **error); void pt_waveloader_resize_async (PtWaveloader *wl, gint pps, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean pt_waveloader_resize (PtWaveloader *wl, gint pps, GError **error); GArray *pt_waveloader_get_data (PtWaveloader *wl); PtWaveloader* pt_waveloader_new (gchar *uri); G_END_DECLS #endif parlatype-3.0/libparlatype/src/pt-waveviewer-cursor.c000066400000000000000000000200041414030451500231110ustar00rootroot00000000000000/* Copyright (C) 2017, 2020 Gabor Karsay * * 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 . */ /** * pt-waveviewer-cursor * Internal widget that draws a cursor for PtWaveviewer. * * PtWaveviewerCursor is part of a GtkOverlay stack, from bottom to top: * - PtWaveviewerWaveform * - PtWaveviewerSelection * - PtWaveviewerCursor * - PtWaveviewerFocus * * pt_waveviewer_cursor_render() is used to render the cursor. The parameter * @position is relative to the viewport. That means that the caller has to * compute the position from the absolute position (in terms of a fully plotted * waveform) minus the left position of the viewport (the value of the horizontal * GtkAdjustment). * * A value of -1 hides the cursor. * * pt_waveviewer_cursor_set_focus() renders a focus indicator around the cursor. * * The cursor itself is cached and updated when the style changes, e.g. color * (style-updated signal), state flags change, e.g. window in foreground or * background (state-flags-changed signal) or the widget's vertical size * changes (size-allocate signal). * * The widget has a style class "cursor" that can be used to set its color * via CSS. Horizontal size and shape are immutable. */ #include "config.h" #include "pt-waveviewer.h" #include "pt-waveviewer-cursor.h" #define MARKER_BOX_W 10 #define MARKER_BOX_H 8 struct _PtWaveviewerCursorPrivate { cairo_surface_t *cursor; GdkRGBA cursor_color; gint position; gboolean focus; }; G_DEFINE_TYPE_WITH_PRIVATE (PtWaveviewerCursor, pt_waveviewer_cursor, GTK_TYPE_DRAWING_AREA); static gboolean pt_waveviewer_cursor_draw (GtkWidget *widget, cairo_t *cr) { PtWaveviewerCursor *self = (PtWaveviewerCursor *) widget; GtkStyleContext *context; gint height; gint width; height = gtk_widget_get_allocated_height (widget); width = gtk_widget_get_allocated_width (widget); /* clear everything */ cairo_set_source_rgba (cr, 0, 0, 0, 0); cairo_rectangle (cr, 0, 0, width, height); cairo_fill (cr); /* paint cursor */ if (self->priv->position == -1) return FALSE; cairo_set_source_surface (cr, self->priv->cursor, self->priv->position - MARKER_BOX_W / 2, 0); cairo_paint (cr); /* render focus */ if (self->priv->focus) { context = gtk_widget_get_style_context (widget); gtk_render_focus (context, cr, self->priv->position - MARKER_BOX_W / 2 - 2, 1, MARKER_BOX_W + 4, height - 2); } return FALSE; } static void draw_cursor (PtWaveviewerCursor *self) { gint height; height = gtk_widget_get_allocated_height (GTK_WIDGET (self)); gtk_widget_queue_draw_area (GTK_WIDGET (self), self->priv->position - MARKER_BOX_W / 2, 0, MARKER_BOX_W, height); } static void cache_cursor (PtWaveviewerCursor *self) { if (!gtk_widget_get_realized (GTK_WIDGET (self))) return; if (self->priv->cursor) cairo_surface_destroy (self->priv->cursor); cairo_t *cr; gint height = gtk_widget_get_allocated_height (GTK_WIDGET (self)); self->priv->cursor = gdk_window_create_similar_surface (gtk_widget_get_window (GTK_WIDGET (self)), CAIRO_CONTENT_COLOR_ALPHA, MARKER_BOX_W, height); cr = cairo_create (self->priv->cursor); gdk_cairo_set_source_rgba (cr, &self->priv->cursor_color); cairo_move_to (cr, 0 + MARKER_BOX_W / 2, height); cairo_line_to (cr, 0 + MARKER_BOX_W / 2, 0); cairo_stroke (cr); cairo_move_to (cr, 0, 0); cairo_line_to (cr, 0 + MARKER_BOX_W, 0); cairo_line_to (cr, 0 + MARKER_BOX_W / 2 , 0 + MARKER_BOX_H); cairo_line_to (cr, 0, 0); cairo_fill (cr); cairo_destroy (cr); } static void pt_waveviewer_cursor_size_allocate (GtkWidget *widget, GtkAllocation *rectangle) { GTK_WIDGET_CLASS (pt_waveviewer_cursor_parent_class)->size_allocate (widget, rectangle); /* If widget changed vertical size, cursor’s size has to be adjusted */ cache_cursor (PT_WAVEVIEWER_CURSOR (widget)); } static void update_cached_style_values (PtWaveviewerCursor *self) { /* Update color */ GtkStyleContext *context; GtkStateFlags state; GdkWindow *window = NULL; window = gtk_widget_get_parent_window (GTK_WIDGET (self)); if (!window) return; context = gtk_widget_get_style_context (GTK_WIDGET (self)); state = gtk_style_context_get_state (context); gtk_style_context_get_color (context, state, &self->priv->cursor_color); cache_cursor (self); } static void pt_waveviewer_cursor_state_flags_changed (GtkWidget *widget, GtkStateFlags flags) { update_cached_style_values (PT_WAVEVIEWER_CURSOR (widget)); GTK_WIDGET_CLASS (pt_waveviewer_cursor_parent_class)->state_flags_changed (widget, flags); } static void pt_waveviewer_cursor_style_updated (GtkWidget *widget) { PtWaveviewerCursor *self = (PtWaveviewerCursor *) widget; GTK_WIDGET_CLASS (pt_waveviewer_cursor_parent_class)->style_updated (widget); update_cached_style_values (self); draw_cursor (self); } static void pt_waveviewer_cursor_realize (GtkWidget *widget) { GTK_WIDGET_CLASS (pt_waveviewer_cursor_parent_class)->realize (widget); update_cached_style_values (PT_WAVEVIEWER_CURSOR (widget)); } void pt_waveviewer_cursor_render (PtWaveviewerCursor *self, gint position) { gint width; width = gtk_widget_get_allocated_width (GTK_WIDGET (self)); position = CLAMP(position, -1, width + MARKER_BOX_W); if (self->priv->position == position) return; /* invalidate old position */ draw_cursor (self); /* invalidate new position */ self->priv->position = position; draw_cursor (self); /* when idle, union of invalidated regions will be cleared and cursor * will be drawn at self->priv->position */ } void pt_waveviewer_cursor_set_focus (PtWaveviewerCursor *self, gboolean focus) { if (self->priv->focus == focus) return; self->priv->focus = focus; draw_cursor (self); } static void pt_waveviewer_cursor_init (PtWaveviewerCursor *self) { self->priv = pt_waveviewer_cursor_get_instance_private (self); GtkStyleContext *context; self->priv->cursor = NULL; self->priv->focus = FALSE; self->priv->position = -1; context = gtk_widget_get_style_context (GTK_WIDGET (self)); gtk_style_context_add_class (context, "cursor"); gtk_widget_set_events (GTK_WIDGET (self), GDK_ALL_EVENTS_MASK); } static void pt_waveviewer_cursor_finalize (GObject *object) { PtWaveviewerCursor *self = PT_WAVEVIEWER_CURSOR (object); if (self->priv->cursor) cairo_surface_destroy (self->priv->cursor); G_OBJECT_CLASS (pt_waveviewer_cursor_parent_class)->finalize (object); } static void pt_waveviewer_cursor_class_init (PtWaveviewerCursorClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gobject_class->finalize = pt_waveviewer_cursor_finalize; widget_class->draw = pt_waveviewer_cursor_draw; widget_class->realize = pt_waveviewer_cursor_realize; widget_class->size_allocate = pt_waveviewer_cursor_size_allocate; widget_class->state_flags_changed = pt_waveviewer_cursor_state_flags_changed; widget_class->style_updated = pt_waveviewer_cursor_style_updated; } GtkWidget * pt_waveviewer_cursor_new (void) { return GTK_WIDGET (g_object_new (PT_TYPE_WAVEVIEWER_CURSOR, NULL)); } parlatype-3.0/libparlatype/src/pt-waveviewer-cursor.h000066400000000000000000000040361414030451500231250ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2017 * * 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 . */ #ifndef PT_WAVEVIEWER_CURSOR_H #define PT_WAVEVIEWER_CURSOR_H #include G_BEGIN_DECLS #define PT_TYPE_WAVEVIEWER_CURSOR (pt_waveviewer_cursor_get_type ()) #define PT_WAVEVIEWER_CURSOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PT_TYPE_WAVEVIEWER_CURSOR, PtWaveviewerCursor)) #define PT_IS_WAVEVIEWER_CURSOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PT_TYPE_WAVEVIEWER_CURSOR)) #define PT_WAVEVIEWER_CURSOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PT_TYPE_WAVEVIEWER_CURSOR, PtWaveviewerCursorClass)) #define PT_IS_WAVEVIEWER_CURSOR_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((klass), PT_TYPE_WAVEVIEWER_CURSOR)) typedef struct _PtWaveviewerCursor PtWaveviewerCursor; typedef struct _PtWaveviewerCursorClass PtWaveviewerCursorClass; typedef struct _PtWaveviewerCursorPrivate PtWaveviewerCursorPrivate; struct _PtWaveviewerCursor { GtkDrawingArea parent; /*< private > */ PtWaveviewerCursorPrivate *priv; }; struct _PtWaveviewerCursorClass { GtkDrawingAreaClass klass; }; GType pt_waveviewer_cursor_get_type (void) G_GNUC_CONST; void pt_waveviewer_cursor_render (PtWaveviewerCursor *self, gint position); void pt_waveviewer_cursor_set_focus (PtWaveviewerCursor *self, gboolean focus); GtkWidget *pt_waveviewer_cursor_new (void); G_END_DECLS #endif // PT_WAVEVIEWER_CURSOR_H parlatype-3.0/libparlatype/src/pt-waveviewer-focus.c000066400000000000000000000051511414030451500227210ustar00rootroot00000000000000/* Copyright (C) 2017, 2020 Gabor Karsay * * 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 . */ /** * pt-waveviewer-focus * Internal widget that draws a focus indicator for PtWaveviewer. * * PtWaveviewerFocus is part of a GtkOverlay stack, from bottom to top: * - PtWaveviewerWaveform * - PtWaveviewerSelection * - PtWaveviewerCursor * - PtWaveviewerFocus * * pt_waveviewer_focus_set() is used to set (or remove) the focus indicator. * It is drawn around the currently visible part of the waveform. */ #include "config.h" #include "pt-waveviewer.h" #include "pt-waveviewer-focus.h" struct _PtWaveviewerFocusPrivate { gboolean focus; }; G_DEFINE_TYPE_WITH_PRIVATE (PtWaveviewerFocus, pt_waveviewer_focus, GTK_TYPE_DRAWING_AREA); static gboolean pt_waveviewer_focus_draw (GtkWidget *widget, cairo_t *cr) { PtWaveviewerFocus *self = (PtWaveviewerFocus *) widget; if (!self->priv->focus) return FALSE; GtkStyleContext *context; gint height, width; context = gtk_widget_get_style_context (GTK_WIDGET (self)); height = gtk_widget_get_allocated_height (widget); width = gtk_widget_get_allocated_width (widget); gtk_render_focus (context, cr, 0 , 0, width, height); return FALSE; } void pt_waveviewer_focus_set (PtWaveviewerFocus *self, gboolean focus) { if (self->priv->focus == focus) return; self->priv->focus = focus; gtk_widget_queue_draw (GTK_WIDGET (self)); } static void pt_waveviewer_focus_init (PtWaveviewerFocus *self) { self->priv = pt_waveviewer_focus_get_instance_private (self); self->priv->focus = FALSE; gtk_widget_set_name (GTK_WIDGET (self), "focus"); gtk_widget_set_events (GTK_WIDGET (self), GDK_ALL_EVENTS_MASK); } static void pt_waveviewer_focus_class_init (PtWaveviewerFocusClass *klass) { GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); widget_class->draw = pt_waveviewer_focus_draw; } GtkWidget * pt_waveviewer_focus_new (void) { return GTK_WIDGET (g_object_new (PT_TYPE_WAVEVIEWER_FOCUS, NULL)); } parlatype-3.0/libparlatype/src/pt-waveviewer-focus.h000066400000000000000000000036311414030451500227270ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2017 * * 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 . */ #ifndef PT_WAVEVIEWER_FOCUS_H #define PT_WAVEVIEWER_FOCUS_H #include G_BEGIN_DECLS #define PT_TYPE_WAVEVIEWER_FOCUS (pt_waveviewer_focus_get_type ()) #define PT_WAVEVIEWER_FOCUS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PT_TYPE_WAVEVIEWER_FOCUS, PtWaveviewerFocus)) #define PT_IS_WAVEVIEWER_FOCUS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PT_TYPE_WAVEVIEWER_FOCUS)) #define PT_WAVEVIEWER_FOCUS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PT_TYPE_WAVEVIEWER_FOCUS, PtWaveviewerFocusClass)) #define PT_IS_WAVEVIEWER_FOCUS_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((klass), PT_TYPE_WAVEVIEWER_FOCUS)) typedef struct _PtWaveviewerFocus PtWaveviewerFocus; typedef struct _PtWaveviewerFocusClass PtWaveviewerFocusClass; typedef struct _PtWaveviewerFocusPrivate PtWaveviewerFocusPrivate; struct _PtWaveviewerFocus { GtkDrawingArea parent; /*< private > */ PtWaveviewerFocusPrivate *priv; }; struct _PtWaveviewerFocusClass { GtkDrawingAreaClass klass; }; GType pt_waveviewer_focus_get_type (void) G_GNUC_CONST; void pt_waveviewer_focus_set (PtWaveviewerFocus *self, gboolean focus); GtkWidget *pt_waveviewer_focus_new (void); G_END_DECLS #endif // PT_WAVEVIEWER_FOCUS_H parlatype-3.0/libparlatype/src/pt-waveviewer-ruler.c000066400000000000000000000261421414030451500227360ustar00rootroot00000000000000/* Copyright (C) 2017, 2020 Gabor Karsay * * 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 . */ /** * pt-waveviewer-ruler * Internal widget that draws the ruler for PtWaveviewer. * * When it's added to PtWaveviewer, it gets the horizontal GtkAdjustment from * its parent (listening for the hierarchy-changed signal). * * Use pt_waveviewer_ruler_set_ruler() to set it up. @n_samples is the number * of lines in the waveform or the width of the fully plotted waveform. * @px_per_sec is how many pixels are worth one second and @duration is the * duration in ms of the audio stream. * * The height of the ruler is determined by the height of the system font plus * 5px for marks and 6px for padding. * * Marks (primary and secondary) are computed based on font size and pixel per * second ratio. * * It listens to changes of the parent's horizontal GtkAdjustment and redraws * itself (scroll movements, size changes). * * The widget listens to the style-updated signal (e.g. changed font size, color) * and the state-flags-changed signal to update its height/color. * * The widget has a GTK_STYLE_CLASS_MARK and a name "ruler". */ #include "config.h" #define GETTEXT_PACKAGE GETTEXT_LIB #include #include "pt-waveviewer.h" #include "pt-waveviewer-ruler.h" #define PRIMARY_MARK_HEIGHT 8 #define SECONDARY_MARK_HEIGHT 4 struct _PtWaveviewerRulerPrivate { gint64 n_samples; gint px_per_sec; gint64 duration; /* in milliseconds */ GtkAdjustment *adj; /* the parent PtWaveviewer’s adjustment */ /* Ruler marks */ gboolean time_format_long; gint time_string_width; gint primary_modulo; gint secondary_modulo; }; G_DEFINE_TYPE_WITH_PRIVATE (PtWaveviewerRuler, pt_waveviewer_ruler, GTK_TYPE_DRAWING_AREA); static gint64 time_to_pixel (PtWaveviewerRuler *self, gint64 ms) { /* Convert a time in 1/1000 seconds to the closest pixel in the drawing area */ gint64 result; result = ms * self->priv->px_per_sec; result = result / 1000; return result; } static gint64 pixel_to_time (PtWaveviewerRuler *self, gint64 pixel) { /* Convert a position in the drawing area to time in milliseconds */ gint64 result; result = pixel * 1000; result = result / self->priv->px_per_sec; return result; } static gboolean pt_waveviewer_ruler_draw (GtkWidget *widget, cairo_t *cr) { PtWaveviewerRuler *self = (PtWaveviewerRuler *) widget; gint height = gtk_widget_get_allocated_height (widget); gint i; /* counter, pixel on x-axis in the view */ gint sample; /* sample in the array */ gchar *text; PangoLayout *layout; PangoRectangle rect; gint halfwidth; gint64 tmp_time; GtkStyleContext *context; GdkRGBA text_color; gint width; gint offset; width = gtk_widget_get_allocated_width (widget); offset = (gint) gtk_adjustment_get_value (self->priv->adj); context = gtk_widget_get_style_context (GTK_WIDGET (self)); gtk_render_background (context, cr, 0, 0, width, height); if (self->priv->n_samples == 0) return FALSE; /* ruler marks */ /* Case: secondary ruler marks for tenth seconds. Get time of leftmost pixel, convert it to rounded 10th second, add 10th seconds until we are at the end of the view */ if (self->priv->primary_modulo == 1) { tmp_time = pixel_to_time (self, offset) / 100 * 100; i = time_to_pixel (self, tmp_time) - offset; while (i <= width) { if (tmp_time < self->priv->duration) gtk_render_line (context, cr, i, 0, i, SECONDARY_MARK_HEIGHT); tmp_time += 100; i = time_to_pixel (self, tmp_time) - offset; } } /* Case: secondary ruler marks for full seconds. Use secondary_modulo. */ if (self->priv->primary_modulo > 1) { for (i = 0; i <= width; i += 1) { sample = i + offset; if (sample > self->priv->n_samples) break; if (sample % (self->priv->px_per_sec * self->priv->secondary_modulo) == 0) gtk_render_line (context, cr, i, 0, i, SECONDARY_MARK_HEIGHT); } } /* Primary marks and time strings Add some padding to show time strings (time_string_width) */ gtk_style_context_get_color (context, gtk_style_context_get_state (context), &text_color); gdk_cairo_set_source_rgba (cr, &text_color); for (i = 0 - self->priv->time_string_width; i <= width + self->priv->time_string_width; i += 1) { sample = i + offset; if (sample < 0 || sample > self->priv->n_samples) continue; if (sample % (self->priv->px_per_sec * self->priv->primary_modulo) == 0) { gtk_render_line (context, cr, i, 0, i, PRIMARY_MARK_HEIGHT); if (self->priv->time_format_long) { text = g_strdup_printf (C_("long time format", "%d:%02d:%02d"), sample/self->priv->px_per_sec / 3600, (sample/self->priv->px_per_sec % 3600) / 60, sample/self->priv->px_per_sec % 60); } else { text = g_strdup_printf (C_("shortest time format", "%d:%02d"), sample/self->priv->px_per_sec/60, sample/self->priv->px_per_sec % 60); } layout = gtk_widget_create_pango_layout (GTK_WIDGET (self), text); pango_cairo_update_layout (cr, layout); /* display timestring only if it is fully visible in drawing area */ pango_layout_get_pixel_extents (layout, &rect, NULL); halfwidth = rect.width / 2; if (i - halfwidth > 0 && i + halfwidth < width) { cairo_move_to (cr, i - halfwidth, /* center at mark */ height - rect.y - rect.height -3); /* +3 px above border */ pango_cairo_show_layout (cr, layout); } g_free (text); g_object_unref (layout); } } return FALSE; } static void calculate_height (PtWaveviewerRuler *self) { /* Calculate ruler height and time string width*/ cairo_t *cr; cairo_surface_t *surface; PangoLayout *layout; PangoRectangle rect; gchar *time_format; gint ruler_height; GdkWindow *window = NULL; window = gtk_widget_get_parent_window (GTK_WIDGET (self)); if (!window || self->priv->n_samples == 0) { gtk_widget_set_size_request (GTK_WIDGET (self), 0, 0); return; } surface = gdk_window_create_similar_surface (window, CAIRO_CONTENT_COLOR, 100, 100); cr = cairo_create (surface); self->priv->time_format_long = (self->priv->n_samples / self->priv->px_per_sec >= 3600); if (self->priv->time_format_long) time_format = g_strdup_printf (C_("long time format", "%d:%02d:%02d"), 88, 0, 0); else time_format = g_strdup_printf (C_("shortest time format", "%d:%02d"), 88, 0); layout = gtk_widget_create_pango_layout (GTK_WIDGET (self), time_format); pango_cairo_update_layout (cr, layout); pango_layout_get_pixel_extents (layout, &rect, NULL); /* Ruler height = font height + 3px padding below + 3px padding above + 5px for marks */ ruler_height = rect.y + rect.height + 3 + 3 + 5; /* Does the time string fit into 1 second? Define primary and secondary modulo (for primary and secondary marks */ self->priv->time_string_width = rect.x + rect.width; if (self->priv->time_string_width < self->priv->px_per_sec) { self->priv->primary_modulo = 1; /* In fact this would be 0.1, it’s handled later as a special case */ self->priv->secondary_modulo = 1; } else if (self->priv->time_string_width < self->priv->px_per_sec * 5) { self->priv->primary_modulo = 5; self->priv->secondary_modulo = 1; } else if (self->priv->time_string_width < self->priv->px_per_sec * 10) { self->priv->primary_modulo = 10; self->priv->secondary_modulo = 1; } else if (self->priv->time_string_width < self->priv->px_per_sec * 60) { self->priv->primary_modulo = 60; self->priv->secondary_modulo = 10; } else if (self->priv->time_string_width < self->priv->px_per_sec * 300) { self->priv->primary_modulo = 300; self->priv->secondary_modulo = 60; } else if (self->priv->time_string_width < self->priv->px_per_sec * 600) { self->priv->primary_modulo = 600; self->priv->secondary_modulo = 60; } else { self->priv->primary_modulo = 3600; self->priv->secondary_modulo = 600; } g_free (time_format); g_object_unref (layout); cairo_destroy (cr); cairo_surface_destroy (surface); gtk_widget_set_size_request (GTK_WIDGET (self), -1, ruler_height); } static void pt_waveviewer_ruler_style_updated (GtkWidget *widget) { PtWaveviewerRuler *self = PT_WAVEVIEWER_RULER (widget); GTK_WIDGET_CLASS (pt_waveviewer_ruler_parent_class)->style_updated (widget); calculate_height (self); gtk_widget_queue_draw (widget); } static void adj_value_changed (GtkAdjustment *adj, gpointer data) { PtWaveviewerRuler *self = PT_WAVEVIEWER_RULER (data); gtk_widget_queue_draw (GTK_WIDGET (self)); } static void pt_waveviewer_ruler_hierarchy_changed (GtkWidget *widget, GtkWidget *old_parent) { PtWaveviewerRuler *self = PT_WAVEVIEWER_RULER (widget); if (self->priv->adj) return; /* Get parent’s GtkAdjustment */ GtkWidget *parent = NULL; parent = gtk_widget_get_ancestor (widget, GTK_TYPE_SCROLLED_WINDOW); if (parent) { self->priv->adj = gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (parent)); g_signal_connect (self->priv->adj, "value-changed", G_CALLBACK (adj_value_changed), self); } } void pt_waveviewer_ruler_set_ruler (PtWaveviewerRuler *self, gint64 n_samples, gint px_per_sec, gint64 duration) { self->priv->n_samples = n_samples; self->priv->px_per_sec = px_per_sec; self->priv->duration = duration; calculate_height (self); gtk_widget_queue_draw (GTK_WIDGET (self)); } static void pt_waveviewer_ruler_init (PtWaveviewerRuler *self) { self->priv = pt_waveviewer_ruler_get_instance_private (self); GtkStyleContext *context; self->priv->n_samples = 0; self->priv->px_per_sec = 0; self->priv->duration = 0; self->priv->adj = NULL; gtk_widget_set_name (GTK_WIDGET (self), "ruler"); context = gtk_widget_get_style_context (GTK_WIDGET (self)); gtk_style_context_add_class (context, GTK_STYLE_CLASS_MARK); } static void pt_waveviewer_ruler_class_init (PtWaveviewerRulerClass *klass) { GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); widget_class->draw = pt_waveviewer_ruler_draw; widget_class->hierarchy_changed = pt_waveviewer_ruler_hierarchy_changed; widget_class->style_updated = pt_waveviewer_ruler_style_updated; } GtkWidget * pt_waveviewer_ruler_new (void) { return GTK_WIDGET (g_object_new (PT_TYPE_WAVEVIEWER_RULER, NULL)); } parlatype-3.0/libparlatype/src/pt-waveviewer-ruler.h000066400000000000000000000040261414030451500227400ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2017 * * 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 . */ #ifndef PT_WAVEVIEWER_RULER_H #define PT_WAVEVIEWER_RULER_H #include G_BEGIN_DECLS #define PT_TYPE_WAVEVIEWER_RULER (pt_waveviewer_ruler_get_type ()) #define PT_WAVEVIEWER_RULER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PT_TYPE_WAVEVIEWER_RULER, PtWaveviewerRuler)) #define PT_IS_WAVEVIEWER_RULER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PT_TYPE_WAVEVIEWER_RULER)) #define PT_WAVEVIEWER_RULER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PT_TYPE_WAVEVIEWER_RULER, PtWaveviewerRulerClass)) #define PT_IS_WAVEVIEWER_RULER_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((klass), PT_TYPE_WAVEVIEWER_RULER)) typedef struct _PtWaveviewerRuler PtWaveviewerRuler; typedef struct _PtWaveviewerRulerClass PtWaveviewerRulerClass; typedef struct _PtWaveviewerRulerPrivate PtWaveviewerRulerPrivate; struct _PtWaveviewerRuler { GtkDrawingArea parent; /*< private > */ PtWaveviewerRulerPrivate *priv; }; struct _PtWaveviewerRulerClass { GtkDrawingAreaClass klass; }; GType pt_waveviewer_ruler_get_type (void) G_GNUC_CONST; void pt_waveviewer_ruler_set_ruler (PtWaveviewerRuler *self, gint64 n_samples, gint px_per_sec, gint64 duration); GtkWidget *pt_waveviewer_ruler_new (void); G_END_DECLS #endif // PT_WAVEVIEWER_RULER_H parlatype-3.0/libparlatype/src/pt-waveviewer-scrollbox.c000066400000000000000000000163571414030451500236230ustar00rootroot00000000000000/* Copyright (C) 2020 Gabor Karsay * * 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 . */ /** * pt-waveviewer-scrollbox * Internal viewport widget for PtWaveviewer. * * This is a viewport that pretends to have children with the width of a fully * plotted waveform. A regular viewport would scroll its children to the * desired position, however, a fully plotted waveform would be too wide and * would not work with GTK 4 (it is possible in GTK 3 by clipping the drawing * area to the visible extents). * PtWaveviewerScrollbox doesn't do anything except creating a horizontal * GtkAdjustment. Notably it doesn't scroll its children. * * Use pt_waveviewer_scrollbox_set() and its parameter @width to set the fake * width of the children, that is the width of the fully plotted waveform. * * Most children (waveform, ruler, selection) get the parent's GtkAdjustment and * decide on their own what to show when there is a scroll event. * * The focus widget doesn't care about scroll events and shows a focus * indicator close to the viewport border. * * Only the cursor widget has to be constantly updated by PtWaveviewer. */ #include "config.h" #include "pt-waveviewer.h" #include "pt-waveviewer-scrollbox.h" struct _PtWaveviewerScrollboxPrivate { GtkAdjustment *adjustment; guint hscroll_policy : 1; gint fake_width; }; enum { PROP_0, PROP_HADJUSTMENT, PROP_VADJUSTMENT, PROP_HSCROLL_POLICY, PROP_VSCROLL_POLICY }; G_DEFINE_TYPE_WITH_CODE (PtWaveviewerScrollbox, pt_waveviewer_scrollbox, GTK_TYPE_BOX, G_ADD_PRIVATE (PtWaveviewerScrollbox) G_IMPLEMENT_INTERFACE (GTK_TYPE_SCROLLABLE, NULL)); static void pt_waveviewer_scrollbox_set_adjustment_values (PtWaveviewerScrollbox *self) { /* Set values depending on waveform array size */ GtkAllocation allocation; GtkAdjustment *adj = self->priv->adjustment; gtk_widget_get_allocation (GTK_WIDGET (self), &allocation); //g_print ("configure adjustment\n"); gtk_adjustment_configure (adj, gtk_adjustment_get_value (adj), 0.0, MAX (self->priv->fake_width, allocation.width), allocation.width * 0.2, allocation.width * 0.9, allocation.width); } static void scrollbox_set_adjustment (PtWaveviewerScrollbox *self, GtkAdjustment *adjustment) { if (adjustment && self->priv->adjustment == adjustment) /* same pointer or both NULL */ return; if (self->priv->adjustment != NULL) { g_signal_handlers_disconnect_matched ( self->priv->adjustment, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, self); g_object_unref (self->priv->adjustment); } if (!adjustment) adjustment = gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0); self->priv->adjustment = g_object_ref_sink (adjustment); pt_waveviewer_scrollbox_set_adjustment_values (self); g_object_notify (G_OBJECT (self), "hadjustment"); } void pt_waveviewer_scrollbox_set (PtWaveviewerScrollbox *self, gint width) { self->priv->fake_width = width; pt_waveviewer_scrollbox_set_adjustment_values (self); } static void pt_waveviewer_scrollbox_size_allocate (GtkWidget *widget, GtkAllocation *allocation) { GTK_WIDGET_CLASS (pt_waveviewer_scrollbox_parent_class)->size_allocate (widget, allocation); pt_waveviewer_scrollbox_set_adjustment_values (PT_WAVEVIEWER_SCROLLBOX (widget)); } static void pt_waveviewer_scrollbox_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { PtWaveviewerScrollbox *self = PT_WAVEVIEWER_SCROLLBOX (object); PtWaveviewerScrollboxPrivate *priv = self->priv; switch (property_id) { case PROP_HADJUSTMENT: g_value_set_object (value, priv->adjustment); break; case PROP_VADJUSTMENT: g_value_set_object (value, NULL); break; case PROP_HSCROLL_POLICY: g_value_set_enum (value, priv->hscroll_policy); break; case PROP_VSCROLL_POLICY: g_value_set_enum (value, 1); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void pt_waveviewer_scrollbox_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { PtWaveviewerScrollbox *self = PT_WAVEVIEWER_SCROLLBOX (object); PtWaveviewerScrollboxPrivate *priv = self->priv; switch (property_id) { case PROP_HADJUSTMENT: scrollbox_set_adjustment (self, g_value_get_object (value)); break; case PROP_VADJUSTMENT: /* there is no vadjustment */ break; case PROP_HSCROLL_POLICY: if (priv->hscroll_policy != g_value_get_enum (value)) { priv->hscroll_policy = g_value_get_enum (value); gtk_widget_queue_resize (GTK_WIDGET (self)); g_object_notify_by_pspec (object, pspec); } break; case PROP_VSCROLL_POLICY: /* there is no vadjustment */ break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void pt_waveviewer_scrollbox_destroy (GtkWidget *widget) { PtWaveviewerScrollbox *self = PT_WAVEVIEWER_SCROLLBOX (widget); PtWaveviewerScrollboxPrivate *priv = self->priv; g_clear_object (&priv->adjustment); GTK_WIDGET_CLASS (pt_waveviewer_scrollbox_parent_class)->destroy (widget); } static void pt_waveviewer_scrollbox_init (PtWaveviewerScrollbox *self) { self->priv = pt_waveviewer_scrollbox_get_instance_private (self); self->priv->adjustment = NULL; self->priv->fake_width = 0; gtk_widget_set_name (GTK_WIDGET (self), "scrollbox"); } static void pt_waveviewer_scrollbox_class_init (PtWaveviewerScrollboxClass *klass) { GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); GObjectClass *gobject_class = G_OBJECT_CLASS (klass); gobject_class->set_property = pt_waveviewer_scrollbox_set_property; gobject_class->get_property = pt_waveviewer_scrollbox_get_property; widget_class->destroy = pt_waveviewer_scrollbox_destroy; widget_class->size_allocate = pt_waveviewer_scrollbox_size_allocate; /* Implementation of GTK_SCROLLABLE */ g_object_class_override_property (gobject_class, PROP_HADJUSTMENT, "hadjustment"); g_object_class_override_property (gobject_class, PROP_VADJUSTMENT, "vadjustment"); g_object_class_override_property (gobject_class, PROP_HSCROLL_POLICY, "hscroll-policy"); g_object_class_override_property (gobject_class, PROP_VSCROLL_POLICY, "vscroll-policy"); } GtkWidget * pt_waveviewer_scrollbox_new (void) { return GTK_WIDGET (g_object_new (PT_TYPE_WAVEVIEWER_SCROLLBOX, "orientation", GTK_ORIENTATION_VERTICAL, NULL)); } parlatype-3.0/libparlatype/src/pt-waveviewer-scrollbox.h000066400000000000000000000037751414030451500236300ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2020 * * 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 . */ #ifndef PT_WAVEVIEWER_SCROLLBOX_H #define PT_WAVEVIEWER_SCROLLBOX_H #include G_BEGIN_DECLS #define PT_TYPE_WAVEVIEWER_SCROLLBOX (pt_waveviewer_scrollbox_get_type ()) #define PT_WAVEVIEWER_SCROLLBOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PT_TYPE_WAVEVIEWER_SCROLLBOX, PtWaveviewerScrollbox)) #define PT_IS_WAVEVIEWER_SCROLLBOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PT_TYPE_WAVEVIEWER_SCROLLBOX)) #define PT_WAVEVIEWER_SCROLLBOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PT_TYPE_WAVEVIEWER_SCROLLBOX, PtWaveviewerScrollboxClass)) #define PT_IS_WAVEVIEWER_SCROLLBOX_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((klass), PT_TYPE_WAVEVIEWER_SCROLLBOX)) typedef struct _PtWaveviewerScrollbox PtWaveviewerScrollbox; typedef struct _PtWaveviewerScrollboxClass PtWaveviewerScrollboxClass; typedef struct _PtWaveviewerScrollboxPrivate PtWaveviewerScrollboxPrivate; struct _PtWaveviewerScrollbox { GtkBox parent; /*< private > */ PtWaveviewerScrollboxPrivate *priv; }; struct _PtWaveviewerScrollboxClass { GtkBoxClass klass; }; GType pt_waveviewer_scrollbox_get_type (void) G_GNUC_CONST; void pt_waveviewer_scrollbox_set (PtWaveviewerScrollbox *self, gint width); GtkWidget *pt_waveviewer_scrollbox_new (void); G_END_DECLS #endif // PT_WAVEVIEWER_SCROLLBOX_H parlatype-3.0/libparlatype/src/pt-waveviewer-selection.c000066400000000000000000000140641414030451500235720ustar00rootroot00000000000000/* Copyright (C) 2017, 2020 Gabor Karsay * * 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 . */ /** * pt-waveviewer-selection * Internal widget that draws a selection for PtWaveviewer. * * PtWaveviewerSelection is part of a GtkOverlay stack, from bottom to top: * - PtWaveviewerWaveform * - PtWaveviewerSelection * - PtWaveviewerCursor * - PtWaveviewerFocus * * When it's added to PtWaveviewer, it gets the horizontal GtkAdjustment from * its parent (listening for the hierarchy-changed signal). * * pt_waveviewer_selection_set() is used to set (or remove) a selection. The * parameters @start and @end are the first and the last pixel of the selection * of a fully plotted waveform. The widget knows from the parent's GtkAdjustment * which portion of the waveform is currently shown and draws a selection box * if it is currently visible. To remove a selection set @start and @end to * the same value, e.g. zero. * * The widget has a style class "selection" that can be used to set its color * via CSS. */ #include "config.h" #include "pt-waveviewer.h" #include "pt-waveviewer-selection.h" struct _PtWaveviewerSelectionPrivate { GtkAdjustment *adj; /* the parent PtWaveviewer’s adjustment */ GdkRGBA selection_color; gint start; gint end; }; G_DEFINE_TYPE_WITH_PRIVATE (PtWaveviewerSelection, pt_waveviewer_selection, GTK_TYPE_DRAWING_AREA); static gboolean pt_waveviewer_selection_draw (GtkWidget *widget, cairo_t *cr) { PtWaveviewerSelection *self = (PtWaveviewerSelection *) widget; gint height; gint width; gint offset; gint left, right; height = gtk_widget_get_allocated_height (widget); width = gtk_widget_get_allocated_width (widget); offset = (gint) gtk_adjustment_get_value (self->priv->adj); left = CLAMP (self->priv->start - offset, 0, width); right = CLAMP (self->priv->end - offset, 0, width); if (left == right) return FALSE; gdk_cairo_set_source_rgba (cr, &self->priv->selection_color); cairo_rectangle (cr, left, 0, right - left, height); cairo_fill (cr); return FALSE; } static void update_cached_style_values (PtWaveviewerSelection *self) { /* Update color */ GtkStyleContext *context; GtkStateFlags state; GdkWindow *window = NULL; window = gtk_widget_get_parent_window (GTK_WIDGET (self)); if (!window) return; context = gtk_widget_get_style_context (GTK_WIDGET (self)); state = gtk_style_context_get_state (context); gtk_style_context_get_color (context, state, &self->priv->selection_color); } static void pt_waveviewer_selection_state_flags_changed (GtkWidget *widget, GtkStateFlags flags) { update_cached_style_values (PT_WAVEVIEWER_SELECTION (widget)); GTK_WIDGET_CLASS (pt_waveviewer_selection_parent_class)->state_flags_changed (widget, flags); } static void pt_waveviewer_selection_style_updated (GtkWidget *widget) { PtWaveviewerSelection *self = (PtWaveviewerSelection *) widget; GTK_WIDGET_CLASS (pt_waveviewer_selection_parent_class)->style_updated (widget); update_cached_style_values (self); gtk_widget_queue_draw (GTK_WIDGET (self)); } static void pt_waveviewer_selection_realize (GtkWidget *widget) { GTK_WIDGET_CLASS (pt_waveviewer_selection_parent_class)->realize (widget); update_cached_style_values (PT_WAVEVIEWER_SELECTION (widget)); } static void adj_value_changed (GtkAdjustment *adj, gpointer data) { PtWaveviewerSelection *self = PT_WAVEVIEWER_SELECTION (data); gtk_widget_queue_draw (GTK_WIDGET (self)); } static void pt_waveviewer_selection_hierarchy_changed (GtkWidget *widget, GtkWidget *old_parent) { /* When added as a child to the PtWaveviewer, get its horizontal * GtkAdjustment */ PtWaveviewerSelection *self = PT_WAVEVIEWER_SELECTION (widget); GtkWidget *parent = NULL; if (self->priv->adj) return; parent = gtk_widget_get_ancestor (widget, GTK_TYPE_SCROLLED_WINDOW); if (!parent) return; self->priv->adj = gtk_scrolled_window_get_hadjustment ( GTK_SCROLLED_WINDOW (parent)); g_signal_connect (self->priv->adj, "value-changed", G_CALLBACK (adj_value_changed), self); } void pt_waveviewer_selection_set (PtWaveviewerSelection *self, gint start, gint end) { self->priv->start = start; self->priv->end = end; gtk_widget_queue_draw (GTK_WIDGET (self)); } static void pt_waveviewer_selection_init (PtWaveviewerSelection *self) { self->priv = pt_waveviewer_selection_get_instance_private (self); GtkStyleContext *context; self->priv->start = 0; self->priv->end = 0; self->priv->adj = NULL; context = gtk_widget_get_style_context (GTK_WIDGET (self)); gtk_style_context_add_class (context, "selection"); gtk_widget_set_events (GTK_WIDGET (self), GDK_ALL_EVENTS_MASK); } static void pt_waveviewer_selection_class_init (PtWaveviewerSelectionClass *klass) { GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); widget_class->draw = pt_waveviewer_selection_draw; widget_class->hierarchy_changed = pt_waveviewer_selection_hierarchy_changed; widget_class->realize = pt_waveviewer_selection_realize; widget_class->state_flags_changed = pt_waveviewer_selection_state_flags_changed; widget_class->style_updated = pt_waveviewer_selection_style_updated; } GtkWidget * pt_waveviewer_selection_new (void) { return GTK_WIDGET (g_object_new (PT_TYPE_WAVEVIEWER_SELECTION, NULL)); } parlatype-3.0/libparlatype/src/pt-waveviewer-selection.h000066400000000000000000000040621414030451500235740ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2017 * * 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 . */ #ifndef PT_WAVEVIEWER_SELECTION_H #define PT_WAVEVIEWER_SELECTION_H #include G_BEGIN_DECLS #define PT_TYPE_WAVEVIEWER_SELECTION (pt_waveviewer_selection_get_type ()) #define PT_WAVEVIEWER_SELECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PT_TYPE_WAVEVIEWER_SELECTION, PtWaveviewerSelection)) #define PT_IS_WAVEVIEWER_SELECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PT_TYPE_WAVEVIEWER_SELECTION)) #define PT_WAVEVIEWER_SELECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PT_TYPE_WAVEVIEWER_SELECTION, PtWaveviewerSelectionClass)) #define PT_IS_WAVEVIEWER_SELECTION_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((klass), PT_TYPE_WAVEVIEWER_SELECTION)) typedef struct _PtWaveviewerSelection PtWaveviewerSelection; typedef struct _PtWaveviewerSelectionClass PtWaveviewerSelectionClass; typedef struct _PtWaveviewerSelectionPrivate PtWaveviewerSelectionPrivate; struct _PtWaveviewerSelection { GtkDrawingArea parent; /*< private > */ PtWaveviewerSelectionPrivate *priv; }; struct _PtWaveviewerSelectionClass { GtkDrawingAreaClass klass; }; GType pt_waveviewer_selection_get_type (void) G_GNUC_CONST; void pt_waveviewer_selection_set (PtWaveviewerSelection *self, gint start, gint end); GtkWidget *pt_waveviewer_selection_new (void); G_END_DECLS #endif // PT_WAVEVIEWER_SELECTION_H parlatype-3.0/libparlatype/src/pt-waveviewer-waveform.c000066400000000000000000000151761414030451500234400ustar00rootroot00000000000000/* Copyright (C) 2017, 2020 Gabor Karsay * * 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 . */ /** * pt-waveviewer-waveform * Internal widget that draws the waveform for PtWaveviewer. * * PtWaveviewerCursor is part of a GtkOverlay stack, from bottom to top: * - PtWaveviewerWaveform * - PtWaveviewerSelection * - PtWaveviewerCursor * - PtWaveviewerFocus * * When it's added to PtWaveviewer, it gets the horizontal GtkAdjustment from * its parent (listening for the hierarchy-changed signal). * * pt_waveviewer_waveform_set() is used to pass an array with data to the * widget. * * It listens to changes of the parent's horizontal GtkAdjustment and redraws * itself (scroll movements, size changes). * * The widget listens to the style-updated signal and the state-flags-changed * signal to update its color. * * The widget has the GTK_STYLE_CLASS_VIEW to paint the waveform. */ #include "config.h" #include "pt-waveviewer.h" #include "pt-waveviewer-waveform.h" struct _PtWaveviewerWaveformPrivate { /* Wavedata */ GArray *peaks; GtkAdjustment *adj; /* the parent PtWaveviewer’s adjustment */ /* Rendering */ GdkRGBA wave_color; }; G_DEFINE_TYPE_WITH_PRIVATE (PtWaveviewerWaveform, pt_waveviewer_waveform, GTK_TYPE_DRAWING_AREA); static gint64 pixel_to_array (PtWaveviewerWaveform *self, gint64 pixel) { /* Convert a position in the drawing area to an index in the peaks array. The returned index is the peak’s min value, +1 is the max value. If the array would be exceeded, return -1 */ gint64 result; result = pixel * 2; if (result + 1 >= self->priv->peaks->len) result = -1; return result; } static gboolean pt_waveviewer_waveform_draw (GtkWidget *widget, cairo_t *cr) { PtWaveviewerWaveform *self = (PtWaveviewerWaveform *) widget; GArray *peaks = self->priv->peaks; GtkStyleContext *context; gint pixel; gint array; gdouble min, max; gint width, height, offset; gint half, middle; context = gtk_widget_get_style_context (widget); height = gtk_widget_get_allocated_height (widget); width = gtk_widget_get_allocated_width (widget); gtk_render_background (context, cr, 0, 0, width, height); if (peaks == NULL || peaks->len == 0) return FALSE; /* paint waveform */ offset = (gint) gtk_adjustment_get_value (self->priv->adj); half = height / 2 - 1; middle = height / 2; gdk_cairo_set_source_rgba (cr, &self->priv->wave_color); for (pixel = 0; pixel <= width; pixel += 1) { array = pixel_to_array (self, pixel + offset); if (array == -1) break; min = (middle + half * g_array_index (peaks, float, array) * -1); max = (middle - half * g_array_index (peaks, float, array + 1)); cairo_move_to (cr, pixel, min); cairo_line_to (cr, pixel, max); /* cairo_stroke also possible after loop, but then slower */ cairo_stroke (cr); } return FALSE; } static void update_cached_style_values (PtWaveviewerWaveform *self) { /* Update color */ GtkStyleContext *context; GtkStateFlags state; GdkWindow *window = NULL; window = gtk_widget_get_parent_window (GTK_WIDGET (self)); if (!window) return; context = gtk_widget_get_style_context (GTK_WIDGET (self)); state = gtk_style_context_get_state (context); gtk_style_context_get_color (context, state, &self->priv->wave_color); } static void pt_waveviewer_waveform_state_flags_changed (GtkWidget *widget, GtkStateFlags flags) { update_cached_style_values (PT_WAVEVIEWER_WAVEFORM (widget)); GTK_WIDGET_CLASS (pt_waveviewer_waveform_parent_class)->state_flags_changed (widget, flags); } static void pt_waveviewer_waveform_style_updated (GtkWidget *widget) { PtWaveviewerWaveform *self = (PtWaveviewerWaveform *) widget; GTK_WIDGET_CLASS (pt_waveviewer_waveform_parent_class)->style_updated (widget); update_cached_style_values (self); gtk_widget_queue_draw (GTK_WIDGET (self)); } static void pt_waveviewer_waveform_realize (GtkWidget *widget) { GTK_WIDGET_CLASS (pt_waveviewer_waveform_parent_class)->realize (widget); update_cached_style_values (PT_WAVEVIEWER_WAVEFORM (widget)); } void pt_waveviewer_waveform_set (PtWaveviewerWaveform *self, GArray *peaks) { self->priv->peaks = peaks; gtk_widget_queue_draw (GTK_WIDGET (self)); } static void adj_value_changed (GtkAdjustment *adj, gpointer data) { PtWaveviewerWaveform *self = PT_WAVEVIEWER_WAVEFORM (data); gtk_widget_queue_draw (GTK_WIDGET (self)); } static void pt_waveviewer_waveform_hierarchy_changed (GtkWidget *widget, GtkWidget *old_parent) { PtWaveviewerWaveform *self = PT_WAVEVIEWER_WAVEFORM (widget); if (self->priv->adj) return; /* Get parent’s GtkAdjustment */ GtkWidget *parent = NULL; parent = gtk_widget_get_ancestor (widget, GTK_TYPE_SCROLLED_WINDOW); if (parent) { self->priv->adj = gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (parent)); g_signal_connect (self->priv->adj, "value-changed", G_CALLBACK (adj_value_changed), self); } } static void pt_waveviewer_waveform_init (PtWaveviewerWaveform *self) { self->priv = pt_waveviewer_waveform_get_instance_private (self); GtkStyleContext *context; self->priv->peaks = NULL; context = gtk_widget_get_style_context (GTK_WIDGET (self)); gtk_style_context_add_class (context, GTK_STYLE_CLASS_VIEW); gtk_widget_set_events (GTK_WIDGET (self), GDK_ALL_EVENTS_MASK); } static void pt_waveviewer_waveform_class_init (PtWaveviewerWaveformClass *klass) { GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); widget_class->draw = pt_waveviewer_waveform_draw; widget_class->hierarchy_changed = pt_waveviewer_waveform_hierarchy_changed; widget_class->realize = pt_waveviewer_waveform_realize; widget_class->state_flags_changed = pt_waveviewer_waveform_state_flags_changed; widget_class->style_updated = pt_waveviewer_waveform_style_updated; } GtkWidget * pt_waveviewer_waveform_new (void) { return GTK_WIDGET (g_object_new (PT_TYPE_WAVEVIEWER_WAVEFORM, NULL)); } parlatype-3.0/libparlatype/src/pt-waveviewer-waveform.h000066400000000000000000000037561414030451500234460ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2017 * * 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 . */ #ifndef PT_WAVEVIEWER_WAVEFORM_H #define PT_WAVEVIEWER_WAVEFORM_H #include G_BEGIN_DECLS #define PT_TYPE_WAVEVIEWER_WAVEFORM (pt_waveviewer_waveform_get_type ()) #define PT_WAVEVIEWER_WAVEFORM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PT_TYPE_WAVEVIEWER_WAVEFORM, PtWaveviewerWaveform)) #define PT_IS_WAVEVIEWER_WAVEFORM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PT_TYPE_WAVEVIEWER_WAVEFORM)) #define PT_WAVEVIEWER_WAVEFORM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PT_TYPE_WAVEVIEWER_WAVEFORM, PtWaveviewerWaveformClass)) #define PT_IS_WAVEVIEWER_WAVEFORM_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((klass), PT_TYPE_WAVEVIEWER_WAVEFORM)) typedef struct _PtWaveviewerWaveform PtWaveviewerWaveform; typedef struct _PtWaveviewerWaveformClass PtWaveviewerWaveformClass; typedef struct _PtWaveviewerWaveformPrivate PtWaveviewerWaveformPrivate; struct _PtWaveviewerWaveform { GtkDrawingArea parent; /*< private > */ PtWaveviewerWaveformPrivate *priv; }; struct _PtWaveviewerWaveformClass { GtkDrawingAreaClass klass; }; GType pt_waveviewer_waveform_get_type (void) G_GNUC_CONST; void pt_waveviewer_waveform_set (PtWaveviewerWaveform *self, GArray *peaks); GtkWidget *pt_waveviewer_waveform_new (void); G_END_DECLS #endif // PT_WAVEVIEWER_WAVEFORM_H parlatype-3.0/libparlatype/src/pt-waveviewer.c000066400000000000000000001302361414030451500216070ustar00rootroot00000000000000/* Copyright (C) 2006-2008 Buzztrax team * Copyright (C) 2002 2003 2004 2005 2007 2008 2009 2010, Magnus Hjorth * Copyright (C) 2016, 2020 Gabor Karsay * * Original source name waveform-viewer.c, taken from Buzztrax and heavily * modified. Original source licenced under LGPL 2 or later. * * Small bits of selection stuff taken from mhWaveEdit 1.4.23 (Magnus Hjorth) * in files src/chunkview.c and src/document.c. Original source licenced under * GPL 2 or later. * * 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 . */ /** * SECTION: pt-waveviewer * @short_description: A GtkWidget to display a waveform. * @stability: Stable * @include: parlatype/pt-waveviewer.h * * Displays a waveform and lets the user interact with it: jumping to a position, * make selections and so on. */ #include "config.h" #include /* fabs */ #include #define GETTEXT_PACKAGE GETTEXT_LIB #include #include "pt-marshalers.h" #include "pt-waveloader.h" #include "pt-waveviewer-ruler.h" #include "pt-waveviewer-waveform.h" #include "pt-waveviewer-scrollbox.h" #include "pt-waveviewer-selection.h" #include "pt-waveviewer-cursor.h" #include "pt-waveviewer-focus.h" #include "pt-waveviewer.h" #define ALL_ACCELS_MASK (GDK_CONTROL_MASK | GDK_SHIFT_MASK | GDK_MOD1_MASK) #define CURSOR_POSITION 0.5 #define WAVE_MIN_HEIGHT 20 struct _PtWaveviewerPrivate { /* Wavedata */ PtWaveloader *loader; GArray *peaks; gint64 peaks_size; /* size of array */ gint px_per_sec; gint64 duration; /* in milliseconds */ /* Properties */ gint64 playback_cursor; gboolean follow_cursor; gboolean fixed_cursor; gboolean show_ruler; gboolean has_selection; gint pps; gint64 zoom_time; gint zoom_pos; /* Selections, in milliseconds */ gint64 sel_start; gint64 sel_end; gint64 dragstart; gint64 dragend; GdkCursor *arrows; GtkAdjustment *adj; gboolean focus_on_cursor; /* Subwidgets */ GtkWidget *scrollbox; GtkWidget *overlay; GtkWidget *waveform; GtkWidget *revealer; GtkWidget *ruler; GtkWidget *focus; GtkWidget *cursor; GtkWidget *selection; /* Event handling */ GtkGesture *button; #if GTK_CHECK_VERSION(3,24,0) GtkEventController *motion_ctrl; #endif guint tick_handler; }; enum { PROP_0, PROP_PLAYBACK_CURSOR, PROP_FOLLOW_CURSOR, PROP_FIXED_CURSOR, PROP_SHOW_RULER, PROP_HAS_SELECTION, PROP_SELECTION_START, PROP_SELECTION_END, PROP_PPS, N_PROPERTIES }; enum { CURSOR_CHANGED, FOLLOW_CURSOR_CHANGED, SELECTION_CHANGED, PLAY_TOGGLED, ZOOM_IN, ZOOM_OUT, LAST_SIGNAL }; static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, }; static guint signals[LAST_SIGNAL] = { 0 }; G_DEFINE_TYPE_WITH_PRIVATE (PtWaveviewer, pt_waveviewer, GTK_TYPE_SCROLLED_WINDOW); static gint64 time_to_pixel (PtWaveviewer *self, gint64 ms) { /* Convert a time in 1/1000 seconds to the closest pixel in the drawing area */ gint64 result; result = ms * self->priv->px_per_sec; result = result / 1000; return result; } static gint64 pixel_to_time (PtWaveviewer *self, gint64 pixel) { /* Convert a position in the drawing area to time in milliseconds */ gint64 result; result = pixel * 1000; result = result / self->priv->px_per_sec; return result; } static void scroll_to_cursor (PtWaveviewer *self) { gint cursor_pos; gint first_visible; gint last_visible; gint page_width; gint offset; cursor_pos = time_to_pixel (self, self->priv->playback_cursor); first_visible = (gint) gtk_adjustment_get_value (self->priv->adj); page_width = (gint) gtk_adjustment_get_page_size (self->priv->adj); last_visible = first_visible + page_width; /* Fixed cursor: always scroll, non-fixed cursor: only scroll if cursor is not visible */ if (self->priv->fixed_cursor) { offset = page_width * CURSOR_POSITION; gtk_adjustment_set_value (self->priv->adj, cursor_pos - offset); } else { if (cursor_pos < first_visible || cursor_pos > last_visible) { /* cursor visible far left */ gtk_adjustment_set_value (self->priv->adj, cursor_pos); } } } static void render_cursor (PtWaveviewer *self) { PtWaveviewerCursor *cursor; gint offset, pixel; cursor = PT_WAVEVIEWER_CURSOR (self->priv->cursor); offset = gtk_adjustment_get_value (self->priv->adj); pixel = time_to_pixel (self, self->priv->playback_cursor); pt_waveviewer_cursor_render (cursor, pixel - offset); } static gint64 calculate_duration (PtWaveviewer *self) { gint64 result; gint64 samples; gint one_pixel; one_pixel = 1000 / self->priv->px_per_sec; samples = self->priv->peaks_size / 2; result = samples / self->priv->px_per_sec * 1000; /* = full seconds */ result += (samples % self->priv->px_per_sec) * one_pixel; return result; } static gint64 add_subtract_time (PtWaveviewer *self, gint pixel, gboolean stay_in_selection) { /* add time to the cursor’s time so that the cursor is moved x pixels */ gint64 result; gint one_pixel; one_pixel = 1000 / self->priv->px_per_sec; result = self->priv->playback_cursor + pixel * one_pixel; /* Return result in range */ if (stay_in_selection) return CLAMP (result, self->priv->sel_start, self->priv->sel_end); else return CLAMP (result, 0, self->priv->duration); } static void update_selection (PtWaveviewer *self) { /* Check if drag positions are different from selection. If yes, set new selection, emit signals and redraw widget. */ gboolean changed = FALSE; PtWaveviewerSelection *sel_widget = PT_WAVEVIEWER_SELECTION (self->priv->selection); /* Is anything selected at all? */ if (self->priv->dragstart == self->priv->dragend) { self->priv->sel_start = 0; self->priv->sel_end = 0; if (self->priv->has_selection) { self->priv->has_selection = FALSE; g_object_notify_by_pspec (G_OBJECT (self), obj_properties[PROP_HAS_SELECTION]); g_signal_emit_by_name (self, "selection-changed"); pt_waveviewer_selection_set (sel_widget, 0, 0); } return; } /* Don’t select too much */ self->priv->dragstart = CLAMP (self->priv->dragstart, 0, self->priv->duration); self->priv->dragend = CLAMP (self->priv->dragend, 0, self->priv->duration); /* Sort start/end, check for changes (no changes on vertical movement), update selection */ if (self->priv->dragstart < self->priv->dragend) { if (self->priv->sel_start != self->priv->dragstart || self->priv->sel_end != self->priv->dragend) { self->priv->sel_start = self->priv->dragstart; self->priv->sel_end = self->priv->dragend; changed = TRUE; } } else { if (self->priv->sel_start != self->priv->dragend || self->priv->sel_end != self->priv->dragstart) { self->priv->sel_start = self->priv->dragend; self->priv->sel_end = self->priv->dragstart; changed = TRUE; } } if (changed) { /* Update has-selection property */ if (!self->priv->has_selection) { self->priv->has_selection = TRUE; g_object_notify_by_pspec (G_OBJECT (self), obj_properties[PROP_HAS_SELECTION]); } g_signal_emit_by_name (self, "selection-changed"); pt_waveviewer_selection_set (sel_widget, time_to_pixel (self, self->priv->sel_start), time_to_pixel (self, self->priv->sel_end)); } } static gboolean pt_waveviewer_key_press_event (GtkWidget *widget, GdkEventKey *event) { PtWaveviewer *self = PT_WAVEVIEWER (widget); GdkModifierType state; guint keyval; if (gdk_event_get_event_type ((GdkEvent*) event) != GDK_KEY_PRESS) return FALSE; if (self->priv->peaks->len == 0) return FALSE; gdk_event_get_state ((GdkEvent*) event, &state); gdk_event_get_keyval ((GdkEvent*) event, &keyval); /* no modifier pressed */ if (!(state & ALL_ACCELS_MASK)) { switch (keyval) { case GDK_KEY_Escape: self->priv->dragstart = self->priv->dragend = 0; update_selection (self); return TRUE; case GDK_KEY_space: g_signal_emit_by_name (self, "play-toggled"); return TRUE; } } if (self->priv->focus_on_cursor) { /* no modifier pressed */ if (!(state & ALL_ACCELS_MASK)) { switch (keyval) { case GDK_KEY_Left: g_signal_emit_by_name (self, "cursor-changed", add_subtract_time (self, -2, FALSE)); return TRUE; case GDK_KEY_Right: g_signal_emit_by_name (self, "cursor-changed", add_subtract_time (self, 2, FALSE)); return TRUE; case GDK_KEY_Page_Up: g_signal_emit_by_name (self, "cursor-changed", add_subtract_time (self, -20, FALSE)); return TRUE; case GDK_KEY_Page_Down: g_signal_emit_by_name (self, "cursor-changed", add_subtract_time (self, 20, FALSE)); return TRUE; case GDK_KEY_Home: g_signal_emit_by_name (self, "cursor-changed", 0); return TRUE; case GDK_KEY_End: g_signal_emit_by_name (self, "cursor-changed", self->priv->duration); return TRUE; } } /* Only Control is pressed, not together with Shift or Alt Here we override the default horizontal scroll bindings */ else if ((state & ALL_ACCELS_MASK) == GDK_CONTROL_MASK) { switch (keyval) { case GDK_KEY_Left: g_signal_emit_by_name (self, "cursor-changed", add_subtract_time (self, -2, TRUE)); return TRUE; case GDK_KEY_Right: g_signal_emit_by_name (self, "cursor-changed", add_subtract_time (self, 2, TRUE)); return TRUE; case GDK_KEY_Page_Up: g_signal_emit_by_name (self, "cursor-changed", add_subtract_time (self, -20, TRUE)); return TRUE; case GDK_KEY_Page_Down: g_signal_emit_by_name (self, "cursor-changed", add_subtract_time (self, 20, TRUE)); return TRUE; case GDK_KEY_Home: g_signal_emit_by_name (self, "cursor-changed", self->priv->sel_start); return TRUE; case GDK_KEY_End: g_signal_emit_by_name (self, "cursor-changed", self->priv->sel_end); return TRUE; } } } else { /* No modifier pressed: Scroll window, depending on text direction */ if (!(state & ALL_ACCELS_MASK)) { GtkScrollType scroll = GTK_SCROLL_NONE; switch (keyval) { case GDK_KEY_Left: scroll = GTK_SCROLL_STEP_BACKWARD; break; case GDK_KEY_Right: scroll = GTK_SCROLL_STEP_FORWARD; break; case GDK_KEY_Page_Up: scroll = GTK_SCROLL_PAGE_BACKWARD; break; case GDK_KEY_Page_Down: scroll = GTK_SCROLL_PAGE_FORWARD; break; case GDK_KEY_Home: scroll = GTK_SCROLL_START; break; case GDK_KEY_End: scroll = GTK_SCROLL_END; break; } if (scroll != GTK_SCROLL_NONE) { gboolean ret; g_signal_emit_by_name (self, "scroll-child", scroll, TRUE, &ret); pt_waveviewer_set_follow_cursor (self, FALSE); return TRUE; } } } return FALSE; } static gboolean pointer_in_range (PtWaveviewer *self, gdouble pointer, gint64 pos) { /* Returns TRUE if @pointer (event->x) is not more than 3 pixels away from @pos */ return (fabs (pointer - (double) time_to_pixel (self, pos)) < 3.0); } static void set_cursor (GtkWidget *widget, GdkCursor *cursor) { GdkWindow *gdkwin; gdkwin = gtk_widget_get_window (widget); gdk_window_set_cursor (gdkwin, cursor); } static gboolean pt_waveviewer_button_press_event (GtkGestureMultiPress *gesture, gint n_press, gdouble x, gdouble y, gpointer user_data) { PtWaveviewer *self = PT_WAVEVIEWER (user_data); GdkModifierType state; guint button; gint64 clicked; /* the sample clicked on */ gint64 pos; /* clicked sample’s position in milliseconds */ if (self->priv->peaks == NULL || self->priv->peaks->len == 0) return FALSE; if (!gtk_get_current_event_state (&state)) return FALSE; button = gtk_gesture_single_get_current_button (GTK_GESTURE_SINGLE (gesture)); clicked = (gint) x; pos = pixel_to_time (self, clicked + gtk_adjustment_get_value (self->priv->adj)); /* Single left click, no other keys pressed: new selection or changing selection */ if (n_press == 1 && button == GDK_BUTTON_PRIMARY && !(state & ALL_ACCELS_MASK)) { /* set position as start and end point, for new selection */ self->priv->dragstart = self->priv->dragend = pos; /* if over selection border: snap to selection border, changing selection */ if (pointer_in_range (self, x + gtk_adjustment_get_value (self->priv->adj), self->priv->sel_start)) { self->priv->dragstart = self->priv->sel_end; self->priv->dragend = self->priv->sel_start; } else if (pointer_in_range (self, x + gtk_adjustment_get_value (self->priv->adj), self->priv->sel_end)) { self->priv->dragstart = self->priv->sel_start; self->priv->dragend = self->priv->sel_end; } set_cursor (GTK_WIDGET (self), self->priv->arrows); update_selection (self); return TRUE; } /* Single left click with Shift pressed and existing selection: enlarge selection */ if (n_press == 1 && button == GDK_BUTTON_PRIMARY && (state & ALL_ACCELS_MASK) == GDK_SHIFT_MASK && self->priv->sel_start != self->priv->sel_end) { self->priv->dragend = pos; if (pos < self->priv->sel_start) self->priv->dragstart = self->priv->sel_end; else self->priv->dragstart = self->priv->sel_start; set_cursor (GTK_WIDGET (self), self->priv->arrows); update_selection (self); return TRUE; } /* Single right click: change cursor */ if (n_press == 1 && button == GDK_BUTTON_SECONDARY) { g_signal_emit_by_name (self, "cursor-changed", pos); return TRUE; } return FALSE; } static gboolean pt_waveviewer_scroll_event (GtkWidget *widget, GdkEventScroll *event) { PtWaveviewer *self = PT_WAVEVIEWER (widget); GdkModifierType state; gdouble delta_x; gdouble delta_y; gdk_event_get_state ((GdkEvent*) event, &state); gdk_event_get_scroll_deltas ((GdkEvent*) event, &delta_x, &delta_y); /* No modifier pressed: scrolling back and forth */ if (!(state & ALL_ACCELS_MASK)) { gtk_propagate_event (gtk_scrolled_window_get_hscrollbar (GTK_SCROLLED_WINDOW (widget)), (GdkEvent*)event); return TRUE; } /* Only Control pressed: zoom in or out TODO handle this internally without signals*/ if ((state & ALL_ACCELS_MASK) == GDK_CONTROL_MASK) { if (delta_y < 0 || delta_x < 0) { g_signal_emit_by_name (self, "zoom-out"); return TRUE; } if (delta_y > 0 || delta_x > 0) { g_signal_emit_by_name (self, "zoom-in"); return TRUE; } } return FALSE; } static gboolean #if GTK_CHECK_VERSION(3,24,0) pt_waveviewer_motion_event (GtkEventControllerMotion *ctrl, gdouble x, gdouble y, gpointer user_data) { PtWaveviewer *self = PT_WAVEVIEWER (user_data); GdkModifierType state; gtk_get_current_event_state (&state); #else pt_waveviewer_motion_notify_event (GtkWidget *widget, GdkEventMotion *event) { PtWaveviewer *self = PT_WAVEVIEWER (widget); GdkModifierType state; gdouble x; gdk_event_get_state ((GdkEvent*) event, &state); gdk_event_get_coords ((GdkEvent*) event, &x, NULL); #endif gint64 clicked; /* the sample clicked on */ gint64 pos; /* clicked sample’s position in milliseconds */ if (self->priv->peaks == NULL || self->priv->peaks->len == 0) return FALSE; clicked = (gint) x; pos = pixel_to_time (self, clicked + gtk_adjustment_get_value (self->priv->adj)); /* Right mouse button sets cursor */ if (state & GDK_BUTTON3_MASK) { g_signal_emit_by_name (self, "cursor-changed", pos); return TRUE; } /* Left mouse button (with or without Shift key) sets selection */ if (state & GDK_BUTTON1_MASK || state & GDK_BUTTON1_MASK & GDK_SHIFT_MASK) { self->priv->dragend = pos; update_selection (self); return TRUE; } /* No button or any other button: change pointer cursor over selection border */ if (self->priv->sel_start != self->priv->sel_end) { if (pointer_in_range (self, x + gtk_adjustment_get_value (self->priv->adj), self->priv->sel_start) || pointer_in_range (self, x + gtk_adjustment_get_value (self->priv->adj), self->priv->sel_end)) { set_cursor (GTK_WIDGET (self), self->priv->arrows); } else { set_cursor (GTK_WIDGET (self), NULL); } } return FALSE; } static gboolean pt_waveviewer_button_release_event (GtkGestureMultiPress *gesture, gint n_press, gdouble x, gdouble y, gpointer user_data) { guint button; button = gtk_gesture_single_get_current_button (GTK_GESTURE_SINGLE (gesture)); if (n_press == 1 && button == GDK_BUTTON_PRIMARY) { set_cursor (GTK_WIDGET (user_data), NULL); return TRUE; } return FALSE; } static void stop_following_cursor (PtWaveviewer *self) { if (self->priv->peaks) pt_waveviewer_set_follow_cursor (self, FALSE); } static gboolean scrollbar_button_press_event_cb (GtkWidget *widget, GdkEventButton *event, gpointer data) { /* If user clicks on scrollbar don’t follow cursor anymore. Otherwise it would scroll immediately back again. */ stop_following_cursor (PT_WAVEVIEWER (data)); /* Propagate signal */ return FALSE; } static gboolean scrollbar_scroll_event_cb (GtkWidget *widget, GdkEventButton *event, gpointer data) { /* If user scrolls on scrollbar don’t follow cursor anymore. Otherwise it would scroll immediately back again. */ stop_following_cursor (PT_WAVEVIEWER (data)); /* Propagate signal */ return FALSE; } static void focus_cursor (PtWaveviewer *self) { self->priv->focus_on_cursor = TRUE; pt_waveviewer_cursor_set_focus (PT_WAVEVIEWER_CURSOR (self->priv->cursor), TRUE); pt_waveviewer_focus_set (PT_WAVEVIEWER_FOCUS (self->priv->focus), FALSE); } static void focus_widget (PtWaveviewer *self) { self->priv->focus_on_cursor = FALSE; pt_waveviewer_cursor_set_focus (PT_WAVEVIEWER_CURSOR (self->priv->cursor), FALSE); pt_waveviewer_focus_set (PT_WAVEVIEWER_FOCUS (self->priv->focus), TRUE); } static void focus_lost (PtWaveviewer *self) { self->priv->focus_on_cursor = FALSE; pt_waveviewer_cursor_set_focus (PT_WAVEVIEWER_CURSOR (self->priv->cursor), FALSE); pt_waveviewer_focus_set (PT_WAVEVIEWER_FOCUS (self->priv->focus), FALSE); } static gboolean pt_waveviewer_focus_out_event (GtkWidget *widget, GdkEvent *event, gpointer data) { focus_lost (PT_WAVEVIEWER (widget)); return FALSE; } static gboolean pt_waveviewer_focus_in_event (GtkWidget *widget, GdkEvent *event, gpointer data) { PtWaveviewer *self = PT_WAVEVIEWER (widget); if (!self->priv->focus_on_cursor && self->priv->peaks->len > 0) focus_widget (self); return FALSE; } static gboolean pt_waveviewer_focus (GtkWidget *widget, GtkDirectionType direction, gpointer data) { PtWaveviewer *self = PT_WAVEVIEWER (widget); /* See API reference for gtk_widget_child_focus (): If moving into @direction would move focus outside of widget: return FALSE; If moving into @direction would stay inside widget: return TRUE */ /* Don’t focus if empty */ if (self->priv->peaks == NULL || self->priv->peaks->len == 0) return FALSE; /* Focus chain forward: no-focus -> focus-whole-widget -> focus-cursor -> no-focus */ if (gtk_widget_has_focus (widget)) { /* We have already focus, decide whether to stay in focus or not */ if (direction == GTK_DIR_TAB_FORWARD || direction == GTK_DIR_DOWN) { if (self->priv->focus_on_cursor) { focus_lost (self); } else { focus_cursor (self); return TRUE; } } if (direction == GTK_DIR_TAB_BACKWARD || direction == GTK_DIR_UP) { if (self->priv->focus_on_cursor) { focus_widget (self); return TRUE; } else { focus_lost (self); } } } else { /* We had no focus before, decide which part to focus on */ if (direction == GTK_DIR_TAB_FORWARD || direction == GTK_DIR_DOWN || direction == GTK_DIR_RIGHT) { focus_widget (self); } else { focus_cursor (self); } } return FALSE; } /** * pt_waveviewer_get_follow_cursor: * @self: the widget * * Get follow-cursor option. * * Return value: TRUE if cursor is followed, else FALSE * * Since: 1.5 */ gboolean pt_waveviewer_get_follow_cursor (PtWaveviewer *self) { g_return_val_if_fail (PT_IS_WAVEVIEWER (self), FALSE); return self->priv->follow_cursor; } /** * pt_waveviewer_set_follow_cursor: * @self: the widget * @follow: new value * * Set follow-cursor option to TRUE or FALSE. See also #PtWaveviewer:follow-cursor. * * Since: 1.5 */ void pt_waveviewer_set_follow_cursor (PtWaveviewer *self, gboolean follow) { g_return_if_fail (PT_IS_WAVEVIEWER (self)); if (self->priv->follow_cursor != follow) { self->priv->follow_cursor = follow; g_object_notify_by_pspec (G_OBJECT (self), obj_properties[PROP_FOLLOW_CURSOR]); g_signal_emit_by_name (self, "follow-cursor-changed", self->priv->follow_cursor); if (follow) scroll_to_cursor (self); } } static gboolean cursor_is_visible (PtWaveviewer *self) { gint cursor_pos, left, right; cursor_pos = time_to_pixel (self, self->priv->playback_cursor); left = (gint) gtk_adjustment_get_value (self->priv->adj); right = left + (gint) gtk_adjustment_get_page_size (self->priv->adj); return (left <= cursor_pos && cursor_pos <= right); } static void get_anchor_point (PtWaveviewer *self) { /* Get an anchor point = zoom_pos, either cursor position or middle of view. The anchor point is relative to the view. Get time of that anchor point = zoom_time. */ gint left; left = (gint) gtk_adjustment_get_value (self->priv->adj); if (cursor_is_visible (self)) { self->priv->zoom_time = self->priv->playback_cursor; self->priv->zoom_pos = time_to_pixel (self, self->priv->playback_cursor) - left; } else { self->priv->zoom_pos = (gint) gtk_adjustment_get_page_size (self->priv->adj) / 2; self->priv->zoom_time = pixel_to_time (self, self->priv->zoom_pos + left); } } static void reset_selection (PtWaveviewer *self) { PtWaveviewerPrivate *priv = self->priv; if (priv->has_selection == FALSE) return; g_object_freeze_notify (G_OBJECT (self)); priv->has_selection = FALSE; g_object_notify_by_pspec (G_OBJECT (self), obj_properties[PROP_HAS_SELECTION]); if (priv->sel_start > 0) { priv->sel_start = 0; g_object_notify_by_pspec (G_OBJECT (self), obj_properties[PROP_SELECTION_START]); } priv->sel_end = 0; g_object_notify_by_pspec (G_OBJECT (self), obj_properties[PROP_SELECTION_END]); g_object_thaw_notify (G_OBJECT (self)); } static void array_size_changed_cb (PtWaveloader *loader, gpointer user_data) { PtWaveviewer *self = PT_WAVEVIEWER (user_data); gint width; if (self->priv->peaks == NULL || self->priv->peaks->len == 0) { self->priv->peaks_size = 0; self->priv->px_per_sec = 0; self->priv->duration = 0; pt_waveviewer_selection_set ( PT_WAVEVIEWER_SELECTION (self->priv->selection), 0, 0); pt_waveviewer_cursor_render ( PT_WAVEVIEWER_CURSOR (self->priv->cursor), -1); } else { self->priv->peaks_size = self->priv->peaks->len; self->priv->px_per_sec = self->priv->pps; self->priv->duration = calculate_duration (self); } width = self->priv->peaks_size / 2; pt_waveviewer_scrollbox_set (PT_WAVEVIEWER_SCROLLBOX (self->priv->scrollbox), width); pt_waveviewer_ruler_set_ruler ( PT_WAVEVIEWER_RULER (self->priv->ruler), self->priv->peaks_size / 2, self->priv->px_per_sec, self->priv->duration); } static void propagate_progress_cb (PtWaveloader *loader, gdouble progress, PtWaveviewer *self) { g_signal_emit_by_name (self, "load-progress", progress); } static void load_cb (PtWaveloader *loader, GAsyncResult *res, gpointer *data) { GTask *task = (GTask *) data; PtWaveviewer *self = g_task_get_source_object (task); GError *error = NULL; if (self->priv->tick_handler != 0) { gtk_widget_remove_tick_callback (self->priv->waveform, self->priv->tick_handler); self->priv->tick_handler = 0; } if (pt_waveloader_load_finish (loader, res, &error)) { array_size_changed_cb (NULL, self); gtk_widget_queue_draw (self->priv->waveform); render_cursor (self); g_task_return_boolean (task, TRUE); } else { array_size_changed_cb (NULL, self); g_task_return_error (task, error); } g_object_unref (task); } /** * pt_waveviewer_load_wave_finish: * @self: the widget * @result: the #GAsyncResult passed to your #GAsyncReadyCallback * @error: (nullable): a pointer to a NULL #GError, or NULL * * Gives the result of the async load operation. A cancelled operation results * in an error, too. * * Return value: TRUE if successful, or FALSE with error set * * Since: 2.0 */ gboolean pt_waveviewer_load_wave_finish (PtWaveviewer *self, GAsyncResult *result, GError **error) { g_return_val_if_fail (g_task_is_valid (result, self), FALSE); return g_task_propagate_boolean (G_TASK (result), error); } static gboolean update_waveform_cb (GtkWidget *widget, GdkFrameClock *frame_clock, gpointer data) { gtk_widget_queue_draw (widget); return G_SOURCE_CONTINUE; } /** * pt_waveviewer_load_wave_async: * @self: the widget * @uri: the URI of the file * @cancel: (nullable): a #GCancellable or NULL * @callback: (scope async): a #GAsyncReadyCallback to call when the operation is complete * @user_data: (closure): user data for callback * * Load wave form for the given URI. The initial resolution is set to * #PtWaveviewer:pps. While loading, a #PtWaveviewer::load-progress signal is * emitted. A previous waveform is discarded. * * Since: 2.0 */ void pt_waveviewer_load_wave_async (PtWaveviewer *self, gchar *uri, GCancellable *cancel, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (PT_IS_WAVEVIEWER (self)); g_return_if_fail (uri != NULL); GTask *task; /* TODO think about doing this here or just returning error from waveloader. * this is meant for "nicer" error messages, requires translation GFile *file; gchar *location = NULL;*/ task = g_task_new (self, NULL, callback, user_data); #if 0 /* Change uri to location */ file = g_file_new_for_uri (uri); location = g_file_get_path (file); if (!location) { g_task_return_new_error ( task, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_NOT_FOUND, /* Translators: %s is a detailed error message. */ _("URI not valid: %s"), uri); g_object_unref (file); g_object_unref (task); return; } if (!g_file_query_exists (file, NULL)) { g_task_return_new_error ( task, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_NOT_FOUND, /* Translators: %s is a detailed error message. */ _("File not found: %s"), location); g_object_unref (file); g_free (location); g_object_unref (task); return; } g_object_unref (file); g_free (location); #endif reset_selection (self); g_object_set (self->priv->loader, "uri", uri, NULL); self->priv->px_per_sec = self->priv->pps; if (self->priv->tick_handler == 0) { self->priv->tick_handler = gtk_widget_add_tick_callback ( self->priv->waveform, (GtkTickCallback) update_waveform_cb, self, NULL); } pt_waveloader_load_async (self->priv->loader, self->priv->pps, cancel, (GAsyncReadyCallback) load_cb, task); } static void pt_waveviewer_finalize (GObject *object) { PtWaveviewer *self = PT_WAVEVIEWER (object); g_clear_object (&self->priv->arrows); g_clear_object (&self->priv->loader); if (self->priv->tick_handler != 0) { gtk_widget_remove_tick_callback (self->priv->waveform, self->priv->tick_handler); self->priv->tick_handler = 0; } G_OBJECT_CLASS (pt_waveviewer_parent_class)->finalize (object); } static void pt_waveviewer_dispose (GObject *object) { PtWaveviewer *self = PT_WAVEVIEWER (object); g_clear_object (&self->priv->button); #if GTK_CHECK_VERSION(3,24,0) g_clear_object (&self->priv->motion_ctrl); #endif G_OBJECT_CLASS (pt_waveviewer_parent_class)->dispose (object); } static void pt_waveviewer_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { PtWaveviewer *self = PT_WAVEVIEWER (object); switch (property_id) { case PROP_FOLLOW_CURSOR: g_value_set_boolean (value, self->priv->follow_cursor); break; case PROP_FIXED_CURSOR: g_value_set_boolean (value, self->priv->fixed_cursor); break; case PROP_SHOW_RULER: g_value_set_boolean (value, self->priv->show_ruler); break; case PROP_HAS_SELECTION: g_value_set_boolean (value, self->priv->has_selection); break; case PROP_SELECTION_START: g_value_set_int64 (value, self->priv->sel_start); break; case PROP_SELECTION_END: g_value_set_int64 (value, self->priv->sel_end); break; case PROP_PPS: g_value_set_int (value, self->priv->pps); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void pt_waveviewer_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { PtWaveviewer *self = PT_WAVEVIEWER (object); GError *error = NULL; switch (property_id) { case PROP_PLAYBACK_CURSOR: /* ignore if cursor’s value didn’t change */ if (self->priv->playback_cursor == g_value_get_int64 (value)) break; self->priv->playback_cursor = g_value_get_int64 (value); /* ignore if we’re not realized yet, widget is in construction */ if (!gtk_widget_get_realized (GTK_WIDGET (self))) break; if (self->priv->follow_cursor) scroll_to_cursor (self); render_cursor (self); break; case PROP_FOLLOW_CURSOR: self->priv->follow_cursor = g_value_get_boolean (value); if (gtk_widget_get_realized (GTK_WIDGET (self)) && self->priv->follow_cursor) scroll_to_cursor (self); g_signal_emit_by_name (self, "follow-cursor-changed", self->priv->follow_cursor); break; case PROP_FIXED_CURSOR: self->priv->fixed_cursor = g_value_get_boolean (value); break; case PROP_SHOW_RULER: self->priv->show_ruler = g_value_get_boolean (value); gtk_revealer_set_reveal_child (GTK_REVEALER (self->priv->revealer), self->priv->show_ruler); break; case PROP_PPS: self->priv->pps = g_value_get_int (value); if (self->priv->peaks->len == 0) break; get_anchor_point (self); if (!pt_waveloader_resize (self->priv->loader, self->priv->pps, &error)) { g_print ("%s\n", error->message); g_clear_error (&error); break; } array_size_changed_cb (NULL, self); gtk_adjustment_set_value (self->priv->adj, time_to_pixel (self, self->priv->zoom_time) - self->priv->zoom_pos); gtk_widget_queue_draw (self->priv->waveform); render_cursor (self); if (self->priv->has_selection) { pt_waveviewer_selection_set (PT_WAVEVIEWER_SELECTION (self->priv->selection), time_to_pixel (self, self->priv->sel_start), time_to_pixel (self, self->priv->sel_end)); } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void adjustment_value_changed_cb (GtkAdjustment *adjustment, gpointer user_data) { PtWaveviewer *self = PT_WAVEVIEWER (user_data); render_cursor (self); } static void pt_waveviewer_constructed (GObject *object) { PtWaveviewer *self = PT_WAVEVIEWER (object); GtkWidget *scrollbar = gtk_scrolled_window_get_hscrollbar (GTK_SCROLLED_WINDOW (self)); self->priv->adj = gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (self)); g_signal_connect (self->priv->adj, "value_changed", G_CALLBACK (adjustment_value_changed_cb), self); g_signal_connect (scrollbar, "button_press_event", G_CALLBACK (scrollbar_button_press_event_cb), self); g_signal_connect (scrollbar, "scroll_event", G_CALLBACK (scrollbar_scroll_event_cb), self); } static GdkCursor * get_resize_cursor (void) { GdkCursor *result; GdkDisplay *display; display = gdk_display_get_default (); result = gdk_cursor_new_from_name (display, "ew-resize"); if (!result) result = gdk_cursor_new_from_name (display, "col-resize"); if (!result) result = gdk_cursor_new_for_display (display, GDK_SB_H_DOUBLE_ARROW); return result; } static void pt_waveviewer_init (PtWaveviewer *self) { self->priv = pt_waveviewer_get_instance_private (self); g_type_ensure (PT_TYPE_WAVEVIEWER_SCROLLBOX); g_type_ensure (PT_TYPE_WAVEVIEWER_RULER); g_type_ensure (PT_TYPE_WAVEVIEWER_WAVEFORM); g_type_ensure (PT_TYPE_WAVEVIEWER_SELECTION); g_type_ensure (PT_TYPE_WAVEVIEWER_CURSOR); g_type_ensure (PT_TYPE_WAVEVIEWER_FOCUS); gtk_widget_init_template (GTK_WIDGET (self)); GtkCssProvider *provider; GFile *css_file; self->priv->peaks_size = 0; self->priv->duration = 0; self->priv->playback_cursor = 0; self->priv->follow_cursor = TRUE; self->priv->focus_on_cursor = FALSE; self->priv->sel_start = 0; self->priv->sel_end = 0; self->priv->zoom_time = 0; self->priv->zoom_pos = 0; self->priv->arrows = get_resize_cursor (); self->priv->loader = pt_waveloader_new (NULL); self->priv->peaks = pt_waveloader_get_data (self->priv->loader); self->priv->tick_handler = 0; pt_waveviewer_waveform_set ( PT_WAVEVIEWER_WAVEFORM (self->priv->waveform), self->priv->peaks); gtk_widget_show_all (GTK_WIDGET (self)); css_file = g_file_new_for_uri ("resource:///org/parlatype/libparlatype/pt-waveviewer.css"); provider = gtk_css_provider_new (); gtk_css_provider_load_from_file (provider, css_file, NULL); gtk_style_context_add_provider_for_screen ( gdk_screen_get_default (), GTK_STYLE_PROVIDER (provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); g_object_unref (css_file); g_object_unref (provider); /* Setup event handling */ self->priv->button = gtk_gesture_multi_press_new (self->priv->scrollbox); gtk_gesture_single_set_exclusive (GTK_GESTURE_SINGLE (self->priv->button), TRUE); gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (self->priv->button), 0); gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (self->priv->button), GTK_PHASE_CAPTURE); g_signal_connect ( self->priv->button, "pressed", G_CALLBACK (pt_waveviewer_button_press_event), self); g_signal_connect ( self->priv->button, "released", G_CALLBACK (pt_waveviewer_button_release_event), self); #if GTK_CHECK_VERSION(3,24,0) self->priv->motion_ctrl = gtk_event_controller_motion_new (self->priv->scrollbox); g_signal_connect ( self->priv->motion_ctrl, "motion", G_CALLBACK (pt_waveviewer_motion_event), self); #endif /* If overriding these vfuncs something’s going wrong, note that focus-in an focus-out need GdkEventFocus as 2nd parameter in vfunc */ g_signal_connect (self, "focus", G_CALLBACK (pt_waveviewer_focus), NULL); g_signal_connect (self, "focus-in-event", G_CALLBACK (pt_waveviewer_focus_in_event), NULL); g_signal_connect (self, "focus-out-event", G_CALLBACK (pt_waveviewer_focus_out_event), NULL); g_signal_connect (self->priv->loader, "progress", G_CALLBACK (propagate_progress_cb), self); g_signal_connect (self->priv->loader, "array-size-changed", G_CALLBACK (array_size_changed_cb), self); } static void pt_waveviewer_class_init (PtWaveviewerClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gobject_class->set_property = pt_waveviewer_set_property; gobject_class->get_property = pt_waveviewer_get_property; gobject_class->constructed = pt_waveviewer_constructed; gobject_class->dispose = pt_waveviewer_dispose; gobject_class->finalize = pt_waveviewer_finalize; widget_class->key_press_event = pt_waveviewer_key_press_event; #if GTK_CHECK_VERSION(3,24,0) #else widget_class->motion_notify_event = pt_waveviewer_motion_notify_event; #endif widget_class->scroll_event = pt_waveviewer_scroll_event; gtk_widget_class_set_template_from_resource (widget_class, "/org/parlatype/libparlatype/pt-waveviewer.ui"); gtk_widget_class_bind_template_child_private (widget_class, PtWaveviewer, scrollbox); gtk_widget_class_bind_template_child_private (widget_class, PtWaveviewer, revealer); gtk_widget_class_bind_template_child_private (widget_class, PtWaveviewer, ruler); gtk_widget_class_bind_template_child_private (widget_class, PtWaveviewer, overlay); gtk_widget_class_bind_template_child_private (widget_class, PtWaveviewer, waveform); gtk_widget_class_bind_template_child_private (widget_class, PtWaveviewer, selection); gtk_widget_class_bind_template_child_private (widget_class, PtWaveviewer, cursor); gtk_widget_class_bind_template_child_private (widget_class, PtWaveviewer, focus); /** * PtWaveviewer::load-progress: * @viewer: the waveviewer emitting the signal * @progress: the new progress state, ranging from 0.0 to 1.0 * * Indicates progress on a scale from 0.0 to 1.0, however it does not * emit the value 0.0 nor 1.0. Wait for a TRUE player-state-changed * signal or an error signal to dismiss a gui element showing progress. */ g_signal_new ("load-progress", PT_TYPE_WAVEVIEWER, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__DOUBLE, G_TYPE_NONE, 1, G_TYPE_DOUBLE); /** * PtWaveviewer::cursor-changed: * @viewer: the waveviewer emitting the signal * @position: the new position in stream in milliseconds * * Signals that the cursor’s position was changed by the user. */ signals[CURSOR_CHANGED] = g_signal_new ("cursor-changed", PT_TYPE_WAVEVIEWER, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, _pt_cclosure_marshal_VOID__INT64, G_TYPE_NONE, 1, G_TYPE_INT64); /** * PtWaveviewer::follow-cursor-changed: * @viewer: the waveviewer emitting the signal * @follow: the new value * * Signals that the #PtWaveviewer:follow-cursor property has changed. */ signals[FOLLOW_CURSOR_CHANGED] = g_signal_new ("follow-cursor-changed", PT_TYPE_WAVEVIEWER, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN); /** * PtWaveviewer::selection-changed: * @viewer: the waveviewer emitting the signal * * Signals that the selection was changed (or unselected) by the user. * To query the new selection see #PtWaveviewer:has-selection, * #PtWaveviewer:selection-start and #PtWaveviewer:selection-end. */ signals[SELECTION_CHANGED] = g_signal_new ("selection-changed", PT_TYPE_WAVEVIEWER, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * PtWaveviewer::play-toggled: * @viewer: the waveviewer emitting the signal * * Signals that the user requested to toggle play/pause. */ signals[PLAY_TOGGLED] = g_signal_new ("play-toggled", PT_TYPE_WAVEVIEWER, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * PtWaveviewer::zoom-in: * @viewer: the waveviewer emitting the signal * * Signals that the user requested to zoom into the waveform. */ signals[ZOOM_IN] = g_signal_new ("zoom-in", PT_TYPE_WAVEVIEWER, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * PtWaveviewer::zoom-out: * @viewer: the waveviewer emitting the signal * * Signals that the user requested to zoom out of the waveform. */ signals[ZOOM_OUT] = g_signal_new ("zoom-out", PT_TYPE_WAVEVIEWER, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); /** * PtWaveviewer:playback-cursor: * * Current playback position in milliseconds. A value of -1 means an * invalid or unknown position that will not be rendered. */ obj_properties[PROP_PLAYBACK_CURSOR] = g_param_spec_int64 ( "playback-cursor", "Cursor position", "Cursor’s position in 1/1000 seconds", -1, G_MAXINT64, 0, G_PARAM_WRITABLE | G_PARAM_STATIC_STRINGS); /** * PtWaveviewer:follow-cursor: * * If the widget follows the cursor, it scrolls automatically to the * cursor’s position. Note that the widget will change this property to * FALSE if the user scrolls the widget manually. */ obj_properties[PROP_FOLLOW_CURSOR] = g_param_spec_boolean ( "follow-cursor", _("Follow cursor"), _("Scroll automatically to the cursor’s position"), TRUE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS); /** * PtWaveviewer:fixed-cursor: * * If TRUE, in follow-cursor mode the cursor is at a fixed position and the * waveform is scrolling. If FALSE the cursor is moving. * * If #PtWaveviewer:follow-cursor is FALSE, this has no effect. */ obj_properties[PROP_FIXED_CURSOR] = g_param_spec_boolean ( "fixed-cursor", _("Fixed cursor"), _("If TRUE, the cursor is in a fixed position and the waveform is moving.\n" "If FALSE, the cursor is moving."), TRUE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS); /** * PtWaveviewer:show-ruler: * * Whether the ruler is shown (TRUE) or not (FALSE). */ obj_properties[PROP_SHOW_RULER] = g_param_spec_boolean ( "show-ruler", _("Show ruler"), _("Show the time scale with time marks"), TRUE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS); /** * PtWaveviewer:has-selection: * * Whether something is selected (TRUE) or not (FALSE). */ obj_properties[PROP_HAS_SELECTION] = g_param_spec_boolean ( "has-selection", "Has selection", "Indicates whether something is selected", FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); /** * PtWaveviewer:selection-start: * * Start time of selection in milliseconds. If it’s equal to the end * time, there is no selection. See also #PtWaveviewer:has-selection. */ obj_properties[PROP_SELECTION_START] = g_param_spec_int64 ( "selection-start", "Start time of selection", "Start time of selection", 0, G_MAXINT64, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); /** * PtWaveviewer:selection-end: * * End time of selection in milliseconds. If it’s equal to the start * time, there is no selection. See also #PtWaveviewer:has-selection. */ obj_properties[PROP_SELECTION_END] = g_param_spec_int64 ( "selection-end", "End time of selection", "End time of selection", 0, G_MAXINT64, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); /** * PtWaveviewer:pps: * * Current/requested resolution of waveform in pixels per second. */ obj_properties[PROP_PPS] = g_param_spec_int ( "pps", "Pixels per second", "Current/requested resolution of waveform in pixels per second", 25, 200, 100, G_PARAM_WRITABLE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS); g_object_class_install_properties ( gobject_class, N_PROPERTIES, obj_properties); } /** * pt_waveviewer_new: * * Create a new, initially blank waveform viewer widget. * * After use gtk_widget_destroy() it. * * Returns: the widget * * Since: 1.5 */ GtkWidget * pt_waveviewer_new (void) { return GTK_WIDGET (g_object_new (PT_TYPE_WAVEVIEWER, NULL)); } parlatype-3.0/libparlatype/src/pt-waveviewer.h000066400000000000000000000052161414030451500216130ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2016 * * 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 . */ #ifndef PT_WAVEVIEWER_H #define PT_WAVEVIEWER_H #if !defined (__PARLATYPE_H_INSIDE__) && !defined (PARLATYPE_COMPILATION) #error "Only can be included directly." #endif #include G_BEGIN_DECLS #define PT_TYPE_WAVEVIEWER (pt_waveviewer_get_type ()) #define PT_WAVEVIEWER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PT_TYPE_WAVEVIEWER, PtWaveviewer)) #define PT_IS_WAVEVIEWER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PT_TYPE_WAVEVIEWER)) #define PT_WAVEVIEWER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PT_TYPE_WAVEVIEWER, PtWaveviewerClass)) #define PT_IS_WAVEVIEWER_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((klass), PT_TYPE_WAVEVIEWER)) typedef struct _PtWaveviewer PtWaveviewer; typedef struct _PtWaveviewerClass PtWaveviewerClass; typedef struct _PtWaveviewerPrivate PtWaveviewerPrivate; /** * PtWaveviewer: * * The #PtWaveviewer contains only private fields and should not be directly accessed. */ struct _PtWaveviewer { GtkScrolledWindow parent; /*< private > */ PtWaveviewerPrivate *priv; }; struct _PtWaveviewerClass { GtkScrolledWindowClass klass; }; GType pt_waveviewer_get_type (void) G_GNUC_CONST; gboolean pt_waveviewer_get_follow_cursor (PtWaveviewer *self); void pt_waveviewer_set_follow_cursor (PtWaveviewer *self, gboolean follow); gboolean pt_waveviewer_load_wave_finish (PtWaveviewer *self, GAsyncResult *result, GError **error); void pt_waveviewer_load_wave_async (PtWaveviewer *self, gchar *uri, GCancellable *cancel, GAsyncReadyCallback callback, gpointer user_data); GtkWidget *pt_waveviewer_new (void); G_END_DECLS #endif // PT_WAVEVIEWER_H parlatype-3.0/libparlatype/src/ptmarshalers.list000066400000000000000000000000131414030451500222250ustar00rootroot00000000000000VOID:INT64 parlatype-3.0/libparlatype/src/resources/000077500000000000000000000000001414030451500206435ustar00rootroot00000000000000parlatype-3.0/libparlatype/src/resources/libparlatype.gresource.xml000066400000000000000000000003461414030451500260550ustar00rootroot00000000000000 pt-waveviewer.css pt-waveviewer.ui parlatype-3.0/libparlatype/src/resources/pt-waveviewer.css000066400000000000000000000004601414030451500241620ustar00rootroot00000000000000/* custom styles for PtWaveviewer */ .cursor { color: #cc0000; } .cursor:backdrop { color: #cc6060; } .selection { color: rgba(90%,50%,50%,0.5); } scrolledwindow undershoot.left, scrolledwindow undershoot.right, scrolledwindow overshoot.left, scrolledwindow overshoot.right { background: none; } parlatype-3.0/libparlatype/src/resources/pt-waveviewer.ui000066400000000000000000000040061414030451500240070ustar00rootroot00000000000000 parlatype-3.0/libparlatype/tests/000077500000000000000000000000001414030451500172045ustar00rootroot00000000000000parlatype-3.0/libparlatype/tests/config.c000066400000000000000000000213671414030451500206260ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2021 * * 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 . */ #include #include #include #include "mock-plugin.h" /* Tests -------------------------------------------------------------------- */ static void construct (void) { PtConfig *config; GFile *testfile; GFile *file; gchar *testpath; gchar *name; gboolean is_valid; gboolean is_installed; testpath = g_test_build_filename (G_TEST_BUILT, "config-test.asr", NULL); testfile = g_file_new_for_path (testpath); config = pt_config_new (testfile); g_assert_true (PT_IS_CONFIG (config)); g_object_get (config, "file", &file, "name", &name, "is-valid", &is_valid, "is-installed", &is_installed, NULL); g_assert_true (testfile == file); g_assert_true (is_valid); g_assert_false (is_installed); g_assert_cmpstr (name, ==, "Test Model"); g_object_unref (config); g_object_unref (file); g_free (name); g_object_unref (testfile); g_free (testpath); } static void main_methods (void) { PtConfig *config; GFile *testfile, *nullfile, *cmpfile; gchar *testpath; testpath = g_test_build_filename (G_TEST_BUILT, "config-test.asr", NULL); testfile = g_file_new_for_path (testpath); config = pt_config_new (testfile); gchar *name, *plugin, *base, *lang_code, *lang_name, *other; gboolean installed, success; name = pt_config_get_name (config); g_assert_cmpstr (name, ==, "Test Model"); /* Change name */ success = pt_config_set_name (config, "New Name"); g_assert_true (success); name = pt_config_get_name (config); g_assert_cmpstr (name, ==, "New Name"); /* Reset name again for future tests */ success = pt_config_set_name (config, "Test Model"); g_assert_true (success); name = pt_config_get_name (config); g_assert_cmpstr (name, ==, "Test Model"); plugin = pt_config_get_plugin (config); g_assert_cmpstr (plugin, ==, "unknown-plugin"); base = pt_config_get_base_folder (config); g_assert_cmpstr (base, ==, "/home/me/model"); /* Change base folder */ success = pt_config_set_base_folder (config, "/home/me/somewhere_else"); g_assert_true (success); base = pt_config_get_base_folder (config); g_assert_cmpstr (base, ==, "/home/me/somewhere_else"); /* Reset base folder again for future tests */ success = pt_config_set_base_folder (config, "/home/me/model"); g_assert_true (success); base = pt_config_get_base_folder (config); g_assert_cmpstr (base, ==, "/home/me/model"); lang_code = pt_config_get_lang_code (config); g_assert_cmpstr (lang_code, ==, "de"); lang_name = pt_config_get_lang_name (config); g_assert_cmpstr (lang_name, ==, "German"); installed = pt_config_is_installed (config); g_assert_false (installed); other = pt_config_get_key (config, "does-not-exist"); g_assert_null (other); other = pt_config_get_key (config, "Language"); g_assert_cmpstr (other, ==, "de"); g_free (other); /* Setting a NULL file and previous file again */ nullfile = g_file_new_for_path ("does-not-exist"); pt_config_set_file (config, nullfile); g_assert_false (pt_config_is_valid (config)); pt_config_set_file (config,testfile); g_assert_true (pt_config_is_valid (config)); cmpfile = pt_config_get_file (config); g_assert_true (cmpfile == testfile); g_object_unref (config); g_object_unref (testfile); g_object_unref (nullfile); g_free (testpath); } static int check_folder_for_configs (GFile *folder) { GFileEnumerator *files; GFile *file; PtConfig *config; GError *error = NULL; int num_tested = 0; files = g_file_enumerate_children (folder, G_FILE_ATTRIBUTE_STANDARD_NAME, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, NULL, /* cancellable */ &error); g_assert_no_error (error); while (TRUE) { GFileInfo *info; g_file_enumerator_iterate (files, &info, &file, NULL, &error); g_assert_no_error (error); if (!info) break; const char *name = g_file_info_get_name (info); if (g_str_has_suffix (name, ".asr")) { num_tested++; config = pt_config_new (file); g_print ("Testing %s ", name); if (g_str_has_prefix (name, "invalid")) g_assert_false (pt_config_is_valid (config)); else g_assert_true (pt_config_is_valid (config)); g_print ("OK\n"); g_object_unref (config); } } g_object_unref (files); return num_tested; } static void crafted_valid (void) { gchar *path; GFile *folder; int num_tested; path = g_test_build_filename (G_TEST_BUILT, G_DIR_SEPARATOR_S, NULL); folder = g_file_new_for_path (path); num_tested = check_folder_for_configs (folder); g_assert_cmpint (num_tested, >=, 13); g_object_unref (folder); g_free (path); } static void dist_valid (void) { gchar *path; GFile *folder; int num_tested; path = g_test_build_filename (G_TEST_DIST, "..", "..", "data", "asr", NULL); folder = g_file_new_for_path (path); num_tested = check_folder_for_configs (folder); g_assert_cmpint (num_tested, >=, 5); g_object_unref (folder); g_free (path); } static void apply (void) { PtConfig *config; GFile *testfile; gchar *testpath; MockPlugin *plugin; gchar *prop_file, *prop_string; gint prop_int; gfloat prop_float; gdouble prop_double; gboolean prop_bool; GError *error = NULL; gboolean success; testpath = g_test_build_filename (G_TEST_DIST, "data", "config-apply.asr", NULL); testfile = g_file_new_for_path (testpath); config = pt_config_new (testfile); g_object_unref (testfile); g_free (testpath); plugin = mock_plugin_new (); success = pt_config_apply (config, G_OBJECT (plugin), &error); g_assert_true (success); g_assert_no_error (error); g_object_get (plugin, "file", &prop_file, "string", &prop_string, "int", &prop_int, "float", &prop_float, "double", &prop_double, "bool", &prop_bool, NULL); g_assert_cmpstr (prop_file, ==, "/home/me/model/subdir/file.dat"); g_assert_cmpstr (prop_string, ==, "Example"); g_assert_cmpint (prop_int, ==, 42); g_assert_cmpfloat_with_epsilon (prop_float, 0.42, 0.00001); g_assert_cmpfloat_with_epsilon (prop_double, 0.42, 0.00001); g_assert_true (prop_bool); g_free (prop_file); g_free (prop_string); g_object_unref (config); /* Test for error 1 */ testpath = g_test_build_filename (G_TEST_DIST, "data", "config-apply-error1.asr", NULL); testfile = g_file_new_for_path (testpath); config = pt_config_new (testfile); g_object_unref (testfile); g_free (testpath); success = pt_config_apply (config, G_OBJECT (plugin), &error); g_assert_false (success); g_assert_error (error, PT_ERROR, PT_ERROR_PLUGIN_MISSING_PROPERTY); g_clear_error (&error); g_object_unref (config); /* Test for error 2 */ testpath = g_test_build_filename (G_TEST_DIST, "data", "config-apply-error2.asr", NULL); testfile = g_file_new_for_path (testpath); config = pt_config_new (testfile); g_object_unref (testfile); g_free (testpath); success = pt_config_apply (config, G_OBJECT (plugin), &error); g_assert_false (success); g_assert_error (error, PT_ERROR, PT_ERROR_PLUGIN_NOT_WRITABLE); g_clear_error (&error); g_object_unref (config); /* Test for error 3 */ testpath = g_test_build_filename (G_TEST_DIST, "data", "config-apply-error3.asr", NULL); testfile = g_file_new_for_path (testpath); config = pt_config_new (testfile); g_object_unref (testfile); g_free (testpath); success = pt_config_apply (config, G_OBJECT (plugin), &error); g_assert_false (success); g_assert_error (error, PT_ERROR, PT_ERROR_PLUGIN_WRONG_VALUE); g_clear_error (&error); g_object_unref (config); g_object_unref (plugin); } int main (int argc, char *argv[]) { g_test_init (&argc, &argv, NULL); gst_init (NULL, NULL); mock_plugin_register (); g_test_add_func ("/config/construct", construct); g_test_add_func ("/config/main_methods", main_methods); g_test_add_func ("/config/crafted_valid", crafted_valid); g_test_add_func ("/config/dist_valid", dist_valid); g_test_add_func ("/config/apply", apply); gtk_init (NULL, NULL); return g_test_run (); } parlatype-3.0/libparlatype/tests/data/000077500000000000000000000000001414030451500201155ustar00rootroot00000000000000parlatype-3.0/libparlatype/tests/data/README000066400000000000000000000004211414030451500207720ustar00rootroot00000000000000Generated test data gst-launch-1.0 audiotestsrc wave=ticks num-buffers=430 ! audioconvert ! vorbisenc ! oggmux ! filesink location=tick-10sec.ogg gst-launch-1.0 audiotestsrc wave=ticks num-buffers=2580 ! audioconvert ! vorbisenc ! oggmux ! filesink location=tick-60sec.oggparlatype-3.0/libparlatype/tests/data/config-apply-error1.asr000066400000000000000000000003411414030451500244220ustar00rootroot00000000000000[Model] Version=1.0 Name=Test to apply Parameters Plugin=parlasphinx BaseFolder=/home/me/model Language=de URL= [Files] file=subdir/file.dat [Parameters] string=Example int=42 double=0.42 float=0.42 bool=true missing=value parlatype-3.0/libparlatype/tests/data/config-apply-error2.asr000066400000000000000000000003431414030451500244250ustar00rootroot00000000000000[Model] Version=1.0 Name=Test to apply Parameters Plugin=parlasphinx BaseFolder=/home/me/model Language=de URL= [Files] file=subdir/file.dat [Parameters] string=Example int=42 double=0.42 float=0.42 bool=true not-writable=42 parlatype-3.0/libparlatype/tests/data/config-apply-error3.asr000066400000000000000000000003241414030451500244250ustar00rootroot00000000000000[Model] Version=1.0 Name=Test to apply Parameters Plugin=parlasphinx BaseFolder=/home/me/model Language=de URL= [Files] file=subdir/file.dat [Parameters] string=Example int=101 double=0.42 float=0.42 bool=true parlatype-3.0/libparlatype/tests/data/config-apply.asr000066400000000000000000000003231414030451500232120ustar00rootroot00000000000000[Model] Version=1.0 Name=Test to apply Parameters Plugin=parlasphinx BaseFolder=/home/me/model Language=de URL= [Files] file=subdir/file.dat [Parameters] string=Example int=42 double=0.42 float=0.42 bool=true parlatype-3.0/libparlatype/tests/data/config-mock-plugin.asr000066400000000000000000000003211414030451500243100ustar00rootroot00000000000000[Model] Version=1.0 Name=Test with mock plugin Plugin=ptmockplugin BaseFolder=/home/me/model Language=de URL= [Files] file=subdir/file.dat [Parameters] string=Example int=42 double=0.42 float=0.42 bool=true parlatype-3.0/libparlatype/tests/data/config-test.asr000066400000000000000000000003211414030451500230420ustar00rootroot00000000000000[Model] Version=1.0 Name=Test Model Plugin=unknown-plugin BaseFolder=/home/me/model Language=de URL= [Files] File=subdir/test.dict Folder=subdir/subdir [Parameters] Number=42 String=Some String Boolean=true parlatype-3.0/libparlatype/tests/data/generate_config_data000077500000000000000000000026301414030451500241540ustar00rootroot00000000000000#!/bin/bash # First argument is a valid configuration as input INPUT="$1" # Second argument is a directory for output DEST="$2" # Remove old files rm "$DEST"/*.asr # Copy valid input cp "$INPUT" "$DEST" # Generate invalid configurations with only one detail changed sed '/^Version=/d' "$INPUT" > "$DEST"/invalid-missing-key-version.asr sed 's/^Version=.*$/Version=/g' "$INPUT" > "$DEST"/invalid-empty-key-version.asr sed 's/^Version=.*$/Version=2.0/g' "$INPUT" > "$DEST"/invalid-key-version1.asr sed 's/^Version=.*$/Version=1/g' "$INPUT" > "$DEST"/invalid-key-version2.asr sed 's/^Version=.*$/Version=1.a/g' "$INPUT" > "$DEST"/invalid-key-version3.asr sed 's/^Version=.*$/Version=1,0/g' "$INPUT" > "$DEST"/invalid-key-version3.asr sed '1s;^;NoGroup = 1\n\n;' "$INPUT" > "$DEST"/invalid-key-without-group.asr sed 's/^\[Model\]/[ledoM]/g' "$INPUT" > "$DEST"/invalid-missing-group-model.asr sed '/^Name=/d' "$INPUT" > "$DEST"/invalid-missing-key-name.asr sed '/^Plugin=/d' "$INPUT" > "$DEST"/invalid-missing-key-plugin.asr sed '/^BaseFolder=/d' "$INPUT" > "$DEST"/invalid-missing-key-basefolder.asr sed 's/^Name=.*$/Name=/g' "$INPUT" > "$DEST"/invalid-empty-key-name.asr sed 's/^Plugin=.*$/Plugin=/g' "$INPUT" > "$DEST"/invalid-empty-key-plugin.asr sed 's/^Language=.*$/Language=/g' "$INPUT" > "$DEST"/invalid-empty-key-language.asrparlatype-3.0/libparlatype/tests/data/tick-10sec.ogg000066400000000000000000000216401414030451500224610ustar00rootroot00000000000000OggS.:`vorbisD8OggS.}Scvorbis5Xiph.Org libVorbis I 20180316 (Now 100% fewer shells)DESCRIPTION=audiotest wavevorbis"BCV@$s*FsBPBkBL2L[%s!B[(АU@AxA!%=X'=!9xiA!B!B!E9h'A08 8E9X'A B9!$5HP9,(05(0ԃ BI5gAxiA!$AHAFAX9A*9 4d((  @Qqɑɱ  YHHH$Y%Y%Y扪,˲,˲,2 HPQ Eq Yd8Xh爎4CS# G,]6MuC74ӴmUut]_uhPTU]WeUW}[}UUYՖa} Uum]X~2tu[h뺱̾L(CLABH)R9)sRB)RR9&%sNJ(PJKB)RZl՚Z5Z(PJ[k5FAȜ9'Z(9*:)Z,)X9'%J!JL%C*b,)ZlŘs(ŒJl%X[L9s9'%sNJ(RRksR:)eJ*)XJJ1sNJ!BJ%SJRb+)XJjŘsK1PR%KJ1snAh-c(%cC)b,)cŘs(%ƒJ%X[sNZkmsЩZSLsYsZ(PJZ[9Rb+)XJŘskPJ%XKJ5k5ZŘkjs1Sk5kNZsc&BCVQ!J1A141朔1 R1R2 RRR RkRRj4%(4d% `pA'@pBdH4,1$&(@Et.:B H 7<'RpFGHH!DD4OggS@T. !(&$ *+^.BqTʆ^,c$rN3mڵ=Y RtwP8ٺ5Qs;mט5(u,\v)!M3c/,:m5^feˑB3s[gL<´UD$U:yR> OggS.PR/.%$)TtwG20C78qtt\ح=|#?@R@s}ɂqǵzݽ}ww-˽xʾf};0O +H=L m@fffyADdi"Uzi0PYuʥU~ζM?={ePW#>`PX*:@@3'mך5"urUwZ) ncu/mךZ@`/\+\r:X.XmտG *+.8e/N )2MOggS.=*.z%՟z 58Z󧩩~0F[ hYtWw=3'}±xUcժu;i OggSZ.`()$$)tq{y]:5H%|/mmi*w^6m5d<֫4)p#u1;ԧ 4ʾϽ;ОL+@w5@m` ``@cH*zRT(G-- 3>{M@H<!,F=$P&C@X*t~+FmWݵ8,O݊f^mڵޮX JU–1:Dm{g{{HS9_׏lϝs(p_7s\OggS.h/TWy4HLx7~]_}'g[S.! OggS .$)'"!))*L۶:` 3!ϭQt4SK޿{NsK[-j6eYlGʾs3IT~D Ps`@$u7 1Z*Hc\"XlA' mל5G$5O)qX}3XlmW۵~> @\EYt4Q>-m5AZ'rE8n"&s#++f%շZ7&wnr$zi_ ilg$* 5~&'%7U?ݱ>ʛ[KnO OggS@].WS OggS. m$(,&&)+l/ou4jg$V>* _tD m.b&$g@*Wiji/zBʾNx2+ v , D>4@TTh7*uPՋ4wڑ ,{F`>4 lw@*mלl*574 6OqwNx|mךPp}YbBe3c7i)1i%lgO~'mwǛ;a}'݉( $Yj}5 i2C׷[sbzyulnOggS . sH? OggSc. t-E$(&##'(,<#Sd͢&M>[9g8R0ZF~?? xqo~|g/5q=X~R> Ȥ@*` h[H"@Ղ)DLjm@v1"Wй7}wiW6|x}C5\s1"@`V.@nҁ:!@Be Wl mך5.f8AV3h mmל52H]~8xC} Egnmڽ{lBJ=\'n/#K7z% &$gLΆckH&YWގvxO.k}/eOggS. {X OggS@. o%))##*(|_^}B5&o1#/&-m6 'Vg=i:!n2Bʾ{;0HA #&E:0(M@*87 0ܹݺ4陿~}|C$pȁO gcde xC Ot Wmל5[)I@ßAnmW۵:2?.r$G7@%0DXψsޝF s~b*>T[+y29 47eg9 K_Zҋ OggS@j.m%OggS@.$*&%$((,I+kcA `7vI.-0ߨV@@x-")Ϗ6mW5$m= j~I"p3KmטUCX%@<*"ת,sY m5G s.%;(*CHl{e3.Ǜ鹘ӮܐWnU9/Ao@W,dz8W ֚+:êq=/^'', OggS@.vTOggSr.b-\%*&"#(+ᓅ\VjϷt&7RFWWSFn4D;7˽K mg(}/|_xʾf}3ˬ@*G` g& `òO2pܝY;W^׆3 1sT86m5 {k2B<^M^,'_ʾs ?xP\vw\l ,&mm$Hffff_c#)o<Sn1ZW>zxyUhkte߾}@i%f =|P dAjl_mט5bmp@-LF`E&@]̥f+m5g  l@ 1,qRV^wne3)Ǵ ,~KRݭ%x4i)f^|vjux4G+!@͛^} Pҳp:f OggS@{.TOggS.)&|O~QIh9INj9 7Q8t3(p=@lKVj&cyleF]EZ>Y| d 3E5D6vB-ybo}^6zklq[5ZEj*u+uf&~#o#j9T/RSlP%o/%#iK!i&7rҽw_ %qXֶsNGM0?yGparlatype-3.0/libparlatype/tests/data/tick-60sec.ogg000066400000000000000000001100611414030451500224620ustar00rootroot00000000000000OggST{n]vorbisD8OggST{Pcvorbis5Xiph.Org libVorbis I 20180316 (Now 100% fewer shells)DESCRIPTION=audiotest wavevorbis"BCV@$s*FsBPBkBL2L[%s!B[(АU@AxA!%=X'=!9xiA!B!B!E9h'A08 8E9X'A B9!$5HP9,(05(0ԃ BI5gAxiA!$AHAFAX9A*9 4d((  @Qqɑɱ  YHHH$Y%Y%Y扪,˲,˲,2 HPQ Eq Yd8Xh爎4CS# G,]6MuC74ӴmUut]_uhPTU]WeUW}[}UUYՖa} Uum]X~2tu[h뺱̾L(CLABH)R9)sRB)RR9&%sNJ(PJKB)RZl՚Z5Z(PJ[k5FAȜ9'Z(9*:)Z,)X9'%J!JL%C*b,)ZlŘs(ŒJl%X[L9s9'%sNJ(RRksR:)eJ*)XJJ1sNJ!BJ%SJRb+)XJjŘsK1PR%KJ1snAh-c(%cC)b,)cŘs(%ƒJ%X[sNZkmsЩZSLsYsZ(PJZ[9Rb+)XJŘskPJ%XKJ5k5ZŘkjs1Sk5kNZsc&BCVQ!J1A141朔1 R1R2 RRR RkRRj4%(4d% `pA'@pBdH4,1$&(@Et.:B H 7<'RpFGHH!DD4OggS@TT{@!(&$ *+^.BqTʆ^,c$rN3mڵ=Y RtwP8ٺ5Qs;mט5(u,\v)!M3c/,:m5^feˑB3s[gL<´UD$U:yR> OggST{ov/.%$)TtwG20C78qtt\ح=|#?@R@s}ɂqǵzݽ}ww-˽xʾf};0O +H=L m@fffyADdi"Uzi0PYuʥU~ζM?={ePW#>`PX*:@@3'mך5"urUwZ) ncu/mךZ@`/\+\r:X.XmտG *+.8e/N )2MOggST{-,*.z%՟z 58Z󧩩~0F[ hYtWw=3'}±xUcժu;i OggSZT{H()$$)tq{y]:5H%|/mmi*w^6m5d<֫4)p#u1;ԧ 4ʾϽ;ОL+@w5@m` ``@cH*zRT(G-- 3>{M@H<!,F=$P&C@X*t~+FmWݵ8,O݊f^mڵޮX JU–1:Dm{g{{HS9_׏lϝs(p_7s\OggST{/TWy4HLx7~]_}'g[S.! OggS T{Pj$)'"!))*L۶:` 3!ϭQt4SK޿{NsK[-j6eYlGʾs3IT~D Ps`@$u7 1Z*Hc\"XlA' mל5G$5O)qX}3XlmW۵~> @\EYt4Q>-m5AZ'rE8n"&s#++f%շZ7&wnr$zi_ ilg$* 5~&'%7U?ݱ>ʛ[KnO OggS@]T{? OggST{ m$(,&&)+l/ou4jg$V>* _tD m.b&$g@*Wiji/zBʾNx2+ v , D>4@TTh7*uPՋ4wڑ ,{F`>4 lw@*mלl*574 6OqwNx|mךPp}YbBe3c7i)1i%lgO~'mwǛ;a}'݉( $Yj}5 i2C׷[sbzyulnOggS T{ vY OggScT{ a$(&##'(,<#Sd͢&M>[9g8R0ZF~?? xqo~|g/5q=X~R> Ȥ@*` h[H"@Ղ)DLjm@v1"Wй7}wiW6|x}C5\s1"@`V.@nҁ:!@Be Wl mך5.f8AV3h mmל52H]~8xC} Egnmڽ{lBJ=\'n/#K7z% &$gLΆckH&YWގvxO.k}/eOggST{ /H OggS@T{ /K%))##*(|_^}B5&o1#/&-m6 'Vg=i:!n2Bʾ{;0HA #&E:0(M@*87 0ܹݺ4陿~}|C$pȁO gcde xC Ot Wmל5[)I@ßAnmW۵:2?.r$G7@%0DXψsޝF s~b*>T[+y29 47eg9 K_Zҋ OggS@jT{$$OggS@T{u$*&%$((,I+kcA `7vI.-0ߨV@@x-")Ϗ6mW5$m= j~I"p3KmטUCX%@<*"ת,sY m5G s.%;(*CHl{e3.Ǜ鹘ӮܐWnU9/Ao@W,dz8W ֚+:êq=/^'', OggS@T{|ڹOggSrT{Є%*&"#(+ᓅ\VjϷt&7RFWWSFn4D;7˽K mg(}/|_xʾf}3ˬ@*G` g& `òO2pܝY;W^׆3 1sT86m5 {k2B<^M^,'_ʾs ?xP\vw\l ,&mm$Hffff_c#)o<Sn1ZW>zxyUhkte߾}@i%f =|P dAjl_mט5bmp@-LF`E&@]̥f+m5g  l@ 1,qRV^wne3)Ǵ ,~KRݭ%x4i)f^|vjux4G+!@͛^} Pҳp:f OggS@{T{\kOggST{g#)&$$('|O~QIh9INj9 7Q8t3(p=@lKVj&cyleF]Erڻ~;0o&L# ,Ѐ$Hdf& "=U*I5f2*z}`I|nrmD =Pz ?_0mךbI^.,(W? 6-3dmך5C(kҔxk?&mgI AQoq6]*3z!7w&@ɍ_tG*^ⵅ^ OggS*T{ OggS@T{!%*(%"'()'=4sصʔHVݿ;ou:+ t>~-ԧ[7g9mڵ=o 9l@WQVe{U6 &Z6ʾ߳;HE6H @ 0g@sz1VZW?[o@5yϥÆ>}zcc#H` NJ, H<$#@eHx  mך^_? @?-u<nm5Obt]4@™]$ISsۯ_esFd].^vI:}^%WDO*+:Rm0K@tN:t5g @P*mmל5墶6^ \CXeԞl:m굽~(@ U^|0 m=O,ҡkKMP䰎6a=9aS"ĶHϽN7; OggS@ T{zIOggS@D T{?$&'%"$.,|<4SjhWځ? \faH~?H4S˛{WVb/_\N=mڽ=pqAv8輖CXgXht+rv)0L ~\ 4%Hp@_@3hjܧ' ގ_}ީٳZ,<)i  1d>E]j >@xBH *<<)!|/mך^_aI .2mS>n#ɏmל5$(qfV _Rd#b9#P[Ba}q~_kA&ٞssdWOj*!m8^Ky)ʹzUTVKY^ OggS@ T{ MOggS T{!9!_%+*&"*.\/jPiO{ѿ=zߣG?Gvk` O:SPЂZPOTWU]]]Wݻ\s5ʾN|2( v 2l#0l uy wwUیDwT*xy@ ?7#HVzI N?#@tlQn ? t-mטU x^)d֗mך5 =GͷWҟkm5>0#S J+~8۾)6c.O#R_֌v~l~~m OggSL T{"hKOggS T{#$('%"-.v_^ 55ivj9o7] ?W_m5K tQQlQ[4˙wk^v+' H,D`P*HݯQ/ @@<Fr`N ^y/~_Nn2ǯ8q"6zl$pK4@ sqd e BO@B"mל5[y &@ tGs*TLgzxy$NLte߾%7^C aQ`amW5 YΙޛI|`̩<DVmW۵g  nB5m:5>P@*fNosOHA$櫄㪒Oi9[|{߾u˷U –Tl/lÔkjN}ұ>:ЛTg OggS@ T{&xOggS T{'BoO%+*$$*)tq$ `\rs}\fyAziS.j'[s"ܾqr(,Q`Z `$ZC``;Hl  mך5$,P>!Wʛ(mך5.=%7 V0Z@6{di Rf{ `S]8v2M/g/TLY5Ӄ HbsTg/jAb^֏|8| OggS] T{(֟_OggS T{):+$)(##((,DQ?LOud5.6Qw\ZKJ۝ ~/y{3EN}/7}kK\~>>ʾ}mR" CX$x`lDZ3 D OZWo ޕ]tذO؈n.}B!8Y:p d3 tx_mךޮ@&tiGߟ_mךK пU{N L im=۷RAAj@K(8 SkTϙWz%ՓIIgSVi e{usu?]  ~o$A}۷{Oj{ʴ }/k }/k }/ki_( OggS T{*lOggS@fT{+ %(,$$*,t/o]Hrbכzl-{H2hMx{& +. 45>V+f6,^s>'ʾ};0L +@wwN ` `km$vwwwjR2 :@`hܙ]y'qڼ(Iic ,A4l`M &v'E6.mט5A,}׋A胒mn.:mך5&shY̒6XvѿDh6is)T^Lcҟ5r HY)g<@MI H/`[6R7-Es|G OggS@T{,<OggS@T{-7$('%$),+,Mr*uG朻댿mFݭ޿(|ӔgDᇞ묅"Rӌw ٺZZ;rړIi """d`&@ vC@("0@Z# D"ϴ@'{W4ӧO )``>M\`z`, %0 mW5dI<t.p_+?ӣ(kK[mל5Ir;JS"?Od+Ȣ?m={~dmBmʋgSUp ݑ^t.,ha!S/loҶz7vիr?_(* k}| }_6]Зp} OggS@nT{.y_YOggST{/ ש+%))#"'(_^Vjϧ\+BgŔsܡIz7(Vi XL5GENTM#YUhʾww=7) :5H0'Hn  !Ek "XU`{g%O:>>y) m@h3@SVPG `V @~@_mל5ޞ_dZ !CY/lqSmך>= xm?Փgԟk coƦ=VKalݤ@7N+1?2QY?2g&,/,9 OggST{0dOggSvT{1q@#$,&(#,), E8#A `Ӗ~3ngmfLg/np`Ӆ}P 3[q+BΧYspZm5EMB*SV>EHAgbW6k}k .Һf} ?dP"%HRUfffywn 0G@Uň.]*پ+w)3 ^ Xť 0/t'oBFzLҎ hxWmל5ldv%'#i m:ݸ>0թb)WLke3.ǛP هWsTuTk^Q#$CO@Wp\\\ї|ӧ5p. OggST{2SR((f_~_vQ=?sxwkn✟Vd KFO 8;u¿/KݛSD89QOggS#T{36%%((rfwv+'" )`X$8@/h$)c !Eˣ;OBUy?ݾ֊zy4lƌI ^6|L`OI' $M(|nt^%($ $ϰzP OggS@T{53 &"(*)m5< .*H)?73S&&mל5^H$ iGO z+jgMm:{> @LP@q9zP./!Hѭ(|Oe)/,luYۥ۶=KݚSڹݭ9ًLȾ.' OggS-T{6L'o뇛̵F544no> m$,\O|a'68h$O|$%mך5޾Y.㬀+>)[sAۜ7m5P0@OsI(P|m'Ou(/Y[U_}M:2RxH,OggS@T{7'_3q;"Hk1v7?]3_ʾⵅ_ʾ) OggST{8$*('")-*!O'=mi-sxժmBرl镇~ E=ӱEm5}AJR]t^ڞIJ~&R>VO%R@-xg`>0IhZ)@*(>:Ͻmߜ}O 6kH m`Ё ^`8e@VvUώ /m53S!*6%Hm5d)pgi}3Ͻ*esڷ;X&Kǟ7~6{jU迶߫С'TQރOz3"Hϗk=xI[6a9#a)=a)=a)Y27OggS/T{9* OggST{: L$*)$"''tߦ^V |{#~o&E}:g]2m~h-OqcwwwmyhV3o>w ʾv ۭ0Ha= RX$߀$L{ff7YjOBxyן&zhH(b?Od ' mW=-_(tcnmל5޷R k^> 3{>9mW۵h ,**m򏲀ɰz7_Ӑ;Dw.߱P+e\K|7zYKnOggS@T{;a OggS6T{<B$*)(#%+,mB\S"#uc'ljOVkUsa$ 8v\M[rb3ܷ)[m=E4'gl9u?Ȣ.rfIkw`I t7x̥<͏nYhL3Ĉ# `>mDQZB60@N04 w tmmך5 smsϽ mWտdhJZH* pT37ޡ` ˺|EG̉Ib d̠vRO>c=om҂?"[yb|>>OggS@T{=( OggST{>D%-+%"*(d9g[q $Dz&M:3$lX-///T볮Z{߫ʾf};0O + R@" ǧT5]*@d^ @UňT {yy$ WHA<)uxP4Ё(*s!6P4 mל5Af@@ ;UXWiHnmל5^??dhDV[C1;gm<5 RP@)Tں44q#!-&ӓӑo ae qo};?9:݁taa0T OggS<T{?\|~XOggST{@n$'&"$%*N_^wOj@^hqTʕ*ab=vW mڵ=Y RtwP8ٺ5Qs;ʾIVhPMJv 6X$@'A}Vj EkO>-3:;xĉH m+tϷ>5xB,  .Vmך^_?p$g>pk}"‹ԣmט5$pJLFRXBj`PX*:@@3'mך5"urUwZ) ncu/mךZ@`/\+\r:X.XmտG *+.8e/N )2Mz%՟z 58Z󧩩~0F[ hYtWw=3'}±xUcժu;i OggS@T{C?!OggS@T{D$()$$)/tq{y]:5H%|/mmi*w^6m5d<֫4)p#u1;ԧ 4ʾϽ;ОL+@w5@m` ``@cH*zRT(G-- 3>{M@H<!,F=$P&C@X*t~+FmWݵ8,O݊f^mڵޮX JU–1:Dm{g{{HS9_׏lϝs(p_7s\TWy4HLx7~]_}'g[S.! OggS@MT{EiOggST{FdX%)'"!))*L۶:` 3!ϭQt4SK޿{NsK[-j6eYlGʾs3IT~D Ps`@$u7 1Z*Hc\"XlA' mל5G$5O)qX}3XlmW۵~> @\EYt4Q>-m5AZ'rE8n"&s#++f%շZ7&wnr$zi_ ilg$* 5~&'%7U?ݱ>ʛ[KnO OggST{GOggS@VT{H (Z%(,&&)+l/ou4jg$V>* _tD m.b&$g@*Wiji/zBʾNx2+ v , D>4@TTh7*uPՋ4wڑ ,{F`>4 lw@*mלl*574 6OqwNx|mךPp}YbBe3c7i)1i%lgO~'mwǛ;a}'݉( $Yj}5 i2C׷[sbzyuln OggS@T{InOggS@T{JOL6$(&##'(,<#Sd͢&M>[9g8R0ZF~?? xqo~|g/5q=X~R> Ȥ@*` h[H"@Ղ)DLjm@v1"Wй7}wiW6|x}C5\s1"@`V.@nҁ:!@Be Wl mך5.f8AV3h mmל52H]~8xC} Egnmڽ{lBJ=\'n/#K7z% &$gLΆckH&YWގvxO.k}/e OggS@^T{K6YOggST{Ly%))##*(|_^}B5&o1#/&-m6 'Vg=i:!n2Bʾ{;0HA #&E:0(M@*87 0ܹݺ4陿~}|C$pȁO gcde xC Ot Wmל5[)I@ßAnmW۵:2?.r$G7@%0DXψsޝF s~b*>T[+y29 47eg9 K_Zҋ OggST{M?OggSfT{NLh$*&%$((,I+kcA `7vI.-0ߨV@@x-")Ϗ6mW5$m= j~I"p3KmטUCX%@<*"ת,sY m5G s.%;(*CHl{e3.Ǜ鹘ӮܐWnU9/Ao@W,dz8W ֚+:êq=/^'', OggST{OVOggS@T{PVex%*&"#(+ᓅ\VjϷt&7RFWWSFn4D;7˽K mg(}/|_xʾf}3ˬ@*G` g& `òO2pܝY;W^׆3 1sT86m5 {k2B<^M^,'_ʾs ?xP\vw\l ,&mm$Hffff_c#)o<Sn1ZW>zxyUhkte߾}@i%f =|P dAjl_mט5bmp@-LF`E&@]̥f+m5g  l@ 1,qRV^wne3)Ǵ ,~KRݭ%x4i)f^|vjux4G+!@͛^} Pҳp:f OggST{SFOggS@wT{T q#)&$$('|O~QIh9INj9 7Q8t3(p=@lKVj&cyleF]Erڻ~;0o&L# ,Ѐ$Hdf& "=U*I5f2*z}`I|nrmD =Pz ?_0mךbI^.,(W? 6-3dmך5C(kҔxk?&mgI AQoq6]*3z!7w&@ɍ_tG*^ⵅ^ OggS@T{Uz>OggS'T{V>x%*(%"'()'=4sصʔHVݿ;ou:+ t>~-ԧ[7g9mڵ=o 9l@WQVe{U6 &Z6ʾ߳;HE6H @ 0g@sz1VZW?[o@5yϥÆ>}zcc#H` NJ, H<$#@eHx  mך^_? @?-u<nm5Obt]4@™]$ISsۯ_esFd].^vI:}^%WDO*+:ROggS@T{X$8%+'"$,(tOvo}\Ѥs?#\o EE7` )'˟×|eO/ZRl rI.O&%R@-8BX$63@U ZU 6ms݊Q?$)''$)+-_ /w5w-`ju<{+6is~?? n|)yQkWi~%mտE^FT@-ӌr#Z Vʾڻy;0aM + \ 4X$x L="@DD0M@Z# "3ZUP]R@ܳL껷׼\rrO ش1PGsH`PSv8mW=5"4`I/[@d Xz?t m:5 rNNjac^ r-m#xX?۟ ңu'&GC\S 6HXTl vEQu OggS@T{[ HOggS8T{\'{%-%&!)(l!UwH!QamSs-:/9ܳs m'U_ou|}|)uCsiV{'Yʾ3IT0?2l ,<@ " PukLw1_ʢ/\ݿ߿߷ðL Oi`>m0K@tN:t5g @P*mmל5墶6^ \CXeԞl:m굽~(@ U^|0 m=O,ҡkKMP䰎6a=9aS"ĶHϽN7; OggST{]PVOggST{^Z$&'%"$.,|<4SjhWځ? \faH~?H4S˛{WVb/_\N=mڽ=pqAv8輖CXgXht+rv)0L ~\ 4%Hp@_@3hjܧ' ގ_}ީٳZ,<)i  1d>E]j >@xBH *<<)!|/mך^_aI .2mS>n#ɏmל5$(qfV _Rd#b9#P[Ba}q~_kA&ٞssdWOj*!m8^Ky)ʹzUTVKY^ OggS@ T{_)/dOggS@ T{`͊%+*&"*.\/jPiO{ѿ=zߣG?Gvk` O:SPЂZPOTWU]]]Wݻ\s5ʾN|2( v 2l#0l uy wwUیDwT*xy@ ?7#HVzI N?#@tlQn ? t-mטU x^)d֗mך5 =GͷWҟkm5>0#S J+~8۾)6c.O#R_֌v~l~~m OggS@ T{aPl5OggS@I!T{b(^)$('%"-.v_^ 55ivj9o7] ?W_m5K tQQlQ[4˙wk^v+' H,D`P*HݯQ/ @@<Fr`N ^y/~_Nn2ǯ8q"6zl$pK4@ sqd e BO@B"mל5[y &@ tGs*TLgzxy$NLte߾%7^C aQ`amW5 YΙޛI|`̩<DVmW۵g  nB5m:5>P@*fNosOHA$櫄㪒Oi9[|{߾u˷U –Tl/lÔkjN}ұ>:ЛTg OggSS"T{eN+*$$*tq$ `\rs}\fyAziS.j'[s"ܾqr(,Q`Z `$ZC``;Hl  mך5$,P>!Wʛ(mך5.=%7 V0Z@6{di Rf{ `S]8v2M/g/TOggS@"T{f))LY5Ӄ HbsTg/jAb^֏|8| OggS#T{g)(##((DQ?LOud5.6Qw\ZKJ۝ ~/y{3EN}/7}kK\~>>ʾ}mR" CX$x`lDZ3 D OZWo ޕ]tذO؈n.}B!8Y:p d3 tx_mךޮ@&tiGߟ_mךK пU{N L im=۷RAAj@K(8 SkTϙWz%ՓIIgSVi e{usu?] OggS@V#T{hl/, ~o$A}۷{Oj{ʴ }/k }/k }/ki_( OggS#T{i&$(,$$*,t/o]Hrbכzl-{H2hMx{& +. 45>V+f6,^s>'ʾ};0L +@wwN ` `km$vwwwjR2 :@`hܙ]y'qڼ(Iic ,A4l`M &v'E6.mט5A,}׋A胒mn.:mך5&shY̒6XvѿDh6is)T^Lcҟ5r HY)g<@MI H/`[6R7-Es|GOggS$T{jA OggS\$T{k D$('%$),+,Mr*uG朻댿mFݭ޿(|ӔgDᇞ묅"Rӌw ٺZZ;rړIi """d`&@ vC@("0@Z# D"ϴ@'{W4ӧO )``>M\`z`, %0 mW5dI<t.p_+?ӣ(kK[mל5Ir;JS"?Od+Ȣ?m={~dmBmʋgSUp ݑ^t.,ha!S/loҶz7vիr?_(* k}| }_6]Зp}OggS$T{lNP OggS@ %T{mAo%))#"'(_^Vjϧ\+BgŔsܡIz7(Vi XL5GENTM#YUhʾww=7) :5H0'Hn  !Ek "XU`{g%O:>>y) m@h3@SVPG `V @~@_mל5ޞ_dZ !CY/lqSmך>= xm?Փgԟk coƦ=VKalݤ@7N+1?2QY?2g&,/,9 OggS@c%T{n\OggS@%T{ot`$,&(#,), E8#A `Ӗ~3ngmfLg/np`Ӆ}P 3[q+BΧYspZm5EMB*SV>EHAgbW6k}k .Һf} ?dP"%HRUfffywn 0G@Uň.]*پ+w)3 ^ Xť 0/t'oBFzLҎ hxWmל5ldv%'#i m:ݸ>0թb)WLke3.ǛP هWsTuTk^Q#$CO@Wp\\\ї|ӧ5p. OggS@&T{p]{OggS@l&T{qY((%%((f_~_vQ=?sxwkn✟Vd KFO 8;u¿/KݛSD89Qrfwv+'" )`X$8@/h$)c !Eˣ;OBUy?ݾ֊zy4lƌI ^6|L`OI' $M(|nt^%($ $ϰzP m5< .*H)?73S&&mל5^H$ iGO z+jgMm:{> @LP@q9zP./!Hѭ(|Oe)/,luYۥ۶=KݚSڹݭ9ًLȾ.' OggSs'T{tt5OggS'T{uZ7$)&$"+'|vG~GI)Cuo뇛̵F544no> m$,\O|a'68h$O|$%mך5޾Y.㬀+>)[sAۜ7m5P0@OsI(P|m'Ou(/Y[U_}M:2RxH,_3q;"Hk1v7?]3_ʾⵅ_ʾ) OggS#(T{vr}OggSP(T{wGRW parlatype-3.0/libparlatype/tests/gst.c000066400000000000000000000127471414030451500201600ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2020 * * 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 . */ #include #include #include #include "gst/gstptaudioasrbin.h" #include "gst/gstptaudioplaybin.h" #include "gst/gstptaudiobin.h" #include "config.h" #include "mock-plugin.h" /* Helpers to turn async operations into sync ------------------------------- */ typedef struct { GAsyncResult *res; GMainLoop *loop; } SyncData; static SyncData create_sync_data (void) { SyncData data; GMainContext *context; context = g_main_context_default (); data.loop = g_main_loop_new (context, FALSE); data.res = NULL; return data; } static void free_sync_data (SyncData data) { g_main_loop_unref (data.loop); g_object_unref (data.res); } static void quit_loop_cb (GstPtAudioAsrBin *bin, GAsyncResult *res, gpointer user_data) { SyncData *data = user_data; data->res = g_object_ref (res); g_main_loop_quit (data->loop); } /* Tests -------------------------------------------------------------------- */ static void gst_audioasrbin (void) { GstPtAudioAsrBin *asr; PtConfig *good, *bad; GFile *testfile; gchar *testpath; GError *error = NULL; gboolean success; SyncData data; /* Create config with existing plugin */ testpath = g_test_build_filename (G_TEST_DIST, "data", "config-mock-plugin.asr", NULL); testfile = g_file_new_for_path (testpath); good = pt_config_new (testfile); g_assert_true (pt_config_is_valid (good)); g_object_unref (testfile); g_free (testpath); /* Create config with missing plugin*/ testpath = g_test_build_filename (G_TEST_DIST, "data", "config-test.asr", NULL); testfile = g_file_new_for_path (testpath); bad = pt_config_new (testfile); g_assert_true (pt_config_is_valid (bad)); g_object_unref (testfile); g_free (testpath); /* Create Test-Element */ asr = GST_PT_AUDIO_ASR_BIN (gst_element_factory_make ("ptaudioasrbin", "testbin")); g_assert_nonnull (asr); g_assert_false (asr->is_configured); /* Apply existing plugin */ data = create_sync_data (); gst_pt_audio_asr_bin_configure_asr_async (asr, good, NULL, (GAsyncReadyCallback) quit_loop_cb, &data); g_main_loop_run (data.loop); success = gst_pt_audio_asr_bin_configure_asr_finish (asr, data.res, &error); g_assert_true (success); g_assert_no_error (error); g_assert_true (asr->is_configured); g_assert_true (gst_pt_audio_asr_bin_is_configured (asr)); free_sync_data (data); /* Apply missing plugin */ data = create_sync_data (); gst_pt_audio_asr_bin_configure_asr_async (asr, bad, NULL, (GAsyncReadyCallback) quit_loop_cb, &data); g_main_loop_run (data.loop); success = gst_pt_audio_asr_bin_configure_asr_finish (asr, data.res, &error); g_assert_false (success); g_assert_error (error, GST_CORE_ERROR, GST_CORE_ERROR_MISSING_PLUGIN); g_assert_false (asr->is_configured); g_assert_false (gst_pt_audio_asr_bin_is_configured (asr)); g_clear_error (&error); free_sync_data (data); g_object_unref (good); g_object_unref (bad); gst_object_unref (asr); } static void gst_audioplaybin_new (void) { GstElement *audioplaybin; gdouble volume; gboolean mute; audioplaybin = gst_element_factory_make ("ptaudioplaybin", "testbin"); g_assert_nonnull (audioplaybin); g_assert_true (GST_IS_STREAM_VOLUME (audioplaybin)); g_object_get (audioplaybin, "volume", &volume, "mute", &mute, NULL); g_assert_cmpfloat (volume, ==, 1.0); g_assert_false (mute); gst_element_set_state (audioplaybin, GST_STATE_READY); g_object_set (audioplaybin, "volume", 0.5, "mute", TRUE, NULL); g_object_get (audioplaybin, "volume", &volume, "mute", &mute, NULL); g_assert_cmpfloat (volume, ==, 0.5); g_assert_true (mute); gst_element_set_state (audioplaybin, GST_STATE_NULL); gst_object_unref (audioplaybin); } static void gst_audiobin_new (void) { GstElement *audiobin; gdouble volume; gboolean mute; audiobin = gst_element_factory_make ("ptaudiobin", "testbin"); g_assert_nonnull (audiobin); g_assert_true (GST_IS_STREAM_VOLUME (audiobin)); g_object_get (audiobin, "volume", &volume, "mute", &mute, NULL); g_assert_cmpfloat (volume, ==, 1.0); g_assert_false (mute); gst_element_set_state (audiobin, GST_STATE_READY); g_object_set (audiobin, "volume", 0.5, "mute", TRUE, NULL); g_object_get (audiobin, "volume", &volume, "mute", &mute, NULL); g_assert_cmpfloat (volume, ==, 0.5); g_assert_true (mute); gst_element_set_state (audiobin, GST_STATE_NULL); gst_object_unref (audiobin); } int main (int argc, char *argv[]) { g_test_init (&argc, &argv, NULL); gst_init (NULL, NULL); gst_pt_audio_asr_bin_register (); gst_pt_audio_play_bin_register (); gst_pt_audio_bin_register (); mock_plugin_register (); g_test_add_func ("/gst/audioasrbin_new", gst_audioasrbin); g_test_add_func ("/gst/audioplaybin_new", gst_audioplaybin_new); g_test_add_func ("/gst/audiobin_new", gst_audiobin_new); return g_test_run (); } parlatype-3.0/libparlatype/tests/meson.build000066400000000000000000000023231414030451500213460ustar00rootroot00000000000000tests = [ 'config', 'gst', 'player', 'waveloader', 'waveviewer', ] test_data = [ 'data/test1.ogg', ] extra_sources = [ '../src/gst/gst-helpers.c', '../src/gst/gst-helpers.h', '../src/gst/gstptaudiobin.c', '../src/gst/gstptaudiobin.h', '../src/gst/gstptaudioasrbin.c', '../src/gst/gstptaudioasrbin.h', '../src/gst/gstptaudioplaybin.c', '../src/gst/gstptaudioplaybin.h', 'mock-plugin.c', 'mock-plugin.h', ] gen_prog = find_program('data/generate_config_data', required: true) config_input = join_paths(meson.current_source_dir(), 'data', 'config-test.asr') asr_config_data = custom_target( 'asr-config-data', command: [ gen_prog, config_input, meson.current_build_dir() ], input: config_input, output: 'config-test.asr', # actually many more ) foreach t: tests exe = executable( t, '@0@.c'.format(t), extra_sources, install: false, dependencies: [ config_h, libparlatype_dep, gstreamer, gstreamer_audio, ], c_args: '-DPARLATYPE_COMPILATION', ) test( t, exe, args: [ '--tap', '-k' ], env: [ 'G_TEST_SRCDIR=@0@'.format(meson.current_source_dir()), 'G_TEST_BUILDDIR=@0@'.format(meson.current_build_dir()), 'LANGUAGE=C', ], depends: asr_config_data, ) endforeach parlatype-3.0/libparlatype/tests/mock-plugin.c000066400000000000000000000157041414030451500216040ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2021 * * 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 . */ #include #include "mock-plugin.h" struct _MockPluginPrivate { gchar *prop_file; gchar *prop_string; gint prop_int; gfloat prop_float; gdouble prop_double; gboolean prop_bool; gboolean prop_not_writable; }; enum { PROP_0, PROP_FILE, PROP_STRING, PROP_INT, PROP_FLOAT, PROP_DOUBLE, PROP_BOOL, PROP_NOT_WRITABLE, N_PROPERTIES }; static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, }; static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ( "sink", GST_PAD_SINK, GST_PAD_ALWAYS, GST_STATIC_CAPS ("audio/x-raw,format=S16LE,rate=16000,channels=1") ); static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ( "src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS ("audio/x-raw,format=S16LE,rate=16000,channels=1") ); G_DEFINE_TYPE_WITH_PRIVATE (MockPlugin, mock_plugin, GST_TYPE_ELEMENT) static gboolean mock_plugin_event (GstPad *pad, GstObject *parent, GstEvent *event) { return gst_pad_event_default (pad, parent, event); } static GstFlowReturn mock_plugin_chain (GstPad *pad, GstObject *parent, GstBuffer *buf) { MockPlugin *self = MOCK_PLUGIN (parent); return gst_pad_push (self->srcpad, buf); } static void mock_plugin_init (MockPlugin *self) { self->priv = mock_plugin_get_instance_private (self); self->sinkpad = gst_pad_new_from_static_template (&sink_factory, "sink"); GST_PAD_SET_PROXY_CAPS (self->sinkpad); gst_pad_set_chain_function (self->sinkpad, mock_plugin_chain); gst_pad_set_event_function (self->sinkpad, mock_plugin_event); gst_element_add_pad (GST_ELEMENT (self), self->sinkpad); self->srcpad = gst_pad_new_from_static_template (&src_factory, "src"); GST_PAD_SET_PROXY_CAPS (self->srcpad); gst_element_add_pad (GST_ELEMENT (self), self->srcpad); } static void mock_plugin_finalize (GObject *object) { MockPlugin *self = MOCK_PLUGIN (object); g_free (self->priv->prop_file); g_free (self->priv->prop_string); G_OBJECT_CLASS (mock_plugin_parent_class)->finalize (object); } static void mock_plugin_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { MockPlugin *self = MOCK_PLUGIN (object); switch (property_id) { case PROP_FILE: g_free (self->priv->prop_file); self->priv->prop_file = g_value_dup_string (value); break; case PROP_STRING: g_free (self->priv->prop_string); self->priv->prop_string = g_value_dup_string (value); break; case PROP_INT: self->priv->prop_int = g_value_get_int (value); break; case PROP_FLOAT: self->priv->prop_float = g_value_get_float (value); break; case PROP_DOUBLE: self->priv->prop_double = g_value_get_double (value); break; case PROP_BOOL: self->priv->prop_bool = g_value_get_boolean (value); break; case PROP_NOT_WRITABLE: self->priv->prop_not_writable = g_value_get_int (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void mock_plugin_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { MockPlugin *self = MOCK_PLUGIN (object); switch (property_id) { case PROP_FILE: g_value_set_string (value, self->priv->prop_file); break; case PROP_STRING: g_value_set_string (value, self->priv->prop_string); break; case PROP_INT: g_value_set_int (value, self->priv->prop_int); break; case PROP_FLOAT: g_value_set_float (value, self->priv->prop_float); break; case PROP_DOUBLE: g_value_set_double (value, self->priv->prop_double); break; case PROP_BOOL: g_value_set_boolean (value, self->priv->prop_bool); break; case PROP_NOT_WRITABLE: g_value_set_int (value, self->priv->prop_not_writable); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void mock_plugin_class_init (MockPluginClass *klass) { GObjectClass *object_class = (GObjectClass *) klass; GstElementClass *element_class = (GstElementClass *) klass;; object_class->set_property = mock_plugin_set_property; object_class->get_property = mock_plugin_get_property; object_class->finalize = mock_plugin_finalize; obj_properties[PROP_FILE] = g_param_spec_string ( "file", "file", "file", NULL, G_PARAM_READWRITE); obj_properties[PROP_STRING] = g_param_spec_string ( "string", "string", "string", NULL, G_PARAM_READWRITE); obj_properties[PROP_INT] = g_param_spec_int ( "int", "int", "int", -100, 100, 0, G_PARAM_READWRITE); obj_properties[PROP_FLOAT] = g_param_spec_float ( "float", "float", "float", -G_MAXFLOAT, G_MAXFLOAT, 0, G_PARAM_READWRITE); obj_properties[PROP_DOUBLE] = g_param_spec_double ( "double", "double", "double", -G_MAXDOUBLE, G_MAXDOUBLE, 0, G_PARAM_READWRITE); obj_properties[PROP_BOOL] = g_param_spec_boolean ( "bool", "bool", "bool", FALSE, G_PARAM_READWRITE); obj_properties[PROP_NOT_WRITABLE] = g_param_spec_int ( "not-writable", "not-writable", "not-writable", G_MININT, G_MAXINT, 0, G_PARAM_READABLE); g_object_class_install_properties ( G_OBJECT_CLASS (klass), N_PROPERTIES, obj_properties); gst_element_class_add_pad_template ( element_class, gst_static_pad_template_get (&src_factory)); gst_element_class_add_pad_template ( element_class, gst_static_pad_template_get (&sink_factory)); gst_element_class_set_static_metadata ( element_class, "Parlatype Mock Plugin", "Filter/Audio", "Just for testing", "Gabor Karsay "); } static gboolean plugin_init (GstPlugin *plugin) { if (!gst_element_register(plugin, "ptmockplugin", GST_RANK_NONE, MOCK_TYPE_PLUGIN)) return FALSE; return TRUE; } gboolean mock_plugin_register (void) { return gst_plugin_register_static ( GST_VERSION_MAJOR, GST_VERSION_MINOR, "ptmockplugin", "Parlatype Mock Plugin for testing", plugin_init, "1.0", "LGPL", "libparlatype", "Parlatype", "https://www.parlatype.org/"); } MockPlugin * mock_plugin_new (void) { return g_object_new (MOCK_TYPE_PLUGIN, NULL); } parlatype-3.0/libparlatype/tests/mock-plugin.h000066400000000000000000000026621414030451500216100ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2021 * * 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 . */ #ifndef MOCK_PLUGIN_H #define MOCK_PLUGIN_H #include #define MOCK_TYPE_PLUGIN (mock_plugin_get_type()) #define MOCK_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), MOCK_TYPE_PLUGIN, MockPlugin)) #define MOCK_IS_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), MOCK_TYPE_PLUGIN)) typedef struct _MockPlugin MockPlugin; typedef struct _MockPluginClass MockPluginClass; typedef struct _MockPluginPrivate MockPluginPrivate; struct _MockPlugin { GstElement parent; GstPad *sinkpad; GstPad *srcpad; MockPluginPrivate *priv; }; struct _MockPluginClass { GstElementClass parent_class; }; GType mock_plugin_get_type (void) G_GNUC_CONST; gboolean mock_plugin_register (void); MockPlugin* mock_plugin_new (void); #endif parlatype-3.0/libparlatype/tests/player.c000066400000000000000000000511301414030451500206440ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2017-2018 * * 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 . */ #include #include /* error domain */ #include #include "mock-plugin.h" /* Fixture ------------------------------------------------------------------ */ typedef struct { PtPlayer *testplayer; gchar *testfile; gchar *testuri; } PtPlayerFixture; static void pt_player_fixture_set_up (PtPlayerFixture *fixture, gconstpointer user_data) { fixture->testplayer = NULL; gchar *path; GFile *file; gboolean success; fixture->testplayer = pt_player_new (); path = g_test_build_filename (G_TEST_DIST, "data", "tick-10sec.ogg", NULL); /* In make distcheck the path is something like /_build/../data/test1.ogg". Although this works we need a "pretty" path to compare and assert it's the same. To get rid of the "/_build/.." take a detour using GFile. */ file = g_file_new_for_path (path); fixture->testfile = g_file_get_path (file); fixture->testuri = g_file_get_uri (file); success = pt_player_open_uri (fixture->testplayer, fixture->testuri); g_assert_true (success); g_object_unref (file); g_free (path); } static void pt_player_fixture_tear_down (PtPlayerFixture *fixture, gconstpointer user_data) { g_clear_object (&fixture->testplayer); g_free (fixture->testfile); g_free (fixture->testuri); } /* Tests -------------------------------------------------------------------- */ static void player_new (void) { /* create new PtPlayer and test initial properties */ PtPlayer *testplayer; /* Construction properties */ gdouble speed, volume; gboolean t_fixed; gint precision; gchar *t_delimiter, *t_separator; /* Read/write properties TODO why not construction? */ gboolean repeat_all, repeat_selection; gint pause, back, forward; testplayer = pt_player_new (); g_assert_true (PT_IS_PLAYER (testplayer)); g_object_set (testplayer, "pause", 0, "back", 10000, "forward", 10000, "repeat-all", FALSE, "repeat-selection", FALSE, NULL); g_object_get (testplayer, "speed", &speed, "volume", &volume, "timestamp-precision", &precision, "timestamp-fixed", &t_fixed, "timestamp-delimiter", &t_delimiter, "timestamp-fraction-sep", &t_separator, "pause", &pause, "back", &back, "forward", &forward, "repeat-all", &repeat_all, "repeat-selection", &repeat_selection, NULL); g_assert_cmpfloat (speed, ==, 1.0); g_assert_cmpfloat (volume, ==, 1.0); g_assert_false (t_fixed); g_assert_false (repeat_all); g_assert_false (repeat_selection); g_assert_cmpint (precision, ==, PT_PRECISION_SECOND_10TH); g_assert_cmpint (pause, ==, 0); g_assert_cmpint (back, ==, 10000); g_assert_cmpint (forward, ==, 10000); g_assert_cmpstr (t_delimiter, ==, "#"); g_assert_cmpstr (t_separator, ==, "."); g_assert_cmpint (pt_player_get_pause (testplayer), ==, pause); g_assert_cmpint (pt_player_get_back (testplayer), ==, back); g_assert_cmpint (pt_player_get_forward (testplayer), ==, forward); g_free (t_delimiter); g_free (t_separator); g_object_unref (testplayer); } typedef struct { GQuark domain; gint code; GMainLoop *loop; } ErrorCBData; static void error_cb (PtPlayer *player, GError *error, gpointer user_data) { ErrorCBData *data = user_data; g_assert_error (error, data->domain, data->code); g_main_loop_quit (data->loop); } static void player_open_fail (void) { PtPlayer *player; ErrorCBData data; gboolean success; gchar *path; GFile *file; gchar *uri; player = pt_player_new (); /* Fails to open "foo" */ data.loop = g_main_loop_new (g_main_context_default (), FALSE); data.domain = GST_RESOURCE_ERROR; data.code = GST_RESOURCE_ERROR_NOT_FOUND; g_signal_connect (player, "error", G_CALLBACK (error_cb), &data); success = pt_player_open_uri (player, "foo"); g_main_loop_run (data.loop); g_assert_false (success); /* Fails to open a valid path, not existing file. * Error domain and code unchanged. */ path = g_test_build_filename (G_TEST_DIST, "data", "foo", NULL); file = g_file_new_for_path (path); uri = g_file_get_uri (file); success = pt_player_open_uri (player, uri); g_main_loop_run (data.loop); g_assert_false (success); g_object_unref (file); g_free (path); g_free (uri); /* Fails to open an existing file of wrong type */ data.domain = GST_STREAM_ERROR; data.code = GST_STREAM_ERROR_WRONG_TYPE; path = g_test_build_filename (G_TEST_DIST, "data", "README", NULL); file = g_file_new_for_path (path); uri = g_file_get_uri (file); success = pt_player_open_uri (player, uri); g_main_loop_run (data.loop); g_assert_false (success); g_object_unref (file); g_free (path); g_free (uri); g_main_loop_unref (data.loop); g_object_unref (player); } static void player_open_ogg (PtPlayerFixture *fixture, gconstpointer user_data) { /* open test file, get and check uri and filename */ gchar *getchar; getchar = pt_player_get_uri (fixture->testplayer); g_assert_cmpstr (getchar, ==, fixture->testuri); g_free (getchar); getchar = pt_player_get_filename (fixture->testplayer); g_assert_cmpstr (getchar, ==, "tick-10sec.ogg"); g_free (getchar); } static void player_selections (PtPlayerFixture *fixture, gconstpointer user_data) { /* set, get and clear a selection */ gboolean selection; selection = pt_player_selection_active (fixture->testplayer); g_assert_false (selection); pt_player_set_selection (fixture->testplayer, 1000, 2000); selection = pt_player_selection_active (fixture->testplayer); g_assert_true (selection); pt_player_clear_selection (fixture->testplayer); selection = pt_player_selection_active (fixture->testplayer); g_assert_false (selection); } static void player_timestamps (PtPlayerFixture *fixture, gconstpointer user_data) { gchar *timestamp = NULL; gchar *timestamp2; gboolean valid; /* test for delimiters */ g_object_set (fixture->testplayer, "timestamp-delimiter", "#", NULL); timestamp = pt_player_get_timestamp_for_time (fixture->testplayer, 0, 1); g_assert_cmpstr (timestamp, ==, "#0:00.0#"); g_free (timestamp); g_object_set (fixture->testplayer, "timestamp-delimiter", "(", NULL); timestamp = pt_player_get_timestamp_for_time (fixture->testplayer, 0, 1); g_assert_cmpstr (timestamp, ==, "(0:00.0)"); g_free (timestamp); g_object_set (fixture->testplayer, "timestamp-delimiter", "[", NULL); timestamp = pt_player_get_timestamp_for_time (fixture->testplayer, 0, 1); g_assert_cmpstr (timestamp, ==, "[0:00.0]"); g_free (timestamp); g_object_set (fixture->testplayer, "timestamp-delimiter", "None", NULL); timestamp = pt_player_get_timestamp_for_time (fixture->testplayer, 0, 1); g_assert_cmpstr (timestamp, ==, "0:00.0"); g_free (timestamp); g_object_set (fixture->testplayer, "timestamp-delimiter", "something-else", NULL); timestamp = pt_player_get_timestamp_for_time (fixture->testplayer, 0, 1); g_assert_cmpstr (timestamp, ==, "#0:00.0#"); g_free (timestamp); g_object_set (fixture->testplayer, "timestamp-delimiter", NULL, NULL); timestamp = pt_player_get_timestamp_for_time (fixture->testplayer, 0, 1); g_assert_cmpstr (timestamp, ==, "#0:00.0#"); g_free (timestamp); /* test for fraction separator */ g_object_set (fixture->testplayer, "timestamp-fraction-sep", ".", NULL); timestamp = pt_player_get_timestamp_for_time (fixture->testplayer, 0, 1); g_assert_cmpstr (timestamp, ==, "#0:00.0#"); g_free (timestamp); g_object_set (fixture->testplayer, "timestamp-fraction-sep", "-", NULL); timestamp = pt_player_get_timestamp_for_time (fixture->testplayer, 0, 1); g_assert_cmpstr (timestamp, ==, "#0:00-0#"); g_free (timestamp); g_object_set (fixture->testplayer, "timestamp-fraction-sep", "something-else", NULL); timestamp = pt_player_get_timestamp_for_time (fixture->testplayer, 0, 1); g_assert_cmpstr (timestamp, ==, "#0:00.0#"); g_free (timestamp); g_object_set (fixture->testplayer, "timestamp-fraction-sep", NULL, NULL); timestamp = pt_player_get_timestamp_for_time (fixture->testplayer, 0, 1); g_assert_cmpstr (timestamp, ==, "#0:00.0#"); g_free (timestamp); /* Test all code paths of pt_player_get_timestamp_for_time */ g_object_set (fixture->testplayer, "timestamp-fixed", TRUE, "timestamp-fraction-sep", ".", NULL); g_object_set (fixture->testplayer, "timestamp-precision", PT_PRECISION_SECOND, NULL); timestamp = pt_player_get_timestamp_for_time (fixture->testplayer, 0, 1); g_assert_cmpstr (timestamp, ==, "#00:00:00#"); g_free (timestamp); g_object_set (fixture->testplayer, "timestamp-precision", PT_PRECISION_SECOND_10TH, NULL); timestamp = pt_player_get_timestamp_for_time (fixture->testplayer, 0, 1); g_assert_cmpstr (timestamp, ==, "#00:00:00.0#"); g_free (timestamp); g_object_set (fixture->testplayer, "timestamp-precision", PT_PRECISION_SECOND_100TH, NULL); timestamp = pt_player_get_timestamp_for_time (fixture->testplayer, 0, 1); g_assert_cmpstr (timestamp, ==, "#00:00:00.00#"); g_free (timestamp); g_object_set (fixture->testplayer, "timestamp-fixed", FALSE, NULL); g_object_set (fixture->testplayer, "timestamp-precision", PT_PRECISION_SECOND, NULL); timestamp = pt_player_get_timestamp_for_time (fixture->testplayer, 0, 1); g_assert_cmpstr (timestamp, ==, "#0:00#"); g_free (timestamp); timestamp = pt_player_get_timestamp_for_time (fixture->testplayer, 0, 3600000); g_assert_cmpstr (timestamp, ==, "#0:00:00#"); g_free (timestamp); g_object_set (fixture->testplayer, "timestamp-precision", PT_PRECISION_SECOND_10TH, NULL); timestamp = pt_player_get_timestamp_for_time (fixture->testplayer, 0, 1); g_assert_cmpstr (timestamp, ==, "#0:00.0#"); g_free (timestamp); timestamp = pt_player_get_timestamp_for_time (fixture->testplayer, 0, 3600000); g_assert_cmpstr (timestamp, ==, "#0:00:00.0#"); g_free (timestamp); g_object_set (fixture->testplayer, "timestamp-precision", PT_PRECISION_SECOND_100TH, NULL); timestamp = pt_player_get_timestamp_for_time (fixture->testplayer, 0, 1); g_assert_cmpstr (timestamp, ==, "#0:00.00#"); g_free (timestamp); timestamp = pt_player_get_timestamp_for_time (fixture->testplayer, 0, 3600000); g_assert_cmpstr (timestamp, ==, "#0:00:00.00#"); g_free (timestamp); /* valid timestamps */ g_assert_true (pt_player_string_is_timestamp (fixture->testplayer, "#0:01.2#", FALSE)); g_assert_true (pt_player_string_is_timestamp (fixture->testplayer, "0:01.2", FALSE)); g_assert_true (pt_player_string_is_timestamp (fixture->testplayer, "(0:01.2)", FALSE)); g_assert_true (pt_player_string_is_timestamp (fixture->testplayer, "[0:01.2]", FALSE)); g_assert_true (pt_player_string_is_timestamp (fixture->testplayer, "#0:01.21#", FALSE)); g_assert_true (pt_player_string_is_timestamp (fixture->testplayer, "#0:01#", FALSE)); g_assert_true (pt_player_string_is_timestamp (fixture->testplayer, "#00:00:01.2#", FALSE)); g_assert_true (pt_player_string_is_timestamp (fixture->testplayer, "#0:01-2#", FALSE)); g_assert_true (pt_player_string_is_timestamp (fixture->testplayer, "0:01-2", FALSE)); g_assert_true (pt_player_string_is_timestamp (fixture->testplayer, "(0:01-2)", FALSE)); g_assert_true (pt_player_string_is_timestamp (fixture->testplayer, "[0:01-2]", FALSE)); g_assert_true (pt_player_string_is_timestamp (fixture->testplayer, "#0:01-21#", FALSE)); g_assert_true (pt_player_string_is_timestamp (fixture->testplayer, "#00:00:01-2#", FALSE)); /* single/wrong delimiters */ g_assert_false (pt_player_string_is_timestamp (fixture->testplayer, "#0:01.2", FALSE)); g_assert_false (pt_player_string_is_timestamp (fixture->testplayer, "0:01.2#", FALSE)); g_assert_false (pt_player_string_is_timestamp (fixture->testplayer, "(0:01.2", FALSE)); g_assert_false (pt_player_string_is_timestamp (fixture->testplayer, "[0:01.2)", FALSE)); g_assert_false (pt_player_string_is_timestamp (fixture->testplayer, "@0:01.2", FALSE)); /* too many digits */ g_assert_false (pt_player_string_is_timestamp (fixture->testplayer, "#0:001.2#", FALSE)); g_assert_false (pt_player_string_is_timestamp (fixture->testplayer, "#0:01.200#", FALSE)); g_assert_false (pt_player_string_is_timestamp (fixture->testplayer, "#000:01.2#", FALSE)); /* sec >= 60, min >= 60 */ g_assert_false (pt_player_string_is_timestamp (fixture->testplayer, "#0:60.2#", FALSE)); g_assert_false (pt_player_string_is_timestamp (fixture->testplayer, "#0:71.2#", FALSE)); /* not enough digits */ g_assert_false (pt_player_string_is_timestamp (fixture->testplayer, "#:01.2#", FALSE)); g_assert_false (pt_player_string_is_timestamp (fixture->testplayer, "#0:1.2#", FALSE)); /* wrong delimiters */ g_assert_false (pt_player_string_is_timestamp (fixture->testplayer, "(0.01.2)", FALSE)); g_assert_false (pt_player_string_is_timestamp (fixture->testplayer, "#0.01.2#", FALSE)); g_assert_false (pt_player_string_is_timestamp (fixture->testplayer, "#0:01:2#", FALSE)); /* too big, not valid in the test file */ g_assert_false (pt_player_string_is_timestamp (fixture->testplayer, "#01:00.0#", TRUE)); g_assert_cmpint (60200, ==, pt_player_get_timestamp_position (fixture->testplayer, "00:01:00-2", FALSE)); pt_player_jump_to_position (fixture->testplayer, 1000); timestamp = pt_player_get_timestamp (fixture->testplayer); g_assert_nonnull (timestamp); valid = pt_player_string_is_timestamp (fixture->testplayer, timestamp, TRUE); g_assert_true (valid); pt_player_jump_to_position (fixture->testplayer, 0); timestamp2 = pt_player_get_timestamp (fixture->testplayer); g_assert_cmpstr (timestamp, !=, timestamp2); g_free (timestamp2); pt_player_goto_timestamp (fixture->testplayer, timestamp); timestamp2 = pt_player_get_timestamp (fixture->testplayer); g_assert_cmpstr (timestamp, ==, timestamp2); g_free (timestamp); g_free (timestamp2); } static void player_volume_speed (PtPlayerFixture *fixture, gconstpointer user_data) { /* set speed and volume properties */ PtPlayer *bind_player; gdouble speed, volume; pt_player_set_volume (fixture->testplayer, 0.7); pt_player_set_speed (fixture->testplayer, 0.7); g_object_get (fixture->testplayer, "speed", &speed, "volume", &volume, NULL); g_assert_cmpfloat (speed, ==, 0.7); /* some audiosinks (pulsesink, directsoundsink) need a tolerance */ g_assert_cmpfloat_with_epsilon (volume, 0.7, 0.00001); /* mute doesn't change the volume */ pt_player_set_mute (fixture->testplayer, TRUE); g_object_get (fixture->testplayer, "volume", &volume, NULL); g_assert_cmpfloat_with_epsilon (volume, 0.7, 0.00001); g_assert_true (pt_player_get_mute (fixture->testplayer)); pt_player_set_mute (fixture->testplayer, FALSE); g_object_get (fixture->testplayer, "volume", &volume, NULL); g_assert_cmpfloat_with_epsilon (volume, 0.7, 0.00001); g_assert_false (pt_player_get_mute (fixture->testplayer)); /* check bind property */ bind_player = pt_player_new (); g_object_bind_property (fixture->testplayer, "volume", bind_player, "volume", G_BINDING_DEFAULT); g_object_bind_property (fixture->testplayer, "speed", bind_player, "speed", G_BINDING_DEFAULT); pt_player_set_volume (fixture->testplayer, 0.5); pt_player_set_speed (fixture->testplayer, 0.5); g_object_get (bind_player, "speed", &speed, "volume", &volume, NULL); g_assert_cmpfloat (volume, ==, 0.5); g_assert_cmpfloat (speed, ==, 0.5); g_object_unref (bind_player); } static void player_timestrings (PtPlayerFixture *fixture, gconstpointer user_data) { gchar *timestring; /* check time strings at current position */ pt_player_jump_to_position (fixture->testplayer, 1000); timestring = pt_player_get_current_time_string (fixture->testplayer, PT_PRECISION_SECOND); g_assert_cmpstr (timestring, ==, "0:01"); g_free (timestring); timestring = pt_player_get_current_time_string (fixture->testplayer, PT_PRECISION_SECOND_10TH); g_assert_cmpstr (timestring, ==, "0:01.0"); g_free (timestring); timestring = pt_player_get_current_time_string (fixture->testplayer, PT_PRECISION_SECOND_100TH); g_assert_cmpstr (timestring, ==, "0:01.00"); g_free (timestring); /* check duration time strings for given test file */ timestring = pt_player_get_duration_time_string (fixture->testplayer, PT_PRECISION_SECOND); g_assert_cmpstr (timestring, ==, "0:09"); g_free (timestring); timestring = pt_player_get_duration_time_string (fixture->testplayer, PT_PRECISION_SECOND_10TH); g_assert_cmpstr (timestring, ==, "0:09.9"); g_free (timestring); timestring = pt_player_get_duration_time_string (fixture->testplayer, PT_PRECISION_SECOND_100TH); g_assert_cmpstr (timestring, ==, "0:09.98"); g_free (timestring); /* check arbitrary time strings, duration < 10 min, no rounding */ timestring = pt_player_get_time_string (1560, 10000, PT_PRECISION_SECOND); g_assert_cmpstr (timestring, ==, "0:01"); g_free (timestring); timestring = pt_player_get_time_string (1560, 10000, PT_PRECISION_SECOND_10TH); g_assert_cmpstr (timestring, ==, "0:01.5"); g_free (timestring); timestring = pt_player_get_time_string (1560, 10000, PT_PRECISION_SECOND_100TH); g_assert_cmpstr (timestring, ==, "0:01.56"); g_free (timestring); /* duration >= 10 min */ timestring = pt_player_get_time_string (1560, 600000, PT_PRECISION_SECOND); g_assert_cmpstr (timestring, ==, "00:01"); g_free (timestring); timestring = pt_player_get_time_string (1560, 600000, PT_PRECISION_SECOND_10TH); g_assert_cmpstr (timestring, ==, "00:01.5"); g_free (timestring); timestring = pt_player_get_time_string (1560, 600000, PT_PRECISION_SECOND_100TH); g_assert_cmpstr (timestring, ==, "00:01.56"); g_free (timestring); /* duration >= 1 hour */ timestring = pt_player_get_time_string (1560, 3600000, PT_PRECISION_SECOND); g_assert_cmpstr (timestring, ==, "0:00:01"); g_free (timestring); timestring = pt_player_get_time_string (1560, 3600000, PT_PRECISION_SECOND_10TH); g_assert_cmpstr (timestring, ==, "0:00:01.5"); g_free (timestring); timestring = pt_player_get_time_string (1560, 3600000, PT_PRECISION_SECOND_100TH); g_assert_cmpstr (timestring, ==, "0:00:01.56"); g_free (timestring); } static void player_config_loadable (void) { PtPlayer *testplayer; PtConfig *good, *bad; GFile *testfile; gchar *testpath; gboolean success; /* Create player */ testplayer = pt_player_new (); g_assert_true (PT_IS_PLAYER (testplayer)); mock_plugin_register (); /* Create config with existing plugin */ testpath = g_test_build_filename (G_TEST_DIST, "data", "config-mock-plugin.asr", NULL); testfile = g_file_new_for_path (testpath); good = pt_config_new (testfile); g_assert_true (pt_config_is_valid (good)); g_object_unref (testfile); g_free (testpath); /* Create config with missing plugin*/ testpath = g_test_build_filename (G_TEST_DIST, "data", "config-test.asr", NULL); testfile = g_file_new_for_path (testpath); bad = pt_config_new (testfile); g_assert_true (pt_config_is_valid (bad)); g_object_unref (testfile); g_free (testpath); success = pt_player_config_is_loadable (testplayer, good); g_assert_true (success); success = pt_player_config_is_loadable (testplayer, bad); g_assert_false (success); g_object_unref (good); g_object_unref (bad); g_object_unref (testplayer); } int main (int argc, char *argv[]) { g_test_init (&argc, &argv, NULL); g_test_add_func ("/player/new", player_new); g_test_add_func ("/player/open-fail", player_open_fail); g_test_add ("/player/open-ogg", PtPlayerFixture, NULL, pt_player_fixture_set_up, player_open_ogg, pt_player_fixture_tear_down); g_test_add ("/player/selections", PtPlayerFixture, NULL, pt_player_fixture_set_up, player_selections, pt_player_fixture_tear_down); g_test_add ("/player/timestamps", PtPlayerFixture, NULL, pt_player_fixture_set_up, player_timestamps, pt_player_fixture_tear_down); g_test_add ("/player/volume_speed", PtPlayerFixture, NULL, pt_player_fixture_set_up, player_volume_speed, pt_player_fixture_tear_down); g_test_add ("/player/timestrings", PtPlayerFixture, NULL, pt_player_fixture_set_up, player_timestrings, pt_player_fixture_tear_down); g_test_add_func ("/player/config-loadable", player_config_loadable); return g_test_run (); } parlatype-3.0/libparlatype/tests/waveloader.c000066400000000000000000000301271414030451500215040ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2017 * * 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 . */ #include #include /* error domain */ #include /* Helpers to turn async operations into sync ------------------------------- */ typedef struct { GAsyncResult *res; GMainLoop *loop; } SyncData; static SyncData create_sync_data (void) { SyncData data; GMainContext *context; context = g_main_context_default (); data.loop = g_main_loop_new (context, FALSE); data.res = NULL; return data; } static void free_sync_data (SyncData data) { g_main_loop_unref (data.loop); g_object_unref (data.res); } static void quit_loop_cb (PtWaveloader *wl, GAsyncResult *res, gpointer user_data) { SyncData *data = user_data; data->res = g_object_ref (res); g_main_loop_quit (data->loop); } /* Other helpers------------------------------------------------------------- */ static PtWaveloader* wl_with_test_uri (const gchar *name) { PtWaveloader *wl; gchar *path; gchar *uri; GFile *file; path = g_test_build_filename (G_TEST_DIST, "data", name, NULL); file = g_file_new_for_path (path); uri = g_file_get_uri (file); wl = pt_waveloader_new (uri); g_free (uri); g_free (path); g_object_unref (file); return wl; } /* Tests -------------------------------------------------------------------- */ static void waveloader_new (void) { /* Test construction and setting/getting properties */ PtWaveloader *wl; gchar *uri; wl = pt_waveloader_new (NULL); g_assert_true (PT_IS_WAVELOADER (wl)); g_object_get (wl, "uri", &uri, NULL); g_assert_null (uri); g_object_unref (wl); wl = pt_waveloader_new ("file"); g_assert_true (PT_IS_WAVELOADER (wl)); g_object_get (wl, "uri", &uri, NULL); g_assert_cmpstr (uri, ==, "file"); g_free (uri); g_object_set (wl, "uri", "some-other-file", NULL); g_object_get (wl, "uri", &uri, NULL); g_assert_cmpstr (uri, ==, "some-other-file"); g_free (uri); g_object_unref (wl); } static void waveloader_load_fail (void) { /* Test loading not existent file: should fail and return error */ PtWaveloader *wl; SyncData data; GError *error = NULL; gboolean success; data = create_sync_data (); wl = pt_waveloader_new ("file:///some-file-that-does-not-exist"); pt_waveloader_load_async (wl, 100, NULL, (GAsyncReadyCallback) quit_loop_cb, &data); g_main_loop_run (data.loop); success = pt_waveloader_load_finish (wl, data.res, &error); g_assert_false (success); g_assert_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_NOT_FOUND); g_clear_error (&error); free_sync_data (data); g_object_unref (wl); } static void waveloader_load_cancel (void) { /* Test cancelling load operation: should cancel and return error */ PtWaveloader *wl; GCancellable *cancel; SyncData data; GError *error = NULL; gboolean success; data = create_sync_data (); wl = wl_with_test_uri ("tick-10sec.ogg"); cancel = g_cancellable_new (); pt_waveloader_load_async (wl, 100, cancel, (GAsyncReadyCallback) quit_loop_cb, &data); g_cancellable_cancel (cancel); g_main_loop_run (data.loop); success = pt_waveloader_load_finish (wl, data.res, &error); g_assert_false (success); g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CANCELLED); g_clear_error (&error); free_sync_data (data); g_object_unref (cancel); g_object_unref (wl); } static void waveloader_resize_cancel (void) { /* Test cancelling resize operation: should fail and return error */ PtWaveloader *wl; GCancellable *cancel; SyncData data; GError *error = NULL; gboolean success; data = create_sync_data (); wl = wl_with_test_uri ("tick-10sec.ogg"); cancel = g_cancellable_new (); pt_waveloader_load_async (wl, 100, NULL, (GAsyncReadyCallback) quit_loop_cb, &data); g_main_loop_run (data.loop); success = pt_waveloader_load_finish (wl, data.res, &error); g_assert_true (success); g_assert_no_error (error); g_object_unref (data.res); pt_waveloader_resize_async (wl, 100, cancel, (GAsyncReadyCallback) quit_loop_cb, &data); g_cancellable_cancel (cancel); g_main_loop_run (data.loop); success = pt_waveloader_resize_finish (wl, data.res, &error); g_assert_false (success); g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CANCELLED); g_clear_error (&error); free_sync_data (data); g_object_unref (cancel); g_object_unref (wl); } static void waveloader_resize_without_load (void) { /* Test resize operation without loading before: should fail and return error */ PtWaveloader *wl; SyncData data; GError *error = NULL; gboolean success; data = create_sync_data (); wl = wl_with_test_uri ("tick-10sec.ogg"); pt_waveloader_resize_async (wl, 100, NULL, (GAsyncReadyCallback) quit_loop_cb, &data); g_main_loop_run (data.loop); success = pt_waveloader_load_finish (wl, data.res, &error); g_assert_false (success); g_assert_error (error, GST_CORE_ERROR, GST_CORE_ERROR_FAILED); g_clear_error (&error); free_sync_data (data); g_object_unref (wl); } static void waveloader_load_pending (void) { /* Test load operation without waiting for or cancelling previous load * operation: should fail and return error */ PtWaveloader *wl; SyncData data; GError *error = NULL; gboolean success; data = create_sync_data (); wl = wl_with_test_uri ("tick-10sec.ogg"); pt_waveloader_load_async (wl, 100, NULL, NULL, NULL); pt_waveloader_load_async (wl, 100, NULL, (GAsyncReadyCallback) quit_loop_cb, &data); g_main_loop_run (data.loop); success = pt_waveloader_load_finish (wl, data.res, &error); g_assert_false (success); g_assert_error (error, GST_CORE_ERROR, GST_CORE_ERROR_FAILED); g_clear_error (&error); free_sync_data (data); g_object_unref (wl); } static void waveloader_load_unref (void) { /* Test unreffing waveloader while it is loading. Should dispose * gracefully. */ PtWaveloader *wl; wl = wl_with_test_uri ("tick-10sec.ogg"); pt_waveloader_load_async (wl, 100, NULL, NULL, NULL); g_object_unref (wl); } static gint array_emit_count = 0; static gint progress_emit_count = 0; static gdouble progress1 = 0; static gdouble progress2 = 0; static void progress_cb (PtWaveloader *wl, gdouble progress) { progress_emit_count++; if (progress_emit_count == 1) progress1 = progress; else if (progress_emit_count == 2) progress2 = progress; } static void array_size_changed_cb (PtWaveloader *wl) { array_emit_count++; } static void waveloader_load_success (void) { /* Test a successful load: should return success, no error. * Should emit several progress signals, starting from > 0 and ending * at 1.0. Should emit at least one array-size-changed signal. * Results for the loaded file should be as in previous runs: check * array length and an arbitrary index value. */ PtWaveloader *wl; SyncData data; GError *error = NULL; gboolean success; GArray *array; data = create_sync_data (); wl = wl_with_test_uri ("tick-60sec.ogg"); array = pt_waveloader_get_data (wl); g_signal_connect (wl, "progress", G_CALLBACK (progress_cb), NULL); g_signal_connect (wl, "array-size-changed", G_CALLBACK (array_size_changed_cb), NULL); pt_waveloader_load_async (wl, 100, NULL, (GAsyncReadyCallback) quit_loop_cb, &data); g_main_loop_run (data.loop); success = pt_waveloader_load_finish (wl, data.res, &error); g_assert_true (success); g_assert_no_error (error); /* Check signal emission. Hopefully we get also on faster machines * at least 2 progress signals. */ g_assert_cmpint (progress_emit_count, >=, 2); g_assert_cmpfloat (progress1, >, 0); g_assert_cmpfloat (progress1, <, progress2); g_assert_cmpfloat (progress2, <=, 1); g_assert_cmpint (array_emit_count, >=, 1); g_assert_cmpint (array->len, ==, 11982); /* float value varies a bit! */ g_assert_cmpfloat_with_epsilon (g_array_index (array, float, 0), -0.796143, 0.001); g_assert_cmpfloat_with_epsilon (g_array_index (array, float, 42), 0.0, 0.001); g_object_unref (data.res); /* Resize operation: should return success, no error. Should emit * a array-size-changed signal. The new array size should be different. */ pt_waveloader_resize_async (wl, 99, NULL, (GAsyncReadyCallback) quit_loop_cb, &data); g_main_loop_run (data.loop); success = pt_waveloader_resize_finish (wl, data.res, &error); g_assert_no_error (error); g_assert_true (success); g_assert_cmpint (array_emit_count, >=, 2); g_assert_cmpint (array->len, <, 11982); free_sync_data (data); g_object_unref (wl); } static void waveloader_resize_sync (void) { /* Test the sync version of resize: should succeed, no error */ PtWaveloader *wl; SyncData data; GError *error = NULL; gboolean success; data = create_sync_data (); wl = wl_with_test_uri ("tick-10sec.ogg"); pt_waveloader_load_async (wl, 100, NULL, (GAsyncReadyCallback) quit_loop_cb, &data); g_main_loop_run (data.loop); success = pt_waveloader_load_finish (wl, data.res, &error); g_assert_true (success); g_assert_no_error (error); success = pt_waveloader_resize (wl, 200, &error); g_assert_true (success); g_assert_no_error (error); free_sync_data (data); g_object_unref (wl); } static void waveloader_compare_load_resize (void) { /* Test that loading gives the same data as resizing. Resize and then * resize back: array length should be the same, an arbitrary index * value should be the same. */ PtWaveloader *wl; SyncData data; GError *error = NULL; gboolean success; GArray *array; gint len; float value; data = create_sync_data (); wl = wl_with_test_uri ("tick-10sec.ogg"); array = pt_waveloader_get_data (wl); pt_waveloader_load_async (wl, 100, NULL, (GAsyncReadyCallback) quit_loop_cb, &data); g_main_loop_run (data.loop); success = pt_waveloader_load_finish (wl, data.res, &error); g_assert_true (success); g_assert_no_error (error); len = array->len; value = g_array_index (array, float, 42); g_object_unref (data.res); pt_waveloader_resize_async (wl, 150, NULL, (GAsyncReadyCallback) quit_loop_cb, &data); g_main_loop_run (data.loop); success = pt_waveloader_resize_finish (wl, data.res, &error); g_assert_no_error (error); g_assert_true (success); g_object_unref (data.res); pt_waveloader_resize_async (wl, 100, NULL, (GAsyncReadyCallback) quit_loop_cb, &data); g_main_loop_run (data.loop); success = pt_waveloader_resize_finish (wl, data.res, &error); g_assert_no_error (error); g_assert_true (success); g_assert_cmpint (len, ==, array->len); g_assert_cmpfloat (value, ==, g_array_index (array, float, 42)); free_sync_data (data); g_object_unref (wl); } int main (int argc, char *argv[]) { g_test_init (&argc, &argv, NULL); g_test_add_func ("/waveloader/new", waveloader_new); g_test_add_func ("/waveloader/load_fail", waveloader_load_fail); g_test_add_func ("/waveloader/load_cancel", waveloader_load_cancel); g_test_add_func ("/waveloader/load_unref", waveloader_load_unref); g_test_add_func ("/waveloader/resize_cancel", waveloader_resize_cancel); g_test_add_func ("/waveloader/resize_without_load", waveloader_resize_without_load); g_test_add_func ("/waveloader/load_pending", waveloader_load_pending); g_test_add_func ("/waveloader/load_success", waveloader_load_success); g_test_add_func ("/waveloader/resize_sync", waveloader_resize_sync); g_test_add_func ("/waveloader/compare_load_resize", waveloader_compare_load_resize); return g_test_run (); } parlatype-3.0/libparlatype/tests/waveviewer.c000066400000000000000000000100171414030451500215330ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2017 * * 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 . */ #include #include #include /* Helpers to turn async operations into sync ------------------------------- */ typedef struct { GAsyncResult *res; GMainLoop *loop; } SyncData; static SyncData create_sync_data (void) { SyncData data; GMainContext *context; /* Note: With other contexts than default the signal emitting test * doesn't work. PtWaveloader uses g_timeout_add() and that doesn't * work with g_main_context_push_thread_default (context). */ context = g_main_context_default (); data.loop = g_main_loop_new (context, FALSE); data.res = NULL; return data; } static void free_sync_data (SyncData data) { g_main_loop_unref (data.loop); g_object_unref (data.res); } static void quit_loop_cb (PtWaveviewer *wl, GAsyncResult *res, gpointer user_data) { SyncData *data = user_data; data->res = g_object_ref (res); g_main_loop_quit (data->loop); } /* Tests -------------------------------------------------------------------- */ static void waveviewer_empty (void) { GtkWidget *testviewer; gboolean fixed_cursor, follow_cursor, has_selection, show_ruler; gint64 selection_end, selection_start; testviewer = pt_waveviewer_new (); g_assert_true (PT_IS_WAVEVIEWER (testviewer)); g_object_get (testviewer, "fixed-cursor", &fixed_cursor, "follow-cursor", &follow_cursor, "has-selection", &has_selection, "show-ruler", &show_ruler, "selection-end", &selection_end, "selection-start", &selection_start, NULL); g_assert_true (fixed_cursor); g_assert_true (follow_cursor); g_assert_false (has_selection); g_assert_true (show_ruler); g_assert_cmpint (selection_end, ==, 0); g_assert_cmpint (selection_start, ==, 0); pt_waveviewer_set_follow_cursor (PT_WAVEVIEWER (testviewer), FALSE); g_assert_false (pt_waveviewer_get_follow_cursor (PT_WAVEVIEWER (testviewer))); gtk_widget_destroy (testviewer); } static void waveviewer_loaded (void) { GError *error = NULL; PtPlayer *player; GtkWidget *window; GtkWidget *viewer; GFile *testfile; gchar *testpath; gchar *testuri; gboolean success; SyncData data; player = pt_player_new (); testpath = g_test_build_filename (G_TEST_DIST, "data", "tick-10sec.ogg", NULL); testfile = g_file_new_for_path (testpath); testuri = g_file_get_uri (testfile); success = pt_player_open_uri (player, testuri); g_assert_true (success); data = create_sync_data (); viewer = pt_waveviewer_new (); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size (GTK_WINDOW (window), 300, 100); gtk_container_add (GTK_CONTAINER (window), viewer); gtk_widget_show_all (window); pt_waveviewer_load_wave_async (PT_WAVEVIEWER (viewer), testuri, NULL, (GAsyncReadyCallback) quit_loop_cb, &data); g_main_loop_run (data.loop); success = pt_waveviewer_load_wave_finish (PT_WAVEVIEWER (viewer), data.res, &error); g_assert_true (success); g_assert_no_error (error); g_free (testpath); g_free (testuri); g_object_unref (testfile); free_sync_data (data); g_object_unref (player); gtk_widget_destroy (window); } int main (int argc, char *argv[]) { g_test_init (&argc, &argv, NULL); g_test_add_func ("/waveviewer/empty", waveviewer_empty); g_test_add_func ("/waveviewer/loaded", waveviewer_loaded); gtk_init (NULL, NULL); return g_test_run (); } parlatype-3.0/meson.build000066400000000000000000000055561414030451500155270ustar00rootroot00000000000000project('parlatype', 'c', version: '3.0', #meson_version: '>= 0.47.2', # oldest working tested version license: 'GPL3+', ) app_id = 'org.parlatype.Parlatype' version = meson.project_version() version_array = version.split('.') major_version = version_array[0].to_int() minor_version = version_array[1].to_int() if version_array.length() == 2 micro_version = 0 else micro_version = version_array[2].to_int() endif with_pocketsphinx = get_option('pocketsphinx') with_deepspeech = get_option('deepspeech') prefix = get_option('prefix') bindir = join_paths(prefix, get_option('bindir')) libdir = join_paths(prefix, get_option('libdir')) datadir = join_paths(prefix, get_option('datadir')) pkgdatadir = join_paths(datadir, meson.project_name()) localedir = join_paths(prefix, get_option('localedir')) add_global_arguments('-DLOCALEDIR="@0@"'.format(localedir), language : 'c') compiler = meson.get_compiler('c') gettext_package = 'parlatype' conf = configuration_data() conf.set_quoted('PACKAGE_VERSION', '@VCS_TAG@') conf.set_quoted('PACKAGE_NAME', meson.project_name()) conf.set_quoted('PACKAGE_URL', 'https://www.parlatype.org') conf.set_quoted('APP_ID', app_id) conf.set_quoted('ASR_DIR', join_paths(datadir, meson.project_name(), 'asr')) conf_input = configure_file(output: 'config.h.in', configuration: conf) conf_inc = include_directories('.', 'libparlatype/src') config_h = declare_dependency( sources: vcs_tag( command: [ 'git', 'describe', '--tags' ], input: conf_input, output: 'config.h', ) ) gnome = import('gnome') i18n = import('i18n') windows = import('windows') # Checks for libraries. gtk = dependency('gtk+-3.0', version: '>= 3.22') glib = dependency('glib-2.0', version: '>= 2.58') if host_machine.system() == 'windows' rc_conf = configuration_data() rc_conf.set('MAJOR_VERSION', major_version) rc_conf.set('MINOR_VERSION', minor_version) rc_conf.set('MICRO_VERSION', micro_version) rc_conf.set('VERSION', version) rc_conf.set('SOURCE_DIR', meson.current_source_dir()) endif subdir('libparlatype') subdir('data') subdir('docs') subdir('help') subdir('po') subdir('src') if host_machine.system() == 'windows' meson.add_install_script( 'meson_post_install_win32.sh', app_id ) endif status = [ '', '', 'Parlatype @0@'.format(meson.project_version()), '', 'Prefix ................... : @0@'.format(prefix), 'With Pocketsphinx ........ : @0@'.format(with_pocketsphinx), 'With Deepspeech .......... : @0@'.format(with_deepspeech), 'With GObject Introspection : @0@'.format(gir), 'With API reference ....... : @0@'.format(gtk_doc), 'With Glade catalog ....... : @0@'.format(glade), '' ] if (prefix != '/usr') status += ['Command to run parlatype:'] status += ['LD_LIBRARY_PATH=@0@ XDG_DATA_DIRS=$XDG_DATA_DIRS:@1@ @2@/parlatype'.format(libdir, datadir, bindir)] status += [''] endif message('\n '.join(status)) parlatype-3.0/meson_options.txt000066400000000000000000000011231414030451500170040ustar00rootroot00000000000000option( 'gtk-doc', type: 'boolean', value: false, description: 'Install library reference, requires gtk-doc' ) option( 'glade', type: 'boolean', value: false, description: 'Install glade catalog, requires gladeui-2.0' ) option( 'gir', type: 'boolean', value: false, description: 'Install GObject Introspection data, requires gobject-introspection' ) option( 'pocketsphinx', type: 'boolean', value: false, description: 'Compile with ASR, requires CMU Sphinx' ) option( 'deepspeech', type: 'boolean', value: false, description: 'Compile with ASR, requires Mozilla Deepspeech' )parlatype-3.0/meson_post_install_win32.sh000066400000000000000000000006501414030451500206450ustar00rootroot00000000000000#!/bin/bash # Quick & dirty hack to turn Mallard help pages into HTML on win32. APP_ID=$1 MSYSTEM=MSYS2 . /etc/profile while read -r lang do if [[ ${lang:0:1} != "#" && ${lang:0:1} != " " ]] then dest="${MESON_INSTALL_PREFIX}"/share/help/$lang/$APP_ID echo "Converting help for $lang to HTML ..." (cd "$dest" && yelp-build html -o . .) || exit 1 rm "$dest"/*.page fi done < "${MESON_SOURCE_ROOT}"/help/LINGUAS parlatype-3.0/po/000077500000000000000000000000001414030451500137705ustar00rootroot00000000000000parlatype-3.0/po/LINGUAS000066400000000000000000000004241414030451500150150ustar00rootroot00000000000000# Don't forget about /libparlatype/po/LINGUAS and /help/Makefile.am # Note: he is empty right now, it's here to test right to left layout. # Please keep this list sorted alphabetically. # ar ca cs de en_AU en_GB es fi fr he hu id it ja kab ku lt ms nl pl pt pt_BR ru sk sr sv parlatype-3.0/po/Makevars000066400000000000000000000070571414030451500154750ustar00rootroot00000000000000# Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. DOMAIN = $(PACKAGE) # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --from-code=UTF-8 \ --keyword=_ \ --keyword=N_ \ --keyword=C_:1c,2 \ --keyword=NC_:1c,2 \ --keyword=g_dngettext:2,3 \ --add-comments # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding # package. (Note that the msgstr strings, extracted from the package's # sources, belong to the copyright holder of the package.) Translators are # expected to transfer the copyright for their translations to this person # or entity, or to disclaim their copyright. The empty string stands for # the public domain; in this case the translators are expected to disclaim # their copyright. COPYRIGHT_HOLDER = Gabor Karsay # This tells whether or not to prepend "GNU " prefix to the package # name that gets inserted into the header of the $(DOMAIN).pot file. # Possible values are "yes", "no", or empty. If it is empty, try to # detect it automatically by scanning the files in $(top_srcdir) for # "GNU packagename" string. PACKAGE_GNU = # This is the email address or URL to which the translators shall report # bugs in the untranslated strings: # - Strings which are not entire sentences, see the maintainer guidelines # in the GNU gettext documentation, section 'Preparing Strings'. # - Strings which use unclear terms or require additional context to be # understood. # - Strings which make invalid assumptions about notation of date, time or # money. # - Pluralisation problems. # - Incorrect English spelling. # - Incorrect formatting. # It can be your email address, or a mailing list address where translators # can write to without being subscribed, or the URL of a web page through # which the translators can contact you. MSGID_BUGS_ADDRESS = https://github.com/gkarsay/parlatype/issues # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = # This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt' # context. Possible values are "yes" and "no". Set this to yes if the # package uses functions taking also a message context, like pgettext(), or # if in $(XGETTEXT_OPTIONS) you define keywords with a context argument. USE_MSGCTXT = no # These options get passed to msgmerge. # Useful options are in particular: # --previous to keep previous msgids of translated messages, # --quiet to reduce the verbosity. MSGMERGE_OPTIONS = # These options get passed to msginit. # If you want to disable line wrapping when writing PO files, add # --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and # MSGINIT_OPTIONS. MSGINIT_OPTIONS = # This tells whether or not to regenerate a PO file when $(DOMAIN).pot # has changed. Possible values are "yes" and "no". Set this to no if # the POT file is checked in the repository and the version control # program ignores timestamps. PO_DEPENDS_ON_POT = yes # This tells whether or not to forcibly update $(DOMAIN).pot and # regenerate PO files on "make dist". Possible values are "yes" and # "no". Set this to no if the POT file and PO files are maintained # externally. DIST_DEPENDS_ON_UPDATE_PO = yes parlatype-3.0/po/POTFILES.in000066400000000000000000000007061414030451500155500ustar00rootroot00000000000000# List of source files which contain translatable strings. data/org.parlatype.Parlatype.appdata.xml.in data/org.parlatype.Parlatype.desktop.in src/main.c src/pt-app.c src/pt-asr-dialog.c src/pt-goto-dialog.c src/pt-preferences.c src/pt-prefs-asr.c src/pt-window.c src/resources/asr-dialog.ui src/resources/goto-dialog.ui src/resources/help-overlay.ui src/resources/menus.ui src/resources/preferences.ui src/resources/prefs-asr.ui src/resources/window.uiparlatype-3.0/po/POTFILES.skip000066400000000000000000000000001414030451500160730ustar00rootroot00000000000000parlatype-3.0/po/ar.po000066400000000000000000000524241414030451500147410ustar00rootroot00000000000000# Arabic translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-03-09 16:27+0000\n" "Last-Translator: Ibrahim Saed \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 && n % 100 <= 99 ? 4 : 5;\n" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "بارلاتايب" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "مشغل وسائط لتدوين الخطابات" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" "بارلاتايب هو مُشغل وسائط سهل الاستخدام. الغرض الأساسي منه هو مساعدتك على " "تدوين الخطابات المُسجلة." #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "غابور كارساي" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "أداة تدوين" #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "تدوين; استنساخ; انتساخ; نسخ" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "عرض إصدار التطبيق" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "أفتح ملف صوت" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "_فتح" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_إلغاء" #: src/pt-app.c:123 msgid "Audio files" msgstr "ملفات صوت" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "كل الملفّات" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "Error opening help: %s" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "Including code from other projects:" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "أداة إملاء اساسية" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Ahmed Shubbar https://launchpad.net/~ahmed-shubbar\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " Ibrahim Saed https://launchpad.net/~ibraheem5000" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" "تحذير: بارلاتايب يفتح ملف واحد فقط في أي وقت. الملف الآخر سيتم تجاهله.\n" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "ثانية" msgstr[1] "ثواني" msgstr[2] "ثانيتان" msgstr[3] "ثوانِ" msgstr[4] "ثانية" msgstr[5] "ثانية" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "" #: src/pt-prefs-asr.c:585 #, fuzzy msgid "Delete language model configuration?" msgstr "حذف إعدادات التكوين" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "هل ترغب فعلا بحذف “%s”؟" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "" #: src/pt-prefs-asr.c:731 msgid "The file is not a valid language model configuration." msgstr "" #: src/pt-prefs-asr.c:779 msgid "Import language model configuration" msgstr "" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "أرجع ثانية واحدة" msgstr[1] "أرجع %d ثانية" msgstr[2] "أرجع %d ثانية" msgstr[3] "أرجع %d ثانية" msgstr[4] "أرجع %d ثانية" msgstr[5] "أرجع %d ثانية" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "تقدم ثانية واحدة" msgstr[1] "تقدم %d ثانية" msgstr[2] "تقدم %d ثانية" msgstr[3] "تقدم %d ثانية" msgstr[4] "تقدم %d ثانية" msgstr[5] "تقدم %d ثانية" #: src/pt-window.c:412 msgid "Pause" msgstr "إلباث" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:422 msgid "Start playing" msgstr "إبدأ التشغيل" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "اذهب إلى الوقت في الحافظة: %s" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "اذهب إلى الوقت في الحافظة" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "تدوين يدوي" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "تدوين تلقائي" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "عام" #: src/resources/asr-dialog.ui:44 #, fuzzy msgid "Display Name:" msgstr "العرض" #: src/resources/asr-dialog.ui:56 msgid "Language:" msgstr "" #: src/resources/asr-dialog.ui:68 msgid "Speech Recognition Engine:" msgstr "" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 msgid "Download:" msgstr "" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "اذهب إلى…" #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "_موافق" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "أذهب الى موقع:" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "افتح ملف وسائط" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "افتح/أغلق قائمة الإجراءات" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "خروج" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "الشكل الموجي" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "تشغيل/إلباث" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "قفز للخلف" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "قفز للأمام" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "تكبير" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "تصغير" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "مساعدة" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "عرض المساعدة" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "عرض اختصارات لوحة المفاتيح" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "التفضيلات" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "اختصارات لو_حة المفاتيح" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "عن بارلاتايب" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "نسخ الوقت إلى الحافظة" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "بدون" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "(أقواس مستديرة)" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "[أقواس مربعة]" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr ". (نقطة)" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "تفضيلات بارلاتايب" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "الدقة" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "العرض" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "عناصر التحكم" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "الدقة" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "أمثلة" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "الدقة:" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "تذكر ال_حجم" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "تذكر ال_موضع" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "" #: src/resources/preferences.ui:812 msgid "Window" msgstr "" #: src/resources/prefs-asr.ui:40 #, fuzzy msgid "Language model configurations" msgstr "حذف إعدادات التكوين" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "" #: src/resources/prefs-asr.ui:59 #, fuzzy msgid "All models" msgstr "كل الملفّات" #: src/resources/prefs-asr.ui:121 msgid "Import a language model configuration" msgstr "" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "" #: src/resources/window.ui:48 msgid "Open a file" msgstr "" #: src/resources/window.ui:170 msgid "_Play" msgstr "" #: src/resources/window.ui:294 msgid "Speed:" msgstr "" #, fuzzy #~ msgid "Remove this configuration" #~ msgstr "حذف إعدادات التكوين" #, fuzzy #~ msgid "Setup this configuration" #~ msgstr "حذف إعدادات التكوين" #~ msgid "Enable automatic speech recognition" #~ msgstr "تفعيل التعرف التلقائي على الكلام" #~ msgid "Use internal textpad for automatic speech recognition" #~ msgstr "استخدم لوحة النص الداخلية للتعرف التلقائي على الكلام" #~ msgid "The folder contains no acoustic model." #~ msgstr "المجلد لا يحتوي على نموذج صوتي." #~ msgid "Please select …" #~ msgstr "الرجاء الاختيار ..." #~ msgid "Missing parameters" #~ msgstr "معايير مفقودة" #~ msgid "Timed out" #~ msgstr "انتهى الوقت" #~ msgid "Nothing found" #~ msgstr "لم يُعثر على أي شيء" #~ msgid "This folder doesn’t contain a suitable model." #~ msgstr "هذا المجلد لا يحتوي على نموذج مناسب." #~ msgid "Press “Play” to start automatic speech recognition." #~ msgstr "اضغط \"تشغيل\" لبدء التعرف الآلي للخطاب." #~ msgid "Fatal error" #~ msgstr "خطأ فادح" #~ msgid "Select language model" #~ msgstr "اختر نموذج اللغة" #~ msgid "Dictionary" #~ msgstr "القاموس" #~ msgid "Dictionary:" #~ msgstr "القاموس:" #~ msgid "Acoustic model folder:" #~ msgstr "مجلد النموذج الصوتي:" parlatype-3.0/po/ca.po000066400000000000000000000450611414030451500147210ustar00rootroot00000000000000# Catalan translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # VPablo , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-03-09 16:24+0000\n" "Last-Translator: Gabor Karsay \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-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" "Parlatype és un reproductor de mitjans fàcil d'usar. El seu principal " "propòsit és ajudar a transcriure discursos." #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Utilitat de transcripció" #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "Transcripció;" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "Obre Fitxer d'Àudio" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "_Obre" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Cancel·la" #: src/pt-app.c:123 msgid "Audio files" msgstr "Fitxers d'àudio" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "Tots els fitxers" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "Error obrint ajuda: %s" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "Inclou codi d'altres projectes:" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "Una utilitat bàsica de transcripció" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Adolfo Jayme https://launchpad.net/~fitojb\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " VPablo https://launchpad.net/~villumar" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" "Advertència: Parlatype fa servir només un fitxer alhora. Els altres fitxers " "s'ignoraran.\n" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "segon" msgstr[1] "segons" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "" #: src/pt-prefs-asr.c:585 msgid "Delete language model configuration?" msgstr "" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "" #: src/pt-prefs-asr.c:731 msgid "The file is not a valid language model configuration." msgstr "" #: src/pt-prefs-asr.c:779 msgid "Import language model configuration" msgstr "" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "Torna 1 segon enrere" msgstr[1] "Torna %d segons enrere" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "Avança 1 segon" msgstr[1] "Avança %d segons" #: src/pt-window.c:412 msgid "Pause" msgstr "Pausa" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "Pausa i torna 1 segon enrere" msgstr[1] "Pausa i torna %d segons enrere" #: src/pt-window.c:422 msgid "Start playing" msgstr "Inicia la reproducció" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "" #: src/resources/asr-dialog.ui:44 #, fuzzy msgid "Display Name:" msgstr "Visualitza" #: src/resources/asr-dialog.ui:56 msgid "Language:" msgstr "" #: src/resources/asr-dialog.ui:68 msgid "Speech Recognition Engine:" msgstr "" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 msgid "Download:" msgstr "" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "" #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "_D'acord" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "Anar a la posició:" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "Surt" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "Forma d'ona" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "Ajuda" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "Preferències" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr "" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "Preferències de Parlatype" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "_Píxels per segon:" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "Mostra escala de _temps" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "Resolució" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "Visualitza" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "Cursor _mòvil" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "Cursor _fixe" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "_Avança:" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "Torna _enrere:" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "Torna enrere quan es _pause:" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "Controls" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "Recorda _posició" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "Comença a la par_t superior" #: src/resources/preferences.ui:812 msgid "Window" msgstr "Finestra" #: src/resources/prefs-asr.ui:40 msgid "Language model configurations" msgstr "" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "" #: src/resources/prefs-asr.ui:59 #, fuzzy msgid "All models" msgstr "Tots els fitxers" #: src/resources/prefs-asr.ui:121 msgid "Import a language model configuration" msgstr "" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "" #: src/resources/window.ui:48 msgid "Open a file" msgstr "Obre un fitxer" #: src/resources/window.ui:170 msgid "_Play" msgstr "_Reprodueix" #: src/resources/window.ui:294 msgid "Speed:" msgstr "Velocitat:" #~ msgid "Fatal error" #~ msgstr "Error greu" parlatype-3.0/po/cs.po000066400000000000000000000621401414030451500147400ustar00rootroot00000000000000# Czech translation for parlatype # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the parlatype package. # # FIRST AUTHOR , 2018. # Pavel Fric , 2018. msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-03-09 16:24+0000\n" "Last-Translator: fri \n" "Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" "Parlatype je snadno se používající přehrávač, jehož hlavním účelem je pomoci " "vám s přepisem mluveného slova." #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "Gabor Karsay" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Pomůcka pro přepis" #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "Přepis;" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "Ukázat verzi programu" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "Otevřít zvukový soubor" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "_Otevřít" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Zrušit" #: src/pt-app.c:123 msgid "Audio files" msgstr "Zvukové soubory" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "Všechny soubory" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "Chyba při otevírání nápovědy: %s" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "Obsahuje kód z jiných projektů:" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "Základní prostředek na přepis" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " fri https://launchpad.net/~pavelfric" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" "Upozornění: Parlatype pracuje pouze s jedním souborem najednou. Ostatní " "soubory jsou přehlíženy.\n" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "sekunda" msgstr[1] "sekund" msgstr[2] "sekund" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "Rozpoznávání řeči" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "" #: src/pt-prefs-asr.c:585 #, fuzzy msgid "Delete language model configuration?" msgstr "Smazání nastavení" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "Opravdu chcete smazat “%s”?" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "" #: src/pt-prefs-asr.c:731 #, fuzzy msgid "The file is not a valid language model configuration." msgstr "Složka obsahuje několik jazykových modelů." #: src/pt-prefs-asr.c:779 #, fuzzy msgid "Import language model configuration" msgstr "Není žádné nastavení" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "Skočit zpět o 1 sekundu" msgstr[1] "Skočit zpět o %d sekundy" msgstr[2] "Skočit zpět o %d sekund" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "Skočit vpřed o 1 sekundu" msgstr[1] "Skočit vpřed o %d sekundy" msgstr[2] "Skočit vpřed o %d sekund" #: src/pt-window.c:412 msgid "Pause" msgstr "Pozastavit" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "Pozastavit a přetočit o 1 sekundu" msgstr[1] "Pozastavit a přetočit o %d sekundy" msgstr[2] "Pozastavit a přetočit o %d sekund" #: src/pt-window.c:422 msgid "Start playing" msgstr "Začít přehrávat" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "Jít na čas ve schránce: %s" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "Jít na čas ve schránce" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "Ruční přepis" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "Automatický přepis" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "Obecné" #: src/resources/asr-dialog.ui:44 #, fuzzy msgid "Display Name:" msgstr "Zobrazení" #: src/resources/asr-dialog.ui:56 #, fuzzy msgid "Language:" msgstr "Jazykový model:" #: src/resources/asr-dialog.ui:68 #, fuzzy msgid "Speech Recognition Engine:" msgstr "Rozpoznávání řeči" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 #, fuzzy msgid "Download:" msgstr "Stáhnout model" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "Jít na..." #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "_OK" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "Jít na polohu:" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "Otevřít soubor se záznamem" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "Ukázat/Skrýt nabídku činností" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "Ukončit" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "Křivka" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "Přehrát/Pozastavit" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "Skočit zpět" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "Skočit vpřed" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "Přiblížit" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "Oddálit" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "Otevřít dialog Jít na" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "Kopírovat časové razítko do schránky" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "Jít na časové razítko ve schránce" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "Nápověda" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "Ukázat nápovědu" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "Ukázat klávesové zkratky" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "Nastavení" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "_Klávesové zkratky" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "O programu Parlatype" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "Kopírovat čas do schránky" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "Jít na ukazatel" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "Žádný" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "#číslo#" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "(kulaté závorky)" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "[hranaté závorky]" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr ". (bod)" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "- (spojovník)" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "Plné sekundy" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "10. sekund" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "100. sekund" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "Nastavení Parlatype" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "_Obrazových bodů za sekundu:" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "Ukázat ča_sovou stupnici" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "Rozlišení" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "Zobrazení" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "_Pohybující se ukazatel" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "P_evný ukazatel" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "Skoky" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "Skočit _vpřed:" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "Skočit zpě_t:" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "Skočit zpět při p_ozastavení:" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "Stisknutí Přehrát na konci souboru" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "Přehrát soubor znovu" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "Stisknutí Přehrát na konci výběru" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "Přehrát výběr znovu" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "Ovládání" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "Hodiny a nuly" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "Vždy ukazovat hodiny a nuly na začátku" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "Přesnost" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "Znaky okolo časových razítek" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "Príklady" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "Přesnost:" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "Oddělovač zlomku:" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "Časová razítka" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "Zapamatovat si ve_likost" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "Zapamatovat si polo_hu" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "Začít n_ahoře" #: src/resources/preferences.ui:812 msgid "Window" msgstr "Okno" #: src/resources/prefs-asr.ui:40 #, fuzzy msgid "Language model configurations" msgstr "Jazykový model" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "" #: src/resources/prefs-asr.ui:59 #, fuzzy msgid "All models" msgstr "Všechny soubory" #: src/resources/prefs-asr.ui:121 #, fuzzy msgid "Import a language model configuration" msgstr "Není žádné nastavení" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "Není žádné nastavení" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "Přidat nastavení" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "" #: src/resources/window.ui:48 msgid "Open a file" msgstr "Otevřít soubor" #: src/resources/window.ui:170 msgid "_Play" msgstr "_Přehrát" #: src/resources/window.ui:294 msgid "Speed:" msgstr "Rychlost:" #, fuzzy #~ msgid "Remove this configuration" #~ msgstr "Smazání nastavení" #, fuzzy #~ msgid "Setup this configuration" #~ msgstr "Smazání nastavení" #~ msgid "org.parlatype.Parlatype" #~ msgstr "org.parlatype.Parlatype" #~ msgid "Use internal textpad for automatic speech recognition" #~ msgstr "Použít vnitřní textový blok pro automatické rozpoznávání řeči" #~ msgid "The folder contains no acoustic model." #~ msgstr "Složka obsahuje akustický model." #~ msgid "Please select …" #~ msgstr "Vyberte, prosím, ..." #~ msgid "Missing parameters" #~ msgstr "Chybí parametry" #~ msgid "Timed out" #~ msgstr "Čas vypršel" #~ msgid "" #~ "Scanning the folder took too long. Please make sure to open a folder with " #~ "model data only." #~ msgstr "" #~ "Prohledávání složky zabralo spoustu času. Ujistěte se, prosím, že " #~ "otevíráte složky, v níž jsou pouze modelová data." #~ msgid "Scanning the folder failed" #~ msgstr "Prohledávání složky selhalo" #~ msgid "Nothing found" #~ msgstr "Nic nenalezeno" #~ msgid "This folder doesn’t contain a suitable model." #~ msgstr "Tato složka neobsahuje vhodný model." #~ msgid "" #~ "The folder contains no language model. Please choose a language model " #~ "from another folder." #~ msgstr "" #~ "Složka neobsahuje žádný jazykový model. Vyberte, prosím, jazykový model z " #~ "jiné složky." #~ msgid "" #~ "The folder contains no dictionary. Please choose a dictionary from " #~ "another folder." #~ msgstr "" #~ "Složka neobsahuje žádný slovník. Vyberte, prosím, slovník z jiné složky." #~ msgid "The folder contains several dictionaries." #~ msgstr "Složka obsahuje několik slovníků." #~ msgid "" #~ "The folder contains no acoustic model. Please choose an acoustic model " #~ "from another folder." #~ msgstr "" #~ "Složka neobsahuje žádný akustický model. Vyberte, prosím, akustický model " #~ "z jiné složky." #~ msgid "The folder contains several acoustic models." #~ msgstr "Složka obsahuje několik akustický modelů." #~ msgid "Finish configuration" #~ msgstr "Dokončit nastavení" #~ msgid "Select output for automatic speech recognition" #~ msgstr "Vybrat výstup pro automatické rozpoznávání řeči" #~ msgid "Please open and switch focus to a word processor." #~ msgstr "Otevřete, prosím, a přepněte zaměření na textový editor." #, c-format #~ msgid "Found %s" #~ msgstr "Nalezeno %s" #~ msgid "Press “Play” to start automatic speech recognition." #~ msgstr "Stiskněte Přehrát pro spuštění automatického rozpoznávání řeči." #, c-format #~ msgid "" #~ "Parlatype needs GStreamer 1.x to run. Please check your installation of " #~ "GStreamer and make sure you have the “Good Plugins” installed.\n" #~ "Parlatype will quit now, it received this error message: %s" #~ msgstr "" #~ "Parlatype potřebuje, aby běžel GStreamer 1.x. Prověřte, prosím, instalaci " #~ "GStreameru a ujistěte se, že máte nainstalovány “Good Plugins”.\n" #~ "Parlatype nyní bude ukončen, přijal toto hlášení o chybě: %s" #~ msgid "Fatal error" #~ msgstr "Vážná chyba" #~ msgid "" #~ "Before you can start, you have to download a so called acoustic and " #~ "language model. This is a set of files made for a specific language." #~ msgstr "" #~ "Předtím než budete moci začít, musíte stáhnout tak zvaný akustický a " #~ "jazykový model. Jedná se o sadu souborů pro určitý jazyk." #~ msgid "" #~ "Parlatype uses CMU Sphinx as its speech recognition engine. You can " #~ "download models suitable for CMU Sphinx for example from
CMU Sphinx’ sourceforge repository. It has " #~ "models for some of the most widespread languages." #~ msgstr "" #~ "Parlatype používá CMU Sphinx jako stroj na rozpoznávání řeči. Modely " #~ "vhodné pro CMU Sphinx ůžete stáhnout například z CMU Sphinx’ sourceforge repository. Jsou tam modely pro " #~ "některé z nějrozšířenějších jazyků." #~ msgid "" #~ "If it’s compressed, uncompress the model. Save it to a folder where it " #~ "can stay. Parlatype doesn’t copy the model internally." #~ msgstr "" #~ "Pokud je zkomprimován, rozbalte model. Uložte jej do složky, kde bude " #~ "moci zůstat. Parlatype model nekopíruje vnitřně." #~ msgid "When you are finished, specify the folder with the model:" #~ msgstr "Až skončíte, stanovte složku s modelem:" #~ msgid "Select language model" #~ msgstr "Vybrat jazykový model" #~ msgid "Dictionary" #~ msgstr "Slovník" #~ msgid "Select dictionary" #~ msgstr "Vybrat slovník" #~ msgid "Acoustic model" #~ msgstr "Akustický model" #~ msgid "Select acoustic model folder" #~ msgstr "Vybrat složku s akustickým modelem" #~ msgid "Setup is completed. Please give this configuration a name:" #~ msgstr "Nastavení je hotovo. Nastavení, prosím, pojmenujte:" #~ msgid "Dictionary:" #~ msgstr "Slovník:" #~ msgid "Acoustic model folder:" #~ msgstr "Složka s akustickým modelem:" parlatype-3.0/po/de.po000066400000000000000000000712431414030451500147270ustar00rootroot00000000000000# German translations for parlatype. # Copyright (C) 2016 Gabor Karsay # This file is distributed under the same license as the parlatype package. # Gabor Karsay , 2016-2021. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2021-09-26 22:59+0200\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Deutsch <>\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "X-Launchpad-Export-Date: 2020-05-31 16:44+0000\n" "X-Generator: Gtranslator 3.38.0\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "Medienspieler für Sprachtranskription" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" "Parlatype ist ein einfach zu bedienender Medienspieler. Er dient " "hauptsächlich dazu, Sie beim Transkribieren von gesprochener Sprache zu " "unterstützen." #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "Gabor Karsay" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "" "Dies ist ein kleiner Release mit Fehlerbehebungen und kleineren neuen " "Funktionen" #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" "Stummschaltung aktivieren/aufheben durch Anklicken mit dem sekundären Button " "des Zeigegeräts (meist der rechte Mausbutton)." #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" "Mit Pulseaudio ändert Parlatype nicht mehr die Systemlautstärke, nur noch " "die eigene." #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "Der anfängliche Lautstärkepegel wird von Pulseaudio übernommen." #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "Übersetzungsaktualisierungen für mehrere Sprachen" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "Dies ist ein Hauptrelease mit neuen Funktionen." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "" "Waveform wird on-the-fly geladen, es gibt keinen blockierenden " "Fortschrittsdialog." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "" "Waveform kann kontinuierlich, statt in diskreten Schritten geändert werden." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "Dies ist ein kleiner Release." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" "Zeitlabel nur aktualisieren, wenn sich die Zeit geändert hat. Dies ist eine " "Leistungssteigerung, die Cursorbewegung sollte auf langsameren Systemen " "flüssiger sein." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "Aktualisierte Übersetzungen für Ungarisch, Litauisch und Spanisch" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "Dies ist ein kleiner Release mit einigen Änderungen." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" "Die automatische Spracherkennung (ASR) ist jetzt standardmäßig deaktiviert " "und wird nur angezeigt, wenn parlatype mit dem neuen Parameter --with-asr " "ausgeführt wird" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "" "Fehlerbehebung bei der Internationalisierung: Einige Übersetzungen wurden " "nicht angezeigt" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" "Übersetzungsaktualisierungen für Arabisch, Britisches-Englisch, Tschechisch, " "Niederländisch, Deutsch, Polnisch und Spanisch" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "Dies ist eine größere Version mit einigen neuen Funktionen." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "Autmatische Spracherkennung mit CMU Sphinx" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "Design-Änderungen, einschließlich der Entfernung des Anwendungsmenüs" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "Benutzerdefinierte Zeitstempel" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" "Übersetzungsaktualisierungen für Brasilianisches Portugiesisch, Britisches " "Englisch, Tschechisch, Deutsch, Japanisch, Litauisch und Polnisch" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "Dies ist ein kleinerer Wartungs-Release." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "Animieren des Bildlaufs bei der Verwendung von Tastenkombinationen" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "" "Änderung der Anfangskategorie des Desktops zu Audio/Video anstatt von " "Werkzeuge" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "Übersetzungsaktualisierungen für Französisch" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "" "Dieser Release enthält eine Vielzahl von Fehlerbehebungen und kleineren " "Verbesserungen." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "" "Der Fortschrittsdialog besitzt nun einen Countdown-Timer (ungefähr " "verbleibende Restzeit)" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "Maximal mögliche Geschwindigkeit auf 2.0 erhöhen" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" "Neue Tastaturkürzel für Abspielen/Pause (Strg + Leertaste), Zurückspringen " "(Strg + Links), Vorwärtsspringen (Strg + Rechts)" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "Scrollen ist nun auch mit der vertikalen Bildlaufleiste möglich" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "Verschiedene Korrekturen für Waveform- und Cursor-Anzeige" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" "Übersetzungaktualisierungen für Arabisch, Britisches Englisch, Katalanisch, " "Deutsch, Finnisch, Französisch, Japanisch, Litauisch, Polnisch, Spanisch und " "Schwedisch" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Transkriptions-Helfer" #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "Transkription;" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "Version der Anwendung anzeigen" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "Audio-Datei öffnen" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "_Öffnen" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Abbrechen" #: src/pt-app.c:123 msgid "Audio files" msgstr "Audio-Dateien" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "Alle Dateien" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "Fehler beim Öffnen der Hilfe: %s" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "Aus anderen Projekten übernommener Code:" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "Ein einfaches Transkriptionsprogramm" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "Gabor Karsay \n" "\n" "Launchpad Contributions:\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " Gabor Karsay https://launchpad.net/~gabor-karsay-i\n" " Stephan Woidowski https://launchpad.net/~swoidowski" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" "Warnung: Parlatype öffnet nur eine Datei auf einmal. Weitere Dateien werden " "ignoriert.\n" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "CMU Pocketsphinx" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "Mozilla DeepSpeech" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "Sekunde" msgstr[1] "Sekunden" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "Spracherkennung" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "Lesen der persönlichen Konfigurationsdateien fehlgeschlagen" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "Kopieren der mitgelieferten Konfigurationsdateien fehlgeschlagen" #: src/pt-prefs-asr.c:585 msgid "Delete language model configuration?" msgstr "Sprachmodell-Konfiguration löschen?" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "Wollen Sie wirklich »%s« löschen?" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "_Ja" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "Fehler" #: src/pt-prefs-asr.c:731 msgid "The file is not a valid language model configuration." msgstr "Die Datei ist keine gültige Sprachmodell-Konfiguration." #: src/pt-prefs-asr.c:779 msgid "Import language model configuration" msgstr "Sprachmodell-Konfiguration importieren" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "Parlatype-Sprachmodellkonfigurationen" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "Erstellen des persönlichen Konfigurationsordners fehlgeschlagen" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "Eine Sekunde zurückspringen" msgstr[1] "%d Sekunden zurückspringen" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "1 Sekunde vorwärtsspringen" msgstr[1] "%d Sekunden vorwärtsspringen" #: src/pt-window.c:412 msgid "Pause" msgstr "Wiedergabe unterbrechen" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "Wiedergabe unterbrechen und 1 Sekunde zurückspulen" msgstr[1] "Wiedergabe unterbrechen und %d Sekunden zurückspulen" #: src/pt-window.c:422 msgid "Start playing" msgstr "Wiedergabe starten" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "Zu Zeit aus Zwischenablage gehen: %s" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "Zu Zeit aus Zwischenablage gehen" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "Manuelle Transkription" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "Automatische Transkription" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "Allgemein" #: src/resources/asr-dialog.ui:44 msgid "Display Name:" msgstr "Anzeigename:" #: src/resources/asr-dialog.ui:56 msgid "Language:" msgstr "Sprache:" #: src/resources/asr-dialog.ui:68 msgid "Speech Recognition Engine:" msgstr "Spracherkennungsengine:" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "GStreamer-Plugin:" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "Herausgeber:" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "Lizenz:" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "Installation" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 msgid "Download:" msgstr "Download:" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "Installiert:" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "Anleitung:" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "Herunterladen, in einen Ordner entpacken und den Ordner auswählen." #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "Gehe zu …" #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "_OK" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "Gehe zu Position:" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "Eine Mediendatei öffnen" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "Aktionsmenü anzeigen/verbergen" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "Beenden" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "Wellenform" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "Wiedergabe/Pause" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "Zurückspringen" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "Vorwärts springen" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "Hineinzoomen" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "Hinauszoomen" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "»Gehe zu«-Dialog öffnen" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "Zeitstempel in die Zwischenablage kopieren" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "Zu Zeitstempel aus Zwischenablage gehen" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "Hilfe" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "Hilfe anzeigen" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "Tastenkürzel anzeigen" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "Einstellungen" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "_Tastenkürzel" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "Über Parlatype" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "Zeit in die Zwischenablage kopieren" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "Zu Cursor gehen" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "Keine" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "#Rautezeichen#" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "(Runde Klammern)" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "[Eckige Klammern]" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr ". (Punkt)" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "- (Bindestrich)" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "Ganze Sekunden" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "Zehntelsekunden" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "Hundertstelsekunden" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "Einstellungen für Parlatype" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "_Pixel pro Sekunde:" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "_Zeitskala anzeigen" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "Auflösung" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "Anzeige" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "Cursor _bewegt sich" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "Cursor ist _fixiert" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "Sprünge" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "_Vorwärts springen:" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "_Zurückspringen:" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "Bei _Pause zurückspulen:" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "»Wiedergabe« drücken am Ende der Datei" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "Datei wieder abspielen" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "»Wiedergabe« drücken am Ende einer Auswahl" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "Auswahl wieder abspielen" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "Steuerung" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "Stunden und Nullen" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "Immer Stunden und führende Null zeigen" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "Genauigkeit" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "Zeichen um Zeitstempel" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "Beispiele" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "Genauigkeit:" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "Abgrenzung für Sekundenbruchteile:" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "Zeitstempel" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "_Größe des Fensters merken" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "_Position des Fensters merken" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "»Immer im _Vordergrund« starten" #: src/resources/preferences.ui:812 msgid "Window" msgstr "Fenster" #: src/resources/prefs-asr.ui:40 msgid "Language model configurations" msgstr "Sprachmodell-Konfigurationen" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "Installiert" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "Unterstützt" #: src/resources/prefs-asr.ui:59 msgid "All models" msgstr "Alle Modelle" #: src/resources/prefs-asr.ui:121 msgid "Import a language model configuration" msgstr "Eine Sprachmodell-Konfiguration importieren" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "Es gibt keine Konfiguration" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "Konfiguration hinzufügen" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "Keine Ergebnisse in dieser Ansicht" #: src/resources/window.ui:48 msgid "Open a file" msgstr "Eine Datei öffnen" #: src/resources/window.ui:170 msgid "_Play" msgstr "_Wiedergabe" #: src/resources/window.ui:294 msgid "Speed:" msgstr "Geschwindigkeit:" #~ msgid "Remove this configuration" #~ msgstr "Diese Konfiguration löschen" #~ msgid "Setup this configuration" #~ msgstr "Diese Konfiguration bearbeiten" #~ msgid "Speech models" #~ msgstr "Sprachmodelle" #~ msgid "org.parlatype.Parlatype" #~ msgstr "org.parlatype.Parlatype" #~ msgid "Enable automatic speech recognition" #~ msgstr "Automatische Spracherkennung aktivieren" #~ msgid "Use internal textpad for automatic speech recognition" #~ msgstr "Internes Textpad für Spracherkennung verwenden" #~ msgid "The folder contains no acoustic model." #~ msgstr "Das Verzeichnis enthält kein akustisches Modell." #~ msgid "Please select …" #~ msgstr "Bitte wählen …" #~ msgid "Missing parameters" #~ msgstr "Fehlende Parameter" #~ msgid "Timed out" #~ msgstr "Zeitüberschreitung" #~ msgid "" #~ "Scanning the folder took too long. Please make sure to open a folder with " #~ "model data only." #~ msgstr "" #~ "Das Durchsuchen des Verzeichnisses hat zu lange gedauert. Bitte stellen " #~ "Sie sicher, ein Verzeichnis nur mit Modell-Daten zu öffnen." #~ msgid "Scanning the folder failed" #~ msgstr "Durchsuchen des Verzeichnisses fehlgeschlagen" #~ msgid "Nothing found" #~ msgstr "Nichts gefunden" #~ msgid "This folder doesn’t contain a suitable model." #~ msgstr "Dieses Verzeichnis enthält kein geeignetes Modell." #~ msgid "" #~ "The folder contains no language model. Please choose a language model " #~ "from another folder." #~ msgstr "" #~ "Das Verzeichnis enthält kein Sprachmodell. Bitte wählen Sie ein " #~ "Sprachmodell aus einem anderen Verzeichnis." #~ msgid "" #~ "The folder contains no dictionary. Please choose a dictionary from " #~ "another folder." #~ msgstr "" #~ "Das Verzeichnis enthält kein Wörterbuch. Bitte wählen Sie ein Wörterbuch " #~ "aus einem anderen Verzeichnis." #~ msgid "The folder contains several dictionaries." #~ msgstr "Das Verzeichnis enthält mehrere Wörterbücher." #~ msgid "" #~ "The folder contains no acoustic model. Please choose an acoustic model " #~ "from another folder." #~ msgstr "" #~ "Das Verzeichnis enthält kein akustisches Modell. Bitte wählen Sie ein " #~ "akustisches Modell aus einem anderen Verzeichnis." #~ msgid "The folder contains several acoustic models." #~ msgstr "Das Verzeichnis enthält mehrere akustische Modelle." #~ msgid "Finish configuration" #~ msgstr "Konfiguration beenden" #~ msgid "Select output for automatic speech recognition" #~ msgstr "Wählen Sie eine Ausgabe für die automatische Spracherkennung" #~ msgid "Please open and switch focus to a word processor." #~ msgstr "" #~ "Bitte öffnen Sie und wechseln Sie den Fokus zu einer Textverarbeitung." #, c-format #~ msgid "Found %s" #~ msgstr "%s gefunden" #~ msgid "Press “Play” to start automatic speech recognition." #~ msgstr "" #~ "Drücken Sie »Wiedergabe«, um die automatische Spracherkennung zu beginnen." #, c-format #~ msgid "" #~ "Parlatype needs GStreamer 1.x to run. Please check your installation of " #~ "GStreamer and make sure you have the “Good Plugins” installed.\n" #~ "Parlatype will quit now, it received this error message: %s" #~ msgstr "" #~ "Parlatype braucht GStreamer 1.x, um zu funktionieren. Bitte überprüfen " #~ "Sie Ihre GStreamer-Installation und stellen Sie sicher, dass auch die " #~ "»Guten Plugins« (Good Plugins) installiert sind.\n" #~ "Parlatype wird nun beendet, es hat folgende Fehlermeldung erhalten: %s" #~ msgid "Fatal error" #~ msgstr "Schwerer Fehler" #~ msgid "" #~ "Before you can start, you have to download a so called acoustic and " #~ "language model. This is a set of files made for a specific language." #~ msgstr "" #~ "Bevor Sie beginnen können, müssen Sie ein sogenanntes akustisches und " #~ "Sprachmodell herunterladen. Das ist ein Set von Dateien für eine " #~ "bestimmte Sprache." #~ msgid "" #~ "Parlatype uses CMU Sphinx as its speech recognition engine. You can " #~ "download models suitable for CMU Sphinx for example from CMU Sphinx’ sourceforge repository. It has " #~ "models for some of the most widespread languages." #~ msgstr "" #~ "Parlatype verwendet CMU Sphinx als Spracherkennungssystem. Sie können für " #~ "CMU Sphinx passende Sprachmodelle zum Beispiel von CMU Sphinx' Sourceforge-Portal herunterladen. Dort " #~ "befinden sich Modelle für einige der am weitesten verbreiteten Sprachen " #~ "(auch Deutsch)." #~ msgid "" #~ "If it’s compressed, uncompress the model. Save it to a folder where it " #~ "can stay. Parlatype doesn’t copy the model internally." #~ msgstr "" #~ "Wenn es komprimiert ist, entpacken Sie das Modell. Speichern Sie es in " #~ "einem Verzeichnis, wo es bleiben kann. Parlatype erstellt intern keine " #~ "Kopie des Modells." #~ msgid "When you are finished, specify the folder with the model:" #~ msgstr "" #~ "Wenn Sie damit fertig sind, geben Sie das Verzeichnis mit dem Modell an:" #~ msgid "Select language model" #~ msgstr "Sprachmodell auswählen" #~ msgid "Dictionary" #~ msgstr "Wörterbuch" #~ msgid "Select dictionary" #~ msgstr "Wörterbuch auswählen" #~ msgid "Acoustic model" #~ msgstr "Akustisches Modell" #~ msgid "Select acoustic model folder" #~ msgstr "Verzeichnis mit akustischem Modell auswählen" #~ msgid "Setup is completed. Please give this configuration a name:" #~ msgstr "" #~ "Die Einrichtung ist abgeschlossen. Bitte geben Sie dieser Konfiguration " #~ "einen Namen:" #~ msgid "Dictionary:" #~ msgstr "Wörterbuch:" #~ msgid "Acoustic model folder:" #~ msgstr "Verzeichnis mit akustischem Modell:" parlatype-3.0/po/en_AU.po000066400000000000000000000651011414030451500153220ustar00rootroot00000000000000# English (Australia) translation for parlatype # Copyright (c) 2020 Rosetta Contributors and Canonical Ltd 2020 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2020. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-05-31 17:39+0000\n" "Last-Translator: Jared Norris \n" "Language-Team: English (Australia) \n" "Language: en_AU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2020-06-18 10:32+0000\n" "X-Generator: Launchpad (build 1cbd0aa39df153c901321817f9b57cf3f232b507)\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "Media player for speech transcription" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "Gabor Karsay" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "This is a minor release with bug fixes and minor new features." #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "The initial volume level is picked up from Pulseaudio." #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "Translation updates for several languages." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "This is a major release with new features." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "Waveform is loaded on-the-fly, there is no blocking progress dialogue." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "Waveform can be changed continuously instead of in discrete steps." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "This is a minor release." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "Translation updates for Hungarian, Lithuanian and Spanish" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "This is a minor release with some changes." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "Fix internationalisation: Some translations were not shown" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "This is a major release with some new features." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "Automatic speech recognition with CMU Sphinx" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "Design changes, including removal of application menu" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "Custom timestamps" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "This is a minor maintenance release." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "Animate scrolling when using keybindings" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "Change desktop entry category to Audio/Video instead of Utilities" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "Translation updates for French" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "This release contains a number of bug fixes and minor improvements." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "Progress Dialogue has now a countdown timer (estimated time left)" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "Increase max. possible speed to 2.0" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "Scrolling now also possible with vertical scrollbar" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "Various fixes for waveform and cursor display" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Transcription utility" #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "Transcription;" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "Show the application’s version" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "Open Audio File" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "_Open" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Cancel" #: src/pt-app.c:123 msgid "Audio files" msgstr "Audio files" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "All files" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "Error opening help: %s" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "Including code from other projects:" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "A basic transcription utility" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Jared Norris https://launchpad.net/~jarednorris" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "second" msgstr[1] "seconds" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "Speech recognition" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "" #: src/pt-prefs-asr.c:585 #, fuzzy msgid "Delete language model configuration?" msgstr "Deleting configuration" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "Do you really want to delete “%s”?" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "" #: src/pt-prefs-asr.c:731 #, fuzzy msgid "The file is not a valid language model configuration." msgstr "The folder contains several language models." #: src/pt-prefs-asr.c:779 #, fuzzy msgid "Import language model configuration" msgstr "There is no configuration" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "Jump back 1 second" msgstr[1] "Jump back %d seconds" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "Jump forward 1 second" msgstr[1] "Jump forward %d seconds" #: src/pt-window.c:412 msgid "Pause" msgstr "Pause" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "Pause and rewind 1 second" msgstr[1] "Pause and rewind %d seconds" #: src/pt-window.c:422 msgid "Start playing" msgstr "Start playing" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "Go to time in clipboard: %s" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "Go to time in clipboard" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "Manual transcription" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "Automatic transcription" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "General" #: src/resources/asr-dialog.ui:44 #, fuzzy msgid "Display Name:" msgstr "Display" #: src/resources/asr-dialog.ui:56 #, fuzzy msgid "Language:" msgstr "Language model:" #: src/resources/asr-dialog.ui:68 #, fuzzy msgid "Speech Recognition Engine:" msgstr "Speech recognition" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 #, fuzzy msgid "Download:" msgstr "Download model" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "Go to…" #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "_OK" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "Go to position:" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "Open a media file" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "Show/hide action menu" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "Quit" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "Waveform" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "Play/Pause" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "Jump back" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "Jump forward" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "Zoom in" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "Zoom out" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "Open “Go to” dialogue" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "Copy timestamp to clipboard" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "Go to timestamp in clipboard" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "Help" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "Show help" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "Show keyboard shortcuts" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "Preferences" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "_Keyboard Shortcuts" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "About Parlatype" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "Copy time to clipboard" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "Go to cursor" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "None" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "#Number signs#" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "(Round brackets)" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "[Square brackets]" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr ". (point)" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "- (hyphen)" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "Full seconds" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "10th seconds" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "100th seconds" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "Parlatype Preferences" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "_Pixels per second:" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "Show _time scale" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "Resolution" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "Display" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "_Moving cursor" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "_Fixed cursor" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "Jumps" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "Jump _forward:" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "Jump _back:" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "Jump back on _pause:" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "Pressing “Play” at the end of file" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "Replay file" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "Pressing “Play” at the end of selection" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "Replay selection" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "Controls" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "Hours and zeroes" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "Always show hours and leading zeroes" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "Precision" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "Characters around timestamps" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "Examples" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "Precision:" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "Fraction separator:" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "Timestamps" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "Remember _size" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "Remember _position" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "Start on _top" #: src/resources/preferences.ui:812 msgid "Window" msgstr "Window" #: src/resources/prefs-asr.ui:40 #, fuzzy msgid "Language model configurations" msgstr "Language model" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "" #: src/resources/prefs-asr.ui:59 #, fuzzy msgid "All models" msgstr "All files" #: src/resources/prefs-asr.ui:121 #, fuzzy msgid "Import a language model configuration" msgstr "There is no configuration" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "There is no configuration" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "Add a configuration" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "" #: src/resources/window.ui:48 msgid "Open a file" msgstr "Open a file" #: src/resources/window.ui:170 msgid "_Play" msgstr "_Play" #: src/resources/window.ui:294 msgid "Speed:" msgstr "Speed:" #, fuzzy #~ msgid "Remove this configuration" #~ msgstr "Deleting configuration" #, fuzzy #~ msgid "Setup this configuration" #~ msgstr "Deleting configuration" #~ msgid "org.parlatype.Parlatype" #~ msgstr "org.parlatype.Parlatype" #~ msgid "Enable automatic speech recognition" #~ msgstr "Enable automatic speech recognition" #~ msgid "Use internal textpad for automatic speech recognition" #~ msgstr "Use internal textpad for automatic speech recognition" #~ msgid "The folder contains no acoustic model." #~ msgstr "The folder contains no acoustic model." #~ msgid "Please select …" #~ msgstr "Please select …" #~ msgid "Missing parameters" #~ msgstr "Missing parameters" #~ msgid "Timed out" #~ msgstr "Timed out" #~ msgid "" #~ "Scanning the folder took too long. Please make sure to open a folder with " #~ "model data only." #~ msgstr "" #~ "Scanning the folder took too long. Please make sure to open a folder with " #~ "model data only." #~ msgid "Scanning the folder failed" #~ msgstr "Scanning the folder failed" #~ msgid "Nothing found" #~ msgstr "Nothing found" #~ msgid "This folder doesn’t contain a suitable model." #~ msgstr "This folder doesn’t contain a suitable model." #~ msgid "" #~ "The folder contains no language model. Please choose a language model " #~ "from another folder." #~ msgstr "" #~ "The folder contains no language model. Please choose a language model " #~ "from another folder." #~ msgid "" #~ "The folder contains no dictionary. Please choose a dictionary from " #~ "another folder." #~ msgstr "" #~ "The folder contains no dictionary. Please choose a dictionary from " #~ "another folder." #~ msgid "The folder contains several dictionaries." #~ msgstr "The folder contains several dictionaries." #~ msgid "" #~ "The folder contains no acoustic model. Please choose an acoustic model " #~ "from another folder." #~ msgstr "" #~ "The folder contains no acoustic model. Please choose an acoustic model " #~ "from another folder." #~ msgid "The folder contains several acoustic models." #~ msgstr "The folder contains several acoustic models." #~ msgid "Finish configuration" #~ msgstr "Finish configuration" #~ msgid "Select output for automatic speech recognition" #~ msgstr "Select output for automatic speech recognition" #~ msgid "Please open and switch focus to a word processor." #~ msgstr "Please open and switch focus to a word processor." #, c-format #~ msgid "Found %s" #~ msgstr "Found %s" #~ msgid "Press “Play” to start automatic speech recognition." #~ msgstr "Press “Play” to start automatic speech recognition." #, c-format #~ msgid "" #~ "Parlatype needs GStreamer 1.x to run. Please check your installation of " #~ "GStreamer and make sure you have the “Good Plugins” installed.\n" #~ "Parlatype will quit now, it received this error message: %s" #~ msgstr "" #~ "Parlatype needs GStreamer 1.x to run. Please check your installation of " #~ "GStreamer and make sure you have the “Good Plugins” installed.\n" #~ "Parlatype will quit now, it received this error message: %s" #~ msgid "Fatal error" #~ msgstr "Fatal error" #~ msgid "" #~ "Before you can start, you have to download a so called acoustic and " #~ "language model. This is a set of files made for a specific language." #~ msgstr "" #~ "Before you can start, you have to download a so called acoustic and " #~ "language model. This is a set of files made for a specific language." #~ msgid "" #~ "Parlatype uses CMU Sphinx as its speech recognition engine. You can " #~ "download models suitable for CMU Sphinx for example from CMU Sphinx’ sourceforge repository. It has " #~ "models for some of the most widespread languages." #~ msgstr "" #~ "Parlatype uses CMU Sphinx as its speech recognition engine. You can " #~ "download models suitable for CMU Sphinx for example from CMU Sphinx’ sourceforge repository. It has " #~ "models for some of the most widespread languages." #~ msgid "" #~ "If it’s compressed, uncompress the model. Save it to a folder where it " #~ "can stay. Parlatype doesn’t copy the model internally." #~ msgstr "" #~ "If it’s compressed, uncompress the model. Save it to a folder where it " #~ "can stay. Parlatype doesn’t copy the model internally." #~ msgid "When you are finished, specify the folder with the model:" #~ msgstr "When you are finished, specify the folder with the model:" #~ msgid "Select language model" #~ msgstr "Select language model" #~ msgid "Dictionary" #~ msgstr "Dictionary" #~ msgid "Select dictionary" #~ msgstr "Select dictionary" #~ msgid "Acoustic model" #~ msgstr "Acoustic model" #~ msgid "Select acoustic model folder" #~ msgstr "Select acoustic model folder" #~ msgid "Setup is completed. Please give this configuration a name:" #~ msgstr "Setup is completed. Please give this configuration a name:" #~ msgid "Dictionary:" #~ msgstr "Dictionary:" #~ msgid "Acoustic model folder:" #~ msgstr "Acoustic model folder:" parlatype-3.0/po/en_GB.po000066400000000000000000000654231414030451500153140ustar00rootroot00000000000000# English (United Kingdom) translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # Anthony Harrington , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-05-09 12:33+0000\n" "Last-Translator: Stephan Woidowski \n" "Language-Team: English (United Kingdom) \n" "Language: en_GB\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2020-05-31 16:44+0000\n" "X-Generator: Launchpad (build 275d46a24253e557e4403d52832837e4bfa425b6)\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "Media player for speech transcription" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" "Parlatype is an easy to use media player. Its main purpose is to help you " "when transcribing speech." #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "Gabor Karsay" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "This is a minor release with bug fixes and minor new features." #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "The initial volume level is picked up from Pulseaudio." #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "Translation updates for several languages." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "This is a major release with new features." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "Waveform is loaded on-the-fly, there is no blocking progress dialog." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "Waveform can be changed continuously instead of in discrete steps." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "This is a minor release." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "Translation updates for Hungarian, Lithuanian and Spanish" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "This is a minor release with some changes." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "Fix internationalization: Some translations were not shown" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "This is a major release with some new features." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "Automatic speech recognition with CMU Sphinx" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "Design changes, including removal of application menu" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "Custom timestamps" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "This is a minor maintenance release." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "Animate scrolling when using keybindings" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "Change desktop entry category to Audio/Video instead of Utilities" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "Translation updates for French" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "This release contains a number of bug fixes and minor improvements." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "Progress Dialogue has now a countdown timer (estimated time left)" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "Increase max. possible speed to 2.0" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "Scrolling now also possible with vertical scrollbar" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "Various fixes for waveform and cursor display" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Transcription utility" #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "Transcription;" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "Show the application’s version" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "Open Audio File" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "_Open" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Cancel" #: src/pt-app.c:123 msgid "Audio files" msgstr "Audio files" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "All files" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "Error opening help: %s" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "Including code from other projects:" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "A basic transcription utility" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Andi Chandler https://launchpad.net/~bing\n" " Anthony Harrington https://launchpad.net/~linuxchemist\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " Stephan Woidowski https://launchpad.net/~swoidowski" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "second" msgstr[1] "seconds" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "Speech recognition" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "" #: src/pt-prefs-asr.c:585 #, fuzzy msgid "Delete language model configuration?" msgstr "Deleting configuration" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "Do you really want to delete “%s”?" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "" #: src/pt-prefs-asr.c:731 #, fuzzy msgid "The file is not a valid language model configuration." msgstr "The folder contains several language models." #: src/pt-prefs-asr.c:779 #, fuzzy msgid "Import language model configuration" msgstr "There is no configuration" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "Jump back 1 second" msgstr[1] "Jump back %d seconds" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "Jump forward 1 second" msgstr[1] "Jump forward %d seconds" #: src/pt-window.c:412 msgid "Pause" msgstr "Pause" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "Pause and rewind 1 second" msgstr[1] "Pause and rewind %d seconds" #: src/pt-window.c:422 msgid "Start playing" msgstr "Start playing" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "Go to time in clipboard: %s" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "Go to time in clipboard" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "Manual transcription" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "Automatic transcription" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "General" #: src/resources/asr-dialog.ui:44 #, fuzzy msgid "Display Name:" msgstr "Display" #: src/resources/asr-dialog.ui:56 #, fuzzy msgid "Language:" msgstr "Language model:" #: src/resources/asr-dialog.ui:68 #, fuzzy msgid "Speech Recognition Engine:" msgstr "Speech recognition" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 #, fuzzy msgid "Download:" msgstr "Download model" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "Go to…" #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "_OK" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "Go to position:" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "Open a media file" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "Show/hide action menu" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "Quit" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "Waveform" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "Play/Pause" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "Jump back" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "Jump forward" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "Zoom in" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "Zoom out" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "Open “Go to” dialogue" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "Copy timestamp to clipboard" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "Go to timestamp in clipboard" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "Help" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "Show help" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "Show keyboard shortcuts" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "Preferences" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "_Keyboard Shortcuts" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "About Parlatype" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "Copy time to clipboard" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "Go to cursor" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "None" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "#Number signs#" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "(Round brackets)" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "[Square brackets]" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr ". (point)" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "- (hyphen)" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "Full seconds" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "10th seconds" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "100th seconds" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "Parlatype Preferences" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "_Pixels per second:" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "Show _time scale" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "Resolution" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "Display" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "_Moving cursor" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "_Fixed cursor" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "Jumps" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "Jump _forward:" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "Jump _back:" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "Jump back on _pause:" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "Pressing “Play” at the end of file" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "Replay file" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "Pressing “Play” at the end of selection" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "Replay selection" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "Controls" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "Hours and zeroes" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "Always show hours and leading zeroes" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "Precision" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "Characters around timestamps" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "Examples" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "Precision:" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "Fraction separator:" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "Timestamps" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "Remember _size" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "Remember _position" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "Start on _top" #: src/resources/preferences.ui:812 msgid "Window" msgstr "Window" #: src/resources/prefs-asr.ui:40 #, fuzzy msgid "Language model configurations" msgstr "Language model" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "" #: src/resources/prefs-asr.ui:59 #, fuzzy msgid "All models" msgstr "All files" #: src/resources/prefs-asr.ui:121 #, fuzzy msgid "Import a language model configuration" msgstr "There is no configuration" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "There is no configuration" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "Add a configuration" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "" #: src/resources/window.ui:48 msgid "Open a file" msgstr "Open a file" #: src/resources/window.ui:170 msgid "_Play" msgstr "_Play" #: src/resources/window.ui:294 msgid "Speed:" msgstr "Speed:" #, fuzzy #~ msgid "Remove this configuration" #~ msgstr "Deleting configuration" #, fuzzy #~ msgid "Setup this configuration" #~ msgstr "Deleting configuration" #~ msgid "org.parlatype.Parlatype" #~ msgstr "org.parlatype.Parlatype" #~ msgid "Enable automatic speech recognition" #~ msgstr "Enable automatic speech recognition" #~ msgid "Use internal textpad for automatic speech recognition" #~ msgstr "Use internal textpad for automatic speech recognition" #~ msgid "The folder contains no acoustic model." #~ msgstr "The folder contains no acoustic model." #~ msgid "Please select …" #~ msgstr "Please select …" #~ msgid "Missing parameters" #~ msgstr "Missing parameters" #~ msgid "Timed out" #~ msgstr "Timed out" #~ msgid "" #~ "Scanning the folder took too long. Please make sure to open a folder with " #~ "model data only." #~ msgstr "" #~ "Scanning the folder took too long. Please make sure to open a folder with " #~ "model data only." #~ msgid "Scanning the folder failed" #~ msgstr "Scanning the folder failed" #~ msgid "Nothing found" #~ msgstr "Nothing found" #~ msgid "This folder doesn’t contain a suitable model." #~ msgstr "This folder doesn’t contain a suitable model." #~ msgid "" #~ "The folder contains no language model. Please choose a language model " #~ "from another folder." #~ msgstr "" #~ "The folder contains no language model. Please choose a language model " #~ "from another folder." #~ msgid "" #~ "The folder contains no dictionary. Please choose a dictionary from " #~ "another folder." #~ msgstr "" #~ "The folder contains no dictionary. Please choose a dictionary from " #~ "another folder." #~ msgid "The folder contains several dictionaries." #~ msgstr "The folder contains several dictionaries." #~ msgid "" #~ "The folder contains no acoustic model. Please choose an acoustic model " #~ "from another folder." #~ msgstr "" #~ "The folder contains no acoustic model. Please choose an acoustic model " #~ "from another folder." #~ msgid "The folder contains several acoustic models." #~ msgstr "The folder contains several acoustic models." #~ msgid "Finish configuration" #~ msgstr "Finish configuration" #~ msgid "Select output for automatic speech recognition" #~ msgstr "Select output for automatic speech recognition" #~ msgid "Please open and switch focus to a word processor." #~ msgstr "Please open and switch focus to a word processor." #, c-format #~ msgid "Found %s" #~ msgstr "Found %s" #~ msgid "Press “Play” to start automatic speech recognition." #~ msgstr "Press “Play” to start automatic speech recognition." #, c-format #~ msgid "" #~ "Parlatype needs GStreamer 1.x to run. Please check your installation of " #~ "GStreamer and make sure you have the “Good Plugins” installed.\n" #~ "Parlatype will quit now, it received this error message: %s" #~ msgstr "" #~ "Parlatype needs GStreamer 1.x to run. Please check your installation of " #~ "GStreamer and make sure you have the “Good Plugins” installed.\n" #~ "Parlatype will quit now, it received this error message: %s" #~ msgid "Fatal error" #~ msgstr "Fatal error" #~ msgid "" #~ "Before you can start, you have to download a so called acoustic and " #~ "language model. This is a set of files made for a specific language." #~ msgstr "" #~ "Before you can start, you have to download a so called acoustic and " #~ "language model. This is a set of files made for a specific language." #~ msgid "" #~ "Parlatype uses CMU Sphinx as its speech recognition engine. You can " #~ "download models suitable for CMU Sphinx for example from CMU Sphinx’ sourceforge repository. It has " #~ "models for some of the most widespread languages." #~ msgstr "" #~ "Parlatype uses CMU Sphinx as its speech recognition engine. You can " #~ "download models suitable for CMU Sphinx for example from CMU Sphinx’ sourceforge repository. It has " #~ "models for some of the most widespread languages." #~ msgid "" #~ "If it’s compressed, uncompress the model. Save it to a folder where it " #~ "can stay. Parlatype doesn’t copy the model internally." #~ msgstr "" #~ "If it’s compressed, uncompress the model. Save it to a folder where it " #~ "can stay. Parlatype doesn’t copy the model internally." #~ msgid "When you are finished, specify the folder with the model:" #~ msgstr "When you are finished, specify the folder with the model:" #~ msgid "Select language model" #~ msgstr "Select language model" #~ msgid "Dictionary" #~ msgstr "Dictionary" #~ msgid "Select dictionary" #~ msgstr "Select dictionary" #~ msgid "Acoustic model" #~ msgstr "Acoustic model" #~ msgid "Select acoustic model folder" #~ msgstr "Select acoustic model folder" #~ msgid "Setup is completed. Please give this configuration a name:" #~ msgstr "Setup is completed. Please give this configuration a name:" #~ msgid "Dictionary:" #~ msgstr "Dictionary:" #~ msgid "Acoustic model folder:" #~ msgstr "Acoustic model folder:" parlatype-3.0/po/es.po000066400000000000000000000637641414030451500147570ustar00rootroot00000000000000# Spanish translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # VPablo , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-05-09 17:13+0000\n" "Last-Translator: Rodrigo Lledó \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2020-05-31 16:44+0000\n" "X-Generator: Launchpad (build 275d46a24253e557e4403d52832837e4bfa425b6)\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "Reproductor multimedia para transcripción de grabaciones de voz" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" "Parlatype es un reproductor de medios fácil de usar. Su principal propósito " "es ayudar a transcribir grabaciones de voz." #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "Gabor Karsay" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "" "Esta es una versión menor con correcciones de errores y características " "menores nuevas." #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" "Silenciar/activar el volumen pulsando el icono de volumen con el botón " "secundario del puntero (generalmente el botón derecho del ratón)." #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" "Con Pulseaudio Parlatype ya no cambia el volumen del sistema, solo su propio " "volumen específico de la aplicación." #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "El nivel de volumen inicial se obtiene de Pulseaudio." #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "Actualizaciones de traducción para varios idiomas." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "Este es un lanzamiento mayor con características nuevas." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "Este es un lanzamiento menor." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Utilidad de transcripción" #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "Transcripción;" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "Mostrar la versión de la aplicación" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "Abrir archivo de audio" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "_Abrir" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Cancelar" #: src/pt-app.c:123 msgid "Audio files" msgstr "Archivos de audio" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "Todos los archivos" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "Error al abrir la ayuda: %s" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "Incluye código de otros proyectos:" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "Una utilidad básica de transcripción" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Adolfo Jayme https://launchpad.net/~fitojb\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " Jorge Toledo https://launchpad.net/~eldelacajita\n" " Rodrigo Lledó https://launchpad.net/~rodhos-hp\n" " VPablo https://launchpad.net/~villumar" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" "Atención: Parlatype carga únicamente un archivo a la vez. El resto se " "ignorará.\n" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "segundo" msgstr[1] "segundos" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "Reconocimiento de voz" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "" #: src/pt-prefs-asr.c:585 #, fuzzy msgid "Delete language model configuration?" msgstr "Eliminando la configuración" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "¿Confirma que quiere eliminar «%s»?" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "" #: src/pt-prefs-asr.c:731 #, fuzzy msgid "The file is not a valid language model configuration." msgstr "La carpeta contiene varios modelos lingüísticos." #: src/pt-prefs-asr.c:779 #, fuzzy msgid "Import language model configuration" msgstr "No hay configuración" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "Vuelve 1 segundo atrás" msgstr[1] "Vuelve %d segundos atrás" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "Avanza 1 segundo" msgstr[1] "Avanza %d segundos" #: src/pt-window.c:412 msgid "Pause" msgstr "Pausa" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "Pausa y rebobina 1 segundo" msgstr[1] "Pausa y rebobina %d segundos" #: src/pt-window.c:422 msgid "Start playing" msgstr "Iniciar la reproducción" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "Ir a tiempo en portapapeles: %s" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "Ir a tiempo en portapapeles" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "Transcripción manual" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "Transcripción automática" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "General" #: src/resources/asr-dialog.ui:44 #, fuzzy msgid "Display Name:" msgstr "Visualizar" #: src/resources/asr-dialog.ui:56 #, fuzzy msgid "Language:" msgstr "Modelo lingüístico:" #: src/resources/asr-dialog.ui:68 #, fuzzy msgid "Speech Recognition Engine:" msgstr "Reconocimiento de voz" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 #, fuzzy msgid "Download:" msgstr "Descargar el modelo" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "Ir a…" #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "_Aceptar" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "Ir a la posición:" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "Abrir archivo multimedia" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "Mostrar u ocultar el menú de acciones" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "Salir" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "Forma de onda" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "Reproducir/pausar" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "Saltar hacia atrás" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "Saltar hacia delante" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "Ampliar" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "Reducir" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "Abrir el cuadro de diálogo «Ir a»" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "Copiar la marca cronológica en el portapapeles" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "Ir a la marca cronológica copiada en el portapapeles" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "Ayuda" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "Mostrar la ayuda" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "Mostrar atajos de teclado" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "Preferencias" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "Atajos de teclado" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "Acerca de Parlatype" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "Copiar tiempo al portapapeles" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "Ir al cursor" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "Ninguno" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "#Signos numéricos#" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "(Paréntesis)" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "[Corchetes]" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr ". (punto)" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "- (guion)" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "Segundos completos" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "Décimas de segundos" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "Centésimas de segundos" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "Preferencias de Parlatype" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "_Píxeles por segundo:" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "Muestra escala de _tiempo" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "Resolución" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "Visualizar" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "Cursor _móvil" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "Cursor _fijo" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "Saltos" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "Avan_zar:" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "_Volver atrás:" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "Volver atrás al _pausar:" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "Al pulsar “Reproducir” al final del archivo" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "Reproducir de nuevo el archivo" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "Al pulsar \"Reproducir\" al final de la selección" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "Reproducir de nuevo la selección" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "Controles" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "Horas y ceros" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "Mostrar siempre las horas y los ceros a la izquierda" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "Precisión" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "Caracteres alrededor de las marcas temporales" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "Ejemplos" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "Precisión:" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "Separador de fracciones:" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "Marcas cronológicas" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "Recordar el _tamaño" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "Recordar la _posición" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "Iniciar _encima de las demás ventanas" #: src/resources/preferences.ui:812 msgid "Window" msgstr "Ventana" #: src/resources/prefs-asr.ui:40 #, fuzzy msgid "Language model configurations" msgstr "Modelo lingüístico" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "" #: src/resources/prefs-asr.ui:59 #, fuzzy msgid "All models" msgstr "Todos los archivos" #: src/resources/prefs-asr.ui:121 #, fuzzy msgid "Import a language model configuration" msgstr "No hay configuración" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "No hay configuración" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "Añadir una configuración" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "" #: src/resources/window.ui:48 msgid "Open a file" msgstr "Abrir un archivo" #: src/resources/window.ui:170 msgid "_Play" msgstr "_Reproducir" #: src/resources/window.ui:294 msgid "Speed:" msgstr "Velocidad:" #, fuzzy #~ msgid "Remove this configuration" #~ msgstr "Eliminando la configuración" #, fuzzy #~ msgid "Setup this configuration" #~ msgstr "Eliminando la configuración" #~ msgid "org.parlatype.Parlatype" #~ msgstr "org.parlatype.Parlatype" #~ msgid "Enable automatic speech recognition" #~ msgstr "Activar el reconocimiento de voz automático" #~ msgid "Use internal textpad for automatic speech recognition" #~ msgstr "" #~ "Usar editor de textos interno para el reconocimiento automático de voz" #~ msgid "The folder contains no acoustic model." #~ msgstr "La carpeta no contiene ningún modelo acústico." #~ msgid "Please select …" #~ msgstr "Seleccione…" #~ msgid "Missing parameters" #~ msgstr "Faltan parámetros" #~ msgid "Timed out" #~ msgstr "Tiempo agotado" #~ msgid "" #~ "Scanning the folder took too long. Please make sure to open a folder with " #~ "model data only." #~ msgstr "" #~ "Escanear la carpeta está llevando demasiado tiempo. Por favor, asegúrate " #~ "de abrir una carpeta que sólo contenga datos de modelo." #~ msgid "Scanning the folder failed" #~ msgstr "Fallo al escanear la carpeta" #~ msgid "Nothing found" #~ msgstr "No se encontró nada" #~ msgid "This folder doesn’t contain a suitable model." #~ msgstr "La carpeta no contiene ningún modelo adecuado." #~ msgid "" #~ "The folder contains no language model. Please choose a language model " #~ "from another folder." #~ msgstr "" #~ "La carpeta no contiene ningún modelo lingüístico. Seleccione uno de otra " #~ "carpeta." #~ msgid "" #~ "The folder contains no dictionary. Please choose a dictionary from " #~ "another folder." #~ msgstr "" #~ "La carpeta no contiene ningún diccionario. Seleccione uno desde otra " #~ "carpeta." #~ msgid "The folder contains several dictionaries." #~ msgstr "La carpeta contiene varios diccionarios." #~ msgid "" #~ "The folder contains no acoustic model. Please choose an acoustic model " #~ "from another folder." #~ msgstr "" #~ "La carpeta no contiene ningún modelo acústico. Seleccione uno de otra " #~ "carpeta." #~ msgid "The folder contains several acoustic models." #~ msgstr "La carpeta contiene varios modelos acústicos." #~ msgid "Finish configuration" #~ msgstr "Finalizar la configuración" #~ msgid "Select output for automatic speech recognition" #~ msgstr "Selecciona una salida para el reconocimiento automático de voz" #~ msgid "Please open and switch focus to a word processor." #~ msgstr "Por favor, abre y cambia el foco a un procesador de textos." #, c-format #~ msgid "Found %s" #~ msgstr "Encontrados %s" #~ msgid "Press “Play” to start automatic speech recognition." #~ msgstr "Pulse en «Reproducir» para iniciar el reconocimiento de voz." #, c-format #~ msgid "" #~ "Parlatype needs GStreamer 1.x to run. Please check your installation of " #~ "GStreamer and make sure you have the “Good Plugins” installed.\n" #~ "Parlatype will quit now, it received this error message: %s" #~ msgstr "" #~ "Parlatype necesita GStreamer 1.x para funcionar. Por favor, comprueba tu " #~ "instalación de GStreamer y asegúrate de que tienes los “Good Plugins” " #~ "instalados.\n" #~ "Parlatype se cerrará ahora; ha recibido este mensaje de error: %s" #~ msgid "Fatal error" #~ msgstr "Error grave" #~ msgid "" #~ "Before you can start, you have to download a so called acoustic and " #~ "language model. This is a set of files made for a specific language." #~ msgstr "" #~ "Antes de empezar, tienes que descargar un modelo acústico y lingüístico. " #~ "Es un conjunto de archivos hechos para un idioma específico." #~ msgid "" #~ "Parlatype uses CMU Sphinx as its speech recognition engine. You can " #~ "download models suitable for CMU Sphinx for example from CMU Sphinx’ sourceforge repository. It has " #~ "models for some of the most widespread languages." #~ msgstr "" #~ "Parlatype usa CMU Sphinx como motor de reconocimiento de voz. Puedes " #~ "descargar modelos adecuados para CMU Sphinx desde el repositorio de CMU Sphinx en Sourceforge, por " #~ "ejemplo. Tiene modelos para los idiomas más extendidos." #~ msgid "" #~ "If it’s compressed, uncompress the model. Save it to a folder where it " #~ "can stay. Parlatype doesn’t copy the model internally." #~ msgstr "" #~ "Si está comprimido, descomprime el modelo. Muévelo a una carpeta donde " #~ "pueda permanecer guardado. Parlatype no copia el modelo internamente." #~ msgid "When you are finished, specify the folder with the model:" #~ msgstr "Cuando hayas terminado, especifica la carpeta con el modelo:" #~ msgid "Select language model" #~ msgstr "Seleccione un modelo lingüístico" #~ msgid "Dictionary" #~ msgstr "Diccionario" #~ msgid "Select dictionary" #~ msgstr "Seleccione un diccionario" #~ msgid "Acoustic model" #~ msgstr "Modelo acústico" #~ msgid "Select acoustic model folder" #~ msgstr "Selecciona la carpeta del modelo acústico" #~ msgid "Setup is completed. Please give this configuration a name:" #~ msgstr "" #~ "La configuración se ha completado. Por favor, da un nombre a esta " #~ "configuración:" #~ msgid "Dictionary:" #~ msgstr "Diccionario:" #~ msgid "Acoustic model folder:" #~ msgstr "Carpeta de modelo acústico:" parlatype-3.0/po/fi.po000066400000000000000000000546511414030451500147410ustar00rootroot00000000000000# Finnish translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-05-08 16:21+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish \n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2020-05-31 16:44+0000\n" "X-Generator: Launchpad (build 275d46a24253e557e4403d52832837e4bfa425b6)\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "Mediatoistin puheen transkriptioon" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" "Parlatype on helppokäyttöinen mediasoitin. Sen päätarkoitus on auttaa puheen " "transkriptiossa." #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "Gabor Karsay" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "Kielikäännösten päivityksiä useiden kielten osalta." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "Tämä on merkittävä julkaisu uusien ominaisuuksien kera." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "Tämä on pieni julkaisu." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "Tämä on pieni julkaisu joidenkin muutosten kera." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "Mukautetut aikaleimat" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Työkalu transkriptioon" #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "Transkriptio;" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "Näytä sovelluksen versio" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "Avaa äänitiedosto" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "_Avaa" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Peru" #: src/pt-app.c:123 msgid "Audio files" msgstr "Äänitiedostot" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "Kaikki tiedostot" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "Virhe ohjetta avatessa: %s" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "Sisältää koodia muista projekteista:" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " Jiri Grönroos https://launchpad.net/~jiri-gronroos" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" "Varoitus: Parlatype käsittelee vain yhden tiedoston kerrallaan. Muut " "tiedostot ohitetaan.\n" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "sekunti" msgstr[1] "sekuntia" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "Puheentunnistus" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "" #: src/pt-prefs-asr.c:585 #, fuzzy msgid "Delete language model configuration?" msgstr "Poistetaan määritys" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "Poistetaanko “%s”?" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "" #: src/pt-prefs-asr.c:731 #, fuzzy msgid "The file is not a valid language model configuration." msgstr "Tämä kansio sisältää useita kielimalleja." #: src/pt-prefs-asr.c:779 #, fuzzy msgid "Import language model configuration" msgstr "Ei määrityksiä" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "Siirry taaksepäin 1 sekunti" msgstr[1] "Siirry taaksepäin %d sekuntia" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "Siirry eteenpäin 1 sekunti" msgstr[1] "Siirry eteenpäin %d sekuntia" #: src/pt-window.c:412 msgid "Pause" msgstr "Keskeytä" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "Keskeytä ja siirry taaksepäin 1 sekunti" msgstr[1] "Keskeytä ja siirry taaksepäin %d sekuntia" #: src/pt-window.c:422 msgid "Start playing" msgstr "Aloita toistaminen" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "Siirry leikepöydällä olevaan aikaan: %s" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "Siirry leikepöydällä olevaan aikaan" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "Manuaalinen transkriptio" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "Automaattinen transkriptio" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "Yleiset" #: src/resources/asr-dialog.ui:44 #, fuzzy msgid "Display Name:" msgstr "Esitystapa" #: src/resources/asr-dialog.ui:56 #, fuzzy msgid "Language:" msgstr "Kielimalli:" #: src/resources/asr-dialog.ui:68 #, fuzzy msgid "Speech Recognition Engine:" msgstr "Puheentunnistus" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 #, fuzzy msgid "Download:" msgstr "Lataa malli" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "Siirry…" #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "_OK" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "Siirry sijaintiin:" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "Avaa mediatiedosto" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "Näytä/piilota toimintovalikko" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "Lopeta" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "Aaltomuoto" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "Toista/pidä tauko" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "Siirry taaksepäin" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "Siirry eteenpäin" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "Lähennä" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "Loitonna" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "Avaa \"Siirry\"-ikkuna" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "Kopioi aikaleima leikepöydälle" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "Siirry leikepöydällä olevaan aikaleimaan" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "Ohje" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "Näytä ohje" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "Näytä pikanäppäimet" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "Asetukset" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "_Pikanäppäimet" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "Tietoja - Parlatype" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "Kopioi aika leikepöydälle" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "Siirry kohdistimeen" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "Ei mitään" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "#Numeromerkit#" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "(Kaarisulut)" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "[Hakasulut]" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr ". (piste)" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "- (tavuviiva)" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "Täydet sekunnit" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "Kymmenesosasekunnit" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "Sadasosasekunnit" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "Parlatypen asetukset" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "_Pikseliä sekunnissa:" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "Näytä a_ika-asteikko" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "Tarkkuus" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "Esitystapa" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "_Liikkuva kursori" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "_Kiinteä kursori" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "Hypyt" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "Siirry _eteenpäin:" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "Siirry t_aaksepäin:" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "Siirry taaksepäin _keskeytyksessä:" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "Toistopainikkeen painaminen tiedoston lopuksi" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "Toista tiedosto uudelleen" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "Toistopainikkeen painaminen valinnan lopuksi" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "Toista valinta uudelleen" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "Säätimet" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "Tunnit ja nollat" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "Näytä aina tunnit ja etunollat" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "Tarkkuus" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "Merkit aikaleimojen ympärillä" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "Esimerkit" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "Tarkkuus:" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "Murto-osan erotin:" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "Aikaleimat" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "Muista _koko" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "Muista _sijainti" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "K_äynnistä päällimmäisenä" #: src/resources/preferences.ui:812 msgid "Window" msgstr "Ikkuna" #: src/resources/prefs-asr.ui:40 #, fuzzy msgid "Language model configurations" msgstr "Kielimalli" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "" #: src/resources/prefs-asr.ui:59 #, fuzzy msgid "All models" msgstr "Kaikki tiedostot" #: src/resources/prefs-asr.ui:121 #, fuzzy msgid "Import a language model configuration" msgstr "Ei määrityksiä" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "Ei määrityksiä" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "Lisää määritys" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "" #: src/resources/window.ui:48 msgid "Open a file" msgstr "Avaa tiedosto" #: src/resources/window.ui:170 msgid "_Play" msgstr "T_oista" #: src/resources/window.ui:294 msgid "Speed:" msgstr "Nopeus:" #, fuzzy #~ msgid "Remove this configuration" #~ msgstr "Poistetaan määritys" #, fuzzy #~ msgid "Setup this configuration" #~ msgstr "Poistetaan määritys" #~ msgid "org.parlatype.Parlatype" #~ msgstr "org.parlatype.Parlatype" #~ msgid "Enable automatic speech recognition" #~ msgstr "Käytä automaattista puheentunnistusta" #~ msgid "The folder contains no acoustic model." #~ msgstr "Tämä kansio ei sisällä akustista mallia." #~ msgid "Please select …" #~ msgstr "Valitse…" #~ msgid "Missing parameters" #~ msgstr "Parametreja puuttuu" #~ msgid "Timed out" #~ msgstr "Aikakatkaisu" #~ msgid "Nothing found" #~ msgstr "Mitään ei löytynyt" #~ msgid "This folder doesn’t contain a suitable model." #~ msgstr "Tämä kansio ei sisällä soveltuvaa mallia." #~ msgid "" #~ "The folder contains no language model. Please choose a language model " #~ "from another folder." #~ msgstr "" #~ "Tämä kansio ei sisällä kielimallia. Valitse kielimalli jostain toisesta " #~ "kansiosta." #~ msgid "" #~ "The folder contains no dictionary. Please choose a dictionary from " #~ "another folder." #~ msgstr "" #~ "Tämä kansio ei sisällä sanastoa. Valitse sanasto jostain toisesta " #~ "kansiosta." #~ msgid "The folder contains several dictionaries." #~ msgstr "Tämä kansio sisältää useita sanastoja." #~ msgid "" #~ "The folder contains no acoustic model. Please choose an acoustic model " #~ "from another folder." #~ msgstr "" #~ "Tämä kansio ei sisällä akustista mallia. Valitse akustinen malli jostain " #~ "toisesta kansiosta." #~ msgid "The folder contains several acoustic models." #~ msgstr "Tämä kansio sisältää useita akustisia malleja." #~ msgid "Finish configuration" #~ msgstr "Viimeistele määritys" #, c-format #~ msgid "Found %s" #~ msgstr "Löytyi %s" #~ msgid "Press “Play” to start automatic speech recognition." #~ msgstr "" #~ "Paina toistopainiketta aloittaaksesi automaattisen puheentunnistuksen." #~ msgid "Fatal error" #~ msgstr "Vakava virhe" #~ msgid "Select language model" #~ msgstr "Valitse kielimalli" #~ msgid "Dictionary" #~ msgstr "Sanasto" #~ msgid "Select dictionary" #~ msgstr "Valitse sanasto" #~ msgid "Acoustic model" #~ msgstr "Akustinen malli" #~ msgid "Select acoustic model folder" #~ msgstr "Valitse akustisen mallin kansio" #~ msgid "Setup is completed. Please give this configuration a name:" #~ msgstr "Asetukset ovat valmiit. Anna tälle määritykselle nimi:" #~ msgid "Dictionary:" #~ msgstr "Sanasto:" #~ msgid "Acoustic model folder:" #~ msgstr "Akustisen mallin kansio:" parlatype-3.0/po/fr.po000066400000000000000000000706031414030451500147450ustar00rootroot00000000000000# French translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # archi02 , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-05-31 17:57+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Launchpad-Export-Date: 2020-06-18 10:32+0000\n" "X-Generator: Launchpad (build 1cbd0aa39df153c901321817f9b57cf3f232b507)\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "Lecteur multimédia pour la transcription vocale" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" "Parlatype est un lecteur média simple d'utilisation. Il est conçu pour " "simplifier la transcription de discours." #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "Gabor Karsay" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "" "Il s'agit d'une version mineure avec des corrections de bogues et de " "nouvelles fonctionnalités mineures." #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" "Activer/désactiver le volume en cliquant sur l'icône de volume avec le " "bouton secondaire du pointeur (généralement le bouton droit de la souris)." #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" "Avec Pulseaudio Parlatype ne change plus le volume du système, juste son " "propre volume spécifique." #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "Le niveau de volume initial est extrait de Pulseaudio." #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "Mises à jour des traductions pour plusieurs langues." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "Il s'agit d'une version majeure avec de nouvelles fonctionnalités." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "" "L'onde sonore est chargée à la volée, il n'y a pas de boîte de dialogue de " "progression blocante." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "L'onde sonore peut être modifiée en continu plutôt que par étapes." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "Il s'agit d'une version mineure." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" "Mise à jour de l'étiquette de temps uniquement si l'heure a changé. " "Apportant ainsi une augmentation des performances, le mouvement du curseur " "devrait être plus fluide sur les systèmes plus lents." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "Mise à jour des traductions en hongrois, lituanien et espagnol" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "Il s'agit d'une version mineure avec quelques modifications." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" "La reconnaissance automatique de la parole (ASR) est désormais désactivée " "par défaut et ne s'affiche que si le type de langue est lancé avec le " "nouveau paramètre --with-asr" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "" "Correction de l'internationalisation : certaines traductions n'étaient pas " "affichées" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" "Mise à jour des traductions en arabe, anglais, tchèque, néerlandais, " "allemand et espagnol" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "Il s'agit d'une version majeure avec de nouvelles fonctionnalités." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "Reconnaissance automatique de la parole avec CMU Sphinx" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "Modifications de conception, dont la suppression du menu d'application" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "Horodatages personnalisés" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" "Mise à jour des traductions en portugais brésilien, anglais, tchèque, " "allemand, japonais, lituanien et polonais" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "Il s'agit d'une version de maintenance mineure." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "Défilement animé lors de l'utilisation des raccourcis clavier" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "" "Modification de la catégorie d'entrée de bureau vers Audio/Vidéo au lieu " "d'Utilitaires" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "Mise à jour de la traduction en français" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "" "Cette version contient un certain nombre de corrections de bogues et " "d'améliorations mineures." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "" "Progress Dialog dispose désormais d'un compte à rebours (temps restant " "estimé)" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "Augmentation de la vitesse maximum à 2.0" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" "Nouveaux raccourcis clavier pour Lecture/Pause (Ctrl + Espace), Saut arrière " "(Ctrl + Gauche)et Saut avant (Ctrl + Droite)" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "" "Le défilement est désormais possible avec la barre de défilement verticale" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "Diverses corrections pour l'affichage de l'onde sonore et du curseur" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" "Mise à jour des traductions en arabe, anglais, catalan, allemand, finnois, " "français, japonais, lituanien, polonais, espagnol et suédois" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Outil de transcription" #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "Transcription;" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "Affiche la version de l’application" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "Ouvrir un fichier audio" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "_Ouvrir" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Annuler" #: src/pt-app.c:123 msgid "Audio files" msgstr "Fichiers audio" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "Tous les fichiers" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "Erreur à l'ouverture de l'aide : %s" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "Inclut du code issu d'autres projets :" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "Un outil de transcription de base" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " Georgelemental https://launchpad.net/~georgelemental-n\n" " Jean-Marc https://launchpad.net/~m-balthazar\n" " archi02 https://launchpad.net/~jo-chibois\n" " yeKcim https://launchpad.net/~yekcim" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" "Avertissement : Parlatype ne gère qu'un fichier à la fois. Les autres " "fichiers sont ignorés.\n" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "seconde" msgstr[1] "secondes" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "Reconnaissance de la parole" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "" #: src/pt-prefs-asr.c:585 #, fuzzy msgid "Delete language model configuration?" msgstr "Suppression de la configuration" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "Voulez-vous vraiment supprimer « %s » ?" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "" #: src/pt-prefs-asr.c:731 #, fuzzy msgid "The file is not a valid language model configuration." msgstr "Le dossier contient plusieurs modèles de langue." #: src/pt-prefs-asr.c:779 #, fuzzy msgid "Import language model configuration" msgstr "Il n'y a pas de configuration" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "Reculer d'%d seconde" msgstr[1] "Reculer de %d secondes" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "Avancer d'%d seconde" msgstr[1] "Avancer de %d seconde" #: src/pt-window.c:412 msgid "Pause" msgstr "Mettre en pause" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "Mettre en pause et reculer d'%d seconde" msgstr[1] "Mettre en pause et reculer de %d secondes" #: src/pt-window.c:422 msgid "Start playing" msgstr "Démarrer la lecture" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "Aller au temps dans le presse-papier : %s" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "Aller au temps dans le presse-papier" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "Transcription manuelle" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "Transcription automatique" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "Général" #: src/resources/asr-dialog.ui:44 #, fuzzy msgid "Display Name:" msgstr "Affichage" #: src/resources/asr-dialog.ui:56 #, fuzzy msgid "Language:" msgstr "Modèle de langue :" #: src/resources/asr-dialog.ui:68 #, fuzzy msgid "Speech Recognition Engine:" msgstr "Reconnaissance de la parole" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 #, fuzzy msgid "Download:" msgstr "Télécharger le modèle" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "Aller à..." #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "_OK" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "Aller à la position :" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "Ouvrir un fichier" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "Afficher/masquer le menu Action" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "Quitter" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "Onde sonore" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "Lecture/pause" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "Saut arrière" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "Saut avant" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "Zoom avant" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "Zoom arrière" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "Ouvrir la fenêtre de dialogue « Aller à »" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "Copier l’horodatage dans le presse-papier" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "Aller à l’horodatage du presse-papier" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "Aide" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "Afficher l’aide" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "Afficher les raccourcis clavier" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "Préférences" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "Raccourcis _clavier" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "À propos de Parlatype" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "Copier le temps dans le presse-papier" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "Aller au curseur" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "Aucun" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "#Signes numériques#" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "(paranthèses)" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "[crochets]" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr ". (point)" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "- (trait d'union)" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "secondes" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "dixièmes de seconde" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "centièmes de seconde" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "Préférences de Parlatype" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "_Pixels par seconde :" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "Afficher l'échelle de _temps" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "Résolution" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "Affichage" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "Curseur _mobile" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "Curseur _fixe" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "Sauts" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "Saut _avant :" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "Saut a_rrière :" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "Saut arrière à la _pause :" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "Appuyer sur « Lecture » à la fin du fichier" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "Relire le fichier" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "Appuyer sur « Lecture » à la fin de la sélection" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "Relire la sélection" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "Touches de contrôle" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "Heures et zéros" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "Toujours afficher les heures et les zéros en tête" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "Précision" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "Caractères autour des horodatages" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "Exemples" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "Précision :" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "Séparateur :" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "Horodatages" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "Mémoriser la _taille" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "Mémoriser la _position" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "Lancer au _premier plan" #: src/resources/preferences.ui:812 msgid "Window" msgstr "Fenêtre" #: src/resources/prefs-asr.ui:40 #, fuzzy msgid "Language model configurations" msgstr "Modèle de langue" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "" #: src/resources/prefs-asr.ui:59 #, fuzzy msgid "All models" msgstr "Tous les fichiers" #: src/resources/prefs-asr.ui:121 #, fuzzy msgid "Import a language model configuration" msgstr "Il n'y a pas de configuration" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "Il n'y a pas de configuration" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "Ajouter une configuration" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "" #: src/resources/window.ui:48 msgid "Open a file" msgstr "Ouvrir un fichier" #: src/resources/window.ui:170 msgid "_Play" msgstr "_Lancer" #: src/resources/window.ui:294 msgid "Speed:" msgstr "Vitesse :" #, fuzzy #~ msgid "Remove this configuration" #~ msgstr "Suppression de la configuration" #, fuzzy #~ msgid "Setup this configuration" #~ msgstr "Suppression de la configuration" #~ msgid "org.parlatype.Parlatype" #~ msgstr "org.parlatype.Parlatype" #~ msgid "Enable automatic speech recognition" #~ msgstr "Activer la reconnaissance automatique de la parole" #~ msgid "Use internal textpad for automatic speech recognition" #~ msgstr "" #~ "Utilisation de l'éditeur de texte interne pour la reconnaissance de la " #~ "parole" #~ msgid "The folder contains no acoustic model." #~ msgstr "Le dossier ne contient aucun modèle acoustique." #~ msgid "Please select …" #~ msgstr "Veuillez sélectionner..." #~ msgid "Missing parameters" #~ msgstr "Paramètres manquants" #~ msgid "Timed out" #~ msgstr "Délai expiré" #~ msgid "" #~ "Scanning the folder took too long. Please make sure to open a folder with " #~ "model data only." #~ msgstr "" #~ "L'analyse du dossier a pris trop de temps. Veuillez vous assurer d'ouvrir " #~ "un dossier contenant uniquement des données de modèle." #~ msgid "Scanning the folder failed" #~ msgstr "L'analyse du dossier a échoué" #~ msgid "Nothing found" #~ msgstr "Rien n'a été trouvé" #~ msgid "This folder doesn’t contain a suitable model." #~ msgstr "Ce dossier ne contient pas de modèle approprié." #~ msgid "" #~ "The folder contains no language model. Please choose a language model " #~ "from another folder." #~ msgstr "" #~ "Le dossier ne contient aucun modèle de langue. Veuillez choisir un modèle " #~ "de langue dans un autre dossier." #~ msgid "" #~ "The folder contains no dictionary. Please choose a dictionary from " #~ "another folder." #~ msgstr "" #~ "Le dossier ne contient aucun dictionnaire. Veuillez choisir un " #~ "dictionnaire dans un autre dossier." #~ msgid "The folder contains several dictionaries." #~ msgstr "Le dossier contient plusieurs dictionnaires." #~ msgid "" #~ "The folder contains no acoustic model. Please choose an acoustic model " #~ "from another folder." #~ msgstr "" #~ "Le dossier ne contient aucun modèle acoustique. Veuillez choisir un " #~ "modèle acoustique dans un autre dossier." #~ msgid "The folder contains several acoustic models." #~ msgstr "Le dossier contient plusieurs modèles acoustiques." #~ msgid "Finish configuration" #~ msgstr "Finir la configuration" #~ msgid "Select output for automatic speech recognition" #~ msgstr "" #~ "Sélectionner la sortie pour la reconnaissance automatique de la parole" #~ msgid "Please open and switch focus to a word processor." #~ msgstr "Veuillez ouvrir et basculer le focus sur un traitement de texte." #, c-format #~ msgid "Found %s" #~ msgstr "%s trouvé" #~ msgid "Press “Play” to start automatic speech recognition." #~ msgstr "" #~ "Appuyer sur « Lecture » pour démarrer la reconnaissance automatique de la " #~ "parole." #, c-format #~ msgid "" #~ "Parlatype needs GStreamer 1.x to run. Please check your installation of " #~ "GStreamer and make sure you have the “Good Plugins” installed.\n" #~ "Parlatype will quit now, it received this error message: %s" #~ msgstr "" #~ "Parlatype a besoin de GStreamer 1.x pour fonctionner. Veuillez vérifier " #~ "votre installation de GStreamer et assurez-vous que les greffons « Good » " #~ "sont installés.\n" #~ "Parlatype va se fermer, il a reçu ce message d'erreur : %s" #~ msgid "Fatal error" #~ msgstr "Erreur fatale" #~ msgid "" #~ "Before you can start, you have to download a so called acoustic and " #~ "language model. This is a set of files made for a specific language." #~ msgstr "" #~ "Avant de commencer, vous devez télécharger un modèle acoustique et de " #~ "langue. Il s'agit d'un ensemble de fichiers créés pour une langue " #~ "spécifique." #~ msgid "" #~ "Parlatype uses CMU Sphinx as its speech recognition engine. You can " #~ "download models suitable for CMU Sphinx for example from CMU Sphinx’ sourceforge repository. It has " #~ "models for some of the most widespread languages." #~ msgstr "" #~ "Parlatype utilise CMU Sphinx comme moteur de reconnaissance de la parole. " #~ "Vous pouvez télécharger des modèles adaptés à CMU Sphinx à partir des dépôts CMU Sphinx’ sur sourceforge. On y " #~ "trouve des modèles pour les langues les plus répandues." #~ msgid "" #~ "If it’s compressed, uncompress the model. Save it to a folder where it " #~ "can stay. Parlatype doesn’t copy the model internally." #~ msgstr "" #~ "S'il est compressé, décompressez le modèle. Enregistrez-le dans un " #~ "dossier où il pourra rester. Parlatype ne copie pas le modèle en interne." #~ msgid "When you are finished, specify the folder with the model:" #~ msgstr "Lorsque vous aurez terminé, spécifiez le dossier avec le modèle :" #~ msgid "Select language model" #~ msgstr "Sélectionner le modèle de langue" #~ msgid "Dictionary" #~ msgstr "Dictionnaire" #~ msgid "Select dictionary" #~ msgstr "Sélectionner un dictionnaire" #~ msgid "Acoustic model" #~ msgstr "Modèle acoustique" #~ msgid "Select acoustic model folder" #~ msgstr "Sélectionner le dossier du modèle acoustique" #~ msgid "Setup is completed. Please give this configuration a name:" #~ msgstr "" #~ "La configuration est terminée. Veuillez donner un nom à cette " #~ "configuration :" #~ msgid "Dictionary:" #~ msgstr "Dictionnaire :" #~ msgid "Acoustic model folder:" #~ msgstr "Dossier de modèles acoustiques :" parlatype-3.0/po/he.po000066400000000000000000000433651414030451500147370ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-08-29 10:33+0000\n" "Last-Translator: Tal Einat \n" "Language-Team: Hebrew , 2019. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-03-09 16:27+0000\n" "Last-Translator: Gabor Karsay \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-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "Médialejátszó a beszéd átírásához" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" "A Parlatype egy könnyen használható médialejátszó. Fő célja a beszéd átírása." #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "Karsay Gábor" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Átírás segédprogram" #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "Átírás;" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "Az alkalmazás verziójának megjelenítése" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "Hangfájl megnyitása" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "Meg_nyitás" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Mégse" #: src/pt-app.c:123 msgid "Audio files" msgstr "Hangfájlok" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "Minden fájl" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "Hiba a súgó megnyitásakor: %s" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "Más projektek kódja:" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "Egy alapvető átírás segédprogram" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " Óvári https://launchpad.net/~ovari" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" "Figyelmeztetés: A Parlatype egyszerre csak egy fájlt kezel. A többi fájl " "figyelmen kívül marad.\n" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "másodperc" msgstr[1] "másodperc" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "Beszédfelismerés" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "" #: src/pt-prefs-asr.c:585 #, fuzzy msgid "Delete language model configuration?" msgstr "Beállítás törlése" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "Tényleg törölni szeretné a(z) „%s”-t?" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "" #: src/pt-prefs-asr.c:731 #, fuzzy msgid "The file is not a valid language model configuration." msgstr "A mappa több nyelvi modellt tartalmaz." #: src/pt-prefs-asr.c:779 #, fuzzy msgid "Import language model configuration" msgstr "Nincs beállítás" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "Ugrás vissza 1 másodperc" msgstr[1] "Ugrás vissza %d másodperc" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "Ugrás előre 1 másodperc" msgstr[1] "Ugrás előre %d másodperc" #: src/pt-window.c:412 msgid "Pause" msgstr "Szünet" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "Szüneteltetés és visszatekerés 1 másodperc" msgstr[1] "Szüneteltetés és visszatekerés %d másodperc" #: src/pt-window.c:422 msgid "Start playing" msgstr "Lejátszás elindítása" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "Ugrás a vágólapon látható időre: %s" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "Ugrás a vágólapon látható időre" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "Kézi átírás" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "Önműködő átírás" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "Általános" #: src/resources/asr-dialog.ui:44 #, fuzzy msgid "Display Name:" msgstr "Megjelenítés" #: src/resources/asr-dialog.ui:56 #, fuzzy msgid "Language:" msgstr "Nyelvmodell:" #: src/resources/asr-dialog.ui:68 #, fuzzy msgid "Speech Recognition Engine:" msgstr "Beszédfelismerés" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 #, fuzzy msgid "Download:" msgstr "Letöltésmodell" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "Ugrás…" #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "_Rendben" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "Ugrás az időhelyzetére:" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "Médiafájl megnyitása" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "Művelet menü megjelenítése/elrejtése" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "Kilépés" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "Hanghullám" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "Lejátszás/Szünet" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "Ugrás vissza" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "Ugrás előre" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "Nagyítás" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "Kicsinyítés" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "„Ugrás” párbeszédablak megnyitása" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "Az időbélyeg másolása a vágólapra" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "Ugrás az időbélyegre a vágólapon" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "Súgó" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "Súgó megjelenítése" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "Gyorsbillentyűk megjelenítése" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "Beállítások" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "_Gyorsbillentyűk" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "A Parlatype névjegye" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "Idő másolása a vágólapra" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "Ugrás a kurzorra" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "Nincs" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "#Számjelek#" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "(Kerek zárójelek)" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "[Szögletes zárójelek]" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr ". (pont)" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "- (kötőjel)" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "Teljes másodperc" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "tized másodperc" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "század másodperc" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "Parlatype beállítások" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "_Pixel másodpercenként:" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "Idő_mérték megjelenítése" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "Felbontás" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "Megjelenítés" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "_Mozgó kurzor" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "_Rögzített kurzor" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "Ugrások" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "Ugrás _előre:" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "Ugrás _vissza:" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "Ugrás vissza a _szünetre:" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "„Lejátszás” gomb megnyomása a fájl végén" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "Fájl ismétlése" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "„Lejátszás” gomb megnyomása a kijelölés végén" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "Kijelölés ismétlése" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "Vezérlők" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "Órak és nullák" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "Az „órák” és a „vezető nullák” mindig megjelenik" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "Pontosság" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "Karakterek az időbélyegek körül" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "Példák" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "Pontosság:" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "Töredékelválasztó:" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "Időbélyegek" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "_Méret megőrzése" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "_Hely megőrzés" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "Kezdje a _tetején" #: src/resources/preferences.ui:812 msgid "Window" msgstr "Ablak" #: src/resources/prefs-asr.ui:40 #, fuzzy msgid "Language model configurations" msgstr "Nyelvmodell" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "" #: src/resources/prefs-asr.ui:59 #, fuzzy msgid "All models" msgstr "Minden fájl" #: src/resources/prefs-asr.ui:121 #, fuzzy msgid "Import a language model configuration" msgstr "Nincs beállítás" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "Nincs beállítás" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "Beállítás hozzáadása" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "" #: src/resources/window.ui:48 msgid "Open a file" msgstr "Fájl megnyitása" #: src/resources/window.ui:170 msgid "_Play" msgstr "_Lejátszás" #: src/resources/window.ui:294 msgid "Speed:" msgstr "Sebesség:" #, fuzzy #~ msgid "Remove this configuration" #~ msgstr "Beállítás törlése" #, fuzzy #~ msgid "Setup this configuration" #~ msgstr "Beállítás törlése" #~ msgid "org.parlatype.Parlatype" #~ msgstr "org.parlatype.Parlatype" #~ msgid "Enable automatic speech recognition" #~ msgstr "Önműködő beszédfelismerés engedélyezése" #~ msgid "Use internal textpad for automatic speech recognition" #~ msgstr "Használja a belső szövegpadt az önműködő beszédfelismeréshez" #~ msgid "The folder contains no acoustic model." #~ msgstr "A mappa nem tartalmaz akusztikus modellt." #~ msgid "Please select …" #~ msgstr "Kérlek, válassz…" #~ msgid "Missing parameters" #~ msgstr "Hiányzó segédváltozók" #~ msgid "Timed out" #~ msgstr "Időtúllépés" #~ msgid "" #~ "Scanning the folder took too long. Please make sure to open a folder with " #~ "model data only." #~ msgstr "" #~ "A mappa szkennelése túl sokáig tartott. Kérjük, győződjön meg róla, hogy " #~ "csak egy modelladattal rendelkező mappát nyit meg." #~ msgid "Scanning the folder failed" #~ msgstr "A mappa keresése sikertelen" #~ msgid "Nothing found" #~ msgstr "Nincs találat" #~ msgid "This folder doesn’t contain a suitable model." #~ msgstr "Ez a mappa nem tartalmaz megfelelő modellt." #~ msgid "" #~ "The folder contains no language model. Please choose a language model " #~ "from another folder." #~ msgstr "" #~ "A mappa nem tartalmaz nyelvi modellt. Válasszon nyelvi modellt egy másik " #~ "mappából." #~ msgid "" #~ "The folder contains no dictionary. Please choose a dictionary from " #~ "another folder." #~ msgstr "" #~ "A mappa nem tartalmaz szótárat. Kérjük, válasszon ki egy másik mappából " #~ "származó szótárat." #~ msgid "The folder contains several dictionaries." #~ msgstr "A mappa több szótárat tartalmaz." #~ msgid "" #~ "The folder contains no acoustic model. Please choose an acoustic model " #~ "from another folder." #~ msgstr "" #~ "A mappa nem tartalmaz akusztikus modellt. Válasszon ki egy akusztikus " #~ "modellt egy másik mappából." #~ msgid "The folder contains several acoustic models." #~ msgstr "A mappa több akusztikus modellt tartalmaz." #~ msgid "Finish configuration" #~ msgstr "Beállítás befejezése" #~ msgid "Select output for automatic speech recognition" #~ msgstr "Válassza ki a kimenetet az önműködő beszédfelismeréshez" #~ msgid "Please open and switch focus to a word processor." #~ msgstr "Kérjük, nyissa meg és kapcsoljon fókuszt egy szövegszerkesztőre." #, c-format #~ msgid "Found %s" #~ msgstr "Talált %s" #~ msgid "Press “Play” to start automatic speech recognition." #~ msgstr "" #~ "Az önműködő beszédfelismerés elindításához nyomja meg a „Lejátszás” " #~ "gombot." #, c-format #~ msgid "" #~ "Parlatype needs GStreamer 1.x to run. Please check your installation of " #~ "GStreamer and make sure you have the “Good Plugins” installed.\n" #~ "Parlatype will quit now, it received this error message: %s" #~ msgstr "" #~ "A Parlatype használatához GStreamer 1.x szükséges. Kérjük, ellenőrizze a " #~ "GStreamer telepítését, és győződjön meg róla, hogy telepítette a „jó " #~ "bővítményeket”.\n" #~ "A Parlatype most kilép, ezt a hibaüzenetet kapta: %s" #~ msgid "Fatal error" #~ msgstr "Végzetes hiba" #~ msgid "" #~ "Before you can start, you have to download a so called acoustic and " #~ "language model. This is a set of files made for a specific language." #~ msgstr "" #~ "Mielőtt elkezdené, le kell töltenie az úgynevezett akusztikus és nyelvi " #~ "modellt. Ez egy bizonyos nyelvhez készült fájlok halmaza." #~ msgid "" #~ "Parlatype uses CMU Sphinx as its speech recognition engine. You can " #~ "download models suitable for CMU Sphinx for example from CMU Sphinx’ sourceforge repository. It has " #~ "models for some of the most widespread languages." #~ msgstr "" #~ "A Parlatype a CMU Sphinx-et használja beszédfelismerő szolgáltatásaként. " #~ "A CMU Sphinxhez alkalmas modelleket például CMU " #~ "Sphinx forrásforrás-tárolójából tölthet le. A modellek a " #~ "legelterjedtebb nyelvekre vonatkoznak." #~ msgid "" #~ "If it’s compressed, uncompress the model. Save it to a folder where it " #~ "can stay. Parlatype doesn’t copy the model internally." #~ msgstr "" #~ "Ha tömörített, tömörítse meg a modellt. Mentse el egy mappába, ahol " #~ "maradhat. A Parlatype nem másolja a modellt belsőleg." #~ msgid "When you are finished, specify the folder with the model:" #~ msgstr "Ha elkészült, adja meg a mappát a modellel:" #~ msgid "Select language model" #~ msgstr "Válasszon nyelvmodellt" #~ msgid "Dictionary" #~ msgstr "Szótár" #~ msgid "Select dictionary" #~ msgstr "Szótár kiválasztása" #~ msgid "Acoustic model" #~ msgstr "Akusztikus modell" #~ msgid "Select acoustic model folder" #~ msgstr "Válassza ki az akusztikus modellmappát" #~ msgid "Setup is completed. Please give this configuration a name:" #~ msgstr "A telepítés befejeződött. Kérjük, adja meg egy konfigurációs név:" #~ msgid "Dictionary:" #~ msgstr "Szótár:" #~ msgid "Acoustic model folder:" #~ msgstr "Akusztikus modell mappa:" parlatype-3.0/po/id.po000066400000000000000000000444401414030451500147320ustar00rootroot00000000000000# Indonesian translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # Ari Setyo Wibowo , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2018-06-04 12:45+0000\n" "Last-Translator: Ari Setyo Wibowo \n" "Language-Team: Indonesian \n" "Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" "Parlatype adalah pemutar media yang mudah digunakan. Tujuan utamanya adalah " "untuk membantu Anda mentranskrip pembicaraan." #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Peralatan transkripsi" #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "Buka Berkas Audio" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "B_uka" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Batal" #: src/pt-app.c:123 msgid "Audio files" msgstr "Berkas audio" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "Semua berkas" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "Kesalahan membuka bantuan: %s" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "Termasuk kode dari proyek lain:" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "Sebuah peralatan transkrip dasar" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Ari Setyo Wibowo https://launchpad.net/~ari-el-uno" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" "Peringatan: Parlatype hanya menangani satu berkas dalam satu waktu. Berkas " "lain diabaikan.\n" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "detik" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "" #: src/pt-prefs-asr.c:585 msgid "Delete language model configuration?" msgstr "" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "" #: src/pt-prefs-asr.c:731 msgid "The file is not a valid language model configuration." msgstr "" #: src/pt-prefs-asr.c:779 msgid "Import language model configuration" msgstr "" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "Lompat mundur %d detik" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "Lompat maju %d detik" #: src/pt-window.c:412 msgid "Pause" msgstr "Pause" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "Pause dan putar ulang %d detik" #: src/pt-window.c:422 msgid "Start playing" msgstr "Mulai memutar" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "" #: src/resources/asr-dialog.ui:44 #, fuzzy msgid "Display Name:" msgstr "Tampilan" #: src/resources/asr-dialog.ui:56 msgid "Language:" msgstr "" #: src/resources/asr-dialog.ui:68 msgid "Speech Recognition Engine:" msgstr "" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 msgid "Download:" msgstr "" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "" #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "_Ok" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "Pergi ke posisi:" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "Keluar" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "Gelombang" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "Bantuan" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "Preferensi" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr "" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "Preferensi Parlatype" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "_Pixels per detik:" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "Tampilkan _skala waktu" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "Resolusi" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "Tampilan" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "_Kursor bergerak" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "Kursor _Tetap" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "Jump ma_ju:" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "Lompat _mundur:" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "Lompat mundur ke _pause:" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "Kendali" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "Ingat _posisi" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "Mulai di _atas" #: src/resources/preferences.ui:812 msgid "Window" msgstr "Jendela" #: src/resources/prefs-asr.ui:40 msgid "Language model configurations" msgstr "" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "" #: src/resources/prefs-asr.ui:59 #, fuzzy msgid "All models" msgstr "Semua berkas" #: src/resources/prefs-asr.ui:121 msgid "Import a language model configuration" msgstr "" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "" #: src/resources/window.ui:48 msgid "Open a file" msgstr "Buka berkas" #: src/resources/window.ui:170 msgid "_Play" msgstr "_Putar" #: src/resources/window.ui:294 msgid "Speed:" msgstr "Kecepatan:" #~ msgid "Fatal error" #~ msgstr "Kesalahan fatal" parlatype-3.0/po/it.po000066400000000000000000000702661414030451500147570ustar00rootroot00000000000000# Italian translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # Luca Ciavatta , 2017. # Albano Battistella ,2020,2021. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2021-11-01 22:20+0100\n" "Last-Translator: Albano Battistella \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2020-05-31 16:44+0000\n" "X-Generator: Launchpad (build 275d46a24253e557e4403d52832837e4bfa425b6)\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "Lettore multimediale per trascrizione vocale" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" "Parlatype è un lettore multimediale facile da usare. Il suo scopo principale " "è quello di aiutare a trascrivere il parlato." #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "Gabor Karsay" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "" "Questa è una versione minore con correzioni difetti e piccole nuove " "funzionalità." #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" "Disattiva/attiva il volume facendo clic sull'icona del volume con il " "pulsante secondario del puntatore (in genere il pulsante destro del mouse)." #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" "Con Pulseaudio Parlatype non cambia più il volume del sistema, ma solo il " "volume specifico dell'applicazione." #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "Il livello del volume iniziale viene rilevato da Pulseaudio." #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "Aggiornamenti delle traduzioni per diverse lingue." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "Questa è una versione importante con nuove funzionalità." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "" "La forma d'onda viene caricata al volo, non c'è una finestra di dialogo di " "blocco dell'avanzamento." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "" "La forma d'onda può essere modificata in modo continuo anziché in passaggi " "discreti." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "Questa è una versione minore." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" "Aggiorna l'etichetta del tempo solo se il tempo è cambiato. Si tratta di un " "aumento delle prestazioni: Il movimento del cursore dovrebbe essere più " "fluido sui sistemi più lenti." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "Aggiornamenti di traduzione per ungherese, lituano e spagnolo" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "Questa è una versione minore con alcune modifiche." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" "Il riconoscimento vocale automatico (ASR) è ora disabilitato per " "impostazione predefinita ed è solo mostrato, se parlatype viene lanciato con " "il nuovo parametro --with-asr" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "" "Corretto l'internazionalizzazione: alcune traduzioni non erano mostrate" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" "Aggiornamenti della traduzione per Arabo, Inglese Britannico, Ceco, " "Olandese, Tedesco, Polacco e Spagnolo" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "Questa è una versione importante con alcune nuove funzionalità." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "Riconoscimento vocale automatico con CMU Sphinx" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "Modifiche al design, inclusa la rimozione del menu dell'applicazione" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "Timestamps personalizzato" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" "Aggiornamenti della traduzione per Portoghese Brasiliano, Inglese " "Britannico, Ceco, Tedesco, Giapponese, Lituano e Polacco" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "Questa è una versione di manutenzione minore." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "Animare lo scorrimento quando si utilizzano le combinazioni di tasti" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "" "Cambia la categoria delle voci del desktop in Audio/Video anziché in Utilità" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "Aggiornamenti della traduzione per il francese" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "" "Questa versione contiene una serie di correzioni di bug e miglioramenti " "minori." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "" "La finestra di avanzamento ha ora un conto alla rovescia (tempo stimato " "rimanente)" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "Aumenta max. velocità possibile a 2.0" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" "Nuove scorciatoie da tastiera per Riproduci/Pausa (Ctrl + Spazio), Salta " "indietro (Ctrl + Sinistra), Salta avanti (Ctrl + Destra)" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "" "Lo scorrimento ora è possibile anche con la barra di scorrimento verticale" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "" "Varie correzioni per la visualizzazione della forma d'onda e del cursore" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" "Aggiornamenti della traduzione per Arabo, Inglese Britannico, Catalano, " "Tedesco, Finlandese, Francese, Giapponese, Lituano, Polacco, Spagnolo e " "Svedese" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Utilità di trascrizione" #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "Trascrizione;" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "Mostra la versione dell'applicazione" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "Aprire File Audio" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "_Apri" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Annulla" #: src/pt-app.c:123 msgid "Audio files" msgstr "File audio" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "Tutti i file" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "Errore apertura aiuto: %s" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "Incluso il codice da altri progetti:" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "Un programma di trascrizione" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Luca Ciavatta https://launchpad.net/~cialu\n" " Marco Ciampa https://launchpad.net/~ciampix\n" " albano https://launchpad.net/~albano-battistella" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" "Attenzione: Parlatype gestisce un solo file alla volta. Gli altri file " "vengono ignorati.\n" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "secondo" msgstr[1] "secondi" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "Riconoscimento vocale" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "Impossibile leggere i file di configurazione personali" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "Impossibile copiare i file di configurazione forniti" #: src/pt-prefs-asr.c:585 msgid "Delete language model configuration?" msgstr "Eliminare la configurazione del modello di lingua?" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "Vuoi veramente cancellare \"%s\"?" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "_Si" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "Errore" #: src/pt-prefs-asr.c:731 msgid "The file is not a valid language model configuration." msgstr "Il file non è una configurazione del modello di lingua valida." #: src/pt-prefs-asr.c:779 msgid "Import language model configuration" msgstr "Importa la configurazione del modello di lingua" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "Configurazioni del modello di lingua Parlatype" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "Impossibile creare la cartella di configurazione personale" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "Indietro di 1 secondo" msgstr[1] "Indietro di %d secondi" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "Avanti di 1 secondo" msgstr[1] "Avanti di %d secondi" #: src/pt-window.c:412 msgid "Pause" msgstr "Pausa" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "Pausa e indietro di 1 secondo" msgstr[1] "Pausa e indietro di %d secondi" #: src/pt-window.c:422 msgid "Start playing" msgstr "Avvia la riproduzione" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "Vai al tempo negli appunti: %s" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "Vai al tempo negli appunti" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "Trascrizione manuale" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "Trascrizione automatica" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "Generale" #: src/resources/asr-dialog.ui:44 msgid "Display Name:" msgstr "Nome da visualizzare:" #: src/resources/asr-dialog.ui:56 msgid "Language:" msgstr "Lingua:" #: src/resources/asr-dialog.ui:68 msgid "Speech Recognition Engine:" msgstr "Motore di Riconoscimento Vocale:" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "Plugin GStreamer:" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "Editore:" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "Licenza:" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "Installazione" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 msgid "Download:" msgstr "Download:" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "Installato:" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "Istruzioni:" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "Scarica, decomprimi in una cartella e seleziona quella cartella." #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "Vai a…" #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "_OK" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "Vai alla posizione:" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "Apri un file multimediale" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "Mostra/nascondi menu azioni" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "Esci" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "Forma d’onda" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "Riproduci/Pausa" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "Salta indietro" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "Salta avanti" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "Zoom avanti" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "Zoom indietro" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "Apri la finestra di dialogo \"Vai a\"" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "Copia il timestamp negli Appunti" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "Vai al timestamp negli Appunti" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "Aiuto" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "Mostra aiuto" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "Mostra le scorciatoie da tastiera" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "Preferenze" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "_Tasti rapidi" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "Informazioni su Parlatype" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "Copia il tempo negli appunti" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "Vai al cursore" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "Nessuno" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "#Segni numerici#" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "(Round brackets)" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "[Parentesi quadre]" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr ". (punto)" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "- (trattino)" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "Secondi completi" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "10 secondi" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "100 secondi" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "Preferenze di Parlatype" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "_Pixels al secondo:" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "Mostra scala _temporale" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "Risoluzione" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "Visualizzazione" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "Cursore in _movimento" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "Cursore _fisso" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "Salti" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "Salta _avanti:" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "Salta _indietro:" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "Indietro in _pausa:" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "Premendo \"Riproduci\" alla fine del file" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "Ripeti file" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "Premendo \"Riproduci\" alla fine della selezione" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "Ripeti selezione" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "Controlli" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "Ore e zeri" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "Mostra sempre le ore e gli zeri iniziali" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "Precisione" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "Caratteri attorno a timestamp" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "Esempi" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "Precisone:" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "Separatore di frazione:" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "Marcature temporali" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "Ricorda _dimensione" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "Ricorda la _posizione" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "Inizia in _cima" #: src/resources/preferences.ui:812 msgid "Window" msgstr "Finestra" #: src/resources/prefs-asr.ui:40 msgid "Language model configurations" msgstr "Configurazioni del modello di lingua" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "Installato" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "Supportato" #: src/resources/prefs-asr.ui:59 msgid "All models" msgstr "Tutti i modelli" #: src/resources/prefs-asr.ui:121 msgid "Import a language model configuration" msgstr "Importa una configurazione del modello di lingua" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "Non c'è configurazione" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "Aggiungi una configurazione" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "Nessun risultato in questa visualizzazione" #: src/resources/window.ui:48 msgid "Open a file" msgstr "Aprire un file" #: src/resources/window.ui:170 msgid "_Play" msgstr "_Riproduci" #: src/resources/window.ui:294 msgid "Speed:" msgstr "Velocità:" #~ msgid "Remove this configuration" #~ msgstr "Rimuovi questa configurazione" #~ msgid "Setup this configuration" #~ msgstr "Imposta questa configurazione" #~ msgid "org.parlatype.Parlatype" #~ msgstr "org.parlatype.Parlatype" #~ msgid "Enable automatic speech recognition" #~ msgstr "Abilita il riconoscimento vocale automatico" #~ msgid "Use internal textpad for automatic speech recognition" #~ msgstr "Usa il textpad interno per il riconoscimento vocale automatico" #~ msgid "The folder contains no acoustic model." #~ msgstr "La cartella non contiene alcun modello acustico." #~ msgid "Please select …" #~ msgstr "Seleziona …" #~ msgid "Missing parameters" #~ msgstr "Parametri mancanti" #~ msgid "Timed out" #~ msgstr "Tempo scaduto" #~ msgid "" #~ "Scanning the folder took too long. Please make sure to open a folder with " #~ "model data only." #~ msgstr "" #~ "La scansione della cartella ha richiesto troppo tempo. Assicurati di " #~ "aprire una cartella con solo dati modello." #~ msgid "Scanning the folder failed" #~ msgstr "Scansione della cartella non riuscita" #~ msgid "Nothing found" #~ msgstr "Non e' stato trovato nulla" #~ msgid "This folder doesn’t contain a suitable model." #~ msgstr "Questa cartella non contiene un modello adatto." #~ msgid "" #~ "The folder contains no language model. Please choose a language model " #~ "from another folder." #~ msgstr "" #~ "La cartella non contiene alcun modello di lingua. Scegli un modello di " #~ "lingua da un'altra cartella." #~ msgid "" #~ "The folder contains no dictionary. Please choose a dictionary from " #~ "another folder." #~ msgstr "" #~ "La cartella non contiene un dizionario. Scegli un dizionario da un altra " #~ "cartella." #~ msgid "The folder contains several dictionaries." #~ msgstr "La cartella contiene diversi dizionari." #~ msgid "" #~ "The folder contains no acoustic model. Please choose an acoustic model " #~ "from another folder." #~ msgstr "" #~ "La cartella non contiene modelli acustici. Scegliere un modello acustico " #~ "da un'altra cartella." #~ msgid "The folder contains several acoustic models." #~ msgstr "La cartella contiene diversi modelli acustici." #~ msgid "Finish configuration" #~ msgstr "Termine configurazione" #~ msgid "Select output for automatic speech recognition" #~ msgstr "Seleziona l'output per il riconoscimento vocale automatico" #~ msgid "Please open and switch focus to a word processor." #~ msgstr "" #~ "Si prega di aprire e spostare la concentrazione su un elaboratore di " #~ "testi." #, c-format #~ msgid "Found %s" #~ msgstr "Trovato %s" #~ msgid "Press “Play” to start automatic speech recognition." #~ msgstr "" #~ "Premere \"Riproduci\" per avviare il riconoscimento vocale automatico." #, c-format #~ msgid "" #~ "Parlatype needs GStreamer 1.x to run. Please check your installation of " #~ "GStreamer and make sure you have the “Good Plugins” installed.\n" #~ "Parlatype will quit now, it received this error message: %s" #~ msgstr "" #~ "Per eseguire Parlatype è necessario GStreamer 1.x. Controlla " #~ "l'installazione di GStreamer e assicurati di avere \"Good Plugin\" " #~ "installato.\n" #~ "Parlatype verrà chiuso ora, ha ricevuto questo messaggio di errore: %s" #~ msgid "Fatal error" #~ msgstr "Errore critico" #~ msgid "" #~ "Before you can start, you have to download a so called acoustic and " #~ "language model. This is a set of files made for a specific language." #~ msgstr "" #~ "Prima di poter iniziare, devi scaricare un cosiddetto modello acustico e " #~ "lingua. Questo è un insieme di file creati per una lingua specifica." #~ msgid "" #~ "Parlatype uses CMU Sphinx as its speech recognition engine. You can " #~ "download models suitable for CMU Sphinx for example from CMU Sphinx’ sourceforge repository. It has " #~ "models for some of the most widespread languages." #~ msgstr "" #~ "Parlatype utilizza CMU Sphinx come motore di riconoscimento vocale. Puoi " #~ "scaricare modelli adatti per CMU Sphinx, ad esempio da Repository sourceforge di CMU Sphinx. Ha modelli per " #~ "alcuni delle lingue più diffuse." #~ msgid "" #~ "If it’s compressed, uncompress the model. Save it to a folder where it " #~ "can stay. Parlatype doesn’t copy the model internally." #~ msgstr "" #~ "Se è compresso, decomprimi il modello. Salvalo in una cartella dove può " #~ "restare. Parlatype non copia il modello internamente." #~ msgid "When you are finished, specify the folder with the model:" #~ msgstr "Al termine, specificare la cartella con il modello:" #~ msgid "Select language model" #~ msgstr "Seleziona il modello di lingua" #~ msgid "Dictionary" #~ msgstr "Dizionario" #~ msgid "Select dictionary" #~ msgstr "Seleziona il dizionario" #~ msgid "Acoustic model" #~ msgstr "Modello acustico" #~ msgid "Select acoustic model folder" #~ msgstr "Seleziona la cartella del modello acustico" #~ msgid "Setup is completed. Please give this configuration a name:" #~ msgstr "L'installazione è completata. Dai un nome a questa configurazione:" #~ msgid "Dictionary:" #~ msgstr "Dizionario:" #~ msgid "Acoustic model folder:" #~ msgstr "Cartella del modello acustico:" parlatype-3.0/po/ja.po000066400000000000000000000642351414030451500147340ustar00rootroot00000000000000# Japanese translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-05-15 13:52+0000\n" "Last-Translator: Shinichirou Yamada \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-Launchpad-Export-Date: 2020-05-31 16:44+0000\n" "X-Generator: Launchpad (build 275d46a24253e557e4403d52832837e4bfa425b6)\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "スピーチの文字起こしのためのメディアプレーヤー" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" "Parlatype はスピーチの文字起こしを補助するための、使いやすいメディアプレー" "ヤーです。" #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "Gabor Karsay" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "これはバグフィックスとマイナーな新機能を含んだマイナーリリースです。" #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "音声反訳ユーティリティ" #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "" "Transcription;トランスクリプション;転写;書き起こし;文字起こし;テープ起こし;音" "声反訳;" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "アプリケーションのバージョンを表示する" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "音声ファイルを開く" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "開く(_O)" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "キャンセル(_C)" #: src/pt-app.c:123 msgid "Audio files" msgstr "音声ファイル" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "すべてのファイル" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "ヘルプを開くときにエラー: %s" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "他のプロジェクトによるコードを内包しています:" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "ベーシックな音声反訳ユーティリティ" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Shinichirou Yamada https://launchpad.net/~yamada-strong-yamada-nice-64bit" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" "警告: Parlatype は一度にファイルを一つだけ処理します。他のファイルは無視され" "ます。\n" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "秒" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "音声認識" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "" #: src/pt-prefs-asr.c:585 #, fuzzy msgid "Delete language model configuration?" msgstr "設定の削除" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "本当に“%s”を削除しますか?" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "" #: src/pt-prefs-asr.c:731 #, fuzzy msgid "The file is not a valid language model configuration." msgstr "フォルダーに複数の言語モデルがあります。" #: src/pt-prefs-asr.c:779 #, fuzzy msgid "Import language model configuration" msgstr "設定はありません" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "%d 秒前に戻る" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "%d 秒先に進む" #: src/pt-window.c:412 msgid "Pause" msgstr "一時停止" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "一時停止して %d 秒前に戻る" #: src/pt-window.c:422 msgid "Start playing" msgstr "再生を開始する" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "クリップボード内の時間に移動: %s" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "クリップボード内の時間に移動" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "手動文字起こし" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "自動文字起こし" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "全般" #: src/resources/asr-dialog.ui:44 #, fuzzy msgid "Display Name:" msgstr "表示" #: src/resources/asr-dialog.ui:56 #, fuzzy msgid "Language:" msgstr "言語モデル:" #: src/resources/asr-dialog.ui:68 #, fuzzy msgid "Speech Recognition Engine:" msgstr "音声認識" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 #, fuzzy msgid "Download:" msgstr "モデルをダウンロード" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "移動…" #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "OK(_O)" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "次の位置まで移動:" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "メディアファイルを開く" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "アクションメニューの表示/非表示を切り替える" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "終了する" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "波形" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "再生/一時停止する" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "前に戻る" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "先に進む" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "拡大する" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "縮小する" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "“移動”ダイアログを開く" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "クリップボードにタイムスタンプをコピーする" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "クリップボード内のタイムスタンプに移動する" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "ヘルプ" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "ヘルプを表示する" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "キーボードショートカットを表示する" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "設定" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "キーボードショートカット(_K)" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "Parlatype について" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "クリップボードに時間をコピー" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "カーソル位置に移動" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "なし" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "#番号記号#" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "(丸かっこ)" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "[鉤かっこ]" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr ". (点)" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "- (ハイフン)" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "秒" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "1/10 秒" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "1/100 秒" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "Parlatype の設定" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "1 秒あたりのピクセル数(_P):" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "タイムスケールを表示する(_T)" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "解像度" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "表示" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "カーソルを移動する(_M)" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "カーソルを固定する(_F)" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "移動" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "進む位置(_F):" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "戻る位置(_B):" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "一時停止時に戻る位置(_P):" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "再生完了後に“再生”を押した場合" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "ファイルを再生し直す" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "選択部分の再生完了後に“再生”を押した場合" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "選択部分を再生し直す" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "コントロール" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "時間と 0" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "常に表記を時分秒にして二桁目を省略しない" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "精度" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "タイムスタンプを囲う文字" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "例" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "精度:" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "小数点に使用する文字:" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "タイムスタンプ" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "サイズを記憶する(_S)" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "位置を記憶する(_P)" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "最前面に起動する(_T)" #: src/resources/preferences.ui:812 msgid "Window" msgstr "ウィンドウ" #: src/resources/prefs-asr.ui:40 #, fuzzy msgid "Language model configurations" msgstr "言語モデル" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "" #: src/resources/prefs-asr.ui:59 #, fuzzy msgid "All models" msgstr "すべてのファイル" #: src/resources/prefs-asr.ui:121 #, fuzzy msgid "Import a language model configuration" msgstr "設定はありません" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "設定はありません" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "設定を追加" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "" #: src/resources/window.ui:48 msgid "Open a file" msgstr "ファイルを開く" #: src/resources/window.ui:170 msgid "_Play" msgstr "再生(_P)" #: src/resources/window.ui:294 msgid "Speed:" msgstr "速度:" #, fuzzy #~ msgid "Remove this configuration" #~ msgstr "設定の削除" #, fuzzy #~ msgid "Setup this configuration" #~ msgstr "設定の削除" #~ msgid "org.parlatype.Parlatype" #~ msgstr "org.parlatype.Parlatype" #~ msgid "Enable automatic speech recognition" #~ msgstr "自動音声認識を有効にする" #~ msgid "Use internal textpad for automatic speech recognition" #~ msgstr "自動音声認識に内蔵テキストパッドを使用する" #~ msgid "The folder contains no acoustic model." #~ msgstr "フォルダーに音響モデルがありません。" #~ msgid "Please select …" #~ msgstr "選択してください…" #~ msgid "Missing parameters" #~ msgstr "パラメーターがありません" #~ msgid "Timed out" #~ msgstr "タイムアウトしました" #~ msgid "" #~ "Scanning the folder took too long. Please make sure to open a folder with " #~ "model data only." #~ msgstr "" #~ "フォルダーのスキャンに時間がかかりすぎました。開くフォルダーにモデルデータ" #~ "しかないことを確認してください。" #~ msgid "Scanning the folder failed" #~ msgstr "フォルダーのスキャンに失敗しました" #~ msgid "Nothing found" #~ msgstr "何も見つかりませんでした" #~ msgid "This folder doesn’t contain a suitable model." #~ msgstr "このフォルダーには適切なモデルがありません。" #~ msgid "" #~ "The folder contains no language model. Please choose a language model " #~ "from another folder." #~ msgstr "" #~ "フォルダーに言語モデルがありません。別のフォルダーから言語モデルを選択して" #~ "ください。" #~ msgid "" #~ "The folder contains no dictionary. Please choose a dictionary from " #~ "another folder." #~ msgstr "" #~ "フォルダーに辞書がありません。別のフォルダーから辞書を選択してください。" #~ msgid "The folder contains several dictionaries." #~ msgstr "フォルダーに複数の辞書があります。" #~ msgid "" #~ "The folder contains no acoustic model. Please choose an acoustic model " #~ "from another folder." #~ msgstr "" #~ "フォルダーに音響モデルがありません。別のフォルダーから音響モデルを選択して" #~ "ください。" #~ msgid "The folder contains several acoustic models." #~ msgstr "フォルダーに複数の音響モデルがあります。" #~ msgid "Finish configuration" #~ msgstr "設定完了" #~ msgid "Select output for automatic speech recognition" #~ msgstr "自動音声認識の出力を選択" #~ msgid "Please open and switch focus to a word processor." #~ msgstr "ワードプロセッサーを開いてフォーカスを切り替えてください。" #, c-format #~ msgid "Found %s" #~ msgstr "%s が見つかりました" #~ msgid "Press “Play” to start automatic speech recognition." #~ msgstr "“再生”を押すと自動音声認識を開始します。" #, c-format #~ msgid "" #~ "Parlatype needs GStreamer 1.x to run. Please check your installation of " #~ "GStreamer and make sure you have the “Good Plugins” installed.\n" #~ "Parlatype will quit now, it received this error message: %s" #~ msgstr "" #~ "Parlatype の実行には GStreamer 1.x が必要です。GStreamer の“Good " #~ "Plugins”がインストールされていることを確認してください。\n" #~ "Parlatype を終了します。エラーメッセージ: %s" #~ msgid "Fatal error" #~ msgstr "致命的なエラー" #~ msgid "" #~ "Before you can start, you have to download a so called acoustic and " #~ "language model. This is a set of files made for a specific language." #~ msgstr "" #~ "まずは、いわゆる音響モデルと言語モデルをダウンロードする必要があります。こ" #~ "れは特定の言語用に作成されたファイルのセットです。" #~ msgid "" #~ "Parlatype uses CMU Sphinx as its speech recognition engine. You can " #~ "download models suitable for CMU Sphinx for example from CMU Sphinx’ sourceforge repository. It has " #~ "models for some of the most widespread languages." #~ msgstr "" #~ "Parlatype は音声認識エンジンとして CMU Sphinx を使用しています。CMU " #~ "Sphinx 用のモデルは、例えば CMU Sphinx の " #~ "SourceForge のリポジトリ からダウンロードできます。その CMU Sphinx の" #~ "リポジトリには、話者の多いいくつかの言語のモデルがあります。" #~ msgid "" #~ "If it’s compressed, uncompress the model. Save it to a folder where it " #~ "can stay. Parlatype doesn’t copy the model internally." #~ msgstr "" #~ "圧縮されている場合は適当なフォルダーに解凍 (展開) してください。Parlatype " #~ "は内部でモデルをコピーせず直接使用します。" #~ msgid "When you are finished, specify the folder with the model:" #~ msgstr "" #~ "解凍 (展開) や配置を終えたら、モデルがあるフォルダーを指定してください:" #~ msgid "Select language model" #~ msgstr "言語モデルを選択" #~ msgid "Dictionary" #~ msgstr "辞書" #~ msgid "Select dictionary" #~ msgstr "辞書を選択" #~ msgid "Acoustic model" #~ msgstr "音響モデル" #~ msgid "Select acoustic model folder" #~ msgstr "音響モデルフォルダーを選択" #~ msgid "Setup is completed. Please give this configuration a name:" #~ msgstr "セットアップが完了しました。この設定の名前を入力してください:" #~ msgid "Dictionary:" #~ msgstr "辞書:" #~ msgid "Acoustic model folder:" #~ msgstr "音響モデルフォルダー:" parlatype-3.0/po/kab.po000066400000000000000000000431671414030451500151000ustar00rootroot00000000000000# Kabyle translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # Belkacem Mohammed , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2018-06-04 12:45+0000\n" "Last-Translator: Belkacem Mohammed \n" "Language-Team: Kabyle \n" "Language: kab\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "" #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "Ldi afaylu ameslaw" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "_Ldi" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Sefsex" #: src/pt-app.c:123 msgid "Audio files" msgstr "Ifuyla imeslawen" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "Akk ifuyla" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "Tuccḍa di tulya n tallalt: %s" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Belkacem Mohammed https://launchpad.net/~belkacem77" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "tasint" msgstr[1] "tasinin" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "" #: src/pt-prefs-asr.c:585 msgid "Delete language model configuration?" msgstr "" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "" #: src/pt-prefs-asr.c:731 msgid "The file is not a valid language model configuration." msgstr "" #: src/pt-prefs-asr.c:779 msgid "Import language model configuration" msgstr "" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:412 msgid "Pause" msgstr "" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:422 msgid "Start playing" msgstr "" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "" #: src/resources/asr-dialog.ui:44 msgid "Display Name:" msgstr "" #: src/resources/asr-dialog.ui:56 msgid "Language:" msgstr "" #: src/resources/asr-dialog.ui:68 msgid "Speech Recognition Engine:" msgstr "" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 msgid "Download:" msgstr "" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "" #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr "" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "" #: src/resources/preferences.ui:812 msgid "Window" msgstr "" #: src/resources/prefs-asr.ui:40 msgid "Language model configurations" msgstr "" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "" #: src/resources/prefs-asr.ui:59 #, fuzzy msgid "All models" msgstr "Akk ifuyla" #: src/resources/prefs-asr.ui:121 msgid "Import a language model configuration" msgstr "" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "" #: src/resources/window.ui:48 msgid "Open a file" msgstr "" #: src/resources/window.ui:170 msgid "_Play" msgstr "" #: src/resources/window.ui:294 msgid "Speed:" msgstr "" parlatype-3.0/po/ku.po000066400000000000000000000433061414030451500147550ustar00rootroot00000000000000# Kurdish translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # Rokar ✌ , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-03-09 16:27+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Kurdish \n" "Language: ku\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "" #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "_Veke" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Betal" #: src/pt-app.c:123 msgid "Audio files" msgstr "Pelên Dengê" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "Hemû pelan" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " Rokar ✌ https://launchpad.net/~rokarali" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "çirke" msgstr[1] "çirke" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "" #: src/pt-prefs-asr.c:585 msgid "Delete language model configuration?" msgstr "" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "" #: src/pt-prefs-asr.c:731 msgid "The file is not a valid language model configuration." msgstr "" #: src/pt-prefs-asr.c:779 msgid "Import language model configuration" msgstr "" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:412 msgid "Pause" msgstr "Raweste" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:422 msgid "Start playing" msgstr "" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "" #: src/resources/asr-dialog.ui:44 #, fuzzy msgid "Display Name:" msgstr "Nîşandan" #: src/resources/asr-dialog.ui:56 msgid "Language:" msgstr "" #: src/resources/asr-dialog.ui:68 msgid "Speech Recognition Engine:" msgstr "" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 msgid "Download:" msgstr "" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "" #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "_Temam" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "Derkeve" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "Alîkarî" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "Vebijêrk" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr "" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "Rêjeşane" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "Nîşandan" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "Kontrolkirin" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "" #: src/resources/preferences.ui:812 msgid "Window" msgstr "Pencere" #: src/resources/prefs-asr.ui:40 msgid "Language model configurations" msgstr "" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "" #: src/resources/prefs-asr.ui:59 #, fuzzy msgid "All models" msgstr "Hemû pelan" #: src/resources/prefs-asr.ui:121 msgid "Import a language model configuration" msgstr "" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "" #: src/resources/window.ui:48 msgid "Open a file" msgstr "Dosiyekê veke" #: src/resources/window.ui:170 msgid "_Play" msgstr "_Lêdan" #: src/resources/window.ui:294 msgid "Speed:" msgstr "Lez:" parlatype-3.0/po/lt.po000066400000000000000000000623461414030451500147620ustar00rootroot00000000000000# Lithuanian translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-03-09 16:27+0000\n" "Last-Translator: Moo \n" "Language-Team: Lithuanian \n" "Language: lt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" "%100<10 || n%100>=20) ? 1 : 2;\n" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "Šnekos transkripcijos medijos leistuvė" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" "Parlatype yra lengva naudoti medijos leistuvė. Jos pagrindinis tikslas yra " "padėti jums perrašyti kalbėjimą." #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "Gabor Karsay" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Transkripcijos paslaugų programa" #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "Transkripcija;" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "Rodyti programos versiją" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "Atverti garso failą" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "_Atverti" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Atsisakyti" #: src/pt-app.c:123 msgid "Audio files" msgstr "Garso failai" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "Visi failai" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "Klaida, atveriant žinyną: %s" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "Kodas iš kitų projektų:" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "Pagrindinė transkripcijos paslaugų programa" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Moo https://launchpad.net/~mooo" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" "Įspėjimas: Parlatype vienu metu apdoroja tik vieną failą. Kitų failų yra " "nepaisoma.\n" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "sekundę" msgstr[1] "sekundes" msgstr[2] "sekundžių" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "Šnekos atpažinimas" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "" #: src/pt-prefs-asr.c:585 #, fuzzy msgid "Delete language model configuration?" msgstr "Ištrinama konfigūracija" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "Ar tikrai norite ištrinti “%s”?" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "" #: src/pt-prefs-asr.c:731 #, fuzzy msgid "The file is not a valid language model configuration." msgstr "Aplanke yra keli kalbos modeliai" #: src/pt-prefs-asr.c:779 #, fuzzy msgid "Import language model configuration" msgstr "Nėra konfigūracijos" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "Peršokti %d sekundę atgal" msgstr[1] "Peršokti %d sekundes atgal" msgstr[2] "Peršokti %d sekundžių atgal" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "Peršokti %d sekundę pirmyn" msgstr[1] "Peršokti %d sekundes pirmyn" msgstr[2] "Peršokti %d sekundžių pirmyn" #: src/pt-window.c:412 msgid "Pause" msgstr "Pristabdyti" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "Pristabdyti ir atsukti %d sekundę atgal" msgstr[1] "Pristabdyti ir atsukti %d sekundes atgal" msgstr[2] "Pristabdyti ir atsukti %d sekundžių atgal" #: src/pt-window.c:422 msgid "Start playing" msgstr "Pradėti groti" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "Pereiti į laiką iškarpinėje: %s" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "Pereiti į laiką iškarpinėje" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "Rankinė transkripcija" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "Automatinė transkripcija" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "Bendra" #: src/resources/asr-dialog.ui:44 #, fuzzy msgid "Display Name:" msgstr "Rodymas" #: src/resources/asr-dialog.ui:56 #, fuzzy msgid "Language:" msgstr "Kalbos modelis:" #: src/resources/asr-dialog.ui:68 #, fuzzy msgid "Speech Recognition Engine:" msgstr "Šnekos atpažinimas" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 #, fuzzy msgid "Download:" msgstr "Atsisiųsti modelį" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "Pereiti į…" #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "_Gerai" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "Pereiti į:" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "Atverti medijos failą" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "Rodyti/slėpti veiksmų meniu" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "Išeiti" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "Bangos forma" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "Groti/Pristabdyti" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "Peršokti atgal" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "Peršokti pirmyn" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "Didinti" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "Mažinti" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "Atverti \"Pereiti į\" dialogą" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "Kopijuoti laiko žymą į iškarpinę" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "Pereiti į iškarpinėje esančią laiko žymą" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "Žinynas" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "Rodyti žinyną" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "Rodyti klaviatūros trumpinius" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "Nuostatos" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "_Klaviatūros trumpiniai" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "Apie Parlatype" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "Kopijuoti laiką į iškarpinę" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "Pereiti prie žymeklio" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "Nėra" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "#Grotelės#" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "(Lenktiniai skliaustai)" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "[Laužtiniai skliaustai]" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr ". (taškas)" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "- (brūkšnelis)" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "Pilnos sekundės" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "10-oji sekundžių dalis" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "100-oji sekundžių dalis" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "Parlatype nuostatos" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "_Pikselių per sekundę:" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "Rodyti _laiko mastelį" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "Raiška" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "Rodymas" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "_Judantis žymeklis" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "_Fiksuotas žymeklis" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "Peršokimai" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "Peršokti p_irmyn:" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "Peršokti _atgal:" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "Pristabdžius, _peršokti atgal:" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "Paspaudus \"Groti\" failo pabaigoje" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "Iš naujo groti failą" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "Paspaudus \"Groti\" žymėjimo pabaigoje" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "Iš naujo groti žymėjimą" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "Valdikliai" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "Valandos ir nuliai" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "Visada rodyti valandas ir priekinius nulius" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "Tikslumas" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "Simboliai aplink laiko žymas" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "Pavyzdžiai" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "Tikslumas:" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "Trupmenų skirtuvas:" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "Laiko žymos" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "Prisiminti _dydį" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "Prisiminti _poziciją" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "Paleisti viršuje" #: src/resources/preferences.ui:812 msgid "Window" msgstr "Langas" #: src/resources/prefs-asr.ui:40 #, fuzzy msgid "Language model configurations" msgstr "Kalbos modelis" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "" #: src/resources/prefs-asr.ui:59 #, fuzzy msgid "All models" msgstr "Visi failai" #: src/resources/prefs-asr.ui:121 #, fuzzy msgid "Import a language model configuration" msgstr "Nėra konfigūracijos" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "Nėra konfigūracijos" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "Pridėti konfigūraciją" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "" #: src/resources/window.ui:48 msgid "Open a file" msgstr "Atverti failą" #: src/resources/window.ui:170 msgid "_Play" msgstr "_Groti" #: src/resources/window.ui:294 msgid "Speed:" msgstr "Greitis:" #, fuzzy #~ msgid "Remove this configuration" #~ msgstr "Ištrinama konfigūracija" #, fuzzy #~ msgid "Setup this configuration" #~ msgstr "Ištrinama konfigūracija" #~ msgid "org.parlatype.Parlatype" #~ msgstr "org.parlatype.Parlatype" #~ msgid "Enable automatic speech recognition" #~ msgstr "Įjungti automatinį šnekos atpažinimą" #~ msgid "Use internal textpad for automatic speech recognition" #~ msgstr "Automatiniam šnekos atpažinimui, naudoti vidinę tekstų rengyklę" #~ msgid "The folder contains no acoustic model." #~ msgstr "Aplanke nėra jokio akustinio modelio." #~ msgid "Please select …" #~ msgstr "Pasirinkite…" #~ msgid "Missing parameters" #~ msgstr "Trūksta parametrų" #~ msgid "Timed out" #~ msgstr "Pasibaigė skirtas laikas" #~ msgid "" #~ "Scanning the folder took too long. Please make sure to open a folder with " #~ "model data only." #~ msgstr "" #~ "Aplanko peržiūra užtruko per ilgai. Užtikrinkite, kad atvertumėte aplanką " #~ "tik su modelio duomenimis." #~ msgid "Scanning the folder failed" #~ msgstr "Aplanko peržiūra nepavyko" #~ msgid "Nothing found" #~ msgstr "Nieko nerasta" #~ msgid "This folder doesn’t contain a suitable model." #~ msgstr "Šiame aplanke nėra tinkamo modelio." #~ msgid "" #~ "The folder contains no language model. Please choose a language model " #~ "from another folder." #~ msgstr "" #~ "Aplanke nėra jokio kalbos modelio. Pasirinkite kalbos modelį iš kito " #~ "aplanko." #~ msgid "" #~ "The folder contains no dictionary. Please choose a dictionary from " #~ "another folder." #~ msgstr "Aplanke nėra jokio žodyno. Pasirinkite žodyną iš kito aplanko." #~ msgid "The folder contains several dictionaries." #~ msgstr "Aplanke yra keli žodynai." #~ msgid "" #~ "The folder contains no acoustic model. Please choose an acoustic model " #~ "from another folder." #~ msgstr "" #~ "Aplanke nėra jokio akustinio modelio. Pasirinkite akustinį modelį iš kito " #~ "aplanko." #~ msgid "The folder contains several acoustic models." #~ msgstr "Aplanke yra keli akustiniai modeliai." #~ msgid "Finish configuration" #~ msgstr "Užbaigti konfigūraciją" #~ msgid "Select output for automatic speech recognition" #~ msgstr "Pasirinkite automatinio šnekos atpažinimo išvestį" #~ msgid "Please open and switch focus to a word processor." #~ msgstr "Atverkite ir perjunkite fokusavimą į tekstų rengyklę." #, c-format #~ msgid "Found %s" #~ msgstr "Rasta %s" #~ msgid "Press “Play” to start automatic speech recognition." #~ msgstr "" #~ "Norėdami pradėti automatinį šnekos atpažinimą, paspauskite \"Groti\"." #, c-format #~ msgid "" #~ "Parlatype needs GStreamer 1.x to run. Please check your installation of " #~ "GStreamer and make sure you have the “Good Plugins” installed.\n" #~ "Parlatype will quit now, it received this error message: %s" #~ msgstr "" #~ "Tam, kad pasileistų, Parlatype reikalauja GStreamer 1.x. Patikrinkite " #~ "savo GStreamer diegimą, ir įsitikinkite, kad esate įdiegę \"gerus " #~ "įskiepius\" (angl. Good Plugins).\n" #~ "Dabar Parlatype užbaigs darbą, programa gavo šį klaidos pranešimą: %s" #~ msgid "Fatal error" #~ msgstr "Lemtingoji klaida" #~ msgid "" #~ "Before you can start, you have to download a so called acoustic and " #~ "language model. This is a set of files made for a specific language." #~ msgstr "" #~ "Prieš pradėdami, turite atsisiųsti taip vadinamą akustinį ir kalbos " #~ "modelį. Tai yra failų, sukurtų tam tikrai kalbai, rinkinys." #~ msgid "" #~ "Parlatype uses CMU Sphinx as its speech recognition engine. You can " #~ "download models suitable for CMU Sphinx for example from CMU Sphinx’ sourceforge repository. It has " #~ "models for some of the most widespread languages." #~ msgstr "" #~ "Parlatype naudoja CMU Sphinx kaip savo šnekos atpažinimo modulį. CMU " #~ "Sphinx tinkančius modelius galite atsisiųsti, pavyzdžiui, iš CMU Sphinx sourceforge saugyklos. Joje yra " #~ "kai kurių labiausiai paplitusių kalbų modeliai." #~ msgid "" #~ "If it’s compressed, uncompress the model. Save it to a folder where it " #~ "can stay. Parlatype doesn’t copy the model internally." #~ msgstr "" #~ "Jeigu modelis yra suglaudintas, išglaudinkite jį. Įrašykite jį į aplanką, " #~ "kuriame jį laikysite. Parlatype nekopijuoja modelio į atskirą katalogą." #~ msgid "When you are finished, specify the folder with the model:" #~ msgstr "Užbaigę, nurodykite aplanką su modeliu:" #~ msgid "Select language model" #~ msgstr "Pasirinkite kalbos modelį" #~ msgid "Dictionary" #~ msgstr "Žodynas" #~ msgid "Select dictionary" #~ msgstr "Pasirinkite žodyną" #~ msgid "Acoustic model" #~ msgstr "Akustinis modelis" #~ msgid "Select acoustic model folder" #~ msgstr "Pasirinkite akustinio modelio aplanką" #~ msgid "Setup is completed. Please give this configuration a name:" #~ msgstr "Sąranka užbaigta. Suteikite šiai konfigūracijai pavadinimą:" #~ msgid "Dictionary:" #~ msgstr "Žodynas:" #~ msgid "Acoustic model folder:" #~ msgstr "Akustinio modelio aplankas:" parlatype-3.0/po/meson.build000066400000000000000000000000561414030451500161330ustar00rootroot00000000000000i18n.gettext(gettext_package, preset: 'glib') parlatype-3.0/po/ms.po000066400000000000000000000441011414030451500147470ustar00rootroot00000000000000# Malay translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # abuyop , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2018-06-04 12:45+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Malay \n" "Language: ms\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Utiliti transkripsi" #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "Buka Fail Audio" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "B_uka" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Batal" #: src/pt-app.c:123 msgid "Audio files" msgstr "Fail audio" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "Semua fail" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "Ralat membuka bantuan: %s" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "Kod yang disertakan dari projek lain:" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "Utiliti transkripsi asas" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " abuyop https://launchpad.net/~abuyop" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "saat" msgstr[1] "saat" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "" #: src/pt-prefs-asr.c:585 msgid "Delete language model configuration?" msgstr "" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "" #: src/pt-prefs-asr.c:731 msgid "The file is not a valid language model configuration." msgstr "" #: src/pt-prefs-asr.c:779 msgid "Import language model configuration" msgstr "" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "Lompat balik 1 saat" msgstr[1] "Lompat balik %d saat" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "Lompat maju 1 saat" msgstr[1] "Lompat maju %d saat" #: src/pt-window.c:412 msgid "Pause" msgstr "Jeda" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:422 msgid "Start playing" msgstr "Mulakan main" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "" #: src/resources/asr-dialog.ui:44 #, fuzzy msgid "Display Name:" msgstr "Paparan" #: src/resources/asr-dialog.ui:56 msgid "Language:" msgstr "" #: src/resources/asr-dialog.ui:68 msgid "Speech Recognition Engine:" msgstr "" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 msgid "Download:" msgstr "" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "" #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "_OK" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "Pergi ke kedudukan:" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "Keluar" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "Bentuk Gelombang" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "Bantuan" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "Keutamaan" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr "" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "Keutamaan Parlatype" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "_Piksel per saat:" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "Tunjuk skala _waktu" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "Resolusi" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "Paparan" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "Kursor _bergerak" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "Kursor _tetap" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "Kawalan" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "Ingat _kedudukan" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "Mula di _atas" #: src/resources/preferences.ui:812 msgid "Window" msgstr "Tetingkap" #: src/resources/prefs-asr.ui:40 msgid "Language model configurations" msgstr "" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "" #: src/resources/prefs-asr.ui:59 #, fuzzy msgid "All models" msgstr "Semua fail" #: src/resources/prefs-asr.ui:121 msgid "Import a language model configuration" msgstr "" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "" #: src/resources/window.ui:48 msgid "Open a file" msgstr "Buka satu fail" #: src/resources/window.ui:170 msgid "_Play" msgstr "_Tukarnama" #: src/resources/window.ui:294 msgid "Speed:" msgstr "Kelajuan:" #~ msgid "Fatal error" #~ msgstr "Ralat mati" parlatype-3.0/po/nl.po000066400000000000000000000447561414030451500147610ustar00rootroot00000000000000# Dutch translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # Heimen Stoffels , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2019-05-27 17:09+0000\n" "Last-Translator: Heimen Stoffels \n" "Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" "Parlatype is een eenvoudig te gebruiken mediaspeler. Het hoofddoel is om te " "helpen bij het transcriberen van spraak." #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Transcriptiehulpmiddel" #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "Audiobestand openen" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "_Openen" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Annuleren" #: src/pt-app.c:123 msgid "Audio files" msgstr "Audiobestanden" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "Alle bestanden" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "Fout bij openen van hulp: %s" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "Inclusief code van andere projecten:" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "Een basis-transcriptiehulpmiddel" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Heimen Stoffels https://launchpad.net/~vistaus" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" "Waarschuwing: Parlatype kan slechts één bestand tegelijk aan. Andere " "bestanden worden genegeerd.\n" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "seconde" msgstr[1] "seconden" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "" #: src/pt-prefs-asr.c:585 msgid "Delete language model configuration?" msgstr "" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "" #: src/pt-prefs-asr.c:731 msgid "The file is not a valid language model configuration." msgstr "" #: src/pt-prefs-asr.c:779 msgid "Import language model configuration" msgstr "" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "1 seconde terugspoelen" msgstr[1] "%d seconden terugspoelen" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "1 seconde vooruitspoelen" msgstr[1] "%d seconden vooruitspoelen" #: src/pt-window.c:412 msgid "Pause" msgstr "Pauzeren" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "Pauzeren en 1 seconde terugspoelen" msgstr[1] "Pauzeren en %d seconden terugspoelen" #: src/pt-window.c:422 msgid "Start playing" msgstr "Afspelen starten" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "" #: src/resources/asr-dialog.ui:44 #, fuzzy msgid "Display Name:" msgstr "Weergave" #: src/resources/asr-dialog.ui:56 msgid "Language:" msgstr "" #: src/resources/asr-dialog.ui:68 msgid "Speech Recognition Engine:" msgstr "" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 msgid "Download:" msgstr "" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "" #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "_Ok" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "Ga naar positie:" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "Afsluiten" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "Golfvorm" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "Hulp" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "Voorkeuren" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr "" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "Parlatype-voorkeuren" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "_Pixels per seconde:" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "_Tijdschaal weergeven" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "Resolutie" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "Weergave" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "Be_wegende cursor" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "_Vastgezette cursor" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "_Vooruitspoelen:" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "_Terugspoelen" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "Terugspoelen bij _pauzeren:" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "Bediening" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "_Positie onthouden" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "Beginnen aan _bovenkant" #: src/resources/preferences.ui:812 msgid "Window" msgstr "Venster" #: src/resources/prefs-asr.ui:40 msgid "Language model configurations" msgstr "" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "" #: src/resources/prefs-asr.ui:59 #, fuzzy msgid "All models" msgstr "Alle bestanden" #: src/resources/prefs-asr.ui:121 msgid "Import a language model configuration" msgstr "" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "" #: src/resources/window.ui:48 msgid "Open a file" msgstr "Een bestand openen" #: src/resources/window.ui:170 msgid "_Play" msgstr "Afs_pelen" #: src/resources/window.ui:294 msgid "Speed:" msgstr "Snelheid:" #~ msgid "Fatal error" #~ msgstr "Fatale fout" parlatype-3.0/po/pl.po000066400000000000000000000557221414030451500147560ustar00rootroot00000000000000# Polish translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2021-10-23 10:53+0000\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \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-Launchpad-Export-Date: 2021-11-02 18:32+0000\n" "X-Generator: Launchpad (build 5c9d2c413ed946c4f70cb1ddd4149326eda16fc5)\n" "Language: pl\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "Odtwarzacz multimedialny do transkrypcji mowy" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" "Parlatype to łatwy w obsłudze odtwarzacz multimedialny. Jego głównym celem " "jest pomoc przy transkrypcji mowy." #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "Gabor Karsay" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "" "To pomniejsze wydanie zawierające poprawki błędów i dodające pomniejsze nowe " "funkcje." #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" "Wyciszanie/włączanie dźwięku przez kliknięcie ikony głośności drugim " "przyciskiem myszy (zwykle prawym)." #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" "Przy korzystaniu z PulseAudio Parlatype nie zmienia już głośności " "systemowej, tylko swoją własną." #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "Początkowy poziom głośności jest pobierany z PulseAudio." #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "Aktualizacje tłumaczeń na kilka języków." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "To duże wydanie zawierające nowe funkcje." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "" "Przebieg fali jest wczytywany na bieżąco, więc okno postępu nie jest " "blokowane." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "Przebieg fali może być zmieniany liniowo zamiast krokowo." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "To pomniejsze wydanie." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" "Etykieta czasu jest aktualizowana tylko, jeśli czas się zmienił. Zwiększa to " "wydajność, więc ruch kursora na wolniejszych komputerach powinien być " "płynniejszy." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "Aktualizacje tłumaczeń na język węgierki, litewski i hiszpański" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "To pomniejsze wydanie zawierające pewne zmiany." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" "Automatyczne rozpoznawanie mowy (ASR) jest teraz domyślnie wyłączone i jest " "wyświetlane tylko, jeśli program Parlatype został uruchomiony za pomocą " "nowego parametru --with-asr" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "Naprawiono umiędzynarodowienie: część tłumaczeń nie była wyświetlana" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" "Aktualizacje tłumaczeń na język arabski, angielski (Wielka Brytania), " "czeski, holenderski, niemiecki, polski i hiszpański" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "To duże wydanie zawierające nowe funkcje." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "Automatyczne rozpoznawanie mowy za pomocą CMU Sphinx" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "Zmiany interfejsu, w tym usunięcie menu programu" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "Niestandardowe etykiety czasu" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" "Aktualizacje tłumaczeń na język portugalski (Brazylia), angielski (Wielka " "Brytania), czeski, niemiecki, japoński, litewski i polski" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "To pomniejsze wydanie naprawiające błędy." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "Automatyczne przewijanie podczas używania klawiszy skrótów" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "Zmiana kategorii pliku .desktop z „Utilities” na „Audio/Video”" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "Aktualizacja tłumaczenia na język francuski" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "To wydanie zawiera liczne poprawki błędów i pomniejsze ulepszenia." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "Okno postępu wyświetla teraz szacowany pozostały czas" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "Zwiększenie maksymalnej możliwej prędkości na 2,0" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" "Nowe skróty klawiszowe do odtwarzania/wstrzymywania (Ctrl + spacja), " "przejścia wstecz (Ctrl + strzałka w lewo) i przejścia naprzód (Ctrl + " "strzałka w prawo)" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "" "Przewijanie jest teraz możliwe także za pomocą pionowego paska przewijania" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "Różne poprawki przebiegu fali i wyświetlania kursora" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" "Aktualizacje tłumaczeń na język arabski, angielski (Wielka Brytania), " "kataloński, niemiecki, fiński, francuski, japoński, litewski, polski, " "hiszpański i szwedzki" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Narzędzie do transkrypcji" #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "Transkrypcja;" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "Wyświetla wersję programu" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "Otwarcie pliku dźwiękowego" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "_Otwórz" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Anuluj" #: src/pt-app.c:123 msgid "Audio files" msgstr "Pliki dźwiękowe" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "Wszystkie pliki" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "Błąd podczas otwierania pomocy: %s" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "Zawiera kod z innych projektów:" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "Podstawowe narzędzie do transkrypcji" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Piotr Drąg https://launchpad.net/~piotrdrag\n" " tydell https://launchpad.net/~marcin-tydelski" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" "Ostrzeżenie: Parlatype obsługuje tylko jeden plik naraz. Pozostałe pliki są " "ignorowane.\n" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "CMU Pocketsphinx" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "Mozilla DeepSpeech" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d∶%02d∶%02d" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "sekunda" msgstr[1] "sekundy" msgstr[2] "sekund" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "Rozpoznawanie mowy" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "Odczytanie osobistych plików konfiguracji się nie powiodło" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "Skopiowanie zawartych plików konfiguracji się nie powiodło" #: src/pt-prefs-asr.c:585 msgid "Delete language model configuration?" msgstr "Usunąć konfigurację modelu języka?" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "Na pewno usunąć „%s”?" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "_Tak" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "Błąd" #: src/pt-prefs-asr.c:731 msgid "The file is not a valid language model configuration." msgstr "Plik nie jest prawidłową konfiguracją modelu języka." #: src/pt-prefs-asr.c:779 msgid "Import language model configuration" msgstr "Import konfiguracji modelu języka" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "Konfiguracje modeli języków Parlatype" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "Utworzenie katalogu osobistej konfiguracji się nie powiodło" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "Przejdź wstecz o 1 sekundę" msgstr[1] "Przejdź wstecz o %d sekundy" msgstr[2] "Przejdź wstecz o %d sekund" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "Przejdź naprzód o 1 sekundę" msgstr[1] "Przejdź naprzód o %d sekundy" msgstr[2] "Przejdź naprzód o %d sekund" #: src/pt-window.c:412 msgid "Pause" msgstr "Wstrzymaj" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "Wstrzymaj i przewiń o 1 sekundę" msgstr[1] "Wstrzymaj i przewiń o %d sekundy" msgstr[2] "Wstrzymaj i przewiń o %d sekund" #: src/pt-window.c:422 msgid "Start playing" msgstr "Rozpocznij odtwarzanie" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "Przejście do czasu w schowku: %s" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "Przejście do czasu w schowku" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "Ręczna transkrypcja" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "Automatyczna transkrypcja" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "Ogólne" #: src/resources/asr-dialog.ui:44 msgid "Display Name:" msgstr "Wyświetlana nazwa:" #: src/resources/asr-dialog.ui:56 msgid "Language:" msgstr "Język:" #: src/resources/asr-dialog.ui:68 msgid "Speech Recognition Engine:" msgstr "Mechanizm rozpoznawania mowy:" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "Wtyczka GStreamer:" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "Wydawca:" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "Licencja:" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "Instalacja" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 msgid "Download:" msgstr "Pobieranie:" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "Zainstalowano:" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "Instrukcje:" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "Proszę pobrać, rozpakować do katalogu i wybrać ten katalog." #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "Przejdź do…" #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "_OK" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "Przejście do pozycji:" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "Otwórz plik multimedialny" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "Wyświetl/ukryj menu działań" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "Zakończ" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "Przebieg fali" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "Odtwórz/wstrzymaj" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "Przejdź wstecz" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "Przejdź naprzód" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "Powiększ" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "Pomniejsz" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "Otwórz okno „Przejście do”" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "Skopiuj czas do schowka" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "Przejdź do czasu w schowku" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "Pomoc" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "Wyświetl pomoc" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "Wyświetl skróty klawiszowe" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "Preferencje" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "_Skróty klawiszowe" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "O programie" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "Skopiuj czas do schowka" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "Przejdź do kursora" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "Brak" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "#Kratki#" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "(Nawiasy okrągłe)" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "[Nawiasy kwadratowe]" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr ". (punkt)" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "- (dywiz)" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "Pełna sekunda" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "Dziesiąta sekundy" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "Setna sekundy" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "Preferencje programu Parlatype" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "_Piksele na sekundę:" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "Podziałka _czasu" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "Rozdzielczość" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "Wyświetlanie" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "_Kursor się porusza" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "_Stały kursor" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "Przejścia" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "Przejście _naprzód:" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "Prz_ejście wstecz:" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "Przejście _wstecz przy wstrzymaniu:" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "Kliknięcie „Odtwórz” na końcu pliku" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "Powtórzenie pliku" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "Kliknięcie „Odtwórz” na końcu zaznaczenia" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "Powtórzenie zaznaczenia" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "Sterowanie" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "Godziny i zera" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "Wyświetlanie godzin i początkowych zer" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "Dokładność" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "Znaki wokół czasów" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "Przykłady" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "Dokładność:" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "Separator dziesiętny:" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "Czasy" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "Pamiętanie _rozmiaru" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "Pamiętanie p_ozycji" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "_Uruchamianie zawsze na wierzchu" #: src/resources/preferences.ui:812 msgid "Window" msgstr "Okno" #: src/resources/prefs-asr.ui:40 msgid "Language model configurations" msgstr "Konfiguracje modeli języków" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "Zainstalowano" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "Obsługiwane" #: src/resources/prefs-asr.ui:59 msgid "All models" msgstr "Wszystkie modele" #: src/resources/prefs-asr.ui:121 msgid "Import a language model configuration" msgstr "Importuje konfigurację modelu języka" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "Nie ma konfiguracji" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "Dodaj konfigurację" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "Brak wyników w tym widoku" #: src/resources/window.ui:48 msgid "Open a file" msgstr "Otwiera plik" #: src/resources/window.ui:170 msgid "_Play" msgstr "_Odtwórz" #: src/resources/window.ui:294 msgid "Speed:" msgstr "Prędkość:" parlatype-3.0/po/pt.po000066400000000000000000000435571414030451500147710ustar00rootroot00000000000000# Portuguese translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # Vitor Loureiro , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-03-09 16:27+0000\n" "Last-Translator: Gabor Karsay \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-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "" #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "Abrir Ficheiro Áudio" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "_Abrir" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Cancelar" #: src/pt-app.c:123 msgid "Audio files" msgstr "Ficheiros áudio" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "Todos os ficheiros" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " Vitor Loureiro https://launchpad.net/~hardsargent128" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "segundo" msgstr[1] "segundos" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "" #: src/pt-prefs-asr.c:585 msgid "Delete language model configuration?" msgstr "" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "" #: src/pt-prefs-asr.c:731 msgid "The file is not a valid language model configuration." msgstr "" #: src/pt-prefs-asr.c:779 msgid "Import language model configuration" msgstr "" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:412 msgid "Pause" msgstr "Pausa" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:422 msgid "Start playing" msgstr "Começar a tocar" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "" #: src/resources/asr-dialog.ui:44 #, fuzzy msgid "Display Name:" msgstr "Visualização" #: src/resources/asr-dialog.ui:56 msgid "Language:" msgstr "" #: src/resources/asr-dialog.ui:68 msgid "Speech Recognition Engine:" msgstr "" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 msgid "Download:" msgstr "" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "" #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "_Aceitar" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "Sair" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "Forma de onda" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "Ajuda" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "Preferências" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr "" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "Resolução" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "Visualização" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "Controlos" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "" #: src/resources/preferences.ui:812 msgid "Window" msgstr "Janela" #: src/resources/prefs-asr.ui:40 msgid "Language model configurations" msgstr "" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "" #: src/resources/prefs-asr.ui:59 #, fuzzy msgid "All models" msgstr "Todos os ficheiros" #: src/resources/prefs-asr.ui:121 msgid "Import a language model configuration" msgstr "" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "" #: src/resources/window.ui:48 msgid "Open a file" msgstr "Abrir um ficheiro" #: src/resources/window.ui:170 msgid "_Play" msgstr "_Reproduzir" #: src/resources/window.ui:294 msgid "Speed:" msgstr "Velocidade:" #~ msgid "Fatal error" #~ msgstr "Erro fatal" parlatype-3.0/po/pt_BR.po000066400000000000000000000662611414030451500153510ustar00rootroot00000000000000# Brazilian Portuguese translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-05-31 17:57+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Brazilian Portuguese \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Launchpad-Export-Date: 2021-09-26 08:44+0000\n" "X-Generator: Launchpad (build 732145c78fc09841c9906082a9f784c21494fca6)\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "Player de mídia para transcrição de fala" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" "Parlatype é um tocador de midia fácil de usar. Seu propósito é ajudar você a " "transcrever voz." #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "Gabor Karsay" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "" "Esta é uma release menor com correções de bugs e novas características " "menores" #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" "Ligue/desligue o volume clicando no ícone de volume usando o botão " "secundário do ponteiro (geralmente o botão direito do mouse)." #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" "Usando Pulseaudio o parlatype não altera mais o volume do sistema, apenas o " "volume específico para a aplicação." #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "O nível de volume inicial é coletado do Pulseaudio." #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "Atualização de tradução para vários idiomas." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "Esta é uma release maior com novas características." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "" "O Waveform é carregado em tempo real, não há caixas de diálogo bloqueando o " "progresso." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "" "O Waveform pode ser carregado continuamente ao invés de usar passos " "discretos." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "Esta é uma release menor" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" "Atualizar mostrador de tempo apenas se houver alterações. Isto aumentará a " "performance, os movimentos do cursor deverão ser mais suaves em sistemas " "mais lentos." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "Atualizações de tradução para Húngaro, Lituano e Espanhol" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "Esta é uma release menor com algumas alterações" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" "Reconhecimento automático de fala (ASR) está desabilitado por padrão e será " "exibido apenas se o parlatype seja iniciado com o novo parâmetro --with-asr" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "Correção de internacionalização: Algumas traduções não eram exibidas" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" "Atualizações de tradução para árabe, inglês da Inglaterra, tcheco, holandês, " "alemão, polonês e espanhol" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "Este é uma release maior com algumas características novas." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "Reconhecimento automático de fala com CMU Sphinx" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "Alterações de design, incluindo remoção do menu da aplicação" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" "Atualização de tradução para Português do Brasil, Inglês britânico, Tcheco, " "Alemão, Japonês, Lituano e Polonês" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "Esta é uma release menor de manutenção." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "" "Alterada a categoria da entrada para Áudio/Video ao invés de Utilidades" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "Atualização de tradução para Francês" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "Esta versão contém correções de bugs e melhorias menores." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "O diálogo de progresso agora contém um timer (tempo restante estimado)" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "Aumento da velocidade máxima possível para 2.0" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" "Novos atalhos de teclado para Play/Pause (Ctrl + Espaço), Pular para trás " "(Ctrl + Esquerda) e Pular Adiante (Ctrl + Direita)" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "Agora é possível rolar com a bara vertical" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "Várias corrreções para a waveform e para exibição de cursor" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" "Atualizações de tradução para árabe, inglês da Inglaterra, catalão, alemão, " "finlandês, francês, japonês, lituano, polonês, espanhol e sueco" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Utilitário de transcrição" #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "Transcrição:" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "Mostra a versão do aplicativo" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "Abrir Arquivo de Áudio" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "_Abrir" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Cancelar" #: src/pt-app.c:123 msgid "Audio files" msgstr "Arquivos de áudio" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "Todos os arquivos" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "Erro abrindo a ajuda: %s" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "Incluindo código de outros projetos:" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "Um utilitário basico de transcrição" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "André \"decko\" de Brito \n" "Launchpad Contributions:\n" " André decko de Brito https://launchpad.net/~brito-afa\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " Thiago Alves Cavalcante https://launchpad.net/~thiagoalcav\n" " ThiagoRyuuga https://launchpad.net/~thiagoryuuga" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" "Atenção: Parlatype trabalha com apenas um arquivo por vez. Os outros " "arquivos serão ignorados.\n" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "segundo" msgstr[1] "segundos" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "" #: src/pt-prefs-asr.c:585 #, fuzzy msgid "Delete language model configuration?" msgstr "Apagando configurações" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "Desejaa mesmo apagar \"%s\"?" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "" #: src/pt-prefs-asr.c:731 #, fuzzy msgid "The file is not a valid language model configuration." msgstr "Esta pasta contém muitos modelos de idioma." #: src/pt-prefs-asr.c:779 msgid "Import language model configuration" msgstr "" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "Voltar 1 segundo" msgstr[1] "Voltar %d segundos" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "Avançar 1 segundo" msgstr[1] "Avançar %d segundos" #: src/pt-window.c:412 msgid "Pause" msgstr "Pausa" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "Pause e volte 1 segundo" msgstr[1] "Pause e volte %d segundos" #: src/pt-window.c:422 msgid "Start playing" msgstr "Começar a tocar" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "Ir para o tempo na área de transferência: %s" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "Ir para o tempo na área de transferência" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "Transcrição manual" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "Transcrição automática" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "Geral" #: src/resources/asr-dialog.ui:44 #, fuzzy msgid "Display Name:" msgstr "Visualização" #: src/resources/asr-dialog.ui:56 #, fuzzy msgid "Language:" msgstr "Modelo de idiomas" #: src/resources/asr-dialog.ui:68 msgid "Speech Recognition Engine:" msgstr "" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 #, fuzzy msgid "Download:" msgstr "Baixar modelos" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "Ir para..." #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "_OK" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "Ir para a posição:" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "Abrir um arquivo de mídia" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "Mostrar/Ocultar menu de ação" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "Sair" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "Forma de onda" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "Reproduz/Pausa" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "Pular para trás" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "Pular a frente" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "Ampliar" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "Reduzir" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "Abrir caixa de \"Ir para\"" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "Ajuda" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "Mostrar ajuda" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "Mostra os atalhos do teclado" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "Preferências" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "_Atalhos de teclado" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "Sobre o Parlatype" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "Ir para o cursor" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "Nenhum" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "(parênteses)" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "[colchetes]" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr ". (ponto)" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "- (hífen)" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "Segundos completos" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "Décimos de segundo" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "centésimos de segundo" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "Preferências do Parlatype" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "_Pixels por segundo:" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "Mostrar escala de _tempo" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "Resolução" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "Visualização" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "Cursor _movél" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "Cursor _fixo" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "Saltos" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "A_vançar:" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "Volta_r:" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "Voltar quando _pausar:" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "Apertar \"Play\" ao final do arquivo" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "repete o arquivo" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "Apertar \"Play\" ao final da seleção" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "repete a seleção" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "Controles" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "Horas e zeros" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "Sempre mostrar horas com os zeros no inicio" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "Precisão" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "Caracteres em torno do timestamp" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "Exemplos" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "Precisão:" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "Separador de fração:" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "Timestamps" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "Lembrar _size" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "Lembrar _posição" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "Iniciar no _topo" #: src/resources/preferences.ui:812 msgid "Window" msgstr "Janela" #: src/resources/prefs-asr.ui:40 #, fuzzy msgid "Language model configurations" msgstr "Apagando configurações" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "" #: src/resources/prefs-asr.ui:59 #, fuzzy msgid "All models" msgstr "Todos os arquivos" #: src/resources/prefs-asr.ui:121 msgid "Import a language model configuration" msgstr "" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "" #: src/resources/window.ui:48 msgid "Open a file" msgstr "Abrir um arquivo" #: src/resources/window.ui:170 msgid "_Play" msgstr "_Reproduzir" #: src/resources/window.ui:294 msgid "Speed:" msgstr "Velocidade:" #, fuzzy #~ msgid "Remove this configuration" #~ msgstr "Apagando configurações" #, fuzzy #~ msgid "Setup this configuration" #~ msgstr "Apagando configurações" #~ msgid "org.parlatype.Parlatype" #~ msgstr "org.parlatype.Parlatype" #~ msgid "Enable automatic speech recognition" #~ msgstr "Habilitar automaticamente reconhecimento de fala" #~ msgid "Use internal textpad for automatic speech recognition" #~ msgstr "Usar bloco de notas interno para reconhecimento de fala" #~ msgid "The folder contains no acoustic model." #~ msgstr "Esta pasta não contém modelos acústicos." #~ msgid "Please select …" #~ msgstr "Por favor escolha..." #~ msgid "Missing parameters" #~ msgstr "Argumentos faltando" #~ msgid "Timed out" #~ msgstr "Tempo esgotado" #~ msgid "" #~ "Scanning the folder took too long. Please make sure to open a folder with " #~ "model data only." #~ msgstr "" #~ "Escanear a pasta levou tempo demais. Certifique-se de abrir uma pasta " #~ "apenas com modelos acústicos." #~ msgid "Scanning the folder failed" #~ msgstr "Falha ao escanear pasta" #~ msgid "Nothing found" #~ msgstr "Nada encontrado" #~ msgid "This folder doesn’t contain a suitable model." #~ msgstr "Esta pasta não contém modelos utilizáveis." #~ msgid "" #~ "The folder contains no language model. Please choose a language model " #~ "from another folder." #~ msgstr "" #~ "Esta pasta não contém modelos de idiomas. Por favor escolha um modelo de " #~ "idiomas em outra pasta." #~ msgid "" #~ "The folder contains no dictionary. Please choose a dictionary from " #~ "another folder." #~ msgstr "" #~ "Esta pasta não contém dicionários. Por favor escolha um dicionário em " #~ "outra pasta" #~ msgid "The folder contains several dictionaries." #~ msgstr "Esta pasta contém muitos dicionários" #~ msgid "" #~ "The folder contains no acoustic model. Please choose an acoustic model " #~ "from another folder." #~ msgstr "" #~ "Esta pasta não contém modelos acústicos. Por favor escolha um modelo " #~ "acústico em outra pasta." #~ msgid "The folder contains several acoustic models." #~ msgstr "Esta pasta contém muitos modelos acústicos." #~ msgid "Finish configuration" #~ msgstr "Concluir configuração" #~ msgid "Select output for automatic speech recognition" #~ msgstr "Seleção automática de saída para reconhecimento de fala" #~ msgid "Please open and switch focus to a word processor." #~ msgstr "Por favor abra e mude o foco para o processador de texto." #, c-format #~ msgid "Found %s" #~ msgstr "Encontrado %s" #~ msgid "Press “Play” to start automatic speech recognition." #~ msgstr "" #~ "Aperte \"Play\" para começar o reconhecimento de fala automaticamente." #, c-format #~ msgid "" #~ "Parlatype needs GStreamer 1.x to run. Please check your installation of " #~ "GStreamer and make sure you have the “Good Plugins” installed.\n" #~ "Parlatype will quit now, it received this error message: %s" #~ msgstr "" #~ "Parlatype necessita do Gstreamer 1.x para executar. Por favor verifique " #~ "sua instalação do GStreamer e certifique-se de que tem os \"Good Plugins" #~ "\" instalados.\n" #~ "O Parlatype encerrará agora, por causa deste erro: \"%s\"" #~ msgid "Fatal error" #~ msgstr "Erro fatal" #~ msgid "" #~ "Before you can start, you have to download a so called acoustic and " #~ "language model. This is a set of files made for a specific language." #~ msgstr "" #~ "Antes de começar, você terá que fazer o download de um modelo acústico e " #~ "de idiomas. Este conjunto de arquivos são feitos especificamente para " #~ "cada idioma." #~ msgid "" #~ "Parlatype uses CMU Sphinx as its speech recognition engine. You can " #~ "download models suitable for CMU Sphinx for example from CMU Sphinx’ sourceforge repository. It has " #~ "models for some of the most widespread languages." #~ msgstr "" #~ "Parlatype usa CMU Sphinx como motor de reconhecimento de fala. Você pode " #~ "baixar modelos compatíveis com CMU Sphinx de locais como por exemploCMU Sphinx no sourceforge. Lá tem modelos " #~ "para os mais variados idiomas." #~ msgid "" #~ "If it’s compressed, uncompress the model. Save it to a folder where it " #~ "can stay. Parlatype doesn’t copy the model internally." #~ msgstr "" #~ "Caso esteja compactado, descompacte o modelo. Salve-o em uma pasta onde " #~ "ele poderá ficar. O parlatype não copia o modelo internamente." #~ msgid "When you are finished, specify the folder with the model:" #~ msgstr "Quando você tiver concluído, especifique a pasta com o modelo:" #~ msgid "Select language model" #~ msgstr "Selecione o modelo de idioma" #~ msgid "Dictionary" #~ msgstr "Dicionário" #~ msgid "Select dictionary" #~ msgstr "Selecione o dicionário" #~ msgid "Acoustic model" #~ msgstr "Modelos acústicos" #~ msgid "Select acoustic model folder" #~ msgstr "Selecione a pasta de modelos acústicos" #~ msgid "Setup is completed. Please give this configuration a name:" #~ msgstr "A configuração está completa. Por favor dê um nome para ela:" #~ msgid "Dictionary:" #~ msgstr "Dicionário:" parlatype-3.0/po/ru.po000066400000000000000000001013771414030451500147670ustar00rootroot00000000000000# Russian translation for parlatype # Copyright (c) 2020 Rosetta Contributors and Canonical Ltd 2020 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2020. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-05-31 17:39+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Launchpad-Export-Date: 2020-06-18 10:32+0000\n" "X-Generator: Launchpad (build 1cbd0aa39df153c901321817f9b57cf3f232b507)\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "Медиапроигрыватель для транскрибирования речи" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" "Parlatype — это простой в использовании медиапроигрыватель, основным " "назначением которого является помощь в транскрибировании речи." #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "Gabor Karsay" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "" "Это промежуточный выпуск с исправлениями ошибок и небольшими новшествами." #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" "Отключение/включение звука щелчком на значке динамика вторичной кнопкой " "указательного устройства (обычно это правая кнопка мыши)." #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" "С Pulseaudio Parlatype больше не изменяет общесистемную громкость, только " "уровень громкости в самом приложении." #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "Изначальный уровень громкости выбирается из Pulseaudio." #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "Обновление перевода на несколько языков." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "Это основной выпуск с новыми функциями." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "График звука загружается \"на лету\", без мешающего диалога прогресса." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "График звука может изменяться непрерывно, а не дискретными шагами." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "Это промежуточный выпуск." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" "Обновление метки времени только при изменении времени. Это улучшает " "производительность, движение курсора становится более плавным на медленных " "компьютерах." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "Обновлены переводы на венгерский, литовский и испанский языки" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "Это промежуточный выпуск с несколькими изменениями." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" "Автоматическое распознавание речи (ASR) теперь отключено по умолчанию и " "отображается только когда parlatype запущен с новым параметром --with-asr" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "Исправление интернационализации: некоторые переводы не отображались" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" "Обновлены переводы на арабский, британский английский, чешский, голландский, " "немецкий, польский и испанский языки" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "Это основной выпуск с несколькими новыми функциями." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "Автоматическое распознавание речи с помощью CMU Sphinx" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "Изменение дизайна, включая удаление меню приложения" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "Пользователькие метки времени" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" "Обновлены переводы на бразильский португальский, британский английский, " "чешский, немецкий, японский, литовский и польский языки" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "Это промежуточный вспомогательный выпуск." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "Анимация прокрутки при использовании комбинаций клавиш" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "Изменение категории меню на Аудио/Видео вместо Стандартные" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "Обновление перевода на французский язык" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "Этот выпуск содержит ряд исправлений ошибок и небольших улучшений." #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "" "Диалог прогресса теперь содержит таймер обратного отсчёта (ожидаемого " "оставшегося времени)" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "Увеличена максимально возможная скорость до 2.0" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" "Новые комбинации клавиш для Пуск/Пауза (Ctrl + Space), перемотка назад (Ctrl " "+ Left), перемотка вперёд (Ctrl + Right)" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "Теперь возможна прокрутка с помощью вертикальной полосы прокрутки" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "Различные исправления отображения графика звука и курсора" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" "Обновлены переводы на арабский, британский английский, каталанский, " "немецкий, финский, французский, японский, литовский, польский, испанский и " "шведский языки" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Утилита транскрибирования" #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "Транскрибирование;" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "Показать версию приложения" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "Открыть аудиофайл" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "_Открыть" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "О_тменить" #: src/pt-app.c:123 msgid "Audio files" msgstr "Аудиофайлы" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "Все файлы" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "Ошибка при открытии справки: %s" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "Содержит код из других проектов:" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "Утилита для транскрибирования речи" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Aleksey Kabanov https://launchpad.net/~ak099\n" " Gabor Karsay https://launchpad.net/~gabor-karsay" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" "Внимание: Parlatype работает только с одним файлов за раз. Остальные файлы " "игнорируются.\n" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "секунда" msgstr[1] "секунды" msgstr[2] "секунд" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "Распознавание речи" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "" #: src/pt-prefs-asr.c:585 #, fuzzy msgid "Delete language model configuration?" msgstr "Удаление конфигурации" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "Действительно удалить “%s”?" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "" #: src/pt-prefs-asr.c:731 #, fuzzy msgid "The file is not a valid language model configuration." msgstr "Папка содержит несколько языковых моделей." #: src/pt-prefs-asr.c:779 #, fuzzy msgid "Import language model configuration" msgstr "Конфигурация отсутствует" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "Перемотка назад на %d секунду" msgstr[1] "Перемотка назад на %d секунды" msgstr[2] "Перемотка назад на %d секунд" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "Перемотка вперёд на %d секунду" msgstr[1] "Перемотка вперёд на %d секунды" msgstr[2] "Перемотка вперёд на %d секунд" #: src/pt-window.c:412 msgid "Pause" msgstr "Пауза" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "Пауза и перемотка назад на %d секунду" msgstr[1] "Пауза и перемотка назад на %d секунды" msgstr[2] "Пауза и перемотка назад на %d секунд" #: src/pt-window.c:422 msgid "Start playing" msgstr "Начать воспроизведение" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "Перейти к времени в буфере: %s" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "Перейти к времени в буфере обмена" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "Ручное транскрибирование" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "Автоматическое транскрибирование" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "Общие" #: src/resources/asr-dialog.ui:44 #, fuzzy msgid "Display Name:" msgstr "Отображение" #: src/resources/asr-dialog.ui:56 #, fuzzy msgid "Language:" msgstr "Языковая модель:" #: src/resources/asr-dialog.ui:68 #, fuzzy msgid "Speech Recognition Engine:" msgstr "Распознавание речи" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 #, fuzzy msgid "Download:" msgstr "Загрузить модель" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "Перейти…" #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "_OK" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "Перейти к позиции" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "Открыть медиафайл" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "Показать/скрыть меню действий" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "Выйти" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "График звука" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "Воспроизведение/Пауза" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "Перемотать назад" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "Перемотать вперёд" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "Увеличить масштаб" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "Уменьшить масштаб" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "Открыть диалог \"Перейти к”" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "Копировать метку времени в буфер обмена" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "Перейти к метке времени в буфере обмена" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "Справка" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "Показать справку" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "Показать комбинации клавиш" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "Настройки" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "_Комбинации клавиш" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "О программе Parlatype" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "Копировать время в буфер" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "Перейти к курсору" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "Нет" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "#Решётки#" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "(Круглые скобки)" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "[Квадратные скобки]" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr ". (точка)" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "- (дефис)" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "Полные секунды" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "0,1 секунды" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "0,01 секунды" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "Настройки Parlatype" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "_Пиксели на секунду:" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "Показать _шкалу времени" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "Разрешение" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "Отображение" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "_Движущийся курсор" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "_Фиксированный курсор" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "Перемотки" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "Перемотать _вперёд:" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "Перемотать _назад:" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "Перемотка н_азад на паузе:" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "Нажатие “Пуск” в конце файла" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "Повторное воспроизведение файла" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "Нажатие “Пуск” в конце выделения" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "Повторное воспроизведение выделенного" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "Управление" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "Часы и нули" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "Всегда показывать часы и предшествующие нули" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "Точность" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "Символы возле меток времени" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "Примеры" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "Точность:" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "Разделитель дроби:" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "Метки времени" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "Запомнить _размер" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "Запомнить _позицию" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "Запускать по_верх других окон" #: src/resources/preferences.ui:812 msgid "Window" msgstr "Окно" #: src/resources/prefs-asr.ui:40 #, fuzzy msgid "Language model configurations" msgstr "Языковая модель" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "" #: src/resources/prefs-asr.ui:59 #, fuzzy msgid "All models" msgstr "Все файлы" #: src/resources/prefs-asr.ui:121 #, fuzzy msgid "Import a language model configuration" msgstr "Конфигурация отсутствует" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "Конфигурация отсутствует" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "Добавить конфигурацию" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "" #: src/resources/window.ui:48 msgid "Open a file" msgstr "Открыть файл" #: src/resources/window.ui:170 msgid "_Play" msgstr "П_уск" #: src/resources/window.ui:294 msgid "Speed:" msgstr "Скорость:" #, fuzzy #~ msgid "Remove this configuration" #~ msgstr "Удаление конфигурации" #, fuzzy #~ msgid "Setup this configuration" #~ msgstr "Удаление конфигурации" #~ msgid "org.parlatype.Parlatype" #~ msgstr "org.parlatype.Parlatype" #~ msgid "Enable automatic speech recognition" #~ msgstr "Включить автоматическое распознавание речи" #~ msgid "Use internal textpad for automatic speech recognition" #~ msgstr "" #~ "Использовать встроенный текстовый редактор для автоматического " #~ "распознавания речи" #~ msgid "The folder contains no acoustic model." #~ msgstr "Папка не содержит акустическую модель." #~ msgid "Please select …" #~ msgstr "Выберите …" #~ msgid "Missing parameters" #~ msgstr "Отсутствующие параметры" #~ msgid "Timed out" #~ msgstr "Время ожидания истекло" #~ msgid "" #~ "Scanning the folder took too long. Please make sure to open a folder with " #~ "model data only." #~ msgstr "" #~ "Сканирование папки заняло слишком много времени. Убедитесь, что папка " #~ "содержит только данные модели." #~ msgid "Scanning the folder failed" #~ msgstr "Сканирование папки не удалось" #~ msgid "Nothing found" #~ msgstr "Ничего не найдено" #~ msgid "This folder doesn’t contain a suitable model." #~ msgstr "Папка не содержит подходящих моделей." #~ msgid "" #~ "The folder contains no language model. Please choose a language model " #~ "from another folder." #~ msgstr "" #~ "Эта папка не содержит языковую модель. Выберите языковую модель из другой " #~ "папки." #~ msgid "" #~ "The folder contains no dictionary. Please choose a dictionary from " #~ "another folder." #~ msgstr "Папка не содержит словарь. Выберите словарь из другой папки." #~ msgid "The folder contains several dictionaries." #~ msgstr "Папка содержит несколько словарей." #~ msgid "" #~ "The folder contains no acoustic model. Please choose an acoustic model " #~ "from another folder." #~ msgstr "" #~ "Папка не содержит акустическую модель. Выберите акустическую модель из " #~ "другой папки." #~ msgid "The folder contains several acoustic models." #~ msgstr "Папка содержит несколько акустических моделей." #~ msgid "Finish configuration" #~ msgstr "Завершить конфигурацию" #~ msgid "Select output for automatic speech recognition" #~ msgstr "Выберите, куда выводить результаты автоматического распознавания" #~ msgid "Please open and switch focus to a word processor." #~ msgstr "Откройте и переместите фокус ввода в текстовый процессор." #, c-format #~ msgid "Found %s" #~ msgstr "Найдено %s" #~ msgid "Press “Play” to start automatic speech recognition." #~ msgstr "Нажмите “Пуск” для запуска автоматического распознавания речи." #, c-format #~ msgid "" #~ "Parlatype needs GStreamer 1.x to run. Please check your installation of " #~ "GStreamer and make sure you have the “Good Plugins” installed.\n" #~ "Parlatype will quit now, it received this error message: %s" #~ msgstr "" #~ "Для работы Parlatype необходим GStreamer 1.x. Проверьте установку " #~ "GStreamer и убедитесь, что у вас установлены “Good Plugins”.\n" #~ "Parlatype сейчас завершит работу, получено сообщение об ошибке : %s" #~ msgid "Fatal error" #~ msgstr "Критическая ошибка" #~ msgid "" #~ "Before you can start, you have to download a so called acoustic and " #~ "language model. This is a set of files made for a specific language." #~ msgstr "" #~ "Перед тем, как начать, необходимо скачать так называемые акустическую и " #~ "языковую модели. Это набор файлов, созданный для конкретного языка." #~ msgid "" #~ "Parlatype uses CMU Sphinx as its speech recognition engine. You can " #~ "download models suitable for CMU Sphinx for example from CMU Sphinx’ sourceforge repository. It has " #~ "models for some of the most widespread languages." #~ msgstr "" #~ "Parlatype использует в качестве движка распознавания речи CMU Sphinx. " #~ "Загрузить модели, подходящие для CMU Sphinx можно, например, из sourceforge-репозитория CMU Sphinx. Там есть " #~ "модели для некоторых широко распространённых языков." #~ msgid "" #~ "If it’s compressed, uncompress the model. Save it to a folder where it " #~ "can stay. Parlatype doesn’t copy the model internally." #~ msgstr "" #~ "Если модель сжата, распакуйте её. Сохраните её в нужную папку. Parlatype " #~ "не копирует модели самостоятельно." #~ msgid "When you are finished, specify the folder with the model:" #~ msgstr "Когда закончите, укажите программе папку с моделью:" #~ msgid "Select language model" #~ msgstr "Выбрать языковую модель" #~ msgid "Dictionary" #~ msgstr "Словарь" #~ msgid "Select dictionary" #~ msgstr "Выбрать словарь" #~ msgid "Acoustic model" #~ msgstr "Акустическая модель" #~ msgid "Select acoustic model folder" #~ msgstr "Выберите папку с акустической моделью" #~ msgid "Setup is completed. Please give this configuration a name:" #~ msgstr "Настройка завершена. Дайте имя этой конфигурации:" #~ msgid "Dictionary:" #~ msgstr "Словарь:" #~ msgid "Acoustic model folder:" #~ msgstr "Папка акустической модели:" parlatype-3.0/po/sk.po000066400000000000000000000430111414030451500147440ustar00rootroot00000000000000# Slovak translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-03-09 16:27+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Slovak \n" "Language: sk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n" "X-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "" #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "_Otvoriť" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Zrušiť" #: src/pt-app.c:123 msgid "Audio files" msgstr "" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Gabor Karsay https://launchpad.net/~gabor-karsay" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "" msgstr[1] "" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "" #: src/pt-prefs-asr.c:585 msgid "Delete language model configuration?" msgstr "" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "" #: src/pt-prefs-asr.c:731 msgid "The file is not a valid language model configuration." msgstr "" #: src/pt-prefs-asr.c:779 msgid "Import language model configuration" msgstr "" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:412 msgid "Pause" msgstr "" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:422 msgid "Start playing" msgstr "" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "" #: src/resources/asr-dialog.ui:44 msgid "Display Name:" msgstr "" #: src/resources/asr-dialog.ui:56 msgid "Language:" msgstr "" #: src/resources/asr-dialog.ui:68 msgid "Speech Recognition Engine:" msgstr "" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 msgid "Download:" msgstr "" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "" #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "_Ok" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr "" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "" #: src/resources/preferences.ui:812 msgid "Window" msgstr "" #: src/resources/prefs-asr.ui:40 msgid "Language model configurations" msgstr "" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "" #: src/resources/prefs-asr.ui:59 msgid "All models" msgstr "" #: src/resources/prefs-asr.ui:121 msgid "Import a language model configuration" msgstr "" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "" #: src/resources/window.ui:48 msgid "Open a file" msgstr "" #: src/resources/window.ui:170 msgid "_Play" msgstr "_Hrať" #: src/resources/window.ui:294 msgid "Speed:" msgstr "" parlatype-3.0/po/sr.po000066400000000000000000000457001414030451500147620ustar00rootroot00000000000000# Serbian translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # Томица Кораћ , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2019-05-27 17:12+0000\n" "Last-Translator: Gabor Karsay \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=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Launchpad-Export-Date: 2021-09-26 08:44+0000\n" "X-Generator: Launchpad (build 732145c78fc09841c9906082a9f784c21494fca6)\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Парлатајп" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" "Паратајп је медија плејер лак за употребу. Његова главна намена је помоћ при " "транскрибовању." #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Алат за транскрипцију." #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "Отвори звучни фајл" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "_Отвори" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Откажи" #: src/pt-app.c:123 msgid "Audio files" msgstr "Звучни фајлови" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "Сви фајлови" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "Грешка при отварању помоћи: %s" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "Код из осталих пројеката:" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "Основни алат за транскрипцију" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " Томица Кораћ https://launchpad.net/~tomicakorac" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" "Упозорење: Парлатајп ради само са једним фајлом истовремено. Други фајлови " "се занемарују.\n" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "секунду" msgstr[1] "sekundi" msgstr[2] "sekundi" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "" #: src/pt-prefs-asr.c:585 msgid "Delete language model configuration?" msgstr "" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "" #: src/pt-prefs-asr.c:731 msgid "The file is not a valid language model configuration." msgstr "" #: src/pt-prefs-asr.c:779 msgid "Import language model configuration" msgstr "" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "Врати се %d секунду" msgstr[1] "Врати се %d секунде" msgstr[2] "Врати се %d секунди" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "Прескочи %d секунду" msgstr[1] "Прескочи %d секунде" msgstr[2] "Прескочи %d секунди" #: src/pt-window.c:412 msgid "Pause" msgstr "Pauza" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "Застани и врати %d секунду" msgstr[1] "Застани и врати %d секунде" msgstr[2] "Застани и врати %d секунди" #: src/pt-window.c:422 msgid "Start playing" msgstr "Покрени" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "" #: src/resources/asr-dialog.ui:44 msgid "Display Name:" msgstr "" #: src/resources/asr-dialog.ui:56 msgid "Language:" msgstr "" #: src/resources/asr-dialog.ui:68 msgid "Speech Recognition Engine:" msgstr "" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 msgid "Download:" msgstr "" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "" #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "У _реду" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "Иди на положај:" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "Излаз" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "Помоћ" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "Поставке" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr "" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "Поставке Парлатајпа" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "_Пиксела по секунди" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "" #: src/resources/preferences.ui:812 msgid "Window" msgstr "" #: src/resources/prefs-asr.ui:40 msgid "Language model configurations" msgstr "" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "" #: src/resources/prefs-asr.ui:59 #, fuzzy msgid "All models" msgstr "Сви фајлови" #: src/resources/prefs-asr.ui:121 msgid "Import a language model configuration" msgstr "" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "" #: src/resources/window.ui:48 msgid "Open a file" msgstr "" #: src/resources/window.ui:170 msgid "_Play" msgstr "_Пусти" #: src/resources/window.ui:294 msgid "Speed:" msgstr "" #~ msgid "Fatal error" #~ msgstr "Кобна грешка" parlatype-3.0/po/sv.po000066400000000000000000000452361414030451500147720ustar00rootroot00000000000000# Swedish translation for parlatype # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the parlatype package. # FIRST AUTHOR , 2017. # msgid "" msgstr "" "Project-Id-Version: parlatype\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-10-18 21:22+0200\n" "PO-Revision-Date: 2020-03-09 16:27+0000\n" "Last-Translator: Gabor Karsay \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-Launchpad-Export-Date: 2020-05-08 11:32+0000\n" "X-Generator: Launchpad (build fbdff7602bd10fb883bf7e2ddcc7fd5a16f60398)\n" #: data/org.parlatype.Parlatype.appdata.xml.in:7 #: data/org.parlatype.Parlatype.desktop.in:4 src/pt-app.c:212 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/org.parlatype.Parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:11 msgid "" "Parlatype is an easy to use media player. Its main purpose is to help you " "transcribing speech." msgstr "" "Parlatype är en lättanvänd mediaspelare vars främsta syfte är att assistera " "vid transkribering av tal." #: data/org.parlatype.Parlatype.appdata.xml.in:25 msgid "Gabor Karsay" msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:46 msgid "This is a minor release with bug fixes and minor new features." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:48 msgid "" "Mute/unmute volume by clicking on the volume icon with the pointer’s " "secondary button (usually right mouse button)." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:49 msgid "" "With Pulseaudio Parlatype doesn’t change the system volume anymore, just its " "own application specific volume." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:50 msgid "The initial volume level is picked up from Pulseaudio." msgstr "" #: data/org.parlatype.Parlatype.appdata.xml.in:51 msgid "Translation updates for several languages." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:58 msgid "This is a major release with new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:61 msgid "Waveform is loaded on-the-fly, there is no blocking progress dialog." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:63 msgid "Waveform can be changed continuously instead of in discrete steps." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:70 msgid "This is a minor release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:73 msgid "" "Update time label only if time has changed. This is a performance increase, " "cursor movement should be smoother on slower systems." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:75 msgid "Translation updates for Hungarian, Lithuanian and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:82 msgid "This is a minor release with some changes." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:85 msgid "" "Automatic speech recognition (ASR) is now disabled by default and it’s only " "shown, if parlatype is launched with the new parameter --with-asr" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:87 msgid "Fix internationalization: Some translations were not shown" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:89 msgid "" "Translation updates for Arabic, British English, Czech, Dutch, German, " "Polish and Spanish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:96 msgid "This is a major release with some new features." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:99 msgid "Automatic speech recognition with CMU Sphinx" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:101 msgid "Design changes, including removal of application menu" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:103 msgid "Custom timestamps" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:105 msgid "" "Translation updates for Brazilian Portuguese, British English, Czech, " "German, Japanese, Lithuanian and Polish" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:112 msgid "This is a minor maintenance release." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:115 msgid "Animate scrolling when using keybindings" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:117 msgid "Change desktop entry category to Audio/Video instead of Utilities" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:119 msgid "Translation updates for French" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:126 msgid "This release contains a number of bug fixes and minor improvements." msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:129 msgid "Progress Dialog has now a countdown timer (estimated time left)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:131 msgid "Increase max. possible speed to 2.0" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:133 msgid "" "New keyboard shortcuts for Play/Pause (Ctrl + Space), Jump back (Ctrl + " "Left), Jump forward (Ctrl + Right)" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:135 msgid "Scrolling now also possible with vertical scrollbar" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:137 msgid "Various fixes for waveform and cursor display" msgstr "" #. Translators: This has very low priority, it's the description for an old release. #: data/org.parlatype.Parlatype.appdata.xml.in:139 msgid "" "Translation updates for Arabic, British English, Catalan, German, Finnish, " "French, Japanese, Lithuanian, Polish, Spanish and Swedish" msgstr "" #: data/org.parlatype.Parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Transkriberingsverktyg" #: data/org.parlatype.Parlatype.desktop.in:6 msgid "Transcription;" msgstr "Transkribering;" #: src/pt-app.c:59 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:100 msgid "Open Audio File" msgstr "Öppna ljudfil" #: src/pt-app.c:103 src/pt-prefs-asr.c:782 src/resources/window.ui:43 msgid "_Open" msgstr "_Öppna" #: src/pt-app.c:104 src/pt-prefs-asr.c:595 src/pt-prefs-asr.c:783 #: src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Avbryt" #: src/pt-app.c:123 msgid "Audio files" msgstr "Ljudfiler" #: src/pt-app.c:124 src/pt-prefs-asr.c:794 msgid "All files" msgstr "Alla filer" #. Translators: %s is a detailed error message #: src/pt-app.c:177 #, c-format msgid "Error opening help: %s" msgstr "" #. Translators: This is part of the about box, followed by the #. copyright holders of code from other projects. Instead of #. "including" it could also say "with" or just "Code from #. other projects:" #: src/pt-app.c:197 msgid "Including code from other projects:" msgstr "Med kod från andra projekt:" #: src/pt-app.c:215 msgid "A basic transcription utility" msgstr "Ett enkelt transkriberingsverktyg" #: src/pt-app.c:219 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " Tommy Brunn https://launchpad.net/~tommybrunn" #: src/pt-app.c:353 #, c-format msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" "Varning: Parlatype hanterar endast en fil åt gången. Övriga filer " "ignoreras.\n" #: src/pt-asr-dialog.c:93 msgid "CMU Pocketsphinx" msgstr "" #: src/pt-asr-dialog.c:96 msgid "Mozilla DeepSpeech" msgstr "" #. Translators: This is a time format, like "2:05:30" for 2 #. hours, 5 minutes, and 30 seconds. You may change ":" to #. the separator that your locale uses or use "%Id" instead #. of "%d" if your locale uses localized digits. #: src/pt-goto-dialog.c:49 #, c-format msgctxt "long time format" msgid "%d:%02d:%02d" msgstr "%d:%02d:%02d" #. Translators: This is part of the Preferences dialog #. or the "Go to ..." dialog. There is a label like #. "Jump back:", "Jump forward:", "Jump back on pause:" #. or "Go to position:" before. #: src/pt-goto-dialog.c:79 src/pt-preferences.c:85 src/pt-preferences.c:95 #: src/pt-preferences.c:105 msgid "second" msgid_plural "seconds" msgstr[0] "sekund" msgstr[1] "sekunder" #: src/pt-preferences.c:305 msgid "Speech recognition" msgstr "" #: src/pt-prefs-asr.c:373 msgid "Failed to read personal configuration files" msgstr "" #: src/pt-prefs-asr.c:415 msgid "Failed to copy shipped configuration files" msgstr "" #: src/pt-prefs-asr.c:585 msgid "Delete language model configuration?" msgstr "" #: src/pt-prefs-asr.c:586 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-prefs-asr.c:596 msgid "_Yes" msgstr "" #: src/pt-prefs-asr.c:673 src/pt-prefs-asr.c:727 msgid "Error" msgstr "" #: src/pt-prefs-asr.c:731 msgid "The file is not a valid language model configuration." msgstr "" #: src/pt-prefs-asr.c:779 msgid "Import language model configuration" msgstr "" #: src/pt-prefs-asr.c:793 msgid "Parlatype language model configurations" msgstr "" #: src/pt-prefs-asr.c:844 msgid "Failed to create personal configuration folder" msgstr "" #: src/pt-window.c:376 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "Spola tillbaka 1 sekund" msgstr[1] "Spola tillbaka %d sekunder" #: src/pt-window.c:393 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "Spola fram 1 sekund" msgstr[1] "Spola fram %d sekunder" #: src/pt-window.c:412 msgid "Pause" msgstr "Pausa" #: src/pt-window.c:415 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "Pausa och spola tillbaka 1 sekund" msgstr[1] "Pausa och spola tillbaka %d sekunder" #: src/pt-window.c:422 msgid "Start playing" msgstr "Spela upp" #: src/pt-window.c:458 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:460 src/pt-window.c:1157 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1152 msgid "Manual transcription" msgstr "" #: src/pt-window.c:1153 msgid "Automatic transcription" msgstr "" #: src/resources/asr-dialog.ui:20 src/resources/help-overlay.ui:15 msgid "General" msgstr "Generellt" #: src/resources/asr-dialog.ui:44 #, fuzzy msgid "Display Name:" msgstr "Utseende" #: src/resources/asr-dialog.ui:56 msgid "Language:" msgstr "" #: src/resources/asr-dialog.ui:68 msgid "Speech Recognition Engine:" msgstr "" #: src/resources/asr-dialog.ui:80 msgid "GStreamer Plugin:" msgstr "" #: src/resources/asr-dialog.ui:92 msgid "Publisher:" msgstr "" #: src/resources/asr-dialog.ui:104 msgid "License:" msgstr "" #: src/resources/asr-dialog.ui:213 msgid "Installation" msgstr "" #. Points to a download location #: src/resources/asr-dialog.ui:236 src/resources/asr-dialog.ui:286 msgid "Download:" msgstr "" #: src/resources/asr-dialog.ui:260 msgid "Installed:" msgstr "" #: src/resources/asr-dialog.ui:310 msgid "Instructions:" msgstr "" #: src/resources/asr-dialog.ui:322 msgid "Download, unzip to a folder and select that folder." msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:34 msgid "Go to…" msgstr "" #: src/resources/goto-dialog.ui:40 msgid "_OK" msgstr "_OK" #: src/resources/goto-dialog.ui:70 msgid "Go to position:" msgstr "Gå till position:" #: src/resources/help-overlay.ui:20 msgid "Open a media file" msgstr "Öppna mediafil" #: src/resources/help-overlay.ui:27 msgid "Show/hide action menu" msgstr "Visa/dölj åtgärdsmeny" #: src/resources/help-overlay.ui:34 msgid "Quit" msgstr "Avsluta" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:274 msgid "Waveform" msgstr "Vågform" #: src/resources/help-overlay.ui:47 msgid "Play/Pause" msgstr "" #: src/resources/help-overlay.ui:55 src/resources/help-overlay.ui:63 msgid "Jump back" msgstr "" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "" #: src/resources/help-overlay.ui:86 msgid "Zoom in" msgstr "Zooma in" #: src/resources/help-overlay.ui:93 msgid "Zoom out" msgstr "Zooma ut" #: src/resources/help-overlay.ui:100 msgid "Open “Go to” dialog" msgstr "Öppna \"Gå till\"-dialog" #: src/resources/help-overlay.ui:107 msgid "Copy timestamp to clipboard" msgstr "Kopiera tidsmarkering till urklipp" #: src/resources/help-overlay.ui:114 msgid "Go to timestamp in clipboard" msgstr "Gå till tidsmarkering i urklipp" #: src/resources/help-overlay.ui:122 src/resources/menus.ui:15 msgid "Help" msgstr "Hjälp" #: src/resources/help-overlay.ui:127 msgid "Show help" msgstr "Visa hjälp" #: src/resources/help-overlay.ui:134 msgid "Show keyboard shortcuts" msgstr "Visa tangentbordsgenvägar" #: src/resources/menus.ui:7 msgid "Preferences" msgstr "Inställningar" #: src/resources/menus.ui:11 msgid "_Keyboard Shortcuts" msgstr "_Tangentbordsgenvägar" #: src/resources/menus.ui:19 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:26 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:30 msgid "Go to cursor" msgstr "" #. This refers to: "Characters around timestamps" #: src/resources/preferences.ui:42 msgid "None" msgstr "" #: src/resources/preferences.ui:46 msgid "#Number signs#" msgstr "" #: src/resources/preferences.ui:50 msgid "(Round brackets)" msgstr "" #: src/resources/preferences.ui:54 msgid "[Square brackets]" msgstr "" #: src/resources/preferences.ui:68 msgid ". (point)" msgstr "" #: src/resources/preferences.ui:72 msgid "- (hyphen)" msgstr "" #: src/resources/preferences.ui:86 msgid "Full seconds" msgstr "" #: src/resources/preferences.ui:90 msgid "10th seconds" msgstr "" #: src/resources/preferences.ui:94 msgid "100th seconds" msgstr "" #: src/resources/preferences.ui:102 msgid "Parlatype Preferences" msgstr "Parlatype-inställningar" #: src/resources/preferences.ui:144 msgid "_Pixels per second:" msgstr "_Pixlar per sekund:" #: src/resources/preferences.ui:174 msgid "Show _time scale" msgstr "_Visa tidsskala" #. Resolution of the waveform image #: src/resources/preferences.ui:192 msgid "Resolution" msgstr "Upplösning" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:207 msgid "Display" msgstr "Utseende" #: src/resources/preferences.ui:220 msgid "_Moving cursor" msgstr "_Rörlig pekare" #: src/resources/preferences.ui:237 msgid "_Fixed cursor" msgstr "_Fast pekare" #: src/resources/preferences.ui:291 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:393 msgid "Jump _forward:" msgstr "Spola _framåt" #: src/resources/preferences.ui:407 msgid "Jump _back:" msgstr "Spola _tillbaka:" #: src/resources/preferences.ui:421 msgid "Jump back on _pause:" msgstr "Spola tillbaka vid pause:" #: src/resources/preferences.ui:444 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:458 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:477 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:491 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:513 msgid "Controls" msgstr "Kontroller" #: src/resources/preferences.ui:556 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:569 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:587 msgid "Precision" msgstr "" #: src/resources/preferences.ui:603 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:619 msgid "Examples" msgstr "" #: src/resources/preferences.ui:661 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:693 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:736 msgid "Timestamps" msgstr "" #: src/resources/preferences.ui:760 msgid "Remember _size" msgstr "Kom ihåg _storlek" #: src/resources/preferences.ui:775 msgid "Remember _position" msgstr "Kom ihåg _position" #: src/resources/preferences.ui:790 msgid "Start on _top" msgstr "Starta med _fokus" #: src/resources/preferences.ui:812 msgid "Window" msgstr "Fönster" #: src/resources/prefs-asr.ui:40 msgid "Language model configurations" msgstr "" #: src/resources/prefs-asr.ui:57 msgid "Installed" msgstr "" #: src/resources/prefs-asr.ui:58 msgid "Supported" msgstr "" #: src/resources/prefs-asr.ui:59 #, fuzzy msgid "All models" msgstr "Alla filer" #: src/resources/prefs-asr.ui:121 msgid "Import a language model configuration" msgstr "" #: src/resources/prefs-asr.ui:228 msgid "There is no configuration" msgstr "" #: src/resources/prefs-asr.ui:238 msgid "Add a configuration" msgstr "" #: src/resources/prefs-asr.ui:306 msgid "No results in this view" msgstr "" #: src/resources/window.ui:48 msgid "Open a file" msgstr "Öppna en fil" #: src/resources/window.ui:170 msgid "_Play" msgstr "Spela _upp" #: src/resources/window.ui:294 msgid "Speed:" msgstr "Hastighet:" #~ msgid "Fatal error" #~ msgstr "Allvarligt fel" parlatype-3.0/src/000077500000000000000000000000001414030451500141415ustar00rootroot00000000000000parlatype-3.0/src/main.c000066400000000000000000000022431414030451500152320ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2016 * * 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 . */ #include "config.h" #include #include #include /* setlocale */ #include "pt-app.h" int main (int argc, char *argv[]) { setlocale (LC_ALL, ""); bindtextdomain (PACKAGE_NAME, LOCALEDIR); bind_textdomain_codeset (PACKAGE_NAME, "UTF-8"); textdomain (PACKAGE_NAME); PtApp *app; gint app_status; app = pt_app_new (); app_status = g_application_run (G_APPLICATION (app), argc, argv); g_object_unref (app); return app_status; } parlatype-3.0/src/meson.build000066400000000000000000000024231414030451500163040ustar00rootroot00000000000000gresources = gnome.compile_resources( 'pt-win-resources', 'resources/parlatype.gresource.xml', source_dir: 'resources', c_name: '_pt', ) src = [ gresources, 'main.c', 'pt-app.c', 'pt-app.h', 'pt-asr-dialog.c', 'pt-asr-dialog.h', 'pt-config-row.c', 'pt-config-row.h', 'pt-controller.c', 'pt-controller.h', 'pt-goto-dialog.c', 'pt-goto-dialog.h', 'pt-preferences.c', 'pt-preferences.h', 'pt-prefs-asr.c', 'pt-prefs-asr.h', 'pt-window.c', 'pt-window.h', 'pt-window-dnd.c', 'pt-window-dnd.h', 'pt-window-private.h', ] if host_machine.system() != 'windows' src += [ 'pt-dbus-service.c', 'pt-dbus-service.h', 'pt-mediakeys.c', 'pt-mediakeys.h', ] endif if host_machine.system() == 'windows' rc = configure_file( input: 'resources/parlatype.rc.in', output: '@BASELINE@', configuration: rc_conf, ) src += [ windows.compile_resources(rc), 'pt-win32-datacopy.c', 'pt-win32-datacopy.h', 'pt-win32-helpers.c', 'pt-win32-helpers.h', 'pt-win32-hotkeys.c', 'pt-win32-hotkeys.h', 'pt-win32-pipe.c', 'pt-win32-pipe.h', ] endif parlatype_deps = [ config_h, gtk, ] executable('parlatype', src, link_with: libparlatype, include_directories : conf_inc, install: true, dependencies: parlatype_deps, gui_app: true, c_args: ['-DG_LOG_DOMAIN="parlatype"' ], )parlatype-3.0/src/pt-app.c000066400000000000000000000271241414030451500155140ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2016–2019 * * 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 . */ #include "config.h" #include #include #ifdef G_OS_UNIX #include "pt-dbus-service.h" #include "pt-mediakeys.h" #endif #ifdef G_OS_WIN32 #include "pt-win32-datacopy.h" #include "pt-win32-helpers.h" #include "pt-win32-hotkeys.h" #include "pt-win32-pipe.h" #endif #include "pt-preferences.h" #include "pt-window.h" #include "pt-app.h" struct _PtAppPrivate { #ifdef G_OS_UNIX PtMediakeys *mediakeys; PtDbusService *dbus_service; #endif #ifdef G_OS_WIN32 PtWin32Datacopy *win32datacopy; PtWin32Hotkeys *win32hotkeys; PtWin32Pipe *win32pipe; #endif }; G_DEFINE_TYPE_WITH_PRIVATE (PtApp, pt_app, GTK_TYPE_APPLICATION); static GOptionEntry options[] = { { "version", 'v', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, NULL, N_("Show the application’s version"), NULL }, { NULL } }; static void open_dialog_response_cb (GtkDialog *dialog, gint response_id, gpointer user_data) { PtWindow *win = PT_WINDOW (user_data); gchar *uri = NULL; if (response_id == GTK_RESPONSE_ACCEPT) { uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog)); } if (uri) { pt_window_open_file (PT_WINDOW (win), uri); g_free (uri); } g_object_unref (dialog); } static void open_cb (GSimpleAction *action, GVariant *parameter, gpointer app) { GtkFileChooserNative *dialog; GtkWindow *win; const char *home_path; gchar *current_uri = NULL; GFile *current, *dir; GtkFileFilter *filter_audio; GtkFileFilter *filter_all; win = gtk_application_get_active_window (app); dialog = gtk_file_chooser_native_new ( _("Open Audio File"), win, GTK_FILE_CHOOSER_ACTION_OPEN, _("_Open"), _("_Cancel")); /* Set current folder to the folder with the currently open file or to user’s home directory */ current_uri = pt_window_get_uri (PT_WINDOW (win)); if (current_uri) { current = g_file_new_for_uri (current_uri); dir = g_file_get_parent (current); g_free (current_uri); g_object_unref (current); } else { home_path = g_get_home_dir (); dir = g_file_new_for_path (home_path); } gtk_file_chooser_set_current_folder_file ( GTK_FILE_CHOOSER (dialog), dir, NULL); filter_audio = gtk_file_filter_new (); filter_all = gtk_file_filter_new (); gtk_file_filter_set_name (filter_audio, _("Audio files")); gtk_file_filter_set_name (filter_all, _("All files")); #ifdef G_OS_WIN32 pt_win32_add_audio_patterns (filter_audio); #else gtk_file_filter_add_mime_type (filter_audio, "audio/*"); #endif gtk_file_filter_add_pattern (filter_all, "*"); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter_audio); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter_all); gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dialog), filter_audio); g_signal_connect (dialog, "response", G_CALLBACK (open_dialog_response_cb), win); gtk_native_dialog_show (GTK_NATIVE_DIALOG (dialog)); g_object_unref (dir); } static void prefs_cb (GSimpleAction *action, GVariant *parameter, gpointer app) { GtkWindow *win; win = gtk_application_get_active_window (app); pt_show_preferences_dialog (win); } static void help_cb (GSimpleAction *action, GVariant *parameter, gpointer app) { GtkWindow *win; gchar *uri; GError *error = NULL; gchar *errmsg; win = gtk_application_get_active_window (app); #ifdef G_OS_WIN32 uri = pt_win32_get_help_uri (); #else uri = g_strdup_printf ("help:%s", APP_ID); #endif gtk_show_uri_on_window ( win, uri, GDK_CURRENT_TIME, &error); if (error) { /* Translators: %s is a detailed error message */ errmsg = g_strdup_printf (_("Error opening help: %s"), error->message); pt_error_message (PT_WINDOW (win), errmsg, NULL); g_free (errmsg); g_error_free (error); } g_free (uri); } static void about_cb (GSimpleAction *action, GVariant *parameter, gpointer app) { const gchar *authors[] = { "Gabor Karsay ", /* Translators: This is part of the about box, followed by the copyright holders of code from other projects. Instead of "including" it could also say "with" or just "Code from other projects:" */ _("Including code from other projects:"), "Buzztrax team ", "Philip Withnall ", "Magnus Hjorth, mhWaveEdit", NULL }; const gchar *artists[] = { "GNOME Project http://www.gnome.org", "Gabor Karsay ", NULL }; gtk_show_about_dialog ( gtk_application_get_active_window (app), "program_name", _("Parlatype"), "version", PACKAGE_VERSION, "copyright", "© Gabor Karsay 2016–2021", "comments", _("A basic transcription utility"), "logo-icon-name", APP_ID, "authors", authors, "artists", artists, "translator-credits", _("translator-credits"), "license-type", GTK_LICENSE_GPL_3_0, "website", PACKAGE_URL, NULL); } static void quit_cb (GSimpleAction *action, GVariant *parameter, gpointer app) { g_application_quit (app); } const GActionEntry app_actions[] = { { "open", open_cb, NULL, NULL, NULL }, { "prefs", prefs_cb, NULL, NULL, NULL }, { "help", help_cb, NULL, NULL, NULL }, { "about", about_cb, NULL, NULL, NULL }, { "quit", quit_cb, NULL, NULL, NULL } }; static void pt_app_startup (GApplication *app) { g_application_set_resource_base_path (app, "/org/parlatype/parlatype"); G_APPLICATION_CLASS (pt_app_parent_class)->startup (app); g_action_map_add_action_entries (G_ACTION_MAP (app), app_actions, G_N_ELEMENTS (app_actions), app); const gchar *quit_accels[2] = { "Q", NULL }; const gchar *open_accels[2] = { "O", NULL }; const gchar *copy_accels[2] = { "C", NULL }; const gchar *insert_accels[2] = { "V", NULL }; const gchar *goto_accels[2] = { "G", NULL }; const gchar *help_accels[2] = { "F1", NULL }; const gchar *zoom_in_accels[3] = { "plus", "KP_Add", NULL }; const gchar *zoom_out_accels[3] = { "minus", "KP_Subtract", NULL }; const char *jump_back_accels[2] = {"Left", NULL}; const char *jump_forward_accels[2] = {"Right", NULL}; const char *play_accels[2] = {"space", NULL}; gtk_application_set_accels_for_action (GTK_APPLICATION (app), "app.quit", quit_accels); gtk_application_set_accels_for_action (GTK_APPLICATION (app), "app.open", open_accels); gtk_application_set_accels_for_action (GTK_APPLICATION (app), "win.copy", copy_accels); gtk_application_set_accels_for_action (GTK_APPLICATION (app), "win.insert", insert_accels); gtk_application_set_accels_for_action (GTK_APPLICATION (app), "win.goto", goto_accels); gtk_application_set_accels_for_action (GTK_APPLICATION (app), "app.help", help_accels); gtk_application_set_accels_for_action (GTK_APPLICATION (app), "win.zoom-in", zoom_in_accels); gtk_application_set_accels_for_action (GTK_APPLICATION (app), "win.zoom-out", zoom_out_accels); gtk_application_set_accels_for_action (GTK_APPLICATION (app), "win.jump-back", jump_back_accels); gtk_application_set_accels_for_action (GTK_APPLICATION (app), "win.jump-forward", jump_forward_accels); gtk_application_set_accels_for_action (GTK_APPLICATION (app), "win.play", play_accels); /* Load custom css */ GtkCssProvider *provider; provider = gtk_css_provider_new (); gtk_css_provider_load_from_resource (provider, "/org/parlatype/parlatype/parlatype.css"); gtk_style_context_add_provider_for_screen ( gdk_screen_get_default (), GTK_STYLE_PROVIDER (provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); g_object_unref (provider); } static void pt_app_activate (GApplication *application) { PtApp *app = PT_APP (application); GList *windows; PtWindow *win; #ifdef G_OS_WIN32 if (pt_win32_present_other_instance (application)) g_application_quit (application); #endif windows = gtk_application_get_windows (GTK_APPLICATION (application)); if (windows) { win = PT_WINDOW (windows->data); } else { win = pt_window_new (app); #ifdef G_OS_UNIX app->priv->mediakeys = pt_mediakeys_new (win); pt_mediakeys_start (app->priv->mediakeys); app->priv->dbus_service = pt_dbus_service_new (win); pt_dbus_service_start (app->priv->dbus_service); #endif #ifdef G_OS_WIN32 app->priv->win32datacopy = pt_win32_datacopy_new (win); pt_win32_datacopy_start (app->priv->win32datacopy); app->priv->win32hotkeys = pt_win32_hotkeys_new (win); pt_win32_hotkeys_start (app->priv->win32hotkeys); app->priv->win32pipe = pt_win32_pipe_new (win); pt_win32_pipe_start (app->priv->win32pipe); #endif } gtk_window_present (GTK_WINDOW (win)); } static void pt_app_open (GApplication *app, GFile **files, gint n_files, const gchar *hint) { GtkWindow *win; gchar *uri; if (n_files > 1) { g_print (_("Warning: Parlatype handles only one file at a time. The other files are ignored.\n")); } uri = g_file_get_uri (files[0]); #ifdef G_OS_WIN32 if (pt_win32_open_in_other_instance (app, uri)) { g_free (uri); g_application_quit (app); } #endif pt_app_activate (app); win = gtk_application_get_active_window (GTK_APPLICATION (app)); pt_window_open_file (PT_WINDOW (win), uri); g_free (uri); } static gint pt_app_handle_local_options (GApplication *application, GVariantDict *options) { if (g_variant_dict_contains (options, "version")) { g_print ("%s %s\n", PACKAGE_NAME, PACKAGE_VERSION); return 0; } return -1; } static void pt_app_init (PtApp *app) { app->priv = pt_app_get_instance_private (app); #ifdef G_OS_UNIX app->priv->mediakeys = NULL; app->priv->dbus_service = NULL; #endif #ifdef G_OS_WIN32 app->priv->win32datacopy = NULL; app->priv->win32hotkeys = NULL; app->priv->win32pipe = NULL; #endif g_application_add_main_option_entries (G_APPLICATION (app), options); } static void pt_app_dispose (GObject *object) { PtApp *app = PT_APP (object); #ifdef G_OS_UNIX g_clear_object (&app->priv->mediakeys); g_clear_object (&app->priv->dbus_service); #endif #ifdef G_OS_WIN32 g_clear_object (&app->priv->win32datacopy); g_clear_object (&app->priv->win32hotkeys); g_clear_object (&app->priv->win32pipe); #endif G_OBJECT_CLASS (pt_app_parent_class)->dispose (object); } static void pt_app_class_init (PtAppClass *klass) { GApplicationClass *gapp_class = G_APPLICATION_CLASS (klass); GObjectClass *gobject_class = G_OBJECT_CLASS (klass); gobject_class->dispose = pt_app_dispose; gapp_class->open = pt_app_open; gapp_class->activate = pt_app_activate; gapp_class->startup = pt_app_startup; gapp_class->handle_local_options = pt_app_handle_local_options; } PtApp * pt_app_new (void) { return g_object_new (PT_APP_TYPE, "application-id", APP_ID, "flags", G_APPLICATION_HANDLES_OPEN, NULL); } parlatype-3.0/src/pt-app.h000066400000000000000000000024601414030451500155150ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2016, 2019 * * 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 . */ #ifndef PT_APP_H #define PT_APP_H #include "config.h" #include #define PT_APP_TYPE (pt_app_get_type()) #define PT_APP(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PT_APP_TYPE, PtApp)) #define PT_IS_APP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PT_APP_TYPE)) typedef struct _PtApp PtApp; typedef struct _PtAppClass PtAppClass; typedef struct _PtAppPrivate PtAppPrivate; struct _PtApp { GtkApplication parent; /*< private > */ PtAppPrivate *priv; }; struct _PtAppClass { GtkApplicationClass parent_class; }; GType pt_app_get_type (void) G_GNUC_CONST; PtApp *pt_app_new (void); #endif parlatype-3.0/src/pt-asr-dialog.c000066400000000000000000000163321414030451500167550ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2021 * * 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 . */ #include "config.h" #include #include #include #include "pt-asr-dialog.h" #define MAX_URI_LENGTH 30 struct _PtAsrDialogPrivate { PtConfig *config; GtkWidget *name_entry; GtkWidget *lang_value; GtkWidget *engine_label; GtkWidget *engine_value; GtkWidget *plugin_label; GtkWidget *plugin_value; GtkWidget *publisher_label; GtkWidget *publisher_value; GtkWidget *license_label; GtkWidget *license_value; GtkWidget *howto_label; GtkWidget *howto_value; GtkWidget *url1_label; GtkWidget *url1_button; GtkWidget *url2_label; GtkWidget *url2_button; GtkWidget *folder_button; }; G_DEFINE_TYPE_WITH_PRIVATE (PtAsrDialog, pt_asr_dialog, GTK_TYPE_WINDOW) static void name_entry_activate_cb (GtkEntry *entry, gpointer user_data) { PtAsrDialog *dlg = PT_ASR_DIALOG (user_data); gchar const *name; name = gtk_entry_get_text (entry); gtk_window_set_title (GTK_WINDOW (dlg), name); pt_config_set_name (dlg->priv->config, (void*)name); } static gboolean have_string (gchar *str) { return (str && g_strcmp0 (str, "") != 0); } void pt_asr_dialog_set_config (PtAsrDialog *dlg, PtConfig *config) { gchar *name; gchar *str; GtkWidget *label; gchar *engine = NULL; dlg->priv->config = config; name = pt_config_get_name (config); gtk_window_set_title (GTK_WINDOW (dlg), name); gtk_entry_set_text (GTK_ENTRY (dlg->priv->name_entry), name); g_signal_connect (dlg->priv->name_entry, "activate", G_CALLBACK (name_entry_activate_cb), dlg); str = pt_config_get_lang_name (config); gtk_label_set_text (GTK_LABEL (dlg->priv->lang_value), str); str = pt_config_get_plugin (config); if (g_strcmp0 (str, "parlasphinx") == 0) engine = _("CMU Pocketsphinx"); if (g_strcmp0 (str, "ptdeepspeech") == 0) engine = _("Mozilla DeepSpeech"); if (engine) { gtk_widget_set_visible (dlg->priv->plugin_label, FALSE); gtk_widget_hide (dlg->priv->plugin_value); gtk_label_set_text (GTK_LABEL (dlg->priv->engine_value), engine); } else { gtk_widget_hide (dlg->priv->engine_label); gtk_widget_hide (dlg->priv->engine_value); gtk_label_set_text (GTK_LABEL (dlg->priv->plugin_value), str); } str = pt_config_get_key (config, "Publisher"); if (have_string (str)) { gtk_label_set_text (GTK_LABEL (dlg->priv->publisher_value), str); } else { gtk_widget_hide (dlg->priv->publisher_label); gtk_widget_hide (dlg->priv->publisher_value); } g_free (str); str = pt_config_get_key (config, "License"); if (have_string (str)) { gtk_label_set_text (GTK_LABEL (dlg->priv->license_value), str); } else { gtk_widget_hide (dlg->priv->license_label); gtk_widget_hide (dlg->priv->license_value); } g_free (str); /* Installation */ str = pt_config_get_key (config, "Howto"); if (have_string (str)) { gtk_label_set_text (GTK_LABEL (dlg->priv->howto_value), str); } else { gtk_widget_hide (dlg->priv->howto_label); gtk_widget_hide (dlg->priv->howto_value); } g_free (str); str = pt_config_get_key (config, "URL1"); if (have_string (str)) { gtk_link_button_set_uri (GTK_LINK_BUTTON (dlg->priv->url1_button), str); gtk_button_set_label (GTK_BUTTON (dlg->priv->url1_button), str); /* Ellipsize label: This works only after gtk_button_set_label() */ label = gtk_bin_get_child (GTK_BIN (dlg->priv->url1_button)); gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END); } else { gtk_widget_hide (dlg->priv->url1_label); gtk_widget_hide (dlg->priv->url1_button); } g_free (str); str = pt_config_get_key (config, "URL2"); if (have_string (str)) { gtk_link_button_set_uri (GTK_LINK_BUTTON (dlg->priv->url2_button), str); gtk_button_set_label (GTK_BUTTON (dlg->priv->url2_button), str); /* Ellipsize label: This works only after gtk_button_set_label() */ label = gtk_bin_get_child (GTK_BIN (dlg->priv->url2_button)); gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END); } else { gtk_widget_hide (dlg->priv->url2_label); gtk_widget_hide (dlg->priv->url2_button); } g_free (str); str = pt_config_get_base_folder (config); gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dlg->priv->folder_button), str); } static void file_set_cb (GtkFileChooserButton *widget, gpointer user_data) { PtAsrDialog *dlg = PT_ASR_DIALOG (user_data); gchar *path; path = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (widget)); pt_config_set_base_folder (dlg->priv->config, path); g_free (path); } static void pt_asr_dialog_init (PtAsrDialog *dlg) { dlg->priv = pt_asr_dialog_get_instance_private (dlg); gtk_widget_init_template (GTK_WIDGET (dlg)); } static void pt_asr_dialog_class_init (PtAsrDialogClass *klass) { GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_set_template_from_resource (widget_class, "/org/parlatype/parlatype/asr-dialog.ui"); gtk_widget_class_bind_template_callback(widget_class, file_set_cb); gtk_widget_class_bind_template_child_private (widget_class, PtAsrDialog, name_entry); gtk_widget_class_bind_template_child_private (widget_class, PtAsrDialog, lang_value); gtk_widget_class_bind_template_child_private (widget_class, PtAsrDialog, engine_label); gtk_widget_class_bind_template_child_private (widget_class, PtAsrDialog, engine_value); gtk_widget_class_bind_template_child_private (widget_class, PtAsrDialog, plugin_label); gtk_widget_class_bind_template_child_private (widget_class, PtAsrDialog, plugin_value); gtk_widget_class_bind_template_child_private (widget_class, PtAsrDialog, publisher_label); gtk_widget_class_bind_template_child_private (widget_class, PtAsrDialog, publisher_value); gtk_widget_class_bind_template_child_private (widget_class, PtAsrDialog, license_label); gtk_widget_class_bind_template_child_private (widget_class, PtAsrDialog, license_value); gtk_widget_class_bind_template_child_private (widget_class, PtAsrDialog, howto_label); gtk_widget_class_bind_template_child_private (widget_class, PtAsrDialog, howto_value); gtk_widget_class_bind_template_child_private (widget_class, PtAsrDialog, url1_label); gtk_widget_class_bind_template_child_private (widget_class, PtAsrDialog, url1_button); gtk_widget_class_bind_template_child_private (widget_class, PtAsrDialog, url2_label); gtk_widget_class_bind_template_child_private (widget_class, PtAsrDialog, url2_button); gtk_widget_class_bind_template_child_private (widget_class, PtAsrDialog, folder_button); } PtAsrDialog * pt_asr_dialog_new (GtkWindow *win) { return g_object_new (PT_TYPE_ASR_DIALOG, "transient-for", win, NULL); } parlatype-3.0/src/pt-asr-dialog.h000066400000000000000000000027301414030451500167570ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2021 * * 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 . */ #ifndef PT_ASR_DIALOG_H #define PT_ASR_DIALOG_H #include "config.h" #include #include #define PT_TYPE_ASR_DIALOG (pt_asr_dialog_get_type()) #define PT_ASR_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PT_TYPE_ASR_DIALOG, PtAsrDialog)) typedef struct _PtAsrDialog PtAsrDialog; typedef struct _PtAsrDialogClass PtAsrDialogClass; typedef struct _PtAsrDialogPrivate PtAsrDialogPrivate; struct _PtAsrDialog { GtkWindow dialog; /*< private > */ PtAsrDialogPrivate *priv; }; struct _PtAsrDialogClass { GtkWindowClass parent_class; }; GType pt_asr_dialog_get_type (void) G_GNUC_CONST; void pt_asr_dialog_set_config (PtAsrDialog *dlg, PtConfig *config); PtAsrDialog *pt_asr_dialog_new (GtkWindow *win); #endif parlatype-3.0/src/pt-config-row.c000066400000000000000000000156401414030451500170060ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2020 * * 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 . */ #include "config.h" #include #include #include "pt-asr-dialog.h" #include "pt-preferences.h" #include "pt-config-row.h" struct _PtConfigRowPrivate { PtConfig *config; GtkWidget *name_label; GtkWidget *lang_label; GtkWidget *details_button; GtkWidget *status_image; gboolean active; gboolean supported; gboolean installed; }; enum { PROP_0, PROP_CONFIG, PROP_ACTIVE, N_PROPERTIES }; static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, }; G_DEFINE_TYPE_WITH_PRIVATE (PtConfigRow, pt_config_row, GTK_TYPE_LIST_BOX_ROW) /** * SECTION: pt-config-row * @short_description: * @stability: Unstable * @include: parlatype/pt-config-row.h * * TODO */ gboolean pt_config_row_is_installed (PtConfigRow *row) { return row->priv->installed; } gboolean pt_config_row_get_active (PtConfigRow *row) { return row->priv->active; } static void set_status_image (PtConfigRow *row) { GtkImage *status = GTK_IMAGE (row->priv->status_image); gchar *icon = NULL; if (!row->priv->supported) icon = "action-unavailable-symbolic"; else if (!row->priv->installed) icon = "folder-download-symbolic"; else if (row->priv->active) icon = "object-select-symbolic"; if (icon) gtk_image_set_from_icon_name (status, icon, GTK_ICON_SIZE_BUTTON); else gtk_image_clear (status); } void pt_config_row_set_active (PtConfigRow *row, gboolean active) { PtConfigRowPrivate *priv = row->priv; if (priv->active == active || !priv->supported || !priv->installed) return; priv->active = active; g_object_notify_by_pspec (G_OBJECT (row), obj_properties[PROP_ACTIVE]); set_status_image (row); } gboolean pt_config_row_get_supported (PtConfigRow *row) { return row->priv->supported; } void pt_config_row_set_supported (PtConfigRow *row, gboolean supported) { row->priv->supported = supported; set_status_image (row); } static void config_is_installed_cb (PtConfig *config, GParamSpec *pspec, gpointer user_data) { PtConfigRow *row = PT_CONFIG_ROW (user_data); row->priv->installed = pt_config_is_installed (config); set_status_image (row); } static void pt_config_row_constructed (GObject *object) { PtConfigRow *row = PT_CONFIG_ROW (object); PtConfigRowPrivate *priv = row->priv; g_object_bind_property ( priv->config, "name", priv->name_label, "label", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE); gtk_label_set_text (GTK_LABEL (priv->lang_label), pt_config_get_lang_name (priv->config)); priv->installed = pt_config_is_installed (priv->config); g_signal_connect ( priv->config, "notify::is-installed", G_CALLBACK (config_is_installed_cb), row); } static void pt_config_row_init (PtConfigRow *row) { row->priv = pt_config_row_get_instance_private (row); row->priv->active = FALSE; row->priv->supported = FALSE; row->priv->installed = FALSE; gtk_widget_init_template (GTK_WIDGET (row)); } static void pt_config_row_dispose (GObject *object) { G_OBJECT_CLASS (pt_config_row_parent_class)->dispose (object); } static void pt_config_row_finalize (GObject *object) { PtConfigRow *row = PT_CONFIG_ROW (object); g_object_unref (row->priv->config); G_OBJECT_CLASS (pt_config_row_parent_class)->finalize (object); } static void pt_config_row_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { PtConfigRow *row = PT_CONFIG_ROW (object); switch (property_id) { case PROP_CONFIG: row->priv->config = g_value_dup_object (value); break; case PROP_ACTIVE: row->priv->active = g_value_get_boolean (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void pt_config_row_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { PtConfigRow *row = PT_CONFIG_ROW (object); switch (property_id) { case PROP_CONFIG: g_value_set_object (value, row->priv->config); break; case PROP_ACTIVE: g_value_set_boolean (value, row->priv->active); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void pt_config_row_class_init (PtConfigRowClass *klass) { GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = pt_config_row_set_property; object_class->get_property = pt_config_row_get_property; object_class->constructed = pt_config_row_constructed; object_class->dispose = pt_config_row_dispose; object_class->finalize = pt_config_row_finalize; gtk_widget_class_set_template_from_resource (widget_class, "/org/parlatype/parlatype/config-row.ui"); gtk_widget_class_bind_template_child_private (widget_class, PtConfigRow, name_label); gtk_widget_class_bind_template_child_private (widget_class, PtConfigRow, lang_label); gtk_widget_class_bind_template_child_private (widget_class, PtConfigRow, status_image); /** * PtConfigRow:config: * * The configuration object. */ obj_properties[PROP_CONFIG] = g_param_spec_object ( "config", "Config", "The configuration", PT_TYPE_CONFIG, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); /** * PtConfigRow:active: * * Whether the configuration is active. */ obj_properties[PROP_ACTIVE] = g_param_spec_boolean ( "active", "Active", "The configuration is active", FALSE, G_PARAM_READWRITE); g_object_class_install_properties ( G_OBJECT_CLASS (klass), N_PROPERTIES, obj_properties); } /** * pt_config_row_new: * @row_file: path to the file with the settings * * Returns a new PtConfigRow instance for the given file. If the file * doesn’t exist, it will be created. * * After use g_object_unref() it. * * Return value: (transfer full): a new #PtConfigRow */ PtConfigRow * pt_config_row_new (PtConfig *config) { g_return_val_if_fail (config != NULL, NULL); g_return_val_if_fail (PT_IS_CONFIG (config), NULL); return g_object_new (PT_TYPE_CONFIG_ROW, "config", config, NULL); } parlatype-3.0/src/pt-config-row.h000066400000000000000000000035621414030451500170130ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2020 * * 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 . */ #ifndef PT_CONFIG_ROW_H #define PT_CONFIG_ROW_H #include #include #define PT_TYPE_CONFIG_ROW (pt_config_row_get_type()) #define PT_CONFIG_ROW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PT_TYPE_CONFIG_ROW, PtConfigRow)) #define PT_IS_CONFIG_ROW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PT_TYPE_CONFIG_ROW)) typedef struct _PtConfigRow PtConfigRow; typedef struct _PtConfigRowClass PtConfigRowClass; typedef struct _PtConfigRowPrivate PtConfigRowPrivate; /** * PtConfigRow: * * #PtConfigRow contains only private fields and should not be directly accessed. */ struct _PtConfigRow { GtkListBoxRow parent; /*< private > */ PtConfigRowPrivate *priv; }; struct _PtConfigRowClass { GtkListBoxRowClass parent_class; }; GType pt_config_row_get_type (void) G_GNUC_CONST; void pt_config_row_set_active (PtConfigRow *row, gboolean active); gboolean pt_config_row_get_active (PtConfigRow *row); gboolean pt_config_row_is_installed (PtConfigRow *row); void pt_config_row_set_supported (PtConfigRow *row, gboolean supported); gboolean pt_config_row_get_supported (PtConfigRow *row); PtConfigRow* pt_config_row_new (PtConfig *config); #endif parlatype-3.0/src/pt-controller.c000066400000000000000000000055761414030451500171260ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2019 * * 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 . */ #include "config.h" #include "pt-window.h" #include "pt-controller.h" struct _PtControllerPrivate { PtWindow *win; }; enum { PROP_0, PROP_WIN, N_PROPERTIES }; static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, }; G_DEFINE_TYPE_WITH_PRIVATE (PtController, pt_controller, G_TYPE_OBJECT) PtWindow* pt_controller_get_window (PtController *self) { return self->priv->win; } PtPlayer* pt_controller_get_player (PtController *self) { return self->priv->win->player; } static void pt_controller_init (PtController *self) { self->priv = pt_controller_get_instance_private (self); } static void pt_controller_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { PtController *self = PT_CONTROLLER (object); switch (property_id) { case PROP_WIN: self->priv->win = g_value_get_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void pt_controller_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { PtController *self = PT_CONTROLLER (object); switch (property_id) { case PROP_WIN: g_value_set_object (value, self->priv->win); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void pt_controller_class_init (PtControllerClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->set_property = pt_controller_set_property; object_class->get_property = pt_controller_get_property; obj_properties[PROP_WIN] = g_param_spec_object ("win", "Parent PtWindow", "Parent PtWindow", PT_WINDOW_TYPE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties ( object_class, N_PROPERTIES, obj_properties); } PtController * pt_controller_new (PtWindow *win) { return g_object_new (PT_CONTROLLER_TYPE, "win", win, NULL); } parlatype-3.0/src/pt-controller.h000066400000000000000000000030541414030451500171200ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2019 * * 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 . */ #ifndef PT_CONTROLLER_H #define PT_CONTROLLER_H #include "config.h" #include "pt-window.h" #define PT_CONTROLLER_TYPE (pt_controller_get_type()) #define PT_CONTROLLER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PT_CONTROLLER_TYPE, PtController)) #define PT_IS_CONTROLLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PT_CONTROLLER_TYPE)) typedef struct _PtController PtController; typedef struct _PtControllerClass PtControllerClass; typedef struct _PtControllerPrivate PtControllerPrivate; struct _PtController { GObject parent; /*< private > */ PtControllerPrivate *priv; }; struct _PtControllerClass { GObjectClass parent_class; }; GType pt_controller_get_type (void) G_GNUC_CONST; PtWindow *pt_controller_get_window (PtController *self); PtPlayer *pt_controller_get_player (PtController *self); PtController *pt_controller_new (PtWindow *win); #endif parlatype-3.0/src/pt-dbus-service.c000066400000000000000000000204221414030451500173210ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2016, 2019 * * 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 . */ #include "config.h" #include #include #include #include "pt-window.h" #include "pt-dbus-service.h" struct _PtDbusServicePrivate { gint owner_id; }; G_DEFINE_TYPE_WITH_PRIVATE (PtDbusService, pt_dbus_service, PT_CONTROLLER_TYPE) static GDBusNodeInfo *introspection_data = NULL; /* Introspection data for the service we are exporting */ static const gchar introspection_xml[] = "" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " ""; static void player_asr_final_cb (PtPlayer *player, gchar *word, gpointer user_data) { GDBusConnection *connection = G_DBUS_CONNECTION (user_data); g_dbus_connection_emit_signal (connection, NULL, "/org/parlatype/parlatype", "org.parlatype.Parlatype", "ASRFinal", g_variant_new ("(s)", word), NULL); } static void player_asr_hypothesis_cb (PtPlayer *player, gchar *word, gpointer user_data) { GDBusConnection *connection = G_DBUS_CONNECTION (user_data); g_dbus_connection_emit_signal (connection, NULL, "/org/parlatype/parlatype", "org.parlatype.Parlatype", "ASRHypothesis", g_variant_new ("(s)", word), NULL); } static void handle_method_call (GDBusConnection *connection, const gchar *sender, const gchar *object_path, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { PtDbusService *self = PT_DBUS_SERVICE (user_data); PtPlayer *player = pt_controller_get_player (PT_CONTROLLER (self)); gchar *timestamp = NULL; gchar *uri; if (g_strcmp0 (method_name, "GetTimestamp") == 0) { timestamp = pt_player_get_timestamp (player); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "t: %s", timestamp); if (!timestamp) timestamp = ""; g_dbus_method_invocation_return_value (invocation, g_variant_new ("(s)", timestamp)); } else if (g_strcmp0 (method_name, "GotoTimestamp") == 0) { g_variant_get (parameters, "(&s)", ×tamp); pt_player_goto_timestamp (player, timestamp); g_dbus_method_invocation_return_value (invocation, NULL); } else if (g_strcmp0 (method_name, "GetURI") == 0) { uri = pt_player_get_uri (player); if (!uri) uri = ""; g_dbus_method_invocation_return_value (invocation, g_variant_new ("(s)", uri)); } else if (g_strcmp0 (method_name, "PlayPause") == 0) { pt_player_play_pause (player); g_dbus_method_invocation_return_value (invocation, NULL); } else if (g_strcmp0 (method_name, "JumpBack") == 0) { pt_player_jump_back (player); g_dbus_method_invocation_return_value (invocation, NULL); } else if (g_strcmp0 (method_name, "JumpForward") == 0) { pt_player_jump_forward (player); g_dbus_method_invocation_return_value (invocation, NULL); } else if (g_strcmp0 (method_name, "IncreaseSpeed") == 0) { gdouble value; g_object_get (player, "speed", &value, NULL); pt_player_set_speed (player, value + 0.1); g_dbus_method_invocation_return_value (invocation, NULL); } else if (g_strcmp0 (method_name, "DecreaseSpeed") == 0) { gdouble value; g_object_get (player, "speed", &value, NULL); pt_player_set_speed (player, value - 0.1); g_dbus_method_invocation_return_value (invocation, NULL); } else if (g_strcmp0 (method_name, "TestHypothesisSignal") == 0) { gchar *message; g_variant_get (parameters, "(&s)", &message); player_asr_hypothesis_cb (NULL, message, connection); g_dbus_method_invocation_return_value (invocation, NULL); } else if (g_strcmp0 (method_name, "TestFinalSignal") == 0) { gchar *message; g_variant_get (parameters, "(&s)", &message); player_asr_final_cb (NULL, message, connection); g_dbus_method_invocation_return_value (invocation, NULL); } } static const GDBusInterfaceVTable interface_vtable = { handle_method_call, }; static void on_bus_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data) { PtDbusService *self = PT_DBUS_SERVICE (user_data); PtPlayer *player = pt_controller_get_player (PT_CONTROLLER (self)); guint registration_id; registration_id = g_dbus_connection_register_object (connection, "/org/parlatype/parlatype", introspection_data->interfaces[0], &interface_vtable, user_data, NULL, /* user_data_free_func */ NULL); /* GError */ g_assert (registration_id > 0); g_signal_connect (player, "asr-final", G_CALLBACK (player_asr_final_cb), connection); g_signal_connect (player, "asr-hypothesis", G_CALLBACK (player_asr_hypothesis_cb), connection); } static void on_name_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data) { } static void on_name_lost (GDBusConnection *connection, const gchar *name, gpointer user_data) { } void pt_dbus_service_start (PtDbusService *self) { introspection_data = g_dbus_node_info_new_for_xml (introspection_xml, NULL); g_assert (introspection_data != NULL); self->priv->owner_id = g_bus_own_name (G_BUS_TYPE_SESSION, APP_ID, G_BUS_NAME_OWNER_FLAGS_NONE, on_bus_acquired, on_name_acquired, on_name_lost, self, NULL); } static void pt_dbus_service_init (PtDbusService *self) { self->priv = pt_dbus_service_get_instance_private (self); self->priv->owner_id = 0; } static void pt_dbus_service_dispose (GObject *object) { PtDbusService *self = PT_DBUS_SERVICE (object); if (self->priv->owner_id > 0) { g_bus_unown_name (self->priv->owner_id); g_dbus_node_info_unref (introspection_data); self->priv->owner_id = 0; } G_OBJECT_CLASS (pt_dbus_service_parent_class)->dispose (object); } static void pt_dbus_service_class_init (PtDbusServiceClass *klass) { G_OBJECT_CLASS (klass)->dispose = pt_dbus_service_dispose; } PtDbusService * pt_dbus_service_new (PtWindow *win) { return g_object_new (PT_DBUS_SERVICE_TYPE, "win", win, NULL); } parlatype-3.0/src/pt-dbus-service.h000066400000000000000000000030661414030451500173330ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2016, 2019 * * 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 . */ #ifndef PT_DBUS_SERVICE_H #define PT_DBUS_SERVICE_H #include "config.h" #include "pt-controller.h" #include "pt-window.h" #define PT_DBUS_SERVICE_TYPE (pt_dbus_service_get_type()) #define PT_DBUS_SERVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PT_DBUS_SERVICE_TYPE, PtDbusService)) #define PT_IS_DBUS_SERVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PT_DBUS_SERVICE_TYPE)) typedef struct _PtDbusService PtDbusService; typedef struct _PtDbusServiceClass PtDbusServiceClass; typedef struct _PtDbusServicePrivate PtDbusServicePrivate; struct _PtDbusService { PtController parent; /*< private > */ PtDbusServicePrivate *priv; }; struct _PtDbusServiceClass { PtControllerClass parent_class; }; GType pt_dbus_service_get_type (void) G_GNUC_CONST; void pt_dbus_service_start (PtDbusService *self); PtDbusService *pt_dbus_service_new (PtWindow *win); #endif parlatype-3.0/src/pt-goto-dialog.c000066400000000000000000000116531414030451500171410ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2016 * * Based on Totem, string_to_time() almost unchanged, rest modified: * https://git.gnome.org/browse/totem/tree/src/plugins/skipto/totem-time-entry.c?h=gnome-3-14 * * Copyright (C) 2008 Philip Withnall * * 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 . */ #include "config.h" #include #include #include #include "pt-goto-dialog.h" struct _PtGotoDialogPrivate { GtkWidget *spin; GtkWidget *seconds_label; gint max; }; G_DEFINE_TYPE_WITH_PRIVATE (PtGotoDialog, pt_goto_dialog, GTK_TYPE_DIALOG) static gint string_to_time (const char *time_string) { gint sec, min, hour, args; /* Translators: This is a time format, like "2:05:30" for 2 hours, 5 minutes, and 30 seconds. You may change ":" to the separator that your locale uses or use "%Id" instead of "%d" if your locale uses localized digits. */ args = sscanf (time_string, C_("long time format", "%d:%02d:%02d"), &hour, &min, &sec); if (args == 3) { /* Parsed all three arguments successfully */ return (hour * (60 * 60) + min * 60 + sec) * 1000; } else if (args == 2) { /* Only parsed the first two arguments; treat hour and min as min and sec, respectively */ return (hour * 60 + min) * 1000; } else if (args == 1) { /* Only parsed the first argument; treat hour as sec */ return hour * 1000; } else { /* Error! */ return -1; } } static void value_changed_cb (GtkSpinButton *spin, gpointer data) { PtGotoDialog *dlg = (PtGotoDialog *) data; GtkAdjustment *adj; gint value; adj = gtk_spin_button_get_adjustment (spin); value = (gint) gtk_adjustment_get_value (adj); gtk_label_set_label ( GTK_LABEL (dlg->priv->seconds_label), ngettext ("second", "seconds", value)); } static gboolean output_cb (GtkSpinButton *spin, PtGotoDialog *dlg) { gchar *text; if (dlg->priv->max == 0) return GTK_INPUT_ERROR; text = pt_player_get_time_string ( gtk_spin_button_get_value_as_int (spin) * 1000, dlg->priv->max, 0); gtk_entry_set_text (GTK_ENTRY (spin), text); g_free (text); return TRUE; } static gint input_cb (GtkSpinButton *self, gdouble *new_value, gpointer user_data) { gint64 val; val = string_to_time (gtk_entry_get_text (GTK_ENTRY (self))); if (val == -1) return GTK_INPUT_ERROR; *new_value = val / 1000; return TRUE; } static void pt_goto_dialog_init (PtGotoDialog *dlg) { dlg->priv = pt_goto_dialog_get_instance_private (dlg); gtk_widget_init_template (GTK_WIDGET (dlg)); dlg->priv->max = 0; /* make sure seconds label is set and translated */ value_changed_cb (GTK_SPIN_BUTTON (dlg->priv->spin), dlg); } static void pt_goto_dialog_class_init (PtGotoDialogClass *klass) { GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); /* Bind class to template */ gtk_widget_class_set_template_from_resource (widget_class, "/org/parlatype/parlatype/goto-dialog.ui"); gtk_widget_class_bind_template_callback(widget_class, input_cb); gtk_widget_class_bind_template_callback(widget_class, output_cb); gtk_widget_class_bind_template_callback(widget_class, value_changed_cb); gtk_widget_class_bind_template_child_private (widget_class, PtGotoDialog, spin); gtk_widget_class_bind_template_child_private (widget_class, PtGotoDialog, seconds_label); } gint pt_goto_dialog_get_pos (PtGotoDialog *dlg) { return gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (dlg->priv->spin)); } void pt_goto_dialog_set_pos (PtGotoDialog *dlg, gint seconds) { gtk_spin_button_set_value (GTK_SPIN_BUTTON (dlg->priv->spin), (gdouble) seconds); } void pt_goto_dialog_set_max (PtGotoDialog *dlg, gint seconds) { gchar *time_string; guint width; gtk_spin_button_set_range (GTK_SPIN_BUTTON (dlg->priv->spin), 0, (gdouble) seconds); dlg->priv->max = seconds * 1000; /* Set the width of the entry according to the length of the longest string it’ll now accept */ time_string = pt_player_get_time_string (dlg->priv->max, dlg->priv->max, 0); width = strlen (time_string); g_free (time_string); gtk_entry_set_width_chars (GTK_ENTRY (dlg->priv->spin), width); } PtGotoDialog * pt_goto_dialog_new (GtkWindow *win) { return g_object_new ( PT_TYPE_GOTO_DIALOG, "use-header-bar", TRUE, "transient-for", win, NULL); } parlatype-3.0/src/pt-goto-dialog.h000066400000000000000000000030721414030451500171420ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2016 * * 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 . */ #ifndef PT_GOTO_DIALOG_H #define PT_GOTO_DIALOG_H #include "config.h" #define PT_TYPE_GOTO_DIALOG (pt_goto_dialog_get_type()) #define PT_GOTO_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PT_TYPE_GOTO_DIALOG, PtGotoDialog)) typedef struct _PtGotoDialog PtGotoDialog; typedef struct _PtGotoDialogClass PtGotoDialogClass; typedef struct _PtGotoDialogPrivate PtGotoDialogPrivate; struct _PtGotoDialog { GtkDialog dialog; /*< private > */ PtGotoDialogPrivate *priv; }; struct _PtGotoDialogClass { GtkDialogClass parent_class; }; GType pt_goto_dialog_get_type (void) G_GNUC_CONST; gint pt_goto_dialog_get_pos (PtGotoDialog *dlg); void pt_goto_dialog_set_pos (PtGotoDialog *dlg, gint seconds); void pt_goto_dialog_set_max (PtGotoDialog *dlg, gint seconds); PtGotoDialog *pt_goto_dialog_new (GtkWindow *win); #endif parlatype-3.0/src/pt-mediakeys.c000066400000000000000000000127321414030451500167060ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2016, 2019 * * 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 . */ #include "config.h" #include #include "pt-window.h" #include "pt-mediakeys.h" struct _PtMediakeysPrivate { GDBusProxy *proxy; gint dbus_watch_id; }; G_DEFINE_TYPE_WITH_PRIVATE (PtMediakeys, pt_mediakeys, PT_CONTROLLER_TYPE) static void on_media_key_pressed (GDBusProxy *proxy, gchar *sender_name, gchar *signal_name, GVariant *parameters, PtMediakeys *self) { GVariant *app_parameter; GVariant *key_parameter; const gchar *app; const gchar *key; PtPlayer *player = pt_controller_get_player (PT_CONTROLLER (self)); if (g_strcmp0 (signal_name, "MediaPlayerKeyPressed") != 0) return; app_parameter = g_variant_get_child_value (parameters, 0); app = g_variant_get_string (app_parameter, NULL); if (g_strcmp0 (app, "Parlatype") != 0) return; key_parameter = g_variant_get_child_value (parameters, 1); key = g_variant_get_string (key_parameter, NULL); if (g_strcmp0 (key, "Play") == 0 || g_strcmp0 (key, "Pause") == 0 || g_strcmp0 (key, "Stop") == 0) { pt_player_play_pause (player); } if (g_strcmp0 (key, "Previous") == 0 || g_strcmp0 (key, "Rewind") == 0) { pt_player_jump_back (player); return; } if (g_strcmp0 (key, "Next") == 0 || g_strcmp0 (key, "FastForward") == 0) { pt_player_jump_forward (player); } } static void proxy_call_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) { GVariant *variant; GError *error = NULL; variant = g_dbus_proxy_call_finish (G_DBUS_PROXY (source_object), res, &error); if (error) { g_warning ("Failed to call media keys proxy: %s", error->message); g_error_free (error); } else { g_variant_unref (variant); } } static void grab_mediakeys (PtMediakeys *self) { if (!self->priv->proxy) return; g_dbus_proxy_call ( self->priv->proxy, "GrabMediaPlayerKeys", g_variant_new ("(su)", "Parlatype", 0), G_DBUS_CALL_FLAGS_NONE, -1, NULL, proxy_call_cb, NULL); // user_data } static gboolean window_focus_in_event_cb (GtkWidget *widget, GdkEventFocus *event, PtMediakeys *self) { grab_mediakeys (self); return FALSE; } static void remove_bus_watch (PtMediakeys *self) { if (self->priv->dbus_watch_id != 0) { g_bus_unwatch_name (self->priv->dbus_watch_id); self->priv->dbus_watch_id = 0; } } static void name_appeared_cb (GDBusConnection *connection, const gchar *name, const gchar *name_owner, PtMediakeys *self) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "MESSAGE", "Found %s", name); GError *error = NULL; self->priv->proxy = g_dbus_proxy_new_for_bus_sync ( G_BUS_TYPE_SESSION, G_DBUS_PROXY_FLAGS_NONE, NULL, name, "/org/gnome/SettingsDaemon/MediaKeys", "org.gnome.SettingsDaemon.MediaKeys", NULL, &error); if (error) { g_warning ("Couldn’t create proxy for %s: %s", name, error->message); g_error_free (error); return; } grab_mediakeys (self); g_signal_connect ( self->priv->proxy, "g-signal", G_CALLBACK (on_media_key_pressed), self); g_signal_connect ( G_OBJECT (pt_controller_get_window (PT_CONTROLLER (self))), "focus-in-event", G_CALLBACK (window_focus_in_event_cb), self); remove_bus_watch (self); } static void name_vanished_cb (GDBusConnection *connection, const gchar *name, PtMediakeys *self) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Couldn’t find %s", name); if (self->priv->proxy) { g_object_unref (self->priv->proxy); self->priv->proxy = NULL; } remove_bus_watch (self); } void pt_mediakeys_start (PtMediakeys *self) { /* watch for GNOME settings daemon and stop watching immediatetly after because we don’t assume this will change later on */ self->priv->dbus_watch_id = g_bus_watch_name ( G_BUS_TYPE_SESSION, "org.gnome.SettingsDaemon.MediaKeys", G_BUS_NAME_WATCHER_FLAGS_NONE, (GBusNameAppearedCallback) name_appeared_cb, (GBusNameVanishedCallback) name_vanished_cb, self, NULL); } static void pt_mediakeys_init (PtMediakeys *self) { self->priv = pt_mediakeys_get_instance_private (self); self->priv->proxy = NULL; self->priv->dbus_watch_id = 0; } static void pt_mediakeys_dispose (GObject *object) { PtMediakeys *self = PT_MEDIAKEYS (object); g_clear_object (&self->priv->proxy); G_OBJECT_CLASS (pt_mediakeys_parent_class)->dispose (object); } static void pt_mediakeys_class_init (PtMediakeysClass *klass) { G_OBJECT_CLASS (klass)->dispose = pt_mediakeys_dispose; } PtMediakeys * pt_mediakeys_new (PtWindow *win) { return g_object_new (PT_MEDIAKEYS_TYPE, "win", win, NULL); } parlatype-3.0/src/pt-mediakeys.h000066400000000000000000000071631414030451500167150ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2016, 2019 * * 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 . */ /* Grabbing media keys from Gnome Settings Daemon. * The following is a citation from: * https://git.gnome.org/browse/gnome-settings-daemon/tree/plugins/media-keys/README.media-keys-API?h=gnome-3-14 This is very simple documentation to gnome-settings-daemon’s D-Bus API for media players. gnome-settings-daemon will send key press events from multimedia keys to applications that register their interest in those events. This allows the play/pause button to control an audio player that’s not focused for example. The D-Bus API is described in gsd-media-keys-manager.c (look for introspection_xml), but a small explanation follows here. 1. Create yourself a proxy object for the remote interface: Object path: /org/gnome/SettingsDaemon/MediaKeys D-Bus name: org.gnome.SettingsDaemon.MediaKeys Interface name: org.gnome.SettingsDaemon.MediaKeys 2. Register your application with gnome-settings-daemon GrabMediaPlayerKeys ("my-application", 0) with the second argument being the current time (usually 0, or the time passed to you from an event, such as a mouse click) 3. Listen to the MediaPlayerKeyPressed() signal 4. When receiving a MediaPlayerKeyPressed() signal, check whether the first argument (application) matches the value you passed to GrabMediaPlayerKeys() and apply the action depending on the key (2nd argument) Possible values of key are: - Play - Pause - Stop - Previous - Next - Rewind - FastForward - Repeat - Shuffle 5. Every time your application is focused, you should call GrabMediaPlayerKeys() again, so that gnome-settings-daemon knows which one was last used. This allows switching between a movie player and a music player, for example, and have the buttons control the last used application. 6. When your application wants to stop using the functionality it can call ReleaseMediaPlayerKeys(). If your application does not call ReleaseMediaPlayerKeys() and releases its D-Bus connection then the application will be automatically removed from the list of applications held by gnome-settings-daemon. */ #ifndef PT_MEDIAKEYS_H #define PT_MEDIAKEYS_H #include "config.h" #include "pt-controller.h" #include "pt-window.h" #define PT_MEDIAKEYS_TYPE (pt_mediakeys_get_type()) #define PT_MEDIAKEYS(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PT_MEDIAKEYS_TYPE, PtMediakeys)) #define PT_IS_MEDIAKEYS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PT_MEDIAKEYS_TYPE)) typedef struct _PtMediakeys PtMediakeys; typedef struct _PtMediakeysClass PtMediakeysClass; typedef struct _PtMediakeysPrivate PtMediakeysPrivate; struct _PtMediakeys { PtController parent; /*< private > */ PtMediakeysPrivate *priv; }; struct _PtMediakeysClass { PtControllerClass parent_class; }; GType pt_mediakeys_get_type (void) G_GNUC_CONST; void pt_mediakeys_start (PtMediakeys *self); PtMediakeys *pt_mediakeys_new (PtWindow *win); #endif parlatype-3.0/src/pt-preferences.c000066400000000000000000000316751414030451500172430ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2016, 2018, 2019 * * 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 . */ #include "config.h" #include #include #ifdef GDK_WINDOWING_X11 #include #endif #ifdef GDK_WINDOWING_WAYLAND #include #endif #include #include "pt-app.h" #include "pt-prefs-asr.h" #include "pt-preferences.h" #define EXAMPLE_TIME_SHORT 471123 #define EXAMPLE_TIME_LONG 4071123 static GtkWidget *preferences_dialog = NULL; struct _PtPreferencesDialogPrivate { GSettings *editor; PtPlayer *player; GtkWidget *notebook; /* Waveform tab */ GtkWidget *pps_scale; GtkWidget *ruler_check; GtkWidget *fixed_cursor_radio; /* Controls tab */ GtkWidget *spin_pause; GtkWidget *spin_back; GtkWidget *spin_forward; GtkWidget *label_pause; GtkWidget *label_back; GtkWidget *label_forward; GtkWidget *repeat_all_checkbox; GtkWidget *repeat_selection_checkbox; /* Window tab */ GtkWidget *size_check; GtkWidget *pos_check; GtkWidget *top_check; /* Timestamps tab */ GtkWidget *precision_combo; GtkWidget *separator_combo; GtkWidget *delimiter_combo; GtkWidget *hours_check; GtkWidget *label_example1; GtkWidget *label_example2; }; G_DEFINE_TYPE_WITH_PRIVATE (PtPreferencesDialog, pt_preferences_dialog, GTK_TYPE_DIALOG) static void spin_back_changed_cb (GtkSpinButton *spin, PtPreferencesDialog *dlg) { gtk_label_set_label ( GTK_LABEL (dlg->priv->label_back), /* Translators: This is part of the Preferences dialog or the "Go to ..." dialog. There is a label like "Jump back:", "Jump forward:", "Jump back on pause:" or "Go to position:" before. */ ngettext ("second", "seconds", (int) gtk_spin_button_get_value_as_int (spin))); } static void spin_forward_changed_cb (GtkSpinButton *spin, PtPreferencesDialog *dlg) { gtk_label_set_label ( GTK_LABEL (dlg->priv->label_forward), ngettext ("second", "seconds", (int) gtk_spin_button_get_value_as_int (spin))); } static void spin_pause_changed_cb (GtkSpinButton *spin, PtPreferencesDialog *dlg) { gtk_label_set_label ( GTK_LABEL (dlg->priv->label_pause), ngettext ("second", "seconds", (int) gtk_spin_button_get_value_as_int (spin))); } static void update_example_timestamps (PtPreferencesDialog *dlg) { gchar *example1; gchar *example2; example1 = pt_player_get_timestamp_for_time (dlg->priv->player, EXAMPLE_TIME_SHORT, EXAMPLE_TIME_SHORT); example2 = pt_player_get_timestamp_for_time (dlg->priv->player, EXAMPLE_TIME_LONG, EXAMPLE_TIME_LONG); gtk_label_set_text (GTK_LABEL (dlg->priv->label_example1), example1); gtk_label_set_text (GTK_LABEL (dlg->priv->label_example2), example2); g_free (example1); g_free (example2); } static void hours_check_toggled (GtkToggleButton *check, PtPreferencesDialog *dlg) { g_settings_set_boolean ( dlg->priv->editor, "timestamp-fixed", gtk_toggle_button_get_active (check)); update_example_timestamps (dlg); } static void delimiter_combo_changed (GtkComboBox *widget, PtPreferencesDialog *dlg) { g_settings_set_string ( dlg->priv->editor, "timestamp-delimiter", gtk_combo_box_get_active_id (widget)); update_example_timestamps (dlg); } static void separator_combo_changed (GtkComboBox *widget, PtPreferencesDialog *dlg) { g_settings_set_string ( dlg->priv->editor, "timestamp-fraction-sep", gtk_combo_box_get_active_id (widget)); update_example_timestamps (dlg); } static void precision_combo_changed (GtkComboBox *widget, PtPreferencesDialog *dlg) { gint precision = gtk_combo_box_get_active (widget); g_settings_set_int ( dlg->priv->editor, "timestamp-precision", precision); gtk_widget_set_sensitive (dlg->priv->separator_combo, (precision == 0) ? FALSE : TRUE); update_example_timestamps (dlg); } static void setup_non_wayland_env (PtPreferencesDialog *dlg) { g_settings_bind ( dlg->priv->editor, "remember-position", dlg->priv->pos_check, "active", G_SETTINGS_BIND_DEFAULT); g_settings_bind ( dlg->priv->editor, "start-on-top", dlg->priv->top_check, "active", G_SETTINGS_BIND_DEFAULT); } static void pt_preferences_dialog_init (PtPreferencesDialog *dlg) { GtkWidget *asr_page; GtkWidget *asr_label; dlg->priv = pt_preferences_dialog_get_instance_private (dlg); dlg->priv->editor = g_settings_new (APP_ID); dlg->priv->player = pt_player_new (); gtk_widget_init_template (GTK_WIDGET (dlg)); g_settings_bind ( dlg->priv->editor, "rewind-on-pause", dlg->priv->spin_pause, "value", G_SETTINGS_BIND_DEFAULT); g_settings_bind ( dlg->priv->editor, "jump-back", dlg->priv->spin_back, "value", G_SETTINGS_BIND_DEFAULT); g_settings_bind ( dlg->priv->editor, "jump-forward", dlg->priv->spin_forward, "value", G_SETTINGS_BIND_DEFAULT); g_settings_bind ( dlg->priv->editor, "repeat-all", dlg->priv->repeat_all_checkbox, "active", G_SETTINGS_BIND_DEFAULT); g_settings_bind ( dlg->priv->editor, "repeat-selection", dlg->priv->repeat_selection_checkbox, "active", G_SETTINGS_BIND_DEFAULT); g_settings_bind ( dlg->priv->editor, "remember-size", dlg->priv->size_check, "active", G_SETTINGS_BIND_DEFAULT); #ifdef GDK_WINDOWING_WIN32 setup_non_wayland_env (dlg); #else GdkDisplay *display; display = gdk_display_get_default (); #endif #ifdef GDK_WINDOWING_X11 if (GDK_IS_X11_DISPLAY (display)) setup_non_wayland_env (dlg); #endif #ifdef GDK_WINDOWING_WAYLAND if (GDK_IS_WAYLAND_DISPLAY (display)) { gtk_widget_hide (dlg->priv->pos_check); gtk_widget_hide (dlg->priv->top_check); } #endif g_settings_bind ( dlg->priv->editor, "show-ruler", dlg->priv->ruler_check, "active", G_SETTINGS_BIND_DEFAULT); g_settings_bind ( dlg->priv->editor, "fixed-cursor", dlg->priv->fixed_cursor_radio, "active", G_SETTINGS_BIND_DEFAULT); GtkAdjustment *pps_adj; pps_adj = gtk_range_get_adjustment (GTK_RANGE (dlg->priv->pps_scale)); g_settings_bind ( dlg->priv->editor, "pps", pps_adj, "value", G_SETTINGS_BIND_DEFAULT); GtkScale *scale = GTK_SCALE (dlg->priv->pps_scale); gtk_scale_add_mark (scale, 25, GTK_POS_TOP, NULL); gtk_scale_add_mark (scale, 62.5, GTK_POS_TOP, NULL); gtk_scale_add_mark (scale, 100, GTK_POS_TOP, NULL); gtk_scale_add_mark (scale, 150, GTK_POS_TOP, NULL); gtk_scale_add_mark (scale, 200, GTK_POS_TOP, NULL); /* make sure labels are set and translated */ spin_back_changed_cb (GTK_SPIN_BUTTON (dlg->priv->spin_back), dlg); spin_forward_changed_cb (GTK_SPIN_BUTTON (dlg->priv->spin_forward), dlg); spin_pause_changed_cb (GTK_SPIN_BUTTON (dlg->priv->spin_pause), dlg); /* Bind settings to our player instance for example timestamps */ g_settings_bind ( dlg->priv->editor, "timestamp-precision", dlg->priv->player, "timestamp-precision", G_SETTINGS_BIND_GET); g_settings_bind ( dlg->priv->editor, "timestamp-fixed", dlg->priv->player, "timestamp-fixed", G_SETTINGS_BIND_GET); g_settings_bind ( dlg->priv->editor, "timestamp-delimiter", dlg->priv->player, "timestamp-delimiter", G_SETTINGS_BIND_GET); g_settings_bind ( dlg->priv->editor, "timestamp-fraction-sep", dlg->priv->player, "timestamp-fraction-sep", G_SETTINGS_BIND_GET); /* setup timestamp fields according to settings */ gchar *delimiter = g_settings_get_string (dlg->priv->editor, "timestamp-delimiter"); if (!gtk_combo_box_set_active_id (GTK_COMBO_BOX (dlg->priv->delimiter_combo), delimiter)) { gtk_combo_box_set_active_id (GTK_COMBO_BOX (dlg->priv->delimiter_combo), "#"); } gchar *sep = g_settings_get_string (dlg->priv->editor, "timestamp-fraction-sep"); if (!gtk_combo_box_set_active_id (GTK_COMBO_BOX (dlg->priv->separator_combo), sep)) { gtk_combo_box_set_active_id (GTK_COMBO_BOX (dlg->priv->separator_combo), "."); } gint precision = g_settings_get_int (dlg->priv->editor, "timestamp-precision"); if (precision < 0 || precision > 2) precision = 1; gtk_combo_box_set_active (GTK_COMBO_BOX (dlg->priv->precision_combo), precision); gboolean fixed = g_settings_get_boolean (dlg->priv->editor, "timestamp-fixed"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dlg->priv->hours_check), fixed); g_free (delimiter); g_free (sep); asr_page = pt_prefs_asr_new (dlg->priv->editor, dlg->priv->player); asr_label = gtk_label_new (_("Speech recognition")); gtk_notebook_insert_page (GTK_NOTEBOOK (dlg->priv->notebook), asr_page, asr_label, 3); } static void pt_preferences_dialog_dispose (GObject *object) { PtPreferencesDialog *dlg = PT_PREFERENCES_DIALOG (object); g_clear_object (&dlg->priv->editor); g_clear_object (&dlg->priv->player); G_OBJECT_CLASS (pt_preferences_dialog_parent_class)->dispose (object); } static void pt_preferences_dialog_class_init (PtPreferencesDialogClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = pt_preferences_dialog_dispose; /* Bind class to template */ gtk_widget_class_set_template_from_resource (widget_class, "/org/parlatype/parlatype/preferences.ui"); gtk_widget_class_bind_template_callback(widget_class, delimiter_combo_changed); gtk_widget_class_bind_template_callback(widget_class, hours_check_toggled); gtk_widget_class_bind_template_callback(widget_class, precision_combo_changed); gtk_widget_class_bind_template_callback(widget_class, separator_combo_changed); gtk_widget_class_bind_template_callback(widget_class, spin_back_changed_cb); gtk_widget_class_bind_template_callback(widget_class, spin_forward_changed_cb); gtk_widget_class_bind_template_callback(widget_class, spin_pause_changed_cb); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, notebook); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, spin_pause); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, spin_back); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, spin_forward); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, repeat_all_checkbox); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, repeat_selection_checkbox); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, pps_scale); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, size_check); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, pos_check); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, top_check); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, label_pause); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, label_back); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, label_forward); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, ruler_check); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, fixed_cursor_radio); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, precision_combo); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, separator_combo); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, delimiter_combo); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, hours_check); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, label_example1); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, label_example2); } void pt_show_preferences_dialog (GtkWindow *parent) { if (preferences_dialog == NULL) { preferences_dialog = GTK_WIDGET (g_object_new (PT_TYPE_PREFERENCES_DIALOG, "use-header-bar", TRUE, NULL)); g_signal_connect (preferences_dialog, "destroy", G_CALLBACK (gtk_widget_destroyed), &preferences_dialog); } if (parent != gtk_window_get_transient_for (GTK_WINDOW (preferences_dialog))) { gtk_window_set_transient_for (GTK_WINDOW (preferences_dialog), GTK_WINDOW (parent)); gtk_window_set_modal (GTK_WINDOW (preferences_dialog), FALSE); gtk_window_set_destroy_with_parent (GTK_WINDOW (preferences_dialog), TRUE); } gtk_window_present (GTK_WINDOW (preferences_dialog)); } parlatype-3.0/src/pt-preferences.h000066400000000000000000000027751414030451500172470ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2016 * * 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 . */ /* This is the preferences dialog */ #ifndef PT_PREFERENCES_H #define PT_PREFERENCES_H #include "config.h" #define PT_TYPE_PREFERENCES_DIALOG (pt_preferences_dialog_get_type()) #define PT_PREFERENCES_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PT_TYPE_PREFERENCES_DIALOG, PtPreferencesDialog)) typedef struct _PtPreferencesDialog PtPreferencesDialog; typedef struct _PtPreferencesDialogClass PtPreferencesDialogClass; typedef struct _PtPreferencesDialogPrivate PtPreferencesDialogPrivate; struct _PtPreferencesDialog { GtkDialog dialog; /*< private > */ PtPreferencesDialogPrivate *priv; }; struct _PtPreferencesDialogClass { GtkDialogClass parent_class; }; GType pt_preferences_dialog_get_type (void) G_GNUC_CONST; void pt_show_preferences_dialog (GtkWindow *parent); #endif parlatype-3.0/src/pt-prefs-asr.c000066400000000000000000000700711414030451500166350ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2021 * * 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 . */ #include "config.h" #include #include #include #include "pt-app.h" #include "pt-asr-dialog.h" #include "pt-config-row.h" #include "pt-preferences.h" #include "pt-prefs-asr.h" struct _PtPrefsAsrPrivate { GSettings *editor; PtPlayer *player; GFile *config_folder; GtkWidget *filter_combo; GtkWidget *asr_list; GtkWidget *remove_button; GtkWidget *details_button; GtkWidget *asr_initial_box; GtkWidget *asr_ready_box; GtkWidget *asr_error_box; GtkWidget *asr_error_label; GtkWidget *no_result_box; int filter; }; G_DEFINE_TYPE_WITH_PRIVATE (PtPrefsAsr, pt_prefs_asr, GTK_TYPE_BOX) static void config_activated (GObject *object, GParamSpec *spec, gpointer user_data); static void block_rows (GtkWidget *widget, gpointer user_data) { PtPrefsAsr *page = PT_PREFS_ASR (user_data); g_signal_handlers_block_by_func (widget, config_activated, page); } static void unblock_rows (GtkWidget *widget, gpointer user_data) { PtPrefsAsr *page = PT_PREFS_ASR (user_data); g_signal_handlers_unblock_by_func (widget, config_activated, page); } static void set_active_row (GtkWidget *widget, gpointer user_data) { GtkWidget *active_widget = GTK_WIDGET (user_data); gboolean active; active = (widget == active_widget); pt_config_row_set_active (PT_CONFIG_ROW (widget), active); } static void config_activated (GObject *object, GParamSpec *spec, gpointer user_data) { PtPrefsAsr *page = PT_PREFS_ASR (user_data); PtConfigRow *row = PT_CONFIG_ROW (object); GtkContainer *box = GTK_CONTAINER (page->priv->asr_list); PtConfig *config; GFile *file; gchar *path; g_object_get (row, "config", &config, NULL); /* Only one row can be active, so set all others to inactive. * Setting another row inactive would emit a signal and the whole * procedure would start again, so block all signals for now. */ gtk_container_foreach (box, block_rows, page); if (pt_config_row_get_active (row)) { file = pt_config_get_file (config); path = g_file_get_path (file); g_settings_set_string (page->priv->editor, "asr-config", path); g_free (path); gtk_container_foreach (box, set_active_row, row); } else { g_settings_set_string (page->priv->editor, "asr-config", ""); gtk_container_foreach (box, set_active_row, NULL); } gtk_container_foreach (box, unblock_rows, page); g_object_unref (config); } static void asr_list_row_activated (GtkListBox *box, GtkListBoxRow *box_row, gpointer user_data) { PtConfigRow *row = PT_CONFIG_ROW (box_row); PtConfig *config; g_object_get (row, "config", &config, NULL); if (pt_config_row_get_active (row)) { pt_config_row_set_active (row, FALSE); } else { if (pt_config_is_installed (config)) { pt_config_row_set_active (row, TRUE); } } g_object_unref (config); } static void asr_list_changed_cb (GtkContainer *asr_list, GtkWidget *row, gpointer user_data) { PtPrefsAsr *page = PT_PREFS_ASR (user_data); GList *children; children = gtk_container_get_children (asr_list); if (children) { gtk_widget_show (page->priv->asr_ready_box); gtk_widget_hide (page->priv->asr_initial_box); } else { gtk_widget_hide (page->priv->asr_ready_box); gtk_widget_show (page->priv->asr_initial_box); } g_list_free (children); } static int sort_asr_list (GtkListBoxRow *row1, GtkListBoxRow *row2, gpointer user_data) { /* 1st sort order: 1) Installed * 2) Supported * 3) Not supported */ int left = 0; int right = 0; int comp; PtConfig *conf1, *conf2; gchar *str1, *str2; const gchar* const *langs; gboolean prefix1, prefix2; if (pt_config_row_get_supported (PT_CONFIG_ROW (row1))) left = 1; if (pt_config_row_is_installed (PT_CONFIG_ROW (row1)) && left == 1) left = 2; if (pt_config_row_get_active (PT_CONFIG_ROW (row1))) left = 3; if (pt_config_row_get_supported (PT_CONFIG_ROW (row2))) right = 1; if (pt_config_row_is_installed (PT_CONFIG_ROW (row2)) && right == 1) right = 2; if (pt_config_row_get_active (PT_CONFIG_ROW (row2))) right = 3; if (left > right) return -1; if (left < right) return 1; /* 2nd sort order: Own locale language before other languages */ g_object_get (row1, "config", &conf1, NULL); g_object_get (row2, "config", &conf2, NULL); langs = g_get_language_names (); /* TODO: cache */ if (langs[0]) { str1 = pt_config_get_lang_code (conf1); str2 = pt_config_get_lang_code (conf2); prefix1 = g_str_has_prefix (langs[0], str1); prefix2 = g_str_has_prefix (langs[0], str2); comp = 0; if (prefix1 && !prefix2) comp = -1; if (!prefix1 && prefix2) comp = 1; if (comp != 0) { g_object_unref (conf1); g_object_unref (conf2); return comp; } } /* 3rd sort order: Alphabetically by language name */ str1 = pt_config_get_lang_name (conf1); str2 = pt_config_get_lang_name (conf2); comp = g_strcmp0 (str1, str2); if (comp != 0) { g_object_unref (conf1); g_object_unref (conf2); return comp; } /* 4th sort order: Alphabetically by name */ str1 = pt_config_get_name (conf1); str2 = pt_config_get_name (conf2); comp = g_strcmp0 (str1, str2); g_object_unref (conf1); g_object_unref (conf2); return comp; } static gboolean filter_asr_list (GtkListBoxRow *row, gpointer user_data) { PtPrefsAsr *page = PT_PREFS_ASR (user_data); gboolean supported = TRUE; int filter; filter = page->priv->filter; /* Filters: 0 ... installed * 1 ... supported * 2 ... all */ /* Filter installed and supported * Theoretically a model can be installed, but not supported */ if (filter <= 1) supported = pt_config_row_get_supported (PT_CONFIG_ROW (row)); /* Filter installed */ if (filter == 0) { if (!supported) return FALSE; else return pt_config_row_is_installed (PT_CONFIG_ROW (row)); } /* Filter supported */ if (filter == 1) return supported; /* All other rows are visible */ return TRUE; } /*static void add_config_row (PtPrefsAsr *page, PtConfig *config, gboolean active) { PtConfigRow *row; row = pt_config_row_new (config); pt_config_row_set_supported (row, pt_player_config_is_loadable (page->priv->player, config)); gtk_widget_show (GTK_WIDGET (row)); gtk_container_add (page->priv->asr_list, GTK_WIDGET (row)); if (active) pt_config_row_set_active (row, TRUE); g_signal_connect (row, "notify::active", G_CALLBACK (config_activated), page); }*/ static void asr_setup_config_box (PtPrefsAsr *page) { GError *error = NULL; PtConfig *config; gchar *path; GFile *file; GFileEnumerator *files; PtConfigRow *row; gchar *active_asr; gboolean active_found = FALSE; int num_valid = 0; GtkContainer *asr_list = GTK_CONTAINER (page->priv->asr_list); active_asr = g_settings_get_string (page->priv->editor, "asr-config"); if (g_strcmp0 (active_asr, "") == 0) { g_free (active_asr); active_asr = NULL; } files = g_file_enumerate_children (page->priv->config_folder, G_FILE_ATTRIBUTE_STANDARD_NAME, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, NULL, /* cancellable */ &error); while (!error) { GFileInfo *info; if (!g_file_enumerator_iterate (files, &info, &file, NULL, &error)) break; if (!info) break; path = g_file_get_path (file); if (g_str_has_suffix (path, ".asr")) { config = pt_config_new (file); if (pt_config_is_valid (config)) { num_valid++; row = pt_config_row_new (config); pt_config_row_set_supported (row, pt_player_config_is_loadable (page->priv->player, config)); gtk_widget_show (GTK_WIDGET (row)); gtk_container_add (asr_list, GTK_WIDGET (row)); if (active_asr && g_strcmp0 (active_asr, path) == 0) { pt_config_row_set_active (row, TRUE); active_found = TRUE; } g_signal_connect (row, "notify::active", G_CALLBACK (config_activated), page); } else { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "MESSAGE", "File %s is not valid", path); } g_object_unref (config); } g_free (path); } if (active_asr && !active_found) g_settings_set_string (page->priv->editor, "asr-config", ""); g_clear_object (&files); g_free (active_asr); gtk_list_box_set_filter_func (GTK_LIST_BOX (asr_list), filter_asr_list, page, NULL); gtk_list_box_set_sort_func (GTK_LIST_BOX (asr_list), sort_asr_list, NULL, NULL); if (error || num_valid == 0) { gtk_widget_hide (page->priv->asr_ready_box); if (error) { gtk_widget_show (page->priv->asr_error_box); gtk_label_set_text (GTK_LABEL (page->priv->asr_error_label), _("Failed to read personal configuration files")); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "%s", error->message); g_error_free (error); } else { gtk_widget_show (page->priv->asr_initial_box); } } else { asr_list_changed_cb (asr_list, NULL, page); } } static gboolean copy_asr_configs_finish (GObject *source_object, GAsyncResult *res, GError **error) { g_return_val_if_fail (g_task_is_valid (res, source_object), FALSE); return g_task_propagate_boolean (G_TASK (res), error); } static void copy_asr_configs_result (GObject *source_object, GAsyncResult *res, gpointer user_data) { PtPrefsAsr *page = PT_PREFS_ASR (user_data); GError *error = NULL; if (copy_asr_configs_finish (source_object, res, &error)) { g_signal_handlers_block_by_func (page->priv->asr_list, asr_list_changed_cb, page); asr_setup_config_box (page); g_signal_handlers_unblock_by_func (page->priv->asr_list, asr_list_changed_cb, page); } else { gtk_widget_hide (page->priv->asr_initial_box); gtk_widget_hide (page->priv->asr_ready_box); gtk_widget_show (page->priv->asr_error_box); gtk_label_set_text (GTK_LABEL (page->priv->asr_error_label), _("Failed to copy shipped configuration files")); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "%s", error->message); g_error_free (error); } } static void copy_asr_configs (GTask *task, gpointer source_object, gpointer task_data, GCancellable *cancellable) { PtPrefsAsr *page = PT_PREFS_ASR (source_object); gchar *basename; gchar *dest_folder_path; gchar *dest_path; GFile *source; GFile *dest; GFile *sys_folder; GFileEnumerator *files; GError *error = NULL; sys_folder = g_file_new_for_path (ASR_DIR); /* in config.h */ dest_folder_path = g_file_get_path (page->priv->config_folder); files = g_file_enumerate_children (sys_folder, G_FILE_ATTRIBUTE_STANDARD_NAME, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, NULL, /* cancellable */ &error); while (!error) { GFileInfo *info; if (!g_file_enumerator_iterate (files, &info, /* no free necessary */ &source,/* no free necessary */ NULL, /* cancellable */ &error)) /* this is an error */ break; if (!info) /* this is the end of enumeration */ break; basename = g_file_get_basename (source); if (g_str_has_suffix (basename, ".asr")) { dest_path = g_build_path (G_DIR_SEPARATOR_S, dest_folder_path, basename, NULL); dest = g_file_new_for_path (dest_path); g_file_copy (source, dest, G_FILE_COPY_TARGET_DEFAULT_PERMS, NULL, /* cancellable */ NULL, /* progress callback */ NULL, /* progress callback data */ &error); g_free (dest_path); g_object_unref (dest); if (error && g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS)) { g_clear_error (&error); } } g_free (basename); } g_clear_object (&files); g_object_unref (sys_folder); g_free (dest_folder_path); if (error) g_task_return_error (task, error); else g_task_return_boolean (task, TRUE); } static void initial_asr_button_clicked_cb (GtkButton *button, PtPrefsAsr *page) { GTask *task; task = g_task_new (page, /* source object */ NULL, /* cancellable */ copy_asr_configs_result, page); /* user_data */ g_task_run_in_thread (task, copy_asr_configs); g_object_unref (task); } static void file_delete_finished (GObject *source_object, GAsyncResult *res, gpointer user_data) { PtConfigRow *row = PT_CONFIG_ROW (user_data); GFile *file = G_FILE (source_object); GError *error = NULL; GtkWidget *dialog; GtkWidget *parent; if (g_file_delete_finish (file, res, &error)) { if (pt_config_row_get_active (row)) pt_config_row_set_active (row, FALSE); gtk_widget_destroy (GTK_WIDGET (row)); } else { parent = gtk_widget_get_ancestor (GTK_WIDGET (row), PT_TYPE_PREFERENCES_DIALOG); dialog = gtk_message_dialog_new ( GTK_WINDOW (parent), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Error deleting configuration"); gtk_message_dialog_format_secondary_text ( GTK_MESSAGE_DIALOG (dialog), "%s", error->message); g_signal_connect_swapped (dialog, "response", G_CALLBACK (gtk_widget_destroy), dialog); gtk_widget_show_all (dialog); g_error_free (error); } } static void confirm_delete_response_cb (GtkDialog *dialog, gint response_id, gpointer user_data) { PtConfigRow *row = PT_CONFIG_ROW (user_data); PtConfig *config; GFile *file; gtk_widget_destroy (GTK_WIDGET (dialog)); if (response_id != GTK_RESPONSE_YES) return; g_object_get (row, "config", &config, NULL); file = pt_config_get_file (config); g_file_delete_async (file, G_PRIORITY_DEFAULT, NULL, /* cancellable */ file_delete_finished, row); } static void confirm_delete (PtConfigRow *row) { PtConfig *config; GtkWidget *dialog; GtkWidget *parent; GtkWidget *yes_button; GtkStyleContext *context; gchar *message; gchar *secondary_message; gchar *name; g_object_get (row, "config", &config, NULL); name = pt_config_get_name (config); parent = gtk_widget_get_ancestor (GTK_WIDGET (row), PT_TYPE_PREFERENCES_DIALOG); message = _("Delete language model configuration?"); secondary_message = g_strdup_printf (_("Do you really want to delete “%s”?"), name); dialog = gtk_message_dialog_new (GTK_WINDOW (parent), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, "%s", message); /* Add secondary message and buttons, mark Yes-Button as destructive */ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), "%s", secondary_message); gtk_dialog_add_button (GTK_DIALOG (dialog), _("_Cancel"), GTK_RESPONSE_CANCEL); yes_button = gtk_dialog_add_button (GTK_DIALOG (dialog), _("_Yes"), GTK_RESPONSE_YES); context = gtk_widget_get_style_context (yes_button); gtk_style_context_add_class (context, "destructive-action"); g_signal_connect (dialog, "response", G_CALLBACK (confirm_delete_response_cb), row); gtk_widget_show_all (dialog); g_free (secondary_message); } static void remove_button_clicked_cb (GtkButton *button, gpointer user_data) { PtPrefsAsr *page = PT_PREFS_ASR (user_data); PtConfigRow *row; row = PT_CONFIG_ROW (gtk_list_box_get_selected_row (GTK_LIST_BOX (page->priv->asr_list))); if (!row) return; confirm_delete (row); } static void details_button_clicked_cb (GtkButton *button, gpointer user_data) { PtPrefsAsr *page = PT_PREFS_ASR (user_data); PtConfigRow *row; PtConfig *config; row = PT_CONFIG_ROW (gtk_list_box_get_selected_row (GTK_LIST_BOX (page->priv->asr_list))); if (!row) return; g_object_get (row, "config", &config, NULL); GtkWidget *parent = gtk_widget_get_ancestor (GTK_WIDGET (button), PT_TYPE_PREFERENCES_DIALOG); PtAsrDialog *dlg = pt_asr_dialog_new (GTK_WINDOW (parent)); gtk_widget_show_all (GTK_WIDGET (dlg)); pt_asr_dialog_set_config (dlg, config); } static void import_copy_ready_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) { PtPrefsAsr *page = PT_PREFS_ASR (user_data); GFile *file = G_FILE (source_object); GError *error = NULL; gboolean success; PtConfig *config; PtConfigRow *row; GtkWidget *parent; GtkWidget *err_dialog; success = g_file_copy_finish (file, res, &error); if (success) { config = pt_config_new (file); row = pt_config_row_new (config); pt_config_row_set_supported (row, pt_player_config_is_loadable (page->priv->player, config)); gtk_widget_show (GTK_WIDGET (row)); gtk_container_add (GTK_CONTAINER (page->priv->asr_list), GTK_WIDGET (row)); g_signal_connect (row, "notify::active", G_CALLBACK (config_activated), page); } else { parent = gtk_widget_get_ancestor (GTK_WIDGET (page), PT_TYPE_PREFERENCES_DIALOG); err_dialog = gtk_message_dialog_new ( GTK_WINDOW (parent), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Error")); gtk_message_dialog_format_secondary_text ( GTK_MESSAGE_DIALOG (err_dialog), "%s", error->message); g_signal_connect_swapped (err_dialog, "response", G_CALLBACK (gtk_widget_destroy), err_dialog); gtk_widget_show_all (err_dialog); g_error_free (error); } } static void import_dialog_response_cb (GtkDialog *dialog, gint response_id, gpointer user_data) { PtPrefsAsr *page = PT_PREFS_ASR (user_data); gchar *uri = NULL; GFile *source; PtConfig *config; GtkWidget *parent; GtkWidget *err_dialog; gchar *dest_folder_path; gchar *basename; gchar *dest_path; GFile *dest; if (response_id == GTK_RESPONSE_ACCEPT) { uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog)); } g_object_unref (dialog); if (!uri) return; source = g_file_new_for_uri (uri); g_free (uri); config = pt_config_new (source); g_object_unref (source); if (!pt_config_is_valid (config)) { parent = gtk_widget_get_ancestor (GTK_WIDGET (page), PT_TYPE_PREFERENCES_DIALOG); err_dialog = gtk_message_dialog_new ( GTK_WINDOW (parent), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _("Error")); gtk_message_dialog_format_secondary_text ( GTK_MESSAGE_DIALOG (err_dialog), _("The file is not a valid language model configuration.")); g_signal_connect_swapped (err_dialog, "response", G_CALLBACK (gtk_widget_destroy), err_dialog); gtk_widget_show_all (err_dialog); g_object_unref (config); return; } dest_folder_path = g_file_get_path (page->priv->config_folder); basename = g_file_get_basename (source); dest_path = g_build_path (G_DIR_SEPARATOR_S, dest_folder_path, basename, NULL); dest = g_file_new_for_path (dest_path); g_file_copy_async ( source, dest, G_FILE_COPY_TARGET_DEFAULT_PERMS, G_PRIORITY_DEFAULT, NULL, /* cancellable */ NULL, NULL, /* progress callback and data*/ import_copy_ready_cb, page); g_object_unref (source); g_object_unref (dest); g_free (basename); g_free (dest_folder_path); g_free (dest_path); } static void import_button_clicked_cb (GtkButton *button, gpointer user_data) { PtPrefsAsr *page = PT_PREFS_ASR (user_data); GtkFileChooserNative *dialog; GtkWidget *parent; const char *home_path; GFile *home; GtkFileFilter *filter_asr; GtkFileFilter *filter_all; parent = gtk_widget_get_ancestor (GTK_WIDGET (button), PT_TYPE_PREFERENCES_DIALOG); dialog = gtk_file_chooser_native_new ( _("Import language model configuration"), GTK_WINDOW (parent), GTK_FILE_CHOOSER_ACTION_OPEN, _("_Open"), _("_Cancel")); /* Set current folder to the user’s home directory */ home_path = g_get_home_dir (); home = g_file_new_for_path (home_path); gtk_file_chooser_set_current_folder_file ( GTK_FILE_CHOOSER (dialog), home, NULL); filter_asr = gtk_file_filter_new (); filter_all = gtk_file_filter_new (); gtk_file_filter_set_name (filter_asr, _("Parlatype language model configurations")); gtk_file_filter_set_name (filter_all, _("All files")); gtk_file_filter_add_pattern (filter_asr, "*.asr"); gtk_file_filter_add_pattern (filter_all, "*"); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter_asr); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter_all); gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dialog), filter_asr); g_signal_connect (dialog, "response", G_CALLBACK (import_dialog_response_cb), page); gtk_native_dialog_show (GTK_NATIVE_DIALOG (dialog)); g_object_unref (home); } static void filter_combo_changed_cb (GtkComboBox *combo, gpointer user_data) { PtPrefsAsr *page = PT_PREFS_ASR (user_data); PtPrefsAsrPrivate *priv = page->priv; priv->filter = gtk_combo_box_get_active (combo); g_settings_set_int (priv->editor, "asr-filter", priv->filter); gtk_list_box_invalidate_filter (GTK_LIST_BOX (priv->asr_list)); } static void make_config_dir_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) { PtPrefsAsr *page = PT_PREFS_ASR (user_data); GFile *config_folder = G_FILE (source_object); GError *error = NULL; gboolean success; success = g_file_make_directory_finish (config_folder, res, &error); if (success || (!success && g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS))) { gtk_widget_hide (page->priv->asr_error_box); asr_setup_config_box (page); g_signal_connect (page->priv->asr_list, "add", G_CALLBACK (asr_list_changed_cb), page); g_signal_connect (page->priv->asr_list, "remove", G_CALLBACK (asr_list_changed_cb), page); } else { gtk_widget_hide (page->priv->asr_initial_box); gtk_widget_hide (page->priv->asr_ready_box); gtk_widget_show (page->priv->asr_error_box); gtk_label_set_text (GTK_LABEL (page->priv->asr_error_label), _("Failed to create personal configuration folder")); g_settings_set_string (page->priv->editor, "asr-config", ""); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "%s", error->message); } g_clear_error (&error); } static void asr_list_row_selected_cb (GtkListBox *box, GtkListBoxRow *row, gpointer user_data) { PtPrefsAsr *page = PT_PREFS_ASR (user_data); gboolean selected; selected = (row != NULL); gtk_widget_set_sensitive (page->priv->remove_button, selected); gtk_widget_set_sensitive (page->priv->details_button, selected); } static void pt_prefs_asr_init (PtPrefsAsr *page) { gchar *path; page->priv = pt_prefs_asr_get_instance_private (page); gtk_widget_init_template (GTK_WIDGET (page)); page->priv->filter = 2; gtk_list_box_set_placeholder (GTK_LIST_BOX (page->priv->asr_list), page->priv->no_result_box); /* make sure config dir exists */ path = g_build_path (G_DIR_SEPARATOR_S, g_get_user_config_dir (), PACKAGE_NAME, NULL); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "config dir: %s", path); page->priv->config_folder = g_file_new_for_path (path); g_free (path); /* init is continued in make_config_dir_cb */ g_file_make_directory_async (page->priv->config_folder, G_PRIORITY_DEFAULT, NULL, /* cancellable */ make_config_dir_cb, page); } static void pt_prefs_asr_dispose (GObject *object) { PtPrefsAsr *page = PT_PREFS_ASR (object); g_clear_object (&page->priv->config_folder); G_OBJECT_CLASS (pt_prefs_asr_parent_class)->dispose (object); } static void pt_prefs_asr_class_init (PtPrefsAsrClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = pt_prefs_asr_dispose; gtk_widget_class_set_template_from_resource (widget_class, "/org/parlatype/parlatype/prefs-asr.ui"); gtk_widget_class_bind_template_callback(widget_class, initial_asr_button_clicked_cb); gtk_widget_class_bind_template_callback(widget_class, asr_list_row_activated); gtk_widget_class_bind_template_callback(widget_class, asr_list_row_selected_cb); gtk_widget_class_bind_template_callback(widget_class, filter_combo_changed_cb); gtk_widget_class_bind_template_callback(widget_class, details_button_clicked_cb); gtk_widget_class_bind_template_callback(widget_class, remove_button_clicked_cb); gtk_widget_class_bind_template_callback(widget_class, import_button_clicked_cb); gtk_widget_class_bind_template_child_private (widget_class, PtPrefsAsr, filter_combo); gtk_widget_class_bind_template_child_private (widget_class, PtPrefsAsr, remove_button); gtk_widget_class_bind_template_child_private (widget_class, PtPrefsAsr, details_button); gtk_widget_class_bind_template_child_private (widget_class, PtPrefsAsr, asr_error_box); gtk_widget_class_bind_template_child_private (widget_class, PtPrefsAsr, asr_initial_box); gtk_widget_class_bind_template_child_private (widget_class, PtPrefsAsr, asr_ready_box); gtk_widget_class_bind_template_child_private (widget_class, PtPrefsAsr, asr_error_label); gtk_widget_class_bind_template_child_private (widget_class, PtPrefsAsr, asr_list); gtk_widget_class_bind_template_child_private (widget_class, PtPrefsAsr, no_result_box); } static void pt_prefs_asr_set_editor (PtPrefsAsr *page, GSettings *editor) { PtPrefsAsrPrivate *priv = page->priv; priv->editor = editor; priv->filter = g_settings_get_int (editor, "asr-filter"); gtk_combo_box_set_active (GTK_COMBO_BOX (priv->filter_combo), priv->filter); } static void pt_prefs_asr_set_player (PtPrefsAsr *page, PtPlayer *player) { page->priv->player = player; } GtkWidget* pt_prefs_asr_new (GSettings *editor, PtPlayer *player) { PtPrefsAsr *asr_page; asr_page = g_object_new (PT_TYPE_PREFS_ASR, NULL); pt_prefs_asr_set_editor (asr_page, editor); pt_prefs_asr_set_player (asr_page, player); return GTK_WIDGET (asr_page); } parlatype-3.0/src/pt-prefs-asr.h000066400000000000000000000025521414030451500166410ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2021 * * 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 . */ #ifndef PT_PREFS_ASR_H #define PT_PREFS_ASR_H #include "config.h" #define PT_TYPE_PREFS_ASR (pt_prefs_asr_get_type()) #define PT_PREFS_ASR(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PT_TYPE_PREFS_ASR, PtPrefsAsr)) typedef struct _PtPrefsAsr PtPrefsAsr; typedef struct _PtPrefsAsrClass PtPrefsAsrClass; typedef struct _PtPrefsAsrPrivate PtPrefsAsrPrivate; struct _PtPrefsAsr { GtkBox parent; /*< private > */ PtPrefsAsrPrivate *priv; }; struct _PtPrefsAsrClass { GtkBoxClass parent_class; }; GType pt_prefs_asr_get_type (void) G_GNUC_CONST; GtkWidget* pt_prefs_asr_new (GSettings *editor, PtPlayer *player); #endif parlatype-3.0/src/pt-win32-datacopy.c000066400000000000000000000135561414030451500175040ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2020 * * 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 . */ #include "config.h" #include #include #include #include "pt-window.h" #include "pt-win32-helpers.h" #include "pt-win32-datacopy.h" struct _PtWin32DatacopyPrivate { HWND hwnd; /* Handle of hidden window */ }; G_DEFINE_TYPE_WITH_PRIVATE (PtWin32Datacopy, pt_win32_datacopy, PT_CONTROLLER_TYPE) static void pt_win32_datacopy_copydata_cb (HWND window, WPARAM sender, LPARAM data, PtWin32Datacopy *self) { PtWindow *ptwin = pt_controller_get_window (PT_CONTROLLER (self)); PtPlayer *player = pt_controller_get_player (PT_CONTROLLER (self)); gchar *timestamp; gchar *senddata; gunichar2 *senddata_utf16; gdouble value; COPYDATASTRUCT *copydata = (COPYDATASTRUCT*) data; COPYDATASTRUCT response; switch (copydata->dwData) { case PLAY_PAUSE: pt_player_play_pause (player); break; case GOTO_TIMESTAMP: timestamp = (gchar*) copydata->lpData; pt_player_goto_timestamp (player, timestamp); break; case JUMP_BACK: pt_player_jump_back (player); break; case JUMP_FORWARD: pt_player_jump_forward (player); break; case DECREASE_SPEED: g_object_get (player, "speed", &value, NULL); pt_player_set_speed (player, value - 0.1); break; case INCREASE_SPEED: g_object_get (player, "speed", &value, NULL); pt_player_set_speed (player, value + 0.1); break; case OPEN_FILE: pt_window_open_file (ptwin, (gchar*) copydata->lpData); /* fall through */ case PRESENT_WINDOW: /* Unfortunately this only "activates" the window but * doesn't bring it to the front. */ gtk_window_present (GTK_WINDOW (ptwin)); break; case GET_TIMESTAMP: senddata = pt_player_get_timestamp (player); response.dwData = RESPONSE_TIMESTAMP; if (!senddata) response.cbData = 0; else response.cbData = sizeof (TCHAR) * (strlen (senddata) + 1); response.lpData = senddata; SendMessage ((HWND) sender, WM_COPYDATA, (WPARAM) (HWND) window, (LPARAM) (LPVOID) &response); g_free (senddata); break; case GET_URI: senddata = pt_player_get_uri (player); response.dwData = RESPONSE_URI; if (!senddata) { senddata_utf16 = NULL; response.cbData = 0; } else { senddata_utf16 = g_utf8_to_utf16 (senddata, -1, NULL, NULL, NULL); response.cbData = sizeof (WCHAR) * (g_utf8_strlen (senddata, -1) + 1); } response.lpData = senddata_utf16; SendMessage ((HWND) sender, WM_COPYDATA, (WPARAM) (HWND) window, (LPARAM) (LPVOID) &response); g_free (senddata); g_free (senddata_utf16); break; default: break; } } static LRESULT CALLBACK message_handler (HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) { if (Message != WM_COPYDATA) return DefWindowProc (hwnd, Message, wParam, lParam); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "message handler: WM_COPYDATA"); PtWin32Datacopy *self = (PtWin32Datacopy*) (uintptr_t) GetWindowLongPtr (hwnd, GWLP_USERDATA); pt_win32_datacopy_copydata_cb (hwnd, wParam, lParam, self); return TRUE; } void pt_win32_datacopy_start (PtWin32Datacopy *self) { WNDCLASS wc; gchar *err; memset (&wc, 0, sizeof (wc)); wc.lpfnWndProc = message_handler; wc.hInstance = GetModuleHandle (NULL); wc.lpszClassName = PT_HIDDEN_WINDOW_CLASS; if (!RegisterClass (&wc)) { err = pt_win32_get_last_error_msg (); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "RegisterClass error: %s", err); g_free (err); return; } self->priv->hwnd = CreateWindow (PT_HIDDEN_WINDOW_CLASS, PT_HIDDEN_WINDOW_TITLE, 0, /* window style */ 0, 0, /* x and y coordinates */ 0, 0, /* with and height */ NULL, /* parent window */ NULL, /* menu */ wc.hInstance, NULL); if (!self->priv->hwnd) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "Can't create hidden window"); UnregisterClass (PT_HIDDEN_WINDOW_CLASS, NULL); return; } SetWindowLongPtr (self->priv->hwnd, GWLP_USERDATA, (uintptr_t) self); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Created hidden window"); } static void pt_win32_datacopy_init (PtWin32Datacopy *self) { self->priv = pt_win32_datacopy_get_instance_private (self); } static void pt_win32_datacopy_dispose (GObject *object) { PtWin32Datacopy *self = PT_WIN32_DATACOPY (object); if (self->priv->hwnd) DestroyWindow (self->priv->hwnd); G_OBJECT_CLASS (pt_win32_datacopy_parent_class)->dispose (object); } static void pt_win32_datacopy_class_init (PtWin32DatacopyClass *klass) { G_OBJECT_CLASS (klass)->dispose = pt_win32_datacopy_dispose; } PtWin32Datacopy * pt_win32_datacopy_new (PtWindow *win) { return g_object_new (PT_WIN32_DATACOPY_TYPE, "win", win, NULL); } parlatype-3.0/src/pt-win32-datacopy.h000066400000000000000000000040441414030451500175010ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2020 * * 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 . */ #ifndef PT_WIN32_DATACOPY_H #define PT_WIN32_DATACOPY_H #include "config.h" #include "pt-controller.h" #include "pt-window.h" #define PT_WIN32_DATACOPY_TYPE (pt_win32_datacopy_get_type()) #define PT_WIN32_DATACOPY(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PT_WIN32_DATACOPY_TYPE, PtWin32Datacopy)) #define PT_IS_WIN32_DATACOPY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PT_WIN32_DATACOPY_TYPE)) #define PT_HIDDEN_WINDOW_CLASS "ParlatypeHiddenWindowClass" #define PT_HIDDEN_WINDOW_TITLE "ParlatypeHiddenWindowTitle" typedef struct _PtWin32Datacopy PtWin32Datacopy; typedef struct _PtWin32DatacopyClass PtWin32DatacopyClass; typedef struct _PtWin32DatacopyPrivate PtWin32DatacopyPrivate; enum { /* Methods without response */ PLAY_PAUSE, GOTO_TIMESTAMP, JUMP_BACK, JUMP_FORWARD, DECREASE_SPEED, INCREASE_SPEED, /* Used internally for unique instance management */ OPEN_FILE, PRESENT_WINDOW, /* Methods with response */ GET_TIMESTAMP, GET_URI, /* Responses */ RESPONSE_TIMESTAMP, RESPONSE_URI }; struct _PtWin32Datacopy { PtController parent; /*< private > */ PtWin32DatacopyPrivate *priv; }; struct _PtWin32DatacopyClass { PtControllerClass parent_class; }; GType pt_win32_datacopy_get_type (void) G_GNUC_CONST; void pt_win32_datacopy_start (PtWin32Datacopy *self); PtWin32Datacopy *pt_win32_datacopy_new (PtWindow *win); #endif parlatype-3.0/src/pt-win32-helpers.c000066400000000000000000000115441414030451500173350ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2020 * * 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 . */ #include "config.h" #include #include #include #include "pt-win32-datacopy.h" #include "pt-window.h" gchar * pt_win32_get_help_uri (void) { gchar *uri; gchar *exe_path; gchar *help_path; GRegex *r_long; GRegex *r_short; GMatchInfo *match; gchar *l_raw; gchar *l_long; gchar *l_short; gchar *p_long; gchar *p_short; gchar *path; GFile *file; exe_path = g_win32_get_package_installation_directory_of_module (NULL); help_path = g_build_filename(exe_path, "share", "help", NULL); l_raw = g_win32_getlocale (); r_long = g_regex_new ("^[A-Z]*_[A-Z]*", G_REGEX_CASELESS, 0, NULL); r_short = g_regex_new ("^[A-Z]*", G_REGEX_CASELESS, 0, NULL); g_regex_match (r_long, l_raw, 0, &match); if (g_match_info_matches (match)) { l_long = g_match_info_fetch (match, 0); p_long = g_build_filename (help_path, l_long, APP_ID, "index.html", NULL); } g_match_info_free (match); g_regex_match (r_short, l_raw, 0, &match); if (g_match_info_matches (match)) { l_short = g_match_info_fetch (match, 0); p_short = g_build_filename (help_path, l_short, APP_ID, "index.html", NULL); } g_match_info_free (match); if (g_file_test (p_long, G_FILE_TEST_EXISTS)) path = g_strdup (p_long); else if (g_file_test (p_short, G_FILE_TEST_EXISTS)) path = g_strdup (p_short); else path = g_build_filename (help_path, "C", APP_ID, "index.html", NULL); file = g_file_new_for_path (path); uri = g_file_get_uri (file); g_object_unref (file); g_free (path); g_free (p_long); g_free (p_short); g_free (l_long); g_free (l_short); g_free (l_raw); g_regex_unref (r_long); g_regex_unref (r_short); g_free (help_path); g_free (exe_path); return uri; } void pt_win32_add_audio_patterns (GtkFileFilter *filter) { gtk_file_filter_add_pattern (filter, "*.aac"); gtk_file_filter_add_pattern (filter, "*.aif"); gtk_file_filter_add_pattern (filter, "*.aiff"); gtk_file_filter_add_pattern (filter, "*.flac"); gtk_file_filter_add_pattern (filter, "*.iff"); gtk_file_filter_add_pattern (filter, "*.mpa"); gtk_file_filter_add_pattern (filter, "*.mp3"); gtk_file_filter_add_pattern (filter, "*.m4a"); gtk_file_filter_add_pattern (filter, "*.oga"); gtk_file_filter_add_pattern (filter, "*.ogg"); gtk_file_filter_add_pattern (filter, "*.wav"); gtk_file_filter_add_pattern (filter, "*.wma"); } gboolean pt_win32_present_other_instance (GApplication *app) { /* In an MSYS2 environment we have D-Bus and everything works like on * Linux. The installer doesn't have D-Bus though and we have to * ensure uniqueness in a different way. */ GDBusConnection *dbus; dbus = g_application_get_dbus_connection (app); if (dbus) return FALSE; HWND other_instance = FindWindow (PT_HIDDEN_WINDOW_CLASS, PT_HIDDEN_WINDOW_TITLE); if (other_instance) { COPYDATASTRUCT data; data.dwData = PRESENT_WINDOW; data.cbData = 0; data.lpData = NULL; SendMessage ((HWND) other_instance, WM_COPYDATA, (WPARAM) 0, (LPARAM) (LPVOID) &data); return TRUE; } return FALSE; } gboolean pt_win32_open_in_other_instance (GApplication *app, gchar *uri) { GDBusConnection *dbus; dbus = g_application_get_dbus_connection (app); if (dbus) return FALSE; HWND other_instance = FindWindow (PT_HIDDEN_WINDOW_CLASS, PT_HIDDEN_WINDOW_TITLE); if (other_instance) { COPYDATASTRUCT data; data.dwData = OPEN_FILE; data.cbData = sizeof (char) * strlen (uri); data.lpData = uri; SendMessage ((HWND) other_instance, WM_COPYDATA, (WPARAM) 0, (LPARAM) (LPVOID) &data); g_free (uri); return TRUE; } return FALSE; } gchar* pt_win32_get_last_error_msg (void) { gchar *msg; LPVOID lpMsgBuf; FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError (), MAKELANGID (LANG_NEUTRAL, SUBLANG_NEUTRAL), (LPTSTR) &lpMsgBuf, 0, NULL); msg = g_strdup ((gchar*) lpMsgBuf); LocalFree (lpMsgBuf); return msg; } parlatype-3.0/src/pt-win32-helpers.h000066400000000000000000000021061414030451500173340ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2020 * * 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 . */ #ifndef PT_WIN32_HELPERS_H #define PT_WIN32_HELPERS_H #include "config.h" gchar *pt_win32_get_help_uri (void); void pt_win32_add_audio_patterns (GtkFileFilter *filter); gboolean pt_win32_present_other_instance (GApplication *app); gboolean pt_win32_open_in_other_instance (GApplication *app, gchar *uri); gchar *pt_win32_get_last_error_msg (void); #endif parlatype-3.0/src/pt-win32-hotkeys.c000066400000000000000000000106021414030451500173530ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2020 * * 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 . */ #include "config.h" #include #include #include #include "pt-window.h" #include "pt-win32-helpers.h" #include "pt-win32-hotkeys.h" struct _PtWin32HotkeysPrivate { HWND hwnd; }; enum { PT_HOTKEY_PLAY_PAUSE, PT_HOTKEY_STOP, PT_HOTKEY_PREV_TRACK, PT_HOTKEY_NEXT_TRACK, PT_NUM_HOTKEYS }; static UINT hotkeycode[PT_NUM_HOTKEYS] = { VK_MEDIA_PLAY_PAUSE, VK_MEDIA_STOP, VK_MEDIA_PREV_TRACK, VK_MEDIA_NEXT_TRACK }; #define PT_HOTKEY_WINDOW_CLASS "ParlatypeHotkeyWindowClass" #define PT_HOTKEY_WINDOW_TITLE "ParlatypeHotkeyWindowTitle" G_DEFINE_TYPE_WITH_PRIVATE (PtWin32Hotkeys, pt_win32_hotkeys, PT_CONTROLLER_TYPE) static LRESULT CALLBACK message_handler (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { if (uMsg != WM_HOTKEY) return DefWindowProc (hwnd, uMsg, wParam, lParam); PtWin32Hotkeys *self = (PtWin32Hotkeys*) (uintptr_t) GetWindowLongPtr (hwnd, GWLP_USERDATA); PtPlayer *player = pt_controller_get_player (PT_CONTROLLER (self)); switch (wParam) { case PT_HOTKEY_PLAY_PAUSE: pt_player_play_pause (player); break; case PT_HOTKEY_STOP: pt_player_pause (player); break; case PT_HOTKEY_PREV_TRACK: pt_player_jump_back (player); break; case PT_HOTKEY_NEXT_TRACK: pt_player_jump_forward (player); break; default: return DefWindowProc (hwnd, uMsg, wParam, lParam); } return 0; } void pt_win32_hotkeys_start (PtWin32Hotkeys *self) { WNDCLASS wc; gchar *err; memset (&wc, 0, sizeof (wc)); wc.lpfnWndProc = message_handler; wc.hInstance = GetModuleHandle (NULL); wc.lpszClassName = PT_HOTKEY_WINDOW_CLASS; if (!RegisterClass (&wc)) { err = pt_win32_get_last_error_msg (); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "RegisterClass error: %s", err); g_free (err); return; } self->priv->hwnd = CreateWindow (PT_HOTKEY_WINDOW_CLASS, PT_HOTKEY_WINDOW_TITLE, 0, /* window style */ 0, 0, /* x and y coordinates */ 0, 0, /* with and height */ NULL, /* parent window */ NULL, /* menu */ wc.hInstance, NULL); if (!self->priv->hwnd) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "Can't create hotkey window"); UnregisterClass (PT_HOTKEY_WINDOW_CLASS, NULL); return; } SetWindowLongPtr (self->priv->hwnd, GWLP_USERDATA, (uintptr_t) self); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Created hotkey window"); for (int i = 0; i < PT_NUM_HOTKEYS; i++) { RegisterHotKey (self->priv->hwnd, /* our window */ i, /* hotkey ID */ 0, /* no modifier */ hotkeycode[i]); /* key code */ } } static void pt_win32_hotkeys_init (PtWin32Hotkeys *self) { self->priv = pt_win32_hotkeys_get_instance_private (self); self->priv->hwnd = 0; } static void pt_win32_hotkeys_dispose (GObject *object) { PtWin32Hotkeys *self = PT_WIN32_HOTKEYS (object); for (int i = 0; i < PT_NUM_HOTKEYS; i++) { UnregisterHotKey (self->priv->hwnd, i); } if (self->priv->hwnd) DestroyWindow (self->priv->hwnd); G_OBJECT_CLASS (pt_win32_hotkeys_parent_class)->dispose (object); } static void pt_win32_hotkeys_class_init (PtWin32HotkeysClass *klass) { G_OBJECT_CLASS (klass)->dispose = pt_win32_hotkeys_dispose; } PtWin32Hotkeys * pt_win32_hotkeys_new (PtWindow *win) { return g_object_new (PT_WIN32_HOTKEYS_TYPE, "win", win, NULL); } parlatype-3.0/src/pt-win32-hotkeys.h000066400000000000000000000031071414030451500173620ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2020 * * 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 . */ #ifndef PT_WIN32_HOTKEYS_H #define PT_WIN32_HOTKEYS_H #include "config.h" #include "pt-controller.h" #include "pt-window.h" #define PT_WIN32_HOTKEYS_TYPE (pt_win32_hotkeys_get_type()) #define PT_WIN32_HOTKEYS(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PT_WIN32_HOTKEYS_TYPE, PtWin32Hotkeys)) #define PT_IS_WIN32_HOTKEYS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PT_WIN32_HOTKEYS_TYPE)) typedef struct _PtWin32Hotkeys PtWin32Hotkeys; typedef struct _PtWin32HotkeysClass PtWin32HotkeysClass; typedef struct _PtWin32HotkeysPrivate PtWin32HotkeysPrivate; struct _PtWin32Hotkeys { PtController parent; /*< private > */ PtWin32HotkeysPrivate *priv; }; struct _PtWin32HotkeysClass { PtControllerClass parent_class; }; GType pt_win32_hotkeys_get_type (void) G_GNUC_CONST; void pt_win32_hotkeys_start (PtWin32Hotkeys *self); PtWin32Hotkeys *pt_win32_hotkeys_new (PtWindow *win); #endif parlatype-3.0/src/pt-win32-pipe.c000066400000000000000000000157721414030451500166370ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2020 * * 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 . */ #include "config.h" #include #include #include #include "pt-window.h" #include "pt-win32-helpers.h" #include "pt-win32-pipe.h" struct _PtWin32PipePrivate { HANDLE pipe; guint conn; GThread *thread; }; #define PIPE_NAME "\\\\.\\pipe\\org.parlatype.ipc" #define BUFSIZE 1024 G_DEFINE_TYPE_WITH_PRIVATE (PtWin32Pipe, pt_win32_pipe, PT_CONTROLLER_TYPE) static char* get_answer_for_request (PtWin32Pipe *self, char *request) { PtPlayer *player = pt_controller_get_player (PT_CONTROLLER (self)); char *answer = NULL; if (g_strcmp0 (request, "GetURI") == 0) { answer = pt_player_get_uri (player); } else if (g_strcmp0 (request, "GetTimestamp") == 0) { answer = pt_player_get_timestamp (player); } else { answer = g_strdup ("Unknown request"); } if (!answer) answer = g_strdup ("NONE"); return answer; } static gpointer start_server (gpointer data) { PtWin32Pipe *self = PT_WIN32_PIPE (data); DWORD type = 0; BOOL success; DWORD numread = 0; char *error; char *request; char *answer; type = PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT; self->priv->pipe = CreateNamedPipe (PIPE_NAME, /* unique name */ PIPE_ACCESS_DUPLEX, /* read/write */ type, PIPE_UNLIMITED_INSTANCES, BUFSIZE, /* output buffer size */ BUFSIZE, /* input buffer size */ 0, /* client time-out */ NULL); /* default security */ if (self->priv->pipe == INVALID_HANDLE_VALUE) { error = pt_win32_get_last_error_msg (); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "Creating message pipe failed: %s", error); g_free (error); return NULL; } g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Pipe created"); while (TRUE) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Waiting for client"); /* ConnectNamedPipe is blocking forever and a minute */ self->priv->conn = ConnectNamedPipe(self->priv->pipe, NULL); /* NULL for sync operations */ if (self->priv->conn == 0) { error = pt_win32_get_last_error_msg (); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "Client not connected: %s", error); g_free (error); return NULL; } g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Client connected"); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Listening for Client"); request = malloc (BUFSIZE * sizeof(char)); success = ReadFile (self->priv->pipe, /* handle to pipe */ request, /* buffer to receive data */ BUFSIZE * sizeof(char), /* size of buffer */ &numread, /* number of bytes read */ NULL); /* not overlapped I/O */ if (!success || numread == 0) { if (GetLastError() == ERROR_BROKEN_PIPE) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Client disconnected"); } else { error = pt_win32_get_last_error_msg (); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "Error reading request: %s", error); g_free (error); } return NULL; } /* Request is sometimes too long */ if (strlen(request) > numread) request[numread] = '\0'; g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Client sent request: %s", request); if (g_strcmp0 (request, "QUIT") == 0) { FlushFileBuffers (self->priv->pipe); DisconnectNamedPipe (self->priv->pipe); CloseHandle (self->priv->pipe); return NULL; } answer = get_answer_for_request (self, request); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Sending answer: %s", answer); g_free (request); request = NULL; numread = 0; if (!WriteFile (self->priv->pipe, answer, strlen(answer) * sizeof(char), &numread, NULL)) { error = pt_win32_get_last_error_msg (); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "Error sending answer: %d", error); g_free (error); } FlushFileBuffers (self->priv->pipe); DisconnectNamedPipe (self->priv->pipe); self->priv->conn = 0; g_free (answer); answer = NULL; } } void pt_win32_pipe_start (PtWin32Pipe *self) { /* All requests are handled in a single thread with a loop. * The thread returns only on errors or when the "QUIT" command is sent. */ self->priv->thread = g_thread_new ("single-thread", start_server, self); } void pt_win32_pipe_stop (PtWin32Pipe *self) { DWORD mode, written; char* message; HANDLE closeconn; if (self->priv->pipe != INVALID_HANDLE_VALUE) { closeconn = CreateFile (PIPE_NAME, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); mode = PIPE_READMODE_MESSAGE; SetNamedPipeHandleState (closeconn, &mode, NULL, NULL); message = "QUIT"; WriteFile (closeconn, message, sizeof(char) * (strlen(message) + 1), &written, NULL); CloseHandle (closeconn); } } static void pt_win32_pipe_init (PtWin32Pipe *self) { self->priv = pt_win32_pipe_get_instance_private (self); self->priv->pipe = INVALID_HANDLE_VALUE; self->priv->conn = 0; } static void pt_win32_pipe_dispose (GObject *object) { PtWin32Pipe *self = PT_WIN32_PIPE (object); pt_win32_pipe_stop (self); g_thread_join (self->priv->thread); if (self->priv->conn > 0) { FlushFileBuffers (self->priv->pipe); DisconnectNamedPipe (self->priv->pipe); self->priv->conn = 0; } if (self->priv->pipe != INVALID_HANDLE_VALUE) CloseHandle (self->priv->pipe); G_OBJECT_CLASS (pt_win32_pipe_parent_class)->dispose (object); } static void pt_win32_pipe_class_init (PtWin32PipeClass *klass) { G_OBJECT_CLASS (klass)->dispose = pt_win32_pipe_dispose; } PtWin32Pipe * pt_win32_pipe_new (PtWindow *win) { return g_object_new (PT_WIN32_PIPE_TYPE, "win", win, NULL); } parlatype-3.0/src/pt-win32-pipe.h000066400000000000000000000031001414030451500166220ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2020 * * 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 . */ #ifndef PT_WIN32_PIPE_H #define PT_WIN32_PIPE_H #include "config.h" #include "pt-controller.h" #include "pt-window.h" #define PT_WIN32_PIPE_TYPE (pt_win32_pipe_get_type()) #define PT_WIN32_PIPE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PT_WIN32_PIPE_TYPE, PtWin32Pipe)) #define PT_IS_WIN32_PIPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PT_WIN32_PIPE_TYPE)) typedef struct _PtWin32Pipe PtWin32Pipe; typedef struct _PtWin32PipeClass PtWin32PipeClass; typedef struct _PtWin32PipePrivate PtWin32PipePrivate; struct _PtWin32Pipe { PtController parent; /*< private > */ PtWin32PipePrivate *priv; }; struct _PtWin32PipeClass { PtControllerClass parent_class; }; GType pt_win32_pipe_get_type (void) G_GNUC_CONST; void pt_win32_pipe_start (PtWin32Pipe *self); void pt_win32_pipe_stop (PtWin32Pipe *self); PtWin32Pipe *pt_win32_pipe_new (PtWindow *win); #endif parlatype-3.0/src/pt-window-dnd.c000066400000000000000000000152461414030451500170100ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2016 * * 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 . */ #include "config.h" #include #include /* strlen */ #include "pt-window.h" #include "pt-window-private.h" #include "pt-window-dnd.h" static gboolean handle_uri (PtWindow *win, gchar *data) { GFile *file; gchar **split = NULL; gchar *uri; gboolean success = FALSE; if (g_regex_match_simple ("^file:///.*", data, 0, 0)) { /* Nautilus gives us a \r\n separated list */ split = g_strsplit (data, "\r", 0); file = g_file_new_for_uri (split[0]); if (g_file_query_exists (file, NULL)) { pt_window_open_file (win, split[0]); success = TRUE; } g_object_unref (file); g_strfreev (split); return success; } if (g_regex_match_simple ("^/.*/.*", data, 0, 0)) { file = g_file_new_for_path (data); if (g_file_query_exists (file, NULL)) { uri = g_file_get_uri (file); pt_window_open_file (win, uri); g_free (uri); success = TRUE; } g_object_unref (file); return success; } return FALSE; } static gboolean handle_filename (PtWindow *win, gchar *data) { gboolean success; GList *list; GtkRecentInfo *info; gchar *uri; success = FALSE; list = gtk_recent_manager_get_items (win->priv->recent); for (list = g_list_first (list); list; list = g_list_next (list)) { info = (GtkRecentInfo *) list->data; if (g_strcmp0 (gtk_recent_info_get_display_name (info), data) == 0) { uri = g_strdup (gtk_recent_info_get_uri (info)); success = TRUE; break; } } g_list_free_full (list, (GDestroyNotify) gtk_recent_info_unref); if (success) { /* GStreamer has problems with uris from recent chooser, as a workaround use GFile magic */ GFile *file = g_file_new_for_uri (uri); gchar *tmp = g_file_get_uri (file); pt_window_open_file (PT_WINDOW (win), tmp); g_free (tmp); g_free (uri); g_object_unref (file); } return success; } static gboolean handle_dnd_data (PtWindow *win, gchar *data) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Received drag and drop: '%s'", data); if (pt_player_goto_timestamp (win->player, data)) return TRUE; if (handle_uri (win, data)) return TRUE; if (handle_filename (win, data)) return TRUE; return FALSE; } static gboolean win_dnd_drop_cb (GtkWidget *widget, GdkDragContext *context, gint x, gint y, guint time, gpointer user_data) { gboolean is_valid_drop_site; GdkAtom target_type; GList *iterate; gboolean have_target; /* Check to see if (x,y) is a valid drop site within widget */ is_valid_drop_site = TRUE; have_target = FALSE; /* Choose the best target type */ iterate = gdk_drag_context_list_targets (context); while (iterate != NULL) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "atom string: %s", gdk_atom_name (iterate->data)); if (iterate->data == gdk_atom_intern ("STRING", TRUE)) { target_type = gdk_atom_intern ("STRING", TRUE); have_target = TRUE; break; } if (iterate->data == gdk_atom_intern ("UTF8_STRING", TRUE)) { target_type = gdk_atom_intern ("UTF8_STRING", TRUE); have_target = TRUE; break; } if (iterate->data == gdk_atom_intern ("text/uri-list", TRUE)) { target_type = gdk_atom_intern ("text/uri-list", TRUE); have_target = TRUE; break; } iterate = g_list_next (iterate); } if (have_target) { /* Request the data from the source. */ gtk_drag_get_data (widget, /* will receive “drag-data-received” signal */ context, /* represents the current state of the DnD */ target_type, time); } else { /* No target offered by source => error */ is_valid_drop_site = FALSE; } return is_valid_drop_site; } static void win_dnd_received_cb (GtkWidget *widget, GdkDragContext *context, int x, int y, GtkSelectionData *seldata, guint info, guint time, gpointer user_data) { PtWindow *win = user_data; gchar *data; gboolean success; if ((seldata == NULL) || (gtk_selection_data_get_length (seldata) == 0) || (info != TARGET_STRING && info != TARGET_UTF8_STRING && info != TARGET_TEXT_URILIST)) { gtk_drag_finish (context, FALSE, /* success */ FALSE, /* delete source */ time); return; } data = (gchar*) gtk_selection_data_get_data (seldata); success = handle_dnd_data (win, data); gtk_drag_finish (context, success, FALSE, /* delete source */ time); } static gboolean win_dnd_motion_cb (GtkWidget *widget, GdkDragContext *context, gint x, gint y, guint info, guint time, gpointer user_data) { /* We handle this signal ourselves, because using GTK_DEST_DEFAULT_MOTION drags with source LibreOffice show an icon indicating drag is not possible. On win32 this is never called. */ GdkAtom target_atom; target_atom = gtk_drag_dest_find_target (widget, context, NULL); if (target_atom != GDK_NONE) { gdk_drag_status (context, GDK_ACTION_COPY, time); return TRUE; } gdk_drag_status (context, 0, time); return FALSE; } void pt_window_setup_dnd (PtWindow *win) { /* The whole window is a destination for timestamp drops */ gtk_drag_dest_set (GTK_WIDGET (win), 0, /* no default behavior flags set, we do everything ourselves */ drag_target_string, G_N_ELEMENTS (drag_target_string), GDK_ACTION_COPY); g_signal_connect (GTK_WIDGET (win), "drag_motion", G_CALLBACK (win_dnd_motion_cb), win); g_signal_connect (GTK_WIDGET (win), "drag_data_received", G_CALLBACK (win_dnd_received_cb), win); g_signal_connect (GTK_WIDGET (win), "drag_drop", G_CALLBACK (win_dnd_drop_cb), win); } parlatype-3.0/src/pt-window-dnd.h000066400000000000000000000023361414030451500170110ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2016 * * 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 . */ #ifndef PT_WINDOW_DND_H #define PT_WINDOW_DND_H #include "config.h" #include #include "pt-window.h" enum { TARGET_STRING, /* most GNOME apps */ TARGET_UTF8_STRING, /* LibreOffice */ TARGET_TEXT_URILIST /* Windows */ }; static const GtkTargetEntry drag_target_string[] = { { "STRING", GTK_TARGET_OTHER_APP, TARGET_STRING } , { "UTF8_STRING", GTK_TARGET_OTHER_APP, TARGET_UTF8_STRING } , { "text/uri-list", GTK_TARGET_OTHER_APP, TARGET_TEXT_URILIST } }; void pt_window_setup_dnd (PtWindow *win); #endif parlatype-3.0/src/pt-window-private.h000066400000000000000000000033331414030451500177140ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2016 * * 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 . */ #ifndef PT_WINDOW_PRIVATE_H #define PT_WINDOW_PRIVATE_H #include "config.h" #include #include struct _PtWindowPrivate { GSettings *editor; GtkRecentManager *recent; PtConfig *asr_config; GtkClipboard *clip; gulong clip_handler_id; /* Headerbar widgets */ GtkWidget *button_open; GtkWidget *primary_menu_button; /* Main window widgets */ GtkWidget *controls_row_box; GtkWidget *controls_box; GtkWidget *progress; GtkWidget *button_play; GtkWidget *button_jump_back; GtkWidget *button_jump_forward; GtkWidget *volumebutton; GStrv vol_icons; GtkGesture *vol_event; GtkWidget *pos_menu_button; GtkWidget *pos_label; GMenuItem *go_to_timestamp; GtkWidget *speed_scale; GtkWidget *waveviewer; GMenuModel *primary_menu; GMenuModel *secondary_menu; GMenu *asr_menu; GMenuItem *asr_menu_item1; GMenuItem *asr_menu_item2; gboolean asr; gint64 last_time; // last time to compare if it changed gint timer; gdouble speed; }; #endif parlatype-3.0/src/pt-window.c000066400000000000000000001060311414030451500162360ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2016-2019 * * 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 . */ #include "config.h" #include /* exit() */ #include #include #ifdef GDK_WINDOWING_X11 #include #endif #include #include "pt-app.h" #include "pt-goto-dialog.h" #include "pt-window.h" #include "pt-window-dnd.h" #include "pt-window-private.h" G_DEFINE_TYPE_WITH_PRIVATE (PtWindow, pt_window, GTK_TYPE_APPLICATION_WINDOW) static void play_button_toggled_cb (GtkToggleButton *button, PtWindow *win); void pt_error_message (PtWindow *parent, const gchar *message, const gchar *secondary_message) { GtkWidget *dialog; dialog = gtk_message_dialog_new ( GTK_WINDOW (parent), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s", message); if (secondary_message) gtk_message_dialog_format_secondary_text ( GTK_MESSAGE_DIALOG (dialog), "%s", secondary_message); g_signal_connect_swapped (dialog, "response", G_CALLBACK (gtk_widget_destroy), dialog); gtk_widget_show_all (dialog); } void copy_timestamp (GSimpleAction *action, GVariant *parameter, gpointer user_data) { PtWindow *win; win = PT_WINDOW (user_data); const gchar *timestamp = NULL; timestamp = pt_player_get_timestamp (win->player); if (timestamp) gtk_clipboard_set_text (win->priv->clip, timestamp, -1); } static void clip_text_cb (GtkClipboard *clip, const gchar *text, gpointer data) { PtWindow *win = (PtWindow *) data; gchar *timestamp; if (text) { timestamp = g_strdup (text); pt_player_goto_timestamp (win->player, timestamp); pt_waveviewer_set_follow_cursor (PT_WAVEVIEWER (win->priv->waveviewer), TRUE); g_free (timestamp); } } void insert_timestamp (GSimpleAction *action, GVariant *parameter, gpointer user_data) { PtWindow *win; win = PT_WINDOW (user_data); gtk_clipboard_request_text (win->priv->clip, clip_text_cb, win); } static void goto_dialog_response_cb (GtkDialog *dlg, gint response_id, gpointer user_data) { PtWindow *win = PT_WINDOW (user_data); gint pos; if (response_id == GTK_RESPONSE_OK) { pos = pt_goto_dialog_get_pos (PT_GOTO_DIALOG (dlg)); pt_player_jump_to_position (win->player, pos * 1000); pt_waveviewer_set_follow_cursor (PT_WAVEVIEWER (win->priv->waveviewer), TRUE); } gtk_widget_destroy (GTK_WIDGET (dlg)); } void goto_position (GSimpleAction *action, GVariant *parameter, gpointer user_data) { PtWindow *win; win = PT_WINDOW (user_data); PtGotoDialog *dlg; dlg = pt_goto_dialog_new (GTK_WINDOW (win)); pt_goto_dialog_set_pos (dlg, pt_player_get_position (win->player) / 1000); pt_goto_dialog_set_max (dlg, pt_player_get_duration (win->player) / 1000); g_signal_connect (dlg, "response", G_CALLBACK (goto_dialog_response_cb), win); gtk_widget_show_all (GTK_WIDGET (dlg)); } void goto_cursor (GSimpleAction *action, GVariant *parameter, gpointer user_data) { PtWindow *win; win = PT_WINDOW (user_data); pt_waveviewer_set_follow_cursor (PT_WAVEVIEWER (win->priv->waveviewer), TRUE); } void jump_back (GSimpleAction *action, GVariant *parameter, gpointer user_data) { PtWindow *win = PT_WINDOW (user_data); pt_player_jump_back (win->player); } void jump_forward (GSimpleAction *action, GVariant *parameter, gpointer user_data) { PtWindow *win = PT_WINDOW (user_data); pt_player_jump_forward (win->player); } void play (GSimpleAction *action, GVariant *parameter, gpointer user_data) { PtWindow *win = PT_WINDOW (user_data); pt_player_play_pause (win->player); } static void set_zoom (GSettings *editor, gint step) { gint pps; pps = g_settings_get_int (editor, "pps"); if ((step > 0 && pps >= 200) || (step < 0 && pps <= 25)) return; g_settings_set_int (editor, "pps", CLAMP (pps + step, 25, 200)); } void zoom_in (GSimpleAction *action, GVariant *parameter, gpointer user_data) { PtWindow *win = PT_WINDOW (user_data); set_zoom (win->priv->editor, 25); } void zoom_out (GSimpleAction *action, GVariant *parameter, gpointer user_data) { PtWindow *win = PT_WINDOW (user_data); set_zoom (win->priv->editor, -25); } static gboolean setup_asr (PtWindow *win) { GError *error = NULL; gboolean success; success = pt_player_configure_asr ( win->player, win->priv->asr_config, &error); if (success) pt_player_set_mode (win->player, PT_MODE_ASR); else pt_error_message (win, error->message, NULL); return success; } static void set_mode_playback (PtWindow *win) { pt_player_set_mode (win->player, PT_MODE_PLAYBACK); } void change_mode (GSimpleAction *action, GVariant *state, gpointer user_data) { PtWindow *win = PT_WINDOW (user_data); const gchar *mode; gboolean success = TRUE; /* Work around synchronisation issues in PtPlayer in playing state */ pt_player_pause (win->player); mode = g_variant_get_string (state, NULL); if (g_strcmp0 (mode, "playback") == 0) { set_mode_playback (win); } else if (g_strcmp0 (mode, "asr") == 0) { if (win->priv->asr_config != NULL) { success = setup_asr (win); } else { return; } } else { g_assert_not_reached (); } if (success) g_simple_action_set_state (action, state); /* On changing state the menu doesn’t close. It seems better to close it just like every other menu item closes the menu. Just in case this behaviour changes in the future, check if the menu is really open. */ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (win->priv->primary_menu_button))) gtk_button_clicked (GTK_BUTTON (win->priv->primary_menu_button)); } const GActionEntry win_actions[] = { { "mode", NULL, "s", "'playback'", change_mode }, { "copy", copy_timestamp, NULL, NULL, NULL }, { "insert", insert_timestamp, NULL, NULL, NULL }, { "goto", goto_position, NULL, NULL, NULL }, { "goto-cursor", goto_cursor, NULL, NULL, NULL }, { "zoom-in", zoom_in, NULL, NULL, NULL }, { "zoom-out", zoom_out, NULL, NULL, NULL }, { "jump-back", jump_back, NULL, NULL, NULL }, { "jump-forward", jump_forward, NULL, NULL, NULL }, { "play", play, NULL, NULL, NULL } }; static void update_time (PtWindow *win) { gchar *text; gint64 time; time = pt_player_get_position (win->player); if (time == -1) return; /* Update label only if time has changed at 10th seconds level */ if (time/100 != win->priv->last_time) { text = pt_player_get_current_time_string ( win->player, PT_PRECISION_SECOND_10TH); if (text == NULL) return; gtk_label_set_text (GTK_LABEL (win->priv->pos_label), text); g_free (text); win->priv->last_time = time/100; } g_object_set (win->priv->waveviewer, "playback-cursor", time, NULL); } static gboolean update_time_tick (GtkWidget *widget, GdkFrameClock *frame_clock, gpointer data) { PtWindow *win = (PtWindow *) data; update_time (win); return G_SOURCE_CONTINUE; } static void zoom_in_cb (GtkWidget *widget, PtWindow *win) { GAction *action; action = g_action_map_lookup_action (G_ACTION_MAP (win), "zoom-in"); g_action_activate (action, NULL); } static void zoom_out_cb (GtkWidget *widget, PtWindow *win) { GAction *action; action = g_action_map_lookup_action (G_ACTION_MAP (win), "zoom-out"); g_action_activate (action, NULL); } static void add_timer (PtWindow *win) { if (win->priv->timer == 0) { win->priv->timer = gtk_widget_add_tick_callback ( win->priv->waveviewer, update_time_tick, win, NULL); } } static void remove_timer (PtWindow *win) { if (win->priv->timer > 0) { gtk_widget_remove_tick_callback (win->priv->waveviewer, win->priv->timer); win->priv->timer = 0; } } static void change_jump_back_tooltip (PtWindow *win) { gchar *back; gint seconds; seconds = pt_player_get_back (win->player) / 1000; back = g_strdup_printf ( ngettext ("Jump back 1 second", "Jump back %d seconds", seconds), seconds); gtk_widget_set_tooltip_text (win->priv->button_jump_back, back); g_free (back); } static void change_jump_forward_tooltip (PtWindow *win) { gchar *forward; gint seconds; seconds = pt_player_get_forward (win->player) / 1000; forward = g_strdup_printf ( ngettext ("Jump forward 1 second", "Jump forward %d seconds", seconds), seconds); gtk_widget_set_tooltip_text (win->priv->button_jump_forward, forward); g_free (forward); } static void change_play_button_tooltip (PtWindow *win) { gchar *play; gint pause; gboolean free_me = FALSE; pause = pt_player_get_pause (win->player) / 1000; if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (win->priv->button_play))) { if (pause == 0) { play = _("Pause"); } else { play = g_strdup_printf ( ngettext ("Pause and rewind 1 second", "Pause and rewind %d seconds", pause), pause); free_me = TRUE; } } else { play = _("Start playing"); } gtk_widget_set_tooltip_text (win->priv->button_play, play); if (free_me) g_free (play); } static void update_insert_action_sensitivity_cb (GtkClipboard *clip, const gchar *text, gpointer data) { PtWindow *win = PT_WINDOW (data); PtPlayer *player = win->player; gchar *timestamp = NULL; gboolean result = FALSE; GAction *action; gint pos; gchar *label; if (text) { timestamp = g_strdup (text); pos = pt_player_get_timestamp_position (player, timestamp, TRUE); g_free (timestamp); timestamp = NULL; if (pos >= 0) { result = TRUE; timestamp = pt_player_get_time_string ( pos, pt_player_get_duration (player), PT_PRECISION_SECOND_10TH); } } if (timestamp) label = g_strdup_printf (_("Go to time in clipboard: %s"), timestamp); else label = g_strdup (_("Go to time in clipboard")); g_menu_item_set_label (win->priv->go_to_timestamp, label); g_menu_remove (G_MENU (win->priv->secondary_menu), 1); g_menu_insert_item (G_MENU (win->priv->secondary_menu), 1, win->priv->go_to_timestamp); g_free (label); action = g_action_map_lookup_action (G_ACTION_MAP (win), "insert"); g_simple_action_set_enabled (G_SIMPLE_ACTION (action), result); } static void update_insert_action_sensitivity (GtkClipboard *clip, GdkEvent *event, gpointer data) { PtWindow *win = PT_WINDOW (data); #ifdef GDK_WINDOWING_X11 GAction *action; GdkDisplay *display; display = gtk_clipboard_get_display (clip); if (GDK_IS_X11_DISPLAY (display) && !gdk_display_supports_selection_notification (display)) { action = g_action_map_lookup_action (G_ACTION_MAP (win), "insert"); g_simple_action_set_enabled (G_SIMPLE_ACTION (action), TRUE); return; } #endif gtk_clipboard_request_text ( clip, update_insert_action_sensitivity_cb, win); } static void update_goto_cursor_action_sensitivity (PtWaveviewer *waveviewer, gboolean new, gpointer data) { PtWindow *win = PT_WINDOW (data); GAction *action; action = g_action_map_lookup_action (G_ACTION_MAP (win), "goto-cursor"); g_simple_action_set_enabled (G_SIMPLE_ACTION (action), !new); } static void enable_win_actions (PtWindow *win, gboolean state) { GAction *action; /* always active */ action = g_action_map_lookup_action (G_ACTION_MAP (win), "mode"); g_simple_action_set_enabled (G_SIMPLE_ACTION (action), TRUE); action = g_action_map_lookup_action (G_ACTION_MAP (win), "copy"); g_simple_action_set_enabled (G_SIMPLE_ACTION (action), state); /* always disable on request, enable only conditionally */ if (!state) { action = g_action_map_lookup_action (G_ACTION_MAP (win), "insert"); g_simple_action_set_enabled (G_SIMPLE_ACTION (action), state); } else { update_insert_action_sensitivity (win->priv->clip, NULL, win); } action = g_action_map_lookup_action (G_ACTION_MAP (win), "goto"); g_simple_action_set_enabled (G_SIMPLE_ACTION (action), state); /* always insensitive: either there is no waveform or we are already at cursor position */ action = g_action_map_lookup_action (G_ACTION_MAP (win), "goto-cursor"); g_simple_action_set_enabled (G_SIMPLE_ACTION (action), FALSE); action = g_action_map_lookup_action (G_ACTION_MAP (win), "zoom-in"); g_simple_action_set_enabled (G_SIMPLE_ACTION (action), state); action = g_action_map_lookup_action (G_ACTION_MAP (win), "zoom-out"); g_simple_action_set_enabled (G_SIMPLE_ACTION (action), state); } static void pt_window_ready_to_play (PtWindow *win, gboolean state) { /* Set up widget sensitivity/visibility, actions, labels, window title and timer according to the state of PtPlayer (ready to play or not). Reset tooltips for insensitive widgets. */ gchar *display_name = NULL; GtkStyleContext *open_context; enable_win_actions (win, state); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (win->priv->button_play), FALSE); gtk_widget_set_sensitive (win->priv->button_play, state); gtk_widget_set_sensitive (win->priv->button_jump_back, state); gtk_widget_set_sensitive (win->priv->button_jump_forward, state); gtk_widget_set_sensitive (win->priv->speed_scale, state); gtk_widget_set_sensitive (win->priv->volumebutton, state); if (state) { open_context = gtk_widget_get_style_context (win->priv->button_open); gtk_style_context_remove_class (open_context, "suggested-action"); display_name = pt_player_get_filename (win->player); if (display_name) { gtk_window_set_title (GTK_WINDOW (win), display_name); g_free (display_name); } gchar *uri = NULL; uri = pt_player_get_uri (win->player); if (uri) { gtk_recent_manager_add_item (win->priv->recent, uri); g_free (uri); } change_play_button_tooltip (win); change_jump_back_tooltip (win); change_jump_forward_tooltip (win); pt_waveviewer_set_follow_cursor (PT_WAVEVIEWER (win->priv->waveviewer), TRUE); add_timer (win); } else { gtk_label_set_text (GTK_LABEL (win->priv->pos_label), "00:00.0"); gtk_window_set_title (GTK_WINDOW (win), "Parlatype"); gtk_widget_set_tooltip_text (win->priv->button_jump_back, NULL); gtk_widget_set_tooltip_text (win->priv->button_jump_forward, NULL); remove_timer (win); } } static void player_error_cb (PtPlayer *player, GError *error, PtWindow *win) { pt_window_ready_to_play (win, FALSE); pt_error_message (win, error->message, NULL); } static void open_cb (PtWaveviewer *viewer, GAsyncResult *res, gpointer *data) { PtWindow *win = (PtWindow *) data; GError *error = NULL; if (!pt_waveviewer_load_wave_finish (viewer, res, &error)) { pt_error_message (win, error->message, NULL); g_error_free (error); /* Very unlikely situation: Stream is open and playable, * but loading the waveform failed. */ } } gchar* pt_window_get_uri (PtWindow *win) { return pt_player_get_uri (win->player); } void pt_window_open_file (PtWindow *win, gchar *uri) { g_return_if_fail (uri != NULL); gchar *current_uri; gint cmp = 1; /* Don't reload already loaded waveform */ current_uri = pt_player_get_uri (win->player); if (current_uri) { cmp = g_strcmp0 (current_uri, uri); g_free (current_uri); } if (cmp == 0) return; pt_window_ready_to_play (win, FALSE); if (!pt_player_open_uri (win->player, uri)) return; pt_window_ready_to_play (win, TRUE); pt_waveviewer_load_wave_async (PT_WAVEVIEWER (win->priv->waveviewer), uri, NULL, (GAsyncReadyCallback) open_cb, win); } static void update_play_after_toggle (PtWindow *win, GtkToggleButton *button) { if (gtk_toggle_button_get_active (button)) { update_time (win); pt_waveviewer_set_follow_cursor (PT_WAVEVIEWER (win->priv->waveviewer), TRUE); } change_play_button_tooltip (win); } static void player_play_toggled_cb (PtPlayer *player, PtWindow *win) { GtkToggleButton *play; play = GTK_TOGGLE_BUTTON (win->priv->button_play); /* Player changed play/pause; toggle GUI button and block signals */ g_signal_handlers_block_by_func (play, play_button_toggled_cb, win); gtk_toggle_button_set_active (play, !gtk_toggle_button_get_active (play)); g_signal_handlers_unblock_by_func (play, play_button_toggled_cb, win); update_play_after_toggle (win, play); } static void play_button_toggled_cb (GtkToggleButton *button, PtWindow *win) { /* GUI button toggled, block signals from PtPlayer */ g_signal_handlers_block_by_func (win->player, player_play_toggled_cb, win); pt_player_play_pause (win->player); g_signal_handlers_unblock_by_func (win->player, player_play_toggled_cb, win); update_play_after_toggle (win, button); } static void player_end_of_stream_cb (PtPlayer *player, PtWindow *win) { /* Pause player without jumping back, this will also toggle the * Play button */ pt_player_pause (win->player); change_play_button_tooltip (win); } static gboolean swap_control_buttons (GtkWidget *box) { gtk_widget_set_direction (box, GTK_TEXT_DIR_LTR); return FALSE; } static void pt_window_direction_changed (GtkWidget *widget, GtkTextDirection previous_direction) { /* In RTL layouts playback control elements are *not* supposed to be * mirrored. Undo automatic mirroring for those elements. */ PtWindow *self = PT_WINDOW (widget); PtWindowPrivate *priv = self->priv; GtkScale *speed_scale = GTK_SCALE (priv->speed_scale); gtk_widget_set_direction (priv->controls_row_box, GTK_TEXT_DIR_LTR); gtk_widget_set_direction (priv->progress, GTK_TEXT_DIR_LTR); if (previous_direction == GTK_TEXT_DIR_LTR) gtk_scale_set_value_pos (speed_scale, GTK_POS_LEFT); else gtk_scale_set_value_pos (speed_scale, GTK_POS_RIGHT); /* Swap control buttons in a timeout to avoid a race condition where * buttons were not rendered correctly linked, reason unknown */ g_idle_add ((GSourceFunc) swap_control_buttons, priv->controls_box); } static void set_asr_config (PtWindow *win) { PtWindowPrivate *priv = win->priv; GFile *asr_file; gchar *asr_path; GAction *action; GVariant *variant; const gchar *mode; /* called when config file changed (and on startup); * get rid of old config object first */ if (priv->asr_config) g_clear_object (&priv->asr_config); /* get new config object */ asr_path = g_settings_get_string (priv->editor, "asr-config"); asr_file = g_file_new_for_path (asr_path); priv->asr_config = pt_config_new (asr_file); g_object_unref (asr_file); g_free (asr_path); /* get current mode */ action = g_action_map_lookup_action (G_ACTION_MAP (win), "mode"); variant = g_action_get_state (action); mode = g_variant_get_string (variant, NULL); /* not valid: clear object, remove menu, change to playback mode */ if (!pt_config_is_valid (priv->asr_config) || !pt_player_config_is_loadable (win->player, priv->asr_config) || !pt_config_is_installed (priv->asr_config)) { g_clear_object (&priv->asr_config); if (priv->asr) { g_menu_remove (G_MENU (priv->primary_menu), 0); priv->asr = FALSE; } if (g_strcmp0 (mode, "asr") == 0) { set_mode_playback (win); } g_variant_unref (variant); return; } /* valid: add menu, setup ASR plugin */ if (!priv->asr) { g_menu_prepend_section (G_MENU (priv->primary_menu), NULL, /* label */ G_MENU_MODEL (priv->asr_menu)); priv->asr = TRUE; } if (g_strcmp0 (mode, "asr") == 0) setup_asr (win); g_variant_unref (variant); } static void settings_changed_cb (GSettings *settings, gchar *key, PtWindow *win) { if (g_strcmp0 (key, "rewind-on-pause") == 0) { change_play_button_tooltip (win); return; } if (g_strcmp0 (key, "jump-back") == 0) { change_jump_back_tooltip (win); return; } if (g_strcmp0 (key, "jump-forward") == 0) { change_jump_forward_tooltip (win); return; } if (g_strcmp0 (key, "asr-config") == 0) { set_asr_config (win); return; } } static gboolean map_seconds_to_milliseconds (GValue *value, GVariant *variant, gpointer data) { /* Settings store seconds, PtPlayer wants milliseconds */ gint new; new = g_variant_get_int32 (variant); new = new * 1000; g_value_set_int (value, new); return TRUE; } static GVariant* map_milliseconds_to_seconds (const GValue *value, const GVariantType *type, gpointer data) { gint new; new = g_value_get_int (value); new = new / 1000; return g_variant_new_int32 (new); } static void setup_non_wayland_env (PtWindow *win) { if (g_settings_get_boolean (win->priv->editor, "start-on-top")) { gtk_window_set_keep_above (GTK_WINDOW (win), TRUE); } if (g_settings_get_boolean (win->priv->editor, "remember-position")) { gtk_window_move (GTK_WINDOW (win), g_settings_get_int (win->priv->editor, "x-pos"), g_settings_get_int (win->priv->editor, "y-pos")); } } static void setup_settings (PtWindow *win) { win->priv->editor = g_settings_new (APP_ID); g_settings_bind ( win->priv->editor, "pps", win->priv->waveviewer, "pps", G_SETTINGS_BIND_GET); g_settings_bind_with_mapping ( win->priv->editor, "rewind-on-pause", win->player, "pause", G_SETTINGS_BIND_GET, map_seconds_to_milliseconds, map_milliseconds_to_seconds, NULL, NULL); g_settings_bind_with_mapping ( win->priv->editor, "jump-back", win->player, "back", G_SETTINGS_BIND_GET, map_seconds_to_milliseconds, map_milliseconds_to_seconds, NULL, NULL); g_settings_bind_with_mapping ( win->priv->editor, "jump-forward", win->player, "forward", G_SETTINGS_BIND_GET, map_seconds_to_milliseconds, map_milliseconds_to_seconds, NULL, NULL); g_settings_bind ( win->priv->editor, "repeat-all", win->player, "repeat-all", G_SETTINGS_BIND_GET); g_settings_bind ( win->priv->editor, "repeat-selection", win->player, "repeat-selection", G_SETTINGS_BIND_GET); g_settings_bind ( win->priv->editor, "show-ruler", win->priv->waveviewer, "show-ruler", G_SETTINGS_BIND_GET); g_settings_bind ( win->priv->editor, "fixed-cursor", win->priv->waveviewer, "fixed-cursor", G_SETTINGS_BIND_GET); g_settings_bind ( win->priv->editor, "timestamp-precision", win->player, "timestamp-precision", G_SETTINGS_BIND_GET); g_settings_bind ( win->priv->editor, "timestamp-fixed", win->player, "timestamp-fixed", G_SETTINGS_BIND_GET); g_settings_bind ( win->priv->editor, "timestamp-delimiter", win->player, "timestamp-delimiter", G_SETTINGS_BIND_GET); g_settings_bind ( win->priv->editor, "timestamp-fraction-sep", win->player, "timestamp-fraction-sep", G_SETTINGS_BIND_GET); win->priv->asr = FALSE; set_asr_config (win); /* connect to tooltip changer */ g_signal_connect ( win->priv->editor, "changed", G_CALLBACK (settings_changed_cb), win); /* Default speed Other solutions would be - Automatically save last known speed in GSettings - Add a default speed option to preferences dialog - Save last known speed in metadata for each file */ win->priv->speed = 1.0; if (g_settings_get_boolean (win->priv->editor, "remember-size")) { gtk_window_resize (GTK_WINDOW (win), g_settings_get_int (win->priv->editor, "width"), g_settings_get_int (win->priv->editor, "height")); } #ifdef GDK_WINDOWING_X11 GdkDisplay *display; display = gdk_display_get_default (); if (GDK_IS_X11_DISPLAY (display)) setup_non_wayland_env (win); #endif #ifdef GDK_WINDOWING_WIN32 setup_non_wayland_env (win); #endif } static void volume_button_update_mute (GObject *gobject, GParamSpec *pspec, gpointer user_data) { /* Switch icons of volume button depending on mute state. * If muted, only the mute icon is shown (volume can still be adjusted). * In normal state restore original icon set. */ PtWindow *win = PT_WINDOW (user_data); GtkScaleButton *volumebutton = GTK_SCALE_BUTTON (win->priv->volumebutton); const gchar* mute_icon [] = {(gchar*)win->priv->vol_icons[0], NULL}; if (pt_player_get_mute (win->player)) { gtk_scale_button_set_icons (volumebutton, mute_icon); } else { gtk_scale_button_set_icons (volumebutton, (const gchar**) win->priv->vol_icons); } } static void volume_button_update_volume (GObject *gobject, GParamSpec *pspec, gpointer user_data) { PtWindow *win = PT_WINDOW (user_data); GtkScaleButton *volumebutton = GTK_SCALE_BUTTON (win->priv->volumebutton); gdouble volume = pt_player_get_volume (win->player); gtk_scale_button_set_value (volumebutton, volume); } static gboolean volume_button_value_changed_cb (GtkWidget *volumebutton, gdouble value, gpointer user_data) { PtWindow *win = PT_WINDOW (user_data); pt_player_set_volume (win->player, value); return FALSE; } static gboolean volume_button_event_cb (GtkWidget *volumebutton, GdkEvent *event, gpointer user_data) { /* This is for pulseaudiosink in paused state. It doesn't notify of * volume/mute changes. Update values when user is interacting with * the volume button. */ PtWindow *win = PT_WINDOW (user_data); gtk_scale_button_set_value (GTK_SCALE_BUTTON (volumebutton), pt_player_get_volume (win->player)); volume_button_update_mute (NULL, NULL, win); return FALSE; } static gboolean volume_button_press_event (GtkGestureMultiPress *gesture, gint n_press, gdouble x, gdouble y, gpointer user_data) { /* Switch mute state on click with secondary button */ PtWindow *win = PT_WINDOW (user_data); guint button; gboolean current_mute; button = gtk_gesture_single_get_current_button (GTK_GESTURE_SINGLE (gesture)); if (n_press == 1 && button == GDK_BUTTON_SECONDARY) { current_mute = pt_player_get_mute (win->player); pt_player_set_mute (win->player, !current_mute); return TRUE; } return FALSE; } static void setup_player (PtWindow *win) { win->player = pt_player_new (); pt_player_set_mode (win->player, PT_MODE_PLAYBACK); pt_player_connect_waveviewer ( win->player, PT_WAVEVIEWER (win->priv->waveviewer)); g_signal_connect (win->player, "end-of-stream", G_CALLBACK (player_end_of_stream_cb), win); g_signal_connect (win->player, "error", G_CALLBACK (player_error_cb), win); g_signal_connect (win->player, "play-toggled", G_CALLBACK (player_play_toggled_cb), win); GtkAdjustment *speed_adjustment; speed_adjustment = gtk_range_get_adjustment (GTK_RANGE (win->priv->speed_scale)); g_object_bind_property ( speed_adjustment, "value", win->player, "speed", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); } static void setup_volume (PtWindow *win) { /* Connect to volumebutton's "value-changed" signal and to PtPlayer's * "notify:volume" signal instead of binding the 2 properties. On * startup there is no external Pulseaudio volume yet and the binding * would impose our default volume on Pulseaudio. Instead we want to * pick up Pulseaudio's volume. That is Parlatype/application specific * and it even remembers the last value. The first external volume * signal is sent after a file was opened successfully, until then our * volume button is insensitive. */ g_signal_connect (win->priv->volumebutton, "value-changed", G_CALLBACK (volume_button_value_changed_cb), win); g_signal_connect (win->priv->volumebutton, "event", G_CALLBACK (volume_button_event_cb), win); /* Get complete icon set of volume button to change it depending on * mute state. */ g_object_get (win->priv->volumebutton, "icons", &win->priv->vol_icons, NULL); g_signal_connect (win->player, "notify::mute", G_CALLBACK (volume_button_update_mute), win); g_signal_connect (win->player, "notify::volume", G_CALLBACK (volume_button_update_volume), win); /* Switch mute state on mouse click with secondary button */ win->priv->vol_event = gtk_gesture_multi_press_new ( win->priv->volumebutton); gtk_gesture_single_set_exclusive ( GTK_GESTURE_SINGLE (win->priv->vol_event), TRUE); gtk_gesture_single_set_button ( GTK_GESTURE_SINGLE (win->priv->vol_event), 0); gtk_event_controller_set_propagation_phase ( GTK_EVENT_CONTROLLER (win->priv->vol_event), GTK_PHASE_CAPTURE); g_signal_connect (win->priv->vol_event, "pressed", G_CALLBACK (volume_button_press_event), win); } static void setup_accels_actions_menus (PtWindow *win) { /* Actions */ g_action_map_add_action_entries (G_ACTION_MAP (win), win_actions, G_N_ELEMENTS (win_actions), win); enable_win_actions (win, FALSE); /* Setup menus */ PtWindowPrivate *priv = win->priv; GtkBuilder *builder; builder = gtk_builder_new_from_resource ("/org/parlatype/parlatype/menus.ui"); priv->primary_menu = G_MENU_MODEL (gtk_builder_get_object (builder, "primary-menu")); priv->secondary_menu = G_MENU_MODEL (gtk_builder_get_object (builder, "secondary-menu")); gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (priv->primary_menu_button), priv->primary_menu); gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (priv->pos_menu_button), priv->secondary_menu); g_object_unref (builder); /* Setup ASR menu manually; no success with GtkBuilder */ priv->asr_menu = g_menu_new (); priv->asr_menu_item1 = g_menu_item_new (_("Manual transcription"), "win.mode::playback"); priv->asr_menu_item2 = g_menu_item_new (_("Automatic transcription"), "win.mode::asr"); g_menu_append_item (priv->asr_menu, priv->asr_menu_item1); g_menu_append_item (priv->asr_menu, priv->asr_menu_item2); priv->go_to_timestamp = g_menu_item_new (_("Go to time in clipboard"), "win.insert"); g_menu_insert_item (G_MENU (win->priv->secondary_menu), 1, priv->go_to_timestamp); } static void pt_window_init (PtWindow *win) { win->priv = pt_window_get_instance_private (win); gtk_widget_init_template (GTK_WIDGET (win)); setup_player (win); setup_accels_actions_menus (win); setup_settings (win); setup_volume (win); pt_window_setup_dnd (win); /* this is in pt_window_dnd.c */ win->priv->recent = gtk_recent_manager_get_default (); win->priv->timer = 0; win->priv->last_time = 0; win->priv->clip_handler_id = 0; win->priv->clip = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD); /* Used e.g. by Xfce */ gtk_window_set_default_icon_name (APP_ID); /* Prepare layout if we have initially RTL */ if (gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL) pt_window_direction_changed (GTK_WIDGET (win), GTK_TEXT_DIR_LTR); pt_window_ready_to_play (win, FALSE); win->priv->clip_handler_id = g_signal_connect (win->priv->clip, "owner-change", G_CALLBACK (update_insert_action_sensitivity), win); g_signal_connect (win->priv->waveviewer, "follow-cursor-changed", G_CALLBACK (update_goto_cursor_action_sensitivity), win); g_signal_connect_swapped (win->priv->waveviewer, "load-progress", G_CALLBACK (gtk_progress_bar_set_fraction), GTK_PROGRESS_BAR (win->priv->progress)); } static void pt_window_dispose (GObject *object) { PtWindow *win; win = PT_WINDOW (object); /* Save window size/position on all backends */ if (win->priv->editor) { gint x; gint y; gtk_window_get_position (GTK_WINDOW (win), &x, &y); g_settings_set_int (win->priv->editor, "x-pos", x); g_settings_set_int (win->priv->editor, "y-pos", y); gtk_window_get_size (GTK_WINDOW (win), &x, &y); g_settings_set_int (win->priv->editor, "width", x); g_settings_set_int (win->priv->editor, "height", y); } if (win->priv->clip_handler_id > 0) { g_signal_handler_disconnect (win->priv->clip, win->priv->clip_handler_id); win->priv->clip_handler_id = 0; } remove_timer (win); g_clear_object (&win->priv->editor); g_clear_object (&win->player); g_clear_object (&win->priv->asr_config); g_clear_object (&win->priv->go_to_timestamp); g_clear_object (&win->priv->vol_event); g_clear_object (&win->priv->asr_menu); g_clear_object (&win->priv->asr_menu_item1); g_clear_object (&win->priv->asr_menu_item2); if (win->priv->vol_icons) { g_strfreev (win->priv->vol_icons); win->priv->vol_icons = NULL; } G_OBJECT_CLASS (pt_window_parent_class)->dispose (object); } static void pt_window_class_init (PtWindowClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gobject_class->dispose = pt_window_dispose; widget_class->direction_changed = pt_window_direction_changed; gtk_widget_class_set_template_from_resource (widget_class, "/org/parlatype/parlatype/window.ui"); gtk_widget_class_bind_template_callback(widget_class, play_button_toggled_cb); gtk_widget_class_bind_template_callback(widget_class, zoom_in_cb); gtk_widget_class_bind_template_callback(widget_class, zoom_out_cb); gtk_widget_class_bind_template_child_private (widget_class, PtWindow, primary_menu_button); gtk_widget_class_bind_template_child_private (widget_class, PtWindow, button_open); gtk_widget_class_bind_template_child_private (widget_class, PtWindow, progress); gtk_widget_class_bind_template_child_private (widget_class, PtWindow, controls_row_box); gtk_widget_class_bind_template_child_private (widget_class, PtWindow, controls_box); gtk_widget_class_bind_template_child_private (widget_class, PtWindow, button_play); gtk_widget_class_bind_template_child_private (widget_class, PtWindow, button_jump_back); gtk_widget_class_bind_template_child_private (widget_class, PtWindow, button_jump_forward); gtk_widget_class_bind_template_child_private (widget_class, PtWindow, volumebutton); gtk_widget_class_bind_template_child_private (widget_class, PtWindow, pos_menu_button); gtk_widget_class_bind_template_child_private (widget_class, PtWindow, pos_label); gtk_widget_class_bind_template_child_private (widget_class, PtWindow, speed_scale); gtk_widget_class_bind_template_child_private (widget_class, PtWindow, waveviewer); } PtWindow * pt_window_new (PtApp *app) { return g_object_new (PT_WINDOW_TYPE, "application", app, NULL); } parlatype-3.0/src/pt-window.h000066400000000000000000000032351414030451500162450ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 2016 * * 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 . */ #ifndef PT_WINDOW_H #define PT_WINDOW_H #include "config.h" #include #include #include "pt-app.h" #define PT_WINDOW_TYPE (pt_window_get_type()) #define PT_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PT_WINDOW_TYPE, PtWindow)) #define PT_IS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PT_WINDOW_TYPE)) typedef struct _PtWindow PtWindow; typedef struct _PtWindowClass PtWindowClass; typedef struct _PtWindowPrivate PtWindowPrivate; struct _PtWindow { GtkApplicationWindow parent; PtPlayer *player; /*< private > */ PtWindowPrivate *priv; }; struct _PtWindowClass { GtkApplicationWindowClass parent_class; }; GType pt_window_get_type (void) G_GNUC_CONST; void pt_error_message (PtWindow *parent, const gchar *message, const gchar *secondary_message); void pt_window_open_file (PtWindow *win, gchar *uri); gchar *pt_window_get_uri (PtWindow *win); PtWindow *pt_window_new (PtApp *app); #endif parlatype-3.0/src/resources/000077500000000000000000000000001414030451500161535ustar00rootroot00000000000000parlatype-3.0/src/resources/asr-dialog.ui000066400000000000000000000346201414030451500205410ustar00rootroot00000000000000 parlatype-3.0/src/resources/config-row.ui000066400000000000000000000055511414030451500205720ustar00rootroot00000000000000 parlatype-3.0/src/resources/goto-dialog.ui000066400000000000000000000122061414030451500207200ustar00rootroot00000000000000 100000000000000 1 10 parlatype-3.0/src/resources/help-overlay.ui000066400000000000000000000142241414030451500211240ustar00rootroot00000000000000 1 1 shortcuts 12 1 General 1 <ctrl>O Open a media file 1 F10 Show/hide action menu 1 <ctrl>Q Quit 1 Waveform 1 <ctrl>space Play/Pause 1 <ctrl>Left GTK_TEXT_DIR_LTR Jump back 1 <ctrl>Right GTK_TEXT_DIR_RTL Jump back 1 <ctrl>Right GTK_TEXT_DIR_LTR Jump forward 1 <ctrl>Left GTK_TEXT_DIR_RTL Jump forward 1 <ctrl>plus Zoom in 1 <ctrl>minus Zoom out 1 <ctrl>G Open “Go to” dialog 1 <ctrl>C Copy timestamp to clipboard 1 <ctrl>V Go to timestamp in clipboard 1 Help 1 F1 Show help 1 <ctrl>question Show keyboard shortcuts parlatype-3.0/src/resources/menus.ui000066400000000000000000000024471414030451500176500ustar00rootroot00000000000000
Preferences app.prefs _Keyboard Shortcuts win.show-help-overlay Help app.help About Parlatype app.about
Copy time to clipboard win.copy Go to cursor win.goto-cursor Go to… win.goto
parlatype-3.0/src/resources/parlatype.css000066400000000000000000000007031414030451500206660ustar00rootroot00000000000000/* custom styles for PtWindow */ #time_label { /* Tried Cantarell first, but digits are not always monospace: They are on Debian 8, but not on Ubuntu 16.4 */ font-family: monospace; font-size: 150%; font-weight: 600; } * { transition-property: background-color; transition-duration: 1s; } progressbar > trough { border: 0; background: transparent; } progressbar > trough.full > progress { background-color: transparent; border: 0; } parlatype-3.0/src/resources/parlatype.gresource.xml000066400000000000000000000012751414030451500227000ustar00rootroot00000000000000 window.ui menus.ui goto-dialog.ui preferences.ui prefs-asr.ui asr-dialog.ui config-row.ui parlatype.css help-overlay.ui parlatype-3.0/src/resources/parlatype.ico000066400000000000000000000226761414030451500206650ustar00rootroot0000000000000000 %(0` $}}7|~ŀ|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}|}Ā{{6}76ʼn󎍎i`dVJOYNRxptwptYNRVJOi`dTGMF8=F8=F8=F8=zruxruF8=F8=F8=F8=THMF8=F8=F8=F8=F8=[PT[PTF8=F8=F8=F8=F8=F8=F8=F8=F8=F8=XMRXMRF8=F8=F8=F8=F8=F8=F8=F8=F8=F8=XMRXMRF8=F8=F8=F8=F8=F8=F8=F8=F8=F8=XMRXMRF8=F8=F8=F8=F8=F8=F8=F8=F8=F8=ZPTZPTF8=F8=F8=F8=F8=F8TGLF8=L?EL>CF8=TIM|swF8=F8=F8=F8=}vyF8=F8=UJNUIMF8=G9>ogjF8=F8=g]af]`F8=F8=rjmSGLF8=F8=]RV\QUF8=F8=TIMQDHF8=F8=G9>bY\bX\G9>F8=F8=QDI`UYF8=F8=F8=F8=F8=F8=F8=F8=F8=F8=aV[`UYF8=F8=F8=F8=F8=F8=`VZbaa`parlatype-3.0/src/resources/parlatype.rc.in000066400000000000000000000016121414030451500211070ustar00rootroot00000000000000#include PARLATYPE_ICON ICON "@SOURCE_DIR@/src/resources/parlatype.ico" VS_VERSION_INFO VERSIONINFO FILEVERSION @MAJOR_VERSION@,@MINOR_VERSION@,@MICRO_VERSION@,0 PRODUCTVERSION @MAJOR_VERSION@,@MINOR_VERSION@,@MICRO_VERSION@,0 FILEOS VOS__WINDOWS32 FILETYPE VFT_APP BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904B0" BEGIN VALUE "CompanyName", "Parlatype.org" VALUE "FileDescription", "Parlatype Media Player for Transcription" VALUE "FileVersion", "@VERSION@" VALUE "LegalCopyright", "Copyright 2020 Gabor Karsay" VALUE "OriginalFilename", "parlatype.exe" VALUE "ProductName", "Parlatype" VALUE "ProductVersion", "@VERSION@" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1200 END END parlatype-3.0/src/resources/preferences.ui000066400000000000000000001147751414030451500210320ustar00rootroot00000000000000 1 60 10 1 10 1 60 10 1 10 10 2 1 1 25 200 100 1 1 None None # #Number signs# ( (Round brackets) [ [Square brackets] . . (point) - - (hyphen) 0 Full seconds 1 10th seconds 2 100th seconds parlatype-3.0/src/resources/prefs-asr.ui000066400000000000000000000324231414030451500204200ustar00rootroot00000000000000 True False list-add-symbolic True False list-remove-symbolic True False emblem-system-symbolic True False 12 vertical True False No results in this view False True 0 parlatype-3.0/src/resources/window.ui000066400000000000000000000362711414030451500200320ustar00rootroot00000000000000 -3 3 0.10000000000000001 10 0.5 2 1 0.10000000000000001 0.10000000000000001 1000 1 10 1 1 0.10000000000000001 0.10000000000000001