pax_global_header00006660000000000000000000000064135324412470014517gustar00rootroot0000000000000052 comment=a3677d68e8082637235380f3ba2c6871116e8092 parlatype-1.6.2/000077500000000000000000000000001353244124700135265ustar00rootroot00000000000000parlatype-1.6.2/COPYING000066400000000000000000001045131353244124700145650ustar00rootroot00000000000000 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-1.6.2/COPYING_CCBYSA000066400000000000000000000023541353244124700156110ustar00rootroot00000000000000License for data/icons/*/apps/parlatype.png and data/icons/scalable/apps/parlatype-symbolic.svg: This work is licenced under the Creative Commons Attribution-Share Alike 3.0 United States License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. It was created by * Gabor Karsay using and modifying artwork from the * GNOME Project, http://www.gnome.org License for libparlatype/data/icons/*/actions/widget-pt-waveviewer.png: This work is licenced under the Creative Commons Attribution-Share Alike 3.0 United States License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.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-1.6.2/NEWS000066400000000000000000000200361353244124700142260ustar00rootroot00000000000000Overview 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, unselect 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-1.6.2/README.md000066400000000000000000000070411353244124700150070ustar00rootroot00000000000000# Parlatype For a screenshot, an overview what Parlatype actually is and packages please visit https://gkarsay.github.io/parlatype/. The following instructions are for developers, contributors and those who want to have the latest version from the master branch. ## Build from source ### Dependencies Parlatype switched its build system to Meson. To build it from source, you need these packages: * meson >= 0.47.2 (older versions not tested) * gettext >= 0.19.7 * appstream (main package, not devel version, for metainfo.its rules) * gobject-introspection-1.0 * yelp-tools * gtk+-3.0 >= 3.22 * gstreamer-1.0 >= 1.6.3 * gstreamer-plugins-base-1.0 * atspi-2 * sphinxbase * pocketsphinx 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) Runtime dependencies: * GStreamer "Good" Plugins * If you need MP3 support for GStreamer versions older than 1.14, you have to install the "Ugly" Plugins. * For the LibreOffice helpers obviously LibreOffice (>= 4) and also libreoffice-script-provider-python (Debian) or libreoffice-pyuno (Fedora) Debian based distros have to be Debian >= 9 (Stretch) or Ubuntu >= 18.04 (Bionic). On Debian Stretch meson must be installed from backports. Install these packages: ``` $ sudo apt-get install meson build-essential appstream libgirepository1.0-dev libgladeui-dev gtk-doc-tools yelp-tools libgtk-3-dev libgtk-3-0 libgstreamer1.0-dev libgstreamer1.0-0 libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly libreoffice-script-provider-python libatspi2.0-dev libsphinxbase-dev libpocketsphinx-dev ``` On Fedora this should work: ``` $ su -c 'dnf install meson appstream gcc gobject-introspection-devel glade-devel gtk-doc yelp-tools gtk3-devel gstreamer1-devel gstreamer1-plugins-base-devel gstreamer1-plugins-good gstreamer1-plugins-ugly libreoffice-pyuno 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: * `libreoffice`: install LibreOffice macros (default: true) * `libreoffice-dir`: installation folder for LibreOffice macros (default: /usr/lib/libreoffice/share/Scripts/python) * `asr`: build with automatic speech recognition, requires sphinxbase and pocketsphinx (default: true) * `gir`: install gobject introspection (default: false) * `gtk-doc`: install library documentation (default: false) * `glade`: install a glade catalog (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 and GST_PLUGIN_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 1.6.2 and you want the program only: ``` $ wget https://github.com/gkarsay/parlatype/releases/download/v1.6.2/parlatype-1.6.2.tar.gz $ tar -zxvf parlatype-1.6.2.tar.gz $ cd parlatype-1.6.2/ $ meson build --prefix=/usr $ cd build $ ninja $ sudo ninja install ``` ## Bugs Please report bugs at https://github.com/gkarsay/parlatype/issues. parlatype-1.6.2/data/000077500000000000000000000000001353244124700144375ustar00rootroot00000000000000parlatype-1.6.2/data/com.github.gkarsay.parlatype.appdata.xml.in000066400000000000000000000103061353244124700246760ustar00rootroot00000000000000 com.github.gkarsay.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://gkarsay.github.io/parlatype/ https://github.com/gkarsay/parlatype/issues https://translations.launchpad.net/parlatype Gabor Karsay parlatype parlatype libparlatype libreoffice-writer.desktop ModernToolkit UserDocs

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-1.6.2/data/com.github.gkarsay.parlatype.desktop.in000066400000000000000000000007201353244124700241350ustar00rootroot00000000000000[Desktop Entry] Version=1.0 Name=Parlatype Comment=Transcription utility Keywords=Transcription; Exec=parlatype %U Icon=com.github.gkarsay.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-1.6.2/data/com.github.gkarsay.parlatype.gschema.xml000066400000000000000000000072351353244124700242750ustar00rootroot00000000000000 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 false 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 parlatype-1.6.2/data/com.github.gkarsay.parlatype.service.in000066400000000000000000000001411353244124700241210ustar00rootroot00000000000000[D-BUS Service] Name=com.github.gkarsay.parlatype Exec=@bindir@/parlatype --gapplication-service parlatype-1.6.2/data/icons/000077500000000000000000000000001353244124700155525ustar00rootroot00000000000000parlatype-1.6.2/data/icons/16x16/000077500000000000000000000000001353244124700163375ustar00rootroot00000000000000parlatype-1.6.2/data/icons/16x16/apps/000077500000000000000000000000001353244124700173025ustar00rootroot00000000000000parlatype-1.6.2/data/icons/16x16/apps/com.github.gkarsay.parlatype.png000066400000000000000000000011301353244124700255020ustar00rootroot00000000000000PNG  IHDR(-SsBITO pHYs B(xtEXtSoftwarewww.inkscape.org<PLTE```TXTUYQXZVXZUZ]XZ\XVXTWYU.467<>ELLFKLPUUQVVTZYUWS]cbbgejpnkonkqolrpmrqnrpžſǿSA tRNS@ElIDAT].CA"J*؀ "?Dn{gKдP"VPL/Cl.J0JJ+k7o!N&<))-69Ur'yFAiY \GO ԏ~. `Q.&c@~ y@IENDB`parlatype-1.6.2/data/icons/22x22/000077500000000000000000000000001353244124700163315ustar00rootroot00000000000000parlatype-1.6.2/data/icons/22x22/apps/000077500000000000000000000000001353244124700172745ustar00rootroot00000000000000parlatype-1.6.2/data/icons/22x22/apps/com.github.gkarsay.parlatype.png000066400000000000000000000021261353244124700255020ustar00rootroot00000000000000PNG  IHDRĴl;sBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDAT8k\E\ftň j=`R >TQ7/PJ}NUꓥyH[ч4M&眹a׭m, 0s>9bll(TEƘEi:hUFw?ys<2r7J)RH:cBHB;O3=}id{/^iʦ6ţ333M5ZGh۽D I:pb9ǃkO_hc@}F|eG9Ka.\<@snHQ959{f!(%qkje I@@ cXkpIUXgɲ iBJIU8u k-J+6[ǎgc\B Ę ߰Z4@y퍷}w7A^4Ͱ#1$I)%b7{?IM.i6nX'{]*wIc̭`T!S?̖'9L)umOmᗳg#DJE$gY ׈J$Jv}} ff2gٍpf2ITȑ .UL`aE_/RH$iBfn}cEJ>/|Jp< "@J7B HMBO&"J) 1GMFE@JKf`V.<'yƶT#R.?'KKKeIG5)wI=/|y+LJ).a2)>ۮDP8~3o}ڭ]fertfCC  I(bpp&Xp^Bl sOfh rX_zǗ֮]WT*T*jgΜ1WƁ98˳ ߑ ?!,B^`X;-0\!ؿ@iIENDB`parlatype-1.6.2/data/icons/24x24/000077500000000000000000000000001353244124700163355ustar00rootroot00000000000000parlatype-1.6.2/data/icons/24x24/apps/000077500000000000000000000000001353244124700173005ustar00rootroot00000000000000parlatype-1.6.2/data/icons/24x24/apps/com.github.gkarsay.parlatype.png000066400000000000000000000021671353244124700255130ustar00rootroot00000000000000PNG  IHDRw=sBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATHkUsfvI&# 6JKEҦPUAAE/ UB#i שJ4æ*-V1MӤݙ9/v;%55f8=wޙ3pq7 ;܌MΊO'&& ۷nЁ'oE)RlBs)I`&i{$\<<ŋa=mOl dvv<W &$MS%nZk-?$I;F~26f\?uC\2azkR2PXk+Bs]/֢K4u&B ׮U"C8G0Fcm kSDQR )%AG9qغi{݃!icc5%ev0EPs~|)o3z>8o.j(Ƙ 2֚0 R"d/ٺe3CWOH7a|62JgjT!ӿʎZ9UJaa~;{cH?qkOԍT%ۀ5==r9fgv d +b vq#G~$3TM>֚5=H!QRF! IS1H)R݃7LOy-RLM`8~H)1Ɛʀ,!AC]=6EQJё 8zl PD R,u+h v @>A8粃{NU)%2qsTX(<6lXO3OV& /{}kuD!(cM$NOOGo~*+DVsϷ}O\;EئeJ&܆8@OZsFq[IG1j Rhh4zz7nܔ+JJۆTUΜ9.s?#u@ s U!A` aYs,ܭ(ݭIENDB`parlatype-1.6.2/data/icons/256x256/000077500000000000000000000000001353244124700165135ustar00rootroot00000000000000parlatype-1.6.2/data/icons/256x256/apps/000077500000000000000000000000001353244124700174565ustar00rootroot00000000000000parlatype-1.6.2/data/icons/256x256/apps/com.github.gkarsay.parlatype.png000066400000000000000000000630001353244124700256620ustar00rootroot00000000000000PNG  IHDR\rfsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<e}IDATx}%E_}ss''D2HUQ aeW]sw}>uM>Sq$agnuUwuuuwu:{PJj^jjm7Lښk1.ڀp, M\RQ9, !$A蛊A]"ߣ~6@s-V@ . ePsp૿Әj"_nK|"h iaG^WEP$B-w+F1&?\u8ᷥvR"h"g$-ζUVu~}%W^68?\/TS؛>3i3{ٷs۷oݺujlll^jDQB PFh}k^s>cӦ#_;08p&>e|NhZ4Ѐ)öm߾m}{?zQs\(ʀ@-@).$:/[x!]tWoXrk:[-ò,'hE'(o翪]j j*3#?GUA#(%(\h_-ַͺuk/ikokkmm{6\|8gP >^,|qPj{ @\\Eݟ,(Jfgfaffz[o{%\ER0^$_W8s;mjWlkI ` )γ}(}\ GR@! @+/:ꨣ.mu]0AC(2w.\4@sIAx92e1KoB ed6>ScǎMo'xbRJCːv,? ?~*E짧lH(j*QoGqعs5guֻ;f%%P;ZJ??׾>@iB`68U\I9bwX y4 7`3|zy+J@Džbq{Wg+#EjD-8#dŊ @wW7D>p2E?lUclQ~OHbj@o\p?X3e.Ga_hA* jQ3tXȁY~"ijjͣL}-W-[?MkHY~ѹ6h,L "?N>MxWWWt2})î)܋+#?ϯy&pP|? UϞ)fGwӑKG4 qt@@wQgg f y@ !A+BD(%8q ݴXͣO(E#Z~_}޹p~vr) (1gyM|{{G[ >>+FqĒ⫤EҴ^pfPsKBo/gh?D67UCLn' *%'?C!eB+Цy_օEN{nBO|χ,Ėa}~!j"C~OJ(ۇV} V[}d7uQrk[+˒=3/dl<|EE.~ w(w5#PYǠׅ?eWugD DhjL&_c( I/jWh%`P2ҥKOݸq͛7s7eMn*"*So"8?c >ۅr8*)WeDpڮr\hB8l@alnQa;y'J@ P{LP[Z%V]u+Ġ&LeDhk^vx_W6GH8Ğ!`srK8O^8?W0@KjSN=<% N>LȤ \xUX0+ #:pQjFwFӇSOFt+ϡ?)l P2YR8kD6ۯzUO|Jٰ̇󺺺>1333!@nasTܮ(oc ʫm)I)6?_ kj.S[oHi2e$ϸ(*8*P{7;ҺqeT0FK}*ކ޽pn ڜ<zO0K\˱و8@m;͚B} + ~4~_@:{Q,&|(I 4W(Ŵ^Ͻ X`kxK'U߽DžM=zEE`P@k=5r kBOf.pGEW`彏i_ 'p] @Dj'r/9O¾ ώo mmK#?l٪(JCiR= ťxaʳfy ң;miaZ%^V T9@"> _m(O5ni.QZ{EjXPB֭4 xՖHm3JpȈ8/HPĶҨ_,;OƓJW΅`j_0K}ᖐd0!~0q~ ƞ="^\CqVW1_L0Y"RED|%PI<[aPUu߫(eg`X<\kKiKhq%Q~Zj /Iƈ8RzUo9 #jH.ԄDB 87z<\Ϥq 6Ԏ3al^nL|WK"6)OAt%D}WBv3tsuOb%5Ȓ@I@мPi̷Igjf?u?'<X>E3,> " >Mqa+(Hz /u7;yD%?KUZ2؅Z"\+|S9FzEg/ .Z{vڂ$us1G]Ta*^z~dl.wQayX,LsŢg0#q:/m\ A[[>xL5\7T0^g B;ȫ}GzQ%UKoZ*$L P1_}{`߁}P,4%MLwnpaIê] }}Be1QH׼(ᅓ@\ R/J^3 a/TKG  |$HNm[`zf))0Gqr<1iul|&&`ͪ5؍dHj6WԜwR*$z) `%! uK =EB2j{e_s:۽w޳oDZC%TX,Kk$I& 0DŽ; Xf-k퍨DjFcY~YiJY 2\`$`H(9,η#`>xYO_la|blqe =idazf1ޙ~| 90hkmh*}O|X/EM_M]"Gl7Эy 0 [" f/J!y?js,1ZpLǐq$˂7\Ԧ~Mᾘˊ|V Ul?W-\w܂_ '97F4wjiie eӓ066 ==a_P{*&(ɍmEdO) C`3ʐ% n'wn+$UI}#JA&Vk+{AjohB 1AG* E`v[{>{:Dd #E =980Aގ鼈p ѱ"_ .YE"Ҡ l>E0@"y܃„).yY[0??:YLUaU Bbb -b 03;S_is h}xIZ[&,aPA,Y*JpUt/L ~-LXI>otGepg*5Q:0JP!3* lXGY99HpGͩ5‘Bc~^o h:;: :;ߝ(MY?7sC?(pxQvZb_+mXF jyxbWrYTYkOz[tA_? @{ =ajjj&&arrEP  r@T a y>팛0(e=Z%0п{X`xff&Fatl86,eeZ9 ?EIYbtВeL|Xb =S BX  yHV˻%4J)@ths,$lٶ nX1OsLOOq2MWW'.V ֭  k׬F%]Av.ܞ7%4L*"b!`5n`}x^xbؼu+ m~zظaw1p'U݄W2GqaU&e퍰(X9(`L@H@4x\ "rO?2 BlBА Dmͪu Z'۶Ýww}7aaئ'=׳֬^ |2St"tt fҭ]:n;Y}D@S}eԌ`qFx*Y[T^Yo}5;w킟_u;uxs/} מ! "Y(1'hԗGJPx"Y@*ȈEJ!A=X /[??W_7|#Db!fǑp az{`xd?ݿ%0hR >W]X);5x~ȇ@/aV?G+ ~(Fc%o} <UvHj޻ U3_R F\0+*D@aC!h mOqBuo ֺ~? \{ԧg?o~QZ~@;۞l԰FKPDӄw@# [4hYKDž tWҶᗿooFFGQ,zg?.8.β9]]p؆ML &tWYT=$P{PkvZf _\TY==püu|Bno ^ 8 ;%o;X/R:!j7Ȇpa;b,tD߮ݻk&|mp0.$-5 7}n@)cJ`ݰ_?m!$ hX~dStٹVKWjOw0yffg?[ȇ?!hHsۃX 2%T@q@7M5Kbia|aW'bӺ%]X_.{J0S_ΈBz(ů>fs( I*8|Z+>{+W|KzϏ;^m2fCv& fwQb_@=4!.sQoM|4|Y}(:|b>ap*Xr:p`wrXSbG*H1Be2E$P/6P1PA@PAo<8&9X+Wf5׿]]ipI'z ;rnpw{G||NTûNE%f F!nLνciolb%=l<.tN;d[[S|y~=Zjg﵊dSԑhT`lЛFkEe֍$d]G+{e ;v}myiwK[L#kƉB=aro\eg,8_7|+_ݷߜ'pBu;hkaaa>;g[# @!%1 *ϭ MN7GaI./}.'n?4RQlwbBMB=s:gTQ)b/}s"ZZe ]uk64g@\5(L@SDV hZ@~qa8kוga?xvOMO;=qBUɏ<ؽgKEW8s] b>EŻlܙI@J.+`0p'h%Y~iTx 7EF9/jwu|o互׭/p ݇p=3FBWc9۲q5005:5ĩ~0*6mUrd׍x@mN8M欀?Gr> O~:3O|r8dg.+hE b3;ߊ.;.y|C+ta2L$^Mw߿ůV؟߮"$xN`m=9p٥VX|"ި&f!G'-}γhQ{~ 6 2KB!xd@% dH ьDkRx$w [|uhZznO:| oq|>^ST͎K(:‡vAW_W.[K"L@H "-t-X@ޢgA Z2_/ٺkcS2"ˎ$|e>7"AkUFsˢY˚ȫzG%@)1]g<_&nrFbիօvu7?Hk$٧c}dPPĤzD R!8Xusrm2*~, ~(@Y?Iorr<q#wv&RXooJ_?xj|h  stGtgYo ׫XU\~Р#T?+ (ZGxIU!rk&%j0' 8ȁ{)E ?Z~ǶUi-0<6=3^X{C(tL(4݋_{ ˅`>(> yS\O`'5=7+2Њ|ۭ­}/ T#BA_pABu}E굨?31WY0@R䟄|&¯@],cg>3X;<:ꍄ8/B ! {bK [۠ZEx糮@Nq4CW7 't"tw;<-XV3:tDFA (e0HH{+U:HժvRޟMIb¯? W,F[LpY#y&V=ͺ{Y dEUR.3蚈 :nZk !5 ~\>Y?Z"cVT^ cK$sN:)}bWOwOf"'(! ]42O +.@NgQi?=x3B~>zi~^O!419=z<3۪m` 43Mv 7r#xWG{P`_m _F_݅j+sl%3P7<RS*j$rH]mJm2]O;5gEy d݀ "c9:q{pݘ%j"F NMC!וOogmٚ^`ӟ%! r R Aa': oܰ!VT5ej@A5k/ħ~5\SҡP$UX?gejwv,\l *Jz׾XF44O>p4xf`k)Z*U 305٫ fœFn?GvX ezZhVik4`Y``Y7CĹ9㌤ kƓٲKV?LDroxȊW<EQG$YU7p|( ]\J 姰b@ ~iHxFs[ߘ/qY,]:ThaFgEB|' \B&OYtg;'QCщ@Dc5fg3( k ~|@^l%БP=i5Q HDh$ [~'F4B ("XR@HeK c]Kɩ@DtUZվ_B.@@Y/[pS@b*rtS\ ~Df8;}#0ܒdZEzRtFaXFԋh(hb:y߅S!\MY/'d5!H&H;H3(yo 6i jcIU݋O t R }xth&k 1W(@ ʁ)Ո9!AYfS`ID3J|p7Ni& `D"RMX3P*~.@ {} k" JZ\V,@Y47k5?ôc#1 :կ7nf]T b%V-Aˁbjv~&诳ҚU+Ww7hukMgHXV Z6؃~_җӟߩ.*k+vc:eMArRd(_f!%*\;w?NC+Z ݁i ۗW]U[:n$ZTElqpӂZP|WZR6HC)EPV|#*o 膾kUS;0 ~G5o ^XV[" '=zn n քڱs|쓟 opx~X,1=} - J|5n?<?X_Jr$::]Xueh x*04M?uQY _aoXB0j>_y~#ϋ:xG R ԕE(aGkCӳ eGU +r{3 ))7FMA>?='6+tϫ e?ٙp:1G?f +ᬻir@"P`_^#pZafuk@"n>4 Q?fCD1G \W_{ma=Bүpœ;Q6@ *Z!_Q܀udMNE"M^0~StEc{ݏ1{_MA\i#P*! F: A%Op ݶv:A–e^pL2lkeB]/z &'ԍh`YPB␿T719z?Ĥ&_0!ju=?fSd*0>X(@NGm` `|@0d .]ik/xu70'L5 )"jE3J uVzjpp^ amGjO!_l9fW*𷮓S o@4L"H3+o%HсZSLXX~|'?)xV$'H.n@o>!F")?sp^[MBԾ56&3*5_/Sc>kh})q8D dWuIkr7k1zv'_WA0[ A .ON4*(܀O= !VCMlG}L;P̅ Qg).ܴ5UC%J.53 UIDF>Iy$:335ؗQ.Bd61=K#@}7@($fO?X쬩-O~_-ʗ,vy-}>5p8*b2MOh0D,>) :dmr^mA)j" qilKz%y lȞ%$(0>\t590LCT+6{kVjZY~γ>N R(J1rM%<Zp!kV"|pO…|::U5Cj#/_^ge=$,c",.dk3x"`f RSN re-la +'&( ;dySPZl? @?p'VB`)"2F9mzQg߻eQAl jJ~fMBksere~,s7 @n"]E* ~XON RxMgm@ژ?(N c(!)d02v }BKqAK"%9 U<묳X8cƋdㆌM yf/Ky$@YS>0QJ /} \/x2߅̥RPskU_J֑)(2P6u0,.L (?_(a7] xK {+;d'Fuu"c}^cO~ ^[;l Vŵ hDpH0Z=v:2쇿]dG^4-CTD &%/|!¿}]Tڗ\*yM=F)Jqg)iPlo3߆ ~qJ`a_Y>Oa7dz=9/^JA+$u #o>O>3rFF]R]z/k!I@hUG"!`ASv? kWأooW:#u>YP[/<q85KiKs΁z|?n14T]n^"= -YC(6se1,m%}4|+* *]ZA{[{ȏR#&=§c.PUxrVXl!e\vgؾI6;P3N; N<'+~ąd GwKW?-$" j'S)~%-jd~kL:xd+BN7=07ƕ ](fODѨki%065Hl-Sk ҇-?M[ ź0:0=3 K,H^pdm|R8:~tK";.|۟c)9ʄ z)ԝA S,.dkϓlxҡg*4؀]+Q/4a܈p^P݌tHYIaB@\Z|[\S#: 9];voc{4˔ 7VӳMFNWn-qH[KdBhtgڣcTA[\7ï ^Q -]$c%VGg^܂.8h!9'4ֺ=Q JQ4(xrٴHӤP{AM@S"Y.>B<\$AX= a˦B"H2ϲ#0TpEi TGY,zL<>' %^p^d7@J%G]-%g[n=q1r|MZ'^Թ-d#8q?;_e~S$8PNMɰ=b+=0AReMMyɀO'|ω`f߻Ft kX.VC[lCu*wOمʪL6F2?UlN9!Xە+V[@n80A-$O_7q~" &eQ!.T^׀ A~ldd.Ob3OP4ۏkf m-3Ĺ"FC,V@pbsv'lܸ؞kՊ5nISuG)<#Q )8k>jPi@QnKnb=]=Z}p?=-[)d_Bx$JDp^-:q]e.j 5z~dB)F[W2 Mcmp{k; 6АVJDt"* xkBJH}N ~Ng=yK$I*̈́Ssn,RJܱQxbod32Oȷw,5ݖ-HOQdJv 4D=?'"\} 6ijXJ0~90W̯]]v6-Ρ x(H 1Fa጖;AVw2Yyp-5 ˑgf`jj *`Id~EAb`)7Wɞ/8+i\n;ZM?USj -OI3~pTnP4%`}=E:jՋmjSPE#ٟ#(tn-"t~ "c)fo\*H"!YeQ\⛂J`Ikky= O@1 t,?l)T<\#~2EixLA" :Lo}2y0C fpe^gF2۾[j>d=P1{B!w_ JQ4M^T#*K!&XKšj] N߫AU6 8Og8Q ѯ@#7^prLkyh) ,oݩIJ߫Hbc/݌S$ˠ`[~T7!HԄ.dQ^ -ֱþO$ "x.4.GNJM]B{ ;C '1D &q *a t"Ya$ e4"yQ41<$^[qpMASICa@"b ?bE3Pi6wD g2"iVhxHiGHha4Fʾ'ơh` *9o(C[oO rU0oj@oXp!]a((%:EB"{jU-L#%̧ 3?T˾P?ElU;8Ia% XM i<1@ C4Iu D(-^/dZm/N !_9H@Syzt+M(9!"pߒ"\(Je<Y d]'H/wOQ\O}v{  $ta>` ʫ$RQA)R;2FLS aK Uʂ]7 :P4ZADK~0@/ QDQžU x9 S[L]2Gd`ؚV ,qEҕI )lx@©n%B5e~@KdV)p3nM-Sr4Mr~ B`PXQ5 b= o%}TUOy?:KquAf}h0eBzrD@XB\#Ȃ MJ0 -AKSUE0"9BA*#5I\)8_/4jXzxvU5P4t$$&za` ~8_(hRu"4ŃVM( ]Ov%|š@&.ģT^%Эpp*YIH(BЗ,mbHHohIm2wxs!P)%'uVDtC"[LxLVfE:nT6p*J@z$/<*Wʾ!{m@f{χ@.mLo0+ p HQ` x?dny-%DFYy9G ug|q&!›ceE64; ?,g7h񰵗"P-1E`y8zP|BD-P*+,}Tbm:yOlp@\Gn'''„V}\E"j}be0m %/gOD[#RN4=ζ5)XfO{y@m **0GVH;"'-Byzb4nnBe)Q%@k bgoϏ=~ӡ qLWn $V /yJ)H; /ɿ(?K ~nW >߹ID,?0n 3:q@hcJua-,,L*_(* (4Ïs΂K|hm9R_I]˧d7gC{˚ѢB_P5aAV?\ "="JE"s̓-ݚmy~"Zw‚#}쏊(lhxkY&+<ȍW.{ueah;M/c ~^.["O$JȀ l4@pgj73+€ %o%(4DYBE_d{#~IodmmבNٖ30:Ǣφwr,.{ | 枞~˦.@@+qgs@3!rlOԾT>''`={zOw;'qZqjQsrG{9]=mq&?E]T6 k$eHQb=e`}|܀LF"&L \Xp ]G5_~K\P?~}ڶ=# h'i @"i@5;333>a@gWGR62(ϘA G0&f7s~a 茁7ߕ#02<rU[lyeT4n@]@*Ν;kW썭mlhGg/@Y1ŖE XBZ԰ᢿ"-т~3X8?Ak:H,cHt)sx$la~&?<< |{oף(¿9 H"P,;Xrڳ>h7M-M'/Bm=F s%4@j)@Y`c?I~95žRUBT#nÄ '6/stXd  \6h?ۮ Wwvt|Iatuv' ATnSm;<aN(xcg 1)cR 3i](6fd .lL0bbpG??+0.) P-/#Dqsö+ǻ>e t܁Nhw\J(6zhpO꼷eWr2 4=6y8gf`||FGFoopNF?) l<wğz@ost;Gs:Gs}k^W?oZcĄiV FOQ!TXsVBLL݁hY"xHo.}7 Jcvv&aϾګ7o &1D@RhPB{֯_/~yׯ]]ݜŝ'@AV~zՁrk0G r2xO8nzA5R*>u4RY'YU ZBծG'?67zۮO*Q<ŸK(JWP@6 tGQm=:?^li{G;t:JDn T -6qd bŌ~/q,w揻?EQ1X}e!dGٴ`> <aUTy~{ǝ 㒀OJǔt.6_W X (#q/*Ξem8l '<[r,D-ބ!~g/B⼂v^sL-Ye );>gWZx;}?ľ}v9(Vf?J[Tw+%(Ia -Y;0;dv䴪xy"W 4sJ*CE5+}8e{ss3N8(ٱ)霸_h@ `i@F? .ЄP*cSFs-w?'*3VV32*e ?@AA YEELIU"H 'ʜ,V0Z⪒fDmT_H:,vI (@ BemF)qT09龨҄P#*], Ѝ4&=؄`|4 ##P_+eBF %YKB/ K @ A{x*~PP{!m #CO$A2oppI?.@-8}-L5llI+ G)~%]u^@ #f]쟍ܞ"?(B'L/]D((Ge BTRŹ:%`k]'~e  F["%)gMeWkqQ>g-f @@#Īu'1pMi*hz ~@"ˮ7WS{n #&\~UA&T͵XBBh ~s5*^P\&Le5/As5WS4Ws5WS4Ws5WS4Ws5WS4Ws5?-Lx<IENDB`parlatype-1.6.2/data/icons/32x32/000077500000000000000000000000001353244124700163335ustar00rootroot00000000000000parlatype-1.6.2/data/icons/32x32/apps/000077500000000000000000000000001353244124700172765ustar00rootroot00000000000000parlatype-1.6.2/data/icons/32x32/apps/com.github.gkarsay.parlatype.png000066400000000000000000000033321353244124700255040ustar00rootroot00000000000000PNG  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-1.6.2/data/icons/48x48/000077500000000000000000000000001353244124700163515ustar00rootroot00000000000000parlatype-1.6.2/data/icons/48x48/apps/000077500000000000000000000000001353244124700173145ustar00rootroot00000000000000parlatype-1.6.2/data/icons/48x48/apps/com.github.gkarsay.parlatype.png000066400000000000000000000052021353244124700255200ustar00rootroot00000000000000PNG  IHDR00WsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org< IDATh՚k\E53݄< <7 B#BT~R<,PZF4F bPSbIDD Ynnv7;ﹷpqfd)9}1B/j3o[em:zTZqדm۞PZ8yؖ'r1F֭_l=unJ )%yd5!$Z+~Dqrr?}1jN[ܻooBq\| "] ޖ&JQ.ٺ7 _s nڴ)aY8`PJ-Zp]um7-=;Fmр5F_)*2 paYRȓ-u=\T*1=W)/"vstaNSˤmX< KBP(s%Q*" r4H$S`b(hN-?%}/\.S(T*hmH*C5\*st75hbbj"FQIs-{ɩ '%LUme4'ٱa ZҀ@}?f|+c[}gd@JŅI\]uA*(B&:vvtٍ-L:f K&&^R Yn9czct/3^JIggG,'21 &P])kg ٍu]^ _k녙h˺e":+`<~MG$lݻ KZ(rU&nYFy@YTQi֞wn GFGm'f@`Y6=tUW^I6J<`Z~M,*)n'nn$慚\m|lG?([RyhV S H D[:m%}Wd2sq|U @lܰ!2پ[J31V>D)$,Շ56¥\s0k֬'M|>嗿ޞ&MAz:(sMF,15 ض<4@ME{/c(02=3J (s4FӱT 6 @ 02 ]L2uҚ]z)K1-N0P*cV1qJw7r_0e5#~KHxnZFZqGA\bڋ1TsіhP(RWGrsդ%-^Ԓ=PjBUz˥n|iY8ϚXpqy`tBe#@U%R%p "GnZwwu Zhlb6c|_ƶ,:; image/svg+xml Gnome Symbolic Icon Theme Gnome Symbolic Icon Theme parlatype-1.6.2/data/meson.build000066400000000000000000000024061353244124700166030ustar00rootroot00000000000000subdir('icons') 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-1.6.2/data/meson_post_install.py000066400000000000000000000004261353244124700207270ustar00rootroot00000000000000#!/usr/bin/env python3 import os import subprocess schemadir = os.path.join(os.environ['MESON_INSTALL_PREFIX'], 'share', 'glib-2.0', 'schemas') if not os.environ.get('DESTDIR'): print('Compiling gsettings schemas...') subprocess.call(['glib-compile-schemas', schemadir]) parlatype-1.6.2/data/screenshot.png000066400000000000000000000557261353244124700173410ustar00rootroot00000000000000PNG  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-1.6.2/help/000077500000000000000000000000001353244124700144565ustar00rootroot00000000000000parlatype-1.6.2/help/C/000077500000000000000000000000001353244124700146405ustar00rootroot00000000000000parlatype-1.6.2/help/C/asr-setup.page000066400000000000000000000056261353244124700174320ustar00rootroot00000000000000 Setup automatic speech transcription Gabor Karsay gabor.karsay@gmx.at Setup automatic speech recognition

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.

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.

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.

If it’s compressed, uncompress the model. Save it to a folder where it can stay. Parlatype doesn’t copy the model internally.

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.

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.

Models

A model consists of a so called acoustic and language model and a dictionary:

Acoustic model

It consists of several files usually in their own folder: feat.params, mdef, means and some others.

Language model

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.

Dictionary

Dictionaries have the extension .dict or .dic.

All those elements should be somewhere in the folder selected. It doesn’t matter whether there are subfolders or how they are named.

parlatype-1.6.2/help/C/asr.page000066400000000000000000000046771353244124700163010ustar00rootroot00000000000000 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. Keep in mind that automatic transcription is far from being perfect, it will always need manual corrections.

Automatic speech recognition is disabled by default. In order to try it, you have run Parlatype with this parameter:

parlatype --with-asr

Start speech recognition

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.

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.

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.

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 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.

parlatype-1.6.2/help/C/drag-and-drop.page000066400000000000000000000024341353244124700201200ustar00rootroot00000000000000 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-1.6.2/help/C/figures/000077500000000000000000000000001353244124700163045ustar00rootroot00000000000000parlatype-1.6.2/help/C/figures/lo-customize.png000066400000000000000000002506301353244124700214520ustar00rootroot00000000000000PNG  IHDR3!sBIT|dtEXtSoftwaregnome-screenshot> IDATxw`E^IzG])V@{Â+*V{E|PG E齗$^Krw$Hvwvvn&wgvDDDDDDDDDDDDDDDDDDDDDDDD^Y?EDDDDdB s ߵk׵n{0rɦ,2M4Μ9O>$ J 6f͚U7==}ffڷhт= 233Yj+W\_z駷lx~ C%6wݻw0lذ)))8Σs"""""R儅QvmRSSk߿ƍm߾F)!!Cдi4hPAcMXXnFjҿꫥu-DݬYΫc7oNll9@^N3 QB"##b ,** $pU5m*0 È9cf(؀½]4^ȆF5DDDDD4ᾟ^3g: ܗT #?y'l H]x"l`Y6"mGڽ~61ܲȈi&q5B91hdCDʲH#ٌ;$z F`t-ǃifypy0ar]astڱ2MGwGD`yXogOxL,i^,hkOXcZޘn_ bc;wӁfOq{LM9hdCDYK%\:6\y]}׽ɲSya{7Zq=" sW<ޚA# N+1޷Y*Z'Wii=wV",!Vhe[Ն!Rسx ^C.sS!/cݽ3t(G?c=V2&8S}͈ìQTU=, ĴO}'7|#%[odaZŵ{ѩn gλb(#3K˹m,v,&au͏??4> :!ޱ>?&^m˘lϓ- pvߖD9')o#cw(.h | } oETlTU)Îup-+hp;K]9=ɁЖ%DuDHL/޼-|ſIGqj<й6~fe}'w΢s)Wplq/{7mQ̣ӄ!g50rY81`Z&KO"6W i+`sc’hYm[΂дэiAgqèE@Xƛɖt > ==-]dzl7υ ;Qan.H'uc˕SFnᘦxؕ~?v{8l4!"RUIԜ)~LݛG10%kX& N;t4^[XX؈m|*w<֛-gӘ3N ES'oeAZڋaY{V{ַlزb[ ɨ3mD,ܸ6bcW<^ EyDD ;]m>ӿ,fËz}L -gAD&(:8^Dr՗~٢0@x-j5L~o:SIH9j3tpcx-O^u8W|iEivdfw&0j/l7ʀqĵ:k+'m,@)ݹ6DD,+N mewVYZ4k]{V/;S~_agTZ65ia٢\N2uEQY|&-{ԥsj ɽI ޚ>#29.%1*,L,zoZX- ΅| ??&kA"Z05 cϋ N]ZIcA)S8㌣ pt`섉=°a3L/en7cѷL7y.7EX&^w./vg8aav솁ey\^,AdtvMvV&6£p}'h}[QQanh ,, ݆a?#׭[ߊT/ѣGrl+ WӨDD< "*y 쒖r)iiZxݹC-򐓙LJ|";_ǃ+SbED4*zTlHȆTlHȆTlHȆTlHȆTlHȆT"""""R!lHP!"""""BT"""""R!lHP!"""""BT .ŋ?`1sCFᕝ 6ҜsNiZ휕c73GZ#+;;""""riAz۽4Dl$N/WYJC鉕cTvDDDDhd E;ܕcV]e'"""r"*4ZyHJ  v'Tpݏ?x\֑#QPYDDD_Gl~zzuExwסJJ6%"""ǿ 6,+b% Vu YOᗰ&#%Vi.QLɣ,y7-8*\ dFU]!/юFj:Syp)U,:T|_RhC` H ?>.^6bRf~hpo%_v_X-2-L,L´4-,?S2_/Xo翭i, |/+e#`* , 3Q˔91}FڢVVr^=o1==g9~۽ˋ[PG(#Փ:l_ 7K%ףTv*Wfx;"b_.fm Q擄=qe`ARYDDD_2abEvok 5ݓ2qi#y ;|m| CŒo]Bxr8LiYz&m]2 H.NOYg?2A9z~`]*^(W=6\B/Oٿ緧1y|⵴(W6_\[@{* |ۅ:ڔs隍YOݰ9 yk]Ҕ¾K>I_&~} ,d?[Nء51oM_ߟg޾v1X`'a[OroƯc[9)2GT, ?E*Fp8._㛯T&RA?φ:Xw&1t܃S(07Nb,<OT_{ JjOKk9h=8hS"""rL*Y4KĴ_Hd|s`e{ =FNY,fє4, r;P :9VLN*rH#5X۔{&N"\[3a,gփ=3Ytڝd ߰!(恕| ד?aioj޹bN:Zq7WdAS7sFtvs3}ķ9z}qj '`%!!> :>0}~ucZV`ݱ{ __8d*.OV:^[W@;*8m ;qE咐O|l$6BKȶd屠,kO^~lKYB{6%"""ǬFa^jSץN^Dۺ`ۃǐ,.~&/aW^1q6y薏l[+V9=gr+s緉ŖLGft})<^S!V:W@Lw+YvLm='PdMcl`w& , \vץLA>#zdWMx5f-L p \);@:βHU$' 7eѐ ȴL6E^#:5S7շ!|͟=VS\|mU]ހk=ױ-{8lՁ\%θ_7әv*[FzeƦ4^4Q(hB 'vBR˿|?e[3ȟUe7}3{S?!l|2*2 x`@3^ԟş'ӛ"hoyze-mZӸkwpS@;z%srLV4ds+ȯXv:f|Ȱ0_'M_%+I ^.2G,o>Wݼ5 ngtͲV{p{f1yhg-ږȟxi|y2+Mȱg̋e !w'(LqoaWzvf$ւЊ| rBᖖՉrM-Z?Q*Jgfq%Zdjtk|Avmʟ ya6%"""Ǣl)u&R ^N]Xl9iA$HL"5v^@3ػ/c'"qէv#w( #֗?˳▛{OpVݚ y%&MG /15Si4uD!T=6"#"qMF>7fH1ggՠͩ7Hr!jжw',XlɜzK{9޻ f$Dž)Em~ &I=:}AiʳndqfڢIL{ud]WOv1ia-vcAA3W!7}?$&6 7Ԯ<4qs¶VԶ14Ae- lIĘYvR 8bV6%"""ǜ 6S3ts;>˷brITR5̥ZbIreCY<glArDnrOkOgY缱YJ`zL1x^ْut~V UUrRau{5y kF=p۫l p=C9c(L%&_Ku#y#Wy'34>e$wnCaaK+nXVX#N̳<Bx4%';v&аy}aG E\u>p:irr(ʫ4BsWN1y8߫s>'44}u> Ѷ~`ğĈs8vCԦDDD)S tP ~Z+A!h?`젓)\9p K]l IDATGKAǖ+r 6wG$9s L*GT~_Ȏ;c:FpzIC%Vz6V(?00D:2*Z[*HS@,M ?Pr)"""U_ѣ9@{[># {[vG Qp$ gڂb`⨞O&{xB/b}-_bߟvQJ= JX8Kn$\Q}es8m)ݢ6\j9K,DߺJ),7*T̿EQ0{/NWL˯STQ K|g\,gֲXN<,. ׳RN`[GEQJ^RR_=T!(xeT.ЖW/** Bw٦DDD5VQ/Ͽ𱯋p(oaQзY3VQ}"_t|0ψCN=j;,:arދ(<߷AN0(rE)bT  D**\|Ж@T B۔T 6L ˰0,aǦc4X_$V⟞QvH &Ne[TNL+E+zPwav%~YbYA!:> /T۠ؾQ˨X_\dmv\JpTfզDDDNHlw Mr{A%xO/7(3Jym!F' >1dJ7 ??{ )}h TԎbClK<11 ў 9]W)QevM)RQXjV_)JyWY堪ԭ[*}8~)Q]aYA5*KE_IRy0MJ(?G*,ԦDDDN6bs(~h%tw'{]z(Ck]{[e) Sw}Ew  8(; ?}a)QnP/4bԎ{4B_FAOAu2*-m`0!.~/TD⋂T`#-{D#?\2!'BաC*ce{ j2lHP!"""""BT"""""R!lHP!"""""BT"""""R!lHP!"""""QWNN+V`ӦMdffCJJ -[$""s(GBT5kְh"wNx^lŒ3ҥ 54*9֭[NJ+9r$x_>#Gdٲelذ3߿ΆlӖBG'0Xb8{c>9.{@<փgJWyK΁4eⶎrvL""""Ƕ~7rv ۍ2p@,X@nnn g㚾#yu9y?O1k|ǻ/>s3Kn=6x?ߟIpsJ^9^733ұ[/z~ïvWL>+QFfgwsiF}ֱȻZ޸r>ف ߼Lߘ* dٲetǃe~F0 :vȲeԩӑ8+OOo3 9GTi=sy{[nw GOf7.g޽l{Ii .j>uǽsQ=KFZ8{eU|ʜGxop$ gq{ޙ~v!ch'|.O[| l20'.6`_2ydG4NB8}}\BjteuݩLgӺbK)\zECY o ' r>)99Ky~|î='6'waex__Ԯ+b#'5o^>lܔKQߙHsu\L,saqk];ѳr(=؃–jwl@b`exdi/=}s3=֛lgt(AtLeSEO 7qRn?t}__}XLd'WeGxx3yn,f~Uvnzi.[9yi!Mf3{=v-:3&>6tq^5JDDD6oLV4C~fիʳ6"굢:vA/wɒOg2oI*#lL86]~ŬwڒBaFHi۶-7nd۶m-%,,nʦMhݺu+o vԈ)OD" ߹~oSL;F0atmO&lM5//3_O[i-sDjLju'W) s*=𦌺-=bT '1BogNc ?0t0i¨Naړx;q^/eqmD0L{,y0i֦Qk?qi>ANr!d۹'l: #s6v;s%-+WYck*%k>I'Ѽf$Yرθ(ȉ"<<=zpBUɅpXEff&k׮eݺuՋRoSo{71$Ƈ?M*6XĔgAz& ;tUInNDYٺKnሡˍp}\qnt'׋$wf7O {ن7>>ջ#Ӳ&1a',3_P.C/;㧅,߰e;,j.y%T{VN[Lds,j;ns.)ب_oO|ļ_4 gMaM[WD")-{[ /Ozm9] .;lj bڏṛaԋq=iM74q֡ݰ~ErhZM}^G w3_=-ĭ7䉈 b&'##l!33m۶ѳgORRR>a.>ib>Aq?ϘW6q -+Zis5Ћ <63LISs~V?O|2<8qR19\:$䢰T.~v01 9ςSClӋ*s[n~n\׊^ai @T:vHN>'ѣ`CDDDD*]y8mu_S!"""" UO 6 """rzv`e@N'ȳ EDDDDhS!"""""BT"""""R!lHw*S֡m=7m4kSmi$nmc~_2 99U#x-,ȫ0hѿK\c r;El>أv(""r"o}E4;,.ͧ]ٜtRβe^{+)" GB`ƴ,qXyfLJbY|6~woRܣhϯTlX99e긘s7k ߻=4NqX_gUEpP/AQe#4Z&=}TN*""RߏeYܽ;]Y:DEFQVmjVa$&&}W`ÝDZ^hq$<'.FFEe>o3yɌGdNWZ\"ZN/gXKdrr(j:y-,_C#fYgק?S7h:&Mu,4&q6ҳLŢri%w⬔pZ²=sIKOcuԪQ'_ؔ>Z:nYXwbmgf9؜NlV0huJmn>-f]D,w 'ܾ΅'IjmU\;I_bA߾kfeœ3d?5>[om7X6̒k7Yzؙgq>+OهGش[scG1b@-3SF,&"r"ھcJ@F\JF1!p4 <=%ؐw?0I8Za\lڑ-f^#ahO˿k3Y4keYp;Ѧߗh՝i\-sFDPJRz,Z.\gi.d[ɦyͳ`6#892oDDc9 4*YB|BLaFl0HiWڛLՐeZx2xS9Wt{M sTH!|meZx5qe嵴,/aYdKx;ac/+䱗h (oȉe2Hi_gz;Lc9egl,?3s-1Dɞ-Do;-T(mH(e ɒ^$%)/E%0̜s9g<89ϹձfZ=E|36[e:끗77v7HzxbΆVr5W7%m+b[kFtQ~nx Jbhߨ[ہ>fO۹s-,-emf4[8?.-H"͸چnLdo?bO6 =tkOTڂ߲7 *j՝eyK"s33}qyVh5*F뛱nr~;G,U;u2x~]LcOYܘ/`q Zعd._7tj9CgWnrȾvlDY*zY{\G*) RՔ ;-}mhW= `3_VfT Xs ;SM̴=͋7_Ojє b\E %:M*y]< j4.OsqS{6WЯ`֜|/O [~ďr\3|?22ߨTǫ]p'&7KbDӨSu}8pqu<0_=ycΆ5߶8[¬7F4/m&""""V{6$vӶ+bz6Xl#7~7+h(HY2jԘ 駟tA$gsMdTHe}dEɳH™xZ+RwldfIqkV 8}+FMcw^RHqըç2l qNo̞S74#JXXDDDDPQ޾""""KjZ*t(e \Gd#9΄RCcx-S|aWbR|X"ݯ[iLxrz)841M:%:KH''\80]JS?w*Ɇ,l%5]lr#""""Paib )m]H,4@dCDDDD\K=穞 [2A=""""({lkn\*wcC:qo4FudꎝH*_19""""R*uΆi5./ݗpfpl&~Z0g㟣cT!/M02_[4(jZJDDDDJ'wl&^#,%<5!ꅁ4Ҝ\wkRMQ=Bä8SφJNMƩJcУ%3_Y†hS,3gڏr. Ѕ!<ʯ|ү |׭A!UNSQHtg-S>均w23{3& w<:1# (|FC?^׋>ed3µㆇ'(pEuIHw;OeOTW?=ܺ ,`, k4&P܇Q%_9{{^̛۟6`9;7a tK"E{JofOھgv;46Պ`eODD,aT9ÝΈ!H*ya&Yv{?_Q3*|dZ\tb ~.[GOw&˟P[2z<5ZfX \3tV;>[wHykQ}!Ehd]C6sP/*EDp7盳H`dHm |'_;;+}YlbYWM0ތFas5Ondƿ\lNz14ҭo]~`83N_ ״cX )Zdՙv:DȪέKbbY?ʱ fV*X,oF7!(kB+b}+zN% >$vn^K (p( dXC+/7SK^'dN8 i& !W=ʋ;z԰9\3~721mpvE43#xm$87̬OyhNjFLg0ħj$gX5䏏xC [u Τ,;6qpjgF` $שT&&^ EDJ </?rzȒ?ZM;[ii/K8m{g`P$;H-נ|jpk,tg]/o#vZ›#]@E:>)7\:N-}L-Ssm=hnov{_<{9O~m<{ uH FǞ/6LUs K 5;f})bWh\EkQ{,( A~nFU`U }7QO0$+gd{!ڲn+gNξyq =rc?O=c3yFvf>En@`nkʫ~rޗώF~а(o7#Fl3v4J=ycΆ50ta֏/Wdhˢܒ)%%O>׎nCF0yVk,:<1)w7f-c`hI+fgҸKl_ z\W3p8d],o"dBaWNoXG44'lVkíW(۵aeMR)uyS?ɓi~y+pƩfJ]xu,[jMBxڦ Oѕ|ٙĆ/?9i~zP9KWRÑz}&*Oy8H$U(gnJ4:qW~> #)^4AȘ8z5ݓh}0^ߗiB_c8z'|(O`o`uM9U8rCy-3!,^! n'""9}2eRO陕[J|L%Yį_R)tt"Eގg/됉$Qf؏%jt`#X h{g:t>>fj޸"4ϞT[^g.oQ͕l[DG&ĹUr [9]}-1ja3s,"˴ @NgCs6.8?d٨-Hw%>oc"Hf![Zoͱ܋Ě:+-KD=ޙAqoF0`(c2 (](=q5)4g<5g#&g϶w1,[]] ?&/]L:y"rq2C;x˱R""¦M.xvӱCׇyILLdkY& [iܰ1aaa`׷>2/G]4() q%'h`]´H\gC9"R,8'I@DD)[nn?q +m%""""Raa8N$##9>>>pkJ6DDDDĥbhsws:deeyd50%""""2-*RKq %"""""J6DDDDD%-xc.ښ'T+>WTJDDDDcwU=z*2W9OM!V+4APPJ4DDDDD<'xa $00PHX[ v[ H6Ȇu'Šq2|#:nl]}t"""""%ZJdWYkSMOзi0 H';(?2o`|lR*DDDDDʸl~Tmp$fϺկmJD )J币Ovb|&/u^<LJDDDDd+Ɇo-zP+27һIDDDDD E_K(P!""""".dCDDDDD\BɆ q %"""""J6DDDDD%lK(quRDDDDrx{:|%_9{{^̛۟yΡ>i!C>Npl)؝Aߋk^7+w;46լ?/60S}vɼ1ǿٓI+wujHd 8Lx'(H8M?6 9KnʽCۦ=ĀZpCu%RB9 قϾCj8v$dzK29o-5t\g arصi-O:t"""OO6 oEprm1O›KQ{h EX6ZmwѳA;bEj4j +!Bמ+9x;lj iESZTsz48ҫ'$}Lam}cvpRX#qĿ5:G_F > qS{ynPd7~HӃ֪CӰBF]&pU {\ώcآ y0,3y Ôv&Y:vg՝iC3-]m#oW؞/` GNiǡ8'Ds%wStM/MY 8lٸz45|6LƷ?E4r ss/""FxӖ&[~Xx<ÌY[)߭7C wG*RtlU3j0M7Nkoi|(g3Ⱥ)>f1N{+vM0SkU^C'`t&eDs$& "68g#Oks)yL_^ac>̱[yy }<{,Fa"s6aydIN82[5|H3|3̽1ިy#>0,ATW +ԾLJl~=xfw:уl@7h߱% /4$HZq'7L/!;T?=YӹJZL[0I IDATw]XZuybRnZ0p%j&̟lt< 3 ?DuyyFhgObY+[IL eOY;R]+V5|RȘJjV̘;$Ӎլ@w9 %&7݆xNd]&-\⍗_~*<:o95qYBOk,Go?wqtGzFg`̭/g1|hs1_*O/""r1Fad+Mn,_:I8.>} j4q3cӟ|7;|:8SػyQ>I|׹*bGwHlu0RW7!rw;𳞗+|>qн\~ +Sٶ|J؏%jt`#X hT,-bϽ:N|9a53s8xSz&&nη˥|i<ݾ)W&)f1s[ R`g$2ma\VMŇx}y%#0*aLۜŨq82&N`ƈGsA`tv`ЕMK[bxliԟIco;ȸkDXf fUbMR:8B[=Ў/2{h~~Y¹v80*͇: g"]ߘII|+z(΀X귺wyD~7(/8y][gϞmرc;.YU-^Nu*zEJb~-r,HiӦ gt[fѣ+/v'APy6暁c~7E3wCĿtT.3^F`yMKU [GOwOhS3i o|Z=ʫ6d~TD㽏!=srkBt9Q~>;[0whQ-gNL/ty^֢XC\h8~.oHT#mZ=蹁QӇ>B""Rdƿ\y'ul#듪qo߮UՖ9Ol'! %Rr/iO`׮CIij[D99+RQy5 uQ>uϬw{QTY*6 ^ 5!\U5UƘFϽNwR8 5)2&)GVN|}kf=3؟'OvhA-"9{o~-ZҤ GI̹rN^A!qǍiҼ;Չ6'ұ5MI]~b3X#q ߴgMy)ܩ-MH-y󚼂~m6V\qMgy֟,9>C:>]ir#]qV[;iBNEDD\'zO싒GVE]ppjL哒,m#zfr|қƿ_ͭ-6b!Vμ ƌZ?VV` * 3x_8ums(J]flZ>C'`t&e>I fJQiu^{;}OۍG]ąw!ƪ>>i57q~~ ,ea?4œdެJϹiկR>=uuZFǸuk`XNxqю~`x,x#њ7)%U}P|=#x^8Fch[.ݰea`+<)YFZT!ܣF|ǖ64wrSDػ:-C?nޜaMqᇈ.ϮD_2|3̽1ިy#>6UcA1^qK&̀Op{ų?">9ƌ~t|/M#m@#} f69}C?]Y*F~ۘ6bc&;#F'y8rbH amOŬ{sH53e%@j< 3^iByVqb{I0R)Y_e]#w[YS|j u?H gLE=[#l ;ql'OZ.tƁx`dR9RU2u]SlbԂ/ ?k5>Hbo+0 gy.c{y+(P[grCXvWFj l- {o!G \c|@ʅW/""J%k:t!o{Qٽi9SFNbW[h1TRYK !d2ML}>6^&&s^o*;(~Vm8B9DGL|j$Vl`Ǿ7+WᬂCg4:XjL(?}LJ__gZ~b*/ NwPׯ61`uT̝50yf]r2O|̚i^ˬ1Hkۓakrsݱh;gB^!=֞!kDDX*=F MOfcxt^[cA>ӕs[$ؕ9ԯN'J!NCƒsz ߻f_~|0.Vn4 Ѧ_]zc#OLw_}9z |򃼓M:]xhbV}hwL&Ek'&"ޱD\ɤ0;"gʛӤ\HDDJ Ξ=ޱc|w\l wuZt1THM6]>ct`׷>2/G]4 5瑒i@ILLt$O$+vHy{{FX,׶Z2i۱4mܔr9z(lb۩Y[V!"""".x<ݮ[Hp׺5k׸m%""""RYYY '##ӡIr¦%LDDDDD%Գ!"""".g&*.s q)Ⱦ©Õ q9wli%I4~fh%|[o)L%/.r{[֢XC H4DDDʐ8Kn닷7G%<< GQ]\dƿ\y\Tmd|i `$o߳{\P$o +!B%p;w6r1O8ٸv7AuS*%霴{JlƄ^"qkۍwwd`dnВ&ng?bMŚ{Xtؚ&[Ф`֜k&|cB-}z _.>2ܳm1WdԩAAAx{{8>i2bK.>nw,9y8{25צڃ1h,~5YCF@e$rCVL⦅_c0l}k y,| ag0>m 8+oߣ}'>DD00p:.O66n܈:I>ɍ3y;N9+@՛w~7Q;Ȃ Bff&[>}0}tKRR;Kf_#h\dBqF鑞ݿ/A6G~ hJte$e_~*<:o95cs $}BpNd᏿dž)wIW^kqUW9|<1Cƭ4{n2`.2,4#`{cxT\1s6<$Ra?zH;M eUVKd z4=ħF2kv;-rş o,'غqv -=[1יfvź_Ws0{9ckY7,_= iX|`:pj\"W_L[q$aԯ ٰաKߎ?^{8V^͠AZ6;튪TGu>%PQqĄHTGfнe)Ӑ+#cfx1'FQn]ل(%F>@F4>:Ac0>J!NCƒklx4Jjxa""r =è7n_>?Gđ|WadfH鲧SIʕ+y饗6l1r ƍvڋ9Bs:n#zn;lͤ/U..D$z\ߣ sՓ\ls94kx"ɓ;a?1S8`GٙI/Gwq 6τN?h{Ŋ[<3lذ?oFèDDDDTʽ+M6Y*G9v, Ҙ͔ۛXFj?,pE0O?#S{9-[[.߿pVjT=|˹FAOoEDDD1p0իWcGG"s#/s0DK85[dxF`4uFNݎ?rهdXVڶnǀ~?ݳa?Ȋry[hjtj[)}uS~W?<%LL |yƶ:v_|O]fqP}zaҔWg7=]~<+gCDDDDJ'7_6r_B~7BCC裏x駩^:bX֋n(.i~""""RJcr˖-(_12ϟW*UoƑ#G_~{L<ロ={}7{ʕ\O~<5A\Ɇ;l/)l Wf] O3i$&O?̆  R_~qϜ jT""""Rpm۶ERYn7N߾}IHH`(6qĜ %""""Zn&˖-}y|ٳ[n pws= /WG4MKj},[-s6j:{l{ǎqɲ%յoxb:]שl6m}vM_%11fdff^p8HII__s29q 6C\\>>>pV+[oqƄ[vނy\|,^=ztҀԜGJ隳!"""".9E0 0 0Nl !55 I+Pld#} 3ޘˮg!6+Z0Z?:,')WKְ=> #:Wuv5CrY/ڋSIF^}||JLOL\x'\գ7"sjqr+kw[ym[]wJLv|Yhw3=;eΙBʽpK5?O a)l6i|JLQAjZ*6md/l55ҷwI6Xd-U}mEl1wfE*W !P>p///bbbv$ld%b⫬ȵ)'4:ӏJ Agv_xE&N;!@]""""I W#:4l1gnbxYyA EDDD\eV=s{?(`FaX|$qd ;d $WɆHQ+wHT6=Hލ TQ!""""RJxaH!994LdI5ͱ97'~/5V%,G%`U~8t"Sפ޲o;_ݏǞ>@[k}o_G/_{EE!"""";EjSJś楛 Sѯu'""""")Ɇhɡ#8ԴTOTKtd4au0%""""R豣4׀r9z(n &ʽwW!"""".u0 5 $8pʜj׬ͺ)%5-rdddx:2p^.#Cش諈z6DDDDL4͂ Kx+2컚)S?wR!"""". RφJ 3Mlqu%ackM Ⱦu:2M-L_Wu:ѵd IDATܻ'lġ\ш=ψ|?<4E('7"?]3a3'Ff$ \?׳X:+p2 `ᇩcy?}‘Sqy^t&mfL]ÄS=TY{$0>żE)%.}s:r+mEy'˼%n4Ҳa{Cjb4k_@? ϟU8y085nFQLZFcN[~rȡdd/ޘW%sq.y>5SnlkJכ;ٌJ/[`.={!ȝ=fNoq 6K)!e{ڲaU^ڍM ޮ;Cfc0ϣ`͏|\.56c.%(j<7D!]'Ⱦ[K^+?KF.~|I(!> Qᄄ1BBB l3~?ĩ}$m/'q[J'5RXex#炉|B>iH#Rmi>hRg !*+ԏ|7oGꃟC:q}n^:'xưlٴ'p;DV J BV`Up9$5jW>ѳi9|[nrQĥlTS(6zdu>.NV 3Ȧ` :zp 7f 'BdT6w}-US;RS,֕M=FEAѸS^;O1|oJ!!myӲRgǃ4FQ0>9=*umI;~JpzWcTXJoB74ra't)/gf-?(K'PY㠾K~u+\63MZAngFjlpRFUl)AS7.V!4̓ەƯENnzx^'NG7 X1Op,H ^ ׄGWI(.H*k~Xq|=clw v]?v|T7Y<_ZGkF]Bڃ2hpu3VKƶ;UykaB3LS(S!ژ?6P!^JݨZ6~k,RlQ kjn>ȥHiyRi\ *p.{"x{QG q=:XшJݨRZv͚5__4ܹ{'Z @ㆍ3=]!91Һ/W{odis7SKi#C-V .2·AÔs1zWEק^Zg0t6noh@>,㉃cԌytʟtN9}ӡZ50jvT18A}Qs,>fܻS٫2:.yo^OzҜ' ??րND%op@_>hS?Mc~t̸B$- ǹwZXiBQ#'UjD]o\7BtlФ'-aeA4΋BYBܹvcG!$^A1U9tgGBd(No (fڳ R OG|#9(uBsQݨةX7:+_A6&%kaɤֺRJ 9< &S^=݀޷/%uRRg8b\cYi-֠GR?`oPV `H{02"s(O6N,"+9JQ7 nSHEBX,}ƝڝQSJ+OJ)̑,Vyݦ6O'<2@Ca|{LG z3y٥= Hˆ"ӨUaΆVjQΈB.+_'R{֯W !BarYhlF7I!B!L.yúty[XƗ{Sf`C!Bl+޳!l!B{#rʝ~gkDipw;Rpڏq׺2tZ )l.嗭oh,C_@]ӳu s2Ǡ Ba:gF5wv9666̑L&6Wzz'A\Z"`5aь[W *JCr`rh`b6K )¾E񟴖zQ @}j :fOkଊԜL8[/f}vϰirmtuj\U_S Ae\/JLRBĶ҈_Nyh\%/-")TU8JuxOMtm !=TIoR[( !; !!w7wrȉZ-uf4'..W`#g6W4n_]p]X8CF֥͘I]_!+w|ZOZm)b?nCZ m?m 4lQJeBVp,ݡt?|ZN4a\M53e֤|4ϰrǧG4Kl׀ow_"Ev+WeTqZv6]bdtiT.Bt: tx)J 6{z.N]W4ě@kAȉ3+kڡ}WأHj$)Mon?'܏p֬{n./b^c%+(!*\`rO;n/ QWU :|Knj"JY) !wpmH{H3\VX7څCSbmŋTg=b'И G ;v[G%d^! 9}?nSX5T'8EU3{L==CffB!; Gz#D=`':,'k4N6OtFt.b$,$Pa#VaԮuNZrQkOJ}.v)6Mp,珜uN<Ə36Yu<5]ը2azA`=Lhu/<2a[m Cu=a͕Hu*G]Fӵ_04b;b!3+gh$؛Q1zVvnL&/BK`# ?Oa~9ӿ5kOy@ćiO2Q"];4Z+Ӽe,J&PVsF:Ψ~.BQ9 lZW^yajJQf'?&ڍuhh=_SI f+&I)RëdN6/f/8c+4ō9S]DW.dY=7Sc=d`qڽ"B7I_!xtNfo ܽvezqƙ{i>z]cseJk,Ѝo`x'… /̭mvPo^OzҜ' ??ր1'd1oxˆ`$iBK3 ie6>w@C!2Ixx8ăD_]{;{rȉ'**KG`Ca'?#>wOmeK:*frZBDhX(ʔy焆rErxuUUa k|y !0(WNٝ028Ҡ4Nٝ(Qg9#B9}Gw3""Dquq%6EVHHH,]ؤ[B!$eC!B((^@+f}/B!0)*m lӿCV`C!Bll!B f( mZl!BR%VvFsR3lDG/8'l(SjGuSJXs6t),9J =3>\~z4Kek[8rבB9FHJMyoMg !09i0?iHf}Cׂ# u3_5sX&rl(w;%1XɧC.{T|:2wjjR*˱1o^r#WuiV+B {7ܴ+9Sʫ<9}ŒY=6fhtTX9pK , R[7GSR8W!J:_WxB񎐖wϛR?m^wVD1"&u{5^K>rgxWr3.ilWKH-"ZG߃1Fgv 3MU͇j-h8PXԏWuڰZdW 9/-fڎXHlTNmgm$vfWkB!2JhTY<&ͨӤg ^zydƏ9x3 @%8>#M̜;ՙn@P4쾟XH>opuwҴP rBq iwSp`4O>c_ԜL8U3WӲ_H56ZMoN^*&N]!$f#+Z7ZM^U?fw-`“DM~ýߟ6ƛ{U]ưìoGv֭EB}1vxW~,#\߹'e?.iX#U+Ieiܮ`CYzkKWe5- G4c;Jz6ǽ8rv|7:tzri !0sl( 4:ӹ摓^?ʱ?y0rN0 6d4{ 59 ǝF(j I햅q/w7)۩Mw֠@o\R{6XaDz sKx tc?>:9ܿ5랛ˋ 9j+[r~t5W̊."Pa4&v[ROWW" @-ϲHʭ۷@<c?8q+x;wWoWFf9Ʒ{PQȁLꐵ02U%{TKf5rsaMtO5-):=Rt-#g&^C;"*9#⥤pv:zU ZlI3"y.o E'a 6 ]=Ζ`Wg"EbAI ,gҢ,^l2cv:aN\h~qSI g <ǢۈԒ٤!,_FHV~BǾjw)kwsi?TznAܽqgo_8hK餩Nq}:)B&2KסP~ؗ]?SA ߃hR;ONvF][R)#N߲EQV+P;Hy4M , PJFVL][6 Yۿ5ksPfkfwZe IDATluO߯fT%=(SWiKOLp:ˑ]h<$7hpoBX/z,P /kˬ[I f+&I)RëxYuSG@ESvvkS>[,IʻBAT*suRړv39?<9~#)V..TnzdT1o_oKB:*ʿ- JR-s1TYKi5k|}}\pk.3G6tB!D .2·AÔs1zWE׿%#@ ̻M=# ۀ18A}Qs,>ʝ}xcmHElܭu~OMz?񌝝^tiλ~zk<@t'*@ElJB!Rm@b}GcrƧ uIQu^,_-D۵ fGF`^Ec` w86Vc4*YUjW9q)rETjf bo-2B!oFhT*tCfLzvqDz4҈[ ArpJx•=ks5 |tGQkuQʹ2dƤpȃ)e/C !BZ6켙x~4&"~,ZGT1/&*}V&%lT25]/jѨe#8nܸIhXYB!J  Z:Ä%TfV<#/K`N;B!( !RΒYjѲmq}Ĵ̵->ظu BnݾC"͝ 33uiN< e߬9,>x䉹 Bʤ.̆h4[W$gC/ggg̝ !BWl,k :@R6\nq B!^:u\9sq= .&6G;W,_^'~ `@TtԨVsa4yWNGrȉYGBBB {{{khl!BL;9sDV;;H||"}D1 V8:9U% Gpӏ7) B!Ļ36*_ m+k,++k>u~dX\raJ3!B!+`4onv{sB!BVixKO^%F8rT4\{%^jʵgl[6/>*ˣ+bQ"[T!BerIp|-մؖ{9RcSUfc3jQ EY+r9=n:gKR *FQ:|RM2}4šĊu ֣PvDA hۣI{I!B!Jlh~Tw.}C7kT,3M\'j +`lu/Y:S~dx12A6Yf7a4>ArcNaL>`o l9(dKj%B!;&k֬1;i׺ir%B!0Ө^4 ϯ5>Qb, !B![G !B!IH!B!0 6B!&!B!$$B!BB!B`C!Bal!B!LB !B!IH!B!0 6B!&!B!$$B!BB!B`C!Bal9|2vTyzmz2f%sgN@~zVA?s`5)7#ۧP?ZQ$5hti ww`|:уlۜmMM8+\~zuё;& SՆì?~#Ը)Ee$SOLܫUݭyਿԆoO˫"Sp9oGV䟯2m賮]ӿ~^19VW`yʑJ}'Iqs]^;6kQ0< %ZeV!yvo/Xyd炉|Bވ݇kwsi?x)؜| 6kٻI.Ffzd-t.i_6 8xߞeH+xY{RRvqm.6ߧm,+V9͠B#yTƓ{*dZ\>jKG@e 1$[6mc+ѣՂQ'׍ @݋K7QmwmhSbTmhca\keܑo=([*]Oǭ6[¨9[A>t/sQbccy7_&zcڝJ*KnfLKuɌ://s^2*LY Pū rz壣9x QQ8;^M#R?qFlLeJ:BK횵t׍J7wx'Jً1ANUʻ\Ӆ,(l|*SW͝!^B!ĻK s6,^_vaz7B!ĻM r/3z䚝^?ǹ&Hr< !B qe}00 ܻ~X2wrd>.E0IZ% a9?nF2xGʏB ˬ1 d/ii3V\ Z%M^nZJ"ӣN^K{Z!֫G% zNMiW WEQ# R2xOj>x%Ti؆nWsa71*J&w6t#1[U_ʏxU6LX_tuP)Vփ~Yׯ,’ɞ!↾}\ePbbУ( FCl1\䡣iNx3%ij;l fb4$)vMRv6 ӭt/;") z}2>僗Oc>?}t)?Œ46Z o]!~lQq3[BڝM  @q/ٔ*q~  ?uzi%.w?ٺ~4Sど=ˁcyrL@>93ɎTD^c 'U;Ӈi yb~GL肷s^jG5ąز;&4fد؝T!3j 4͊ٸ`$g,օx_Fm2'U}Uj[ۗ % #}&Gd2+->.3Z\Q[Q38BddQ)׉qfn+=Fxu'!*,B߯>Xۯ֏ٔGYCM~uѥ$|.eEưìoGv֭ >M(=Hx7;CKЬ*ҴJȎ+츂Nmh36qlݚϟR|n8}H SeD^0 ^6Wp=ir MvO B})`&sZGY v<ϫF2Ȗ  45OlpcHo >YzgxRS'#7i>Y(]Ԟ t7wC)T* DQX5GzJ EOYjٱNV!@oͺf"&- ǝjEP#0"h<}ho![ܣ.jMl*P9Py vr9&;P{>l2mHx|œVy3x-&9S{ 59xKx6_%DB-#-W?;*ՒR5dw ˗-{ 8U>Ia? e}Q֗φ\fԡLS"<[{Su +i#3vk>4O̡|0[fVʅcal5ً7f2n|R*c1!7/<TVةs5n޼Owsu:Ոb'IVoA_jZV݈\WW4Se/eu_{7h%#i|gXs"̡KObŞs !$<4j2i`xJ;Bްɞ2d˦m=y!zԶZP0*(l3~?ĩ}$m/'q[ HekFDr9_B{SI:ҝ*Gd%ff]N~V8hp=&!e Rʻ=w_@ؽHJhy~$Gς)݀U+_ )*d>uG~8rقr\#9ȕ8*5Qj,jZjgF(,5+M .,e\5L`>^x9s>|Ϲ~^)} ^DưrBԕӭV+:)CaKW wUؔvj!y ^IzPjpv{{t^Ҋ-q"?i֋%}h76 gZ r6|6K2Lև9:Lm}3X8?Lhܾc/n'{ n1P-c捤9@*MR^/~duL YvT]w|{dfѺ/oVYu0^?1dH;Kk_hz!F=ZqFg =׽^/J{OXI oM[x y3g]eϻ_H>C ﹄]ȡaB>>^HJȐ+e+~;vB g!%l!B!JB!B!èieݎ+(B !.)6ʘl^-#g&/X:h&,B<ۤ(CΝ$xv #g cÒ-AO%g!BHQF;AВLX0 mF72ɇE9#Ͻ9b(4!QB!jRl'"Z~cВ\w3' A8'K/xZ!wfETVfF0?nnmgR|.$採wv4oA.xm [HG/ӼG/M?>ׅBg,D˶1o4ڌLfdsi7yUkXǐ͊?Vث"vV6ƾ9[(%Y׿gb|u|ײmf6.h1Q> Fg;N~Xgu#>yU:>׋|/Bu;(y6/{~fd@P鈉E7XZq9xwbLJu? 'жQ˱2DpKo½#URۭ/1Ƣ+;m{{sfaVH|/BuRl?J&=*mVfQgЬ]L3:\Цk+f=~s 1Cy]Ǻ}ܛ9~ _wVlɐKdvϣ89:{ _šv^(E%φ#l>LI)4aH9şpǵ}>Mc%wɣ+P\w}bȒ$Vk>SgO y6 6Ͳ7Fu-˲ݡ\ϰv[>?vJ D%eL=-o?mAGHЂC>̈́*Zj?oIPLC3[8."r(Eg b$LMFZ&ё78u gEPή¢QҸMl[?>}P ?4c},a~xF, `{*J뫣؟A$s6rA[>f6sAT1mC;|Um(kJ"qQX)} J9GaKص |ʘGbWx]+qb3w 7,adӬ1x4.`=RR$1m1-[ز|2o45:a֊ZotLÁ$ã5ZNdvO/3crBȕRX0n)?T"x{+9rMm``-3!TN*2}?yW.vxz{^YQ[d ˵W#‰B|yMT P(PT0F_<9%*kG\MҁTNl'x( p/h 4e>lk#CydH(x"1qUVcߛN@-N;ahnQQ3<A=hOKT24ZT6θT۽PWg0R7;ec,K8SkO ;8ԭG!3EݕO12s/Oܵ@AJMش| #>Bu nTae|`'-Ue9&W  t$eKq֍6N7{/$H}ԩNĤ} Q+ s 3Kws[t1lEח_˯z (`{4\=<=a4[!--nnz,ymIA1Թ>Ί;ĥʥ !b pswe`amcN5߬U|##fƵY! Gv*(hLTrOJ1eAi ^}׾k?ZVU"卷8|[QŽ*aG[d,PdLtΎצ~7~ɬ+9{8ۓdjv G̣E1߿q,1JGq!bpsweрNg$16@@x Tz|f^ 8Fr9/~5žT`MDX/ -)n0)猭:Ex4rͣ,+|634Og;~% 🷜kS\c mB[6pB&7wWF|53ۀضРEƢ/&7@JF 5 EC|^ȸtk*C{Fy}V-XǔEH$[>Vop޸[g *Ѹmooxw>(8Տ 2+hVNhC5CyTr%FLߥdZNQc\: ;3esɄ^î[hj*n˘y#id}3X8?Lhܾc/ά=\5ZèB$R7j===]pzuVַ}?ǺOyk@Z/82/(&\Lq?e$^e΄w L?~SVY<=Z<6mT~uVB !jϾ=xvο;OHH>>>^HJȐ+e+~;r"!v޿(ɶEYS6Y!A qA{;Y2=eͥ%ٶB!(wy9,GXnt .<~=Pm !BJ q <9)k[Q۱vB !BFULBT$o'9myԮM9;Amh -ZWb2ɇ/2ש״NIn( }"sͨi)z^$rB!EɅHؾ/vxWpwBTCˆMCfT ( r ;La= XT3ڨ5a V3C0EW:xbxoVDe=5gY<~r|< iaD{kܻx|<BQL(&o'SJ5 F_BZj]?AmL6#;uzYh3u\Ejrc zJV6ƾ9wPVˮd\z3/dІ)7q .hYA VYcCjv=K\, 4k4~GK޺ҳ,-'Dzbڴ!a'lFEZ|z[tL:U8{];jSA3j|9k8<ߓiGs!|W~wEWFw4ԏg꡿byBmXv=k\,4pT+'1C#jWJݦߨТB!ܳQ0~H*T^sVfQgЬ]L3:\Цk+fn%g), ;IieZC;qvt𛩘Wii3e!F[z,6yq'665c@8qھ?M2{}^_RE[zFs-Qt {=/a -yBDfŵi6Wz imhmDWƳ6⭬U66U"H Z0uh1 Gq\̊q!%yq?'˱jU蓧JԹ❖v(CZ$;sѷͩ fpޟ:ePgP~w;%dF?d?V,iqimquwR]OjYr|QB!J\(fs}Ň>c'&96fj22Cg8s,rvԔm`Sޚv郊1=JV?%6foXȚY9; ڻkѵ]!H_0fb!N`qtfo-t]Op1{3m|<-r3*Xrc5(yGm-o?ߦg}8?K $pѩ*=\#y?d;:&435:a֊ZotLÁF3d~7Y5}-ۂoP]5zrCuKXMk _H0bϴQ|›w0vs.o o/Xv#@cǴ);Tlaɼ^mЅ)^/YKw!,hM<BQpR:?‡LK-usweA,c~)3G# [\m[V`aE#^ҮA]Z鋛"/SZT<}u)!r4Sr8va4/lNHC{1whʀ }}#vUiܱ-ըDꕰR %* ** @Gw\n/׳ao+=ݬPX5zƘ{"Оݢab=6\72wK8u%zvMԨՈNo7!b) hۀZ5ѢMS\=|?zn@͚zg+;Y{̙џLൖCkF09oe%- ?*TJ-*g\Z5/3g^vye[eEi_)dA(hB$èJ+#>_3uM%V*.0|#>Buk}  3K|s}Kգ7$ G艘:Iq==&=߮v7\hRN +{Hhˮ0+ڽ]<[29Sx};C gwf7?qkʴ. .hz Pa#uxue\ _."7ccҜ ҡ oŶeoy- nFؓ=yv̛܉hy,Ĝ;3濎b<BQ(FF[<ܸ2w0kf~ŀnX;+,-0Q🷞3;f"YbT5AHy-e(naGVC"UeEvY^J\4cdBխXP+RÐr%S7c5 v'_,hQ?kYۭv!2a'7ViI9'5wL wj^ea&cZeO?JlwϺ1&"Ngx-շNĭsG~Y^ uw23uR <BQrdU1-ϵ/uroȵږuy7wWF!pQ tFc d7qm^ķ>C碈II%>"EsCbZ*PVhà귁qNM`:sp?"v< {vMܾ+/|~b*lj;|gt]W_Ȑ/`h͝G@ aؼ̂wރQn>xZV>I ,cOJ%+:>q8Cgv!;S\נ4WQXPۀ2[/'UFd̺NK !(Areԩ] Qh=~AMŽc'5m n-?ٕxBCeOxxx9~>EZ&x[0;O|'Ei"CЭKHQT{s}|>w5yBBB4@WZ5@\(]1XH> !.gC!BQ"B!BF%dݎ+(wR!SL !DsIDi яSBI2J!BQ"("B/ "B/v(B<6g!%Fs>4+eKM<$BgeȹS/θ#axW IDATalXE:h$,B)6ʈs'#Z FТh~C&^B!@2!DAK1o ZS510}$`AP:hڃ/M@Xہ歽YUSR1CqkJ1Z qk>j]f%x(pTUE揮 Ei+Bym) ?AmL6# F6SG̵[LNc,`%C'^:7~aa s=eExjH>&39;0r <]H+T^lpe2pZ.XB!J\(Ea'lFEZB^'&|:SN9GN_a=6"iۯ(,4˞h`Z&I%eĄL0qBՓ~i RuKIIףci+BQ0~H*T*YYDBvM057#ddfpuCX;nO&T꥿}~gY\94X?vJH=Ĉ>K1mdIHL+5)LżJOf(C9//=DomKhˑc\h߾Ÿ|7m APf2޽[?{6D%eL5OEБ(`f3/!<.cݾhh]z\>`f!hTՂ Rپ&WPX˞/ jQ ,6Pi׮"oZPQ$VHnۃyAO8әgU#GfP_;/0bU5HXeIbGn[ [}N'qhɋu-c$v[|]bg;kU5^^5(4 ɗQ:tmb4f`DhbNXy EJ!av﨔 1œVS35iDGԡ39A9r\ FejJ6 )oo`A7nZ?4}Zc7x4.`=RR{}H* `@;Nlc[bca%y t0{~oSZ~r{]co| U_|w^OECѴݶh 6eJ-lY>7L^!ZAkΖsEˮc^ ^%R}*|AVMchFfuS^\Z*PXbpQ;baLJ:Tc\Lv^aĦ~NK/YtaR/D1XODHTh f+L;qs'[jز*#6\cCQSUpmg \LmW>%=WQcZ8ś8mgϬ68ȑE!]rH(En 1rr,/rh$wx{+9CӶb3cϴ v,`Ď}GYGIw}fup^Wiנ.M]{өI-~úF ppw4ܡ)&NISqǶ.ɤT)O3GAB!dU)ssweǃY=k|s@ܵ\ܪSťFo`CߴnWXlXUqݩP$]EnX/6=09j Xf1`)7I‘NM8HLWiG[5k;ۄoK,opPa4?|íQǨ2DJ.,Xckuۖ>-׶@aH,'\Ci}mn*SA:e_=kJ4`4 v[oK{>{")Wo~I00TMj-cm0F,X.v](naGnP`ۼ/Uz~wn+{jG%rLz%= O`לFMnY7Ƥ\d։]/{juح(=_7]+Q\qw;BJLF@Y:2Z6\asR.]|kĈ"Nvq3+yoy]ZTqķ{wE37:4+ u,ָlq4Q OBQ602ݕC\F:d>M\{Ė9SJG|X5q.uC'} mB[6p5 [7ΙK׹v,6cӃZ`H<ŎT$W5(`c0&'0Bm$F6 "՛z7zgl>娿p%J.󧴴9ZU1ΈQ6] ^u95ʫd%>CGBM&X`WufA淝yū0h CVx4-nR(d 6 bB4/* W67wWF|53ۀضРEtS9w)0{~wX;עNLjT?F/\Ȕ_tKcX9 ,oͩ׻[{t3E꿔olװh\QѾW?+$۴uS!C֥[ E$(=9>>d߻vː)ܨ.B! E QSβL9:Ԍ"_1r>Xx-V4z]XB!xLQk[K1*yN!sJ) S 3VB!9Rl rc|B!ӭB!B'IQE^}D^(PxlB!ijK2|h$W~ș xI> !6)6ʐs" ^qGbkoYذdtSIY!RlNFd+BEr LaOg!BeBnc23j@1c8a Iu̬t\=~1u5 R (|Qkx~)SOYi#ϗϦQYl'Ewӭ[{к[?ޙSI7z=h e2$sA)'F) ?AmL6#;uzYh3u\Ejrc u:~.2˼ĭduoLʗ45}+D Ȋ7gs4;f4?d;aY_Ս8xV̂Rq∷tawXvoL[@֗W1l ߘ5#wQZ,O)6JQ؉/{~fd@P鉉E7TSGŻfA3ht$uGKԕdV5mqyC U+`.CJ,6˗cI7V`be}%&JSlgkamXBʑW|6N ]'f/;N+=%7%z(ԥ9 !@~ԯ `(U*4(UG,^Y&g23tסMV zu*L_aFydiMҡ0f`{n^Ӭ%tfƟnvT#Gf8_;X^*1~}<0uvdu5kFkvN.TP|!9{B]jAE+Xu ӚG-<|N=Ĉ>˱jU蓧JԹ❖v("7#Q dY:Ө |?CMS0jo\z qSf%^H1g4orEɡPִ+:a!\sAv}bȒ$Vk>SgO y6 6lQR@lgy&ft$-:4L} H=TS1ՔޒЃg΋<ɇfJHu5 :oTO_-i(sP`j 307L]w}@!x߅7<̋O U_s|w8;|3:~oGBnhA,ۘH$:̱ٕRX4*SSiMyk~çʿakk5&87Q LAu YD>vPң{E<,iBibm]b7e=z!5|&WE2d.X%uJ2J q"77qΞYmpPf֡d #6evV1kݒ3V}&7—s7C>M=e [OF$th|C]x{zO奤>IwӮqͱ7sSyl:.7bڌ!8v }@1=JV?%6foXȚY9; ڂco;WiMCb=;9-p h1FM<Y+iq CtGKZ*ӊjk\+sOe >K?36]$;*wxZpF=[E%\EŽt!ޭ|w; B_#F)rsweA,c~)3G# [\m[V`akZ'U&UUy|s:i,KL'jT2QS"G|T*IY$ePB7h`471T}#s,LQ;#;>1$dꉏK2)Uod$N&IO䧓iP(|7G<PfcjT24ZT6θkW5ne%-{7Ӹc[Q+aJT*((U*T*G)jMzv ҪO_y7Ԣz;;N ah kۙgJDƵQySxGe9\Ʃ\9]0~6'wpQz~Pڽ{;n6A> RоSUlGMt}77edݫx,\ wգ\mg; B#èJ+#>_3uM%V*.0|#>Bu nTEpec0BE s/G=[ngqGmǨdh:ipHCDSw%+%7S gS5_+̕\(U%P0P:ta#_ض1oѽHᏱ^lzd< cf1`co; R8s53MLG17qV&.U} Dt^uW\F.!ڤ*ls? \ľxa-tS UδU%[~ZCA Nع&N8w*鸜QrP!)67wWFf̯0? k`cg&j3b`\=~ #ػ+YX1gc cĈPd4TjhdIJx4tyGF *z-9w'IƻucLEΌZoꚌ `hnρѺJ1>tSk>,xC3-*cz-+ָ3n%FHu[nB[ =xEFW.(.KF O2s2$b]z*j01A聏{&%Y8|$q&圱5\ϳHOdOCk~ۙ{z +̰PIƁ;x܇:҈>ELJ*!,V kZ!]W3dl9| W.rv>3{Ҿ#}؆_QY7ٰ8膯\9*Y,+"E/ ̨#=1ۙy^3A!xZɕ2ݕ3d̯6'g4hQ;cYvdNǹiD"2l3;Wgx>v iۖ{#SWYqx Uj\n딱JE.iZNe?&Өkz8եo+HKrL k T>d'{ n1P-c捤93=|j9GwGs-4̤qʧ]C{Fy}V-Xǔ%>#޶3s g۷}řuPF޾[8^d7+ؼK}a&6UiiFġLnw)r]s2xi,stx 6 @DU|I ]'}mAcʹz 碄\؄?&sJ7j===]pzuVַ}?ǺOyk@Z/Ҳ=DPT%ĜCQ%> s̚Or$,N㸒>-Ë̙3x.2ۂ/y'E󑯵eHг`ME>[n%ۃg}|کk󄄄hk 9RcNiQL˺"GOg%B0.J6XF'qJF> !B'I!J̜+-TCJi#B!J ˜΢˹OL>TQڬ۱vB2N9Z!B2J!BQ"("B/ "B/v(B<6g!%Fs>4+eKM<$BgeȹS/θ#aalXE:h$,B)6ʈs'#Z FТh~C&^>8RC)|."!QRl'"Z~cВ\w3' A3]%=p͛SV}DRw!wfET֣Fkwt IDAT|ytձJX,?Ǐ7sk+1<;Fc4\}x!Gߖ/Dh32IK`4h3u\E4V2t@5o?ͬh cȩߏzҪ5 v4Fm.YxoZWMe N*2Š͍9e)3'YS)z3b[WWVD>ii(B=Rlټl;FEZJv/UP鈉E7XZq9xwbLo퇣j^Y2M,ߨZM?^ 5zv6˗cyhT 88{*Р9I\1-z3f]eTIsQ`vB!D#èJZJ&=JRB3u 5܌?sttmۮmoKM"wխxgrH2@!FxfΧxE;l%0Cڟg;{tS9u;{}w~E\<{=h<.kfDYEDSs1S7w6[ܵRiZ_44L3-۴\Apd`K.xq|\~8ۢCw:Bjb,'na;_ ;fRO(z=x|$x}:5;CnmLm8T{k0rw|y3_[uf䤱43KDD;M*d> : tn荫O*׬D)R]SQQmWn [ʿ0k2|(vQӽrM{x9Kų&M{`\|5d΁RXqD[xj;mrtuȥԧ5Sҳ.d́/|`wZhE'@[N˧s.[߻ C|29bwo;Cdyt}71_]ȡhT;Y"DFðiY3 N._kQɑRv&VSŇNuL['F+|" n6xD=ډV'vr_gK$!Cն*l>ž!A"-Tp2eY&i|Fs_-~/[g$Wg\zk;+%")tR},ާ3OߵqgGfS>^37DDSQD0t Bt+Q a6_GOq*OGLޏT|8~+;h/&6K"É@t6}hzL3| q\XݚNRl41DGGqvmLj׾^a@dOy?APQ='g{8;q?jWL\jϸ$4"_71{F?Ck9+K1$prAl3YU_zu.˞% YB ?[9_dm$ǻ4`E=l_5<š_v/\f(G9n53wx L|ѿH~隍"߇Sdtۃo6`k}$@Y>|y4{w>jAw/bx7|{2s(Zdű}`窴xb˟osic9~5xr2&Y325׶N>cvcҮуN0~~0Ld|rS=<+YIṰL`ǯ\@|Ci~El_v#ylGgpk Mf>,@ͩ(M's'۽g M!s;` 0b6a^~UX&)ǭf)>SuI㮴7ޜƱ3Y1DDD&ح^ܭ[lWv|ڰyU-Nve7ۤnas] . ^,{J=yq*hr!s_OPϠHFC晅F g}8ǽ{ɍQyO6lEYDDR!r4S/qz75Mv-P"o#D9W""""6dCt]ĸ_s0Lيtj[Z/t~18[dCSlSQRT6n ;;bpn ;"""O8P!"""""6d {W&ha"o"""%"0>{sMHH:I,""R)(BƺE0\=\69V^'hR,?FU@/s4̆/P48}|7W2QkUiN{>O6uӴL)k5l図W ?njpt+?]b/>A-<0pd^ϕ~=W.Kथl\ x ""6֮m&ȄqYme}}2?sF-(b0iPszZ?kY3wkm5K Sz<;~ʑJymզy^UC :>X빇sȫ'i77qc3dUulM Zq,dɄdheR ?g}]=1؟Xˑ},MrOݱW7Ѡ}kVD+QmY,X8İڧ1XHoݍ9?Yc+~gOm]Фe#* ""bc@0t@> G?CDjO嚕Z3X*NDFU_cM䧑i);GnII eBV ^u2|Be2ygrw- 8n)w?Vl~q gjQ=391yqo]t-4ߙ#߉\-&x?AՋU DDD6l zEM޶<3> 6%S>>8կ{Y89R+:e >bfrtѮ:#BV0Z&Lw=@ѓ]o^Ww=i|Fs'f}&/>-1`1n)2l՟-I1:`g` ̏i?΂ɹ"n 9CWnOeܩ%&Z=N_e/S!*/⛤ƌk⊁?䉳%Oc.[@DD$4qLM E]Z>[0t Bt+Q a)8?ⱳug9qdwϔ%D^N :tf~AF>4w58BsYbccH28hgك|fBoH3| q$[lLAgkz"q18˗,Dx콨~毓86n ˵D6$$G+=[X c4t6`jEJxݯHj8dXK9?@dOy?Υ弮H~hd0eYij)X2c7w0kR0&/ŋX1E3pȀ wʹ8v\OLc-p5hEFzWm2sGa}mN]6g,ߖ?яѹOYF9ĭ\?[n AoHM&̷% {4B2Iwpv8'FwڿsCx%n9o g=O;L=0UCyH|3 ɪN0~~0Ld|QBdgzjsnݲ]q7y:h zWo89a;oN"СCy^g :6㙠g-S,HnXm;ѽKwE$"yt9>\~ڱkemF޽d +@\yfa!R ԟEDDJ.]!"""""6dCDDDDDlBӨ$ڰtgŽB$ԏEDDlB#"""""bJ6DDDDD&lA{JdB-PDMYDDRQgΰ) ^4)ԟEDDJ6%E?Xh æ?ǪwM%gݨ Hxw)2n򮍋mʚye)ffΞd|4;~cNZ,"""d ó'a0n[nZ805i١CYp#cGb&91@H9Lzb{6~;b,3~3!OzV.x0N"\o' 9U~: 'sS䊒wDTIZ @*U ?vz~e 9%XV-V̩D@K=gk9Asll|Ss&vN;'6S* NXrSH輳:flndLp)i$^N^.#=Ȉ tݙ**st )˳nTYwʗ*WRF{\<<ZZ?rWJQ\yʗWkHv0̳-h2dh2n!Iyl[-JZ]tƧr0fCZӤ[rfiDQ}Etɀ9aWR l5Ea,׏.mk@G1gHԪ~4 \B }4B2uf[Wb k×h|97V3G;¯Czu%])l[sf֜Y;~춲C&g)D]k(?ޞ-[~bȤw߿2#Z2^?QKb7&n_g_>PbfٚF|9.cn1|JgRD΃J6Y´I4o.ZRTD [!dg-w5lYǍ53moM^M_{oHqk6 Xh׶p%ј0nbe}}2?sF-`$8VC#h kguKOHЇ}lz~5c/춓;&d3&/jVLM;O1g֏yL9*ULGf|?Ι];aW*] "dcb3݈Bm3ܷea:s#gY7K{Xo&=#X7c+GRB#J6 C){3nMΟTY 5bAmT;_e\>E<[៻WED^ sKa,߅9K||/<< fO0d<툮-ylҟ㹼ir_~O3\t--7fMľ_m߉Es_gNu &1&E@޴)bFӨ 9Mf_MȚkpr)wjm\2N3 2K4Lq^_Tv1ƈK֧o뇼Xg~UٟorO&wel8XЀ_/ڛ~bo'yovAm6餤eu HǍGX?~";e9"JFquuw IDATN\oZ9}&WWLaA[V Vb.S q˵D6$$G+wc1GpN8K|l; Tt2v`urϻ[O 8Y| |[2\=Kx_x:ЊRu{Q<}_'Oqm ^An1z<"dOđ}3 HDD4R˻6G8ekOϊC `ɔ޷lRIiz0eb6VN#x喸rXXޏVdԬh('U%|uV;yfa<مRܕ ɥs_aR݇hж9u=nY4uxpg ]W9a_pp ܒ{ Ub$9nxxR/bŌ ɫwf|3?*跶#^^zjsnݲ]q7y:h zWo89a;oC:'gPYq=m"۟S0+p8GexjW$k7ޥ"Vu|w52۶mwށ@2txd E#+|}<)E?ɍDCDDF+"%P"o#isuZz_wSq=EDDlFӨD187cu=O#"""""bJ6DDDDD&lA{JdB-PDDDDD"0>{sMHH:%""""Rl)(BƺE0\=\69V^ KU0.eYՍZ޵qqvm?BY`#9Ō9ٓ ߛfoiT˖ """"RlaxqC? ooZ805i١CYp#cGb&91@H9Lzb{0VCM$ex^N^LߴH? !=ޥ5 ۵{FU@.Qr՛S'7 TRCnFǜJb|S0y 9{g+S"62r $a$?^ئRK >?īng=$fRG)tWnXvU~u 72&x84/'_/AdLZ9aud6O8hN"FyE=v<:i<=w*nԖ^|b """"RP4-oh2tezRZjNҸ̓ؗv`oIMIǿ-6gOqzڵnM˰\pV67]-Z5M Y3:WʧZHKyeÛ1`L@9XH=G}z+6ci\>̦78>m !aC{.lD7){5W3wvMqv7j8f%3ؗq3x畎=`@ }x7m ~йJWn7&3+Ƅ] },* gp^Τݺ7&rf/?~ !ϊ=w(`;9?vmeLp):{;RS;˟Pݝ9~0= Z͉ĐIMzj[ɉ1y+Q)zє9$ՀKE?3w.~=[;])j>9,f,fr|-vFǨ\!&EԌc%wf& d zNO2xr!3:Q k0s'䛋 X[1.[}U0c0h6zakĜm[eְI?i{kœlZ:.`?pycfxuV_Eer2"""",%]L7 &\_F0drZQ9=aDGxU$#~'ײ`3g>EFgj>Mgg|0@\/-+نٶ0IذJ8L00LL&fOH hH]sH3Xbb.G߳47=)jvZ)zG tg.! `#\-KE 0G2p&ÓUulM Zq,̠'Ѧ^m셯]E: 5߻){ 14VaV#ԛ8#׭I0a2ZHI6cro3?-WFDDD^d0t@>~3eKS7n?\JvzNDF\W] O;-nFMl!~&vwzy.`@),X縈'u+s& `#rfoCtcزFVYcq X.s9<؝-Z79f![z vWcMmu8ڑt}Q>(MA\B<)0œ%c//,j)(@VM7ik|}6m kɥ4Qq-89RwV3t@|=H9{H' 'vkvq #dnLq^&>/sw*٭rNuL['FI{3<l;~:&9o'/nnGX?~";q۝ml""""ň37%:vjrLniӭF]"$8!W'X8NC1odtCs׫ҫsY,Y}x߰z)g/\-g⢉ITr-* |2I$$x3=| dS oSmš{/;Z1_!gg M}d*2GpN8KGϳx,Bv YN]p>,yW3SKہ5q{FU@jyhxGò,s Ya,1;Z_5Ci,`4uxpg ] b6q6:9˘ӳ=s2ׇD+@rKr)k<"/fuAp2_aR݇hж9u=6ʮъ e<]mؼ^O*';̲mR7iSS0+p8Gex!{ f"͍V}h?A=TϺx&|+"E km6wnD$~nsyͺڱkemF޽d +@F6 _7ϴivCr#FxD1\dTQQ4m⇽}6k3KDFb z )֎?Dz\DDDL^>WTc\3H'L?x.G""""%Q݃ܐrs3_w)œڰtgŽ沺rVlM(PQB啠Ʉ=ZءJ60>{sMHH:%"""""W)ȇn&F= WMUW!""""B Uxw)2n򮍋mʚye)ffΞd|4;~cNZ܅%#ǥacQ+""""%xdhx=i߶#uվmG{xr4׃sn#aC^xmKxKǎfʺ<sJ*Idg`NIÜN $\Jd!,NJ3ؓtÇe[0g2U˺]/0v`ݺEDDDpd)XvU~u 72&x84/'_/AdLZ9audw-ᰚ9q"$ˍ;ak97ʘ)s8Ȣo|^'"""Rrk6i+0&I MWR?pmľVKjJ:>hٵ9Kg|܍Wy.\DocSjBקf$|"_ s . ߩQY: _/-{9wL+5h>WN]:u """"r)_~W3ԬQC&gxe숏MΝDi>Վ#0Ӡqm:ժm|jM$1NF[:fgiݟ./ F$K.\36L3˞e;Sv56-\Cyu?'-UUۘ1eg질J|Ѯmڵ\I4&eY_LϜQ 8/q1 ;hPszr9~E>󹂻+U)Oz=E+=Tz3|s(31 `0`4:r3C.ָ=,jzPp#)mi+~gO‰}QTS!""""(F^0t@> G?CDjO嚕Z3X*NDFߠJzE֌ &JcsKcM䧑i)Ȉ EϪ fdjt-όæ dɔ;N^2N3|JNO ;Oj2T bw?*V;2W?39hW!+\[GY=qDvwM`""""RqLM E]Z>[0t Bt+Q a] ygunj~d3>~]f#x|T)g/\-g⢉IS1GpN8KGϳx,Bv YN]p> Hf7YaN9_?\ΰxc1[I&::I9)vJF- }\{xV|}:eK|L=f֗zMrh`G> u Vfؼ(Cj8C^Q>X-/~kgs rQ~"f=FCY?O[@E"8yՠVΌoGRtd`&;"M{)' d c>.yh1)Jl_&εe71ѸL^acd]Ʃ Kw#{|y5F7Z^wo,uzq<ƍ8}'dr=!OMvϮ*MsSVDDDD%6(H>oYa)% -%"""""bJ6DDDDD&lM(P!"""""6dCDDDDDlBɆDy_xw)2n򮍋]LDDDDD2SlaxqC? m˭V+#8_&ޮ%(_-[[rb28G8G8O.x0N"""""RliTqqRMƩ Vm,1op˺ fKLtzEldI*)pۈƚ0nbswA+UBFmo*f5GsDI; [DDDDD*6#6aO8voəg߾H>+8c:עCw]Ԫ~4 \BH |gt[V3G;¯Czu%]Vo?,aTGi"&{2`fN3ݔHWF6v~-?5gfyۘ}Mϝoi ?F,\/bKyysQA[1_8@2j[&wp݆ s`ٳl}g*ޮƦ5kޘCmU.!;n'VF6ڵqO>ω=̵ٲ_`.g1<+dɄdhc6<26& vZiLjaV#ԛ8#׭I0a2ZHI6cro3?ٍwP"""""%6apA7L-?ad_5vGdtH۹}-nNn ?&Gw3"dev+\#.u[q;Nbh3onSDDDD(6ɆDtN\_nZ9}&WWo| ˵i\ 1nš;Կ:HQ W~>p ڗe|չ,/,Yȩ -('_|sr޵fXX4!""""TI6jyhxGò,s f _>L;{?h5 |[^ F?F<9g9x>cRtOG+2js n4 .^Ċ/W jf~xd\%|uV;yfa,"""%UO6 ;|Q'WR!TE>ٰi?<ʕ`0v8"rnTMaQH UF`ooO:A% ;NmEwr;]h)cM hw C΍b%ٮynAp*v('[-W_>ߥfȲINM6m\Slr3888yӡcƾ*|n ۪}*9u,ydZ NRSSqpp_\ֿ aH2eILJljѪ C˕"lX ; Ʌ'{"L2tإBTQȽAɆ؄  %"""""bJ6DDDDD&lM(P!"""""6۸{'];v-8DDDDDiT"""""bJ6DDDDD&lM(P!"""""6dCDDDDDlBɆ؄  %"""""bJ6DyCIDATDDDD&lM(P!"""""6dCDDDDDlBɆ؄ R""Vv{j7.fȠQ FU[M!2%u5c]? yEV |d7v5>cJxqTIQn#r4}9 {F%""= iʭ{z:W߶uJ13_*`0}|DmfDf6\9l X`6& PDx,N n6Y+fXl4"zƀŗҒ`3IW1\NM%d-ل=l-ճ!""m4n Ն^qG}eqsy}{l(qo<ʔ;2bI\oٶz˺^ᢉhSCCΘ͛k-rc~nZQ^$!'Ħwgн~×e\Ѯ%5f(=SJ=Hd*q#ԴUS^;eZ_챛s2pf_zdӪL)gת[kuTl+(?3,|BV6o퀟- rv~)zryV~.̸_jFǾ}];2n_9c.^x ]n֏#oԓ~re(]{dx_ȝo{TbiEn=&Af;Y,o˂\~LNsK|@]Ca떗1{)~w㵹s03&]L7ڻr`L9wKb3] 7,,Oo qe7ۼ-1rK16;jh:Ǵ}g b|l Sӟ`mpiClƲnRY{;6uVm:ȥ-[T?.$WXJ6 Z:3%JwoaoLZ{F<yſfy5gR0x1`KN=t]!qzⳉID݅Ljtݸ1 3bhclӍ`LԾLjxKy`ZCo?|j<*]oLtp qk',&/|-ݮUCV^V`0E^RԻq3/m:Nuq]np*WDŽ痰alQugҳc?3IJLߕΞڰJ yhVovudSŊo/CmnLᱯ)ׇ&ެk6W]]4$yog}#QȞ>a"6Bnų5O381 S60i*O[B=n}1zse.?_~IXv͂dzc0KG2VL%ڇPCSF]32)<*ٲ[7zŻ?[)66eQle;GGz{p WvŒiO/{ٛ_6X=}ieˎ<~kVZrC n( Y9T_5ꜗm0vۿ®B~) }}5H‘s5룳R8#W:ӗR1طSk 4yݸ{[p5HgCDDglT҇OL潥lD&y71mlHmT|1S=2yf_;_m=Eh}fm%vwb}"Kd EƈsSFJlMG^pD]ӎc7>ȋ^Ro#y7E y㩇XP`ӬU;N>ލpŭxt8vOHVUVժ"jyvP~>5Vb&9G2}p6I!ڻzUdk%F_gL8Lشb1+6ĐlS Z>X)0c|؎KMn?nYG]xq٥^w&iͺ5ȡM9a|>}^9j|\ʺK& {ӧM*kuu/_7|P U,.JԳ!""sG cLFIevIe q[c_%K~u5܎YפUq;p=2SWuƛ. muzl}K5܎Y$ǰ ^ VφYmc9u$Tl,s;eٶ=:2M*k_O]p1ZYef)""<ƶ;GY;GY;GlH:+`e}ssԳ!"" q{l{S48β,5"d8#n֑Rφ8QT\D|\ ,jUaeee휺d)""6myϤ$]cSRZB|ڶi[cudssuTlRSRmy;(--u{sN8d$5%@ PcudssuTllǣʶm>VYGFY;GY;.YGJņ;E'I9ĠRPDDDDDBņD  """""*6DDDDD$*TlHTP!"""""QbCDDDDDBņD  """""1խX|!"""""'?P^b1 VOP6b}lt]DDDDD(?P T,KIz6 $@R^'~iz @{9B=F+xrB#PsEDDDD uH,8*:4!ԫB#THBKw#TC^FUd%""""Tjr\= pxP!""""Tf oԳˑFU3YH*ok09Gណʋ4=ڂ VDDDDD&SI *FIENDB`parlatype-1.6.2/help/C/figures/lo-menu.png000066400000000000000000001512211353244124700203700ustar00rootroot00000000000000PNG  IHDREcebKGD pHYs  tIME8LS, IDATxuUކvOw  Cw J( X`1>;0@LA9*;P.]k}aa \^w-, ӦMcҤItoooAA͛7￧[n#  (E_z"AAiz+]vEu AAYI&I, pΣ>>>  ۢrI  6.y+8+<o);)?c G%S$ BR_E׏Wp&ߧ_8ylý/:$,"yj  >TV3+ n`ʚV+V+.;vbPp]ՓW ɈQ-fۉӥS$ BâU:z6{hӅJuݑ1&sio;s@4<j‡Oq@A΢⧝i8}"6r]V p:QP}GaH o,ÕS ʘkN.ʎ\~aOdîo_)A9):fѯKix@6=RH޽e]sI[cM5r}ˏw-r~ #]/ҧHA@AUMQՐh8\j(HnLۉ]Zp5.W墫F&/-ػ`:TdHABU)i @l|Rt*>?S\<M:COd! tM})A07g~%p/A:R8o 1&QyT!@>-XBB@b3(2Y@}m^D ܌ `>} P؇N }*v1pd/"L!ua,m3dQĘ~w"'͝;`Hի8;#J~~ (&Jܸ]wiÖbmŠ;)*b¤)),ƥb0cp;8wيl@AUR]3`21TEGJQ$ ,! Ȃ  8E  8E  8E  8E  8E  8E  8E  8E  8E  8E  "AA<% Ab0EQ3t]!TD fnP i>AfY!*bX0WD ooo/AQ$ }`0E  "AAD  (AAQ$  nsع~+5 A(s?9 6}Z g(*\2(>ftzkl+91%,Mu7~l~>DE*_u qC? uvv}qQsTY]T̋'ӖXE9לørܯ{kZKK_ıYOfĥfe~l߿.{_?{J|<}pn[KnSS==kZUQmSOZ*&_4;$ZjpW{I akiO10=]U͎>w:~<[:e<&\B4I8LܔY|MqZ̽OƷWY[6zJғ} |E~ fPșzlc+A7Op O0/3:9I]̘PA)p"ň- Jb/YUacEwdrp: wMo3w&6+{0n-lkg !U`'L9l++ˆ+32|1""<㳦JP}IJvu,}tuP_o|ܙ]F |1QTk{t5dm'K˾qםpzu{"+>7s$csF{" .{n;O^1Pԧү~Kxŷ3xU@s#` 8qqTEj$-~>o]A pͽ7>f#81}{ܰokx`}mOۂ~Owo~íVd!0$iJ G|2vhY[=1BJcꀍj*L,ߪoj> ԅw}n2ݾ:owtnMKU,hs3&}t^Տ^), OirF\olYenz+m3_^ui|>wo~-ôe7(j7GeL+qgCA\pOk,#i'J5Q&ܙ%A2ga\#VcjF)0tҽGq7.Ŏ^ח0)ɋf RߛJ %|q ]uyCeO27sϾ<핽|<:+ $$ o恙0?zS൴bՂWs7\WF]ޟaƋ0_m\^U800+c&xg&ؘ@_BR"J[G`?諬絫2(v}9p~>+fYuil٘zCE8b4̣֬XCB?HaZ8C5ep5yIo MIuBܕd,oOgbK|pBeՖ&$*7Qz&L'.Os3eӫ!6TV3m&>7;ZhAqU%jP@`!j?tUO'cRBPq֏-i\qe$떑fnZįs/ M~H!>.aD ?#FIO(1"i[v+O}e:9]UyCg9n&36?,' Y-Mh"Mˠ&L/Cb7SꄏABFMUU5P|hգ;[E<ȍӿbC~.06*M#/}m+bhs+0g{_˸u|d)*(Ԃqt`Éy;NDKFȎڶ^(^WK4;O[hf: 64~E<}VCLB|L|ݻ$nQEo•@Jq PEXyId\Ҵ5уդ; $6~̧P_ԒMlYF+04> o?IarR[Gvr/]{uepy& o'_LJOSh,% "(u{IY&c5EsopMjGOcW֚xʥ8zCB oqH*@hߋh=kVbMj[Oxp">u[WqgGX\7v7?1 ^zAԼѶ{-l Ϯ?g_61#L?x\ŏē"5Y8ő4݇oC/_1l>bgRXibOJ 2bԫ~x.g;_>y5_d'n[kʀaci>Ka$s\{T s) 5-ȓݤ43"4tM ڀMcN$e7bn&p8~kl#PEqNYYG?8uPpE}MǑ\̆ݙe]pzs>#!"W T ֩|93ۍ!#w{Q":4 Il~cն$fZM躆^OZ7;i& ͕}vΗl(8c_%'ҧެ}Gn6EI0e7}5 'Z.{6l'>)Ss<զQT/1y̾e8R@z ?ajQl^ݻ^7na_R͌L 0pwt='G`%Cim=8 I9Sʷj˯sE$K yq7MXqaO_Sx.h! AP)~t# }XkN9j5epM̙RUWVg̼?ŧ.~'B5B K4pt[VV<3^F@Ag#Fr?|dnL kMT]9.Q*6]g#t.}g"|&4 Mi>Q$ HD nO  "AM$  H(D g *D p "pv6%MhY)*z"AYAT񯪞],F#VUp֒~80ւ IA8s4]E s"#ύ /6.Hs0Ȃ XD RVpA83U(AD8E WD rA*g yYD qpb ,Oe"A´ӍVޟ?m&!|ѩ0&xc-`yn?XSߛ:;xOx+WF>{w>CnL4oՍ Mઋj|P3a{iĩYxU~|jmQ{Nu[ ٮ( z);v:.NX,(B%RAQ& w=:c2d8 c{寺`?;3q;]mOA_TĶ<7F$ZcWg3hm" М+g˘c;{ 6MQbFG,u|#ɹ%'` *6cRhfrdQT~V6QQ]ٵk(Baa T+:>>>nvIǎψ_f 1 ufLLLqulڼNaѽ'{=c 7BrJj]0ol &P;廵&ƽuE\!ńPY"25xDGU6"c/KqiĈWP!! g[@0,/^%7MWi߿aDQNuSn _Ns҂&)~ىrrI&udLqk:/4~Pq2_E!//:@6mt}ZՆM73^~DU’Zic~7-\v{<VKȠ[LCt~z~w>B1?BiK@(Z* V09b;HwfصLh=K,}yq3%~Ow` g᫙v[xmg`u Dt)ELOfC}c'kt9+|{- VT{=͛߬#!דѭRm sC *{ڄyDgH,̥o1T0;%܌Ob~[ϮpO2?jmIUnR8,cjurrr\Ջ@w0LTbo0N.Qektxb@44tQEe/_% 9MCu:W||9t[Z:T(Z}&RZIee>r 1u*ᏈKR<2ISo4@#~>pW_ >bp=Ddd$v(,*/scrssEUUͭH¡CMC[3I|E& ]/eD`*G4GO\͂g'X2s4jg;^7ÒX2(TKbxR;y)Bؿr!~QTڎO|2O<,ݾ~ [3 xdKoyb.E3y͔b'6mg=4^Ovv6PXXbiQkrGF0n˂?n`2&ѧttZw6śwT(MJƟvat9r0^InnNhaϯA=}M>~<ڵEOJBŽ{ł BiRAAa!N:ҩS.;-p|e; O/r( 6܁Jl2@<ѝM6p8F232IKOd*}`B0)Xb#k|W̺}f]O屶ҲQuX|M~$z]hC-8QV\~ޮ]3Lۛp_1Fwk1x TUat(,ȫt[^NADY6 QT4uԆVrW|\z8Y_RFJJ _}a&E)_ia*.R>}1|Α#pc; IDATD .B*( ъR hKK!l%WM섮DL# N`BBD} vc0df L&vJ=i׮-& H~^&( ViX2[ i]T6ގpe%in\~RXu>=fC˷b`DCH74mH +c-c{b2 =Le5sdU KILm 0Vfìl&4SgU}*;a!MkCd4q\JQQ' PP֥W*b*}W4]ջ1 w74Fa~V|H.p?'P#mD)8Jijzi )//ooomF]҆v :*]OQl6/6oDi_&NQccL_|ul,?>v \z V&JT~p;p@t]KK`?;P(45"R#^M(dAd2p\(Bqq1ٕ;Eb]#QE1,^`ҞPۈ5rspKKl'/GŤk!˄YcBCo3z. J7{a250a??r1y2@O*L֮w޽_x%: O-m:Յ \<E9KcgARA'H瑒&0П}* )RT\D=*̱iA]{)qלa;2.ǤC X,yʊzq/hEIOX.zNw1ē1y%s篠mywOd@@ $Г0ňMex >{P̓ki5k:~k \vWZɤH`3'do_k*r7ԋD?x 絰c-N*h F.yVNdߝSg3L{wjeoUac{wW 1TޭDyoa/1Y^FIcx̂B[fGYք`F>ߔ!47#øoEvcpL=Ȩ־\'E][b3^QiPTXPv3<.00l^ 7{VeӞ^h(u %M[,Ǎ7܄;q:9EaX,X,V/x~}h񖓓C```USAdd$.Dfsq݆ 7gx=GLڥKy3 (un;p 0[ē'wivJ@Q H&a 毿k8NnNzZaLj"͇nmD%{O-vƧit63f|}JEoSxA1&gNJ>Ns -b{|0;>g F̿?ggngfV4$։I"}sg?j^S4׼6KX 2RHӺBxbԓrdf2k1'Y3YT^)ޱ~U,0C?G_< 32Ѽ#2h<{ %SK?n)A|g1Wum5CS_mQU\麎q%33^K,eɷhFQ ^ep!6m%X̔Amy蓕zH|,.O-33ypm].dO`5K#nj_np:& uN~ą8 h\]z__6o~D\64yormLv}F/`@Uգ/jbXp\FF#nES4绕.QXzm;!s\%^Qf#k:];33Aq*SO{l~M]^>>^V-s!m]ش;A=[t(,*uwn!ӧt "33tٌ`(\(e><0/;mQpZU˿XHqAfa0(hEԄn4w=T]DMku\~Czz:'NuiBq]e͐*DyrMӰXיG5].ω9D.J߂AeۦQ2 T܇0ĠU#@vKjj EՊ"g6|#@7t7$9)lhõHCyh:~C\.f͚I;X)$ez/ŝOysH.p%ۘ?}6:i GyN\lfGkj OFEEEl61GST:wGx41P< vMCIZ>>yDժ499;.C=S}Ttxv{[TU|.:3NQQ1Y\tXϬ7^ >u.5vڳa: F#ڧ߇džݻw (""Cvc3LQ_,&ܰlF^ÉQ&٤(?#Νk݅J>^IL kÆoqkmK;H [$Wཟc B3RaOM U/.R\ ;5.222ʅQII ^^^ddd2'o0wB1Y`"׭BcR6tg~V\9eMVM`HV橬vٽj19G'=D楱((DLKj(dJJJ*P=_5MvP>GOIIIQҋrpgpikO&\lH+p)c0EBZ#{1lhe](?rZ?F]׏YM6bHӴVuE``о]g q8(rةoYٙtЍ܍|bpk߾}ǗwĎl6`0o #33tr Ky۵Ýj-F#)*ui|87:!!~aqHKFa"  3hb 7;"~ZՕ̜ ,k]2%N ?$.%yyx{{ѳC,kvnB1kMOZB*H7bGƙq о=Q͛W9 g'@(␐2qYߑ6၌X>ˠ*LYÇݧw6JaS=BBRน %mCIٻaWN?mSvqvӴVuE8].Z%=3g(z +fM\l{B߇GTt㉍P6|Cc.(  u\͔gإa4~D]EQm۶8bc[믿c4=? نS d|H^LNAWql8~tzά'BQyx:/uR2sUdPؑDޥ}9A](!7;\@+=9*􊮑^}0Z kѱ沈S{DgDόҕwT0RXP@18K0'$c%@fV>>j *.j|EiN2O\F\ղ<djYX?| n^~ֵ̌Ê.ͼ iӺ%yxyygGWs37tӂ G~"3c8@~JvA3 `ҹS'ZDGʥ1 (BFz)ɉs'<Ex?0y|-Z>> !bTTx*x♦zȈQLhki??(?3GR+Kt9iۊ_.d4PTttѹoq-)KZT2p8?e@tooZǙ?W#?Ӎ.)vsd$)96C߱pЁ (e>ݤW9]e|"]׉nۋ>}MhD PK2+R6Zf w1Q9o36愷بłn/GY^1z,|㜅SAQbbZ*o|*m0?ICl8i~)ZeN_~=&<:'O]:@EAkLˊ.͑#8pܥ9N߯icu0T#喻4-T#daǑ\ ;pоօ_3A8EQ]0Tl^6bEb23߳ Aiep:=]ź{u:˯+[űg4M+_~gE(nWy*yT=xče񈯊"8~d\cɦi8c& /ukٿ@ڮ'qiZ ."Co9;rX().U&OEFDDop!nw ?|?sሡZ?JM B墨isaJJJp88]NvNo,3& لjEt4( f. 0,|S%008fsWڶm˾}'8dYqq1_nݎ(tԩ^))_ܵ.h*Zf--ZcXƥ9A 7C(,*bSj6ă gϞΟW^q%?x?y Mz_7ˊ#;%h((mӡ^?gJT< %xQfPO듉_&SIuui<0l:S=fqͤɕ:/ow[ 4%YUzQ >}ɷYL?fpwҮ6L{e!KXOׯzgӛ[sdc ^ȃ/"2>\] #D )A"= fWOdї؟[c(1SD^59v6YKY.[å-K7S?[\ߕXܵʥ3&10 3v@>{'v a:%E.J)]lL-sBƘ 5Wg1%S$t]eeY̵ɤH`3'dc-qM4<6kr0~ ˗"39iR&bך5\;?Ϣ;?[Xb#i.yBՂӌЈS$Tp]o>$30 GԚ5,>|/!)f6Go`/qŃ3"@!Ww~C8~Xsފ6FPߞIm$Ǻ UNjz*)UO/{4T(qH*;ñ4k֌5jk͋ȈHCk<=3Ќ)[MӴ Wsqa&og1; @͗HIK!3+m\zmJrrA~azpv ,ƙYt &dfeϞu"ϧ|sraX[DL< Ԏdv?EIII$9LtbL7T.jk?۶g5E\QT%r΍N-#<'.{G6kvzʣYΌ B](*."8(zQT(!<<Wysp r(HzMpת Nי-ʝsBH-|s);3xGt;fsXΈ Bs֋"EQFU™`ۻ}~$} >rԣ,z~A{w.c;9AObaFӢckڷeXl>K6&HA8{Z"+.7|FNm } v4IeϫrG\rUt=)]g͚5ׯʈʫaDE5Iu9$ pfvړ׵vu@?!+1o Bav.Ey?ϗfC܆^Ǐb ]ɟ t$-rFӊCvE 9P^՗ z_/m`WLIJ;a?GQ )6 c´ 5{z#-𤠮5 (z39}i#*D8rl߱aE^.о[m#Xi IDATewx :F~fši:{&?yKDpT _91כSHA8_+>{|:::DQ_)]tJaЈ~޶݁(e#K[r:FnĝtݑOѹ& ʜE;iI"A8XWĴhWN.~*q0!.T\P7o㇒y(DUTTU(Kh)AS&1 cN2%r|gV)S]BQqg}fkA@;_~])is;#,&d*jxh2.}W_W2 mEn9y':  ҳ $:9wӡ_:E1z5 6VI2 ͬnWfc^³W\V7wMx.?V!Y+ cm)H:¥N6ި!L 5WUqUq{?}ʳU>QOyR\"A87]uŒ}Ν;8f3#$8$RGQ}X-هP{NE( (Fi{w=]_4c "X5j6ԪR_5jQVQJVZh蠡(UbT4vDDd|?d'4;` ԑDԨsV_6Ƿkfg+WՍ֭bcmp%$=fO\n1ayz/[Ciyb썵PϤ&_oM[GѓNJM7cPd`'Z_ LߏG(GO7Tj4]zRM$ĢV)RߏŁ ]O`슫pӋ/A,ZMg5!'H=n%Ҩi-<ޙYɕg5ʒpazJ fRT$i=^,5^,bo(P9ӱIp>fҿ=r'=S<zl{sL;l"3FUvFI %U`k[y{r0O!rcw;s{=/U4Q#XP\usLK޸jjtnp[lۑXD) ?Z>ķh|'~mhTe G72*jJZFd[m%8Kq\U3IKքE%<ۃ4Z gi3^qG\ӡ/<]UޥvC_i{;{f366m++ 7͹j3aPRA}j+KU73M5̏e=)UU`ڔ)(YmTo]-tC>ѩ'+W|_O5jҦ{K^$\6oB.[[u3UeDE6|ÝKҕl DriLJZo(fCZFؗ.;dOvSj? 30֨P @zo-^Z wCof#K#ɜt+YկK>id?=)݊%^dP8?yPaTeډF=`gզrXׂe^SeL'%ug)zhiE;t~Mtټ;+ߪt <ǸcH_N`fm*]z0F݃u,<*v V,`J[gފ)*%Nu,HoIxa,^2~򏜽_0EgϵugۢPY_&Nm{14peZ8pt1n$zplxW-bc\I;y+I݌2woxq~gg3, y)=z<؝K ݖ`ȓk'Σ>&M'~F{'xpV4}~%rرT  tuj`5ʡ2zp&~٦yVHɫ7q28uN"c.1A$8;4s`/$0v)X;a5P6'ӊ??30&K.(0dxAʃ(]l)w}>]spFKKKڴjH9EtAQ_6yLvisr3kS|hrG(e0c%3/iVlLFh~ N-CUqtvǷ%'pٽ%H݅1,ӃESK9Wal `nf. 8YwpP&j)Ӥ{O/sU_e,9dlaܶ̀oP>kZmN%Z9 :Ø?mT!_?~={gy:AQItT,vIGicD Uzt@QVhG̍ĆG$:*;aY1l >*{-㉼~_7ƚ0i/\ӫg!/[ ;ܸcrp{g>&xK[8wó.;{ϴzڰ" +U,=eJ`e玃G#_M!I焋c}+l[*ySJi͑\>=bHdbS-mxe\ w[^<8|PMnXF-;wp̃<֊N#z{V^z!f\(e5jjtiu@?4'VVSp}Mcz)`A-n,^4I";,$|9->5b^5Z2AF%G1Ll3:7jP<*tyu|?Y=Q^)U9nWeEP{ѡRvA}ܬH;t~^.F+؆bܻE4nTu+F=#dca[O\/Z1_J^Ҧ m"NJol_WQdPK((ԭ]?O_X7gS[<$}ˆ j){cN#GNQZ94 <~&o|'P]f4&Ei:L2?t=k88:} ~z+jKnlڍȮ>t%h䲑x?R?']un>@:elA@D'ksJzf߭0o_TgѮ,2)u2EƓfJtnvY_lpR44/Q/q!Im#旷xR;/'>mNHpg(j[7LaHԦW+ XGꎥq&$? U`,QINJ%7vBV^(畿!o&mNX0̤͘\D|Dg//Bݦ[U^{B]z6vE]Hiw}Y~_yh-x ITDf/R:>;I.vҊ}:׊eDz_14xbsc^kro~b$4G/OS/-r#ӿ-G̠ ;[8r-BBNS8{7;!5e灃G!.& Mdfs'~-z-o-ΖvA{VcV)F3ͤd9i~w]ʺ6TE6M~sogv8?&BiK6]YtKQTٚ`HtD =Zs:J`لY7LB)28n3~5Yy3zVr0+t3)_#vd%GW<q( O뜷5k3:gtbŅ$i<"[+ȧxX g;lpqȨX"㈎K 2GѣGiԨ?q-x/JS1sǨ}$ogvkۯx~W^wt:.{vqn_->Fш`IBAW\AѠRP?~F=O>q5Xyڙ̛ =\;w#'TҔSQf|OL?+*FLۼLͤ "ST2 <VLYV$|ǥ`T^`zZz}qڱ{, *O:ҾV;-lA_=qwiB$6hMq)lFCw|Eqo.Ug<) _ũ}I[,$`dUPTRbU9VVV܍crk9P% X,en_ϣgeES+Ó*U"ݻo%K8:8biasR%KIzNv2HGNN}Pls$$&H(,1NNL&n"))ZXXP³NNҖU ?)h4ұCG!@?K FVbr@KNN`x.oZ%ye20 $''K*m(Kݥr($_ReVZB!@zD!r/;h 0!e19 vV\s(mx嗋6-e>EB FZ>EuPPM/]$l!)S$A^祌BC5n}y%tEX bʕY\qw+pYnĕۨ^T(N3s?wH0QٕǷ};ꗰ@"x.Zl'U|%=EEFgS(+^EK m@h@)cQۧ jkwn˔!SRɚ e*3l+Wʠ3ܭpXO[M,_Fѳ m իQ^{NM4ؗN*lKp$S1*P9K-*}B'}`TlzGf=a'$l-+A y)Ѵ>d0v #ནPh8+^x;ӥqݖ`ȓk'Σ>&M'TY}gǓHƏK`j댝d|_@C}5C$/r]?ܭ8,K5f |! &6gm)tġ)zve bh*ʴpcHfᾔ|䦾LqӅwz%J/NBx@x`$Dqe5C*Yg0iTR#oL7}X¡uQJ ءXQm[L]ʶ+x fE=`L?YdI^˻Uoډ&&&b5S7^&)c'Dg\˲~NBF+'Q fn>ʎf>b݆ |=܃f0p5,׹֕Ykc$Z精5eUbGkٶ~9鋭HP$D~" %u -EZwA IDATJ{HfNF/5nx|S\mlGn+wV8`\}n.$fsqjr&L7;ӴzeuA '-veؐk{d0aiɫӐZ彨ۃIӺ;5Gb9+ڑ*A%Q宾 7 gKʔT8yfa遰ϣy)3v_cEf_:5Mi;<ݶ@ 3`0 d#Ky*\fJ>7c g>(h1YV,K|w OYrV_KQLʖ C`$(lУ¨e۸kνI a(MS Y" f-b}VNXi1bZz@r&q45[xIɟpU6fS;ߜio [҃R\t)Ǐ*6m47eI_?iCEBܖ1/r[/fٌdh4b20 0GaԀvPڊ'9%6LLAup~ܴ6j ;DZGcx8Ec灃Gޡau$3.+U C朋͏> 2}ltӸwnrcosp4Q0a^'/%iAʓkƻvm%4]Tٔ6EN'}qxp)lYDWTtt4J2TR( +^eL rԑ \[0cR6dN}iy/:fD 5?&s*O]xZǧK]jWdbɨc`|>|.><0S/aa,5bQJ5[3'gApm5=ĠtAyrcZړ|p!\ΕjGllKRnMY bcj㥘-b5RxWjPt}vPm (ٜDFFϋzrSta1T./0W\)"L!xLD" '{]hBeOxAXc1$|^HQEB!D.@' u .Gp1+ 1Q%sS$D"sB! EB! !BHP$B!AB!EB! !BHP$B!AB!EB! cIhIBHP$ bH, In_?{}g gY2a;om} y B6^"aTK/"!( -ΎXRtފkf$/!ABB*pP\Cɣѡ%޾~v?Ic`tjo%ǣhS[Gr22҇S#5o=9?ݢ;ocÒ" |ʿb䕤o_?[`Ȣ}&eYv探S ??Gnwmҡ_J>|MMKHP$2LJqևSm ª_sQ9h8OV`/ٶzdh2jm"V3uepJtfʵ,ğ_-dkTm^m_}ΰl.SWlG۰g{ |:ݺ2kVvlDC\֗6`޹J h-/7} & !(4nx|S\mlGn+wV8`\}n.$fsPpjr&=oiZ2֓}ӲNyVlH=2UvTiH^Ti#1朕EHztبrW_Xs̅3Gӥ~eUUdYI!Dѧh-` /s3>#R$f{ ҬBe/+)5ZLd54]S՗>w%*%(BQҖc Á^Lhk:S 槖pU6fSuN7niZE' 9&gBQX GEDn;DTn~iYt7 pCA'70 &o[tTw g}rsG1ƻ׮q6LJ\^ ,ٱ(߉5Y3C6!8piN˖e=˜Ȓ"!(,lȆ6Ww#W]t)I˗v0(O{*\[{M31(}PT^t OMv綧(}Г !2 F#?ϗ=%]»Ƴ-/gL HLT^l6R5|VL&#GB"H5r(Q=s.]T(D*ЙEB]D*U݆ $(ڿ2Һԩ#-E"τES͚5gy lPu4ZYEeN"oh4 5(*6wNM!yQ䃢Eig}B!uP.BE !BQL$&Q{PL)*xĐQ#9)G1}D^2+mܵ u= Ŝ[DFUwmo3b$q@ s7t їᑁl|oMrmf֬^qʐh_ $.9ȽoQɶ1׈0{Эe!AB'"'&-dG1Dܩj4&e)Aڌa.l+W2R~7tya$-_ڙXk֣c߿<%u"!dz=DDDPNe !o;F#FTNaaY/{pVll,ZZFR(ʃgJOBIŀD♓H! o_,??q" ֶrh !s z(ĤwR!B"!B B!$(B!H!B"!B'?Y޵Z!E !! Nl"!(\]](bcc ,-S$B!AB!EB! !BHP$B!AB!EB! !BHP$B!AB!EBQd"Otmo_?CSIa"qA iޝ!BdH}&D3CVӇSSmBřX#ԑ !DqgÞٟplsZ?~TQVRCB{ S&xDŽ/9mJ0.m0k(:ûU?|WpQ.+ӱxǘe# B1.{f;JاZJГJ7'HeK֯3cl߰2e5FD\4'+0xl[=VkywAҒ0߿uZ&ZCVݩ~GPvDo وB"!u|ѩ=jw:/?|MMm[ҸvEעeT5r1g1Qܭ[}+〭su:cO].[ܛһ=l?O<|sL@`mleb@ !Da8CuAc ^hQa%={3>^3߈%e4$9.CenƇqxd ěĬ:TN4Cmz5Oo㐮K[ !( :/:ڥ #Kk3]4"F.Lٟ1~Il3'4g^m儕#֯eW7+8x @=ǯwqhD199*BqZT;GrK'a%Hy;`F7x+{7ev.&]4XbBhM}G,;Ag ~ 8tfk[נGkXھ:xB"!JWiR\f{إi:aJ[=_KׁU]XդO'O-ct)fa U?!iIT#\J2 %22n^fL&dz=DDDPNe !o;F#FTNN%evp.Zbcch4jj5* EQP_)mY!D$] "QD6d!7o_/{aNsj7H#' E`6c !Do\evrFE+\[.PRRB\Q|eTx~д&nkۉuO#BQTe8 jgjTNdRɞUgB!-9EjjHέPRB!(AQVTh,3!Br=B!EB!)5BDDDH%Qt7G"!\]](bcc ,->B!H!B"!B B!$(B!H!B"!B B!$(B!H!cIhIBH! "G~+Ӗiޝ!ɐp%1Җ}ak-pSS68c=ßQ=dD">BBNy>8SgK/SƗkuBB.Nnaơ?8ꂯSCWΰwR=ʹ/g3k[y{r0OZEB!E+ZxoGCx2TiqpvcX8թ5RbD?-f,)>HX%gBQHŕ?d.ͺRӊ'no󔡡=h 挓|l]ӽ|3s0[SE3 l=-?`\JZC`QtjwԿ'wѦY`;a}?i0m׎W&篘tQF2u4+N`կt[L6cyjqpKwp:.-0|F n퇷oe_S'vpv׏-vBi .NMoO _r $Z~wRBQ1L@Q`Lv۪ӯ';\HwYNwp;vUNO.b`so:7rCN{>W88^E.x_DbԱMU(1W)UWm[_0f^$P[9a-LjM8qt%/GzH?"pE=\+?ecvm%4]TJB59;:7&0uWE γavO N'}q6fFX`5sf0IP\;B{i40K#sPG5چ+s;]ǔC:5y=7,cL]zYt#gаB uNʜvRПz}S_|-+VQR f#&3`)F7;;F*7] !Dg@6rtzڪ2VAXړ|p!\ΕjGllK\UUMtd1P>]>]TD #&;Z`٘8UzӼEߟfWʕ0oʲG\NfrŒc;s {Ů ]z/9JmYÕjoӦ&Wu |(YU-V<%s^W| IDATIl7 v!Ź?#A-K:LKX;s czR֌(/G:WO@@-?jݧzRe6c20 $''ILL$"":u,[X~#ma41 rta14C3qA yN&ϳijΥ7yƢhPըjT*(JQ,!SDĩ;OLh? D5!(}]đߟ]%:6C]Nj.P\sj7H#H!gd_}GAӽuLdw]z 8(nEB!Dۉo;`m+ ·i[6&O= !BHP$B!AB!Ep\~]*B!ELXXTB B!$(B!H!B"!B B1Ӈ$4ޔϟB"!(* ]o_?^6βdv2g).!~xHJ"qTr0t8?H~19*:b_ADZz$(B__1rNuVa]SEEkgW\] %+P<ߎd}P?'W*oKS^3i! DKT.4ӆ-aNOKߦ[ۦ)Os<)1fE~x77ػ`8Z7ۿ==&|d`TNQe7N>ϲb"~WNȒ06JԘt<LoхoLÁ>OWܿ/ve[$g \c8m?&d>Xw1yw<} :5O,tMkwté6O !De׾UG /v(ɪsg?i]ʄS =sQuq3?zs|:3k\p\4g2~Xdi;ϋm4!j'nf46+ .Nʈ?PMVmΪGNӭKY.â;=Xy1|5F~9bԈM8^v%f]~4juG.pySN3sֻ'cnԋ;c4 \Zv8I !Dqѕ(LdD,u~^KN=6c~gLU;:owv J'C@@)CGH{PAx""HSAP*) R M!lP$P>v3\{ϽUjT"ؕMOX$ s[|毷'>Ѵ}8l[T3f+fNV )ݴL/ױ}&~eԕΓ|ffEyf@G#{Wlw˒>'x&?Y?3p/ҔVbk 4 #Y|('ʤGm!~^!Aj䘈zDDZX#S,<Ôn1 e!L`fzVl 9|ͽ[3/ÔPR` jNfMWzB7fd<ũL/Kbw$W%99}ގS7@:6V➓"oH y,yo|N)q>'mB`A,)rDS$"J9ҵɄ_lbMl߲/UD[쓇\v㗐R5Lor}?bޢݸ%ӮI1Y{`IH"ݙ1 ?&˥ǔkYPU DDHeI*۟P ?fѿ ~3sKMq'LEr^NE7eWQMLڔIуv|BQl}ިJnY򽱤8] ,Q^J9pzZ! _nח_{PX% uر j; )rzI~t=]{raf y 7M'f|zgeTl>^U*T R!DD䁤1E"""" E"""" E"""" E"""" E"""" E""""o, rssS(TPbb[((((((((('+BHDDEpB ⧄LnChX&J:\߫^C[I0!Z{k:3LBő}]=Lz=?eyP$""Y^/D2f^39e ;1K>ŢLfTo(i⏫7:/Vo9 ֝,<ǢtNn\x#nFP$""k0Mږ#ax"^@R1cx=ӑn?7\ ncA՞Yy0Lt$MƎ݋de㏧)ڨA[(ȽB&y>xqtc^J#To0c`''4,2f],oM8'X='$Vcھ5_.?~K{9͞ 'F/"/G~"FuɓokodyD6i\7RZWؾ=.kU0,55Jc]=ᄆ5g쾴:}ui&lW(s+³ou$ϦL}{O~Z}d|(UEޝ<%_OexdѾ3z2|gqCČK6pys+I;^٤QSlX{ K&Tw$vpS<ո|}o>_%Os):}ue{yk7~36y {~,G icfQ vɂ1\3k>j5wL0w\!tw+M4=?gOMٟukQcvlG0s[nKKcy6 oLyJGy7wY)EٽuR0!D.^;`N=# sPLّn8<(;`u:DD$\Cnn cl̋<{g'^=hߖpɧܻ52L %UVAb)[Y9$&'l dTeM^͟qXכ'=˭s,eLmG7^εo ӵ("̓E &wvD)_ownTɫV(Vԁc3TJϒg8cewxwF2Sk쓇\v<&:߻GDD6ya"XƑlɽ` f5pt?":$>Ӿ ܨ=:~3^ϗ9`bݺ}$og.4=yiT%d'kU}G&8"?wA/п8,8ΥoW(w8SX8l4_m#'ٽi+.}Ofbk{ZjJgɿ`~ҹc2ݳ,ϨyRw>3%o )5dQ=ଖs-Nfم s(fqr_F5r*w5*we=$$:t1M:c*Џycxfz)HnK=`㬙 '<ȜkUqqq:SoklN'Fzz:VT, *T}rvl6*?(mDZz>\bb"...ff3& 00 ץ/?A]!@XZAh-"">YIHLǖv;qs[6)i6bNb5X[zN_HGDDz5܆T hLBBBBB|b" 77;." ((HEy%&&ޱu񙈈BBBBBBBBBȍa;گ7S]KJ""w3-~`#]H *O)e e7L=ů'jI>{&MW R3HxqxaΦ7P䯙@ޤsi]FUVerE/6Ťζr񪪈M_P$ɣpPVB>$dvk?PlY_.Wi$zVݚc;?ڙec<ݿ3C߳6]ji$vlM3 \*Ӫg9lcHD v U_I\.@j4ʯ7q£TrL|0 L HL;f}BDg#W| NFw仯"9mGY.K^__}kp.E_}B|䑗 a+)v0yLt<1Nj.DEDDo6 Zņ]8G|7KvR:.Ix4~YD+#l^ GkQ]&?< :qԔ$Y`7p0R/SvEr.*}0n$cmRxR"x<<{O\KK `yʢ#Ugٳe;ʇQl^<쿆qqqzSokgNÁf#==Jjj* *t^vvv;6 ___G fٌd0 >+g""ÇgaT"ۣg"""" E"""" E"""" E"""" E"""" E"""" E"""" E"""" E"""" E"""" E""""}&"r?H~SgIπքap3Y>u?ƭP<|;.w"#OVZnԭՂ!~V.`1b`ƼE'҂b:9s'n_KhztDD$#g*W/eg}u#誫`0ݰ'.VtZ>xҎ;3Bdv_4(| 7뤟f%l9t 60*D&mih.Yݜbعf9 >ٕCiܺ>%L^v'>vP&N7`(ܛt.Ӗ5KqҽSMSKC[9q)rGPƋûs6(ϽqQ(/!O dn5Jݜ>Jq=Lbc(t&9M߾^ [+'.:(G("""VZ<!6Gqd*^Y✩#7DB 6(1$mɶS/f SGw]&?uFՏX=2ΚW9 E A""w{A/¬Uk9\1%kc=/WrۗhWwA|:s~{Q2WIgnmpru1ܼq3QWdֱLV%+F 4hCNUsL< 9{+v[yfvz~1f$sd,q8TzM'..Y79/ G7|Wy[+LII;t:q88v;6dBBBn{_Dt:8-?%*W0'ٿW6Ec8K@ ;'rZ68'X3qWD/%j7;P5@ΫV _̞I:ED0 |+f J4z;8ˆoZg2m|7P;yK,:.v ֝ٝ)Vضq=Sj3z2|gqCČK6% ϋ;9H=E""S.+Ap.Wx}#~NhDS6fGf :VX]]\5\.x;0a6`fKs+M4=?gOMܝ`9*TڵU(yfLNlvd IDATuv;N;.pdBJblLg- ydގ<{g'l6ϖpɧܻ52L %U=EP =5;fCEmyx$ a/ v~A\@(p)dzrMy(ٖ\v<&͛sŨOS%?>i|5s0p*=t-JxcƍsxsKtϒS[Yx>;9ʉK!1D]aV,2b&~CԂ;a?%Z6ϥ8!NO*>x;N),66޴Sֳq$x:9r/?-XŸi|Z[ĒtB\SpW=ÔCOsƦ'w7ݫYپjn5:У9۶!e}tDD,Wu~Sx8"c<4z;Eg>⌯YBDqqql6c61La}V.}9I\9\,ߔ+z*lN?f\||ByhU0˽ٟukQ땷̊ʹTTcDk3f+f*@2:jrQBx]>)\Cnn c7g2<{g'+?a&[cbqO??Ey(wPr .I혊5`T'3g|N&ނn^q O 9yiLxqg%|d:^Փs=n/}ʊ=_7W0>)>os3/c=D,5&|K7gi(w~ž43ƌbNwHHDeB /̙Nwb=GᎧ'ӂ%yU8q/ќvN2̊CtKBkй_Τ|fs/!N'jp`ɢqLp Db<hk alLq |);Y܊ix'Q eZ2>JENʵnc۱l8"D\\\0͘fL&a`7?MDDDD3BhXM/}&NDHDᢀ#3"""""""""""BR HN&J{7OǰwBRVD~b13瑳ӏ-t2^`{<~wcHKXrKm„m CrO9.x\-Z!q@wi4i[8zUJnjq?LGsi# E"""N. -k5gĖs8lXiS6H\ۃ8 IKaYjL۷GRIQto,m 'yo&oM0>NZ%D[,ѕO֢ʓ0l%洝̸@^+uO?^GD/ǼF y,Wƴ؉/>z k*cb<=mnyQiՏ9{DjFC' rP$""WK;u2)j0.2>GK -dsߺ83*3vU6gJ-p&sBO,N1s1z .߫ɧ L&bT=Q_5  f…,6ϗٜ,Gc±X穘/%"RkyPB=BG~ nM4WwA|zUD{~> hIܷLfxu02ayU0{Z^sgRfَi1[߈^gCy‹P̹et\" Hl8/=!Y=0-F}ʘ*ILsFv˛}e]'(sI#-_e\_.>>^U3|ݻ5__o/B 4>E@_#yykW8 G>E LAۜŹj B6eF`|b,[7]Te,Kӕޫ@9v,Nb \^|ү=fa_ mcv`[0k?N1wnyB'Ɏ"n㬙 '<Ȝk{gQ\\\@mj3psLtp8lcZIMMbPB틈:c+ݎnfMK?o'OHLLٌld2aan-Lȿ)BLPwEDa7}&~ADӱe|8a?_#ґB =1k'1pZx-S=ЯMqDDDU| 1 !A"""" E"""" E"""" E"""" E"""" E"""" E"""" E"""" E"""" E"""" E""=둯D^\p+:dl_p&E-,z)qJ1,]а6L>ti-IQts\nڟVS9`f}7;q }4֍Q5, edn4s܊aDH.OSQW{6l-?w >^d̽+qs[0ay)X[ 751K )/~l1ӔTӉ(ɻGa9̎M[s)?m}WDD^pHˡ_ۑ1G$OΗV|jerg ax"ZOcK7}^t$noS  $gj!::mrﶺ7T{ H71_y} jH*5Λ<7| e5ksdR1䥲xwqo8)qm:Dv'4&ݣ.דfkZ1mߚ/&Eѽ ݇fOZI'ccD$8nzn+mrۯy\ؽ҇M"4,潙5ʣ;G~"FuɓW?~?0>NZ%D[u+u\ 4ce8S \q܊[ɳi"v_c_q;pYO;u2)jߺ83*3vU6gJ-p&sBO,N1s1z ."ӂ3l`eͭ8/}FӺ^+^zw+Ƒ!eVVۘ_OSޙLļz飾O+`a^|$"bƾϥg2 ZM3kBNzy餿~T=,[s "1(݁!-Vc,\=YP77; )r Sal600͗͘٭|D^ ipXڄ)_h쎁{׀޿Gt&9jBhUeӖWY]3mLۙ|~bP2~ 3ܾ4/zqz~4~3~Ajo x E""t}.,[S{ \5J>rk71Jg~cfhL-%di6nͼ SBIG;!ҭ|C^'KSvAoJ鶲Ww\pĚS*0f3>kUoA^и'N~"[_ ;}^4r:S$"r?HCyq^̘nI%bl>Y7{@a'Fr%Oܹ> s'\!9NeO,I,ĥ80 }3L0Q{8t$w1j;gl7ў5E>7Qe6|%R֓6r/֌˜aYчvn>;wdr8QK &Wpq8_,d6,f(<6}(b[ pLAm/gc=׽[tfW~YI"ϲoGK LA:U}SMOsM[bX0m۴c7oom:ӆӽsxy-C6cO%| rVxs̵8>fZ<)k]~+2GZ=߃ћ W)Xf2v4sv02t up`HOOjbB /"ʵnc۱l8rǥHWxGqqql6c61LaH)UV: """7 a.|?@Q(RB³gM*$$cK;p~8G4 E""rw)< lĬkk❷ OB6Q&R(WR5܆T}&"""P$"""P$"""P$"""P$"""P$"""P$"""P$"""P$"""P$"""P$"I'zV{BM {ٴ4f y",uyu7d]U{.:-!4,Fؑ`'EѭN&JP$""w.gS9}ce[on9GFFuzֹi(,ә85aݸK}uX"5&/C>aLҖrdq^aY9/u+"rcLi_V 1$L<[>w(JP>Uՙfu`wNB)K)N2#&6˸6 Wu>S$"rD"W&lsjTh@MIl'gzh*"2  ,NmpBj=* ?X4+E'a~KtgOEMNhx# ˎs'69.֨҇M(yo&oM4ҧC3©TKh~;DDU/9Gw+Mm$m9[ܷ$6Lʌ]ŶRgY?`Ăظp8O|F[Ol 9jOB$y8`,?j^7xߙ =8]!b`%bHpXVg|͗LUMY5lpV^\d]q َ׹EvXUX1cU띕Y9Qib|;7C0}Wie C-&p! 'P$"vh%JRP:qD<*$w> d6c61̬(O H<xUcxo{eg-G1Sn-*G|}繭|D^h>d*϶Ѫzi 胫]1˕ 8W.Bm@!ݾ9j3G5rCxv<Eѳ IO 5Ŋ7eӨUC^И"B* #;405x[qnh?P:n% 6s<%(:} ǸqseK8lݚykA,)p*"t9Ʀ'}srs)H1p )M3Iv2v3 )c:9s6_t KxbD=E"" )X6Ml߲[ֱ傜Xʘ^ 8Ŝ+/Xj,R!b \=wOƖYwed ӵ(毻&Q\r9TmMDp0zèْc]oIDAT>YDՓ{8mC+m~LnǕQp =iQ(HѼU=~OcgX= eϫgbs+? %霅tyE3)$KHӉ&0|]:1nqٰr!?D d }3L0Q{8t$w1j;gl^9Jd# $.gnMʋƱp9#U&?Ő׫3q瓰G.d3r%nZR0yӎ Xb'dw{- E""`$b$}PI ?bXAJeP/</o6eLA:U}SMOSug j[Zg]^|V /L)ѧS;ӾCaoLů`=7UBVA6Xx;VNӣT4_+72ntAO,sFg;y.ٝgՏϱzK4i4 {ÙV~&rmi?Sԣ MޫY3ٕoeZn00008=_lN'Fzz:VT, *Tȿrvl6*ο]Rݞ3g !Ebb".../~70 øQX7mg5WtDDDh G3t´""+4,CӺey\UeϹ pQDpKRBMi,+_jYjfJ[5:654MVSJVjjV侒 rA"\v~.1_/^sy=y9!FYPw( K <"A233ȠߨQ$^΢۸;*KOOWHُVS9(Qy۰Eӱ츞糽U;pnrȹR/7zc:4@5>wa+n k\DaD꡷oi^2JD""""""" E"""" E"""" E"""" E"""" E""""DDyp4g?>#{}n]և?eOxr:%hBs@5t4-Qǹ"ksycHg&M~ {#ݱD(B}"T?@7i?Tx\'b8{+m* E"" 7/Bѩӝ58<]3${./yI 4n'fɀAՁYMβ=n3nr(b­e9I,m#(ܺ%MJ3b_*paiڟ#gѾ} F +yw+Uxqغv"$Ҫτ(̢m$Y-6![,%9r {|?07oV0 886%'=ގq (='LGqzNc&{h6u QUޏ5q} ?ȁ7#w$8w{GhÁaqo]UJ꘎> >ZkV #SHd>$MYaŰZ'bXV+;6׍It#ї1;(O7AVig4ѶDMvHHᄹ;X##4*3~j00 P;j`stŀtѧAZDDH&:cD $]+^``OWOEB1!-1 3>'2۰Gb#?g>(]iDY0 AIsLB);m.cͲ8ięGJ[Nt*Ρ'iic*ቄzH,;$-pt nb x-[Xm":>ΌXl$ﻴ3 u> ث%)|)kggH7 ٵv~ks9}p{/ ֒2rwn82ܛaJ= 崻ѵ;nDI}'8(u9xxm/OeROߐڲng/*_/RKj) \ޛΓ?ϱk͟ii^3&ҤW@'dn·u^,hܡ5BC =}M;! I71# :}o]NNm]+$/ηM@L8-3/Ϫ|_ 66v(((7o&@χvq:z]D1M~|>#_?޾96 Պjb`q^g""""LD$(,/F }~ KDHDRSBBH)̬v?##C%'" vR!C.nCB4t>Q(Q(Q(Q(Q(Q( j#xg$ҟi;g-a^˜^BH 8?1wV6EFz_u9Kg Wy0"-m*lӰDDYĚ{xsX:?&[U\^8,dϞ\(NtlZ R$" cjcX\??l*?C1_=҆pCo,>H/+ڇ YEtmaɌ۸j@_zΨGDnd/n~d=bΏ2/f_2k6(H]A|+ouDmXƚ#0,XՊ夤(Y$.3zD| S-3,ڶƐ Vr=V֨x.Ő Ѧ"[tZrrG1)Ϛ߱[KE~(hH|2E5;J G#ىA!:(б/ðb# X^S/NWm`w潋(وLaDf;Y4w%Fk(dsGdEY>l66w׉rlX+*X0 0zY>Ag""AGjZLBHô/k>qQ LDHDDK+D1)V@_2 SD~P$"}P$}}&"yEZrWopHW__'ng={% v0&XNąו4bT @Ҥ.`_+꾥t؉w3vP":mʾj[9B P ".6 ,lA;aqZm%ߗHsuH=dOLDDDDDDDDDDDDDDDDDDDDDDDDDDDDN廬! IENDB`parlatype-1.6.2/help/C/figures/parlatype-icon.png000066400000000000000000000033321353244124700217420ustar00rootroot00000000000000PNG  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-1.6.2/help/C/figures/parlatype-main-window.png000066400000000000000000000510301353244124700232410ustar00rootroot00000000000000PNG  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-1.6.2/help/C/figures/parlatype-prefs-asr.png000066400000000000000000000753651353244124700227330ustar00rootroot00000000000000PNG  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-1.6.2/help/C/figures/parlatype-prefs-timestamps.png000066400000000000000000001016541353244124700243230ustar00rootroot00000000000000PNG  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-1.6.2/help/C/index.page000066400000000000000000000016751353244124700166160ustar00rootroot00000000000000 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-1.6.2/help/C/keyboard-shortcuts.page000066400000000000000000000044221353244124700213340ustar00rootroot00000000000000 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-1.6.2/help/C/legal.xml000066400000000000000000000004561353244124700164530ustar00rootroot00000000000000

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

parlatype-1.6.2/help/C/libreoffice-helpers.page000066400000000000000000000064161353244124700214160ustar00rootroot00000000000000 Use Parlatype with LibreOffice Gabor Karsay gabor.karsay@gmx.at LibreOffice Helpers

LibreOffice Helpers let you control Parlatype from LibreOffice. For example, you can jump easily to timestamps.

To use them, you have to assign keyboard shortcuts in LibreOffice itself. To do this, open LibreOffice, go to menu Tools and select Customize.

Go to tab Keyboard. In the lower part, Functions, there is a list called Category. At the end of that list you’ll find the entry LibreOffice Macros. There is a subcategory share which has a subcategory Parlatype. After selecting Parlatype there will be a list of functions in the Functions list. Choose the function you’d like to use, select from the list Shortcut keys above a shortcut and click on the button Modify.

You can select any of these functions:

LibreOffice Helpers

Helper’s name

What it does

PlayPause

Toggles between play and pause. Depending on your preferences set in Parlatype it will rewind a few seconds on pause.

JumpBack

Jumps back a few seconds, depending on the preferences you set in Parlatype.

JumpForward

Jumps forward a few seconds, depending on the preferences you set in Parlatype.

InsertTimestamp

Inserts the current timestamp at the cursor’s position. It does not overwrite any selection.

InsertTimestampOnNewLine

The same as above, but on a new line.

GotoTimestamp

If the cursor is set on a timestamp, it will jump to that position. The cursor has to be somewhere between the two number signs (#). Don’t select the timestamp, just put the cursor inside.

IncreaseSpeed

Increases playback speed.

DecreaseSpeed

Decreases playback speed.

parlatype-1.6.2/help/C/media-keys.page000066400000000000000000000033601353244124700175300ustar00rootroot00000000000000 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-1.6.2/help/C/preferences.page000066400000000000000000000111771353244124700200060ustar00rootroot00000000000000 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-1.6.2/help/C/selections.page000066400000000000000000000021431353244124700176460ustar00rootroot00000000000000 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-1.6.2/help/C/timestamps.page000066400000000000000000000034411353244124700176660ustar00rootroot00000000000000 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-1.6.2/help/LINGUAS000066400000000000000000000001451353244124700155030ustar00rootroot00000000000000# Please keep this list sorted alphabetically. cs de en_AU en_CA en_GB es fi hu id it ku lt pl pt sk parlatype-1.6.2/help/cs/000077500000000000000000000000001353244124700150635ustar00rootroot00000000000000parlatype-1.6.2/help/cs/cs.po000066400000000000000000001256571353244124700160500ustar00rootroot00000000000000# 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: 2019-05-27 20:57+0200\n" "PO-Revision-Date: 2019-05-17 10:05+0000\n" "Last-Translator: fri \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: cs\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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/index.page:10 #: C/drag-and-drop.page:8 #: C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 #: C/media-keys.page:8 #: C/preferences.page:8 #: C/selections.page:8 #: C/timestamps.page:8 #: C/asr.page:9 #: C/asr-setup.page:9 #: C/libreoffice-helpers.page:9 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/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ů." #. (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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: 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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "Automatické rozpoznávání řeči" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:17 msgid "" "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." msgstr "" #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:19 msgid "" "Automatic speech recognition is disabled by default. In order to try it, you " "have run Parlatype with this parameter:" msgstr "" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:23 msgid "Start speech recognition" msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:24 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 "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:26 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 "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:28 msgid "" "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." msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:30 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:32 msgid "" "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." msgstr "" #. (itstool) path: info/desc #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:17 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:19 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:21 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:23 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:25 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:27 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 "" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:30 msgid "Models" msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:32 msgid "" "A model consists of a so called acoustic and language model and a dictionary:" msgstr "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:36 msgid "Acoustic model" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:37 msgid "" "It consists of several files usually in their own folder: " "feat.params, mdef, means and some " "others." msgstr "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:40 msgid "Language model" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:41 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 "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:44 msgid "Dictionary" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:45 msgid "" "Dictionaries have the extension .dict or .dic." msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:49 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 "" #. (itstool) path: info/desc #: C/libreoffice-helpers.page:7 msgid "Use Parlatype with LibreOffice" msgstr "Používání Parlatype s LibreOffice" #. (itstool) path: page/title #. (itstool) path: table/title #: C/libreoffice-helpers.page:15 #: C/libreoffice-helpers.page:30 msgid "LibreOffice Helpers" msgstr "Pomocníci LibreOffice" #. (itstool) path: page/p #: C/libreoffice-helpers.page:17 msgid "" "LibreOffice Helpers let you control Parlatype from " "LibreOffice. For example, you can jump easily to timestamps." msgstr "" "Pomocníci LibreOffice umožňují Parlatype ovládat z " "LibreOffice. Například můžete snadno skákat na časová razítka." #. (itstool) path: page/p #: C/libreoffice-helpers.page:19 msgid "" "To use them, you have to assign keyboard shortcuts in LibreOffice " "itself. To do this, open LibreOffice, go to menu Tools " "and select Customize." msgstr "" "Abyste je použil, musíte v LibreOffice přiřadit klávesové " "zkratky. Kvůli tomu otevřete LibreOffice, jděte do nabídky " "Nástroje a vyberte Přizpůsobit." #. (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/libreoffice-helpers.page:21 msgctxt "_" msgid "" "external ref='figures/lo-menu.png' md5='4dd86affb0353b6bdfa2dcfbbeadd494'" msgstr "" "external ref='figures/lo-menu.png' md5='4dd86affb0353b6bdfa2dcfbbeadd494'" #. (itstool) path: page/p #: C/libreoffice-helpers.page:23 msgid "" "Go to tab Keyboard. In the lower part, Functions, " "there is a list called Category. At the end of that list you’ll " "find the entry LibreOffice Macros. There is a subcategory " "share which has a subcategory Parlatype. After " "selecting Parlatype there will be a list of functions in the " "Functions list. Choose the function you’d like to use, select " "from the list Shortcut keys above a shortcut and click on the " "button Modify." 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/libreoffice-helpers.page:25 msgctxt "_" msgid "" "external ref='figures/lo-customize.png' " "md5='081564921275129bee7bbd10220547e7'" msgstr "" "external ref='figures/lo-customize.png' " "md5='081564921275129bee7bbd10220547e7'" #. (itstool) path: page/p #: C/libreoffice-helpers.page:27 msgid "You can select any of these functions:" msgstr "Můžete vybrat kteroukoli z těchto funkcí:" #. (itstool) path: td/p #: C/libreoffice-helpers.page:33 msgid "Helper’s name" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:34 msgid "What it does" msgstr "Co to dělá" #. (itstool) path: td/p #: C/libreoffice-helpers.page:40 msgid "" "Toggles between play and pause. Depending on your preferences set in " "Parlatype it will rewind a few seconds on pause." msgstr "" "Přepíná mezi přehráváním a pozastavením. V závislosti na nastaveních " "provedených v Parlatype, provede při pozastavení přetočení o " "několik sekund." #. (itstool) path: td/p #: C/libreoffice-helpers.page:44 msgid "" "Jumps back a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" "Poskočí o několik sekund dozadu, v závislosti na nastaveních provedených v " "Parlatype." #. (itstool) path: td/p #: C/libreoffice-helpers.page:48 msgid "" "Jumps forward a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" "Poskočí o několik sekund dopředu, v závislosti na nastaveních provedených v " "Parlatype." #. (itstool) path: td/p #: C/libreoffice-helpers.page:52 msgid "" "Inserts the current timestamp at the cursor’s position. It does not " "overwrite any selection." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:56 msgid "The same as above, but on a new line." msgstr "Stejně jako výše, ale na novém řádku." #. (itstool) path: td/p #: C/libreoffice-helpers.page:60 msgid "" "If the cursor is set on a timestamp, it will jump to that position. The " "cursor has to be somewhere between the two number signs (#). Don’t select " "the timestamp, just put the cursor inside." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:64 msgid "Increases playback speed." msgstr "Zvýší rychlost přehrávání." #. (itstool) path: td/p #: C/libreoffice-helpers.page:68 msgid "Decreases playback speed." msgstr "Sníží rychlost přehrávání." parlatype-1.6.2/help/de/000077500000000000000000000000001353244124700150465ustar00rootroot00000000000000parlatype-1.6.2/help/de/de.po000066400000000000000000001554071353244124700160120ustar00rootroot00000000000000# 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, 2017, 2018, 2019. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 20:57+0200\n" "PO-Revision-Date: 2019-06-22 10:21+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Deutsch <>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: de\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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/index.page:10 #: C/drag-and-drop.page:8 #: C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 #: C/media-keys.page:8 #: C/preferences.page:8 #: C/selections.page:8 #: C/timestamps.page:8 #: C/asr.page:9 #: C/asr-setup.page:9 #: C/libreoffice-helpers.page:9 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/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." #. (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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: 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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "Automatische Spracherkennung" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:17 msgid "" "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." msgstr "" "Parlatype bietet eine automatische Spracherkennung, die auf Ihrem " "Rechner durchgeführt wird. Es werden keine Daten über das Netzwerk gesendet. " "Bitte beachten Sie, dass automatische Spracherkennung alles andere als " "perfekt ist und immer manuelle Korrekturen notwendig sein werden." #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:19 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:" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:23 msgid "Start speech recognition" msgstr "Spracherkennung beginnen" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:24 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." #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:26 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." #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:28 msgid "" "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." msgstr "" "Drücken Sie nun Wiedergabe in Parlatype und erkannte " "Sprache wird als Text in diesem Fenster ausgegeben. 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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:30 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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:32 msgid "" "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." 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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "Automatische Sprachtranskription einrichten" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "Automatische Spracherkennung einrichten" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:17 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." #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:19 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." #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:21 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." #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:23 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." #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:25 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." #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:27 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." #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:30 msgid "Models" msgstr "Modelle" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:32 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:" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:36 msgid "Acoustic model" msgstr "Akustisches Modell" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:37 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." #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:40 msgid "Language model" msgstr "Sprachmodell" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:41 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." #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:44 msgid "Dictionary" msgstr "Wörterbuch" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:45 msgid "" "Dictionaries have the extension .dict or .dic." msgstr "" "Wörterbücher haben die Endung .dict oder .dic." #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:49 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." #. (itstool) path: info/desc #: C/libreoffice-helpers.page:7 msgid "Use Parlatype with LibreOffice" msgstr "Parlatype in LibreOffice verwenden" #. (itstool) path: page/title #. (itstool) path: table/title #: C/libreoffice-helpers.page:15 #: C/libreoffice-helpers.page:30 msgid "LibreOffice Helpers" msgstr "LibreOffice-Helfer" #. (itstool) path: page/p #: C/libreoffice-helpers.page:17 msgid "" "LibreOffice Helpers let you control Parlatype from " "LibreOffice. For example, you can jump easily to timestamps." msgstr "" "Mit den LibreOffice-Helfern können Sie Parlatype direkt in " "LibreOffice steuern. Sie können damit zum Beispiel zu " "Zeitstempeln springen." #. (itstool) path: page/p #: C/libreoffice-helpers.page:19 msgid "" "To use them, you have to assign keyboard shortcuts in LibreOffice " "itself. To do this, open LibreOffice, go to menu Tools " "and select Customize." msgstr "" "Um sie zu nutzen, müssen Sie ihnen zuerst Tastenkombinationen in " "LibreOffice zuweisen. Dazu öffnen Sie LibreOffice, " "gehen Sie ins Menü Extras und wählen Sie Anpassen." #. (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/libreoffice-helpers.page:21 msgctxt "_" msgid "" "external ref='figures/lo-menu.png' md5='4dd86affb0353b6bdfa2dcfbbeadd494'" msgstr "übersetzt" #. (itstool) path: page/p #: C/libreoffice-helpers.page:23 msgid "" "Go to tab Keyboard. In the lower part, Functions, " "there is a list called Category. At the end of that list you’ll " "find the entry LibreOffice Macros. There is a subcategory " "share which has a subcategory Parlatype. After " "selecting Parlatype there will be a list of functions in the " "Functions list. Choose the function you’d like to use, select " "from the list Shortcut keys above a shortcut and click on the " "button Modify." msgstr "" "Wählen Sie den den Reiter Tastatur. Im unteren Teil, " "Funktionen, ist eine Liste namens Bereich. Am Ende " "dieser Liste finden Sie den Eintrag LibreOffice Macros. Dort gibt " "es eine Unterkategorie share, die wiederum eine Unterkategorie " "Parlatype enthält. Wenn Sie Parlatype auswählen, sehen " "Sie im Fenster Funktion eine Liste der Parlatype-Makros. Wählen " "Sie die Funktion, die Sie benützen möchten, suchen Sie sich dafür aus der " "Liste Tastenkombinationen darüber eine Tastenkombination aus und " "klicken Sie auf Ä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/libreoffice-helpers.page:25 msgctxt "_" msgid "" "external ref='figures/lo-customize.png' " "md5='081564921275129bee7bbd10220547e7'" msgstr "" "external ref='figures/lo-customize.png' " "md5='081564921275129bee7bbd10220547e7'" #. (itstool) path: page/p #: C/libreoffice-helpers.page:27 msgid "You can select any of these functions:" msgstr "Sie können aus diesen Funktionen wählen:" #. (itstool) path: td/p #: C/libreoffice-helpers.page:33 msgid "Helper’s name" msgstr "Name" #. (itstool) path: td/p #: C/libreoffice-helpers.page:34 msgid "What it does" msgstr "Was das Makro macht" #. (itstool) path: td/p #: C/libreoffice-helpers.page:40 msgid "" "Toggles between play and pause. Depending on your preferences set in " "Parlatype it will rewind a few seconds on pause." msgstr "" "Schaltet zwischen Wiedergabe und Pause hin und her. Abhängig von Ihren " "Einstellungen in Parlatype, wird bei Pause einige Sekunden " "zurückgespult." #. (itstool) path: td/p #: C/libreoffice-helpers.page:44 msgid "" "Jumps back a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" "Springt einige Sekunden zurück, abhängig von Ihren Einstellungen in " "Parlatype." #. (itstool) path: td/p #: C/libreoffice-helpers.page:48 msgid "" "Jumps forward a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" "Springt einige Sekunden vor, abhängig von Ihren Einstellungen in " "Parlatype." #. (itstool) path: td/p #: C/libreoffice-helpers.page:52 msgid "" "Inserts the current timestamp at the cursor’s position. It does not " "overwrite any selection." msgstr "" "Fügt den aktuellen Zeitstempel an der Cursorposition ein. Markierungen " "werden nicht überschrieben." #. (itstool) path: td/p #: C/libreoffice-helpers.page:56 msgid "The same as above, but on a new line." msgstr "Wie oben, aber auf einer neuen Zeile." #. (itstool) path: td/p #: C/libreoffice-helpers.page:60 msgid "" "If the cursor is set on a timestamp, it will jump to that position. The " "cursor has to be somewhere between the two number signs (#). Don’t select " "the timestamp, just put the cursor inside." msgstr "" "Wenn der Cursor auf einem Zeitstempel gesetzt ist, springt " "Parlatype an diese Position. Der Cursor muss dazu irgendwo " "zwischen den beiden Rautezeichen (#) sein. Markieren Sie nicht den " "Zeitstempel, sondern setzen Sie den Cursor hinein." #. (itstool) path: td/p #: C/libreoffice-helpers.page:64 msgid "Increases playback speed." msgstr "Erhöht die Wiedergabegeschwindigkeit." #. (itstool) path: td/p #: C/libreoffice-helpers.page:68 msgid "Decreases playback speed." msgstr "Verringert die Wiedergabegeschwindigkeit." parlatype-1.6.2/help/de/figures/000077500000000000000000000000001353244124700165125ustar00rootroot00000000000000parlatype-1.6.2/help/de/figures/lo-customize.png000066400000000000000000002561451353244124700216670ustar00rootroot00000000000000PNG  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-1.6.2/help/de/figures/parlatype-main-window.png000066400000000000000000000617421353244124700234620ustar00rootroot00000000000000PNG  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-1.6.2/help/de/figures/parlatype-prefs-controls.png000066400000000000000000001035141353244124700242030ustar00rootroot00000000000000PNG  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-1.6.2/help/de/figures/parlatype-prefs-timestamps.png000066400000000000000000001012521353244124700245230ustar00rootroot00000000000000PNG  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-1.6.2/help/de/figures/parlatype-prefs-waveform.png000066400000000000000000000601771353244124700241750ustar00rootroot00000000000000PNG  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: 2019-05-27 20:57+0200\n" "PO-Revision-Date: 2017-04-15 00:04+0000\n" "Last-Translator: Anthony Harrington \n" "Language-Team: English (Australia) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: en_AU\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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/index.page:10 #: C/drag-and-drop.page:8 #: C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 #: C/media-keys.page:8 #: C/preferences.page:8 #: C/selections.page:8 #: C/timestamps.page:8 #: C/asr.page:9 #: C/asr-setup.page:9 #: C/libreoffice-helpers.page:9 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/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 "" #. (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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:17 msgid "" "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." msgstr "" #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:19 msgid "" "Automatic speech recognition is disabled by default. In order to try it, you " "have run Parlatype with this parameter:" msgstr "" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:23 msgid "Start speech recognition" msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:24 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 "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:26 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 "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:28 msgid "" "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." msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:30 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:32 msgid "" "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." msgstr "" #. (itstool) path: info/desc #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:17 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:19 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:21 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:23 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:25 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:27 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 "" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:30 msgid "Models" msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:32 msgid "" "A model consists of a so called acoustic and language model and a dictionary:" msgstr "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:36 msgid "Acoustic model" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:37 msgid "" "It consists of several files usually in their own folder: " "feat.params, mdef, means and some " "others." msgstr "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:40 msgid "Language model" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:41 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 "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:44 msgid "Dictionary" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:45 msgid "" "Dictionaries have the extension .dict or .dic." msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:49 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 "" #. (itstool) path: info/desc #: C/libreoffice-helpers.page:7 msgid "Use Parlatype with LibreOffice" msgstr "" #. (itstool) path: page/title #. (itstool) path: table/title #: C/libreoffice-helpers.page:15 #: C/libreoffice-helpers.page:30 msgid "LibreOffice Helpers" msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:17 msgid "" "LibreOffice Helpers let you control Parlatype from " "LibreOffice. For example, you can jump easily to timestamps." msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:19 msgid "" "To use them, you have to assign keyboard shortcuts in LibreOffice " "itself. To do this, open LibreOffice, go to menu Tools " "and select Customize." 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/libreoffice-helpers.page:21 msgctxt "_" msgid "" "external ref='figures/lo-menu.png' md5='4dd86affb0353b6bdfa2dcfbbeadd494'" msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:23 msgid "" "Go to tab Keyboard. In the lower part, Functions, " "there is a list called Category. At the end of that list you’ll " "find the entry LibreOffice Macros. There is a subcategory " "share which has a subcategory Parlatype. After " "selecting Parlatype there will be a list of functions in the " "Functions list. Choose the function you’d like to use, select " "from the list Shortcut keys above a shortcut and click on the " "button Modify." 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/libreoffice-helpers.page:25 msgctxt "_" msgid "" "external ref='figures/lo-customize.png' " "md5='081564921275129bee7bbd10220547e7'" msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:27 msgid "You can select any of these functions:" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:33 msgid "Helper’s name" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:34 msgid "What it does" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:40 msgid "" "Toggles between play and pause. Depending on your preferences set in " "Parlatype it will rewind a few seconds on pause." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:44 msgid "" "Jumps back a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:48 msgid "" "Jumps forward a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:52 msgid "" "Inserts the current timestamp at the cursor’s position. It does not " "overwrite any selection." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:56 msgid "The same as above, but on a new line." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:60 msgid "" "If the cursor is set on a timestamp, it will jump to that position. The " "cursor has to be somewhere between the two number signs (#). Don’t select " "the timestamp, just put the cursor inside." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:64 msgid "Increases playback speed." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:68 msgid "Decreases playback speed." msgstr "" parlatype-1.6.2/help/en_CA/000077500000000000000000000000001353244124700154235ustar00rootroot00000000000000parlatype-1.6.2/help/en_CA/en_CA.po000066400000000000000000001045051353244124700167350ustar00rootroot00000000000000# 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: 2019-05-27 20:57+0200\n" "PO-Revision-Date: 2017-04-15 00:00+0000\n" "Last-Translator: Anthony Harrington \n" "Language-Team: English (Canada) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: en_CA\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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/index.page:10 #: C/drag-and-drop.page:8 #: C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 #: C/media-keys.page:8 #: C/preferences.page:8 #: C/selections.page:8 #: C/timestamps.page:8 #: C/asr.page:9 #: C/asr-setup.page:9 #: C/libreoffice-helpers.page:9 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/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 "" #. (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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:17 msgid "" "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." msgstr "" #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:19 msgid "" "Automatic speech recognition is disabled by default. In order to try it, you " "have run Parlatype with this parameter:" msgstr "" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:23 msgid "Start speech recognition" msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:24 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 "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:26 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 "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:28 msgid "" "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." msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:30 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:32 msgid "" "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." msgstr "" #. (itstool) path: info/desc #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:17 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:19 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:21 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:23 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:25 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:27 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 "" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:30 msgid "Models" msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:32 msgid "" "A model consists of a so called acoustic and language model and a dictionary:" msgstr "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:36 msgid "Acoustic model" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:37 msgid "" "It consists of several files usually in their own folder: " "feat.params, mdef, means and some " "others." msgstr "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:40 msgid "Language model" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:41 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 "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:44 msgid "Dictionary" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:45 msgid "" "Dictionaries have the extension .dict or .dic." msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:49 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 "" #. (itstool) path: info/desc #: C/libreoffice-helpers.page:7 msgid "Use Parlatype with LibreOffice" msgstr "" #. (itstool) path: page/title #. (itstool) path: table/title #: C/libreoffice-helpers.page:15 #: C/libreoffice-helpers.page:30 msgid "LibreOffice Helpers" msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:17 msgid "" "LibreOffice Helpers let you control Parlatype from " "LibreOffice. For example, you can jump easily to timestamps." msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:19 msgid "" "To use them, you have to assign keyboard shortcuts in LibreOffice " "itself. To do this, open LibreOffice, go to menu Tools " "and select Customize." 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/libreoffice-helpers.page:21 msgctxt "_" msgid "" "external ref='figures/lo-menu.png' md5='4dd86affb0353b6bdfa2dcfbbeadd494'" msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:23 msgid "" "Go to tab Keyboard. In the lower part, Functions, " "there is a list called Category. At the end of that list you’ll " "find the entry LibreOffice Macros. There is a subcategory " "share which has a subcategory Parlatype. After " "selecting Parlatype there will be a list of functions in the " "Functions list. Choose the function you’d like to use, select " "from the list Shortcut keys above a shortcut and click on the " "button Modify." 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/libreoffice-helpers.page:25 msgctxt "_" msgid "" "external ref='figures/lo-customize.png' " "md5='081564921275129bee7bbd10220547e7'" msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:27 msgid "You can select any of these functions:" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:33 msgid "Helper’s name" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:34 msgid "What it does" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:40 msgid "" "Toggles between play and pause. Depending on your preferences set in " "Parlatype it will rewind a few seconds on pause." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:44 msgid "" "Jumps back a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:48 msgid "" "Jumps forward a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:52 msgid "" "Inserts the current timestamp at the cursor’s position. It does not " "overwrite any selection." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:56 msgid "The same as above, but on a new line." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:60 msgid "" "If the cursor is set on a timestamp, it will jump to that position. The " "cursor has to be somewhere between the two number signs (#). Don’t select " "the timestamp, just put the cursor inside." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:64 msgid "Increases playback speed." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:68 msgid "Decreases playback speed." msgstr "" parlatype-1.6.2/help/en_GB/000077500000000000000000000000001353244124700154305ustar00rootroot00000000000000parlatype-1.6.2/help/en_GB/en_GB.po000066400000000000000000001467031353244124700167550ustar00rootroot00000000000000# 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: 2019-05-27 20:57+0200\n" "PO-Revision-Date: 2019-05-27 20:12+0000\n" "Last-Translator: Stephan Woidowski \n" "Language-Team: English (United Kingdom) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: en_GB\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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/index.page:10 #: C/drag-and-drop.page:8 #: C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 #: C/media-keys.page:8 #: C/preferences.page:8 #: C/selections.page:8 #: C/timestamps.page:8 #: C/asr.page:9 #: C/asr-setup.page:9 #: C/libreoffice-helpers.page:9 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/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." #. (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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: 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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "Automatic speech recognition" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:17 msgid "" "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." 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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:19 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:" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:23 msgid "Start speech recognition" msgstr "Start speech recognition" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:24 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." #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:26 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." #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:28 msgid "" "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." 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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:30 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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:32 msgid "" "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." 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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "Setup automatic speech transcription" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "Setup automatic speech recognition" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:17 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." #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:19 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." #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:21 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." #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:23 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." #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:25 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." #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:27 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." #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:30 msgid "Models" msgstr "Models" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:32 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:" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:36 msgid "Acoustic model" msgstr "Acoustic model" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:37 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." #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:40 msgid "Language model" msgstr "Language model" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:41 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." #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:44 msgid "Dictionary" msgstr "Dictionary" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:45 msgid "" "Dictionaries have the extension .dict or .dic." msgstr "" "Dictionaries have the extension .dict or .dic." #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:49 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." #. (itstool) path: info/desc #: C/libreoffice-helpers.page:7 msgid "Use Parlatype with LibreOffice" msgstr "Use Parlatype with LibreOffice" #. (itstool) path: page/title #. (itstool) path: table/title #: C/libreoffice-helpers.page:15 #: C/libreoffice-helpers.page:30 msgid "LibreOffice Helpers" msgstr "LibreOffice Helpers" #. (itstool) path: page/p #: C/libreoffice-helpers.page:17 msgid "" "LibreOffice Helpers let you control Parlatype from " "LibreOffice. For example, you can jump easily to timestamps." msgstr "" "LibreOffice Helpers let you control Parlatype from " "LibreOffice. For example, you can jump easily to timestamps." #. (itstool) path: page/p #: C/libreoffice-helpers.page:19 msgid "" "To use them, you have to assign keyboard shortcuts in LibreOffice " "itself. To do this, open LibreOffice, go to menu Tools " "and select Customize." msgstr "" "To use them, you have to assign keyboard shortcuts in LibreOffice " "itself. To do this, open LibreOffice, go to menu Tools " "and select Customise." #. (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/libreoffice-helpers.page:21 msgctxt "_" msgid "" "external ref='figures/lo-menu.png' md5='4dd86affb0353b6bdfa2dcfbbeadd494'" msgstr "" "external ref='figures/lo-menu.png' md5='4dd86affb0353b6bdfa2dcfbbeadd494'" #. (itstool) path: page/p #: C/libreoffice-helpers.page:23 msgid "" "Go to tab Keyboard. In the lower part, Functions, " "there is a list called Category. At the end of that list you’ll " "find the entry LibreOffice Macros. There is a subcategory " "share which has a subcategory Parlatype. After " "selecting Parlatype there will be a list of functions in the " "Functions list. Choose the function you’d like to use, select " "from the list Shortcut keys above a shortcut and click on the " "button Modify." msgstr "" "Go to tab Keyboard. In the lower part, Functions, " "there is a list called Category. At the end of that list you’ll " "find the entry LibreOffice Macros. There is a subcategory " "share which has a subcategory Parlatype. After " "selecting Parlatype there will be a list of functions in the " "Functions list. Choose the function you’d like to use, select " "from the list Shortcut keys above a shortcut and click on the " "button Modify." #. (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/libreoffice-helpers.page:25 msgctxt "_" msgid "" "external ref='figures/lo-customize.png' " "md5='081564921275129bee7bbd10220547e7'" msgstr "" "external ref='figures/lo-customize.png' " "md5='081564921275129bee7bbd10220547e7'" #. (itstool) path: page/p #: C/libreoffice-helpers.page:27 msgid "You can select any of these functions:" msgstr "You can select any of these functions:" #. (itstool) path: td/p #: C/libreoffice-helpers.page:33 msgid "Helper’s name" msgstr "Helper’s name" #. (itstool) path: td/p #: C/libreoffice-helpers.page:34 msgid "What it does" msgstr "What it does" #. (itstool) path: td/p #: C/libreoffice-helpers.page:40 msgid "" "Toggles between play and pause. Depending on your preferences set in " "Parlatype it will rewind a few seconds on pause." msgstr "" "Toggles between play and pause. Depending on your preferences set in " "Parlatype, it will rewind a few seconds on pause." #. (itstool) path: td/p #: C/libreoffice-helpers.page:44 msgid "" "Jumps back a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" "Jumps back a few seconds, depending on the preferences you set in " "Parlatype." #. (itstool) path: td/p #: C/libreoffice-helpers.page:48 msgid "" "Jumps forward a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" "Jumps forward a few seconds, depending on the preferences you set in " "Parlatype." #. (itstool) path: td/p #: C/libreoffice-helpers.page:52 msgid "" "Inserts the current timestamp at the cursor’s position. It does not " "overwrite any selection." msgstr "" "Inserts the current timestamp at the cursor’s position. It does not " "overwrite any selection." #. (itstool) path: td/p #: C/libreoffice-helpers.page:56 msgid "The same as above, but on a new line." msgstr "The same as above, but on a new line." #. (itstool) path: td/p #: C/libreoffice-helpers.page:60 msgid "" "If the cursor is set on a timestamp, it will jump to that position. The " "cursor has to be somewhere between the two number signs (#). Don’t select " "the timestamp, just put the cursor inside." msgstr "" "If the cursor is set on a timestamp, it will jump to that position. The " "cursor has to be somewhere between the two number signs (#). Don’t select " "the timestamp, just put the cursor inside." #. (itstool) path: td/p #: C/libreoffice-helpers.page:64 msgid "Increases playback speed." msgstr "Increases playback speed." #. (itstool) path: td/p #: C/libreoffice-helpers.page:68 msgid "Decreases playback speed." msgstr "Decreases playback speed." parlatype-1.6.2/help/es/000077500000000000000000000000001353244124700150655ustar00rootroot00000000000000parlatype-1.6.2/help/es/es.po000066400000000000000000001320231353244124700160350ustar00rootroot00000000000000# 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: 2019-05-27 20:57+0200\n" "PO-Revision-Date: 2019-08-11 17:30+0000\n" "Last-Translator: Jorge Toledo \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-08-24 11:00+0000\n" "X-Generator: Launchpad (build 19031)\n" "Language: es\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" #. (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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/index.page:10 #: C/drag-and-drop.page:8 #: C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 #: C/media-keys.page:8 #: C/preferences.page:8 #: C/selections.page:8 #: C/timestamps.page:8 #: C/asr.page:9 #: C/asr-setup.page:9 #: C/libreoffice-helpers.page:9 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/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." #. (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 "" #. (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 "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 "" #. (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 "" "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 "" #. (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 "" #. (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 "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 "" #. (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 "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 "" #. (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 "" #. (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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "Reconocimiento automático de voz" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:17 msgid "" "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." msgstr "" #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:19 msgid "" "Automatic speech recognition is disabled by default. In order to try it, you " "have run Parlatype with this parameter:" msgstr "" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:23 msgid "Start speech recognition" msgstr "Iniciar reconocimiento de voz" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:24 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 "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:26 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 "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:28 msgid "" "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." msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:30 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:32 msgid "" "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." msgstr "" #. (itstool) path: info/desc #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:17 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:19 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:21 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:23 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:25 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:27 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 "" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:30 msgid "Models" msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:32 msgid "" "A model consists of a so called acoustic and language model and a dictionary:" msgstr "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:36 msgid "Acoustic model" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:37 msgid "" "It consists of several files usually in their own folder: " "feat.params, mdef, means and some " "others." msgstr "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:40 msgid "Language model" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:41 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 "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:44 msgid "Dictionary" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:45 msgid "" "Dictionaries have the extension .dict or .dic." msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:49 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 "" #. (itstool) path: info/desc #: C/libreoffice-helpers.page:7 msgid "Use Parlatype with LibreOffice" msgstr "Uso de Parlatype con LibreOffice" #. (itstool) path: page/title #. (itstool) path: table/title #: C/libreoffice-helpers.page:15 #: C/libreoffice-helpers.page:30 msgid "LibreOffice Helpers" msgstr "Auxiliares de LibreOffice" #. (itstool) path: page/p #: C/libreoffice-helpers.page:17 msgid "" "LibreOffice Helpers let you control Parlatype from " "LibreOffice. For example, you can jump easily to timestamps." msgstr "" "Los auxiliares de LibreOffice le permiten controlar Parlatype " "desde LibreOffice. Por ejemplo, puede desplazarse con facilidad " "por las marcas cronológicas." #. (itstool) path: page/p #: C/libreoffice-helpers.page:19 msgid "" "To use them, you have to assign keyboard shortcuts in LibreOffice " "itself. To do this, open LibreOffice, go to menu Tools " "and select Customize." msgstr "" "Para utilizarlos, debe asignarles atajos de teclado en " "LibreOffice. Para hacerlo, abra LibreOffice, diríjase " "al menú Herramientas y seleccione Personalizar." #. (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/libreoffice-helpers.page:21 msgctxt "_" msgid "" "external ref='figures/lo-menu.png' md5='4dd86affb0353b6bdfa2dcfbbeadd494'" msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:23 msgid "" "Go to tab Keyboard. In the lower part, Functions, " "there is a list called Category. At the end of that list you’ll " "find the entry LibreOffice Macros. There is a subcategory " "share which has a subcategory Parlatype. After " "selecting Parlatype there will be a list of functions in the " "Functions list. Choose the function you’d like to use, select " "from the list Shortcut keys above a shortcut and click on the " "button Modify." 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/libreoffice-helpers.page:25 msgctxt "_" msgid "" "external ref='figures/lo-customize.png' " "md5='081564921275129bee7bbd10220547e7'" msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:27 msgid "You can select any of these functions:" msgstr "Puede seleccionar cualesquiera de estas funciones:" #. (itstool) path: td/p #: C/libreoffice-helpers.page:33 msgid "Helper’s name" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:34 msgid "What it does" msgstr "Para qué sirve" #. (itstool) path: td/p #: C/libreoffice-helpers.page:40 msgid "" "Toggles between play and pause. Depending on your preferences set in " "Parlatype it will rewind a few seconds on pause." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:44 msgid "" "Jumps back a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:48 msgid "" "Jumps forward a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:52 msgid "" "Inserts the current timestamp at the cursor’s position. It does not " "overwrite any selection." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:56 msgid "The same as above, but on a new line." msgstr "Idéntico a la función anterior, pero en un renglón nuevo." #. (itstool) path: td/p #: C/libreoffice-helpers.page:60 msgid "" "If the cursor is set on a timestamp, it will jump to that position. The " "cursor has to be somewhere between the two number signs (#). Don’t select " "the timestamp, just put the cursor inside." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:64 msgid "Increases playback speed." msgstr "Aumenta la velocidad de reproducción." #. (itstool) path: td/p #: C/libreoffice-helpers.page:68 msgid "Decreases playback speed." msgstr "Disminuye la velocidad de reproducción." parlatype-1.6.2/help/fi/000077500000000000000000000000001353244124700150545ustar00rootroot00000000000000parlatype-1.6.2/help/fi/fi.po000066400000000000000000001063061353244124700160200ustar00rootroot00000000000000# 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: 2019-05-27 20:57+0200\n" "PO-Revision-Date: 2018-06-04 13:21+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Finnish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: fi\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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/index.page:10 #: C/drag-and-drop.page:8 #: C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 #: C/media-keys.page:8 #: C/preferences.page:8 #: C/selections.page:8 #: C/timestamps.page:8 #: C/asr.page:9 #: C/asr-setup.page:9 #: C/libreoffice-helpers.page:9 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/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 "" #. (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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:17 msgid "" "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." msgstr "" #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:19 msgid "" "Automatic speech recognition is disabled by default. In order to try it, you " "have run Parlatype with this parameter:" msgstr "" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:23 msgid "Start speech recognition" msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:24 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 "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:26 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 "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:28 msgid "" "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." msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:30 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:32 msgid "" "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." msgstr "" #. (itstool) path: info/desc #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:17 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:19 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:21 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:23 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:25 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:27 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 "" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:30 msgid "Models" msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:32 msgid "" "A model consists of a so called acoustic and language model and a dictionary:" msgstr "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:36 msgid "Acoustic model" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:37 msgid "" "It consists of several files usually in their own folder: " "feat.params, mdef, means and some " "others." msgstr "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:40 msgid "Language model" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:41 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 "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:44 msgid "Dictionary" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:45 msgid "" "Dictionaries have the extension .dict or .dic." msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:49 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 "" #. (itstool) path: info/desc #: C/libreoffice-helpers.page:7 msgid "Use Parlatype with LibreOffice" msgstr "Parlatypen käyttäminen LibreOfficen kanssa" #. (itstool) path: page/title #. (itstool) path: table/title #: C/libreoffice-helpers.page:15 #: C/libreoffice-helpers.page:30 msgid "LibreOffice Helpers" msgstr "LibreOffice-avustajat" #. (itstool) path: page/p #: C/libreoffice-helpers.page:17 msgid "" "LibreOffice Helpers let you control Parlatype from " "LibreOffice. For example, you can jump easily to timestamps." msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:19 msgid "" "To use them, you have to assign keyboard shortcuts in LibreOffice " "itself. To do this, open LibreOffice, go to menu Tools " "and select Customize." 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/libreoffice-helpers.page:21 msgctxt "_" msgid "" "external ref='figures/lo-menu.png' md5='4dd86affb0353b6bdfa2dcfbbeadd494'" msgstr "" "external ref='figures/lo-menu.png' md5='4dd86affb0353b6bdfa2dcfbbeadd494'" #. (itstool) path: page/p #: C/libreoffice-helpers.page:23 msgid "" "Go to tab Keyboard. In the lower part, Functions, " "there is a list called Category. At the end of that list you’ll " "find the entry LibreOffice Macros. There is a subcategory " "share which has a subcategory Parlatype. After " "selecting Parlatype there will be a list of functions in the " "Functions list. Choose the function you’d like to use, select " "from the list Shortcut keys above a shortcut and click on the " "button Modify." 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/libreoffice-helpers.page:25 msgctxt "_" msgid "" "external ref='figures/lo-customize.png' " "md5='081564921275129bee7bbd10220547e7'" msgstr "" "external ref='figures/lo-customize.png' " "md5='081564921275129bee7bbd10220547e7'" #. (itstool) path: page/p #: C/libreoffice-helpers.page:27 msgid "You can select any of these functions:" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:33 msgid "Helper’s name" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:34 msgid "What it does" msgstr "Mitä se tekee" #. (itstool) path: td/p #: C/libreoffice-helpers.page:40 msgid "" "Toggles between play and pause. Depending on your preferences set in " "Parlatype it will rewind a few seconds on pause." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:44 msgid "" "Jumps back a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:48 msgid "" "Jumps forward a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:52 msgid "" "Inserts the current timestamp at the cursor’s position. It does not " "overwrite any selection." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:56 msgid "The same as above, but on a new line." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:60 msgid "" "If the cursor is set on a timestamp, it will jump to that position. The " "cursor has to be somewhere between the two number signs (#). Don’t select " "the timestamp, just put the cursor inside." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:64 msgid "Increases playback speed." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:68 msgid "Decreases playback speed." msgstr "" parlatype-1.6.2/help/hu/000077500000000000000000000000001353244124700150725ustar00rootroot00000000000000parlatype-1.6.2/help/hu/hu.po000066400000000000000000001100471353244124700160510ustar00rootroot00000000000000# 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: 2019-05-27 20:57+0200\n" "PO-Revision-Date: 2019-07-19 06:57+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Hungarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-07-19 07:04+0000\n" "X-Generator: Launchpad (build 19010)\n" "Language: hu\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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/index.page:10 #: C/drag-and-drop.page:8 #: C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 #: C/media-keys.page:8 #: C/preferences.page:8 #: C/selections.page:8 #: C/timestamps.page:8 #: C/asr.page:9 #: C/asr-setup.page:9 #: C/libreoffice-helpers.page:9 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/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 "" #. (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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:17 msgid "" "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." msgstr "" #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:19 msgid "" "Automatic speech recognition is disabled by default. In order to try it, you " "have run Parlatype with this parameter:" msgstr "" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:23 msgid "Start speech recognition" msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:24 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 "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:26 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 "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:28 msgid "" "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." msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:30 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:32 msgid "" "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." msgstr "" #. (itstool) path: info/desc #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:17 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:19 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:21 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:23 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:25 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:27 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 "" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:30 msgid "Models" msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:32 msgid "" "A model consists of a so called acoustic and language model and a dictionary:" msgstr "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:36 msgid "Acoustic model" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:37 msgid "" "It consists of several files usually in their own folder: " "feat.params, mdef, means and some " "others." msgstr "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:40 msgid "Language model" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:41 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 "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:44 msgid "Dictionary" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:45 msgid "" "Dictionaries have the extension .dict or .dic." msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:49 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 "" #. (itstool) path: info/desc #: C/libreoffice-helpers.page:7 msgid "Use Parlatype with LibreOffice" msgstr "" #. (itstool) path: page/title #. (itstool) path: table/title #: C/libreoffice-helpers.page:15 #: C/libreoffice-helpers.page:30 msgid "LibreOffice Helpers" msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:17 msgid "" "LibreOffice Helpers let you control Parlatype from " "LibreOffice. For example, you can jump easily to timestamps." msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:19 msgid "" "To use them, you have to assign keyboard shortcuts in LibreOffice " "itself. To do this, open LibreOffice, go to menu Tools " "and select Customize." 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/libreoffice-helpers.page:21 msgctxt "_" msgid "" "external ref='figures/lo-menu.png' md5='4dd86affb0353b6bdfa2dcfbbeadd494'" msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:23 msgid "" "Go to tab Keyboard. In the lower part, Functions, " "there is a list called Category. At the end of that list you’ll " "find the entry LibreOffice Macros. There is a subcategory " "share which has a subcategory Parlatype. After " "selecting Parlatype there will be a list of functions in the " "Functions list. Choose the function you’d like to use, select " "from the list Shortcut keys above a shortcut and click on the " "button Modify." 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/libreoffice-helpers.page:25 msgctxt "_" msgid "" "external ref='figures/lo-customize.png' " "md5='081564921275129bee7bbd10220547e7'" msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:27 msgid "You can select any of these functions:" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:33 msgid "Helper’s name" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:34 msgid "What it does" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:40 msgid "" "Toggles between play and pause. Depending on your preferences set in " "Parlatype it will rewind a few seconds on pause." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:44 msgid "" "Jumps back a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:48 msgid "" "Jumps forward a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:52 msgid "" "Inserts the current timestamp at the cursor’s position. It does not " "overwrite any selection." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:56 msgid "The same as above, but on a new line." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:60 msgid "" "If the cursor is set on a timestamp, it will jump to that position. The " "cursor has to be somewhere between the two number signs (#). Don’t select " "the timestamp, just put the cursor inside." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:64 msgid "Increases playback speed." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:68 msgid "Decreases playback speed." msgstr "" parlatype-1.6.2/help/id/000077500000000000000000000000001353244124700150525ustar00rootroot00000000000000parlatype-1.6.2/help/id/id.po000066400000000000000000001235001353244124700160070ustar00rootroot00000000000000# 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: 2019-05-27 20:57+0200\n" "PO-Revision-Date: 2017-04-18 18:57+0000\n" "Last-Translator: Ari Setyo Wibowo \n" "Language-Team: Indonesian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: id\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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/index.page:10 #: C/drag-and-drop.page:8 #: C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 #: C/media-keys.page:8 #: C/preferences.page:8 #: C/selections.page:8 #: C/timestamps.page:8 #: C/asr.page:9 #: C/asr-setup.page:9 #: C/libreoffice-helpers.page:9 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/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." #. (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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:17 msgid "" "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." msgstr "" #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:19 msgid "" "Automatic speech recognition is disabled by default. In order to try it, you " "have run Parlatype with this parameter:" msgstr "" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:23 msgid "Start speech recognition" msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:24 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 "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:26 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 "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:28 msgid "" "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." msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:30 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:32 msgid "" "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." msgstr "" #. (itstool) path: info/desc #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:17 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:19 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:21 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:23 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:25 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:27 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 "" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:30 msgid "Models" msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:32 msgid "" "A model consists of a so called acoustic and language model and a dictionary:" msgstr "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:36 msgid "Acoustic model" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:37 msgid "" "It consists of several files usually in their own folder: " "feat.params, mdef, means and some " "others." msgstr "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:40 msgid "Language model" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:41 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 "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:44 msgid "Dictionary" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:45 msgid "" "Dictionaries have the extension .dict or .dic." msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:49 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 "" #. (itstool) path: info/desc #: C/libreoffice-helpers.page:7 msgid "Use Parlatype with LibreOffice" msgstr "Gunakan Parlatype dengan LibreOffice" #. (itstool) path: page/title #. (itstool) path: table/title #: C/libreoffice-helpers.page:15 #: C/libreoffice-helpers.page:30 msgid "LibreOffice Helpers" msgstr "Bantuan LibreOffice" #. (itstool) path: page/p #: C/libreoffice-helpers.page:17 msgid "" "LibreOffice Helpers let you control Parlatype from " "LibreOffice. For example, you can jump easily to timestamps." msgstr "" "Bantuan LibreOffice mengizinkan Anda mengendalikan Parlatype dari " "LibreOffice. Misalnya, Anda dapat dengan mudah melompat ke " "informasi waktu." #. (itstool) path: page/p #: C/libreoffice-helpers.page:19 msgid "" "To use them, you have to assign keyboard shortcuts in LibreOffice " "itself. To do this, open LibreOffice, go to menu Tools " "and select Customize." msgstr "" "Untuk mengunakannya, Anda harus memasang pintasan papan ketik di " "LibreOffice sendiri. Untuk melakukannya, buka " "LibreOffice, pergi ke menu Perkakas dan pilih " "Kustomasi." #. (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/libreoffice-helpers.page:21 msgctxt "_" msgid "" "external ref='figures/lo-menu.png' md5='4dd86affb0353b6bdfa2dcfbbeadd494'" msgstr "" "external ref='figures/lo-menu.png' md5='4dd86affb0353b6bdfa2dcfbbeadd494'" #. (itstool) path: page/p #: C/libreoffice-helpers.page:23 msgid "" "Go to tab Keyboard. In the lower part, Functions, " "there is a list called Category. At the end of that list you’ll " "find the entry LibreOffice Macros. There is a subcategory " "share which has a subcategory Parlatype. After " "selecting Parlatype there will be a list of functions in the " "Functions list. Choose the function you’d like to use, select " "from the list Shortcut keys above a shortcut and click on the " "button Modify." 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/libreoffice-helpers.page:25 msgctxt "_" msgid "" "external ref='figures/lo-customize.png' " "md5='081564921275129bee7bbd10220547e7'" msgstr "" "external ref='figures/lo-customize.png' " "md5='081564921275129bee7bbd10220547e7'" #. (itstool) path: page/p #: C/libreoffice-helpers.page:27 msgid "You can select any of these functions:" msgstr "Anda dapat memilih fungsi yang mana saja:" #. (itstool) path: td/p #: C/libreoffice-helpers.page:33 msgid "Helper’s name" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:34 msgid "What it does" msgstr "Apa yang dilakukan" #. (itstool) path: td/p #: C/libreoffice-helpers.page:40 msgid "" "Toggles between play and pause. Depending on your preferences set in " "Parlatype it will rewind a few seconds on pause." msgstr "" "Beralih antara main dan jeda. Tergantung pada preferensi yang Anda tentukan " "di Parlatype akan diputar kembali beberapa detik saat jeda." #. (itstool) path: td/p #: C/libreoffice-helpers.page:44 msgid "" "Jumps back a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" "Lompat mundur beberapa detik, tergantung preferensi yang Anda tentukan di " "Parlatype." #. (itstool) path: td/p #: C/libreoffice-helpers.page:48 msgid "" "Jumps forward a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" "Lompat maju beberapa detik, tergantung preferensi yang Anda tentukan di " "Parlatype." #. (itstool) path: td/p #: C/libreoffice-helpers.page:52 msgid "" "Inserts the current timestamp at the cursor’s position. It does not " "overwrite any selection." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:56 msgid "The same as above, but on a new line." msgstr "Sama dengan atas, tapi di baris baru." #. (itstool) path: td/p #: C/libreoffice-helpers.page:60 msgid "" "If the cursor is set on a timestamp, it will jump to that position. The " "cursor has to be somewhere between the two number signs (#). Don’t select " "the timestamp, just put the cursor inside." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:64 msgid "Increases playback speed." msgstr "Tambah kecepatan main." #. (itstool) path: td/p #: C/libreoffice-helpers.page:68 msgid "Decreases playback speed." msgstr "Kurangi kecepatan main." parlatype-1.6.2/help/it/000077500000000000000000000000001353244124700150725ustar00rootroot00000000000000parlatype-1.6.2/help/it/it.po000066400000000000000000001074671353244124700160650ustar00rootroot00000000000000# 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: 2019-05-27 20:57+0200\n" "PO-Revision-Date: 2017-04-18 19:09+0000\n" "Last-Translator: Luca Ciavatta \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: it\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" #. (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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/index.page:10 #: C/drag-and-drop.page:8 #: C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 #: C/media-keys.page:8 #: C/preferences.page:8 #: C/selections.page:8 #: C/timestamps.page:8 #: C/asr.page:9 #: C/asr-setup.page:9 #: C/libreoffice-helpers.page:9 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 "" #. (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/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 "" #. (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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:17 msgid "" "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." msgstr "" #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:19 msgid "" "Automatic speech recognition is disabled by default. In order to try it, you " "have run Parlatype with this parameter:" msgstr "" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:23 msgid "Start speech recognition" msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:24 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 "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:26 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 "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:28 msgid "" "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." msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:30 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:32 msgid "" "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." msgstr "" #. (itstool) path: info/desc #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:17 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:19 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:21 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:23 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:25 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:27 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 "" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:30 msgid "Models" msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:32 msgid "" "A model consists of a so called acoustic and language model and a dictionary:" msgstr "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:36 msgid "Acoustic model" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:37 msgid "" "It consists of several files usually in their own folder: " "feat.params, mdef, means and some " "others." msgstr "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:40 msgid "Language model" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:41 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 "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:44 msgid "Dictionary" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:45 msgid "" "Dictionaries have the extension .dict or .dic." msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:49 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 "" #. (itstool) path: info/desc #: C/libreoffice-helpers.page:7 msgid "Use Parlatype with LibreOffice" msgstr "Utilizzare Parlatype con LibreOffice" #. (itstool) path: page/title #. (itstool) path: table/title #: C/libreoffice-helpers.page:15 #: C/libreoffice-helpers.page:30 msgid "LibreOffice Helpers" msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:17 msgid "" "LibreOffice Helpers let you control Parlatype from " "LibreOffice. For example, you can jump easily to timestamps." msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:19 msgid "" "To use them, you have to assign keyboard shortcuts in LibreOffice " "itself. To do this, open LibreOffice, go to menu Tools " "and select Customize." 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/libreoffice-helpers.page:21 msgctxt "_" msgid "" "external ref='figures/lo-menu.png' md5='4dd86affb0353b6bdfa2dcfbbeadd494'" msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:23 msgid "" "Go to tab Keyboard. In the lower part, Functions, " "there is a list called Category. At the end of that list you’ll " "find the entry LibreOffice Macros. There is a subcategory " "share which has a subcategory Parlatype. After " "selecting Parlatype there will be a list of functions in the " "Functions list. Choose the function you’d like to use, select " "from the list Shortcut keys above a shortcut and click on the " "button Modify." 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/libreoffice-helpers.page:25 msgctxt "_" msgid "" "external ref='figures/lo-customize.png' " "md5='081564921275129bee7bbd10220547e7'" msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:27 msgid "You can select any of these functions:" msgstr "È possibile selezionare le seguenti funzioni:" #. (itstool) path: td/p #: C/libreoffice-helpers.page:33 msgid "Helper’s name" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:34 msgid "What it does" msgstr "Che cosa fa" #. (itstool) path: td/p #: C/libreoffice-helpers.page:40 msgid "" "Toggles between play and pause. Depending on your preferences set in " "Parlatype it will rewind a few seconds on pause." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:44 msgid "" "Jumps back a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" "Indietro di qualche secondo, dipende dalle preferenze impostate in " "Parlatype." #. (itstool) path: td/p #: C/libreoffice-helpers.page:48 msgid "" "Jumps forward a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" "Avanti di qualche secondo, dipende dalle preferenze impostate in " "Parlatype." #. (itstool) path: td/p #: C/libreoffice-helpers.page:52 msgid "" "Inserts the current timestamp at the cursor’s position. It does not " "overwrite any selection." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:56 msgid "The same as above, but on a new line." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:60 msgid "" "If the cursor is set on a timestamp, it will jump to that position. The " "cursor has to be somewhere between the two number signs (#). Don’t select " "the timestamp, just put the cursor inside." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:64 msgid "Increases playback speed." msgstr "Aumenta la velocità di riproduzione." #. (itstool) path: td/p #: C/libreoffice-helpers.page:68 msgid "Decreases playback speed." msgstr "Diminuisce la velocità di riproduzione." parlatype-1.6.2/help/ku/000077500000000000000000000000001353244124700150755ustar00rootroot00000000000000parlatype-1.6.2/help/ku/ku.po000066400000000000000000001051211353244124700160540ustar00rootroot00000000000000# 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: 2019-05-27 20:57+0200\n" "PO-Revision-Date: 2017-03-25 15:21+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Kurdish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: ku\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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/index.page:10 #: C/drag-and-drop.page:8 #: C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 #: C/media-keys.page:8 #: C/preferences.page:8 #: C/selections.page:8 #: C/timestamps.page:8 #: C/asr.page:9 #: C/asr-setup.page:9 #: C/libreoffice-helpers.page:9 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/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 "" #. (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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:17 msgid "" "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." msgstr "" #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:19 msgid "" "Automatic speech recognition is disabled by default. In order to try it, you " "have run Parlatype with this parameter:" msgstr "" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:23 msgid "Start speech recognition" msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:24 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 "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:26 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 "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:28 msgid "" "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." msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:30 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:32 msgid "" "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." msgstr "" #. (itstool) path: info/desc #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:17 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:19 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:21 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:23 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:25 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:27 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 "" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:30 msgid "Models" msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:32 msgid "" "A model consists of a so called acoustic and language model and a dictionary:" msgstr "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:36 msgid "Acoustic model" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:37 msgid "" "It consists of several files usually in their own folder: " "feat.params, mdef, means and some " "others." msgstr "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:40 msgid "Language model" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:41 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 "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:44 msgid "Dictionary" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:45 msgid "" "Dictionaries have the extension .dict or .dic." msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:49 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 "" #. (itstool) path: info/desc #: C/libreoffice-helpers.page:7 msgid "Use Parlatype with LibreOffice" msgstr "" #. (itstool) path: page/title #. (itstool) path: table/title #: C/libreoffice-helpers.page:15 #: C/libreoffice-helpers.page:30 msgid "LibreOffice Helpers" msgstr "Alîkarîa LibreOffice" #. (itstool) path: page/p #: C/libreoffice-helpers.page:17 msgid "" "LibreOffice Helpers let you control Parlatype from " "LibreOffice. For example, you can jump easily to timestamps." msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:19 msgid "" "To use them, you have to assign keyboard shortcuts in LibreOffice " "itself. To do this, open LibreOffice, go to menu Tools " "and select Customize." 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/libreoffice-helpers.page:21 msgctxt "_" msgid "" "external ref='figures/lo-menu.png' md5='4dd86affb0353b6bdfa2dcfbbeadd494'" msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:23 msgid "" "Go to tab Keyboard. In the lower part, Functions, " "there is a list called Category. At the end of that list you’ll " "find the entry LibreOffice Macros. There is a subcategory " "share which has a subcategory Parlatype. After " "selecting Parlatype there will be a list of functions in the " "Functions list. Choose the function you’d like to use, select " "from the list Shortcut keys above a shortcut and click on the " "button Modify." 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/libreoffice-helpers.page:25 msgctxt "_" msgid "" "external ref='figures/lo-customize.png' " "md5='081564921275129bee7bbd10220547e7'" msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:27 msgid "You can select any of these functions:" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:33 msgid "Helper’s name" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:34 msgid "What it does" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:40 msgid "" "Toggles between play and pause. Depending on your preferences set in " "Parlatype it will rewind a few seconds on pause." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:44 msgid "" "Jumps back a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:48 msgid "" "Jumps forward a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:52 msgid "" "Inserts the current timestamp at the cursor’s position. It does not " "overwrite any selection." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:56 msgid "The same as above, but on a new line." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:60 msgid "" "If the cursor is set on a timestamp, it will jump to that position. The " "cursor has to be somewhere between the two number signs (#). Don’t select " "the timestamp, just put the cursor inside." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:64 msgid "Increases playback speed." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:68 msgid "Decreases playback speed." msgstr "" parlatype-1.6.2/help/lt/000077500000000000000000000000001353244124700150755ustar00rootroot00000000000000parlatype-1.6.2/help/lt/lt.po000066400000000000000000001132071353244124700160600ustar00rootroot00000000000000# 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: 2019-05-27 20:57+0200\n" "PO-Revision-Date: 2018-06-04 13:21+0000\n" "Last-Translator: Moo \n" "Language-Team: Lithuanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: lt\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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/index.page:10 #: C/drag-and-drop.page:8 #: C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 #: C/media-keys.page:8 #: C/preferences.page:8 #: C/selections.page:8 #: C/timestamps.page:8 #: C/asr.page:9 #: C/asr-setup.page:9 #: C/libreoffice-helpers.page:9 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/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 "" #. (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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:17 msgid "" "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." msgstr "" #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:19 msgid "" "Automatic speech recognition is disabled by default. In order to try it, you " "have run Parlatype with this parameter:" msgstr "" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:23 msgid "Start speech recognition" msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:24 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 "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:26 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 "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:28 msgid "" "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." msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:30 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:32 msgid "" "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." msgstr "" #. (itstool) path: info/desc #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:17 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:19 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:21 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:23 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:25 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:27 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 "" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:30 msgid "Models" msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:32 msgid "" "A model consists of a so called acoustic and language model and a dictionary:" msgstr "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:36 msgid "Acoustic model" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:37 msgid "" "It consists of several files usually in their own folder: " "feat.params, mdef, means and some " "others." msgstr "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:40 msgid "Language model" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:41 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 "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:44 msgid "Dictionary" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:45 msgid "" "Dictionaries have the extension .dict or .dic." msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:49 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 "" #. (itstool) path: info/desc #: C/libreoffice-helpers.page:7 msgid "Use Parlatype with LibreOffice" msgstr "" #. (itstool) path: page/title #. (itstool) path: table/title #: C/libreoffice-helpers.page:15 #: C/libreoffice-helpers.page:30 msgid "LibreOffice Helpers" msgstr "LibreOffice pagelbikliai" #. (itstool) path: page/p #: C/libreoffice-helpers.page:17 msgid "" "LibreOffice Helpers let you control Parlatype from " "LibreOffice. For example, you can jump easily to timestamps." msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:19 msgid "" "To use them, you have to assign keyboard shortcuts in LibreOffice " "itself. To do this, open LibreOffice, go to menu Tools " "and select Customize." 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/libreoffice-helpers.page:21 msgctxt "_" msgid "" "external ref='figures/lo-menu.png' md5='4dd86affb0353b6bdfa2dcfbbeadd494'" msgstr "" "external ref='figures/lo-menu.png' md5='4dd86affb0353b6bdfa2dcfbbeadd494'" #. (itstool) path: page/p #: C/libreoffice-helpers.page:23 msgid "" "Go to tab Keyboard. In the lower part, Functions, " "there is a list called Category. At the end of that list you’ll " "find the entry LibreOffice Macros. There is a subcategory " "share which has a subcategory Parlatype. After " "selecting Parlatype there will be a list of functions in the " "Functions list. Choose the function you’d like to use, select " "from the list Shortcut keys above a shortcut and click on the " "button Modify." 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/libreoffice-helpers.page:25 msgctxt "_" msgid "" "external ref='figures/lo-customize.png' " "md5='081564921275129bee7bbd10220547e7'" msgstr "" "external ref='figures/lo-customize.png' " "md5='081564921275129bee7bbd10220547e7'" #. (itstool) path: page/p #: C/libreoffice-helpers.page:27 msgid "You can select any of these functions:" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:33 msgid "Helper’s name" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:34 msgid "What it does" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:40 msgid "" "Toggles between play and pause. Depending on your preferences set in " "Parlatype it will rewind a few seconds on pause." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:44 msgid "" "Jumps back a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:48 msgid "" "Jumps forward a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:52 msgid "" "Inserts the current timestamp at the cursor’s position. It does not " "overwrite any selection." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:56 msgid "The same as above, but on a new line." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:60 msgid "" "If the cursor is set on a timestamp, it will jump to that position. The " "cursor has to be somewhere between the two number signs (#). Don’t select " "the timestamp, just put the cursor inside." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:64 msgid "Increases playback speed." msgstr "Padidina atkūrimo greitį." #. (itstool) path: td/p #: C/libreoffice-helpers.page:68 msgid "Decreases playback speed." msgstr "Sumažina atkūrimo greitį." parlatype-1.6.2/help/meson.build000066400000000000000000000013441353244124700166220ustar00rootroot00000000000000media = [ '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', ] sources = [ 'index.page', 'drag-and-drop.page', 'first-steps.page', 'keyboard-shortcuts.page', 'legal.xml', 'media-keys.page', 'preferences.page', 'selections.page', 'timestamps.page', ] if asr sources += [ 'asr.page', 'asr-setup.page', ] endif if libreoffice media += [ 'figures/lo-customize.png', 'figures/lo-menu.png', ] sources += [ 'libreoffice-helpers.page', ] endif gnome.yelp( app_id, media: media, sources: sources, ) parlatype-1.6.2/help/pl/000077500000000000000000000000001353244124700150715ustar00rootroot00000000000000parlatype-1.6.2/help/pl/figures/000077500000000000000000000000001353244124700165355ustar00rootroot00000000000000parlatype-1.6.2/help/pl/figures/parlatype-main-window.png000066400000000000000000000562231353244124700235030ustar00rootroot00000000000000PNG  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-1.6.2/help/pl/figures/parlatype-prefs-asr.png000066400000000000000000000775301353244124700231600ustar00rootroot00000000000000PNG  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-1.6.2/help/pl/figures/parlatype-prefs-timestamps.png000066400000000000000000001053701353244124700245530ustar00rootroot00000000000000PNG  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-1.6.2/help/pl/figures/parlatype-prefs-window.png000066400000000000000000000437661353244124700237060ustar00rootroot00000000000000PNG  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: 2019-05-27 20:57+0200\n" "PO-Revision-Date: 2019-05-28 18:19+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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/index.page:10 #: C/drag-and-drop.page:8 #: C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 #: C/media-keys.page:8 #: C/preferences.page:8 #: C/selections.page:8 #: C/timestamps.page:8 #: C/asr.page:9 #: C/asr-setup.page:9 #: C/libreoffice-helpers.page:9 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/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." #. (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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "Pozwól Parlatype wykonać część transkrypcji" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "Automatyczne rozpoznawanie mowy" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:17 msgid "" "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." msgstr "" "Parlatype zawiera funkcję automatycznego rozpoznawania mowy na " "komputerze użytkownika. Żadne dane nie są przesyłane przez sieć. Proszę " "pamiętać, że automatyczna transkrypcja jest daleka od doskonałości, " "i zawsze wymaga ręcznych poprawek." #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:19 msgid "" "Automatic speech recognition is disabled by default. In order to try it, you " "have run Parlatype with this parameter:" msgstr "" "Automatyczne rozpoznawanie mowy jest domyślnie wyłączone. Aby je wypróbować, " "należy uruchomić Parlatype za pomocą tego parametru:" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:23 msgid "Start speech recognition" msgstr "Rozpoczynanie rozpoznawania mowy" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:24 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 "" "Otwórz główne menu i kliknij Automatyczna transkrypcja. Jeśli nie " "ma jeszcze modelu języka, to asystent umożliwi jego pobranie (patrz ). W przeciwnym wypadku zostanie otwarte okno proszące " "o aktywację procesora tekstu. Każdy procesor tekstu z obsługą ułatwień " "dostępu powinien działać, np. LibreOffice lub gedit." #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:26 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 "" "Jeśli żaden procesor tekstu nie zostanie rozpoznany, to można użyć " "wewnętrznego pola tekstowego jako rozwiązanie zapasowe. Aby to zrobić, " "uruchom Parlatype za pomocą opcji „textpad”: parlatype --" "textpad." #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:28 msgid "" "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." msgstr "" "Teraz kliknij Odtwórz w programie Parlatype, " "a rozpoznana mowa zostanie wyświetlona w tym oknie. Wyjście jest bez " "komunikatów, ponieważ prędkość zależy od mocy komputera i może być " "wolniejsza lub szybsza od mowy w czasie rzeczywistym." #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:30 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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:32 msgid "" "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." msgstr "" "Dokładność zależy od wielu czynników, np. jakości nagrania, hałasu " "w tle, dialektu lub wymowy mówcy oraz użytego modelu mowy. W przypadku " "ogólnej transkrypcji należy spodziewać się błędów w 10 do 50% słów. Oznacza " "to, że w niektórych przypadkach ręczna transkrypcja od zera będzie szybsza " "niż automatyczna transkrypcja i niezbędny proces korekty." #. (itstool) path: info/desc #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "Konfiguracja automatycznej transkrypcji mowy" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "Konfiguracja automatycznego rozpoznawania mowy" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:17 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 nie zawiera modelu języka wymaganego do rozpoznawania " "mowy. Należy go pobrać. Dostępny jest pomagający w tym asystent." #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:19 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 "" "Asystenta można uruchomić z okna Preferencje, karty Rozpoznawanie " "mowy lub, jeśli nie ma jeszcze konfiguracji, z głównego menu " "Automatyczna transkrypcja." #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:21 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 "" "Użytkownik zostanie poproszony o pobranie modelu mowy. Używany mechanizm " "rozpoznawania mowy to CMU Sphinx. Można pobrać modele odpowiednie dla " "mechanizmu CMU Sphinx na przykład z repozytorium SourceForge projektu CMU Sphinx. Są " "w nim modele dla wielu najczęściej używanych języków." #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:23 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 "" "Jeśli model jest skompresowany, to należy go zdekompresować do katalogu, " "w którym może zostać. Parlatype nie przechowuje wewnętrznej kopii modelu." #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:25 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 "" "Zwykle asystent znajdzie wszystkie wymagane pliki i należy tylko nadać tej " "konfiguracji nazwę. Można mieć kilka konfiguracji, np. dla różnych języków." #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:27 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 "" "Jeśli asystent nie znajdzie wszystkich składników lub znajdzie więcej niż " "potrzebuje, to zapyta użytkownika o podanie ich położenia lub wybór między " "znalezionymi. Następna sekcja wyjaśnia te składniki." #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:30 msgid "Models" msgstr "Modele" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:32 msgid "" "A model consists of a so called acoustic and language model and a dictionary:" msgstr "" "Model składa się z tak zwanego modelu akustycznego, modelu języka i słownika:" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:36 msgid "Acoustic model" msgstr "Model akustyczny" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:37 msgid "" "It consists of several files usually in their own folder: " "feat.params, mdef, means and some " "others." msgstr "" "Składa się z kilku plików, zwykle w oddzielnych katalogach: " "feat.params, mdef, means i kilka " "innych." #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:40 msgid "Language model" msgstr "Model języka" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:41 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 wymaga binarnego modelu języka. Jest to jeden plik " "o rozszerzeniu .lm.bin. Modele mogą mieć kilka modeli języków. " "Zwykle jest dostępny jeden dla wysokiej jakości i jeden dla niskiej jakości " "nagrań. Typowe nagrania niskiej jakości są z telefonów i mają częstotliwość " "próbkowania 8000 Hz. Te modele języków zwykle zawierają słowo " "phone, 8k lub podobne w nazwie pliku." #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:44 msgid "Dictionary" msgstr "Słownik" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:45 msgid "" "Dictionaries have the extension .dict or .dic." msgstr "Słowniki mają rozszerzenie .dict lub .dic." #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:49 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 "" "Wszystkie te elementy powinny być gdzieś w wybranym katalogu. Nie ma " "znaczenia, czy są w podkatalogach ani jakie mają nazwy." #. (itstool) path: info/desc #: C/libreoffice-helpers.page:7 msgid "Use Parlatype with LibreOffice" msgstr "Używanie programu Parlatype za pomocą pakietu LibreOffice" #. (itstool) path: page/title #. (itstool) path: table/title #: C/libreoffice-helpers.page:15 #: C/libreoffice-helpers.page:30 msgid "LibreOffice Helpers" msgstr "Narzędzia pomocnicze LibreOffice" #. (itstool) path: page/p #: C/libreoffice-helpers.page:17 msgid "" "LibreOffice Helpers let you control Parlatype from " "LibreOffice. For example, you can jump easily to timestamps." msgstr "" "Narzędzia pomocnicze LibreOffice umożliwiają sterowanie programem " "Parlatype z pakietu LibreOffice. Na przykład można " "łatwo przechodzić do czasów." #. (itstool) path: page/p #: C/libreoffice-helpers.page:19 msgid "" "To use them, you have to assign keyboard shortcuts in LibreOffice " "itself. To do this, open LibreOffice, go to menu Tools " "and select Customize." msgstr "" "Aby ich używać, należy przydzielić skróty klawiszowe w pakiecie " "LibreOffice. Aby to zrobić, otwórz LibreOffice, " "przejdź do menu Narzędzia i wybierz Dostosuj." #. (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/libreoffice-helpers.page:21 msgctxt "_" msgid "" "external ref='figures/lo-menu.png' md5='4dd86affb0353b6bdfa2dcfbbeadd494'" msgstr "" "external ref='figures/lo-menu.png' md5='4dd86affb0353b6bdfa2dcfbbeadd494'" #. (itstool) path: page/p #: C/libreoffice-helpers.page:23 msgid "" "Go to tab Keyboard. In the lower part, Functions, " "there is a list called Category. At the end of that list you’ll " "find the entry LibreOffice Macros. There is a subcategory " "share which has a subcategory Parlatype. After " "selecting Parlatype there will be a list of functions in the " "Functions list. Choose the function you’d like to use, select " "from the list Shortcut keys above a shortcut and click on the " "button Modify." msgstr "" "Przejdź do karty Klawiatura. W dolnej części, Funkcje, " "znajduje się lista o nazwie Kategoria. Na końcu tej listy " "znajduje się napis Makra LibreOffice. Dostępna jest podkategoria " "udostępnianie, która ma podkategorię Parlatype. Po " "zaznaczeniu Parlatype dostępna będzie lista funkcji na liście " "Funkcje. Zaznacz funkcje, których chcesz używać, wybierz z listy " "Klawisze skrótów nad skrótem i kliknij przycisk " "Modyfikuj." #. (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/libreoffice-helpers.page:25 msgctxt "_" msgid "" "external ref='figures/lo-customize.png' " "md5='081564921275129bee7bbd10220547e7'" msgstr "" "external ref='figures/lo-customize.png' " "md5='081564921275129bee7bbd10220547e7'" #. (itstool) path: page/p #: C/libreoffice-helpers.page:27 msgid "You can select any of these functions:" msgstr "Można wybrać dowolne z tych funkcji:" #. (itstool) path: td/p #: C/libreoffice-helpers.page:33 msgid "Helper’s name" msgstr "Nazwa narzędzia pomocniczego" #. (itstool) path: td/p #: C/libreoffice-helpers.page:34 msgid "What it does" msgstr "Co robi" #. (itstool) path: td/p #: C/libreoffice-helpers.page:40 msgid "" "Toggles between play and pause. Depending on your preferences set in " "Parlatype it will rewind a few seconds on pause." msgstr "" "Przełącza między odtwarzaniem a wstrzymaniem. W zależności od preferencji " "ustawionych w programie Parlatype przewinie o kilka sekund po " "wstrzymaniu." #. (itstool) path: td/p #: C/libreoffice-helpers.page:44 msgid "" "Jumps back a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" "Przechodzi do tyłu o kilka sekund, w zależności od preferencji ustawionych " "w programie Parlatype." #. (itstool) path: td/p #: C/libreoffice-helpers.page:48 msgid "" "Jumps forward a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" "Przechodzi do przodu o kilka sekund, w zależności od preferencji ustawionych " "w programie Parlatype." #. (itstool) path: td/p #: C/libreoffice-helpers.page:52 msgid "" "Inserts the current timestamp at the cursor’s position. It does not " "overwrite any selection." msgstr "" "Wstawia obecny czas w pozycji kursora. Nie zastępuje żadnego zaznaczenia." #. (itstool) path: td/p #: C/libreoffice-helpers.page:56 msgid "The same as above, but on a new line." msgstr "Jak wyżej, ale w nowym wierszu." #. (itstool) path: td/p #: C/libreoffice-helpers.page:60 msgid "" "If the cursor is set on a timestamp, it will jump to that position. The " "cursor has to be somewhere between the two number signs (#). Don’t select " "the timestamp, just put the cursor inside." msgstr "" "Jeśli kursor jest ustawiony na czasie, to przejdzie do tego miejsca. Kursor " "musi być między dwoma znakami #. Nie zaznaczaj czasu, tylko umieść w nim " "kursor." #. (itstool) path: td/p #: C/libreoffice-helpers.page:64 msgid "Increases playback speed." msgstr "Zwiększa prędkość odtwarzania." #. (itstool) path: td/p #: C/libreoffice-helpers.page:68 msgid "Decreases playback speed." msgstr "Zmniejsza prędkość odtwarzania." parlatype-1.6.2/help/pt/000077500000000000000000000000001353244124700151015ustar00rootroot00000000000000parlatype-1.6.2/help/pt/pt.po000066400000000000000000001113561353244124700160730ustar00rootroot00000000000000# 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: 2019-05-27 20:57+0200\n" "PO-Revision-Date: 2018-06-04 13:21+0000\n" "Last-Translator: Bruno Barreto \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: pt\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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/index.page:10 #: C/drag-and-drop.page:8 #: C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 #: C/media-keys.page:8 #: C/preferences.page:8 #: C/selections.page:8 #: C/timestamps.page:8 #: C/asr.page:9 #: C/asr-setup.page:9 #: C/libreoffice-helpers.page:9 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/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." #. (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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:17 msgid "" "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." msgstr "" #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:19 msgid "" "Automatic speech recognition is disabled by default. In order to try it, you " "have run Parlatype with this parameter:" msgstr "" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:23 msgid "Start speech recognition" msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:24 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 "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:26 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 "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:28 msgid "" "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." msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:30 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:32 msgid "" "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." msgstr "" #. (itstool) path: info/desc #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:17 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:19 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:21 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:23 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:25 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:27 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 "" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:30 msgid "Models" msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:32 msgid "" "A model consists of a so called acoustic and language model and a dictionary:" msgstr "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:36 msgid "Acoustic model" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:37 msgid "" "It consists of several files usually in their own folder: " "feat.params, mdef, means and some " "others." msgstr "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:40 msgid "Language model" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:41 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 "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:44 msgid "Dictionary" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:45 msgid "" "Dictionaries have the extension .dict or .dic." msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:49 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 "" #. (itstool) path: info/desc #: C/libreoffice-helpers.page:7 msgid "Use Parlatype with LibreOffice" msgstr "" #. (itstool) path: page/title #. (itstool) path: table/title #: C/libreoffice-helpers.page:15 #: C/libreoffice-helpers.page:30 msgid "LibreOffice Helpers" msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:17 msgid "" "LibreOffice Helpers let you control Parlatype from " "LibreOffice. For example, you can jump easily to timestamps." msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:19 msgid "" "To use them, you have to assign keyboard shortcuts in LibreOffice " "itself. To do this, open LibreOffice, go to menu Tools " "and select Customize." 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/libreoffice-helpers.page:21 msgctxt "_" msgid "" "external ref='figures/lo-menu.png' md5='4dd86affb0353b6bdfa2dcfbbeadd494'" msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:23 msgid "" "Go to tab Keyboard. In the lower part, Functions, " "there is a list called Category. At the end of that list you’ll " "find the entry LibreOffice Macros. There is a subcategory " "share which has a subcategory Parlatype. After " "selecting Parlatype there will be a list of functions in the " "Functions list. Choose the function you’d like to use, select " "from the list Shortcut keys above a shortcut and click on the " "button Modify." 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/libreoffice-helpers.page:25 msgctxt "_" msgid "" "external ref='figures/lo-customize.png' " "md5='081564921275129bee7bbd10220547e7'" msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:27 msgid "You can select any of these functions:" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:33 msgid "Helper’s name" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:34 msgid "What it does" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:40 msgid "" "Toggles between play and pause. Depending on your preferences set in " "Parlatype it will rewind a few seconds on pause." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:44 msgid "" "Jumps back a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:48 msgid "" "Jumps forward a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:52 msgid "" "Inserts the current timestamp at the cursor’s position. It does not " "overwrite any selection." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:56 msgid "The same as above, but on a new line." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:60 msgid "" "If the cursor is set on a timestamp, it will jump to that position. The " "cursor has to be somewhere between the two number signs (#). Don’t select " "the timestamp, just put the cursor inside." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:64 msgid "Increases playback speed." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:68 msgid "Decreases playback speed." msgstr "" parlatype-1.6.2/help/sk/000077500000000000000000000000001353244124700150735ustar00rootroot00000000000000parlatype-1.6.2/help/sk/sk.po000066400000000000000000001044761353244124700160640ustar00rootroot00000000000000# 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: 2019-05-27 20:57+0200\n" "PO-Revision-Date: 2017-11-23 21:21+0000\n" "Last-Translator: Launchpad Translations Administrators \n" "Language-Team: Slovak \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: sk\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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/index.page:10 #: C/drag-and-drop.page:8 #: C/first-steps.page:8 #: C/keyboard-shortcuts.page:8 #: C/media-keys.page:8 #: C/preferences.page:8 #: C/selections.page:8 #: C/timestamps.page:8 #: C/asr.page:9 #: C/asr-setup.page:9 #: C/libreoffice-helpers.page:9 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/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 "" #. (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 #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:7 msgid "Let Parlatype do part of the transcription work" msgstr "" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:15 msgid "Automatic speech recognition" msgstr "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:17 msgid "" "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." msgstr "" #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:19 msgid "" "Automatic speech recognition is disabled by default. In order to try it, you " "have run Parlatype with this parameter:" msgstr "" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:23 msgid "Start speech recognition" msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:24 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 "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:26 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 "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:28 msgid "" "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." msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:30 msgid "" "Output is without punctuation or capitalization, you have to add or correct " "that yourself." msgstr "" #. (itstool) path: note/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr.page:32 msgid "" "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." msgstr "" #. (itstool) path: info/desc #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:7 msgid "Setup automatic speech transcription" msgstr "" #. (itstool) path: page/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:15 msgid "Setup automatic speech recognition" msgstr "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:17 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:19 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:21 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:23 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:25 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 "" #. (itstool) path: page/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:27 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 "" #. (itstool) path: section/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:30 msgid "Models" msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:32 msgid "" "A model consists of a so called acoustic and language model and a dictionary:" msgstr "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:36 msgid "Acoustic model" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:37 msgid "" "It consists of several files usually in their own folder: " "feat.params, mdef, means and some " "others." msgstr "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:40 msgid "Language model" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:41 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 "" #. (itstool) path: item/title #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:44 msgid "Dictionary" msgstr "" #. (itstool) path: item/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:45 msgid "" "Dictionaries have the extension .dict or .dic." msgstr "" #. (itstool) path: section/p #. Translators: This feature is disabled by default, its translation has #. low priority. #: C/asr-setup.page:49 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 "" #. (itstool) path: info/desc #: C/libreoffice-helpers.page:7 msgid "Use Parlatype with LibreOffice" msgstr "" #. (itstool) path: page/title #. (itstool) path: table/title #: C/libreoffice-helpers.page:15 #: C/libreoffice-helpers.page:30 msgid "LibreOffice Helpers" msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:17 msgid "" "LibreOffice Helpers let you control Parlatype from " "LibreOffice. For example, you can jump easily to timestamps." msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:19 msgid "" "To use them, you have to assign keyboard shortcuts in LibreOffice " "itself. To do this, open LibreOffice, go to menu Tools " "and select Customize." 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/libreoffice-helpers.page:21 msgctxt "_" msgid "" "external ref='figures/lo-menu.png' md5='4dd86affb0353b6bdfa2dcfbbeadd494'" msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:23 msgid "" "Go to tab Keyboard. In the lower part, Functions, " "there is a list called Category. At the end of that list you’ll " "find the entry LibreOffice Macros. There is a subcategory " "share which has a subcategory Parlatype. After " "selecting Parlatype there will be a list of functions in the " "Functions list. Choose the function you’d like to use, select " "from the list Shortcut keys above a shortcut and click on the " "button Modify." 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/libreoffice-helpers.page:25 msgctxt "_" msgid "" "external ref='figures/lo-customize.png' " "md5='081564921275129bee7bbd10220547e7'" msgstr "" #. (itstool) path: page/p #: C/libreoffice-helpers.page:27 msgid "You can select any of these functions:" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:33 msgid "Helper’s name" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:34 msgid "What it does" msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:40 msgid "" "Toggles between play and pause. Depending on your preferences set in " "Parlatype it will rewind a few seconds on pause." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:44 msgid "" "Jumps back a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:48 msgid "" "Jumps forward a few seconds, depending on the preferences you set in " "Parlatype." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:52 msgid "" "Inserts the current timestamp at the cursor’s position. It does not " "overwrite any selection." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:56 msgid "The same as above, but on a new line." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:60 msgid "" "If the cursor is set on a timestamp, it will jump to that position. The " "cursor has to be somewhere between the two number signs (#). Don’t select " "the timestamp, just put the cursor inside." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:64 msgid "Increases playback speed." msgstr "" #. (itstool) path: td/p #: C/libreoffice-helpers.page:68 msgid "Decreases playback speed." msgstr "" parlatype-1.6.2/libparlatype/000077500000000000000000000000001353244124700162165ustar00rootroot00000000000000parlatype-1.6.2/libparlatype/data/000077500000000000000000000000001353244124700171275ustar00rootroot00000000000000parlatype-1.6.2/libparlatype/data/icons/000077500000000000000000000000001353244124700202425ustar00rootroot00000000000000parlatype-1.6.2/libparlatype/data/icons/16x16/000077500000000000000000000000001353244124700210275ustar00rootroot00000000000000parlatype-1.6.2/libparlatype/data/icons/16x16/actions/000077500000000000000000000000001353244124700224675ustar00rootroot00000000000000parlatype-1.6.2/libparlatype/data/icons/16x16/actions/widget-pt-waveviewer.png000066400000000000000000000002301353244124700272560ustar00rootroot00000000000000PNG  IHDRa_IDAT8c`@3 (bƒ:. &\jra>| @*0Xr%#C[ aA FU 9R*88FIENDB`parlatype-1.6.2/libparlatype/data/icons/22x22/000077500000000000000000000000001353244124700210215ustar00rootroot00000000000000parlatype-1.6.2/libparlatype/data/icons/22x22/actions/000077500000000000000000000000001353244124700224615ustar00rootroot00000000000000parlatype-1.6.2/libparlatype/data/icons/22x22/actions/widget-pt-waveviewer.png000066400000000000000000000002601353244124700272530ustar00rootroot00000000000000PNG  IHDRĴl;wIDAT8c @ @ 3pwwB&ah0M{2R\DIZg #rYlʕ+a1 .B6`!V!jh,t.X}V)|J@ulIENDB`parlatype-1.6.2/libparlatype/data/icons/meson.build000066400000000000000000000003771353244124700224130ustar00rootroot00000000000000icon_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-1.6.2/libparlatype/data/meson.build000066400000000000000000000005011353244124700212650ustar00rootroot00000000000000glade = 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-1.6.2/libparlatype/data/parlatype.xml000066400000000000000000000012421353244124700216510ustar00rootroot00000000000000 parlatype-1.6.2/libparlatype/docs/000077500000000000000000000000001353244124700171465ustar00rootroot00000000000000parlatype-1.6.2/libparlatype/docs/meson.build000066400000000000000000000001071353244124700213060ustar00rootroot00000000000000gtk_doc = get_option('gtk-doc') if gtk_doc subdir('reference') endif parlatype-1.6.2/libparlatype/docs/reference/000077500000000000000000000000001353244124700211045ustar00rootroot00000000000000parlatype-1.6.2/libparlatype/docs/reference/gallery.xml000066400000000000000000000012121353244124700232610ustar00rootroot00000000000000 Widget gallery Parlatype provides two GtkWidgets, PtProgressDialog and PtWaveviewer. parlatype-1.6.2/libparlatype/docs/reference/images/000077500000000000000000000000001353244124700223515ustar00rootroot00000000000000parlatype-1.6.2/libparlatype/docs/reference/images/pt-progress-dialog.png000066400000000000000000000116341353244124700266060ustar00rootroot00000000000000PNG  IHDR #sBIT|dtEXtSoftwaregnome-screenshot>.IDATxy|H2 p_$Vh֪At[v[Z]-ݺ*ҭJqW%`\!L3CL2f&/~17d !B!.BtOYVv/+R%AL )UUz6~`ҥӀԠRCO8E^Wzx}'B rrqVpnUٰvԜ tƸB|L&O4)o +V̚3gC.+Bxow18uUO0u5 !N<@Ӂ/ɡGB`84U] !頋}ThF>릅,}}a 1pBxR Nʈ*HP)}Q   # AB$Bh 2 T!4@J_!4@FT!4@*H+Ȉ*HP  AB$BhU T!4@*HP  Ah<-soD ԞhO}g-yU}&] Z;|)sҷ߯葐gψ|16>bGxi>^_D6qF#AtFٶ Lf\QH^5,1 B޶r\?l5/' I =?h1?331[ScK!Jo>IcX拇P{S80e˿\޿]so]!n]Ġ䶥p٬סzx(ז33U<'9yMoP*{O}A~ʽma%qKG`wef~oȜWe/̧0͈)6Ľ/)}3& /o<3]hNrō1[>20;?},yCG2ɤwT\wWNC|Yd5s j>6P+I^OCrc3u?U)K"1uW/݁wp~{R-d2&܏Ҙ9 Էy I͇/fme k j6}70A\5R3*;cb]).#jޒM7jGWQI!7Ij/ð8p-Oks䄃R{sI|Rk s/RI0 _<ηhrK%oOgm67újrl>̫ay33RT{+6 ـ]ޢ>%v|5Su|ݑwOq,q jk>c>>NYRQVCMM=δKzQQ^'멭:ݥ4W ܰ}k1Q{UϫJ?ӥuXf5Ko{f%%(o&%OgLI4fk~^^Uv# HOo{VrռǬq1 wkxHg/Sp7)9SMkPS F9$ep?ͭ?'/__􏌌ڃ;R,y]gaR"kObݺ2HyAËF{d$dc歿oTdU~&B T!4@*HP  AB$BhU T!4@* 'ʇiɕ^1{r6WODdbȐ!L2+ L>KnJ/_Șx9xN,;U͔R\\]ȀqB>7xU+QLyyyw#b>F! _x:6|P|c'U,餘v;./cup'O6FjDn-]b3v K0 f沂TCgql7YLQd'*-KE8^O;ڿm muܱ*w_+fѤsia^Z7}ܰT䂈N#I'Do3M{s67 8RJ1nڛNQҁftvaQW@ܰ|2LQu6R}A模$@u|kWќNnN&ڱ64nQ0[I祣zsy)N*=||{Ff}sZ**zCa=LZNTU@GRP.ܲNQk&;B\prAD jccS:#hD jSsso"fh})}a'HO 5!荊5>j  Q=a10`R>ij$!b豈TUU] (}G*Af}Djmߥ GUkjjaCC Na\ΡUCK,٦j̙g::p\vǶm>`vn^ cuUUUMc2t{zdg{>1,/]r?899?pPsr8I)Ǫ_弡dfd[l{h\po_O@ 0aڵW͛7nEQE/4ޱiӦNhw:[utj/#M6vٲe_?~lɔb!"vmmm{=޽{w%pra0m=CUV/ 儠)=ӋZ`r_  ց<9708? HP)5֋/_[U7?9o.$BD"TPF'CPÍ^΍ ܯ@ T! j [| 685dP $^h*!{5\Az!|um4%q JXsG}tR! qC {.]t 3 uGVB!Ϟx{QTIENDB`parlatype-1.6.2/libparlatype/docs/reference/images/pt-waveviewer.png000066400000000000000000000164421353244124700256730ustar00rootroot00000000000000PNG  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-1.6.2/libparlatype/docs/reference/introduction.xml000066400000000000000000000016601353244124700243520ustar00rootroot00000000000000 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 applicatons as well. PtPlayer is the core GStreamer backend that can be used as an audio player. It uses internally PtWaveloader to extract the wave form from a given file. This data is boxed in a PtWavedata struct that can be passed to PtWaveviewer, a GtkWidget showing the wave form. This is the first public release of Parlatype, it is still unstable and might change with the next minor release. parlatype-1.6.2/libparlatype/docs/reference/meson.build000066400000000000000000000021071353244124700232460ustar00rootroot00000000000000version_conf = configuration_data() version_conf.set('PACKAGE_VERSION', meson.project_version()) configure_file( input: 'version.xml.in', output: 'version.xml', configuration: version_conf, ) gnome.gtkdoc( 'parlatype', main_xml: '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', ], mkdb_args: [ '--xml-mode', '--output-format=xml', ], content_files: [ 'gallery.xml', 'introduction.xml', 'using_library.xml', 'python_example.xml', 'parlatype-example.py', ], ignore_headers: [ 'pt-i18n.h', 'pt-waveviewer-cursor.h', 'pt-waveviewer-focus.h', 'pt-waveviewer-selection.h', 'pt-waveviewer-ruler.h', 'pt-waveviewer-waveform.h', ], html_assets: [ 'images/pt-progress-dialog.png', 'images/pt-waveviewer.png', ], install: true, ) parlatype-1.6.2/libparlatype/docs/reference/parlatype-docs.xml000066400000000000000000000036151353244124700245620ustar00rootroot00000000000000 ]> Parlatype Reference Manual for parlatype &version;. Gabor Karsay Overview Main backend: PtPlayer GtkWidgets Internals: Get Wavedata Object Hierarchy API Index parlatype-1.6.2/libparlatype/docs/reference/parlatype-example.py000077500000000000000000000142021353244124700251120ustar00rootroot00000000000000#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ parlatype-example.py demonstrates libparlatype. """ import os import sys import gi gi.require_version('Parlatype', '2.0') 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, flags=Gtk.DialogFlags.MODAL, type=Gtk.MessageType.ERROR, buttons=Gtk.ButtonsType.OK, message_format=message) msg.run() msg.destroy() class ParlatypeExample: def __init__(self): self.player = Pt.Player.new() try: self.player.setup_player() except Exception as err: error_message(err.args[0], None) exit() 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.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 open_callback(self, player, result): self.progress.destroy() if self.timer > 0: self.viewer.remove_tick_callback(self.timer) self.timer = 0 self.viewer.set_wave(None) try: self.player.open_uri_finish(result) # Get data at a resolution of 100 px per second data = self.player.get_data(100) self.viewer.set_wave(data) self.timer = self.viewer.add_tick_callback(self.update_cursor) except Exception as err: error_message(err.args[0], self.win) def progress_update_callback(self, player, value, dialog): self.progress.set_progress(value) def progress_response_callback(self, progress, response): if response == Gtk.ResponseType.CANCEL: self.player.cancel() def open_file(self, filename): # For the PtProgressDialog we have to use the async opening function self.player.open_uri_async(filename, self.open_callback) # PtProgressDialog, connect signals and show only, don't progress.run() self.progress = Pt.ProgressDialog.new(self.win) self.progress.connect("response", self.progress_response_callback) self.player.connect("load-progress", self.progress_update_callback, self.progress) self.progress.show_all() def filechooser(self, button): dialog = Gtk.FileChooserDialog("Please choose a file", self.win, Gtk.FileChooserAction.OPEN, ("_Cancel", Gtk.ResponseType.CANCEL, "_Open", Gtk.ResponseType.OK)) response = dialog.run() if response == Gtk.ResponseType.OK: self.open_file("file://" + dialog.get_filename()) dialog.destroy() def player_error(self, 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-1.6.2/libparlatype/docs/reference/parlatype-example.ui000066400000000000000000000570121353244124700251020ustar00rootroot00000000000000 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 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 2 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-1.6.2/libparlatype/docs/reference/parlatype-sections.txt000066400000000000000000000046061353244124700255010ustar00rootroot00000000000000

pt-player PtPlayer PtPlayer pt_player_new pt_player_setup_player pt_player_setup_sphinx pt_player_open_uri_async pt_player_open_uri_finish pt_player_open_uri pt_player_cancel 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_jump_to_permille pt_player_get_permille pt_player_set_speed pt_player_set_volume pt_player_mute_volume pt_player_rewind pt_player_fast_forward 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 pt_player_get_data PtPrecisionType PT_IS_PLAYER PT_PLAYER PT_TYPE_PLAYER PtPlayerClass PtPlayerPrivate pt_player_get_type
pt-waveloader PtWaveloader PtWaveloader pt_waveloader_new pt_waveloader_load_finish pt_waveloader_load_async 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_set_wave 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-progress-dialog PtProgressDialog PtProgressDialog pt_progress_dialog_new pt_progress_dialog_set_progress PT_IS_PROGRESS_DIALOG PT_PROGRESS_DIALOG PT_TYPE_PROGRESS_DIALOG PtProgressDialogClass PtProgressDialogPrivate pt_progress_dialog_get_type
pt-wavedata PtWavedata PtWavedata pt_wavedata_new pt_wavedata_copy pt_wavedata_free PT_TYPE_WAVEDATA pt_wavedata_get_type
parlatype-1.6.2/libparlatype/docs/reference/python_example.xml000066400000000000000000000011051353244124700246570ustar00rootroot00000000000000 A python example This is a complete working example of how to use PtPlayer with Python: MISSING XINCLUDE CONTENT parlatype-1.6.2/libparlatype/docs/reference/using_library.xml000066400000000000000000000015321353244124700245000ustar00rootroot00000000000000 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: from gi.repository import Parlatype There is a glade catalog for PtWaveviewer so you can include it in your glade projects. parlatype-1.6.2/libparlatype/docs/reference/version.xml.in000066400000000000000000000000221353244124700237120ustar00rootroot00000000000000@PACKAGE_VERSION@ parlatype-1.6.2/libparlatype/gst-plugin-sphinx/000077500000000000000000000000001353244124700216165ustar00rootroot00000000000000parlatype-1.6.2/libparlatype/gst-plugin-sphinx/gstparlasphinx.c000066400000000000000000000650751353244124700250460ustar00rootroot00000000000000/* -*- 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 */ /** * SECTION:element-pocketsphix * * The element runs the speech recohgnition on incomming 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("text/plain") ); /* * 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", "Grammer file", "File with grammer 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); 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; case GST_STATE_CHANGE_READY_TO_NULL: ps_free(ps->ps); ps->ps = NULL; default: break; } return GST_ELEMENT_CLASS(gst_parlasphinx_parent_class)->change_state(element, transition); } 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; ps = GST_PARLASPHINX(parent); /* 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) { GstBuffer *buffer; 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); buffer = gst_buffer_new_and_alloc(strlen(hyp) + 1); gst_buffer_fill(buffer, 0, hyp, strlen(hyp)); gst_buffer_fill(buffer, strlen(hyp), "\n", 1); gst_pad_push(ps->srcpad, buffer); } 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); switch (event->type) { case GST_EVENT_EOS: { gst_parlasphinx_finalize_utt(ps); return gst_pad_event_default(pad, parent, event); } 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_PLUGIN_DEFINE(GST_VERSION_MAJOR, GST_VERSION_MINOR, parlasphinx, "ParlaSphinx plugin", plugin_init, PACKAGE_VERSION, "BSD", "ParlaSphinx", "http://cmusphinx.sourceforge.net/") parlatype-1.6.2/libparlatype/gst-plugin-sphinx/gstparlasphinx.h000066400000000000000000000070231353244124700250400ustar00rootroot00000000000000/* -*- 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. */ }; 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); G_END_DECLS #endif /* __GST_PARLASPHINX_H__ */ parlatype-1.6.2/libparlatype/gst-plugin-sphinx/meson.build000066400000000000000000000005621353244124700237630ustar00rootroot00000000000000sphinxbase = dependency('sphinxbase') pocketsphinx = dependency('pocketsphinx') plugins_install_dir = '@0@/gstreamer-1.0'.format(get_option('libdir')) gstparlasphinx = library('gstparlasphinx', 'gstparlasphinx.c', include_directories: conf_inc, dependencies: [sphinxbase, pocketsphinx, gstreamer, gstreamer_audio], install: true, install_dir: plugins_install_dir, )parlatype-1.6.2/libparlatype/meson.build000066400000000000000000000013771353244124700203700ustar00rootroot00000000000000# 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_version = '2.1.1' # API or namespace version for GIR = first number of libparlatype_version + .0 libparlatype_api_version = '2.0' gettext_package_lib = 'libparlatype' gstreamer = dependency('gstreamer-1.0', version : '>= 1.6.3') gstreamer_audio = dependency('gstreamer-audio-1.0') compiler = meson.get_compiler('c') math = compiler.find_library('m', required: false) subdir('data') subdir('po') subdir('src') subdir('tests') subdir('docs') # must be after src if asr subdir('gst-plugin-sphinx') endif parlatype-1.6.2/libparlatype/po/000077500000000000000000000000001353244124700166345ustar00rootroot00000000000000parlatype-1.6.2/libparlatype/po/LINGUAS000066400000000000000000000001111353244124700176520ustar00rootroot00000000000000ca cs de en_GB es fi fr hu id it ja kab ku lt lv ms nl pl pt pt_BR sk sv parlatype-1.6.2/libparlatype/po/Makevars000066400000000000000000000070571353244124700203410ustar00rootroot00000000000000# 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-1.6.2/libparlatype/po/POTFILES.in000066400000000000000000000003511353244124700204100ustar00rootroot00000000000000# List of source files which contain translatable strings. libparlatype/src/pt-player.c libparlatype/src/pt-progress-dialog.c libparlatype/src/pt-waveloader.c libparlatype/src/pt-waveviewer.c libparlatype/src/pt-waveviewer-ruler.c parlatype-1.6.2/libparlatype/po/POTFILES.skip000066400000000000000000000000001353244124700207370ustar00rootroot00000000000000parlatype-1.6.2/libparlatype/po/ca.po000066400000000000000000000142061353244124700175620ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 18:59+0200\n" "PO-Revision-Date: 2017-04-18 19:00+0000\n" "Last-Translator: VPablo \n" "Language-Team: Catalan \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: ca\n" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:499 #, c-format msgid "URI not valid: %s" msgstr "URI no vàlida:%s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:511 #, c-format msgid "File not found: %s" msgstr "No s'ha trobat el fitxer: %s" #. 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:1430 libparlatype/src/pt-waveviewer-ruler.c:174 #: libparlatype/src/pt-waveviewer-ruler.c:228 #, 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:1437 #, 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:1444 #, 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:1461 #, 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:1468 #, 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:1475 #, 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:1488 libparlatype/src/pt-waveviewer-ruler.c:179 #: libparlatype/src/pt-waveviewer-ruler.c:230 #, 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:1495 #, 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:1502 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-player.c:1903 #, c-format msgid "Failed to load plugin “%s”." msgstr "" #: libparlatype/src/pt-progress-dialog.c:102 #, c-format msgid "Time remaining: 1 second" msgid_plural "Time remaining: %d seconds" msgstr[0] "" msgstr[1] "" #. Translators: this is a time with minutes #. and seconds, e.g. Time remaining: 3:20 #: libparlatype/src/pt-progress-dialog.c:113 #, c-format msgid "Time remaining: %d:%02d" msgstr "" #: libparlatype/src/pt-progress-dialog.c:242 msgid "Loading file…" msgstr "" #: libparlatype/src/pt-waveloader.c:343 msgid "Failed to open temporary file." msgstr "Ha fallat l'apertura d'un fitxer temporal." #: libparlatype/src/pt-waveloader.c:356 msgid "Failed to setup GStreamer pipeline." msgstr "Ha fallat la configuració de la canonada GStreamer." #: libparlatype/src/pt-waveloader.c:375 msgid "Failed to start GStreamer pipeline." msgstr "Ha fallat l'inici de la canonada GStreamer." #: libparlatype/src/pt-waveviewer.c:1331 msgid "Follow cursor" msgstr "Segueix el cursor" #: libparlatype/src/pt-waveviewer.c:1332 msgid "Scroll automatically to the cursor’s position" msgstr "" #: libparlatype/src/pt-waveviewer.c:1348 msgid "Fixed cursor" msgstr "Cursor fixe" #: libparlatype/src/pt-waveviewer.c:1349 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:1363 msgid "Show ruler" msgstr "Mostra regla" #: libparlatype/src/pt-waveviewer.c:1364 msgid "Show the time scale with time marks" msgstr "Mostra la escala de temps amb marques" parlatype-1.6.2/libparlatype/po/cs.po000066400000000000000000000147641353244124700176150ustar00rootroot00000000000000# 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: 2019-05-27 18:59+0200\n" "PO-Revision-Date: 2019-03-11 07:57+0000\n" "Last-Translator: fri \n" "Language-Team: Czech \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: cs\n" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:499 #, c-format msgid "URI not valid: %s" msgstr "URI není platný: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:511 #, c-format msgid "File not found: %s" msgstr "Soubor nenalezen: %s" #. 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:1430 libparlatype/src/pt-waveviewer-ruler.c:174 #: libparlatype/src/pt-waveviewer-ruler.c:228 #, 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:1437 #, 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:1444 #, 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:1461 #, 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:1468 #, 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:1475 #, 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:1488 libparlatype/src/pt-waveviewer-ruler.c:179 #: libparlatype/src/pt-waveviewer-ruler.c:230 #, 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:1495 #, 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:1502 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-player.c:1903 #, c-format msgid "Failed to load plugin “%s”." msgstr "Nepodařilo se nahrát přídavný modul “%s”." #: libparlatype/src/pt-progress-dialog.c:102 #, c-format msgid "Time remaining: 1 second" msgid_plural "Time remaining: %d seconds" msgstr[0] "Zbývající čas: 1 sekunda" msgstr[1] "Zbývající čas: %d sekundy" msgstr[2] "Zbývající čas: %d sekund" #. Translators: this is a time with minutes #. and seconds, e.g. Time remaining: 3:20 #: libparlatype/src/pt-progress-dialog.c:113 #, c-format msgid "Time remaining: %d:%02d" msgstr "Zbývající čas: %d:%02d" #: libparlatype/src/pt-progress-dialog.c:242 msgid "Loading file…" msgstr "Nahrává se soubor..." #: libparlatype/src/pt-waveloader.c:343 msgid "Failed to open temporary file." msgstr "Nepodařilo se otevřít dočasný soubor." #: libparlatype/src/pt-waveloader.c:356 msgid "Failed to setup GStreamer pipeline." msgstr "Nepodařilo se nastavit příkazy pro GStreamer." #: libparlatype/src/pt-waveloader.c:375 msgid "Failed to start GStreamer pipeline." msgstr "Nepodařilo se spustit příkazy pro GStreamer." #: libparlatype/src/pt-waveviewer.c:1331 msgid "Follow cursor" msgstr "Následovat ukazatel" #: libparlatype/src/pt-waveviewer.c:1332 msgid "Scroll automatically to the cursor’s position" msgstr "Projíždět automaticky na polohu ukazatele" #: libparlatype/src/pt-waveviewer.c:1348 msgid "Fixed cursor" msgstr "Pevný ukazatel" #: libparlatype/src/pt-waveviewer.c:1349 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:1363 msgid "Show ruler" msgstr "Ukázat pravítko" #: libparlatype/src/pt-waveviewer.c:1364 msgid "Show the time scale with time marks" msgstr "Ukázat časovou stupnici s časovými značkami" parlatype-1.6.2/libparlatype/po/de.po000066400000000000000000000145021353244124700175660ustar00rootroot00000000000000# 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: 2019-05-27 18:59+0200\n" "PO-Revision-Date: 2019-02-11 19:18+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Deutsch <>\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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: de\n" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:499 #, c-format msgid "URI not valid: %s" msgstr "URI nicht gültig: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:511 #, c-format msgid "File not found: %s" msgstr "Datei nicht gefunden: %s" #. 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:1430 libparlatype/src/pt-waveviewer-ruler.c:174 #: libparlatype/src/pt-waveviewer-ruler.c:228 #, 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:1437 #, 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:1444 #, 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:1461 #, 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:1468 #, 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:1475 #, 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:1488 libparlatype/src/pt-waveviewer-ruler.c:179 #: libparlatype/src/pt-waveviewer-ruler.c:230 #, 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:1495 #, 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:1502 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-player.c:1903 #, c-format msgid "Failed to load plugin “%s”." msgstr "Das Plugin »%s« konnte nicht geladen werden." #: libparlatype/src/pt-progress-dialog.c:102 #, c-format msgid "Time remaining: 1 second" msgid_plural "Time remaining: %d seconds" msgstr[0] "Verbleibende Zeit: 1 Sekunde" msgstr[1] "Verbleibende Zeit: %d Sekunden" #. Translators: this is a time with minutes #. and seconds, e.g. Time remaining: 3:20 #: libparlatype/src/pt-progress-dialog.c:113 #, c-format msgid "Time remaining: %d:%02d" msgstr "Verbleibende Zeit: %d:%02d" #: libparlatype/src/pt-progress-dialog.c:242 msgid "Loading file…" msgstr "Lade Datei …" #: libparlatype/src/pt-waveloader.c:343 msgid "Failed to open temporary file." msgstr "Die temporäre Datei konnte nicht geöffnet werden." #: libparlatype/src/pt-waveloader.c:356 msgid "Failed to setup GStreamer pipeline." msgstr "Die GStreamer-Pipeline konnte nicht eingerichtet werden." #: libparlatype/src/pt-waveloader.c:375 msgid "Failed to start GStreamer pipeline." msgstr "Die GStreamer-Pipeline konnte nicht gestartet werden." #: libparlatype/src/pt-waveviewer.c:1331 msgid "Follow cursor" msgstr "Cursor folgen" #: libparlatype/src/pt-waveviewer.c:1332 msgid "Scroll automatically to the cursor’s position" msgstr "Scrollt automatisch zur Cursorposition" #: libparlatype/src/pt-waveviewer.c:1348 msgid "Fixed cursor" msgstr "Fixierter Cursor" #: libparlatype/src/pt-waveviewer.c:1349 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:1363 msgid "Show ruler" msgstr "Zeitskala anzeigen" #: libparlatype/src/pt-waveviewer.c:1364 msgid "Show the time scale with time marks" msgstr "Zeigt die Zeitskala mit Zeitmarkierungen" parlatype-1.6.2/libparlatype/po/en_GB.po000066400000000000000000000145151353244124700201540ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 18:59+0200\n" "PO-Revision-Date: 2019-03-30 15:25+0000\n" "Last-Translator: Stephan Woidowski \n" "Language-Team: English (United Kingdom) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: en_GB\n" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:499 #, c-format msgid "URI not valid: %s" msgstr "URI not valid: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:511 #, c-format msgid "File not found: %s" msgstr "File not found: %s" #. 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:1430 libparlatype/src/pt-waveviewer-ruler.c:174 #: libparlatype/src/pt-waveviewer-ruler.c:228 #, 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:1437 #, 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:1444 #, 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:1461 #, 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:1468 #, 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:1475 #, 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:1488 libparlatype/src/pt-waveviewer-ruler.c:179 #: libparlatype/src/pt-waveviewer-ruler.c:230 #, 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:1495 #, 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:1502 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-player.c:1903 #, c-format msgid "Failed to load plugin “%s”." msgstr "Failed to load plugin “%s”." #: libparlatype/src/pt-progress-dialog.c:102 #, c-format msgid "Time remaining: 1 second" msgid_plural "Time remaining: %d seconds" msgstr[0] "Time remaining: 1 second" msgstr[1] "Time remaining: %d seconds" #. Translators: this is a time with minutes #. and seconds, e.g. Time remaining: 3:20 #: libparlatype/src/pt-progress-dialog.c:113 #, c-format msgid "Time remaining: %d:%02d" msgstr "Time remaining: %d:%02d" #: libparlatype/src/pt-progress-dialog.c:242 msgid "Loading file…" msgstr "Loading file…" #: libparlatype/src/pt-waveloader.c:343 msgid "Failed to open temporary file." msgstr "Failed to open temporary file." #: libparlatype/src/pt-waveloader.c:356 msgid "Failed to setup GStreamer pipeline." msgstr "Failed to setup GStreamer pipeline." #: libparlatype/src/pt-waveloader.c:375 msgid "Failed to start GStreamer pipeline." msgstr "Failed to start GStreamer pipeline." #: libparlatype/src/pt-waveviewer.c:1331 msgid "Follow cursor" msgstr "Follow cursor" #: libparlatype/src/pt-waveviewer.c:1332 msgid "Scroll automatically to the cursor’s position" msgstr "Scroll automatically to the cursor’s position" #: libparlatype/src/pt-waveviewer.c:1348 msgid "Fixed cursor" msgstr "Fixed cursor" #: libparlatype/src/pt-waveviewer.c:1349 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:1363 msgid "Show ruler" msgstr "Show ruler" #: libparlatype/src/pt-waveviewer.c:1364 msgid "Show the time scale with time marks" msgstr "Show the time scale with time marks" parlatype-1.6.2/libparlatype/po/es.po000066400000000000000000000145411353244124700176100ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 18:59+0200\n" "PO-Revision-Date: 2019-07-03 19:40+0000\n" "Last-Translator: Adolfo Jayme \n" "Language-Team: Spanish \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: es\n" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:499 #, c-format msgid "URI not valid: %s" msgstr "URI no válido: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:511 #, c-format msgid "File not found: %s" msgstr "Archivo no encontrado: %s" #. 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:1430 libparlatype/src/pt-waveviewer-ruler.c:174 #: libparlatype/src/pt-waveviewer-ruler.c:228 #, 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:1437 #, 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:1444 #, 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:1461 #, 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:1468 #, 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:1475 #, 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:1488 libparlatype/src/pt-waveviewer-ruler.c:179 #: libparlatype/src/pt-waveviewer-ruler.c:230 #, 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:1495 #, 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:1502 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d,%02d" #: libparlatype/src/pt-player.c:1903 #, c-format msgid "Failed to load plugin “%s”." msgstr "No se pudo cargar el complemento «%s»." #: libparlatype/src/pt-progress-dialog.c:102 #, c-format msgid "Time remaining: 1 second" msgid_plural "Time remaining: %d seconds" msgstr[0] "Tiempo restante: 1 segundo" msgstr[1] "Tiempo restante: %d segundos" #. Translators: this is a time with minutes #. and seconds, e.g. Time remaining: 3:20 #: libparlatype/src/pt-progress-dialog.c:113 #, c-format msgid "Time remaining: %d:%02d" msgstr "Tiempo restante: %d∶%02d" #: libparlatype/src/pt-progress-dialog.c:242 msgid "Loading file…" msgstr "Cargando el archivo…" #: libparlatype/src/pt-waveloader.c:343 msgid "Failed to open temporary file." msgstr "Ha fallado la apertura de un archivo temporal." #: libparlatype/src/pt-waveloader.c:356 msgid "Failed to setup GStreamer pipeline." msgstr "Ha fallado la configuración de la tubería GStreamer." #: libparlatype/src/pt-waveloader.c:375 msgid "Failed to start GStreamer pipeline." msgstr "Ha fallado el inicio de la tubería GStreamer." #: libparlatype/src/pt-waveviewer.c:1331 msgid "Follow cursor" msgstr "Seguir cursor" #: libparlatype/src/pt-waveviewer.c:1332 msgid "Scroll automatically to the cursor’s position" msgstr "Desplazarse automáticamente a la posición del cursor" #: libparlatype/src/pt-waveviewer.c:1348 msgid "Fixed cursor" msgstr "Cursor fijo" #: libparlatype/src/pt-waveviewer.c:1349 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:1363 msgid "Show ruler" msgstr "Muestra regla" #: libparlatype/src/pt-waveviewer.c:1364 msgid "Show the time scale with time marks" msgstr "Muestra la escala de tiempo con marcas" parlatype-1.6.2/libparlatype/po/fi.po000066400000000000000000000134111353244124700175720ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 18:59+0200\n" "PO-Revision-Date: 2017-11-20 19:36+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: fi\n" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:499 #, c-format msgid "URI not valid: %s" msgstr "URI on virheellinen: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:511 #, c-format msgid "File not found: %s" msgstr "Tiedostoa ei löydy: %s" #. 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:1430 libparlatype/src/pt-waveviewer-ruler.c:174 #: libparlatype/src/pt-waveviewer-ruler.c:228 #, 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:1437 #, 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:1444 #, 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:1461 #, 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:1468 #, 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:1475 #, 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:1488 libparlatype/src/pt-waveviewer-ruler.c:179 #: libparlatype/src/pt-waveviewer-ruler.c:230 #, 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:1495 #, 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:1502 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "" #: libparlatype/src/pt-player.c:1903 #, c-format msgid "Failed to load plugin “%s”." msgstr "" #: libparlatype/src/pt-progress-dialog.c:102 #, c-format msgid "Time remaining: 1 second" msgid_plural "Time remaining: %d seconds" msgstr[0] "" msgstr[1] "" #. Translators: this is a time with minutes #. and seconds, e.g. Time remaining: 3:20 #: libparlatype/src/pt-progress-dialog.c:113 #, c-format msgid "Time remaining: %d:%02d" msgstr "" #: libparlatype/src/pt-progress-dialog.c:242 msgid "Loading file…" msgstr "" #: libparlatype/src/pt-waveloader.c:343 msgid "Failed to open temporary file." msgstr "Väliaikaistiedoston avaaminen epäonnistui." #: libparlatype/src/pt-waveloader.c:356 msgid "Failed to setup GStreamer pipeline." msgstr "" #: libparlatype/src/pt-waveloader.c:375 msgid "Failed to start GStreamer pipeline." msgstr "" #: libparlatype/src/pt-waveviewer.c:1331 msgid "Follow cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1332 msgid "Scroll automatically to the cursor’s position" msgstr "" #: libparlatype/src/pt-waveviewer.c:1348 msgid "Fixed cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1349 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:1363 msgid "Show ruler" msgstr "" #: libparlatype/src/pt-waveviewer.c:1364 msgid "Show the time scale with time marks" msgstr "" parlatype-1.6.2/libparlatype/po/fr.po000066400000000000000000000143041353244124700176050ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 18:59+0200\n" "PO-Revision-Date: 2018-06-04 13:09+0000\n" "Last-Translator: archi02 \n" "Language-Team: French \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: fr\n" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:499 #, c-format msgid "URI not valid: %s" msgstr "Adresse non valide : %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:511 #, c-format msgid "File not found: %s" msgstr "Fichier non trouvé: %s" #. 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:1430 libparlatype/src/pt-waveviewer-ruler.c:174 #: libparlatype/src/pt-waveviewer-ruler.c:228 #, 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:1437 #, 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:1444 #, 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:1461 #, 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:1468 #, 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:1475 #, 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:1488 libparlatype/src/pt-waveviewer-ruler.c:179 #: libparlatype/src/pt-waveviewer-ruler.c:230 #, 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:1495 #, 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:1502 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-player.c:1903 #, c-format msgid "Failed to load plugin “%s”." msgstr "" #: libparlatype/src/pt-progress-dialog.c:102 #, c-format msgid "Time remaining: 1 second" msgid_plural "Time remaining: %d seconds" msgstr[0] "" msgstr[1] "" #. Translators: this is a time with minutes #. and seconds, e.g. Time remaining: 3:20 #: libparlatype/src/pt-progress-dialog.c:113 #, c-format msgid "Time remaining: %d:%02d" msgstr "" #: libparlatype/src/pt-progress-dialog.c:242 msgid "Loading file…" msgstr "" #: libparlatype/src/pt-waveloader.c:343 msgid "Failed to open temporary file." msgstr "Échec d'ouverture du fichier temporaire." #: libparlatype/src/pt-waveloader.c:356 msgid "Failed to setup GStreamer pipeline." msgstr "Échec de configuration du pipeline GStreamer." #: libparlatype/src/pt-waveloader.c:375 msgid "Failed to start GStreamer pipeline." msgstr "Échec du lancement du pipeline Gstreamer." #: libparlatype/src/pt-waveviewer.c:1331 msgid "Follow cursor" msgstr "Suivre le curseur" #: libparlatype/src/pt-waveviewer.c:1332 msgid "Scroll automatically to the cursor’s position" msgstr "" #: libparlatype/src/pt-waveviewer.c:1348 msgid "Fixed cursor" msgstr "Curseur positionné" #: libparlatype/src/pt-waveviewer.c:1349 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 le spectre sonore se déplace.\n" "Si FAUX, le curseur se déplace." #: libparlatype/src/pt-waveviewer.c:1363 msgid "Show ruler" msgstr "Montrer la règle" #: libparlatype/src/pt-waveviewer.c:1364 msgid "Show the time scale with time marks" msgstr "Montrer l'échelle de temps avec les marqueurs" parlatype-1.6.2/libparlatype/po/hu.po000066400000000000000000000145651353244124700176230ustar00rootroot00000000000000# 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: 2019-05-27 18:59+0200\n" "PO-Revision-Date: 2019-07-06 12:07+0000\n" "Last-Translator: Óvári \n" "Language-Team: Hungarian \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: 2019-07-19 07:04+0000\n" "X-Generator: Launchpad (build 19010)\n" "Language: hu\n" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:499 #, c-format msgid "URI not valid: %s" msgstr "Az URI nem érvényes: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:511 #, c-format msgid "File not found: %s" msgstr "A fájl nem található: %s" #. 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:1430 libparlatype/src/pt-waveviewer-ruler.c:174 #: libparlatype/src/pt-waveviewer-ruler.c:228 #, 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:1437 #, 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:1444 #, 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:1461 #, 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:1468 #, 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:1475 #, 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:1488 libparlatype/src/pt-waveviewer-ruler.c:179 #: libparlatype/src/pt-waveviewer-ruler.c:230 #, 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:1495 #, 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:1502 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-player.c:1903 #, c-format msgid "Failed to load plugin “%s”." msgstr "Nem sikerült betölteni a(z) „%s” bővítményt." #: libparlatype/src/pt-progress-dialog.c:102 #, c-format msgid "Time remaining: 1 second" msgid_plural "Time remaining: %d seconds" msgstr[0] "A hátralévő idő: 1 másodperc" msgstr[1] "A hátralévő idő: %d másodperc" #. Translators: this is a time with minutes #. and seconds, e.g. Time remaining: 3:20 #: libparlatype/src/pt-progress-dialog.c:113 #, c-format msgid "Time remaining: %d:%02d" msgstr "A hátralévő idő: %d:%02d" #: libparlatype/src/pt-progress-dialog.c:242 msgid "Loading file…" msgstr "Fájl betöltése…" #: libparlatype/src/pt-waveloader.c:343 msgid "Failed to open temporary file." msgstr "Nem sikerült megnyitni az ideiglenes fájlt." #: libparlatype/src/pt-waveloader.c:356 msgid "Failed to setup GStreamer pipeline." msgstr "Nem sikerült beállítani a GStreamer csővezetéket." #: libparlatype/src/pt-waveloader.c:375 msgid "Failed to start GStreamer pipeline." msgstr "Nem sikerült elindítani a GStreamer csővezetéket." #: libparlatype/src/pt-waveviewer.c:1331 msgid "Follow cursor" msgstr "Kurzor nyomonkövetése" #: libparlatype/src/pt-waveviewer.c:1332 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:1348 msgid "Fixed cursor" msgstr "Rögzített kurzor" #: libparlatype/src/pt-waveviewer.c:1349 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:1363 msgid "Show ruler" msgstr "Vonalzó megjelenítése" #: libparlatype/src/pt-waveviewer.c:1364 msgid "Show the time scale with time marks" msgstr "Mutassa az időméretet időjelekkel" parlatype-1.6.2/libparlatype/po/id.po000066400000000000000000000142071353244124700175740ustar00rootroot00000000000000# 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: 2019-05-27 18:59+0200\n" "PO-Revision-Date: 2018-06-04 13:06+0000\n" "Last-Translator: Ari Setyo Wibowo \n" "Language-Team: Indonesian \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: id\n" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:499 #, c-format msgid "URI not valid: %s" msgstr "URI tidak benar: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:511 #, c-format msgid "File not found: %s" msgstr "Berkas tidak ditemukan: %s" #. 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:1430 libparlatype/src/pt-waveviewer-ruler.c:174 #: libparlatype/src/pt-waveviewer-ruler.c:228 #, 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:1437 #, 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:1444 #, 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:1461 #, 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:1468 #, 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:1475 #, 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:1488 libparlatype/src/pt-waveviewer-ruler.c:179 #: libparlatype/src/pt-waveviewer-ruler.c:230 #, 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:1495 #, 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:1502 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-player.c:1903 #, c-format msgid "Failed to load plugin “%s”." msgstr "" #: libparlatype/src/pt-progress-dialog.c:102 #, c-format msgid "Time remaining: 1 second" msgid_plural "Time remaining: %d seconds" msgstr[0] "" msgstr[1] "" #. Translators: this is a time with minutes #. and seconds, e.g. Time remaining: 3:20 #: libparlatype/src/pt-progress-dialog.c:113 #, c-format msgid "Time remaining: %d:%02d" msgstr "" #: libparlatype/src/pt-progress-dialog.c:242 msgid "Loading file…" msgstr "" #: libparlatype/src/pt-waveloader.c:343 msgid "Failed to open temporary file." msgstr "Gagal membuka file temporer." #: libparlatype/src/pt-waveloader.c:356 msgid "Failed to setup GStreamer pipeline." msgstr "Gagal menyiapkan GStreamer pipeline." #: libparlatype/src/pt-waveloader.c:375 msgid "Failed to start GStreamer pipeline." msgstr "Gagal memulai GStreamer pipeline." #: libparlatype/src/pt-waveviewer.c:1331 msgid "Follow cursor" msgstr "Ikuti kursor" #: libparlatype/src/pt-waveviewer.c:1332 msgid "Scroll automatically to the cursor’s position" msgstr "" #: libparlatype/src/pt-waveviewer.c:1348 msgid "Fixed cursor" msgstr "Kursor tetap" #: libparlatype/src/pt-waveviewer.c:1349 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:1363 msgid "Show ruler" msgstr "Tunjukkan penggaris" #: libparlatype/src/pt-waveviewer.c:1364 msgid "Show the time scale with time marks" msgstr "Tunjukkan skala waktu dengan tanda waktu" parlatype-1.6.2/libparlatype/po/it.po000066400000000000000000000142751353244124700176210ustar00rootroot00000000000000# 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: 2019-05-27 18:59+0200\n" "PO-Revision-Date: 2018-06-04 13:12+0000\n" "Last-Translator: Luca Ciavatta \n" "Language-Team: Italian \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: it\n" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:499 #, c-format msgid "URI not valid: %s" msgstr "URI non valido: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:511 #, c-format msgid "File not found: %s" msgstr "File non trovato: %s" #. 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:1430 libparlatype/src/pt-waveviewer-ruler.c:174 #: libparlatype/src/pt-waveviewer-ruler.c:228 #, 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:1437 #, 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:1444 #, 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:1461 #, 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:1468 #, 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:1475 #, 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:1488 libparlatype/src/pt-waveviewer-ruler.c:179 #: libparlatype/src/pt-waveviewer-ruler.c:230 #, 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:1495 #, 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:1502 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-player.c:1903 #, c-format msgid "Failed to load plugin “%s”." msgstr "" #: libparlatype/src/pt-progress-dialog.c:102 #, c-format msgid "Time remaining: 1 second" msgid_plural "Time remaining: %d seconds" msgstr[0] "" msgstr[1] "" #. Translators: this is a time with minutes #. and seconds, e.g. Time remaining: 3:20 #: libparlatype/src/pt-progress-dialog.c:113 #, c-format msgid "Time remaining: %d:%02d" msgstr "" #: libparlatype/src/pt-progress-dialog.c:242 msgid "Loading file…" msgstr "" #: libparlatype/src/pt-waveloader.c:343 msgid "Failed to open temporary file." msgstr "Impossibile aprire il file temporaneo." #: libparlatype/src/pt-waveloader.c:356 msgid "Failed to setup GStreamer pipeline." msgstr "Impossibile configurare la pipeline di GStreamer." #: libparlatype/src/pt-waveloader.c:375 msgid "Failed to start GStreamer pipeline." msgstr "Impossibile avviare la pipeline di GStreamer." #: libparlatype/src/pt-waveviewer.c:1331 msgid "Follow cursor" msgstr "Seguire il cursore" #: libparlatype/src/pt-waveviewer.c:1332 msgid "Scroll automatically to the cursor’s position" msgstr "" #: libparlatype/src/pt-waveviewer.c:1348 msgid "Fixed cursor" msgstr "Cursore fisso" #: libparlatype/src/pt-waveviewer.c:1349 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:1363 msgid "Show ruler" msgstr "Mostra righello" #: libparlatype/src/pt-waveviewer.c:1364 msgid "Show the time scale with time marks" msgstr "Mostra la scala di tempo con i marcatori temporali" parlatype-1.6.2/libparlatype/po/ja.po000066400000000000000000000145651353244124700176010ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 18:59+0200\n" "PO-Revision-Date: 2018-08-28 14:40+0000\n" "Last-Translator: Shinichirou Yamada " "\n" "Language-Team: Japanese \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: ja\n" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:499 #, c-format msgid "URI not valid: %s" msgstr "URI が無効です: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:511 #, c-format msgid "File not found: %s" msgstr "ファイルが見つかりません: %s" #. 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:1430 libparlatype/src/pt-waveviewer-ruler.c:174 #: libparlatype/src/pt-waveviewer-ruler.c:228 #, 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:1437 #, 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:1444 #, 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:1461 #, 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:1468 #, 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:1475 #, 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:1488 libparlatype/src/pt-waveviewer-ruler.c:179 #: libparlatype/src/pt-waveviewer-ruler.c:230 #, 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:1495 #, 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:1502 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-player.c:1903 #, c-format msgid "Failed to load plugin “%s”." msgstr "" #: libparlatype/src/pt-progress-dialog.c:102 #, c-format msgid "Time remaining: 1 second" msgid_plural "Time remaining: %d seconds" msgstr[0] "残り時間: %d 秒" #. Translators: this is a time with minutes #. and seconds, e.g. Time remaining: 3:20 #: libparlatype/src/pt-progress-dialog.c:113 #, c-format msgid "Time remaining: %d:%02d" msgstr "残り時間: %d:%02d" #: libparlatype/src/pt-progress-dialog.c:242 msgid "Loading file…" msgstr "" #: libparlatype/src/pt-waveloader.c:343 msgid "Failed to open temporary file." msgstr "一時ファイルを開けませんでした。" #: libparlatype/src/pt-waveloader.c:356 msgid "Failed to setup GStreamer pipeline." msgstr "GStreamer パイプラインのセットアップに失敗しました。" #: libparlatype/src/pt-waveloader.c:375 msgid "Failed to start GStreamer pipeline." msgstr "GStreamer パイプラインのスタートに失敗しました。" #: libparlatype/src/pt-waveviewer.c:1331 msgid "Follow cursor" msgstr "カーソルに追従する" #: libparlatype/src/pt-waveviewer.c:1332 msgid "Scroll automatically to the cursor’s position" msgstr "" #: libparlatype/src/pt-waveviewer.c:1348 msgid "Fixed cursor" msgstr "カーソルを固定する" #: libparlatype/src/pt-waveviewer.c:1349 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:1363 msgid "Show ruler" msgstr "ルーラーを表示する" #: libparlatype/src/pt-waveviewer.c:1364 msgid "Show the time scale with time marks" msgstr "タイムマークの付いたタイムスケールを表示する" parlatype-1.6.2/libparlatype/po/kab.po000066400000000000000000000140241353244124700177320ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 18:59+0200\n" "PO-Revision-Date: 2018-06-04 13:12+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Kabyle \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: kab\n" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:499 #, 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-player.c:511 #, c-format msgid "File not found: %s" msgstr "Ulac afaylu: %s" #. 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:1430 libparlatype/src/pt-waveviewer-ruler.c:174 #: libparlatype/src/pt-waveviewer-ruler.c:228 #, 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:1437 #, 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:1444 #, 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:1461 #, 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:1468 #, 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:1475 #, 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:1488 libparlatype/src/pt-waveviewer-ruler.c:179 #: libparlatype/src/pt-waveviewer-ruler.c:230 #, 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:1495 #, 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:1502 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-player.c:1903 #, c-format msgid "Failed to load plugin “%s”." msgstr "" #: libparlatype/src/pt-progress-dialog.c:102 #, c-format msgid "Time remaining: 1 second" msgid_plural "Time remaining: %d seconds" msgstr[0] "" msgstr[1] "" #. Translators: this is a time with minutes #. and seconds, e.g. Time remaining: 3:20 #: libparlatype/src/pt-progress-dialog.c:113 #, c-format msgid "Time remaining: %d:%02d" msgstr "" #: libparlatype/src/pt-progress-dialog.c:242 msgid "Loading file…" msgstr "" #: libparlatype/src/pt-waveloader.c:343 msgid "Failed to open temporary file." msgstr "Ur izmir ara ad d-islai afaylu askudan." #: libparlatype/src/pt-waveloader.c:356 msgid "Failed to setup GStreamer pipeline." msgstr "Ur izmir ara ad iswel ajeɛbub GStreamer." #: libparlatype/src/pt-waveloader.c:375 msgid "Failed to start GStreamer pipeline." msgstr "Ur izmir ara ad isenker ajeɛbub GStreamer." #: libparlatype/src/pt-waveviewer.c:1331 msgid "Follow cursor" msgstr "Ḍfer taḥnaccaṭ" #: libparlatype/src/pt-waveviewer.c:1332 msgid "Scroll automatically to the cursor’s position" msgstr "" #: libparlatype/src/pt-waveviewer.c:1348 msgid "Fixed cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1349 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:1363 msgid "Show ruler" msgstr "" #: libparlatype/src/pt-waveviewer.c:1364 msgid "Show the time scale with time marks" msgstr "" parlatype-1.6.2/libparlatype/po/ku.po000066400000000000000000000134401353244124700176150ustar00rootroot00000000000000# 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: 2019-05-27 18:59+0200\n" "PO-Revision-Date: 2018-06-04 13:09+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Kurdish \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: ku\n" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:499 #, c-format msgid "URI not valid: %s" msgstr "" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:511 #, c-format msgid "File not found: %s" 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. #: libparlatype/src/pt-player.c:1430 libparlatype/src/pt-waveviewer-ruler.c:174 #: libparlatype/src/pt-waveviewer-ruler.c:228 #, 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:1437 #, 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:1444 #, 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:1461 #, 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:1468 #, 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:1475 #, 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:1488 libparlatype/src/pt-waveviewer-ruler.c:179 #: libparlatype/src/pt-waveviewer-ruler.c:230 #, 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:1495 #, 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:1502 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-player.c:1903 #, c-format msgid "Failed to load plugin “%s”." msgstr "" #: libparlatype/src/pt-progress-dialog.c:102 #, c-format msgid "Time remaining: 1 second" msgid_plural "Time remaining: %d seconds" msgstr[0] "" msgstr[1] "" #. Translators: this is a time with minutes #. and seconds, e.g. Time remaining: 3:20 #: libparlatype/src/pt-progress-dialog.c:113 #, c-format msgid "Time remaining: %d:%02d" msgstr "" #: libparlatype/src/pt-progress-dialog.c:242 msgid "Loading file…" msgstr "" #: libparlatype/src/pt-waveloader.c:343 msgid "Failed to open temporary file." msgstr "" #: libparlatype/src/pt-waveloader.c:356 msgid "Failed to setup GStreamer pipeline." msgstr "" #: libparlatype/src/pt-waveloader.c:375 msgid "Failed to start GStreamer pipeline." msgstr "" #: libparlatype/src/pt-waveviewer.c:1331 msgid "Follow cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1332 msgid "Scroll automatically to the cursor’s position" msgstr "" #: libparlatype/src/pt-waveviewer.c:1348 msgid "Fixed cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1349 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:1363 msgid "Show ruler" msgstr "" #: libparlatype/src/pt-waveviewer.c:1364 msgid "Show the time scale with time marks" msgstr "" parlatype-1.6.2/libparlatype/po/lt.po000066400000000000000000000146221353244124700176200ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 18:59+0200\n" "PO-Revision-Date: 2019-03-13 21:43+0000\n" "Last-Translator: Moo \n" "Language-Team: Lithuanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: lt\n" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:499 #, c-format msgid "URI not valid: %s" msgstr "Neteisingas URI: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:511 #, c-format msgid "File not found: %s" msgstr "Failas nerastas: %s" #. 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:1430 libparlatype/src/pt-waveviewer-ruler.c:174 #: libparlatype/src/pt-waveviewer-ruler.c:228 #, 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:1437 #, 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:1444 #, 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:1461 #, 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:1468 #, 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:1475 #, 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:1488 libparlatype/src/pt-waveviewer-ruler.c:179 #: libparlatype/src/pt-waveviewer-ruler.c:230 #, 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:1495 #, 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:1502 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-player.c:1903 #, c-format msgid "Failed to load plugin “%s”." msgstr "Nepavyko įkelti įskiepio “%s”." #: libparlatype/src/pt-progress-dialog.c:102 #, c-format msgid "Time remaining: 1 second" msgid_plural "Time remaining: %d seconds" msgstr[0] "Liko: %d sekundė" msgstr[1] "Liko: %d sekundės" msgstr[2] "Liko: %d sekundžių" #. Translators: this is a time with minutes #. and seconds, e.g. Time remaining: 3:20 #: libparlatype/src/pt-progress-dialog.c:113 #, c-format msgid "Time remaining: %d:%02d" msgstr "Liko: %d:%02d" #: libparlatype/src/pt-progress-dialog.c:242 msgid "Loading file…" msgstr "Įkeliamas failas…" #: libparlatype/src/pt-waveloader.c:343 msgid "Failed to open temporary file." msgstr "Nepavyko atverti laikinojo failo." #: libparlatype/src/pt-waveloader.c:356 msgid "Failed to setup GStreamer pipeline." msgstr "Nepavyko nustatyti GStreamer komandų grandinės." #: libparlatype/src/pt-waveloader.c:375 msgid "Failed to start GStreamer pipeline." msgstr "Nepavyko paleisti GStreamer komandų grandinės." #: libparlatype/src/pt-waveviewer.c:1331 msgid "Follow cursor" msgstr "Sekti paskui žymeklį" #: libparlatype/src/pt-waveviewer.c:1332 msgid "Scroll automatically to the cursor’s position" msgstr "Automatiškai slinkti į žymeklio poziciją" #: libparlatype/src/pt-waveviewer.c:1348 msgid "Fixed cursor" msgstr "Fiksuotas žymeklis" #: libparlatype/src/pt-waveviewer.c:1349 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:1363 msgid "Show ruler" msgstr "Rodyti liniuotę" #: libparlatype/src/pt-waveviewer.c:1364 msgid "Show the time scale with time marks" msgstr "Rodyti laiko mastelį su laiko žymėmis" parlatype-1.6.2/libparlatype/po/lv.po000066400000000000000000000134221353244124700176170ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 18:59+0200\n" "PO-Revision-Date: 2017-01-17 21:20+0000\n" "Last-Translator: AMM \n" "Language-Team: Latvian \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 != 0 ? 1 : 2;\n" "X-Launchpad-Export-Date: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: lv\n" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:499 #, c-format msgid "URI not valid: %s" msgstr "" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:511 #, c-format msgid "File not found: %s" msgstr "Datne nav atrasta: %s" #. 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:1430 libparlatype/src/pt-waveviewer-ruler.c:174 #: libparlatype/src/pt-waveviewer-ruler.c:228 #, 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:1437 #, 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:1444 #, 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:1461 #, 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:1468 #, 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:1475 #, 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:1488 libparlatype/src/pt-waveviewer-ruler.c:179 #: libparlatype/src/pt-waveviewer-ruler.c:230 #, 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:1495 #, 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:1502 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "" #: libparlatype/src/pt-player.c:1903 #, c-format msgid "Failed to load plugin “%s”." msgstr "" #: libparlatype/src/pt-progress-dialog.c:102 #, c-format msgid "Time remaining: 1 second" msgid_plural "Time remaining: %d seconds" msgstr[0] "" msgstr[1] "" #. Translators: this is a time with minutes #. and seconds, e.g. Time remaining: 3:20 #: libparlatype/src/pt-progress-dialog.c:113 #, c-format msgid "Time remaining: %d:%02d" msgstr "" #: libparlatype/src/pt-progress-dialog.c:242 msgid "Loading file…" msgstr "" #: libparlatype/src/pt-waveloader.c:343 msgid "Failed to open temporary file." msgstr "Neizdevās atvērt pagaidu datni." #: libparlatype/src/pt-waveloader.c:356 msgid "Failed to setup GStreamer pipeline." msgstr "" #: libparlatype/src/pt-waveloader.c:375 msgid "Failed to start GStreamer pipeline." msgstr "" #: libparlatype/src/pt-waveviewer.c:1331 msgid "Follow cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1332 msgid "Scroll automatically to the cursor’s position" msgstr "" #: libparlatype/src/pt-waveviewer.c:1348 msgid "Fixed cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1349 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:1363 msgid "Show ruler" msgstr "" #: libparlatype/src/pt-waveviewer.c:1364 msgid "Show the time scale with time marks" msgstr "" parlatype-1.6.2/libparlatype/po/meson.build000066400000000000000000000000621353244124700207740ustar00rootroot00000000000000i18n.gettext(gettext_package_lib, preset: 'glib') parlatype-1.6.2/libparlatype/po/ms.po000066400000000000000000000135721353244124700176230ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 18:59+0200\n" "PO-Revision-Date: 2018-06-04 13:06+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Malay \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: ms\n" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:499 #, c-format msgid "URI not valid: %s" msgstr "" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:511 #, c-format msgid "File not found: %s" msgstr "Fail tidak ditemui: %s" #. 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:1430 libparlatype/src/pt-waveviewer-ruler.c:174 #: libparlatype/src/pt-waveviewer-ruler.c:228 #, 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:1437 #, 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:1444 #, 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:1461 #, 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:1468 #, 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:1475 #, 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:1488 libparlatype/src/pt-waveviewer-ruler.c:179 #: libparlatype/src/pt-waveviewer-ruler.c:230 #, 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:1495 #, 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:1502 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-player.c:1903 #, c-format msgid "Failed to load plugin “%s”." msgstr "" #: libparlatype/src/pt-progress-dialog.c:102 #, c-format msgid "Time remaining: 1 second" msgid_plural "Time remaining: %d seconds" msgstr[0] "" msgstr[1] "" #. Translators: this is a time with minutes #. and seconds, e.g. Time remaining: 3:20 #: libparlatype/src/pt-progress-dialog.c:113 #, c-format msgid "Time remaining: %d:%02d" msgstr "" #: libparlatype/src/pt-progress-dialog.c:242 msgid "Loading file…" msgstr "" #: libparlatype/src/pt-waveloader.c:343 msgid "Failed to open temporary file." msgstr "Gagal membuka fail sementarasementara." #: libparlatype/src/pt-waveloader.c:356 msgid "Failed to setup GStreamer pipeline." msgstr "Gagal memasang talian paip GStreamer." #: libparlatype/src/pt-waveloader.c:375 msgid "Failed to start GStreamer pipeline." msgstr "" #: libparlatype/src/pt-waveviewer.c:1331 msgid "Follow cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1332 msgid "Scroll automatically to the cursor’s position" msgstr "" #: libparlatype/src/pt-waveviewer.c:1348 msgid "Fixed cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1349 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:1363 msgid "Show ruler" msgstr "" #: libparlatype/src/pt-waveviewer.c:1364 msgid "Show the time scale with time marks" msgstr "" parlatype-1.6.2/libparlatype/po/nl.po000066400000000000000000000143011353244124700176040ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 18:59+0200\n" "PO-Revision-Date: 2017-06-26 09:37+0000\n" "Last-Translator: Heimen Stoffels \n" "Language-Team: Dutch \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: nl\n" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:499 #, c-format msgid "URI not valid: %s" msgstr "URI is ongeldig: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:511 #, c-format msgid "File not found: %s" msgstr "Bestand niet gevonden: %s" #. 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:1430 libparlatype/src/pt-waveviewer-ruler.c:174 #: libparlatype/src/pt-waveviewer-ruler.c:228 #, 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:1437 #, 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:1444 #, 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:1461 #, 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:1468 #, 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:1475 #, 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:1488 libparlatype/src/pt-waveviewer-ruler.c:179 #: libparlatype/src/pt-waveviewer-ruler.c:230 #, 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:1495 #, 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:1502 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-player.c:1903 #, c-format msgid "Failed to load plugin “%s”." msgstr "" #: libparlatype/src/pt-progress-dialog.c:102 #, c-format msgid "Time remaining: 1 second" msgid_plural "Time remaining: %d seconds" msgstr[0] "" msgstr[1] "" #. Translators: this is a time with minutes #. and seconds, e.g. Time remaining: 3:20 #: libparlatype/src/pt-progress-dialog.c:113 #, c-format msgid "Time remaining: %d:%02d" msgstr "" #: libparlatype/src/pt-progress-dialog.c:242 msgid "Loading file…" msgstr "" #: libparlatype/src/pt-waveloader.c:343 msgid "Failed to open temporary file." msgstr "Tijdelijk bestand openen is mislukt." #: libparlatype/src/pt-waveloader.c:356 msgid "Failed to setup GStreamer pipeline." msgstr "GStreamer-pipeline instellen is mislukt." #: libparlatype/src/pt-waveloader.c:375 msgid "Failed to start GStreamer pipeline." msgstr "GStreamer-pipeline starten is mislukt." #: libparlatype/src/pt-waveviewer.c:1331 msgid "Follow cursor" msgstr "Cursor volgen" #: libparlatype/src/pt-waveviewer.c:1332 msgid "Scroll automatically to the cursor’s position" msgstr "" #: libparlatype/src/pt-waveviewer.c:1348 msgid "Fixed cursor" msgstr "Vastgezette cursor" #: libparlatype/src/pt-waveviewer.c:1349 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:1363 msgid "Show ruler" msgstr "Liniaal weergeven" #: libparlatype/src/pt-waveviewer.c:1364 msgid "Show the time scale with time marks" msgstr "Tijdschaal weergeven met tijdmarkeringen" parlatype-1.6.2/libparlatype/po/pl.po000066400000000000000000000150321353244124700176100ustar00rootroot00000000000000# 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: 2019-05-27 18:59+0200\n" "PO-Revision-Date: 2019-02-11 20:58+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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: pl\n" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:499 #, c-format msgid "URI not valid: %s" msgstr "Adres URI jest nieprawidłowy: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:511 #, c-format msgid "File not found: %s" msgstr "Nie odnaleziono pliku: %s" #. 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:1430 libparlatype/src/pt-waveviewer-ruler.c:174 #: libparlatype/src/pt-waveviewer-ruler.c:228 #, 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:1437 #, 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:1444 #, 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:1461 #, 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:1468 #, 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:1475 #, 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:1488 libparlatype/src/pt-waveviewer-ruler.c:179 #: libparlatype/src/pt-waveviewer-ruler.c:230 #, 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:1495 #, 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:1502 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d∶%02d.%02d" #: libparlatype/src/pt-player.c:1903 #, c-format msgid "Failed to load plugin “%s”." msgstr "Wczytanie wtyczki „%s” się nie powiodło." #: libparlatype/src/pt-progress-dialog.c:102 #, c-format msgid "Time remaining: 1 second" msgid_plural "Time remaining: %d seconds" msgstr[0] "Pozostały czas: 1 sekunda" msgstr[1] "Pozostały czas: %d sekundy" msgstr[2] "Pozostały czas: %d sekund" #. Translators: this is a time with minutes #. and seconds, e.g. Time remaining: 3:20 #: libparlatype/src/pt-progress-dialog.c:113 #, c-format msgid "Time remaining: %d:%02d" msgstr "Pozostały czas: %d∶%02d" #: libparlatype/src/pt-progress-dialog.c:242 msgid "Loading file…" msgstr "Wczytywanie pliku…" #: libparlatype/src/pt-waveloader.c:343 msgid "Failed to open temporary file." msgstr "Otwarcie pliku tymczasowego się nie powiodło." #: libparlatype/src/pt-waveloader.c:356 msgid "Failed to setup GStreamer pipeline." msgstr "Konfiguracja potoku biblioteki GStreamer się nie powiodła." #: libparlatype/src/pt-waveloader.c:375 msgid "Failed to start GStreamer pipeline." msgstr "Rozpoczęcie potoku biblioteki GStreamer się nie powiodło." #: libparlatype/src/pt-waveviewer.c:1331 msgid "Follow cursor" msgstr "Podążanie za kursorem" #: libparlatype/src/pt-waveviewer.c:1332 msgid "Scroll automatically to the cursor’s position" msgstr "Automatyczne przewijanie do pozycji kursora" #: libparlatype/src/pt-waveviewer.c:1348 msgid "Fixed cursor" msgstr "Stały kursor" #: libparlatype/src/pt-waveviewer.c:1349 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:1363 msgid "Show ruler" msgstr "Wyświetlanie linijki" #: libparlatype/src/pt-waveviewer.c:1364 msgid "Show the time scale with time marks" msgstr "Wyświetlanie podziałki czasu ze znacznikami czasu" parlatype-1.6.2/libparlatype/po/pt.po000066400000000000000000000135071353244124700176250ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 18:59+0200\n" "PO-Revision-Date: 2018-06-04 13:06+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Portuguese \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: pt\n" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:499 #, c-format msgid "URI not valid: %s" msgstr "" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:511 #, c-format msgid "File not found: %s" msgstr "Ficheiro não encontrado: %s" #. 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:1430 libparlatype/src/pt-waveviewer-ruler.c:174 #: libparlatype/src/pt-waveviewer-ruler.c:228 #, 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:1437 #, 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:1444 #, 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:1461 #, 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:1468 #, 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:1475 #, 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:1488 libparlatype/src/pt-waveviewer-ruler.c:179 #: libparlatype/src/pt-waveviewer-ruler.c:230 #, 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:1495 #, 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:1502 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-player.c:1903 #, c-format msgid "Failed to load plugin “%s”." msgstr "" #: libparlatype/src/pt-progress-dialog.c:102 #, c-format msgid "Time remaining: 1 second" msgid_plural "Time remaining: %d seconds" msgstr[0] "" msgstr[1] "" #. Translators: this is a time with minutes #. and seconds, e.g. Time remaining: 3:20 #: libparlatype/src/pt-progress-dialog.c:113 #, c-format msgid "Time remaining: %d:%02d" msgstr "" #: libparlatype/src/pt-progress-dialog.c:242 msgid "Loading file…" msgstr "" #: libparlatype/src/pt-waveloader.c:343 msgid "Failed to open temporary file." msgstr "" #: libparlatype/src/pt-waveloader.c:356 msgid "Failed to setup GStreamer pipeline." msgstr "" #: libparlatype/src/pt-waveloader.c:375 msgid "Failed to start GStreamer pipeline." msgstr "" #: libparlatype/src/pt-waveviewer.c:1331 msgid "Follow cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1332 msgid "Scroll automatically to the cursor’s position" msgstr "" #: libparlatype/src/pt-waveviewer.c:1348 msgid "Fixed cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1349 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:1363 msgid "Show ruler" msgstr "" #: libparlatype/src/pt-waveviewer.c:1364 msgid "Show the time scale with time marks" msgstr "" parlatype-1.6.2/libparlatype/po/pt_BR.po000066400000000000000000000137701353244124700202120ustar00rootroot00000000000000# 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: FULL NAME \n" "POT-Creation-Date: 2019-05-27 18:59+0200\n" "PO-Revision-Date: 2019-03-28 11:45+0000\n" "Last-Translator: Rodrigo Macedo \n" "Language-Team: Brazilian Portuguese \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: pt_BR\n" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:499 #, c-format msgid "URI not valid: %s" msgstr "URI não válida: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:511 #, c-format msgid "File not found: %s" msgstr "Arquivo não encontrado: %s" #. 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:1430 libparlatype/src/pt-waveviewer-ruler.c:174 #: libparlatype/src/pt-waveviewer-ruler.c:228 #, 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:1437 #, 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:1444 #, 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:1461 #, 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:1468 #, 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:1475 #, 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:1488 libparlatype/src/pt-waveviewer-ruler.c:179 #: libparlatype/src/pt-waveviewer-ruler.c:230 #, 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:1495 #, 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:1502 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "" #: libparlatype/src/pt-player.c:1903 #, c-format msgid "Failed to load plugin “%s”." msgstr "Falha ao carrgar plugin \"%s\"." #: libparlatype/src/pt-progress-dialog.c:102 #, c-format msgid "Time remaining: 1 second" msgid_plural "Time remaining: %d seconds" msgstr[0] "Tempo restante: 1 segundo" msgstr[1] "Tempo restante: %d segundos" #. Translators: this is a time with minutes #. and seconds, e.g. Time remaining: 3:20 #: libparlatype/src/pt-progress-dialog.c:113 #, c-format msgid "Time remaining: %d:%02d" msgstr "Tempo restante: %d:%02d" #: libparlatype/src/pt-progress-dialog.c:242 msgid "Loading file…" msgstr "Carregando arquivo" #: libparlatype/src/pt-waveloader.c:343 msgid "Failed to open temporary file." msgstr "Falha ao abrir arquivo temporário" #: libparlatype/src/pt-waveloader.c:356 msgid "Failed to setup GStreamer pipeline." msgstr "" #: libparlatype/src/pt-waveloader.c:375 msgid "Failed to start GStreamer pipeline." msgstr "" #: libparlatype/src/pt-waveviewer.c:1331 msgid "Follow cursor" msgstr "Seguir o cursor" #: libparlatype/src/pt-waveviewer.c:1332 msgid "Scroll automatically to the cursor’s position" msgstr "" #: libparlatype/src/pt-waveviewer.c:1348 msgid "Fixed cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1349 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:1363 msgid "Show ruler" msgstr "" #: libparlatype/src/pt-waveviewer.c:1364 msgid "Show the time scale with time marks" msgstr "" parlatype-1.6.2/libparlatype/po/sk.po000066400000000000000000000133061353244124700176140ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 18:59+0200\n" "PO-Revision-Date: 2017-11-23 21:21+0000\n" "Last-Translator: nobody yet \n" "Language-Team: Slovak \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: sk\n" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:499 #, c-format msgid "URI not valid: %s" msgstr "" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:511 #, c-format msgid "File not found: %s" 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. #: libparlatype/src/pt-player.c:1430 libparlatype/src/pt-waveviewer-ruler.c:174 #: libparlatype/src/pt-waveviewer-ruler.c:228 #, 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:1437 #, 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:1444 #, 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:1461 #, 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:1468 #, 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:1475 #, 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:1488 libparlatype/src/pt-waveviewer-ruler.c:179 #: libparlatype/src/pt-waveviewer-ruler.c:230 #, 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:1495 #, 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:1502 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "" #: libparlatype/src/pt-player.c:1903 #, c-format msgid "Failed to load plugin “%s”." msgstr "" #: libparlatype/src/pt-progress-dialog.c:102 #, c-format msgid "Time remaining: 1 second" msgid_plural "Time remaining: %d seconds" msgstr[0] "" msgstr[1] "" #. Translators: this is a time with minutes #. and seconds, e.g. Time remaining: 3:20 #: libparlatype/src/pt-progress-dialog.c:113 #, c-format msgid "Time remaining: %d:%02d" msgstr "" #: libparlatype/src/pt-progress-dialog.c:242 msgid "Loading file…" msgstr "" #: libparlatype/src/pt-waveloader.c:343 msgid "Failed to open temporary file." msgstr "" #: libparlatype/src/pt-waveloader.c:356 msgid "Failed to setup GStreamer pipeline." msgstr "" #: libparlatype/src/pt-waveloader.c:375 msgid "Failed to start GStreamer pipeline." msgstr "" #: libparlatype/src/pt-waveviewer.c:1331 msgid "Follow cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1332 msgid "Scroll automatically to the cursor’s position" msgstr "" #: libparlatype/src/pt-waveviewer.c:1348 msgid "Fixed cursor" msgstr "" #: libparlatype/src/pt-waveviewer.c:1349 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:1363 msgid "Show ruler" msgstr "" #: libparlatype/src/pt-waveviewer.c:1364 msgid "Show the time scale with time marks" msgstr "" parlatype-1.6.2/libparlatype/po/sv.po000066400000000000000000000135631353244124700176340ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 18:59+0200\n" "PO-Revision-Date: 2017-11-20 20:40+0000\n" "Last-Translator: Tommy Brunn \n" "Language-Team: Swedish \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: sv\n" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:499 #, c-format msgid "URI not valid: %s" msgstr "Ogiltig URI: %s" #. Translators: %s is a detailed error message. #: libparlatype/src/pt-player.c:511 #, c-format msgid "File not found: %s" msgstr "Filen hittades inte: %s" #. 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:1430 libparlatype/src/pt-waveviewer-ruler.c:174 #: libparlatype/src/pt-waveviewer-ruler.c:228 #, 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:1437 #, 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:1444 #, 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:1461 #, 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:1468 #, 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:1475 #, 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:1488 libparlatype/src/pt-waveviewer-ruler.c:179 #: libparlatype/src/pt-waveviewer-ruler.c:230 #, 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:1495 #, 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:1502 #, c-format msgctxt "shortest time format, 2 digits" msgid "%d:%02d.%02d" msgstr "%d:%02d.%02d" #: libparlatype/src/pt-player.c:1903 #, c-format msgid "Failed to load plugin “%s”." msgstr "" #: libparlatype/src/pt-progress-dialog.c:102 #, c-format msgid "Time remaining: 1 second" msgid_plural "Time remaining: %d seconds" msgstr[0] "" msgstr[1] "" #. Translators: this is a time with minutes #. and seconds, e.g. Time remaining: 3:20 #: libparlatype/src/pt-progress-dialog.c:113 #, c-format msgid "Time remaining: %d:%02d" msgstr "" #: libparlatype/src/pt-progress-dialog.c:242 msgid "Loading file…" msgstr "" #: libparlatype/src/pt-waveloader.c:343 msgid "Failed to open temporary file." msgstr "Kunde ej öppna temporär fil" #: libparlatype/src/pt-waveloader.c:356 msgid "Failed to setup GStreamer pipeline." msgstr "" #: libparlatype/src/pt-waveloader.c:375 msgid "Failed to start GStreamer pipeline." msgstr "" #: libparlatype/src/pt-waveviewer.c:1331 msgid "Follow cursor" msgstr "Följ markör" #: libparlatype/src/pt-waveviewer.c:1332 msgid "Scroll automatically to the cursor’s position" msgstr "" #: libparlatype/src/pt-waveviewer.c:1348 msgid "Fixed cursor" msgstr "Fast pekare" #: libparlatype/src/pt-waveviewer.c:1349 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:1363 msgid "Show ruler" msgstr "" #: libparlatype/src/pt-waveviewer.c:1364 msgid "Show the time scale with time marks" msgstr "" parlatype-1.6.2/libparlatype/src/000077500000000000000000000000001353244124700170055ustar00rootroot00000000000000parlatype-1.6.2/libparlatype/src/libparlatype.map000066400000000000000000000000371353244124700221740ustar00rootroot00000000000000{ global: pt_*; local: *; }; parlatype-1.6.2/libparlatype/src/libparlatype.symbols000066400000000000000000000025471353244124700231170ustar00rootroot00000000000000pt_player_cancel 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_data pt_player_get_duration pt_player_get_duration_time_string pt_player_get_filename pt_player_get_forward pt_player_get_pause pt_player_get_permille pt_player_get_position pt_player_get_time_string pt_player_get_timestamp pt_player_get_timestamp_for_time pt_player_get_timestamp_position pt_player_get_type pt_player_get_uri pt_player_goto_timestamp pt_player_jump_back pt_player_jump_forward pt_player_jump_relative pt_player_jump_to_permille pt_player_jump_to_position pt_player_mute_volume pt_player_new pt_player_open_uri pt_player_open_uri_async pt_player_open_uri_finish 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_selection pt_player_set_speed pt_player_set_volume pt_player_string_is_timestamp pt_progress_dialog_get_type pt_progress_dialog_new pt_progress_dialog_set_progress pt_wavedata_copy pt_wavedata_free pt_wavedata_get_type pt_wavedata_new pt_waveloader_get_data pt_waveloader_get_duration pt_waveloader_get_type pt_waveloader_load_async pt_waveloader_load_finish pt_waveloader_new pt_waveviewer_get_follow_cursor pt_waveviewer_get_type pt_waveviewer_new pt_waveviewer_set_follow_cursor pt_waveviewer_set_wave parlatype-1.6.2/libparlatype/src/meson.build000066400000000000000000000042601353244124700211510ustar00rootroot00000000000000gresources = 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, 'pt-i18n.c', 'pt-i18n.h', 'pt-player.c', 'pt-progress-dialog.c', 'pt-wavedata.c', '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-selection.c', 'pt-waveviewer-selection.h', 'pt-waveviewer-waveform.c', 'pt-waveviewer-waveform.h', ] deps = [gtk, gmodule, gstreamer, gstreamer_audio, math] headers = [ 'pt-player.h', 'pt-progress-dialog.h', 'pt-wavedata.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: conf_inc, link_args: vflag, link_depends: mapfile, install: true, ) libparlatype_dep = declare_dependency( link_with: libparlatype, include_directories: conf_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-player.c', 'pt-progress-dialog.c', 'pt-wavedata.c', 'pt-waveloader.c', 'pt-waveviewer.c', ] 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 ) endif parlatype-1.6.2/libparlatype/src/pt-i18n.c000066400000000000000000000030411353244124700203470ustar00rootroot00000000000000/* 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 . */ #define GETTEXT_PACKAGE "libparlatype" #include /* 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(). */ 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-1.6.2/libparlatype/src/pt-i18n.h000066400000000000000000000015011353244124700203530ustar00rootroot00000000000000/* 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-1.6.2/libparlatype/src/pt-player.c000066400000000000000000002221361353244124700210740ustar00rootroot00000000000000/* 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 #define GETTEXT_PACKAGE "libparlatype" #include #include #include #include "pt-i18n.h" #include "pt-waveloader.h" #include "pt-waveviewer.h" #include "pt-player.h" struct _PtPlayerPrivate { GstElement *play; GstElement *scaletempo; GstElement *play_bin; GstElement *sphinx_bin; GstElement *audio_bin; GstElement *tee; GstPad *tee_playpad; GstPad *tee_sphinxpad; guint bus_watch_id; gint64 dur; gdouble speed; gdouble volume; 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; PtWaveloader *wl; PtWaveviewer *wv; }; enum { PROP_0, PROP_SPEED, 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 METADATA_POSITION "metadata::parlatype::position" #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) /** * SECTION: pt-player * @short_description: The GStreamer backend for Parlatype. * @stability: Unstable * @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, either with pt_player_open_uri_async() or * pt_player_open_uri(), the blocking version. * * The internal time unit in PtPlayer are milliseconds and for scale widgets there * is a scale from 0 to 1000. Use it to jump to a position or to update your widget. * * While playing PtPlayer emits these signals: * - end-of-stream: End of file reached, in the GUI you might want to jump * to the beginning, reset play button etc. * - error: A fatal error occured, the player is reset. There’s an error message. * * PtPlayer has two properties: * - speed: is a double from 0.5 to 1.5. 1.0 is normal playback, < 1.0 is slower, * > 1.0 is faster. Changing the "speed" property doesn’t change playback though. * Use the method instead. * - Volume is a double from 0 to 1. It can be set via the method or setting the "volume" property. */ /* -------------------------- 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 void pt_player_set_state_blocking (PtPlayer *player, GstState state) { g_assert (GST_IS_ELEMENT (player->priv->play)); gst_element_set_state (player->priv->play, state); /* 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) { /* Saves current position in milliseconds as metadata to file */ GError *error = NULL; GFile *file = NULL; GFileInfo *info; gint64 pos; gchar value[64]; if (!pt_player_query_position (player, &pos)) return; file = pt_player_get_file (player); if (!file) return; pos = pos / GST_MSECOND; 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 (file); g_object_unref (info); } static void metadata_get_position (PtPlayer *player) { /* Queries position stored in metadata from file. Sets position to that value or to 0 */ GError *error = NULL; GFile *file = NULL; GFileInfo *info; gchar *value = NULL; gint64 pos = 0; file = pt_player_get_file (player); if (!file) return; 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); g_object_unref (file); return; } 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"); } } /* Set either to position or 0 */ pt_player_jump_to_position (player, pos); g_object_unref (file); g_object_unref (info); } 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_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), "sphinx") != 0) break; 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 --------------------------------- */ static void propagate_progress_cb (PtWaveloader *wl, gdouble progress, PtPlayer *player) { g_signal_emit_by_name (player, "load-progress", progress); } static void load_cb (PtWaveloader *wl, GAsyncResult *res, gpointer *data) { GTask *task = (GTask *) data; PtPlayer *player = g_task_get_source_object (task); GError *error = NULL; if (pt_waveloader_load_finish (wl, res, &error)) { player->priv->dur = player->priv->segend = pt_waveloader_get_duration (player->priv->wl); player->priv->segstart = 0; /* setup message handler */ add_message_bus (player); pt_player_pause (player); /* Block until state changed */ gst_element_get_state ( player->priv->play, NULL, NULL, GST_CLOCK_TIME_NONE); metadata_get_position (player); g_task_return_boolean (task, TRUE); } else { g_clear_object (&wl); player->priv->wl = NULL; g_task_return_error (task, error); } g_object_unref (player->priv->c); g_object_unref (task); } /** * pt_player_open_uri_finish: * @player: a #PtPlayer * @result: the #GAsyncResult passed to your #GAsyncReadyCallback * @error: (nullable): a pointer to a NULL #GError, or NULL * * Gives the result of the async opening operation. A cancelled operation results * in an error, too. * * Return value: TRUE if successful, or FALSE with error set */ gboolean pt_player_open_uri_finish (PtPlayer *player, GAsyncResult *result, GError **error) { g_return_val_if_fail (g_task_is_valid (result, player), FALSE); return g_task_propagate_boolean (G_TASK (result), error); } /** * pt_player_open_uri_async: * @player: a #PtPlayer * @uri: the URI of the file * @callback: (scope async): a #GAsyncReadyCallback to call when the operation is complete * @user_data: (closure): user_data for callback * * 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 is an asynchronous operation, to get the result call * pt_player_open_uri_finish() in your callback. For the blocking version see * pt_player_open_uri(). * * While loading the file there is a #PtPlayer::load-progress signal emitted which stops before * reaching 100%. Don’t use it to determine whether the operation is finished. */ void pt_player_open_uri_async (PtPlayer *player, gchar *uri, GAsyncReadyCallback callback, gpointer user_data) { g_return_if_fail (PT_IS_PLAYER (player)); g_return_if_fail (uri != NULL); GTask *task; GFile *file; gchar *location = NULL; task = g_task_new (player, NULL, callback, user_data); /* 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; } /* 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); g_object_unref (file); g_free (location); g_clear_object (&player->priv->wl); player->priv->wl = pt_waveloader_new (uri); g_signal_connect (player->priv->wl, "progress", G_CALLBACK (propagate_progress_cb), player); player->priv->c = g_cancellable_new (); pt_waveloader_load_async (player->priv->wl, player->priv->c, (GAsyncReadyCallback) load_cb, task); } typedef struct { GAsyncResult *res; GMainLoop *loop; } SyncData; static void quit_loop_cb (PtPlayer *player, GAsyncResult *res, gpointer user_data) { SyncData *data = user_data; data->res = g_object_ref (res); g_main_loop_quit (data->loop); } /** * pt_player_open_uri: * @player: a #PtPlayer * @uri: the URI of the file * @error: (nullable): return location for an error, or NULL * * 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 and an error. For the asynchronous version see * pt_player_open_uri_async(). * * While loading the file there is a #PtPlayer::load-progress signal emitted. * However, it doesn’t emit 100%, the operation is finished when TRUE is returned. * * Return value: TRUE if successful, or FALSE with error set */ gboolean pt_player_open_uri (PtPlayer *player, gchar *uri, GError **error) { g_return_val_if_fail (PT_IS_PLAYER (player), FALSE); g_return_val_if_fail (uri != NULL, FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); gboolean result; SyncData data; GMainContext *context; context = g_main_context_new (); g_main_context_push_thread_default (context); data.loop = g_main_loop_new (context, FALSE); data.res = NULL; pt_player_open_uri_async (player, uri, (GAsyncReadyCallback) quit_loop_cb, &data); g_main_loop_run (data.loop); result = pt_player_open_uri_finish (player, data.res, error); g_main_context_unref (context); g_main_loop_unref (data.loop); g_object_unref (data.res); return result; } /** * pt_player_cancel: * @player: a #PtPlayer * * Cancels the file opening operation, which triggers an error message. */ void pt_player_cancel (PtPlayer *player) { g_cancellable_cancel (player->priv->c); } /* ------------------------- 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(). */ void pt_player_pause (PtPlayer *player) { g_return_if_fail (PT_IS_PLAYER (player)); gst_element_set_state (player->priv->play, GST_STATE_PAUSED); } /** * pt_player_pause_and_rewind: * @player: a #PtPlayer * * Like @pt_player_pause(), additionally rewinds the value of * #PtPlayer:pause in milliseconds. */ 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 * * Return value: time to rewind on pause in milliseconds */ 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 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 stream or selection. */ void pt_player_play (PtPlayer *player) { g_return_if_fail (PT_IS_PLAYER (player)); gint64 pos; gint64 start, end; gboolean selection; 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; 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); } /** * pt_player_play_pause: * @player: a #PtPlayer * * Toggles between playback and pause, rewinds on pause. */ 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: /* fall through */ case GST_STATE_PAUSED: pt_player_play (player); break; case GST_STATE_PLAYING: pt_player_pause_and_rewind (player); case GST_STATE_VOID_PENDING: /* fall through */ case GST_STATE_READY: /* don’t know what to do */ ; } g_signal_emit_by_name (player, "play-toggled"); } /** * 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. */ 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. */ 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 * * Return value: TRUE if there is a selection */ 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); } /** * pt_player_rewind: * @player: a #PtPlayer * @speed: the speed * * Rewinds at the given speed. @speed accepts positive as well as negative * values and normalizes them to play backwards. * * Note that depending on the file/stream format this works more * or less good. */ void pt_player_rewind (PtPlayer *player, gdouble speed) { g_return_if_fail (PT_IS_PLAYER (player)); g_return_if_fail (speed != 0); gint64 pos; if (!pt_player_query_position (player, &pos)) return; if (speed > 0) speed = speed * -1; gst_element_seek ( player->priv->play, speed, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_TRICKMODE, GST_SEEK_TYPE_SET, player->priv->segstart, GST_SEEK_TYPE_SET, pos); /* Block until state changed */ gst_element_get_state ( player->priv->play, NULL, NULL, GST_CLOCK_TIME_NONE); pt_player_play (player); } /** * pt_player_fast_forward: * @player: a #PtPlayer * @speed: the speed * * Play fast forward at the given speed. */ void pt_player_fast_forward (PtPlayer *player, gdouble speed) { g_return_if_fail (PT_IS_PLAYER (player)); g_return_if_fail (speed > 0); gint64 pos; if (!pt_player_query_position (player, &pos)) return; gst_element_seek ( player->priv->play, speed, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_TRICKMODE, GST_SEEK_TYPE_SET, pos, GST_SEEK_TYPE_SET, player->priv->segend); /* Block until state changed */ gst_element_get_state ( player->priv->play, NULL, NULL, GST_CLOCK_TIME_NONE); pt_player_play (player); } /* -------------------- 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). */ 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. */ 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. */ 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 * * Return value: time to jump back in milliseconds */ 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 * * Return value: time to jump forward in milliseconds */ 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. */ 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 > 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_jump_to_permille: * @player: a #PtPlayer * @permille: scale position between 0 and 1000 * * This is used for scale widgets. Start of stream is at 0, end of stream is * at 1000. This will jump to the given position. If your widget uses a different * scale, it’s up to you to convert it to 1/1000. Values beyond 1000 are not * allowed, values outside the selection are ignored. */ void pt_player_jump_to_permille (PtPlayer *player, guint permille) { g_return_if_fail (PT_IS_PLAYER (player)); g_return_if_fail (permille <= 1000); gint64 new; new = player->priv->dur * (gint64) permille / 1000; if (new > player->priv->segend || new < player->priv->segstart) return; pt_player_seek (player, new); } /** * pt_player_get_permille: * @player: a #PtPlayer * * This is used for scale widgets. If the scale has to synchronize with the * current position in stream, this gives the position on a scale between 0 and * 1000. * * Failure in querying the position returns -1. * * Return value: a scale position between 0 and 1000 or -1 on failure */ gint pt_player_get_permille (PtPlayer *player) { g_return_val_if_fail (PT_IS_PLAYER (player), -1); gint64 pos; if (!pt_player_query_position (player, &pos)) return -1; return (gfloat) pos / (gfloat) player->priv->dur * 1000; } /** * 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. * * Note: If you want to change the speed during playback, you have to use this * method. Changing the "speed" property of PtPlayer, will take effect only * later. */ 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; if (!pt_player_query_position (player, &pos)) return; player->priv->speed = speed; g_object_notify_by_pspec (G_OBJECT (player), obj_properties[PROP_SPEED]); pt_player_seek (player, pos); } /** * 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. */ 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); gst_stream_volume_set_volume (GST_STREAM_VOLUME (player->priv->play), GST_STREAM_VOLUME_FORMAT_CUBIC, volume); player->priv->volume = volume; g_object_notify_by_pspec (G_OBJECT (player), obj_properties[PROP_VOLUME]); } /** * pt_player_mute_volume: * @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. */ void pt_player_mute_volume (PtPlayer *player, gboolean mute) { g_return_if_fail (PT_IS_PLAYER (player)); gst_stream_volume_set_mute (GST_STREAM_VOLUME (player->priv->play), mute); } /** * pt_player_get_position: * @player: a #PtPlayer * * Returns the current position in stream. * * Return value: position in milliseconds or -1 on failure */ 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 */ 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); } /* ------------------------- Waveform stuff --------------------------------- */ /** * pt_player_get_data: * @player: a #PtPlayer * @pps: the requested pixel per second ratio * * Returns wave data needed for visual representation as raw data. The * requested resolution is given as pixel per seconds, e.g. 100 means one second * is represented by 100 samples, is 100 pixels wide. The returned resolution * doesn’t have to be necessarily exactly the requested resolution, it might be * a bit differnt, depending on the bit rate. * * Return value: (transfer full): the #PtWavedata */ PtWavedata* pt_player_get_data (PtPlayer *player, gint pps) { return pt_waveloader_get_data (player->priv->wl, pps); } /* --------------------- 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. */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 void pt_player_init (PtPlayer *player) { gst_init (NULL, NULL); player->priv = pt_player_get_instance_private (player); player->priv->play = NULL; player->priv->timestamp_precision = PT_PRECISION_SECOND_10TH; player->priv->timestamp_fixed = FALSE; player->priv->wv = NULL; player->sphinx = NULL; player->priv->scaletempo = NULL; player->priv->play_bin = NULL; player->priv->sphinx_bin = NULL; } static gboolean notify_volume_idle_cb (PtPlayer *player) { gdouble vol; vol = gst_stream_volume_get_volume (GST_STREAM_VOLUME (player->priv->play), 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 GstElement* make_element (gchar *factoryname, gchar *name, GError **error) { GstElement *result; result = gst_element_factory_make (factoryname, name); if (!result) g_set_error (error, GST_CORE_ERROR, GST_CORE_ERROR_MISSING_PLUGIN, _("Failed to load plugin “%s”."), factoryname); return result; } #define PROPAGATE_ERROR_NULL \ if (earlier_error != NULL) {\ g_propagate_error (error, earlier_error);\ return NULL;\ } #define PROPAGATE_ERROR_FALSE \ if (earlier_error != NULL) {\ g_propagate_error (error, earlier_error);\ return FALSE;\ } #ifdef HAVE_ASR static GstElement* create_sphinx_bin (PtPlayer *player, GError **error) { GError *earlier_error = NULL; /* Create gstreamer elements */ GstElement *queue; GstElement *audioconvert; GstElement *audioresample; GstElement *fakesink; player->sphinx = G_OBJECT (make_element ("parlasphinx", "sphinx", &earlier_error)); /* defined error propagation; skipping any cleanup */ PROPAGATE_ERROR_NULL queue = make_element ("queue", "sphinx_queue", &earlier_error); PROPAGATE_ERROR_NULL audioconvert = make_element ("audioconvert", "audioconvert", &earlier_error); PROPAGATE_ERROR_NULL audioresample = make_element ("audioresample", "audioresample", &earlier_error); PROPAGATE_ERROR_NULL fakesink = make_element ("fakesink", "fakesink", &earlier_error); PROPAGATE_ERROR_NULL /* create audio output */ GstElement *audio = gst_bin_new ("sphinx-audiobin"); gst_bin_add_many (GST_BIN (audio), queue, audioconvert, audioresample, GST_ELEMENT (player->sphinx), fakesink, NULL); gst_element_link_many (queue, audioconvert, audioresample, GST_ELEMENT (player->sphinx), fakesink, NULL); /* create ghost pad for audiosink */ GstPad *audiopad = gst_element_get_static_pad (queue, "sink"); gst_element_add_pad (audio, gst_ghost_pad_new ("sink", audiopad)); gst_object_unref (GST_OBJECT (audiopad)); return audio; } #endif static GstElement* create_play_bin (PtPlayer *player, GError **error) { GError *earlier_error = NULL; /* Create gstreamer elements */ GstElement *capsfilter; GstElement *audiosink; GstElement *queue; capsfilter = make_element ("capsfilter", "audiofilter", &earlier_error); /* defined error propagation; skipping any cleanup */ PROPAGATE_ERROR_NULL audiosink = make_element ("autoaudiosink", "audiosink", &earlier_error); PROPAGATE_ERROR_NULL queue = make_element ("queue", "player_queue", &earlier_error); PROPAGATE_ERROR_NULL GstElement *audio = gst_bin_new ("player-audiobin"); gst_bin_add_many (GST_BIN (audio), queue, capsfilter, audiosink, NULL); gst_element_link_many (queue, capsfilter, audiosink, NULL); /* create ghost pad for audiosink */ GstPad *audiopad = gst_element_get_static_pad (queue, "sink"); gst_element_add_pad (audio, gst_ghost_pad_new ("sink", audiopad)); gst_object_unref (GST_OBJECT (audiopad)); return audio; } /* .---------. .-------------------------------------------------------------------------. | playbin | | audio_bin | | | | .------. .--------------------------------------------------------. | '---,-----' | | tee | | play_bin | | | | | | | .--------. .-------------. .---------------. | | | | | | | | queue | | capsfilter | | autoaudiosink | | | '-------> sink src-> sink src -> sink src -> sink | | | audio-sink | | | | '--------' '-------------' '---------------' | | property | | | '--------------------------------------------------------' | | | | | | | | .--------------------------------------------------------. | | | | | sphinx_bin | | | | | | .--------. .----------. | | | | | | | queue | (audioconvert | fakesink | | | | | src-> sink src -> ... audioresample ... -> sink | | | | | | | '--------' pocketsphinx) '----------' | | | '------' '--------------------------------------------------------' | | | '-------------------------------------------------------------------------' Note 1: audio_bin is needed. If the audio-sink property of playbin is set to the tee element, there is an internal data stream error. Note 2: It doesn’t work if play_bin or sphinx_bin are added to audio_bin but are not linked! Either link it or remove it from bin! Note 3: The original intent was to dynamically switch the tee element to either playback or ASR. Rethink this design, maybe tee element can be completely omitted. On the other hand, maybe they could be somehow synced to have audio and recognition in real time. */ static void link_tee (GstPad *tee_srcpad, GstElement *sink_bin) { GstPad *sinkpad; GstPadLinkReturn r; sinkpad = gst_element_get_static_pad (sink_bin, "sink"); g_assert_nonnull (sinkpad); r = gst_pad_link (tee_srcpad, sinkpad); g_assert (r == GST_PAD_LINK_OK); gst_object_unref (sinkpad); } static gboolean pt_player_setup_pipeline (PtPlayer *player, GError **error) { GError *earlier_error = NULL; player->priv->play = make_element ("playbin", "play", &earlier_error); PROPAGATE_ERROR_FALSE player->priv->play_bin = create_play_bin (player, &earlier_error); PROPAGATE_ERROR_FALSE #ifdef HAVE_ASR player->priv->sphinx_bin = create_sphinx_bin (player, &earlier_error); PROPAGATE_ERROR_FALSE #endif player->priv->scaletempo = make_element ("scaletempo", "tempo", &earlier_error); PROPAGATE_ERROR_FALSE player->priv->tee = make_element ("tee", "tee", &earlier_error); PROPAGATE_ERROR_FALSE player->priv->tee_playpad = gst_element_get_request_pad (player->priv->tee, "src_%u"); player->priv->tee_sphinxpad = gst_element_get_request_pad (player->priv->tee, "src_%u"); player->priv->audio_bin = gst_bin_new ("audiobin"); gst_bin_add (GST_BIN (player->priv->audio_bin), player->priv->tee); /* create ghost pad for audiosink */ GstPad *audiopad = gst_element_get_static_pad (player->priv->tee, "sink"); gst_element_add_pad (player->priv->audio_bin, gst_ghost_pad_new ("sink", audiopad)); gst_object_unref (GST_OBJECT (audiopad)); g_object_set (G_OBJECT (player->priv->play), "audio-sink", player->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 (player->priv->play), "notify::volume", G_CALLBACK (vol_changed), player); return TRUE; } static void remove_element (GstBin *parent, gchar *child_name) { GstElement *child; child = gst_bin_get_by_name (parent, child_name); if (!child) return; /* removing dereferences removed element, we want to keep it */ gst_object_ref (child); gst_bin_remove (parent, child); } static void add_element (GstBin *parent, GstElement *child, GstPad *srcpad) { GstElement *cmp; gchar *child_name; child_name = gst_element_get_name (child); cmp = gst_bin_get_by_name (parent, child_name); g_free (child_name); if (cmp) { gst_object_unref (cmp); /* element is already in bin */ return; } gst_bin_add (parent, child); link_tee (srcpad, child); } /** * pt_player_setup_sphinx: * @player: a #PtPlayer * @error: (nullable): return location for an error, or NULL * * Setup the GStreamer pipeline for automatic speech recognition using * CMU sphinx. This loads resources like language model and dictionary and * might take a few seconds. * There is no audio output in this mode. Connect to the * #PtPlayer::asr-hypothesis and/or #PtPlayer::asr-final signal to get * the results. Start recognition with pt_player_play(). * * Return value: TRUE on success, FALSE if the pipeline could not be set up */ gboolean pt_player_setup_sphinx (PtPlayer *player, GError **error) { GError *earlier_error = NULL; if (!player->priv->play) pt_player_setup_pipeline (player, &earlier_error); PROPAGATE_ERROR_FALSE gint pos; pos = pt_player_get_position (player); pt_player_set_state_blocking (player, GST_STATE_NULL); remove_element (GST_BIN (player->priv->audio_bin), "player-audiobin"); add_element (GST_BIN (player->priv->audio_bin), player->priv->sphinx_bin, player->priv->tee_sphinxpad); /* setting the "audio-filter" property unrefs the previous audio-filter! */ gst_object_ref (player->priv->scaletempo); g_object_set (player->priv->play, "audio-filter", NULL, NULL); pt_player_set_state_blocking (player, GST_STATE_PAUSED); pt_player_jump_to_position (player, pos); return TRUE; } /** * pt_player_setup_player: * @player: a #PtPlayer * @error: (nullable): return location for an error, or NULL * * Setup the GStreamer pipeline for playback. This or pt_player_setup_sphinx() * must be called first on a new PtPlayer object. It’s a programmer’s error to * do anything with the #PtPlayer before calling the setup function. * * Return value: TRUE on success, FALSE if the pipeline could not be set up */ gboolean pt_player_setup_player (PtPlayer *player, GError **error) { GError *earlier_error = NULL; if (!player->priv->play) pt_player_setup_pipeline (player, &earlier_error); PROPAGATE_ERROR_FALSE gint pos; pos = pt_player_get_position (player); /* Before removing and adding elements, set state to NULL to be on the safe side. Without changing volume didn’t work anymore after switching from playback setup to ASR setup and back again. */ pt_player_set_state_blocking (player, GST_STATE_NULL); remove_element (GST_BIN (player->priv->audio_bin), "sphinx-audiobin"); add_element (GST_BIN (player->priv->audio_bin), player->priv->play_bin, player->priv->tee_playpad); g_object_set (G_OBJECT (player->priv->play), "audio-filter", player->priv->scaletempo, NULL); pt_player_set_state_blocking (player, GST_STATE_PAUSED); pt_player_jump_to_position (player, pos); return TRUE; } static void pt_player_dispose (GObject *object) { PtPlayer *player; player = PT_PLAYER (object); if (player->priv->play) { /* remember position */ metadata_save_position (player); gst_element_set_state (player->priv->play, GST_STATE_NULL); #ifdef HAVE_ASR /* Add all possible elements because elements without a parent won't be destroyed. */ add_element (GST_BIN (player->priv->audio_bin), player->priv->play_bin, player->priv->tee_playpad); add_element (GST_BIN (player->priv->audio_bin), player->priv->sphinx_bin, player->priv->tee_sphinxpad); #endif gst_object_unref (GST_OBJECT (player->priv->play)); player->priv->play = NULL; gst_object_unref (GST_OBJECT (player->priv->tee_playpad)); gst_object_unref (GST_OBJECT (player->priv->tee_sphinxpad)); } g_clear_object (&player->priv->wl); 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; player = PT_PLAYER (object); gdouble tmp; const gchar *tmpchar; switch (property_id) { case PROP_SPEED: player->priv->speed = g_value_get_double (value); break; case PROP_VOLUME: tmp = g_value_get_double (value); if (player->priv->play) gst_stream_volume_set_volume (GST_STREAM_VOLUME (player->priv->play), GST_STREAM_VOLUME_FORMAT_CUBIC, tmp); player->priv->volume = tmp; 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; 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, player->priv->volume); 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_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::load-progress: * @player: the player 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_PLAYER, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__DOUBLE, G_TYPE_NONE, 1, G_TYPE_DOUBLE); /** * 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. */ 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, an emitted hypothesis replaces the * former hypothesis and is finalized via the #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. */ 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: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. You have to set it up for playback with * pt_player_setup_player() before doing anything else. * * After use g_object_unref() it. * * Return value: (transfer full): a new pt_player */ PtPlayer * pt_player_new (void) { _pt_i18n_init (); return g_object_new (PT_TYPE_PLAYER, NULL); } parlatype-1.6.2/libparlatype/src/pt-player.h000066400000000000000000000120141353244124700210710ustar00rootroot00000000000000/* 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 #include #include "pt-wavedata.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; GObject *sphinx; /*< private > */ PtPlayerPrivate *priv; }; struct _PtPlayerClass { GObjectClass parent_class; }; /** * 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; PtWavedata* pt_player_get_data (PtPlayer *player, gint pps); 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_finish (PtPlayer *player, GAsyncResult *result, GError **error); void pt_player_open_uri_async (PtPlayer *player, gchar *uri, GAsyncReadyCallback callback, gpointer user_data); gboolean pt_player_open_uri (PtPlayer *player, gchar *uri, GError **error); void pt_player_cancel (PtPlayer *player); 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_jump_to_permille (PtPlayer *player, guint permille); gint pt_player_get_permille (PtPlayer *player); void pt_player_set_speed (PtPlayer *player, gdouble speed); void pt_player_set_volume (PtPlayer *player, gdouble volume); void pt_player_mute_volume (PtPlayer *player, gboolean mute); void pt_player_rewind (PtPlayer *player, gdouble speed); void pt_player_fast_forward (PtPlayer *player, gdouble speed); 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); gboolean pt_player_setup_player (PtPlayer *player, GError **error); gboolean pt_player_setup_sphinx (PtPlayer *player, GError **error); PtPlayer* pt_player_new (void); G_END_DECLS #endif parlatype-1.6.2/libparlatype/src/pt-progress-dialog.c000066400000000000000000000157211353244124700227010ustar00rootroot00000000000000/* Copyright (C) 2016, 2017 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 . */ #include "config.h" #include /* ceil */ #include #define GETTEXT_PACKAGE "libparlatype" #include #include "pt-progress-dialog.h" struct _PtProgressDialogPrivate { GtkWidget *progressbar; GTimer *timer; }; G_DEFINE_TYPE_WITH_PRIVATE (PtProgressDialog, pt_progress_dialog, GTK_TYPE_MESSAGE_DIALOG) /** * SECTION: pt-progress-dialog * @short_description: Progress dialog while loading wave data. * @stability: Unstable * @include: parlatype/pt-progress-dialog.h * * PtProgressDialog is a ready to use dialog, intended to show progress while * loading wave data. Note, that it is supposed to be shown via * gtk_widget_show_all() and loading wave data should be done asynchronously. * Using the synchronous version the dialog will not show up. * * Assuming you have set up a PtPlayer *player, typical usage would be: * |[ * static void * progress_response_cb (GtkWidget *dialog, * gint response, * gpointer *user_data) * { * PtPlayer *player = (PtPlayer *) user_data; * * if (response == GTK_RESPONSE_CANCEL) * pt_player_cancel (player); * } * * ... * * static void * open_cb (PtPlayer *player, * GAsyncResult *res, * gpointer *user_data) * { * PtProgressDialog *dlg = (PtProgressDialog *) user_data; * gtk_widget_destroy (GTK_WIDGET (dlg)); * ... * } * * ... * * progress_dlg = GTK_WIDGET (pt_progress_dialog_new (GTK_WINDOW (parent))); * * g_signal_connect (progress_dlg, * "response", * G_CALLBACK (progress_response_cb), * player); * * g_signal_connect_swapped (player, * "load-progress", * G_CALLBACK (pt_progress_dialog_set_progress), * PT_PROGRESS_DIALOG (progress_dlg)); * * gtk_widget_show_all (win->priv->progress_dlg); * pt_player_open_uri_async (player, * uri, * (GAsyncReadyCallback) open_cb, * progress_dlg); * * ]| */ static gchar* format_time_string (gint seconds) { gchar *result; if (seconds <= 60) { result = g_strdup_printf ( g_dngettext (GETTEXT_PACKAGE, "Time remaining: 1 second", "Time remaining: %d seconds", seconds), seconds); return result; } if (seconds > 60) { result = g_strdup_printf ( /* Translators: this is a time with minutes and seconds, e.g. Time remaining: 3:20 */ _("Time remaining: %d:%02d"), seconds / 60, seconds % 60); return result; } g_assert_not_reached (); } /** * pt_progress_dialog_set_progress: * @dlg: the dialog * @progress: the new value for the progress bar, ranging from 0.0 to 1.0 * * Sets the progress bar to the new value. */ void pt_progress_dialog_set_progress (PtProgressDialog *dlg, gdouble progress) { g_return_if_fail (PT_IS_PROGRESS_DIALOG (dlg)); g_return_if_fail (progress >= 0 && progress <= 1); gdouble elapsed; /* seconds */ gint remaining; /* seconds */ gchar *message; elapsed = g_timer_elapsed (dlg->priv->timer, NULL); remaining = ceil ((elapsed / progress) * (100 - (progress * 100)) / 100); message = format_time_string (remaining); gtk_progress_bar_set_fraction ( GTK_PROGRESS_BAR (dlg->priv->progressbar), progress); gtk_progress_bar_set_text ( GTK_PROGRESS_BAR (dlg->priv->progressbar), message); g_free (message); } static void pt_progress_dialog_realize (GtkWidget *widget) { GTK_WIDGET_CLASS (pt_progress_dialog_parent_class)->realize (widget); /* Give the dialog a fixed width, so that the size doesn’t change when the count jumps from 10 to 9. Probably it isn’t exact because depending on plural forms of the current locale the widest string might be another one. */ PtProgressDialog *dlg = PT_PROGRESS_DIALOG (widget); gchar *test_message; GtkRequisition natural_size; test_message = format_time_string (60); gtk_progress_bar_set_text ( GTK_PROGRESS_BAR (dlg->priv->progressbar), test_message); gtk_widget_get_preferred_size ( GTK_WIDGET (dlg), NULL, &natural_size); gtk_widget_set_size_request ( GTK_WIDGET (dlg), natural_size.width + 10, /* +10px safety padding */ -1); g_free (test_message); } static void pt_progress_dialog_dispose (GObject *object) { PtProgressDialog *dlg = PT_PROGRESS_DIALOG (object); if (dlg->priv->timer) { g_timer_destroy (dlg->priv->timer); dlg->priv->timer = NULL; } G_OBJECT_CLASS (pt_progress_dialog_parent_class)->dispose (object); } static void pt_progress_dialog_init (PtProgressDialog *dlg) { dlg->priv = pt_progress_dialog_get_instance_private (dlg); GtkWidget *content; dlg->priv->timer = g_timer_new (); dlg->priv->progressbar = gtk_progress_bar_new (); gtk_progress_bar_set_show_text ( GTK_PROGRESS_BAR (dlg->priv->progressbar), TRUE); content = gtk_message_dialog_get_message_area (GTK_MESSAGE_DIALOG (dlg)); gtk_container_add (GTK_CONTAINER (content), dlg->priv->progressbar); } static void pt_progress_dialog_class_init (PtProgressDialogClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gobject_class->dispose = pt_progress_dialog_dispose; widget_class->realize = pt_progress_dialog_realize; } /** * pt_progress_dialog_new: * @win: (nullable): parent window, NULL is allowed, but discouraged * * A #GtkMessageDialog with a label "Loading file...", a progress bar and a * cancel button. * * After use gtk_widget_destroy() it. * * Return value: (transfer none): a new #PtProgressDialog */ /* Note on return value: There is a transfer but memory management is done by the user with gtk_widget_destroy() and not automatically by the binding. */ PtProgressDialog * pt_progress_dialog_new (GtkWindow *win) { return g_object_new ( PT_TYPE_PROGRESS_DIALOG, "buttons", GTK_BUTTONS_CANCEL, "message_type", GTK_MESSAGE_OTHER, "text", _("Loading file…"), "modal", TRUE, "transient-for", win, "image", NULL, /* needed for Ubuntu only, property exists on vanilla GTK+ including 3.22, but is not used, Ubuntu’s GTK+ patches use it */ NULL); } parlatype-1.6.2/libparlatype/src/pt-progress-dialog.h000066400000000000000000000034071353244124700227040ustar00rootroot00000000000000/* 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_PROGRESS_DIALOG_H #define PT_PROGRESS_DIALOG_H #include G_BEGIN_DECLS #define PT_TYPE_PROGRESS_DIALOG (pt_progress_dialog_get_type()) #define PT_PROGRESS_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PT_TYPE_PROGRESS_DIALOG, PtProgressDialog)) #define PT_IS_PROGRESS_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PT_TYPE_PROGRESS_DIALOG)) typedef struct _PtProgressDialog PtProgressDialog; typedef struct _PtProgressDialogClass PtProgressDialogClass; typedef struct _PtProgressDialogPrivate PtProgressDialogPrivate; /** * PtProgressDialog: * * The #PtProgressDialog contains only private fields and should not be directly accessed. */ struct _PtProgressDialog { GtkMessageDialog dialog; /*< private > */ PtProgressDialogPrivate *priv; }; struct _PtProgressDialogClass { GtkMessageDialogClass parent_class; }; GType pt_progress_dialog_get_type (void) G_GNUC_CONST; void pt_progress_dialog_set_progress (PtProgressDialog *dlg, gdouble progress); PtProgressDialog *pt_progress_dialog_new (GtkWindow *win); G_END_DECLS #endif parlatype-1.6.2/libparlatype/src/pt-wavedata.c000066400000000000000000000064471353244124700214010ustar00rootroot00000000000000/* 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 #include "pt-wavedata.h" /** * SECTION: pt-wavedata * @short_description: A boxed type with wave data. * @stability: Unstable * @include: parlatype/pt-wavedata.h * * Contains all information needed to show a wave form. It’s produced by * #PtPlayer or #PtWaveloader. Pass it to #PtWaveviewer to visualize the wave. * #PtWaveviewer copies the data, you can free it immediately with pt_wavedata_free(). * * There is no need to access the struct members. * * Assuming you have set up a PtPlayer *player, typical usage would be: * |[ * ... * PtWavedata *data; * data = pt_player_get_data (player, 100); * pt_waveviewer_set_wave (PT_WAVEVIEWER (waveviewer), data); * pt_wavedata_free (data); * ... * ]| */ G_DEFINE_BOXED_TYPE (PtWavedata, pt_wavedata, pt_wavedata_copy, pt_wavedata_free); /** * pt_wavedata_copy: (skip) * @data: the object to copy * * Creates a copy of @data. * * Return value: (transfer full) (nullable): a new #PtWavedata, free after use with pt_wavedata_free() */ PtWavedata* pt_wavedata_copy (PtWavedata *data) { PtWavedata *new; new = g_new0 (PtWavedata, 1); if (!(new->array = g_try_malloc (sizeof (gfloat) * data->length))) { g_free (new); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "Copying wavedata failed"); return NULL; } memcpy (new->array, data->array, sizeof (gfloat) * new->length); new->length = data->length; new->channels = data->channels; new->px_per_sec = data->px_per_sec; return new; } /** * pt_wavedata_free: (skip) * @data: the object to be freed * * Frees @data. */ void pt_wavedata_free (PtWavedata *data) { if (!data) return; if (data->array) g_free (data->array); g_free (data); } /** * pt_wavedata_new: (constructor) * @array: (array length=length): an array of floats * @length: number of elements in array * @channels: number of channels * @px_per_sec: rate * * Constructs a new #PtWavedata. * * Returns: (transfer full) (nullable): new data, free after use with pt_wavedata_free() */ PtWavedata* pt_wavedata_new (gfloat *array, gint64 length, guint channels, guint px_per_sec) { PtWavedata *data; data = g_new0 (PtWavedata, 1); if (!(data->array = g_try_malloc (sizeof (gfloat) * length))) { g_free (data); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "Creating new wavedata failed"); return NULL; } memcpy (data->array, array, sizeof(gfloat) * length); data->length = length; data->channels = channels; data->px_per_sec = px_per_sec; return data; } parlatype-1.6.2/libparlatype/src/pt-wavedata.h000066400000000000000000000036601353244124700214000ustar00rootroot00000000000000/* 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_WAVEDATA_H #define PT_WAVEDATA_H #include #include G_BEGIN_DECLS #define PT_TYPE_WAVEDATA (pt_wavedata_get_type ()) typedef struct _PtWavedata PtWavedata; /** * PtWavedata: * @array: (array length=length): array of min/max values. One single sample is * represented by a min value ranging from -1.0 to 0.0 and a max value ranging * from 0.0 to 1.0. This is a simplified approach, as a sample is not a single * point in time, but a min and a max value in a certain amount of time, e.g. * 10 ms. * @length: number of elements in array * @channels: number of channels for future use, currently it’s always 1. * @px_per_sec: pixels/samples per second. For example 100 means one second in time * is 100 pixels wide. * * Contains all information about the wave. Usually you don’t have to access * the struct’s members. */ struct _PtWavedata { gfloat *array; gint64 length; guint channels; guint px_per_sec; }; GType pt_wavedata_get_type (void) G_GNUC_CONST; PtWavedata* pt_wavedata_copy (PtWavedata *data); void pt_wavedata_free (PtWavedata *data); PtWavedata* pt_wavedata_new (gfloat *array, gint64 length, guint channels, guint px_per_sec); G_END_DECLS #endif parlatype-1.6.2/libparlatype/src/pt-waveloader.c000066400000000000000000000431541353244124700217320ustar00rootroot00000000000000/* Copyright (C) 2006 Buzztrax team * Copyright (C) Gabor Karsay 2016 * * 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 . */ #define _POSIX_SOURCE /* fileno */ #include "config.h" #include /* FILE, tmpfile, fileno, fclose */ #include #define GETTEXT_PACKAGE "libparlatype" #include #include #include #include /* fstat */ #include "pt-i18n.h" #include "pt-waveloader.h" struct _PtWaveloaderPrivate { GstElement *pipeline; GstElement *fmt; gchar *uri; gboolean downmix; gint64 duration; gint channels; gint rate; gint64 data_size; gint bus_watch_id; gint progress_timeout; gdouble progress; gint fd; FILE *tf; }; enum { PROP_0, PROP_URI, N_PROPERTIES }; static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, }; G_DEFINE_TYPE_WITH_PRIVATE (PtWaveloader, pt_waveloader, G_TYPE_OBJECT) /** * SECTION: pt-waveloader * @short_description: Loads the waveform for a given file. * @stability: Unstable * @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. */ 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 gboolean setup_pipeline (PtWaveloader *wl) { gboolean result = TRUE; GstElement *src, *dec, *conv, *sink; GstCaps *caps; /* create loader pipeline */ wl->priv->pipeline = gst_pipeline_new ("wave-loader"); 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); wl->priv->fmt = gst_element_factory_make ("capsfilter", NULL); sink = gst_element_factory_make ("fdsink", NULL); /* configure elements */ caps = gst_caps_new_simple ("audio/x-raw", "format", G_TYPE_STRING, GST_AUDIO_NE (S16), "layout", G_TYPE_STRING, "interleaved", "rate", GST_TYPE_INT_RANGE, 1, G_MAXINT, NULL); if (wl->priv->downmix) gst_caps_set_simple (caps, "channels", G_TYPE_INT, 1, NULL); else gst_caps_set_simple (caps, "channels", GST_TYPE_INT_RANGE, 1, 2, NULL); g_object_set (wl->priv->fmt, "caps", caps, NULL); gst_caps_unref (caps); g_object_set (sink, "fd", wl->priv->fd, "sync", FALSE, NULL); /* add and link */ gst_bin_add_many (GST_BIN (wl->priv->pipeline), src, dec, conv, 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 ! fmt ! sink)."); return result; } result = gst_element_link_many (conv, wl->priv->fmt, sink, NULL); if (!result) { GST_WARNING_OBJECT (wl->priv->pipeline, "Can’t link wave loader pipeline (conf ! fmt ! sink)."); return result; } g_signal_connect (dec, "pad-added", G_CALLBACK (on_wave_loader_new_pad), (gpointer) conv); 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. */ PtWaveloader *wl = g_task_get_source_object (task); gint64 dur; gint64 pos; gdouble temp; /* 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_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; 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 gint64 calculate_duration (gint64 data_size, gint px_per_sec) { /* Calculates streams duration from data size exactly the way pt-waveviewer.c does */ gint64 result; gint64 samples; gint one_pixel; samples = data_size / 2; one_pixel = 1000 / px_per_sec; result = samples / px_per_sec * 1000; /* = full seconds */ result += (samples % px_per_sec) * one_pixel; return result; } 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: { GstPad *pad; /* 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"); } /* get caps for sample rate and channels */ if ((pad = gst_element_get_static_pad (wl->priv->fmt, "src"))) { GstCaps *caps = gst_pad_get_current_caps (pad); if (caps && GST_CAPS_IS_SIMPLE (caps)) { GstStructure *structure = gst_caps_get_structure (caps, 0); gst_structure_get_int (structure, "channels", &wl->priv->channels); gst_structure_get_int (structure, "rate", &wl->priv->rate); } else { GST_WARNING ("No caps or format has not been fixed."); wl->priv->channels = 1; wl->priv->rate = GST_AUDIO_DEF_RATE; } if (caps) gst_caps_unref (caps); gst_object_unref (pad); } g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "sample decoded: channels=%d, rate=%d, length=%" GST_TIME_FORMAT, wl->priv->channels, wl->priv->rate, 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: 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 */ gboolean pt_waveloader_load_finish (PtWaveloader *wl, GAsyncResult *result, GError **error) { g_return_val_if_fail (g_task_is_valid (result, wl), FALSE); return g_task_propagate_boolean (G_TASK (result), error); } /** * pt_waveloader_load_async: * @wl: a #PtWaveloader * @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 * * Writes the raw sample data to a temporary file and also gets the number of * channels, the bit rate and the exact duration. Load only once and on success * the data can be retrieved as a #PtWavedata. It’s a programmer’s error trying * to retrieve the data without prior loading. * * Emits a progress signal while saving the temporary file. * * In your callback call #pt_waveloader_load_finish to get the result of the * operation. */ void pt_waveloader_load_async (PtWaveloader *wl, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { GTask *task; GstBus *bus; task = g_task_new (wl, cancellable, callback, user_data); /* setup file descriptor */ if (!(wl->priv->tf = tmpfile ())) { g_task_return_new_error ( task, G_FILE_ERROR, G_FILE_ERROR_FAILED, _("Failed to open temporary file.")); g_object_unref (task); return; } wl->priv->fd = fileno (wl->priv->tf); /* setup pipeline */ 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 progress (and cancel) timeout */ if (gst_element_set_state (wl->priv->pipeline, GST_STATE_PLAYING) == GST_STATE_CHANGE_FAILURE) { gst_element_set_state (wl->priv->pipeline, GST_STATE_NULL); g_task_return_new_error ( task, GST_CORE_ERROR, GST_CORE_ERROR_STATE_CHANGE, _("Failed to start GStreamer pipeline.")); g_object_unref (task); return; } 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 */ gint64 pt_waveloader_get_duration (PtWaveloader *wl) { return wl->priv->duration; } /** * pt_waveloader_get_data: * @wl: a #PtWaveloader * @pps: the requested pixel per second ratio * * Returns wave data needed for visual representation as raw data. The * requested resolution is given as pixel per seconds, e.g. 100 means one second * is represented by 100 samples, is 100 pixels wide. The returned resolution * doesn’t have to be necessarily exactly the requested resolution, it might be * a bit differnt, depending on the bit rate. * * Return value: (transfer full) (nullable): the #PtWavedata, after use free with pt_wavedata_free() */ PtWavedata* pt_waveloader_get_data (PtWaveloader *wl, gint pps) { gfloat *array = NULL; gint64 i; gint k; gfloat d, vmin, vmax; gint chunk_size; gint chunk_bytes; ssize_t bytes __attribute__ ((unused)); /* stat temp file, query size in bytes and compute number of samples */ struct stat buf; if (fstat (wl->priv->fd, &buf) != 0) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "Failed to open temporary file"); return NULL; } /* Adjust pixel per second ratio if there’s a remainder */ for (i = pps; i > 10; i--) { if (wl->priv->rate % i == 0) { pps = i; break; } } chunk_size = wl->priv->rate / pps; chunk_bytes = 2 * chunk_size; wl->priv->data_size = buf.st_size / chunk_size; /* Data size should match exactly duration or less, but sometimes it doesn’t … */ while (calculate_duration (wl->priv->data_size, pps) > GST_TIME_AS_MSECONDS (wl->priv->duration)) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Adjusting array size"); wl->priv->data_size -= 2 * wl->priv->channels; } g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Array size: %" G_GINT64_FORMAT " ", wl->priv->data_size); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "samples: %" G_GINT64_FORMAT " ", wl->priv->data_size / 2 * wl->priv->channels); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "pixels per sec: %d", pps); gint16 temp[chunk_size]; if (!(array = g_try_malloc (sizeof (gfloat) * wl->priv->data_size))) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "Sample is too long or empty"); return NULL; } if (lseek (wl->priv->fd, 0, SEEK_SET) != 0) { g_free (array); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "Sample not loaded"); return NULL; } for (i = 0; i < wl->priv->data_size / 2; i++) { bytes = read (wl->priv->fd, temp, chunk_bytes); vmin = 0; vmax = 0; for (k = 0; k < chunk_size; k++) { d = temp[k]; if (d < vmin) vmin = d; if (d > vmax) vmax = d; } if (vmin > 0 && vmax > 0) vmin = 0; else if (vmin < 0 && vmax < 0) vmax = 0; array[i*2] = vmin / 32768.0; array[i*2+1] = vmax / 32768.0; } PtWavedata *data = pt_wavedata_new (array, wl->priv->data_size, wl->priv->channels, pps); g_free (array); return data; } /* --------------------- 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->fd = -1; wl->priv->progress = 0; wl->priv->bus_watch_id = 0; wl->priv->progress_timeout = 0; wl->priv->data_size = 0; wl->priv->downmix = TRUE; /* we support only mono for now */ } static void pt_waveloader_dispose (GObject *object) { PtWaveloader *wl; wl = PT_WAVELOADER (object); g_free (wl->priv->uri); if (wl->priv->tf) { // fd is fileno() of a tf fclose (wl->priv->tf); wl->priv->tf = NULL; wl->priv->fd = -1; } else if (wl->priv->fd != -1) { close (wl->priv->fd); wl->priv->fd = -1; } 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. */ 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: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 */ PtWaveloader * pt_waveloader_new (gchar *uri) { _pt_i18n_init (); return g_object_new (PT_TYPE_WAVELOADER, "uri", uri, NULL); } parlatype-1.6.2/libparlatype/src/pt-waveloader.h000066400000000000000000000037551353244124700217420ustar00rootroot00000000000000/* 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 #include #include "pt-wavedata.h" 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, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gint64 pt_waveloader_get_duration (PtWaveloader *wl); PtWavedata* pt_waveloader_get_data (PtWaveloader *wl, gint pps); PtWaveloader* pt_waveloader_new (gchar *uri); G_END_DECLS #endif parlatype-1.6.2/libparlatype/src/pt-waveviewer-cursor.c000066400000000000000000000153651353244124700233030ustar00rootroot00000000000000/* Copyright (C) 2017 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 . */ /* PtWaveviewerCursor is a GtkDrawingArea. It is part of a GtkOverlay stack. It renders only the cursor. */ #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) { if (self->priv->position == position) return; /* first erase old position */ draw_cursor (self); self->priv->position = position; draw_cursor (self); } 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-1.6.2/libparlatype/src/pt-waveviewer-cursor.h000066400000000000000000000040361353244124700233010ustar00rootroot00000000000000/* 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-1.6.2/libparlatype/src/pt-waveviewer-focus.c000066400000000000000000000066711353244124700231050ustar00rootroot00000000000000/* Copyright (C) 2017 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 . */ /* PtWaveviewerFocus is a GtkDrawingArea. It is part of a GtkOverlay stack, on the very top. It renders only a focus line on the visible rectangle of the PtWaveviewer parent. */ #include "config.h" #include "pt-waveviewer.h" #include "pt-waveviewer-focus.h" struct _PtWaveviewerFocusPrivate { gboolean focus; /* whether to render focus or not */ GtkAdjustment *adj; /* the parent PtWaveviewer’s adjustment */ }; 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 || !self->priv->adj) return FALSE; GtkStyleContext *context; gint left, height, width; context = gtk_widget_get_style_context (GTK_WIDGET (self)); height = gtk_widget_get_allocated_height (widget); width = (gint) gtk_adjustment_get_page_size (self->priv->adj); left = (gint) gtk_adjustment_get_value (self->priv->adj); gtk_render_focus (context, cr, left, 0, width, height); return FALSE; } static void adj_value_changed (GtkAdjustment *adj, gpointer data) { PtWaveviewerFocus *self = PT_WAVEVIEWER_FOCUS (data); if (self->priv->focus) gtk_widget_queue_draw (GTK_WIDGET (data)); } static void pt_waveviewer_focus_hierarchy_changed (GtkWidget *widget, GtkWidget *old_parent) { PtWaveviewerFocus *self = PT_WAVEVIEWER_FOCUS (widget); if (self->priv->adj) return; /* Get parent’s GtkAdjustment */ GtkWidget *parent = NULL; parent = gtk_widget_get_ancestor (widget, PT_TYPE_WAVEVIEWER); 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_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; self->priv->adj = NULL; 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->hierarchy_changed = pt_waveviewer_focus_hierarchy_changed; 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-1.6.2/libparlatype/src/pt-waveviewer-focus.h000066400000000000000000000036311353244124700231030ustar00rootroot00000000000000/* 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-1.6.2/libparlatype/src/pt-waveviewer-ruler.c000066400000000000000000000305761353244124700231200ustar00rootroot00000000000000/* Copyright (C) 2017 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 . */ #include "config.h" #define GETTEXT_PACKAGE "libparlatype" #include #include "pt-waveviewer.h" #include "pt-waveviewer-ruler.h" #define PRIMARY_MARK_HEIGHT 8 #define SECONDARY_MARK_HEIGHT 4 struct _PtWaveviewerRulerPrivate { gboolean rtl; 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 flip_pixel (PtWaveviewerRuler *self, gint64 pixel) { /* In ltr layouts each pixel on the x-axis corresponds to a sample in the array. In rtl layouts this is flipped, e.g. the first pixel corresponds to the last sample in the array. */ gint widget_width; widget_width = gtk_widget_get_allocated_width (GTK_WIDGET (self)); /* Case: waveform is shorter than drawing area */ if (self->priv->n_samples < widget_width) return (widget_width - pixel); else return (self->priv->n_samples - pixel); } 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; if (self->priv->rtl) result = flip_pixel (self, result); return result; } static gint64 pixel_to_time (PtWaveviewerRuler *self, gint64 pixel) { /* Convert a position in the drawing area to time in milliseconds */ gint64 result; if (self->priv->rtl) pixel = flip_pixel (self, pixel); 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 x_offset; gint64 tmp_time; GtkStyleContext *context; GdkRGBA text_color; gdouble left, right; cairo_clip_extents (cr, &left, NULL, &right, NULL); context = gtk_widget_get_style_context (GTK_WIDGET (self)); gtk_render_background (context, cr, left, 0, right, 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, (int)left) / 100 * 100; if (self->priv->rtl) tmp_time += 100; /* round up */ i = time_to_pixel (self, tmp_time); while (i <= (int)right) { if (tmp_time < self->priv->duration) gtk_render_line (context, cr, i, 0, i, SECONDARY_MARK_HEIGHT); if (self->priv->rtl) tmp_time -= 100; else tmp_time += 100; i = time_to_pixel (self, tmp_time); } } /* Case: secondary ruler marks for full seconds. Use secondary_modulo. */ if (self->priv->primary_modulo > 1) { for (i = (int)left; i <= (int)right; i += 1) { sample = i; if (self->priv->rtl) sample = flip_pixel (self, sample); if (sample > self->priv->n_samples) continue; 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 = (int)left - self->priv->time_string_width; i <= (int)right + self->priv->time_string_width; i += 1) { sample = i; if (self->priv->rtl) sample = flip_pixel (self, sample); 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); x_offset = (rect.x + rect.width) / 2; if (i - x_offset > 0 && i + x_offset < gtk_widget_get_allocated_width (widget)) { cairo_move_to (cr, i - x_offset, /* 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), self->priv->n_samples, ruler_height); } static void update_cached_style_values (PtWaveviewerRuler *self) { /* Direction is cached */ GtkStyleContext *context; GdkWindow *window = NULL; window = gtk_widget_get_parent_window (GTK_WIDGET (self)); if (!window) return; context = gtk_widget_get_style_context (GTK_WIDGET (self)); if (gtk_style_context_get_state (context) & GTK_STATE_FLAG_DIR_RTL) self->priv->rtl = TRUE; else self->priv->rtl = FALSE; } static void pt_waveviewer_ruler_state_flags_changed (GtkWidget *widget, GtkStateFlags flags) { update_cached_style_values (PT_WAVEVIEWER_RULER (widget)); GTK_WIDGET_CLASS (pt_waveviewer_ruler_parent_class)->state_flags_changed (widget, flags); } 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); update_cached_style_values (self); gtk_widget_queue_draw (widget); } static void pt_waveviewer_ruler_realize (GtkWidget *widget) { GTK_WIDGET_CLASS (pt_waveviewer_ruler_parent_class)->realize (widget); update_cached_style_values (PT_WAVEVIEWER_RULER (widget)); } static void adj_value_changed (GtkAdjustment *adj, gpointer data) { PtWaveviewerRuler *self = PT_WAVEVIEWER_RULER (data); gint height, width, left; height = gtk_widget_get_allocated_height (GTK_WIDGET (self)); width = (gint) gtk_adjustment_get_page_size (self->priv->adj); left = (gint) gtk_adjustment_get_value (self->priv->adj); gtk_widget_queue_draw_area (GTK_WIDGET (self), left, 0, width, height); } 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, PT_TYPE_WAVEVIEWER); 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); update_cached_style_values (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->realize = pt_waveviewer_ruler_realize; widget_class->state_flags_changed = pt_waveviewer_ruler_state_flags_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-1.6.2/libparlatype/src/pt-waveviewer-ruler.h000066400000000000000000000040261353244124700231140ustar00rootroot00000000000000/* 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-1.6.2/libparlatype/src/pt-waveviewer-selection.c000066400000000000000000000132711353244124700237450ustar00rootroot00000000000000/* Copyright (C) 2017 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 . */ /* PtWaveviewerSelection is a GtkDrawingArea. It is part of a GtkOverlay stack. It renders only the selection. */ #include "config.h" #include "pt-waveviewer-selection.h" struct _PtWaveviewerSelectionPrivate { 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; 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 selection */ if (self->priv->start != self->priv->end) { gdk_cairo_set_source_rgba (cr, &self->priv->selection_color); cairo_rectangle (cr, self->priv->start, 0, self->priv->end - self->priv->start, height); cairo_fill (cr); } return FALSE; } static void draw_selection (PtWaveviewerSelection *self) { gint height; height = gtk_widget_get_allocated_height (GTK_WIDGET (self)); gtk_widget_queue_draw_area (GTK_WIDGET (self), self->priv->start, 0, self->priv->end - self->priv->start, height); } 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); draw_selection (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)); } void pt_waveviewer_selection_set (PtWaveviewerSelection *self, gint start, gint end) { gint x1, x2, height; /* Make sure start < end, important for rtl layouts */ if (start > end) { x1 = start; start = end; end = x1; } /* Case: no change */ if (self->priv->start == start && self->priv->end == end) return; /* Case: nothing selected before, draw selection only */ if (self->priv->start == self->priv->end) { self->priv->start = start; self->priv->end = end; draw_selection (self); return; } /* Case: start and end changed, draw old and new selection */ if (self->priv->start != start && self->priv->end != end) { draw_selection (self); self->priv->start = start; self->priv->end = end; draw_selection (self); return; } if (self->priv->start == start) { /* Case: start unchanged, draw only difference at end */ if (self->priv->end < end) { x1 = self->priv->end; x2 = end - self->priv->end; } else { x1 = end; x2 = self->priv->end - end; } } else { /* Case: end unchanged, draw only difference at start */ if (self->priv->start < start) { x1 = self->priv->start; x2 = start - self->priv->start; } else { x1 = start; x2 = self->priv->start - start; } } self->priv->start = start; self->priv->end = end; height = gtk_widget_get_allocated_height (GTK_WIDGET (self)); gtk_widget_queue_draw_area (GTK_WIDGET (self), x1, 0, x2, height); } 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; 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->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-1.6.2/libparlatype/src/pt-waveviewer-selection.h000066400000000000000000000040621353244124700237500ustar00rootroot00000000000000/* 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-1.6.2/libparlatype/src/pt-waveviewer-waveform.c000066400000000000000000000137761353244124700236200ustar00rootroot00000000000000/* Copyright (C) 2017 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 . */ /* PtWaveviewerWaveform is a GtkDrawingArea. It is part of a GtkOverlay stack. It renders only the waveform. */ #include "config.h" #include "pt-waveviewer-waveform.h" struct _PtWaveviewerWaveformPrivate { /* Wavedata */ gfloat *peaks; gint64 peaks_size; /* size of array */ /* Rendering */ GdkRGBA wave_color; gboolean rtl; }; G_DEFINE_TYPE_WITH_PRIVATE (PtWaveviewerWaveform, pt_waveviewer_waveform, GTK_TYPE_DRAWING_AREA); static gint64 flip_pixel (PtWaveviewerWaveform *self, gint64 pixel) { /* In ltr layouts each pixel on the x-axis corresponds to a sample in the array. In rtl layouts this is flipped, e.g. the first pixel corresponds to the last sample in the array. */ gint64 samples; gint widget_width; samples = self->priv->peaks_size / 2; widget_width = gtk_widget_get_allocated_width (GTK_WIDGET (self)); /* Case: waveform is shorter than drawing area */ if (samples < widget_width) return (widget_width - pixel); else return (samples - pixel); } 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; if (self->priv->rtl) pixel = flip_pixel (self, pixel); result = pixel * 2; if (result + 1 >= self->priv->peaks_size) result = -1; return result; } static gboolean pt_waveviewer_waveform_draw (GtkWidget *widget, cairo_t *cr) { PtWaveviewerWaveform *self = (PtWaveviewerWaveform *) widget; gfloat *peaks = self->priv->peaks; GtkStyleContext *context; gint pixel; gint array; gdouble min, max; gint width, height; gint half, middle; gdouble left, right; 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) return FALSE; /* paint waveform */ /* get extents, only render what we’re asked for */ cairo_clip_extents (cr, &left, NULL, &right, NULL); half = height / 2 - 1; middle = height / 2; gdk_cairo_set_source_rgba (cr, &self->priv->wave_color); for (pixel = (gint)left; pixel <= (gint)right; pixel += 1) { array = pixel_to_array (self, pixel); if (array == -1) /* in ltr we could break, but rtl needs to continue */ continue; min = (middle + half * peaks[array] * -1); max = (middle - half * peaks[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 and direction */ 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); if (state & GTK_STATE_FLAG_DIR_RTL) self->priv->rtl = TRUE; else self->priv->rtl = FALSE; } 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, gfloat *peaks, gint64 peaks_size) { self->priv->peaks = peaks; self->priv->peaks_size = peaks_size; gtk_widget_queue_draw (GTK_WIDGET (self)); } static void pt_waveviewer_waveform_init (PtWaveviewerWaveform *self) { self->priv = pt_waveviewer_waveform_get_instance_private (self); GtkStyleContext *context; self->priv->peaks = NULL; self->priv->peaks_size = 0; 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->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-1.6.2/libparlatype/src/pt-waveviewer-waveform.h000066400000000000000000000040271353244124700236120ustar00rootroot00000000000000/* 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, gfloat *peaks, gint64 peaks_size); GtkWidget *pt_waveviewer_waveform_new (void); G_END_DECLS #endif // PT_WAVEVIEWER_WAVEFORM_H parlatype-1.6.2/libparlatype/src/pt-waveviewer.c000066400000000000000000001223721353244124700217650ustar00rootroot00000000000000/* Copyright (C) 2006-2008 Buzztrax team * Copyright (C) 2002 2003 2004 2005 2007 2008 2009 2010, Magnus Hjorth * Copyright (C) 2016 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 . */ #include "config.h" #include /* fabs */ #include #define GETTEXT_PACKAGE "libparlatype" #include #include "pt-marshalers.h" #include "pt-waveviewer-ruler.h" #include "pt-waveviewer-waveform.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 */ gfloat *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; gboolean zoom; gint64 zoom_time; gint zoom_pos; /* Selections, in milliseconds */ gint64 sel_start; gint64 sel_end; gint64 dragstart; gint64 dragend; GdkCursor *arrows; GtkAdjustment *adj; gboolean rtl; gboolean focus_on_cursor; /* Subwidgets */ GtkWidget *waveform; GtkWidget *revealer; GtkWidget *ruler; GtkWidget *focus; GtkWidget *cursor; GtkWidget *selection; }; 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_ZOOM, 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); /** * SECTION: pt-waveviewer * @short_description: A GtkWidget to display a waveform. * @stability: Unstable * @include: parlatype/pt-waveviewer.h * * Displays a waveform provided by #PtPlayer or #PtWaveloader. */ static gint64 flip_pixel (PtWaveviewer *self, gint64 pixel) { /* In ltr layouts each pixel on the x-axis corresponds to a sample in the array. In rtl layouts this is flipped, e.g. the first pixel corresponds to the last sample in the array. */ gint64 samples; gint widget_width; samples = self->priv->peaks_size / 2; widget_width = gtk_widget_get_allocated_width (self->priv->waveform); /* Case: waveform is shorter than drawing area */ if (samples < widget_width) return (widget_width - pixel); else return (samples - pixel); } 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; if (self->priv->rtl) result = flip_pixel (self, result); return result; } static gint64 pixel_to_time (PtWaveviewer *self, gint64 pixel) { /* Convert a position in the drawing area to time in milliseconds */ gint64 result; if (self->priv->rtl) pixel = flip_pixel (self, pixel); 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) { if (self->priv->rtl) /* cursor visible far right */ gtk_adjustment_set_value (self->priv->adj, cursor_pos - page_width); else /* cursor visible far left */ gtk_adjustment_set_value (self->priv->adj, cursor_pos); } } } 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; if (self->priv->rtl) one_pixel = one_pixel * -1; 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) 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 = self->priv->rtl ? GTK_SCROLL_PAGE_FORWARD : GTK_SCROLL_PAGE_BACKWARD; break; case GDK_KEY_Page_Down: scroll = self->priv->rtl ? GTK_SCROLL_PAGE_BACKWARD : GTK_SCROLL_PAGE_FORWARD; break; case GDK_KEY_Home: scroll = self->priv->rtl ? GTK_SCROLL_END : GTK_SCROLL_START; break; case GDK_KEY_End: scroll = self->priv->rtl ? GTK_SCROLL_START : 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 (GtkWidget *widget, GdkEventButton *event) { PtWaveviewer *self = PT_WAVEVIEWER (widget); GdkEventType type; GdkModifierType state; guint button; gdouble x; gint64 clicked; /* the sample clicked on */ gint64 pos; /* clicked sample’s position in milliseconds */ if (!self->priv->peaks) return FALSE; type = gdk_event_get_event_type ((GdkEvent*)event); gdk_event_get_state ((GdkEvent*) event, &state); gdk_event_get_button ((GdkEvent*) event, &button); gdk_event_get_coords ((GdkEvent*) event, &x, NULL); clicked = (gint) x; pos = pixel_to_time (self, clicked); /* Single left click, no other keys pressed: new selection or changing selection */ if (type == GDK_BUTTON_PRESS && 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, 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, self->priv->sel_end)) { self->priv->dragstart = self->priv->sel_start; self->priv->dragend = self->priv->sel_end; } set_cursor (widget, self->priv->arrows); update_selection (self); return TRUE; } /* Single left click with Shift pressed and existing selection: enlarge selection */ if (type == GDK_BUTTON_PRESS && 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 (widget, self->priv->arrows); update_selection (self); return TRUE; } /* Single right click: change cursor */ if (type == GDK_BUTTON_PRESS && 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 */ 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 pt_waveviewer_motion_notify_event (GtkWidget *widget, GdkEventMotion *event) { PtWaveviewer *self = PT_WAVEVIEWER (widget); GdkModifierType state; gdouble x; gint64 clicked; /* the sample clicked on */ gint64 pos; /* clicked sample’s position in milliseconds */ if (!self->priv->peaks) return FALSE; gdk_event_get_state ((GdkEvent*) event, &state); gdk_event_get_coords ((GdkEvent*) event, &x, NULL); clicked = (gint) x; pos = pixel_to_time (self, clicked); /* 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, self->priv->sel_start) || pointer_in_range (self, x, self->priv->sel_end)) { set_cursor (widget, self->priv->arrows); } else { set_cursor (widget, NULL); } } return FALSE; } static gboolean pt_waveviewer_button_release_event (GtkWidget *widget, GdkEventButton *event) { guint button; gdk_event_get_button ((GdkEvent*) event, &button); if (button == GDK_BUTTON_PRIMARY) { set_cursor (widget, NULL); return TRUE; } return FALSE; } static void update_cached_style_values (PtWaveviewer *self) { /* Only direction is cached */ 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); if (state & GTK_STATE_FLAG_DIR_RTL) self->priv->rtl = TRUE; else self->priv->rtl = FALSE; } static void pt_waveviewer_state_flags_changed (GtkWidget *widget, GtkStateFlags flags) { update_cached_style_values (PT_WAVEVIEWER (widget)); GTK_WIDGET_CLASS (pt_waveviewer_parent_class)->state_flags_changed (widget, flags); } static void pt_waveviewer_style_updated (GtkWidget *widget) { PtWaveviewer *self = PT_WAVEVIEWER (widget); GTK_WIDGET_CLASS (pt_waveviewer_parent_class)->style_updated (widget); update_cached_style_values (self); } static void pt_waveviewer_direction_changed (GtkWidget *widget, GtkTextDirection direction) { PtWaveviewer *self = PT_WAVEVIEWER (widget); gint widget_width, first_visible, page_width; /* This is called after state-flags-changed signal. The waveform handles repainting itself, here we have to flip the GtkAdjustment and recalculate the cursor’s position */ widget_width = gtk_widget_get_allocated_width (self->priv->waveform); first_visible = (gint) gtk_adjustment_get_value (self->priv->adj); page_width = (gint) gtk_adjustment_get_page_size (self->priv->adj); gtk_adjustment_set_value ( self->priv->adj, widget_width - first_visible - page_width); if (self->priv->peaks) pt_waveviewer_cursor_render ( PT_WAVEVIEWER_CURSOR (self->priv->cursor), time_to_pixel (self, self->priv->playback_cursor)); GTK_WIDGET_CLASS (pt_waveviewer_parent_class)->direction_changed (widget, direction); } static void pt_waveviewer_realize (GtkWidget *widget) { GTK_WIDGET_CLASS (pt_waveviewer_parent_class)->realize (widget); update_cached_style_values (PT_WAVEVIEWER (widget)); } 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) 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) 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 */ 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. */ 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 size_allocate_cb (GtkWidget *widget, GdkRectangle *allocation, gpointer user_data) { PtWaveviewer *self = PT_WAVEVIEWER (user_data); if (self->priv->zoom) { gtk_adjustment_set_value ( self->priv->adj, time_to_pixel (self, self->priv->zoom_time) - self->priv->zoom_pos); self->priv->zoom = FALSE; } if (self->priv->peaks) { pt_waveviewer_cursor_render ( PT_WAVEVIEWER_CURSOR (self->priv->cursor), time_to_pixel (self, self->priv->playback_cursor)); } 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)); } static void make_widget_ready (PtWaveviewer *self, gboolean ready) { gint widget_width, left; if (!ready && self->priv->zoom) { /* If this is a zoom, we still have the old waveform. 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. */ 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); } } if (!ready && !self->priv->zoom) { /* Reset previous selections */ self->priv->sel_start = self->priv->sel_end = 0; self->priv->has_selection = FALSE; g_object_notify_by_pspec ( G_OBJECT (self), obj_properties[PROP_SELECTION_START]); g_object_notify_by_pspec ( G_OBJECT (self), obj_properties[PROP_SELECTION_END]); g_object_notify_by_pspec ( G_OBJECT (self), obj_properties[PROP_HAS_SELECTION]); } if (!ready) { if (self->priv->peaks) { g_free (self->priv->peaks); self->priv->peaks = NULL; } 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->duration = calculate_duration (self); widget_width = self->priv->peaks_size / 2; gtk_adjustment_set_upper (self->priv->adj, widget_width); gtk_widget_set_size_request ( self->priv->waveform, widget_width, WAVE_MIN_HEIGHT); } pt_waveviewer_waveform_set ( PT_WAVEVIEWER_WAVEFORM (self->priv->waveform), self->priv->peaks, self->priv->peaks_size); pt_waveviewer_ruler_set_ruler ( PT_WAVEVIEWER_RULER (self->priv->ruler), self->priv->peaks_size / 2, self->priv->px_per_sec, self->priv->duration); /* Here we would render the cursor and change the GtkAdjustment so that we show the intended part of the waveform after zooming. However, there were some issues because the waveform didn’t allocate the new size in time. This is now done in the callback above, size_allocate_cb(). */ } static gboolean copy_wavedata (PtWaveviewer *self, PtWavedata *data) { /* Copy array. If widget is not owner of its data, bad things can happen with bindings. */ if (!data) return FALSE; if (!data->array || !data->length) return FALSE; if (!(self->priv->peaks = g_malloc (sizeof (gfloat) * data->length))) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "Waveviewer failed to allocate memory"); return FALSE; } memcpy (self->priv->peaks, data->array, sizeof(gfloat) * data->length); self->priv->peaks_size = data->length; self->priv->px_per_sec = data->px_per_sec; return TRUE; } /** * pt_waveviewer_set_wave: * @self: the widget * @data: (nullable): a #PtWavedata * * Set wave data to show in the widget. The data is copied internally and may * be freed immediately after calling this function. If @data is NULL, a blank * widget is drawn. */ void pt_waveviewer_set_wave (PtWaveviewer *self, PtWavedata *data) { g_return_if_fail (PT_IS_WAVEVIEWER (self)); make_widget_ready (self, FALSE); if (!copy_wavedata (self, data)) return; make_widget_ready (self, TRUE); } static void pt_waveviewer_finalize (GObject *object) { PtWaveviewer *self = PT_WAVEVIEWER (object); g_free (self->priv->peaks); g_clear_object (&self->priv->arrows); G_OBJECT_CLASS (pt_waveviewer_parent_class)->finalize (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; 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); 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); pt_waveviewer_cursor_render (PT_WAVEVIEWER_CURSOR (self->priv->cursor), time_to_pixel (self, self->priv->playback_cursor)); 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_ZOOM: self->priv->zoom = g_value_get_boolean (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void pt_waveviewer_constructed (GObject *object) { PtWaveviewer *self = PT_WAVEVIEWER (object); self->priv->adj = gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW (self)); g_signal_connect (gtk_scrolled_window_get_hscrollbar (GTK_SCROLLED_WINDOW (self)), "button_press_event", G_CALLBACK (scrollbar_button_press_event_cb), self); g_signal_connect (gtk_scrolled_window_get_hscrollbar (GTK_SCROLLED_WINDOW (self)), "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); GtkWidget *box, *overlay; GtkCssProvider *provider; GFile *css_file; self->priv->peaks = NULL; 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->waveform = pt_waveviewer_waveform_new (); self->priv->focus = pt_waveviewer_focus_new (); self->priv->cursor = pt_waveviewer_cursor_new (); self->priv->selection = pt_waveviewer_selection_new (); self->priv->ruler = pt_waveviewer_ruler_new (); self->priv->revealer = gtk_revealer_new (); /* Setup scrolled window */ box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); overlay = gtk_overlay_new (); gtk_revealer_set_transition_type (GTK_REVEALER (self->priv->revealer), GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP); gtk_revealer_set_transition_duration (GTK_REVEALER (self->priv->revealer), 200); gtk_container_add (GTK_CONTAINER (overlay), self->priv->waveform); gtk_overlay_add_overlay (GTK_OVERLAY (overlay), self->priv->selection); gtk_overlay_add_overlay (GTK_OVERLAY (overlay), self->priv->cursor); gtk_overlay_add_overlay (GTK_OVERLAY (overlay), self->priv->focus); gtk_container_add (GTK_CONTAINER (box), overlay); gtk_widget_set_vexpand (overlay, TRUE); gtk_container_add (GTK_CONTAINER (self->priv->revealer), self->priv->ruler); gtk_container_add (GTK_CONTAINER (box), self->priv->revealer); gtk_container_add (GTK_CONTAINER (self), box); gtk_scrolled_window_set_policy ( GTK_SCROLLED_WINDOW (self), GTK_POLICY_ALWAYS, GTK_POLICY_NEVER); gtk_scrolled_window_set_shadow_type ( GTK_SCROLLED_WINDOW (self), GTK_SHADOW_IN); gtk_scrolled_window_set_overlay_scrolling (GTK_SCROLLED_WINDOW (self), FALSE); gtk_widget_show_all (GTK_WIDGET (self)); css_file = g_file_new_for_uri ("resource:///com/github/gkarsay/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); g_signal_connect ( GTK_WIDGET (self->priv->waveform), "size-allocate", G_CALLBACK (size_allocate_cb), self); /* 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); } 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->finalize = pt_waveviewer_finalize; widget_class->button_press_event = pt_waveviewer_button_press_event; widget_class->button_release_event = pt_waveviewer_button_release_event; widget_class->direction_changed = pt_waveviewer_direction_changed; widget_class->key_press_event = pt_waveviewer_key_press_event; widget_class->motion_notify_event = pt_waveviewer_motion_notify_event; widget_class->realize = pt_waveviewer_realize; widget_class->scroll_event = pt_waveviewer_scroll_event; widget_class->state_flags_changed = pt_waveviewer_state_flags_changed; widget_class->style_updated = pt_waveviewer_style_updated; /** * 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. */ obj_properties[PROP_PLAYBACK_CURSOR] = g_param_spec_int64 ( "playback-cursor", "Cursor position", "Cursor’s position in 1/1000 seconds", 0, 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:zoom: * * Set this to TRUE to indicate that the next wave data will be the same * waveform but at a different zoom level. PtWaveviewer needs this to * decide which part of the waveform should be shown. * – Note: This will be probably removed with the next API break in * version 1.6 and integrated into pt_waveviewer_set_wave(). */ obj_properties[PROP_ZOOM] = g_param_spec_boolean ( "zoom", "Zoom", "Indicates that next wave data will zoom", FALSE, 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. Use * pt_waveviewer_set_wave() to pass wave data. * * After use gtk_widget_destroy() it. * * Returns: the widget */ GtkWidget * pt_waveviewer_new (void) { return GTK_WIDGET (g_object_new (PT_TYPE_WAVEVIEWER, NULL)); } parlatype-1.6.2/libparlatype/src/pt-waveviewer.h000066400000000000000000000040471353244124700217700ustar00rootroot00000000000000/* 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 #include #include "pt-wavedata.h" 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); void pt_waveviewer_set_wave (PtWaveviewer *self, PtWavedata *data); GtkWidget *pt_waveviewer_new (void); G_END_DECLS #endif // PT_WAVEVIEWER_H parlatype-1.6.2/libparlatype/src/ptmarshalers.list000066400000000000000000000000131353244124700224010ustar00rootroot00000000000000VOID:INT64 parlatype-1.6.2/libparlatype/src/resources/000077500000000000000000000000001353244124700210175ustar00rootroot00000000000000parlatype-1.6.2/libparlatype/src/resources/asr.ini000066400000000000000000000001571353244124700223100ustar00rootroot00000000000000# This file was generated by Parlatype. # It stores the ASR (automatic speech recognition) configuration(s). parlatype-1.6.2/libparlatype/src/resources/libparlatype.gresource.xml000066400000000000000000000003051353244124700262240ustar00rootroot00000000000000 asr.ini pt-waveviewer.css parlatype-1.6.2/libparlatype/src/resources/pt-waveviewer.css000066400000000000000000000004601353244124700243360ustar00rootroot00000000000000/* 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-1.6.2/libparlatype/tests/000077500000000000000000000000001353244124700173605ustar00rootroot00000000000000parlatype-1.6.2/libparlatype/tests/README000066400000000000000000000006351353244124700202440ustar00rootroot00000000000000Unit tests for libparlatype, run with `make check`. Valgrind test with `make check-valgrind-memcheck`. Valgrind suppression files downloaded from: https://cgit.freedesktop.org/gstreamer/common/tree/gst.supp https://git.gnome.org/browse/glib/tree/glib.supp Code coverage test with `make check-code-coverage`. Compile lib with --enable-code-coverage first. Result is in libparlatype-{VERSION}-coverage/index.html parlatype-1.6.2/libparlatype/tests/data/000077500000000000000000000000001353244124700202715ustar00rootroot00000000000000parlatype-1.6.2/libparlatype/tests/data/README000066400000000000000000000012151353244124700211500ustar00rootroot00000000000000Test Data Files: test1.ogg, test1.mp3 Audio, mono, 10 sec clipped at position 4:02 Downloaded from: https://audio-video.gnu.org/audio/2014-12-29--rms--freedom-in-your-computer-and-in-the-net--opus.ogg By: Richard Stallman, speech held in Hamburg at the 31st Chaos Communication Congress on Dec 29, 2014 License: Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0) License URL: https://creativecommons.org/licenses/by-nd/4.0/ I understand an excerpt (clip) is not a violation of the ND-clause and it can be distributed in different file formats: https://creativecommons.org/faq/#When_is_my_use_considered_an_adaptation.3F parlatype-1.6.2/libparlatype/tests/data/test1.mp3000066400000000000000000004744001353244124700217630ustar00rootroot00000000000000Infoy "$&)+.0469;>@BEGJLPRUWY\^acgilnqsuxz}9LAME3.99r$yK%^xG ]:rU2ю\{"xNvW#88aHg!BjP =G3LoBTTձm^mu}W,D;֏wS*9؞H0Gz 0!cYڐD225 DE di1\OuO༓v9N-MarLFdVUxLlp֣W3'}V^HqUdvCGsQ % P,C]A e!F}550ނ&ՇhJBn쿡Q LþOeHui:o:VYAF)OOH-v؈> 6MT$"-*$稵֎m ҩ&6RuQ-iȋk&p0dNjF-KA#P%5jC! )ዑum`9_U(Yl~(8Z.#@%sA3$ɐV.PQJQ)ƧQW=8IȫNI((!1oRʋ,F|[uf 77}r2OiC>P=?M航eh-l< G2@]KWǍDiƸ[|sjÌ.21R~Js .J&i 5L 5؈ .^S[S$es"Z{I|-^XQ֟QCv&Tkm7`mws51g9oϧswξwuƳ>` -MQ)̏V}j+k\&z(Q78 |X$l`wRnO$Jmi&Lƺ:)2GltNV'9=zĢ;'cHfN^I;[q!jgf{;@$$B1>yűRYõǵ3o {}aNzA"= =Eǀ'h83!2XTk$ʚ# <UmPcE8"l/|[u iH`cpRn.ۍBf^B6N HfCQbP}tL %V1FP* 1q*Ut*- xHgz^zE0 8پ*0xEj[ԓDZҖ9_)H@eI<*\4-Թ_90T FP\ -t.(%Rzzyqn8삚iexbmI)=o(ʆ}w E0p68kA<2 /& K.n'1r/~+UcВ3$Ir<B+:S!$k/\@` 跉m{ul,gEaۊhY2⵶ ڽ[<* 䎭R"}[pG-C^9:#D(a}JlESUf֘|S1xzA0^=MȼPW>J 1K7J/;ffY㫖<ӥJ4J|SiZRWn"KUxX,=91kY^j_p7ԙ0G^wcăY{ai4焚WVD_2rBbV0\9 C/;ND!(;[:[TD75 ܛ2Xrb9ъ.%%ڕjfSXd(TJ &#@z@FD0=. Gќ@JW0v90u$Bcc-E p!R:Exi9~S &0 ߰wq&ϗ5D{ISG[MT 80RJp'xջSu *<>&|6Vp)9 8hFJtt3$q.h@VH~\؅2IP㕵WhUr9K ^rmy<:h8XQ;%@ࠌ"',wǛi\H" Pu :5!jڐzGIz?GgzT$z%mve9'T C(4Vd'CѨX4eTbvv®\%DUPXs(9s)6E}3ףh4#dBr> u C`Vg[p)yF*bi/2(ԤCD,)ҁOͽ-QhἽ'IxF 11`(Ld hH_x)8Ķ\BdL..a[I@O lw"de#֚1Q$)C+2S# V^S?c +񄘋:=}R©hxaǹvcjK=3QЖ;# j,5^VwV5lg/. ^i'Ha#Jg&f$J.]"\<&9]MW3 @ 'DlG*YPSջ'L//~v ze]B )lśWaY&}D${(Qq˯ut$!?tXp b AA AQ2PCj@3+ hRWsec Jm-6(a̡g0! ):J! h.#YrXWroBb*Z ZBa\TuB(X> b6uDX&gK%b% cFXCGƼiO 2iB<MDƠ1f yB BGh~y9yss·IٴV(\O{XoxҋNoj'X(80 *'9&D8ljIŦ X ` | ӣB4&2\˔vR#(FL k |< 4.+WOC  d>^2.~m1a$4!ĉ%@.emY̥MG][ /"_tӊlPZ" :TS !06L&עv&gE9fO,T-8me:w<"خ 6i e"I_o0(&} >b!!ei)v- ,U"X-+FCIT;C'I~ M- ʚ;((z]cnrp?ZMimuk=qg R.,c_!z2ISM4yW0*3? 48 M~2XT ĨA'Fni 3&iz[[ʝfL,8P8T;A<h"e#-l5pXduprE{,zЋ"{Ln\]C:;k}*_A$w !@\" < gR|o)D#9*qҁD&:$G2eanʡQ(Bt4U,.T9C9*$hr9;BS]gT3]2V1aߴ-cyoi u]s\UujQ'L`0{8I#N?2" =5$4Pu#MONReLkpǞpt3*ɈDO6\fJѸ/S:;̵J:XON j?ξ?okY[ (oOѣB!qI'$6tm9%g p] c<Th($xa&t:i[NPqۓ;UwNl?/ihV*BZ SU1:& #$ jh* ElHf?8g(JNq#9r8s䡶f-bpaћK5 DՂe\Xy(NOs ߉e.p 7ĖʽZI -HRSC0պI)$.!d=z f ڭ ߚ-W+OnKcXiZ+ɌޯG cԝX 2!W(vO4*RlmƖ fgg $qf8mƶ4dwx4n,caP)rj8 敧$/kj>#JzB2 ~˕Q [4 .Ec=xN^a.!,FVr^H X~T6~% Ѵ͓!BȓSgޙ< յa*@=0.8`gB4n:71i9YD|3C" 3 q.1 ET=N^;Y"bu1Pӟtfj41aJԮ nQD\#iyC[^g%z*FZT3!# .`S$cl<>(0$e',L#68aнij _餮Qsed# L3dţ&|0@KC< 2@.  PJ :F[pB 1%]WsC Tt`i5vB_FǤԊbwkŸ_"0i'bV9u*zV8W:*|ӫBꪴ5r@u$ uy~5_JՐ:uL8tl `#0y ^ 3B]aJ[v%$'eიM" C$% 2Z]DwŗQZ,X@E3+= CK#vb1Fh(iGi.O_A p]2m*S!&iXR!R?Vpc|R' Ǔ⻍+-O{En -0EMD(0AW*]B] ֥Dt[ J 8ͳWd2n/ \l6Aɀd@`4x&)KK/`J1,Md ^= nh-NCQR+x%ܥL@ xTFcSj>${4Le'Mf\U u "8"d*6yLJV`%}7, aJVisLjTU#Z=^ohqP;&  VuI7I>(0O)T~VS- 3jqAkPЇB!WR9 vGݭ@6PsC()%r^G5 Rq'7Z |>\P]XRN C 1DPJ d(O dea(r0y=QعVnL}Q2Wq?pM'T4[p(d>H@! AJÀ@W~aJ+Rs!"* ljYo"̇zzAIX?pC40p݁7>=/&'\92aDvR?dM+[Ϋ`FӠRɑ!/EG7F Pv4tXKd2Ӣ"IGAЬpO5eh9pN5@3Y?(IA VNuVOVZeO>zK(€hBCb Rd3B)Ch\4!X9䷱j<a?&@.# r[*c(K_9tJqHޝL. k1ҖQ'_55 ډ%'釱U:`0R`jkg V[JVLpl}qvnJ=x9c%֯T;G3(&8TE>2yapwE@XBD.],ЀUiLLsmD鎪#hA.a> ND(ʠYjl&fa'd 2T<sI9 eTZJ*tQS-Y6g9ɑ?Nv baAt^$_w$')g_c^bjW->28 @'\( "|14n {FBq.JX1q79O #} eP:bDv\⻌//!%;L&f!: "I%) . zrTBE)!-G?I*$8pM-D}|kp`g[L$)‰SF#!/ T* !ԥ#a #=p_֞.Z}:)/CC-?oGI!4LG[^ڥP:^ ?}ZKHKe0EY9py2$OA(S.\[j#'}|!6u5 ƌLI2 Լ$X9f2t,F"g"bK4Ts ǥ8%=ժvJV۱GixHj0iZh?6F\*" ꁖ+6=5Х&pTd$U=W"1b㜇y喝k@(f1QHzF\k@؆Ա0f [u2`$dlX "-%,E/ (zUjHPKiU9Vͻ *>͖)sBM.gճ1応͕dZC 甗[=V+֐JI.` ;G a2@NqmZ~d_h֋g~7n-w@IHTT`P  % xBdr`8ӷ[a);DzjNTH,I, {!h*.5/v(V5Σ[l A4i3fx 4)xjlCLKsؖNF0<$2K-*d$J7ә놭uc.\DHDA,j46 %Wd0$ E*NfK4 RRo)7*eB&1pMimؒ'ڍ~+ ct&V,ԈIj}ɱ* >4 m蠆ηu.R{H$`I]HbhPJ+=PaJ)L1aG belR o|fr'*Bz&+,Rh6Tm(b%%ѽ j(ONB ZSF=cn6`>g!XyA`JZhI#D$\Mer3*,%:9K7Kjq\ |KUƋiRj23>H! 5*K*k1A ک -n<^ڮC#ma9& =3-&f-Z[D e:rQ\^4{ą=|8w_x(.Toh 8 `4-ŝ.~zPԃ-1AaxeJ"0eOA(8*82d9AyeRLZ :XBJZ7Y=oJkDg^+FM5%2*񑹁8I/.J>G#@U M ż3JQ+0?1kck`}EmA~럪 4! #Aɸq̰Klsǃ$6gLr93]>Dĩq;g7b*>FsK%[χLn¥KBYA1)U,Nq9 a& *NV^!<^Vx[1}X" N RܽHI5d (!B),h٤!s3{ӰT(Qv祂pאՁ14*+bJrU2teJ嫭{qkm^r< DFΒb㬹xykZPP(A֩fmPi$1j[J.yR OX5l35rV[r[yݱq~STsr~7nؚ~=G . ƣ& Fc@ &b0Xtd0h" DQ_c@(0pR 'F]f ސʚ/q Fs0W%DtR7P/omΕ+[oHJ'B"̒H\H  `Ll% 9 !<"X\ѐkS$" ] |D2<9deȱE%1' +TiM-$FԤYԄկfl(]$4Szi dwRnR)L:[fHR ]UKfZsu*3~Ӭ!W3 #VICCWC#A3C 3'HF(B14͢'U``M0t,zyךc탗 Ci`n$ ԦK!SSCwfkqԀM-D]ZrD0DSgb@IFuenNEU"~9)2} -l'Lt닽MܝːWϾ{T۳?7/ﻹױ5HJa_88b\/  `"Ri,[3vfԲnBSʹe J )p(K1%|M dĶ=mnr Aܞj3V/.Ɉ:wx!Ī%((%' &z6b{_ ȱnsfi#2əTaߊSvh PTQڶ<‡4 P v 3U8 ͌ 1Zd!pp)2m<14D?Ƥ6_, AuH*n 9ЪXp U^bG{[j()MV՞ J_&_$/Is30j6i&2丠 6CcC*u7W3,q! 44%1~>h1X63tMf@4 @"$3*)D yC@`1aL2h 0 $h  f`.Ėe}CN=yb*{W͈P,ݔJH&Hu7!t^Y{Y8*G QdKDڄ#q x|z'ꤺMcXz 7J#0Mծ(P[P~2NDHDX.,HrEiyM-L(3S& 04h$َB6`p1hÀPH 3tu~}D0YD(uǎBc!#H ؋, ȅ:*mCBSI|T ŅozJ\o;P!č5PeiRbg:'U\v&UoHU!HAPhRԌm[_-#y#L *-Y$0\0!9 , L Y w % 3kGOhF̪U >.91NpU $}4 l HF[-b7*y(aT+\\ p&g +Ha JVIqLU-*.~G$oR[Д=́$G hٹ:gU21 Ũ\3-1\180@ Z̔GёY )!;7ݍP.mǗ6gD_2⊣ T%P"4MrUхJ^J':erAu3/x`0OFpl8I cڎOL㩬A/2S5dZ.b##o? ͅK 8T͐@Ȧb(`%>m g0hŸe0 |#1A#3<DLKF lV30rMk(yn0(jF;hSZio'1YUNF~rfVi }]8Sԩ!:&f2): 3У?d9`B3AR׈B L 4ՌBԀ&VΉEr{\B%`jXCeR0ak;+b;O K!&[Γ<ƛc~Z9^RCՔYq갯^Օ0*(fli3pi976Y@+ 01PBm  SˌPsZ9S8>6H ÂB!=_Yށ]vF[4qc4F~7"V&`T \e /׹Sl0-z;NSk`(< pCKA mI5X)WXx,($uV |z]1De-ch]*ˍZmc@Re!X6U2,ExӺTf,"bB1y14ˋPڲ+׍Wv޿K ̬ivbZN]eB$.UVO9Ur:Ujc;S4xa1! ¨"kP3OaQW91bM5rq*u:a[jd‚ C',v>PuvIb%X)ND:n441; bbQ= &kv7 M"~' t57-@") 2"A(ZJD"! ry@.m ‰#g̦"\+749ii\|f`F_{p7?]);@dtZJN4?qˇEs_VysA@LW!5 MnLdkQլ|>Rh > =tixan@ &;F^2JH "Unpݺ<{[ZYx r G~]SUDzF"|蓸d$@MD U`@,:B`Ebr|Ɠdp UKv!vYX(nӒ`ßL)-39+-,~SE+Cq*z MdД(R45d,sT\20i$$4Ȥe #! \P#Rޗ({xE!RĤ/.\{5Ȱ,`Hlv P"`/0D؝"1xQNWk OD!YɄ뗮|CNC4 7NPjfB>" U$HU;6VIaAbL"Wlb a1&HS%F5$܇"1Xڞ2)Jm!A̲9Dt)!SE>IݳEΫn#De^R-g7)~hf]Q}@)uaWЦE(j.lX )dԘƹ)VH=F*6Lk$0ds6K<\g[8f&襥r8n.MV-+vb*]|N&DTTiF!C"ȼ9kqϼ(.˼iÕ \4yiIē?3dD+>4's3 CN(,KNAP%ul0(Ԍb0d_e/!FUD4LND,4D$s1+쁖%De)rKj Ct啱%R$D)Z&#PtLѣ)"]+U͟^[h%-P i1fNTf(()"rr'_b,:w*v1v%)i ,{8mZ3ʅ[G7DbQgr9lsKwGW8!E-B& 1-,ԋ >I̪keaޥT<E$K:pE30+6v.m8<@ftCs3*!0 ($ǁcjP\eb31PWd E.oK}jiK~_-JaR0V=+X70 ʍ$]'RKCR;P;˥hЯhe_g*9&@NZSA}z .s=!"N4#R1~4y$ F35( 4Y 3 C*"TEFbR &)x8cEpz $E*^O2B]"# JХ7J$"C!>_j4`$ sW=F$ ĝ݊WOeQMʗ'5}3h1;]k{^VH B(AJΡ`b(PF  0 09 35e+Mڊ[zv& M9QJRLJדVqY)$ $dxS;Nҗ/LK:v/{^}%˴}ݧZñno-Uٯ;cU^/@-uɒ,!  XHˁȢs3$< A醁((Kha@9 H`f``hY }L @QP0,.?bo;` dXe0b4A9ⱆ% =8S*+ h쩚+ f DWf  2TD 4`5 /(zw `!msB o?` pܷ܆$c(gi]E!(7p}fR&71f3@ Lp]0I(͢01 CL42t8_0p 90618DO]*}X $._2`1Vh`%> (( ( A±]A5v-mH0 @dLe8f*ҕƒbs`h$ 00a5*W+ ohmg&X{8u[MDZNij"2n܆ HL@[cPce!3Y-PrZc":IBB*lYM! 343R):,3%ep^ī$ig6 "+ftf享zUdx|G1TT0_bb%ZAbLS4 |!]]s m٩zL3%TwX` %F%ʋ:BL8h3*:cd!"VaeeJz{ᰎb0ъ1QbȔ\Гro@x+f|_P(BOgՊbBN\9n ,+gO8 qPB%+Y] <y&m Hs3U^<]BFBAtC4e DaIj5Tuv4<'!M$.e5R{m5D =7 %!]F|%bzM^pCRԭ&Ӊ3;ԧq@8׋Q혊,[RΪ.Hx),[XM͟~ ]_%2yVc0Syī6@B֑k֜jT, :K\`ĉ8JᲓA:AEtCΆCI$Gxd/`:3qE<[;LF%7QW%j;2%͙Vt,a&d"ȠEP@E# p"@mXWYj-V07 f?C96`Y @X-N`y:!۪EQFhh1bCs8e+L"/kw֪XP)aQ 2h,14{D@3bh&fưiJ⧧A=`qԵE!ՐP4EV3++88 @9'R6dŲUY8`ꀑbqp$"Q|qZ 8 ,ªսB :CaӢ2 jo:Q"bJ>rg'K$ME'EP!FM6~lqMY1a0C { lF  $|]1b8 0xK 1CQ4,y17nXY_eI,>%RyeN >'֓Z.^>?iGk37SsUUNsM/7(CF( H@(1u90aCDEZJ&$ijq! 'WdI򌱙I$*iE%U aYz"g&*"&gkjLgJ9`ȩ 97Ǩ݆>S@$ 1DV10Tې0AOԡ$)FыlTJVBY)erkkij)vW޳$Yv6iH' ď"^Ñ% ~Cc& >XhxD77QyW3-dV]u@A<7Ds&'6vhaAg#T`hJ\pc:4*_l9*g(UkbR<֍iN,ұCb Cp|`M$Q P38 EkVVs8Jlӣ훵't&h]!_WmeU3=Qd Mt IKTS ԁPd̝)d)aB .W-#NvT]J ˠ%3fGXt)yaxG^;wS o@#"/¤1^mGmѱa8'+ :+A<6t@J@&10h '1( yPERМRLb"en& ČmYEiP747է- ذE\MeڭDwbt{hrW;x3'UdGNӬCeH~W^/ΣҟrA F(:zE5Yx h\bN1)gF_(3*.5x+p0 DV; `Y6TTcј| `b  (_8pG@KYrb-s%ģ IB5;*a+0%5xCŅAawdpIPy17{,fY Lf @rD%0Ƞ  Դ׸p. Ã"8S  D& 8aA @5 )b^a0ؤ`+Raba =s&A3f"R{Ώ0u.}]_:E/ H'םxDHb-V2@‡S.}HH4Zydmu_tLcC JE&7ŦDky=L!Ώ/}b6񂦙a@6JËtZJa2i5c׋"w{N&_oer?gscbMͧq/x~R<]G8!Ml885v8nMJ9Da[{.kYq;s)oJb`p` 1bIJY%Px#j?EU U#@LظM-ƉP흛ÊcW(ˊS˺jF_WfU {]N+{-[͇8RNH#,)BW 1mNaᤣ1G/u_g 8o!Cg$dEfCQt&L+u)GOT!pWӝ•d(/a.B޽^v;j镢nRl/$I޺[~NeFQ"v13BeO @Z3$<KM`|ycժ^g9X'%3)\m%dt=P[>trMb:I !",% hiOd8ӁrZLn$ыZntޫwvPW.ڌXkY-ZX7D[1G&ݕ5ZX~AKuFS[s)kodXCD0\S E2I)A9+)q/ 8&0Ʌkm r93Pp'lD FFs}XŵBl >n%棧iW`B;*uA "dT57JDe 4,&X* e\:h( 6[{{xq_D߫'kB3$5)|\ !@5lX+-U{KXGP_u̳0]s&54鳞M ;q+ rq$tD.b9T:g( w<27P \"7 :dB޶2%t¹p{5تֈ<ݽ+OYOJr/s[#9afQ22m&I%.5C aDF'&iI LCky+ YArTaP͡0Q @ d2*MR`%h (xc D4fx+Hu , aKˡFbtnjv]3OބJ2yV9ԶMIiQWm[QI˅H6`df` ӻ.2jorSv2f``$knYU_rϖRK{"z2 d Pٌбe54'9 =2w΢0@(xHQH11'H(MdeNh94S4F6) -EuqI&K"ugS4:HsPѦ4|XG32czf )bTa01$NaBJ'gKh]ia`ő?֢S06'4}/LAustN}t'̿\|ÙRv`8={Ʒvw?(H㹰V-˩r\ 44rL1q x1LD<+<89̱td)A#tbl%Ad@`0,!v``b,4H~ 0+SGU'Rx.0V8mu[tJ A@$,p"тLp !rR89yd O)0/.~ !sSEÀѭ#ư1ԏ;u&-M]8gl~]CtuϝuĔ$ g.9Rg;1FffXV+&'@DD`TDŢ$őp٧xո1L+B¼LE#= Z7nШ ;#8BW #XkL +À+ȀTJ `/+%/iO0 )0*ȳ@jAA=U<0+0Yx ^} J28emx 5LgoY?9: o$ B)QFт@X` 2`A ibb)IiB=Yp |j?@)QmB# 2/4}+eQV,fv"6í4H^~n2mFif*׎s0M?ݎ.K j+E5jIGߎ`8ń3pL20S[ =Gyi*6) 1A{rEsj% /* jFK&AS0fH\KC0 ܲ1ͤЕ6k+@n xۚL"TT/)%ڎ 0 ̿W o($l 8BB9H:b7wMCgR]$*U3aEC}}bp#M;FA$  =J5a'q$ɓJ1rDCMsDcYTCLf\%A" !,K>ň,&$D꒺MfjDn ;("h  {(xEAVFBnC!L[fMׯ`dj0? Ē|hX͚ٛ+ViOL>l'E a,` LY c , 4 o;aNPVGUVhդ2MWMvV|4B RJ)&+gOv&uNbo+5mۘ*Hs˕,~۞(aqԐ^ODO%O~;.ݫ$YW8AF}nIP&`&f, f!GFhNf5gwX @OH GTviX[~oHfb 4@,rzfv;QK~n_9Svy,?N/\7v221lA@/viH ?Jb`gכKe $s$)зQ##A=ʆ:*  sq9rixH@aa 0j,3w0H@%yeR`à#| <\N!` ,0rI$%H$G)㷓ROsK C;L#oa 5$kc x(%a7eA"̬t J2, _3HёU7# I7s, C/ԕ9*6Nqmd4T\U!veOa8D5hWv41727]ha|ԥwiR),  AYN˨(d\*ݷE{# bi;GZ9 UQyh)]dL56":@CO4eJī4=3BW#g0ԊE2`m[eȧ$jB1ksNf芷g"ЎYofn,:eF{k D 8C8S]zUp_PV o'Ɂ$Dc.C0nmenɀEL=/)u:@݆r4i 4]Iݛec: [M3"XqKZՔNͅ^`C4Vu˚hoQy6R aTד ;q3R5崂؄"g$r^=إ76 ʱgr #`ENrU!<9ԅ O)FWPxZ"#,fnĢH&-"wm_e LTX.ȡ2{g~t7~YgXC0Gab`/͕:pEG@Il _ʂC9@s*ToR]Y8a EY eL*dMTZJuHiE_#J"* *}zM)K`,oKq@m*dGS:TՅX#F*#,ҹk_=t]N I )y+xEw6L n+-(J%õ&<퀗]36 =#(uC#Wm6,{Z"t]ɒ>苡}썃!S,fH\~7$>u;a@@HJ8.&E|"WbTtt4f dPc"8AG^145`(p1 H,(90w-9t`2`2\ľblD` B5]c՛nƢhĚkw񴀡>bnYKZU&N4.k@K1f2uRW|՛V<-}UPLXS#˨Z: r\RL!Ɩ)p5c 飘AZ+ɋ8)B\$) K"hڻJe >jl*H^m4fס94 a3A29&|{Q?f:|WwN>6xHuKffo۞yh V$._Q-ZX@v oҾN = &=(i@ÁmJPz%ߙ:fH@ T97LJ€@PhtbLVtHP1 .-b_I+PX+ufb&ڒ&`/ ЅזFUuBdbqדcu-mP?6GPlj-Rn&+/칏&b0P1 A䥂 3!y0t,Ef 1J2| oD! U '43͉r7 xI\@qa*Ԩc4ep+BꁕI7 a#f!2w=MIUv꺤W9; XtIFh\xE$1S]䉧RIBi%tP ̉i ]!ÃK@`ckG0,V(oH2D9l GĐ@Z~[$@[tsb>cĩ˸ϺLD, *HIT 1g([Sq'=ˡx1ZlńWm'nǻRn *-1!ZFD(ɕ@^{K Y* G2 r0i +NvԤF.+ d-pq+x(.A)qR!ZlNaKM.Ma3!%ݬ&`RS3nع9iŹI^7"Hu]mj?xf sΔƩR'ѭ΍Lz ,0&N4`Lؼ٭`9LTĘA9 { "d2obͲ'M( O2Ѣ9/R}XsY̽KV+(qя&Mj.*x']l2>iKoP]?Z^3 -GoN2Z5*,ل 5(9 HPE@< x#Px 8P0H0̆EH$P邉 8 E+X@áߝn1>Iy[2j %!.0ړ $dhbY;,^Xnp L'/k:F7yrMwZ!}?"}$D Eœ,‡>ŖDt dzc7{)RDnQ L$@" (O'#ת12~̡8jS()*7>\45RlG$ؼEC0kY k@9)[uxW競IbKbF0*Byݠ2`#dH62fTdjl!TnQfiXo/&82 dq&4Ay!w3 !#!Fp+5d0SqW-ؒk\vJSV~5!"MBơ ;G|enKrR 2 r BCCKbh(!j5(I.{sVv;؟twl.`,"&pR2!ό|SM Պ,0#JQ+6q#f 'P0uٝL AOaQ7< - T$"Uѿi\){ӭwT!s eU7` `XpʮMGM6FﻐIJ0JbࠢtQ;F lFD{B[Q]Z1AԂV̊*ۜL rky_qޙjA=p[ujf;MCKv ^•a\X5"uPS X+bݍc;SgoZ +ʖ NLa6̖"`"L@£ E`l,HTj1,ɠ# 6 Df5zLx:s2AJ \e@B<Ba`ل&&de(:&Yac B!J"(+xB yE@XD,b`[gqjX 4Vg%w3PrePۤI" e $ Wb}0={ի3e-.X3Č#M<9嚭 < d["`%q@'kB`9tg@ )$dJΐ21t&9#6,dev. P+rQT /q'E 0င{֙4ƚ2C —<$h+jQ7 7h(A.ZEiڵ)c=ru|{ӥqCeXwrXcdZ030I1:P2!5(rF(J 4ZQr̘…BNC&OՑ¬82q!,3ҀAc F`.$ <% 2Esz\OU%zE&@5,'Y'%̽xgHv0H1=i(U{c ܞhfq&R\VUF4Z*61U+-ɑҀݼ?1iDf?E,׹5IzfŪZ0w}83<3V:N!-8 [Ite=h^Ə6C&ðRG%0!0s@+u_kK;Әj 9D,Ia܄`.u@_CY7)2ctVx.NR[Ռze Yo:4x'ѨăR.1!ŝ=Ui6ef]ʮ5gL`g|9J4/ {bLB@5; a'?H,s(}8eiȄТyƣ\W3G @;18)Z ==Ra9B'j3v^SYDeѩ|v3]%M-y6'jS 0EѯtѴfrՃRx+:;nV۰{_bpXDO7vB\Д9KXE֤$ SLEŖ ;Mar` EII^Ji@f$^|ngrnv)3:]q Y++m2Y2 ]$"iK&%eD:`۫0V9J:RZ! i# ߘ2&%k(T *<_=smtFBD* cဤFD<aK$HoYw!aFP %@Nڔ2 WܳŬMy@*ɜ_:BAͦpQP]nÚ$r\Op43sel? 5|$.YSYC@ T ]T?.;SǛyL0 f igz[(S[{iX*x ɤTcޚ(\ ¿z>R|ߵb>_0qބ+I>01w9obZt'8=^Zu{Kچc'9:Ʋ4S7q!,pp" 5QjWg7K*-Ġi;OݪrV~'pbmIӝu{ 8&K0@B cJff%i*XMZyrxRT 4ò eDI A"/ꆿ|LQ۷᪽GjXve.Q|^X49 T%;OTs C2MDJQj\[pIme0},}&&,I$IӀ%Kzҋռ1 D%D ًw͹8BNH˸܆åHQdtI46R숓&q'lx+DꑑI#-28"F(1 9Ģʹ36ӼQ;V%HK'BCaG9(="PD0!A:"o}y*s\zMC0D%lK:QAX>fq;nQ3">͹qF>= ^\7ef %ňώD ;M+QլBpxcGC4zGj~hnؚKCz2֠uUa|k1# G L1R4&b`:N6{9e'̲x8%fECOG1gYJs!?`/\``-Oe"Qu7Ks|8 CႣB~16%NJD@luӷ\F)e0i4;= BQ spՃ `\jS13&)&C"oT' h\έHƆݝn5LD8/ꕴ*U$I'd~4"qE u;-q:4ED$-墖P^Ewk q8@MvM7ˎ^1u Jɗ39o@RDΨ1#P RLljD26(AA3AWyV&Ed|`sT+%&֩!:e$gxȓ9T[qrG( ^I1\R,IF3Fre RčH.MRn7̼9sjm W[^ 1#r8C  Q]~ƣL19NS:a  dLp\JeVZd(Ma^rCeƈ2,D$V$TԽ\2 j52|zqTp(ԍUhʞ?1s,8'BvT%7j3f!wpwgE @̂ 6P ŭ";P/a^=35L T15 }90cr ! Q|2p`G@l@Y”OH!Bh: )? ڡ!>ɻrQlSB/Ӯ/UR;@H]MQ7#Stʑfo< 쎖f/=jBfnsf kd,?,nJwm^,:w*`8TŠMϣ ˤ8Hu($`тRZ"&e|ej4E2k(>\5.G768u`702Dr$Ո9U $ШW-$k\y"Nź݂׆25ɏ^mN:UuX'! % 3EJQZ.U` O@DHFcBsw5E3Px%4 Ha$QALEhDd* C (>~[T~47Z&b{R<tfSyf9`!}"9EdB=ԉK%Qڝgǻ#ɃMƟBG 5 &P+iVr`22@ A@PU2a 2(j|B zeD!/tQk@<5R̖:V&ffǻjcLY %hdK&GĹ[K |\eyXA7 vyk0Z,-g]WY QD@Uwd@Q$ T! h`8qua/C\Hĵ90LS )0AB[(.6 Zm#B!>4`h4 `8(Sdy#ғ-XrC/n/X>Ka8=|!:P*YZI%١9G7}fh9O棕S#.16pRecKt s:*sSs[Fy0Ax)oBmxh!dPPEY``P"00!sdA'Ntpr< 1uH]l+:040m-_Ri֐^wY -7U/ImO5 mWd40=# B0HԄ}xi$p{*.2wBsc*(T `iɦ~,ܬ4 ׃>T E~fbET@#*zLVH6 9*;lVapF%);K&咉$/ti5\32YMFxM@aFڤsǃIx>9Ezq2G(Ree[tGב_~4|>>#;$*fP(N(k b`@*J,#l~ZAi! 5wMLPgg\mvBasƴk{kCNPňFLM֛_!̭Q0)'w A{JxpMyK\ 8Ŀ}o2:uJ0)B/?a.()[3:05X(L o=QT  P-i~i,2 <ɲf>:+?UBuTar0@)&{ Q q1qgRjl0k~Wljٱ^>w卐N^h*!8yLj50Hm8 *hF(E*aXa*'ԳՂ`; F,Ps<9LawUVpd@`QdEC!+~M2 OZ20i[Yn@䐊3Q)/VE&",h2\m6LCm{;r``x=Š0PX )GdtC pRĿ}'6Jzݽ-:O+twAf. J4k@:;39Ln'CJTO}:P@ ja\9/L7A_M)]6-TgR`Zirlc 8bzS.%4H $;kpPP a`хBp(H B ›T=D(UrXӹcoP-YM˩ 716߾Zx.Mɟ.yStƬc9}z^c{Lu T0]# ǃi4mw`Slih:2@8aQB c  (k24O 1p.4i\N @#3xmkI ϼ:4(S*@ֽf=&V9"%Syv>so.dtpi竕ԱZj/wMOȗ^g8z+Ã0M)*G$uQ옰sg Y cv`eH&`jw|c(@: HC3JCAsK_DǝQT<ؓAwRVͅ%(et uٽvZġSU#~Z޺:b\zpPJs8TPDM9UĽ%=8ni)' ݢzXn/.n?cf`Gw "OHPeg ,4N!Xae!N] ;Fh|g``s`VC&.|AB@fLBDHxd9o lc vfbvR2x˕1,dzϺi7CnT؋GC;3]v(d+ċ Yh -L<.|hNCB0`t Gs/$t*@UB#@MXiKx DaeV8va@BO=wW% s_}wq]l KCĤ1=8s²22_ |ou=aϙ\bHe~,"}p S"*M9 V$#p!C(G@s̙0-"h͔0pQH`'p,?JΈ,@b Pa Y5L1ZۯnzX!u[xSt'  f;L̳l2f\-܊lx+tWqMb!d*2D&&#0`(|I(`?,\(ӂcL_0{? 1n܅ }$;R[@#Yc9ne 01!|nS33I;FH0lĞANiŠ.i b(H!4{?!"e]C9%(Y0h##Ź $?,.2- %Z !`A%g;P_a.a ʣ֫PRŜwoo:X-‰2o WXvѣM.z~+3sݭcAE+e";TPiqRsM q'{p.nmp FRzH}(h pa1%. $!LS%K;:8$2vLҬU]N(ZVl?b+XU*roRSKC)}~ey9c.%9N;K넊t"(a=Ht0&Uf/`gD PbHaQEhL:iIEa"s2$i¡srMAIUR+icVjPs,1YldBRݟ]4I* @! bV@>9$Თt!єnOIC7{_$() 2`A2LʲA2'$Z9\rܲ)ףV~KVFeU&%IrOwوQG]>u2P+ؙ3c"D_aD)f0h< ^VJ 0v2ma,Pzm>ʅto׎Y*mvSķi9KMa%<") :Ҩ#!@>FMBr:᡽7 kԛ]@EdFn':*2v,-VLDh).?*+ C:)%{$\\)lPD=ݢI`qV,pmQY<*9c4!S%"@T#Kb( N dl> oO”%!-T P:^#8@ Q~P-^PDnP]6DrBE"<`DGxnbWgS7X8`(' O48M|PĤa΋#l*M% (u$W1*U-[E9cu-H%'>0P!m!dZ\DHI:hP"<:sJzN7xD}Iq,0fIiվqE@!Ց-F`y~V0GQT 6ʆ,-Z!%.Jy*9Xġ[ѪTV7LGZWU&s#|#!Hv72~A@'TQ(} - \1Iv9:ޮB?f&LvjԌ0]rA$.TJq6WB⁂ˀ Xp ^ <*i]aʎO, @ y  0<(28[ KSZ 3 H#mkbeIBzaJ-I֖ŇʢzRFBŞ*KbKQ;@ A=l'(It9B"7Ht86N(-Qk3, L "L`8u潰P(bYAq!Da@Tje(`Wuߧa|2v%t&eש%/侚zS]ki¼L% ;h̺AQ2?Rܪ7Mfl(sesz3[AqrH\d FfFf";9I-9Ն~ uk;4B$8 v2sl ,%.y#4$dǂ2YS[u}`69|~A"OW^z:(0PFKr,C4 7fW%ZMIJyc;RaR K24N*ۊ t va@ӀDf)GByJ A< <*=_1@6rE(XQc!49S@U>ʧ&Qz(# fH:5Tr[vة3kstfdbŢŴ6,)*0`e8ㅚc4ACAA%ʰĔ30\513ZC&g 1@ pE;2:_O;ΏՀ,AMiP Ң\GSbc-6. t#gǦy(B",Y* k0O.$u`y#fvr}Bjd|Bm=o]F;AџGy/AApȮeU !c*X }ohNXyJ8 깎RZ6[N\fg ;-%DB00PeyesiGXȔkӭ?Zzg(jq, y5z|> ,` 7\004p>0 2"1)0M3H+Apbʢ 913P2P+#LL2XAP xÏ& HrCYihNbBjg2hЋF;YƇ0ye[ɨ6 8C!n9FG - %1-2YS8}6?N0$l81faA 0 1! %3%phy-?tCPspc (=R xPT19 Aiq TDB133(.h,Vmk2*irl ,P`m HfhE[oRN:Krx~(t|ʵ4>eȔ{iyc8'(B2or@Li@V+\lwg[pRUSe6+B"=(,[X%Đܝ;G eҷ&*&銂fϙ3iPsKq=<"mhFVF! 8Kzbmj!tV 'ݚی=J`1g1Clϊ@fzWYԧۂcj^O2[zjgHG0OKa4m!j mSe@a=J`TYf{7Ayˍ lJ,}Xp8xfIgi%٘"0B~Zk]IO&<_W$d FLoY0@&L 3t>3/ "dh&f9&`v(rñtK|E?W9'j3 % 7L0aA19+<'+H³r͛G\54Ϙ#hH2'"Tl]1R%bz_KL:ٶUc-!=H¸GV5tҋgN'`3g-"瓞,pՇ"M(ZA`i/^J-3U$r? 8 P{lo[*'snEM@!bsv}nnf\ujb ىAHU jxڗun86'0 MH E _r$BQT&xQ&yj}/]9 kx' &\ҷrV@r?[0}K%}.wI+SKd̹Ks#O&P4R19_7ӡ2A-l7Q#~^N3 ؓJh-彤YK'exA<>betl?M7w\i t%h[q]]#\gN]e,8[GD7 ,!j#ؖ4ւc`LS 5N: W&k%ґjDGv< CP78C[,LmVp۷#ݺ%)5A&n< т,-{)T ;0IRs! F>,1'4LRTOuRLqde=O{ĉ']=>Bx$xyJcur07>WCq#QfB)"ǯ֦/VE#1%">q%iRtFJ̜9WllL7z_9g+0ko}*Zh:V"֤iDSp:c80i1'|.R9I~3f[76AP۸Ց?O,tk.ilΞ,ғŋ6.:*͉РJ0Խe1ASWIXMRAάAѡh\3aS'# fTBTPٕDrQhq4[PJ`zOLP]pAIIjt=Rޘ8UoZQpK֗aS ĠWJW ) HTeB2.eaJ޴ .jN1d/53$Ī߸u9%Cte] =|h܂γ}_|V40t& `ьF$h4l8 2MPP4uu*8 Lk%Wr!EF|KL TY'ēM,u, YШpP7(cCV`in0AP;IV .ōOapCմԠWb%N_{oÔ0V4Z'o>+(_5`A=f˳D@"kA1 @c@@+mA@E){ `AΌ2 7|c `Rg8mމcTWre4Mt}:.BܞH@mF.:ъS[5HuHݘ%O%;74=(@\ބu_* &5Ys FSD: ˟$H eJZ"lN%]JF Dӻ)OK7)b0 GTᖜEmڂ(XKn }"-Ի.[YJނڄI琺X;4Y<$6 CB^h& bzIe<|@`@As3L@3apvfF  -17ΣBHikL`"Դ8Pxaځ,0ej\+C%:.`՝&zS}ì;# 9?m ƼMpl@Ҩf>M3ga0`_,J&^7ZHJ.Τ|@,ҸHBu&b`&`ɦ'P82S9`qˀ\F9osC:&[/4vBiuJ%] U zYZ.ju-D $M`la+02gZR z:]&yF`ڍ57Xvy;>z1=&2 /S @Ay@sB(tH1)UKɓN}4`0 ]%W ua- 2/iLrj4`sºż=;UNfُu拲n 0HPFޫ?z-aOeVMXgw:,8,̪$jAFh" F@iI1(Ngn؉b;*G ,DE W)bkGFc!feqZ3qBC˘$@3Va !%5 _ (#t5 \ j>A'Z:H[E5A1zdU/냕!8niһM1 t!oJ_fZŋ.\4{l!|:} rvssӓR810elSi  |X,#0a`,0 (̌LRQ>@i}(Yet^4hdZ+VV\:m,b[ [=A^XŨ=*\b!%@(TGgq]B8: :bܘM] <ڏoI[ˏV B]0$1B04d.12U0D0\)040 #1##+Fv֙!xLɔFpr˖MP6r`J \e8_/'ɆQ& .&"&̽蹋zp$jz6$2%o$1 !l$7wUz"X#జsn HmKu$aXͧ`D09G b/2V@xQm”R@oQT(ͥTVM_H00pZX je\4![+MDtIshp*۞`ڍ}vc;e22Tjc}J7ºwC&Lpfjv0@L)2Op˃v&'6J,08L!aEf03!Ze2ԽJDJwMME(%B$=9QQůUKL 3սb!z[]P(rf} Ƈ b}8|`P26)wH 5 Z-ՎzyjD$h!ڜr0cy"v=a(2pဒ`*|NU>ӋKb|cV“~{8TrnqI#>p wHoФ{EW X! x9 l"D " 5n7dÁ#@#H00/1 c5y*bC% Ɖ]VfHKYHC"L 2'+&'Ƞ9Q$ n*yE !YCPiB&n(h#/,휷1JԊ!zkAXSl9_y< Ĩ᠔k*u8 R o&gRλ eLA24Pp !1|q9@ni$'=8#x+s Kkxw-]؆U<JBpXnb]+TPLVtۨ$O%=_TU bV@V~(ʉc?P& #NFĀyi a6 PюҲU[p䏃:D>U $sRȎ #VX`f1´xHô8݈i~] W>B\f41FDEE%29aE - $$d:}ʄ voႤOAP#e$+Nl 0YW앪UB>"0a"x1@H8&$fdcf;2 @4#RDFT܂!%>mӣ(&: d1'Mi ? 0ɉL:=LD-6hPa8 XSLHBu@ɖ.2X1xQt/I|f@A [iJJ;!XuNx0oɁ30OhxE23Z"%Z-D#b(0!&Ɏ9&D4fц0VWI溈ZBf n TLr(+ q "-7s?\iТI ucpuP'CYm\OX4Պ [TLF,dMHJ$ T"B4}wTQM$Ut<.}t+^^ŀW5akJi$adɀMm֟Cr Nl(s$Z=D%Pqb-T-XL<0/ Ɛ.]]i2 ך+q7,}` p"L<0e5#邌!$3r.gGHZ aR G :i;C4SH}߸ld:cOv x`mip}7+ |&Z$+!p,˒0C:ڤA5^,1u eStBǶ3td*PG"V k .xH' oE! ;BX]\DG,jh/t_& ހVᑊ%*)2 ]ℝ6~)P̼o'DR]Wt%U\7)hvTJ&@kJ0ۼ_dP.&k}kKXzÒ6K#%>"IR𠌨9${9h:_)|R8Q p }1I r$1KR!ʄN9Ýz˥R#xВZWJljv)fzhU@QP7Eol(XN4戼%["fN3m<߫ 8GN=4*,&1U,@ i'(XZDZTĄP AC5 WT:Ul)ؐC$/S=>J*RЫ$uʨxrszkrw*9Tp F,0t>ߜ!KqҔinKie5h23ӫmzQ@ Tͻw -D s&NE#H_,% RQsI P`L@Da !H2GFyMbTnvhϣZޯ,k/<^*htFhǙ&c1ij+/=\JtsSNeooXlz爜% Ciej:[.Eq`)YrfƄwFP#":xO,Aq8i^GPJ+;Q~uAfi>J"m9OMaRʤ25%i+h "KqILdDK".ʖ=52SCF(W< $y`1Ӏ0! 7y OrLHLqgl 5ą|*dh&*aAP3Z@@Y1W\u](:U/W©[i(Q_ʍ/*f:m}0U'ssNV-y(_ )Jx#_<-I&PumGIP` q`;   !P4MPDN8(x $,ݶK@ֹy# DB lxl! PUHk.JYrM=S;JGh4QL[bԘЀ|Pf0,dǠ! @L$S` \\V'A#ɀA`p "Wdg;$H@,$ꥉt =:ܨWt TMj> ME#pAS5ͬv7`GK~cJ19PZ GEޝ^bd*QAaFEST@nR8JtH2aaFJHaFh*ir& elaɢ@ (l $Bj_xju ؍98h'g"weخ$F l j <Ȑ' uaG V Tdɘ# uYPR"Ɛ`pFU"2a@I1,(4cW=TĕBl0FwdR<`2`Y~ c>4`%&b#l]3GTottm%V~ .lʁ Z07LdV؎0D$;),ĭy 6UZM2ȓNL$11 e3(8 R8ĬP@;FsU]2!c, 4"PؖwI@EUcS0XU7VF_Ԧ7Z~ZVv:0is(Mtu pij^ȋ T$֔P"$u'1k#+@B!& QW A|z E;oZ-4$,)f v5- ( )'&BCq #q8LL/* `]fD@J 3UG5x8.Bc\.`N _2@4X?K0ESG|-QvRXLBL^,R\CJV mٔEPp(0O%bMc?=mR߳I-dt~c<ó[B󆞂T݃°(e`bh@T ]JN#003F F,$0050z.93/ 4L+# H`Hb`ix`hbb8Da XW#]é$U EG2g%)2ހo)fS; #LF(Ψ ҽZwWmDt*Yݍ!@#FF*z2{@(d7|Mmܓ|CVfg cJ ,syQ )g:\73M̈,L86ALd"3 08,0LN` &Dy Ds0Ș!2i" SČF 1X h)P`@h<10F2,!| 4Ƽ /bdUjՖ)qF5Ԕ<_R\*Em}Ҽ AL0 sNRf;J5Jܡy  գDā"-6$;|ՙ gc!K0_$1jO200t2hI817@0`*7 SCԨn0 hP$ys$o, " $m ʆ`#e&<`Lđؐ' ᅀyX a.a"aX`>`(cTa(Ha@gi!P bF+2l$#K(^Bi h fڳp &%K` `.;KE(bKBހ@6߿-0(2x*'*^Er9g?uݷJ`7Pă)$1*@[1t FňVE!Eٽܥ2 ,Ɇ8`œ@:aP9X𙀐 LDC1^V*Z^~~}mFb IXM5+5n(vWdAif_Z%Vbl.9Mr= Ũkk-o;oȩ2;$CHTT(X\J,$U&\(3 z8&Ͷ~X6((+ DN܆BβHe_m3)i:x9(h A/ A]@qJ@al1({isL{I h,s!)I@D %Q ƢhLQ6M$W]e=Y0Npŗ?JDܔ7(VR֛ [Xerȑ]*h4g%1X -sUov'rώ{lӽ,ڭܿ[fE~@I(aśb w(Y1A ZBS=,Q60 FD P1yMC2Mr`A KD@ 0B&|earYܪܛ)jGF5-Z[K/i ie&Xap[XWV泩sm۴z n4Ӫ1@DMG a)D0AܽyVL zѹ@uW/7 jD@ƑD.Ptz( P#1_DZZ0ҚfJ,عKi;=[^+[d:Cubӫ6fo:U1Z[ x| = KPV "1QD`80@Pp,8!րx`I4@L–E o1AD-3GTOXCT0M1:ڌ WB \2 lbU2DQa%SM5J+qnvb h "'=P*Do>G$Bd8&1 WFgbp@83+i:na$&<&L ]QWNK(cHt N C־P#"'iJ3llvZk'>;BR H#"ӲÓ1LS3333i/*-GyB@X"j ! CfS'"<,TQTa"rGC@"F zG 1& !>[CyTBLu D")E%fffffg:6{]]e¹іX2t61p0XL p,&D2 ϛuU" :38(t<,|  U` 6^6><KYbLQc?,.EǶ$eB1:e"ELZGo]*oB1RFI  *taF$d&nM $Z8H@=Uc2x8h4iy>c9ia8}24.ii:g-:>qZg6LE'BVQ%(" l&wzY<t{`΃BJ"w q!b] (RZ>l2o;Z<,LcoIA?2Uf`!FvFBŁA2# 9: LᶌD@xBh6T$x:cT{,Vߓ4h˗:^{d0z̲N1dp󨊋sSs(c5^;Wj<{fffqhY߱  +ah~A 4# $E DΙ@f@I L( Tb>'A"mӀ2.ij%y`C a&R@&s?t\$% qUU1J0|3#HLH!]ΆtmaWJ*"ܿB![-rS3:R陙ӣՀ(#iH@L)>=b&\j6;t;85:}xcU9woI(xK@ A'.ʖee$8;2ޒ%]!$>l!f8_*%XwLU䇢= Fxא=zC 4< Zp3y@Jj7y08XY9r]{Go` !&pQq4XzHС KľLĜCBv HIZ1 T* *8  qN$GTAIDr)G?* wA(cĥ'cQҟZKJ #F%pLfan/f6ͣ= l수 2Q*>:$ *:a0<5N}{oh QG^VNw 8AM$R~JlG$Ta8,6xi?,jfMɕkU 97#z)a?o\TŸ=^v&$X{{ e ܋Ji@4-ibQB&ߺ|#Y@T`r Mz!AwHaWpJI1e*Irv]y u2o*2AA"ه>,Jm'1*kM4PU?TfK*jj5nl-,s' ݊Pq2ūxg:ո 4¼[W7ym;ң8R8PsB 5EK($ Dp4SGHD.Ica! 3^*blFXWT@0!!fɢEK5c&kR"ȤUVit>_7ojwU]&Ěe|ǪfA$ѓPǣ *K 6 I*e/\3pDJakr$P dB-}LEEy4gye1ٳ-#)L0-8.k' &`7DCڿڋ1 ɹF &@ˇQ6./ Ov>cdAMLK8<31 r HAF l$xLbB@X4ԭ!B8JC!aE` _J!sr$FL)] "n^b4*bԦu:rx<'$ "&"$JwZJ#zش,-v+{k:@Je^-\m!0..#b&0lǪSx3hKSm x  BV0-!D`2 $! :i&cqFL)PY Jb35#IR )*m1#2(œ\IK{pը բjhfabtQ\)׍ZŜ=8YXB<;:FQF{MW\AĽ(]5,,,: h`( 7(c@_  ` qp B@@@# ,/0a !ESiBY17 E0$f,*g {${+r[JkRH p>XC}Kj$ !@@3,AGVF SYmR7)~#O{> g^];2vU1HHhcU4%<,c 4!XsL:&00qbA&pHɊ! @7ND,B<.&0$H2G7lB 0GW.]n;QBcÜK8 |AUҝ7#'n  ;c II\AARm=y@}}) %zC r[5L1P\(.ȓ^kNB]&( :UH%7fͩa_+!~ZhZ8rtʥmX!˙kHyw NgM4ԌMI1%$v*J?j($*ʄ#JPcA牥 *.aab"b!Xs  DNe 91-(&ShUt*(h+ J%%r:aYn֌ce]H Y9? N hBco]5CU+~+ Id?`d ,1 <0X9x3DCL0aќUyX!֪ ̚2PE9^n4AZ0SVϙu-nT[.Ez9 7iN\E$^G!q! +_O/_޺LA Py(e @L.(-AdP4X18$IQaBm2EB ]Ua} )FNm; RjFA$ڧ$wfke #) HmǶVIOC$–PS3;Lvu5o8.ߐ2(PIBTᖓoB!BA0;x;iDdmciUػ9NeOץƗJS33*2x:gK*F$R2XoNF\Q~P] kS03'=( ` `("bA+QCnqW @*?7AJ%)Kjg #62PT"KT#T! A% b 'J!%JmZL$(8!94c  "LH:P!a j",2I( 3`]E@ $d2ENG h;~d$.K$ k>+nA@bBOk6Rv1Q;abK7,(0 ONjbÆcWݘ0)K jF1.!`dJ} .H LG3QM M'0;}WۏH)KG4cō/KOtiˆnI߽Tt}R1$+ O¦_u2HVonoEd)(Yj_,x:5.|siOtq,.E9,Xn!!DMaq eyنC hDLZ[$ׇU|xbvme8>$-^,$3m?333Û8ÓzxA)„Vpn.a/P3R@-5 յgo' eefr,G!=" J2XBNl(`u`Ï+|Ъ "8pzRdf$> Ic8<ғZirX/'م-]ZX0DF ,?ZmF>w<g>j_mYV(xbFp:,G( Lq8;Lg~U ;)*BO툵2߅DcJ@X0@dNI@Ď+D = S" 6Ĩ,%]#K$i$ Bb .ĢۂV_r~q+'# ?y7Y3Z!x(РB2]Qy` PNL WLЁrÝP̛{#z"Ćb'G"Η4NTn쮆UhүM$Cl-?%(0E!H!0l/LԣUK3ORnJ)g8IA k* VZ8Cm',9N0"Bho˫ժ o\7F`Jݙ<9o:O59鰓8nm P[0,G~K`X-%%` [X1L!.6|y'1iܤf3"ĪӡO 1RǦ:Z" w!*vDD&mDk 'k?nt cdC`fC |Ndt@Tʨ%{Mn=33cU: @BRtN \|0*[Db .a1"@:1'H)AN IE]Lc1ˆz.+WRβe nʃkˋoѝ\ʡV23-/{ Z5ә"|@7Z>uJ{j:9K?zYd*8`@]1:fޤm-0&B:1GNK7#( EʆbQXăeN)' Zk"$Λ*w讯SO9X jScVL) W$LIKi5'驑WdP'wV l`xtl=YlX#@FƽLJ 5A.IВRX9i+X˂wJM҈c6B/ [qv>$~gc3ZxCAcaZsHd7Ӂ t^֗OjfOJw XV6L{Zݘ:RD7j4Wf&vX,j}6ӘegoF ~P½P.H`h @\]*d#ਇ@74aN^i3qE~ʮϋ6adn4l | Co+e`^I Xu %tãĂS͠ @ rw]E4[x1NNq y(uS< 8CTdR7~h|dd(!D4fpnPASHjv P$QV8bc̿m#Va*('"W FA LO7HAZ8^-rt?2?X10`ؐ0)R#RRl))Q } Bi*:MURki4h.̗l}8FJO(9I!n=SCbD8>l6|!4=xRICWf ٰFGeЪ^Ba-z3ƌLA"H<[3,)ưq,E^S W{g+Հe-9!6>( BJjX8H)̛: uL9.BC2ĀQR4QLn-$9s)=JR$U;Qyt7E$)d= +daa뾷Z-\[$l~,suʍ2 ЕeV#fpXdEpJh2c@*H^%$j18DL8$0X$sXHCf8#"PhaL@a  &>pApH&(!6jaNNH0ꄤ,bk5ܣ lcDwp߱VvA'5:c7>ZΓB F~ͫBH\0hyd Au5 V(O3Ap:4@`<0̶p&̄d 4!!̻ᩉDkWhe`(ʢ僕0Fi$g.q6NZA0PWX(zg (̂xyYFy_幟w߅ Dfk,'L,`1b'Gpr_3LO8.| U /i0uD9; i J"/X<{X.PY35(G`2VE{ ?t8tkG80}䱢1hҘU2  C m2 l58h0`4 J :0,t2 L*|Ƅ& &N2Hu5q&F!4%Heze2hlT|SH3>e3J zT+kg?ьV;ۛaBX@REC3,mxZO_Z[pu,@Es:1Ęl0XiۺLL"O1óJT+nG@Kx=%m_ϏzW 6# :3+լpV!߷^'lr5Nyu\*_#ڭ5@{%&m٨j: DP|t 0QP8YsNgQ BO,dxOg5,!a\!WiИ{}ָUf껋1Ռ)8(Naѡd%s+ "` L!ȑ `L=/ڼL>;CeqPůc a >:/R5Tb$_KUkxvO38:_)*SEdNIEʥLO4690IS!f0ħ[P@IHG,eTː(tۙ^MsM„k53{jA!`3bQ(q&nBFP:B0LN.J8Y 4]8kzzB. (%0KBS-{'aJe׀ }89Q@[T+/CC-$ma3Bx/u D;8GE]&bV\}L=֞)B&TOJ-@O$!@c=S )6Cg02.tؑ3`$\B,"y2|1\@!&vTq/8BJP\@ -{-`85!j/A y|mi8lEUGUUvdȭv&թ|MCJxZ,̊>U:׻XUh[@(HH#L3 M83*d@3/:G9aԀ^1,(!1"{ g(a`Eb :hHTYc@yTh `Ƅ1yM'$Q$Mwq3$@1*4$P^!G j&}j/V'@`}U`62yrRf9DeK!\~LqL+]n[ja''JuRn?ֲea5˝~?c419Qaj1ACC $3`3I@iS-Pݛ6o aj%ibaY &qx02 =JcA1 0 Rӡ, ;Z9SQG^E3xP.4HE&bIj3!`&^ [e9u^v(Q?HsQd7F ^%0 Jw]jcxςE#@0EC 1~!s)pp1Bq$>L\N2C@у !< MɔB4I2 p4qC"F5+4t`8J)-ekΟYSy+zw 96G沦mr3V<&-I)ܵSP`x\oU`0 Y0& B0b0+#4 `kd`4"0R{l*-B$eAKb蠐I%r7u/tU F9tRC5pǟ/7S! 6! `Gsp$-*~Zb6XEX`4Q@ OtZnY\"G"AÜM>u6P-ET1Lv44ACČMLVXdhI00,BfA YCh͔tx  dAg+&aQT2`iB(9qخwu˼ֲu1X`0 0c5B1iR7 0<50 8$ r̂ULm b[8ڽ7x]*CM6tڨ.,tqV9<{mM  ƧD8bjU,XQ/Yh?IDlj$ͅDO tLTq./ˬ'%lkPTFR:A0(l81zx5D1-B4! 1V8] 0…_YU4O׊u'Ɔ<$B`#7 iPp4d $Luu9, u=`@s> f.^zQ_75:\ YV+o_7.iȁ96nQ"Nqc3QB3Xy&"h21"RY@893 HyS#D5 Yt8ER@J{7Q=&P! E߹6E9: =ʻ(<q4:Eh3DJ˙}D\˜, uΧ%[:ܰrO*/,O͖,^WaAd)`'ebQq$sR2#Nd:.r"r&oCP A(AOu¼"xa*WD}tn/坽Ê4=k2S`s ِ͉B- D 8*2=˕\*"<&q<j7spk *C;* Ӝ'kVS-Yw|‰ds .`>FGH ,p-2BX4GK6B#CKџЋKE =6ejN,v%;!R;KL=l')xGl?~Ј< sLMXtz[TfFQ)[p*HrJ9|W632QS;`1\y?JQ&:AqUBR 0NT(G`tUSqȇiEezD Yq6g ]d&>. "pblBL*C!j)(TCf΃3N`qJ 4M =ÈB! xC.dQb/VF^AF+P3%y{,_4Jw +e֩YJqLxqt7^3{dw62ƽY- Pd7#>7#sɩ>)p`rjM7JMP:$C2@ƓWR] >bL2: mVrhTzi0`&ɗbR %P@0K!;3pLƪA6hƫ.7MܮJ({cM̥Jq+\ש rcS$!iZdP?bE3!.Q(Ѕ"O`nGLI7SL؊dN#UQQx)OD3drZZ#;Iv+&L( r;7 Š~OU֑7FS5mj!GR놆vcʱS:ƣ &糞Ԯ8'IW\A9A8=}ٻꃕ%;Jnik襨YsUF)lWM^If_73V:A1(4BTkǙ ;d{Yl}T@JUGCG9@C -  3S3j= ##  C̓0DC3!BC!΃,{#>L##j?C5-Iq{L] omPQgdraX`ـ ` F"  80|F;i`<Dl` uɍz`N`(Vbf\Q)&+a&'7*ՏV /kHu&;4%r|o /R {& z #?36(E@E A2g0 #2 ^**$h11nfC1&N(b#sL/m3D&- 4@Y0PBѨ srD:@aBLA!%6^Yiԥ'%VkP.L1(K4T@2/wK5!b/֦ûsUln\?If]f5GvaۆVu= Q!$Ff@P[A&5ӭta(`gY=X$0@%.g L(>swn֭ۤ[z+@ :JK2 8t*dX"  v$hC t^b`pgņP`1S <9Yd@ 1!8BfԦǃeF \#0<0B#5e8Y$( B1aYሑb-8$D3 6%eRVt!)r5@Q6c qXl0;s &lR'qKƚÃ^݁%Y?_6yy;rFaFjLh` D 4 q<ᖂe=9 X[t@xW&0H$XdFFf`dē0t aQP379Ժ~=M(V,HN^ 5t,LݬvBd`Z cAlDNhi : `A &$*gEX0cAۀ &XCV)2GLz@ƠЁQ4aDtJP*[ hԹCmTP/rFSxxfJS kEIK/sGh2gx*+ٺL|]ЭH[  H+a8b`& 4h$% 1z1!ej85_B !"DńZ |BpASCL ~UwkI\EQhGbE("$ 5(B33Y^{VYqͮS}dϏޕ!)(ੋq2))a$i"A)2` D@ !H i&5ͭFA(&Lxņ3A2>-]T:DnVtَE3VS-$/.򰪥1N5ƪs-LA $,;5!á(*!R0vaAAA EH8dc&}(* tPJc&p FTX28Mi/15̀e&,\Ö0Ο.mkÿfoݼI95@%mm` -a%73C†ۓB1J`U. ()Bixb0s莒d[ }5WiLp83)v4fJ ܺbCT$$2*gʛ,AqN rt!Dk%qzeB UB3}R&YP#IH[crK [$<84_:|*8Xb k "֞ VcҚGnaG2gQE_4;osrt1-L/#DlL׎5!s]oҪcwM-k_[Ke{{K |;w BDTi 2=H$%̙xB-l-x.V+ rH2Hs h`%&k z;=ܕjʶL%ti|*YmfJ/9K{ Z}pJҩM-frr]}5oti0SIF Npa_&U~eaB-5[ !M~hAe%?":( !(f!@U|Gr^WS'>nY;oӶkt.@by& <E1Sxv@kX` ב$.<*X$a@`` #I)&!*mvHeYM y(ytEfV>stB1Ԕ͡d0]/? i\D_|Bah':J/9ʲ0P.1xX"[Q@ mI KEe쳆iʨ8̶P;pb; j62<9*@&2U@TVi pMWB/jJ0ORX2 $hP V V/o 7L^ ܪOJ CiIl eE2j)-K]f"x>LG!$MkFXIhrp`_mXqK" a-B䍬%8&C@"r :,=-H3սne~&kS+K* LYqjqQԐLM4d.h~ɃD#y:MRp~׍iIM@ԭ9˕ŵA̯U`iĶR:Z߁ DFe@PEi fnxp )Ue䉢B0«$A p :+ ,eAt/h*C] Sv)Nݗ9FiT|e&~40CFFm.($ySHYd :喝70:1퀈Fu HCNDdz2-p.rFl 0M "x% }ήc@:l =- 2$ ^.V ??@ˊω`XnIAFW ,$փ4ͺ9iYSvi*l,5y[!0$Qf_"$ZG#Z ఈҖ;D؈#y툏㒅]W[dC|oV 3#a XHG֩0G?&[ DB,`ҭ5O׳\Ljl],8П8PsѢh xhJ$ XaAc?# ,Z" YHjߥbL8ńLYf4"s!#dqkKRđ} "$xBA$MWLT8eHIߔ_xV]Yg,(6^/$>Cڶ-EȬ]FQ$g7'l˨2VM~b;V{N]l})՚׉gA( .5JƗ6P l h&g 7D+87s1u!ǝw[hn(XvN@Ѝ_p9Fʹ?J,c9njr,y_YW>;v13cbX{yY{c,z󱍋ֲ9~\\y~O0.dATM M1"`9"BJ DC `@3  {Cj2lq#Pĸq'M`˂h$%&*\i{V#8Zj 0G& Z.<5hEH!kᏫ@cU1Ίm+k݌15K;~91[ҡO`yV]5*̘P+R/d>FXso^@sH1 I \ aRԿn^ ȊԁV)LgU]l01 tV`5ɜ%6]3s) n9U?U¥ٗvr [龚_ZfMUu,,;?TO̜Aϋ h` 4]85; *4;%_Tpڀ})+9y#۟8ZU)yK5hӰ ;y)B E$RV๚7 eʪ/ѕwW S&uCHjwc,槦h( 切dJd1!X1<1EZ"2!AL  - & %1ӮG ζ(aAoy]p#yJbLpe)ҀY/:-\7#))Y"SqZc_/lRfyُ%:Mt%(z"^"? _C6p1\>]CL37[XbPnF%:K\B&PAf[kF9g*l(42 Me[o;\QWa3F7 Z*j R7V,ZF,2%M]Wܟ(hwnщFjqڌcwDt8*y6t 8_㖃 B^XCHfE4pGFf,quIC#D^8dHē!˜(h*(l wjw gmvʸAg`e|ըS,Y󀗝=FiҤh%zO;۠Hw{Oeo8߰r_B c C“ cXQx<ٛ#2w *K BBF(QU5f8p~yTv]ԓ )Ú[X60)EVJ^cF7JEp;hFe5sfi33?bl^ȬD2(} BI0XE:E$WP !тca @@`31hM01p(L'L]# 6=  q`hYcTM rA( ]K S)r:+Dniť1;ӕbv] m]r+:,n\35$,\4cYFbx/Juc^Ӄ< Y%@$ff,*gnI#173%\ȋ - @l(KdHAL,"# hE@AHZ14pGjun^R5iv?TzXAIAi4)TQ0S >>LBLO0 M>!bOaB 4†i~6!i@XtK%HM )`pCxr1¨ iNv|g5P+= gV`?Σ`\@ clж/ ywV*\ H$c"cڐȍkPCj{YIsСoM\+J4g:\"cVG{<76aDU$ Jk$iy:êÛy+lCFrC;J!`P0 3fy i4ۘ[tjiitTJKqoxP˔ En2Hć0@3{h4} h#+¨;nҬAK;^ꮣ ;Ț"wN kJ!A8lXaIY%<ٳLq5$@V `ӨS)cqgMr8 =UQn͈%q+:K)gԪa8[ZeCSї j'0%a"r/ހӁQ%&3!5Qlc%p rx`K" MlJt"XMYDF *"7}iśDCC!^sstaJck8>v6M% O0\ZȜYJT!ybL'Jg2v uИSAl[fԨ!GH Ii)\^084n*b* k,oCg]G D$ɣId;PlߣaRx f]%9eђئ^c4PgY3ÚbBbJf jDܗ,AqO@Ufh(rq|ha)K=3!2{CD2#Ӂ22GXȩC.]e(.܅uW"}5B0A2!▚wCql-ׁ\xKv$ʱ! uռ8U/ aUA$[Q%<Ӹf и;}1I8)G2NF \֟?NQ_T:0PP=ecAd9ʀ\:$]S9Q ȐHgզ.y )KOnҔ%PyG&c^*f8 R`7X.DylxDt~]wCfa7uvu-"%U_F-5Fͧf##K)^̜sh XL D`Δy0Wtb>,z(BЌXi7XP(BtGdY CB bf0@a&V(H(hcL8x (H0`yhAS3B-H` gapJ[UpƖƒf Wlm(FJ(9E8!EY.JJ04QAnl`Ǯ(*΄egWBc̬O mRS>S .u<( Zj<cq5b,fq[߫-a+ Ȁ0'?2kONQrV*t-̪`n>njv6?˒9 }tABc~GFJ3!nL5]& 2O!mƼźA7 9 NlI `SCP80@!$nYɆ;úel;,$V 80T+0>Ib8aE{WPCUٙaXg+f@R)~;/T-,؉-.P.GT.-*Ke$HK^B:R['v:Gӗv˞i揭u L@#E:y1M0&@9J8@( CD%J('|Emքi+*) }(t>lɀ%? =3Y".iqxX|z?H^)FE(v&Ie)egAu\9 *Y!"ȔMk4Ά QBM AVGrdす ,pDG0 Fd" l5QfTE0hDSl-+Æ:9P+,]g Fۣ")J;3vۻ}}`z;Q'=el„'\.+\CSZiYL8*T`&.ZQ!(Ifa``AHczS`5Dkީ!9ܔC 2;rΆW?9_FT^ubK`;( r4-!1`(R`у`(``1AH۰2e BrlMH JJ2"Y@3$Ŋ!, '+SC!x\(b{/#@glӾ9ffd^x v3 .L-ow&oPQ^U zw Z "a1tQ|1q*Hq014Hcen/%Br)Fj%uo{$ysc[郙M.s'J#fE1GzͽHX0c`C4ɩvĚFaކ$YNu1J[__Ms3UcsiU= )dcfx^o}Flc vh4°-t(*l 7bUQcc-7U\4( NwJpl)*ZGu,U&8PH(=K FZ&0Ic@U[Ҩa4jZYUꖕDk% #@ _桬 )Ad@5񪲄$U̻~𛠳Kb{'[/.&X Ba`Y1aё`~<(XbL@ ȃ;^`aX -E0/c# @1l;AUa{[nIm7zB/U޽LZFJC(LQ0rp|i`.Z`e&OS% 2c0iLF  P2XF0ÎX2IB~c&Hb2ʛ#&1x4`cP F J@F8t-̈Pn+IXq[yAftM02X~h 8'P_@ek>܌$B9f`Z}_>#6Qz@Z@60@ /(SA",ā0pc8pƐLHL 0 ' Hp)J,lc\`| %0"8DƅO)b3B0 0! ( eS&^IA1RА>*,P`0'q S&9*CxrKif6F|u3x3333zg5OgOy~*/p8S<%0m#'E2YloS& xGX , 0DkZBW^NEc57XGiLS`TG*ox ɲzl'ݦa1%@ 1>BˈW.+QD(N f[NLgԦ712fv ̐ _MFs0B@   B &"e+ƔyjÆnuH$Bcc` j]łq5R\@5PiZd1.E>3cp+g]nJ}zj% ,==dF,}r8 3`paȳ7rv0<px  "r0#DLJĿ=Ja2e(1z5٬bcFlK$%^U/-.FV)ENMb vSQ=˜V}_y %BԶɇǟn)\DP.M8UEO*?gZWf0ah I!0 5t0)0XQA0¡+2 ACYLJ: UC`"ɴ`HT{b -#+GfrmŤ]KAB1YiR,v~ t5Xc|&y&O<5Xp$]O*HN8ix$QV\=4%)SF*^aC$ xpfVƥ9\J:33C59 ́3eF$(P?j>uqg.dj$IB ݃ BndSC !& ݢj nU$׀YHŒO6jRz("LM-psA!ȆWK$ 2"1A@*na B@ o倏92h&("(  R ]W,ւ PQTc=ʢVW&'阄f' rbAPSQUci?yWչ,:o¾տZX|ek7TؿaF^%3ɴc5+b0Dl>1HD]cLV51ӚW*i`HqCf4b7s`64|1B40bUM1 0QP2ni)dB+/9x (V}WJ}'"r[jТ^}]CQܤ~wjAu0 8e/̺b7RQIcuB* J0bH.S r`)ɽͻE#q\0C TE]Ie6qY1Õ}cw R470##K1RH|)  L DMMąrMx NѲs;1A(6q 0 215csIY>K L0HEѣS?A GBY%V/o+z{'̀ [7lo+w^@ C^c!jknp*Lڢvf2TU#jiTTg .H\Ҩ3&wk1$  +mTNA?9bB uLZVसb 25AHHd4!l#>²ALMZs*ImȄg!xkuR#iF,ߺmbtԜدv |z/ƒs _k Suh-j\ElRHDH$6|ܾCAѲ=88 1L3Bz ʾm(3u!.KŕdAb-S'LOaOu`g5ܵHj ɐ஘K;.KK#8e'S;mzZk9a0==D\#gXFqщxEaH>, EkːPZ @i`!(okp+M{K>GO}.z~m=pn I1  ~hgeتFx!fZ\!ee]ԧ*eNwНr" &q~J:, \X1-}&׆gk.6ãxVz!#$^]$޲cSǑ$`Xafu WЀx06Q[K{`M`*9PFHf 9-QN@FI |޺ʮa*f=)!\wzf5S>g*I$1`I&{H&Ygm3-hI)!1Lڂ[敇HHxFD#_ֺE16Wf:im- ]cI-BBƈ 2FDCr,jVaO/ґ@UYbQ Qɯ1<#a 6&#m&*w8x b=xuUA0R .<^RB.E.AbYa|ٲR F-h5 LPp,(X"Ea 2" \)&Ʉ\ 0X1eT.yI8DGvĶYu)11`J޵˩u[ʽOiR+R'3'bLR1Tk u?nӪVzHF|pp~pnffݓfm72 ʱ(ɗ;VU]qp[_‚jwO .gvXvY*VT㰾GflV4_`@?ly-ڞs®Ha;\vhA˿k25rP<'X!ju:2ѩ 'WODDh-`T&%--}/)A0KZ @fM'R5`7My[oHbq,@VE^8j&[X`TX ahzQ |9; !V7feJ¸# fVHlG0sl+#P edfF,8&„XT\83UF13E4!gY+htaF,FХP>^d3P-YDp/A(EBry 7v46-/;ͷ:66dSYCo6Qh۪&kou\AS cxM\5 -va9~gb.U?FyTsqec}=mL1Ƞp!@+8(Ffe  (,M]eMN])o_ ,쥱̺Z\͚MoNtwsM]!ޞ8ȠAq 5*q^WaJ:T=N&@UirO<&J1*Q@QjLZė#8MU"'ݳ#z`zMǩ@U 0vvknb)Pb6-1+P$!Qcr**Ƥ1~\Dذwh(eqEcH ;A'BE2qhٌ.N4(`B50B,f ٍdBZԇc J6֬a`""K<ꬪqRAo~Xl6"|"s5ȆUDMƃ). 6Hh _^O. }/;Bx `b 8|[RF/C8#D{ |#ܡ'^,sGF #D#6@H"bv)T ^iuG̾E!B O<{6,1KtQLJ l&[$}1dӊ $ &GAB{ 5T#^V͡ ˌgAd.Yʕ@/dfYY01-IQ  Zca mzA#A*L%108CPvj\=ܺA/ً{j}p#EquE880O: xkoߵq~]5uT5TmB ˸ƀ* Bbe!@8"- |!{Jg7<$y42z̍Iix985*a/O!|@!I{=& ӲGz58rc%op$guͤp}tkŠ.vPݜ̪.ޗDu^n+avjB $iiq‹ߠ : ;B~(!9XsS\Ѧ#*z_]uW-K"nqȅn=G.TM)32,-bUn%IJ J!Ad!,J٦ќ'X< ɁPsI]α8*o).\  b~- B}j 5!iH/ v\rzjY4f7(۔`/8 l̒D(<(&M,,}Gr'?7+$Ld_ ҃=ꍴ)fAҧ" KenO4/Z2ܜ S|ka!ȈqrN 4HY` 7D1SgtH a\%MBRk0PIY&8i,?QHU9Ib}IDҧ"GI#%J@5esk1JmB =@HY@iȽ/SQPJ @y,ŋZ1P;SWc 'g.TŜ4(l%IˤYuTE\i@ e)8=> '%AY8UXv h83ԇFN& 9 㥵Ub孉Z -Z iwǃzUW2PxS+ +x}sO2^vAkWCV2WvFX \yхp Ay]"A gBP *b.zQi\d-[Fi|ւOŠ`PA@Z!9Kp-YȟL(c%a~_r"2b]0>Ll#.i/Մ$HaR4Ȑrt&7ab,x"~ $`M]B.X @U1F9 },ޚfᇛaJR_ޥQeTLFY Đ2I@>mG~gيؓt*RR'jA2 0U=Q <Y\d.:T^V-Lԕc _n V3d0inv%򶆛 "y-59뱏̸ìPkJ]DAW(h},2jNЎ7 )C :2˩a"IOLE HUbm$Q<òy =1|Z]BO$Y@p5g)И]H)yhzIM4 m8Q\7y6/QPvX8'AhT_W(F v!OAz]ùiı  \X&?ӸTY6IE_H f6D^K.Zڈ)Bi:0q.d-frHЌt0b5Lp ,F\ya1$Z3OzY[óCօEK!!+hЉ[ DԏRAL2ޕ@E HRl+ Y߫> )a 0 %1!B (z #q0d2D!2$adE^0'>" 6 b)JtE1P )%, 06.Сܮ+$TntzWW1%dٿ4x")\ȼQ[Ê#J.V {BDBcRy鵭˧jH"Hx\2ڙ0e4H̙#+b+}c+ S7 Hˌ0T̈́\ޚ>-AaI i]GH\ߖ.Cy䣶 -+MV(d0o]?WWN&r,ܦf& 8 j^Fg~eV9-{uy~y]"Q'L14̊'2qƀ (4Q#M3hP1M>A5*L,2H,. )6Xj h 3AL`20(yBa dh V(e B"JaD*fʱx /v 8M ( P@F[/|ZdxJej\@21Yvv51K=UkԵ!*,,W%qQljpJQr%s%?޿XwWTu5i#BC9OՏcrzjC#'ff".Jei' Vf&bj&"`B$Bi-<t$kvetbjaآj`  L7 H>FL A@(a`2`P@#,09 @0 (@j!`D.(j # ED,B`Z؁@ KGFpĀ7A=.~og*PIc,f%#VZ}{qKXPXe7 `_o]qQ}Wa`Qd/&% J`R!f|$(;HĦ#e,!g뱠ft JTo26"Mtg8SQ)|c3ihpw0Ð$R3ѹݷ/ϗ91c]L7O/Ͽz^[v'"p4hH2Ûv́f#j [@X[PTQ@gI&!qCUfi(AH>4R0Nf-I&8)<:aĐ epF&6Yty1==TR60HPr 3Op@ E f(dI "SEv#VCPb( *@04k䋍Sf-eu7. sPÁ%E%ֻٗ7\@OG=b-**R!pRO=SVbF䛃3$!^TbGx걜X X1a)jg\eɇ$Fa%J$Ѝ} idLJ$#H&@3DQP9 qyhmD/&`.<ʌ dRvΑt09S XKZ,nm aK"] ؼEf2L6ʈ$)ʪcgPF0XFPDuR(!+ ^<9R]Dή2K=? 9k zs)]?(i΄CT"$7@Бŀ" XTJQ6',q1n7J:DB%rlfSDҙtf+mj9iV# h;de&O`w6\"KFj "|9[ѮU4xI\H)H,Y rJ]qqBF4@d-W)% *eQB_krfQNRȡRr׃$$dEنWC3wUGI,$^BP'Ŝ%%4ek.)df{mj "JEb,8+O@ )ttxa] ~`P`R 0L `!طJr_N,]K>Iytd =RDTT`$AcDHWGj"wdTr$s70%׬/I$D\2BCYu31aa qp+jA )C)Cr6-u^֖ 1_HBUDŽDsF kRhf{_k*WKƳ?>T"UMI& !{P9„UAKm D"(G08bB7Q460\ghAMe)Y' S0!KB]gG(oOTw;SMCkQҐ/oNX:wxm1Ci"ѪsP+:ia7r<2%CSbmeEܷ-=1" Hͬע[$D?4+LC2Y[>ސ2cknlZ-.R$Dx!`" U'%&$"ofE8b< -:!+A H޿3Tk8VZX\[zV?}ts7sU'0tjDʦWċ#J$RDͬZȩ$$y@ׂ,#(JHL$J6%tk9Uưc(J& 0hɁ ^b(,dp0`#Td%=ȿnX: R@^>ڽˋ)CHW?Ҕ.d-(K`ZXŁs@eGy}"cHaEudfLR!Vn$H&~X<*BV̼҅;/-^X:hNfcS.IS*]U)C 2D y/\'&xPPDD  6b1Y3+8ߔR >0$@X8VY{8D$Cĵ>Mz8hM.ZZ-a A7T' 7+qNR}: b2mB2O NwOKJR6G5޴GYH* H)6vrPpѥ_Ct&h0bU|8ԨdɘT?QoSTRDۤku:w/39y[B \PawEܞRJqrSc2!ί. .=^S?]Dkbq@ 40l@B@wX \ ?A +ɑATJ"`؇(J <NL,f%&siNa)`I @"0FpH  ɠ3ČhMzO LLlpD@ prc:A!n D ]2 DnY0\ݙq;z햂,|hΎt-՜C/PvD{G'#Zd[xqOSS %QBfH8aGf f4`<V 987@GX!hJV22 B b"U,$x1`‚j1 U'i#ש!.i#̽h9~-Wߪ.NR3925'5$!vqsV=/,װZ B, r2qX-bA# 1xNHejP lPc=1 jx&)4iiLAKRŒ* O:"LR$)C,ctz`"vDRt4r+JBG ' *8޷QSq`ֱu|lj{T,F0@A .+l! ebfhi.$1Ap:P%te3J%QΑc.w2I`ĎMy\;KQ!6Ni&e̾!PÙՈ4+i~L2ڗ03ZbL60"C2z*H(sKS$<02@ I@-LU6(H DH@!å#@OkYewW ˲h@ [DF` 3l]Eb0Ц~#n17-Lû2r%)zi mBgRH7lZ -Na)W&VdTǤRR Jg1# 1! Od eqP\`2lyM%HZbejqL0z a"6^`QsWb @" TّM0\c`pcN˾>Oy\M\vSrAiN\vy} |b_J#w9(9՛ԥ_|RpCX.Q`QK8Nh dɁE@BLH`kQ@@prqPDG#U,~PeX~7AP3@hYBR HQ`TNA;o$~o4A!mYMB0 L.@%H|jh8*qEo.t˓u! 6*@8BJM9/X:ֻ ~J e0 G@@W9:C}#-IA&8=!1aꅃLu Lb =;".]eLu rM9$7Qi-i0+RjwwCFr#^IrO)'\.dט:nQy晍sq0iT$/j4 UЕ-PV΢&@HC" -tEc "фf biP`B(Cڂ!U˸BI RK=?s_[́m4m( AB@$%R?dD2 US#GFUGDScR,B7ltDs<8U&M 1(M"ҝ#'rS()!`Ϣ*.e "f216٤k@ pxSԓb.\/ND`)x^+&`htN˄=$H!ࣂVQ(BR2`Ř"BDH'prj\n`@FƙZU-k@+AR4jؒ-̺iV <ZY8  g1VpRׄA|l j\&ˢ,_2=whA&"l(:kqkֽ TiH .ZTn表\k(-h4ъMu $A8)* "x0h48h6@X!UZ% x;lY|0YdTh3$#Zd0HcB@;;Z( XSBgW:pa:0a 7vFӁձ6e6ڭf'"p3 1(]es;w<؍PW0ǝ/=yÕ*Sj\]TTk]MXriM]>CT )rS}8`ᆠ 1r chBp4Ij LVO2/CMGB :d-bD1fMGm= 0\Zeғ@SI ȢE5uD%%Fia/2"X0VKA1CN{F0 e1$%=y (&O,!YHzȫU0aPAǘ\Tsee"b#PT*2G @%32 tt8ϕT rA-9ZT6cK> UfOˍ kY\"o Z$װZ9,p-?Txu >b4KdS4WR?kˮϫd:U9,ި ɪQZ`>Z՗'W%D 2@Yah9/B0[@D-T*EQt_*Dz_j(biʀ\0RÐ1퇞 fk :TBfbXXSM 0%C큔Y1L$R%M'X3}J%-$An+,KW"i8Vխ?y2%Z+8r͋ IH% 6 I ѐN=i`e( Nxt eh28KXA. 6 CJ"Nb7O]PWmg9J|4׾jvY 8 E,afd# (itU~ŕñ4ʪ !2.,7LH@/` -@$xa#DE!FQ#LbkAr(fq*fJdqvj+p6ɟdJv]0&^q-QaHO.ZDʳq`)'9 a/㩔)\i] }xNtsL 7~WKrjJêqBw 2F.tXIŰwQ%lu0Ȁ8Yc4`ά /l%AOp`25ZTNi6l3b 1jU+FM]D鮁/&#4({sE%J_ϡkNf&D'dp4X m7ju),R f09 )2|ts C`á @"X D}ƍwFpi $ 0ZٕɱŠ޼ʑL $IԠXg+66@Pj Xuk(m5*0@"%be %ng- L඲TXE rg76rqԈ;1 ҢI0L-p5uTI485v7T|2KINa_Z\[xkogUUT.~tѸ5f栤Lժx/(rqb+? @`c2}'@y#AqFæ jbo} H3~47E$2`|T 4̴yud-fb& 6p 0䀻ɴFcbų0P ĩDƂăXs8Ds|.)̀ 8,[3\aKL8>ȇ%G1PҘ$H‡A /8Ua^zi)9G B8@체SsUȑ,iqH:CNQ([Zݗ Ӂ@0 q&R(2_\ff J&'ьURXc*Z豂I8Ȅ*WՂ.Eοc9IĀ~" }Ld% VH`\MRTYZVrhzSR-U~X|@5J7("&>U @a$Q*4@ЕmU`lE sCSK'R`(B2C[ Q8i=}Y| $榉9i"ʒ, `e_1nu[EX W_k0BntJ6-Fѩh-:7d:D ' NOJ XoQ#OV=#I$7$1p2fc@&C3$CK1Óɣiā':Ma%煼r3"2f8e7A|0𰫍@\Xe%iЇ%0uJjZEOUa`\y'.QT9&'*ݒ/q,,Ͳ  :`*<6/.?rӋ2AADlâP!.z(0jPlCU?ZaJ #gnq\ *5+}!x0ۺG^ư9CK?QѡB~Da@XH<2'`Tʀ+0)9D4CL<27  Cx>p#?=893|1#sdX , 8e,+rDrh/siňf:!\Rxxc2%'͡\9pd+5&9CBEڍb1jj/[Z{B&@JaRٴ%2nL8d#Ĵ`PŸP8no (DXIC+:(~^?LB,WA459w>VA@RYXߘEגGS*A$r(Z&4ELLۀ 5x$".rFA)~@tʁ FLU ,e%,z,J4+2'}v+ nWAu݄VAp|^u3w{w˖p0Ěx;0#귰F G%YS j`X&ÛvBeJ-\̭arkdijo 򛻧v򟝱=9ܵ[;oQ1F豀[0^sTBuFaK`0a8 Ox2L{3rIΉĬ# e.YހhkHK)ĥїo|}שƒ[wf4٫0xs[kWu?n yY~?9un;{ocQVTH cDŭ 8]nF(+F`I(y `52pj]vUSt`ą5BmmO'پ!-70Q)mZLF1X[tt,cpJ"cŀē L00q'q a#IO61,4J I" ֝?ƛ 'DT0c?5 %:"E9 }@xc{?j;e6A!i,0g뀅&H"'^R$,0)` 1!dYp)OU@#1($ NPCuH^7U(j@T/\0:U$H'Mﴵ.}K*EQڏ᭮гȴ- ώYUƈ@À !^, fTlP00T2 Ĩ!:NaEg]Ǯ`01}1`E6Y  O0\H-Ea-HjzOcV|,v켿-š2rb/6ru,U2q2 ϵWfUD &F+}Z1.8bqbbHC@EDqATI\ۏL<|K0hA@[J,š5tCT.Kh켓e>rl + ²iyɝXew|_rL,q7\8FXh3?f͙.Fz?f,`YSFV<=2c#8ͤQ0qT$ZҀ^#䘔C\"[n0ȃ}!4Nm& ݭjʪ9c!L.xIyy/mhjos>6mX%FǍX"S_p_s@ *Q$ N`VݏࣤF)D$ɜр #i nH"xUpre)Յ Z||2a;EXpp#o C9K3!-nGߟ~kg TJ&_~dM $|N1Eb]nC8& #Qyca87( 0'PHbP(`PfPJJ p1OTW8VM $uR5N50"H XE22 1RÂM@gOEY8b=2c Kϔ2GuZsݝ;KL/*'ha3Z* bMbK$EXcTfpww20.!e碊P j0Ykر6Kk {SRYnDjK.z;V=CmstԑCGYfD! ˆ nA)Z` ZR&4CE "* b J&DHC|qƨ`OI] P>QO"bXԫl N1,72+ΪѤbkm/0;2P6  B"XdwabP&h4tUN2;:k"ƌk ɻ ;'RRȏ2Za!8e0R裨PNjcLI U449S퀖=O7Rئ) o,JM"BCt1]謞IVF,% dmYy_=xJ &D1{J=8% JW(Kj6SI.J$a sL)}Nx\7aQA @4Kb@w7X1($m1QL}l?ee5}NJ9#:e3"N%ϊ^>̡u&c+yj7U2`X"Rw l4giC:B(B+PdNxn$Ǟ$bS.VbƭfWO܉<ט TVz>(A\ƠhH,DT#01-AP.Zw4쀖i=Na5')& 8 5NrV_Jbs0(f$u;I9L@OS|2 P|bq"iH]C0,fKY5F >B蕜{c5ێZP(\fq.eBYrޭNY4XVz0}FR<~~3,z&0C7qEJf Fr ЃY0( G1@ 1G+-4t@ #v^`]2""A6JPanP 5 R,QxZ;@ĔPImɮJN*h. 3mElr_ H,V '>%ةsKq.n'ep}#zU蝋Б]q+0/kUԜDLL\ ަ& U4qI@QAqɅ. H0h0`PAPэʦ/=mxdf3AYAL 7Aw$ (a,HUIf+k+jq<Ñf2YA$$e%bQhO1B^+Gn%wUYelzk̵m̀#3( ͖i1 H#pD2Ř (.@W :!LD0"EK@H1uܦ6ʠ  axΛ5R S 4铂"2)+gl5FcƋƷ%*BsМXzn~$8pYEfcǫH_$ XמMB;TBQ9G ; enI4=1a(f$AE@Hai 6P-Va@!37(01+S? K. 2@xT5: W"kA#iUS W0 HHcq8}x\4BMXCOWg^pJHS!.Y&evZqokY؅`_.fĈ<=izbz cx0Nvr @ Bqc!Q0A@Q X @x$M-00 ꃗ%0iˣ>5Tv1NeHTh CF@07r >5cNab8rR0KMDT W-j2P!9%ؾzVx)gg" {t*t_xfq< ~`+c$ i"ƓjnCfBaF b©`a p(@b*e†}y⍳e$\vh4@s-5N"@"20J1{q*DOu>K'ʒSk!փ י.æT@Pd| /De+MM/(Aa *$2pDdF*Srm7I'KJd5kUI1 BZ(ͥ8~Z''ŋV+:VwC:+\Mc%.Q SHվ,SjfsM_PB$PtqT1:ġtD:0$ 90o1tZ1"05y0v2101܃3!8``A]qrRn$2$`E5+͗0\'$%ZASE&(s8S,Jދ\*uu5]\ZިKjpᥒ-Urk@I =4Ӣ >0!@1:aHo &^Gj0 G}&D0#dƃ Z;mm%䃓>.i&ݾP\㓷&Yvm[/,V%B -u:1N,f&Gb-vPTEZv WZ N0 6xs@5aC%X1M]hfInBb`&0 azOh5!L[)E{+\m4mV!RbHb<"( $aB@Ey 7#D`t R7C4T`t+` @9iGWPhXdz((  U^{*d ^$@+ PSu @%R'a1E  hT@I M\T9ūQ' ٙѤy1(_&(xb0i&hp|fv 1Ta `a3 Cx `TE&>T$ЦBCm3Wd(xI&ZbőM ȡ"TFF >d<ȦX *”x*Y dSb#cZq`#f䇙zxnPP{XXZű9!jf_ہgm/oٍr;*xM\ߟ2IF=DYg-Ϊİ >.iґ 13hס 2,jK2C8p`A 2T!BċQcK":"F- yqAE-, I'z^Bmmj ۹drf,;81L5Xa5eί1Q*Gu՘jְj%MS;)/e/~<5"Qh`@@Xq銄 8nq`IF/8 Zu-)z@NÃi@.iR '̽`9`*DRѹށrQHRP8qDfqH6"ʟaŚ;͍'z1!<9 U(TNƺ iVDVi"PlN :O@, &0p00l2Q0$<<"KqA9+1\/`4\b'-  s(JuPp+-;b`TTIV? !1m2Fjf+.!έV't}S9VM_jw6ֻ½}HӰ(_}cq@ES@PGC p!pah@YQZ'{H*5ʫdz|jG%4T Ѓ@.e풶$'Aܽ"'!L 4!}wJt&j!iP]'0;ǮLנ̓i&834Dq'6\`ɿI&g@#Hc11,8C1ÄAtB%e NP9 #F#(:[Mg Trwzu#s슴 #E^d;c2WM*'+"t( vIrQBD; nz11B9+ڛ$ &%6Sb=^# 1a>Dj6p$=H4ob"[!-n'PGBDRBF@%){jy?V+:.e¡̽5ke >K*in K"r9!-d'b}W;L [&P6nqi۔bN:3"7 B#L\v2;(6% J4hϪ#D P\!iSRsqOT`TVGɎɘC#:p\}xHiʝŢYb֫EWp>O9/G/6(iDdԅS$ypp e鮧ic݋;Դ.Rdec1LDmTR/4x<}( bcq3}dcAe&!>.cPAf0مTpT5Ъ4! $h)n5`dbJ6M9$,YsPqd(̻i}S]_"µ|ujBP&/}2 -M"%M t+1b!*!X]GE6ExPWcEmj>,G5#: @  cAٍ X@؄ܐ&R[&+; 3m u-AAKB2$ED78 96Yhh@>0H$Џ1 YV0Xkވ'BaݲA0P>/T? qMnv,Y7\KRϹ C"͜er,,j%-8bfdّ2fG 8XT8(p&38sPj`*B1FYR*7 H?q*Ni$% 2`[xbK =/bvv("n%#F8ͨǕLTH"\@(T62s}oZb$Plʇ@0!aq3X"E䯀E FE-e)jw]F00]LUഡ!{E_JQ$k s v_$,+d5P *=Z;Bא++ܾdnGzu7&%,nX#Y_& ZA 6u>YmwNdՠk ݷ{\4P!H- џ2/^ bH49X2j)m5}3u,W"!XE%Ovܦr{2?{.Xqu+~=76 J'gaݯJ%B` @#A0IJ>2ـ Иt0mF5UJa Pidb x @*X0c-(`YXAL4@!jڡP;$p(-l ./a>mv?-E#j`VV u!, ?%ɜ%z&H WjfJRK{+kZ^+kXZG9W+ߣ#{}j9X):8B%LTͨ(FO`Mf^%X3 0X<@!B"0GE2`dN@{΁LM#ų>jƝN1'18UQt=l9Ra}gk*㉔3C׹wl)ktO+b diE(FGR=)җn#ʮ:IB+27@HhL0X" ɸfq  ? eQrDcFHAQUڨ4 / 襩1>K0)---}"m\!<#IY&E H?#U#6 mrZUS a4E*ͻ8@ Pqyz9i(SfYp2/sd%#B1,|0"~Yo#K .zZۆ_rήnt5ja^ pI“ z0rowp}xs DT\.\?iGz"s T1 2 .0c1Q1S@0AD0ea]0w CC c/1!GC :*X+ JTG,> MP"M+«, =!p`)dYfYbQ``<ÓN}ծq \D@@T$0\$0ҦÀ40 ~gpFD˒{v k_/eZ}ccΫw[zq,9Co?ֹ{֖@U bfMƑɓcyaE`ZV z+f(2`QXcӐM&4"B0@P!>< B6aJ/+jd%0fYf( DX`q@5%[u,H*-"Yp ; %1BS < &V*DM rhaēg&@4#:'ufR1Kpڙ~M-kr_4)/H07[,C)<7A&΄G3rڠ2"c! M&Lt ($$n@ $1} 0) t L&db Bֈ"@@3QU8Dyt4,ӡl4 2 h17co\Z_Uܵe"2 T$vҝ|LŚv3;V7IKߪN%y`4nЉw%96̀=͖x2w 1!``<0 `B#!D#;4[4ٲ.G4E $HCC#b*14&8xc1945 (25 oAsP$4mV4T`rB A4032 $[-ؒ}mq$S^h:Qj91V0Juؘ!"ʲv<9e,!e=qRKT 3,%B%dTV*Jk!g],Q;|J$cu)o<U!! B)6SWbZ+i)l@5N hNsbL.Zzٗ,%U}2HPpWk;<.Ǵ 6',eԋ.0>/&jʄdФbVKvf)U9v*voㅐҧJ6 9c I̵jJO)W30cTh,'ƞد(m:JYRSet$L,59/JJYqh9[M++煡bTHO吭k:w$v/R2adRAM7Oz/ԭrTI?KL32ϧXL"X2Gwa*}rv G.ͤTnj1;u%o_^?(0K4҄bBLRW;>! :kE+ c7YnF #sH.TXR ($A0d4. ?MuE/@_OdyOJWUyʁ8iB{+&%SB|kj>C%Bd,(BBJdUfrYN~D )\Z7̌PAݘk5:Sֳr'Z@l(@\<<; :ܱe‡t; BdL890U."32anlX= T<e!SM$udhż%bIB)4wiTa SHa6Dp3B>Z4F((cM]{ G,nL9]%A#l#1>4#ldnOF !Hn{&K _f>Y%`cl)he8\l0|aC!N6a,.Śm"^aPgߤ)F-NU}XBHJxM4svd6iȬ(àY ۙfsuE:`8eކm} k 0 ?Q  -8)ETȻ+pYgD.ae1+Q~\[&N(ͩ}QB :$Q[!9#Bˤr ~QfeB`8ƣ^\.63J1힞Z:K.+ !xx"T.DB@U fİ!1)71`}x,od\m\[GvcM7KЉCӰ5@WҴlOwP\P qPЊrph`a&<fަJp48;\BC ET[Nd-,_f]Is}-mbS, 6Y@ykg*wU.9dhFĄNmR+rGp&9䒹e3B-3ZT۬"H2AS'!OڞLDɝ-41 [&oGB+Kz`J.$L"{n֏Q:P*?eǡeʹp^mٵ\&=943B >9߈x򐕰 hqqh2$1ϒ2Ĺ0 Z 0g  v > qΏ a}i{Z@|, Kc;dW(h%H[Ąu|x&46F׻lHIu uƪ + ceط 1OZb5kE$y8QQ$lWh2RHY` 2@IhĬ)N1{#&U肠%ԝ_Z(hyAZ :KrVb(cK+pcp+䒾qѹEm7HHi(.6zLl(mUiz$Jnʧ< 15٣m˚b"%H dR 9Z3I\Tו֝(,j9LrQNW\].mf^]vES6vٵSףКj{ 5 &(hqT_0^/^I#4$T8/HדbQmWKꄃ!A)KH\e"Ҍƈe$'6\+a%Bsx,8H*{!+JC[Mu;7Ƀ0 -i恔lf[CHqsC.8LK}1#2p(#؆H<c3ba 'н0 X[YdnQ B0K_mh!3] 2X\y>.^jJRd|% v,QFKKK ỵ} Ѥ.ڇńVƬFegٶW0@jANgf C i16|o:ӤC!JĝmDRCң,ywJ1+|%Rj" uaF9SpFQQ}J_ٕ仉+akZ+426ODC$8DK0 Qեv};vJ s#x;D9vS*.cN倓%?Ih!?IzmI1p:GG)W^PK(B]++O)Y4Wzat8] 8E 3 bC[㺄gp;KI> D\pfpR 1"\ 4Q-(#P*̈y jluAKCf̢.G+)lox8ɚg803sp89$Ay6X-(UXTi !Q.e]bkey Q$#H{ua>qu;mj]JJPv\9Nvd+ ){.ۢie;Wns"5bT jZqQOd7Q:X2恙ۀ"aw,AYgʉu5O #6җq2Y5}&ϩL]+WWȉ|lbH`HDeU   VaG?z rr$gZZܕkδtתaAΝlVFɀR@0f._H 6I4W-:qfsUM)wjE[LE$R(Cx9! rA !#FS"m!maVRRQ"9qQ>!1[jAŢw*Lc3P3NRY0@ٲ$RY!bIfi#ۢwal\E^5=;L9 'i'!؃Vn2:fLѥH*_=7Ð-RGv@.#:&Z3Q*nl= q $(,iu9fiHv6h̭e[|?[kgeJS&_ah5%kBFҧ=-Mh}~760X E#J[FLXD?"e6;1.[: ɱ J€*D3H"IupBEh(O!F1!BfGV,?Ea ѠZ)(7a“D Hʖ& EU; `Jt ;@&)\,Hyiֵ9Oa3ʟ) 6LCGBp #}YaCS4d8ȓ%, !u"h18*j֙*!QVrTBZ/‚\) <-D0p,!ˎ V%d HNyZCtXUk&Xe7:Z,GDX8icB J˼^%LUﳍbnWAϒ̂#֞VB\Ix @lhZ]?_Gs|uwVLJhqŹGV /$BUp ;4dMD) ̹@x.[S3I2L 8G3<k׵7@ =DC9a=?o h +e P"e,FF!6P *7H^(:#2Hn A#Z2CGD$*\P' CW+؇ +ǔ4F TZʶ{.ckI=*GR\4r EBFNe!qTT8"i1#D1hdJ:h) B`wIC x)X+T-yo"oKaٿ)+~䃑>mS&"cNMVƥ68ʩ0֪؛I!}yCДԦw[gA 'X¤fE&"r nQ#mAdAprvW0:ZaaPbbhASYukT|`*˸aa :h}\~=8^g(y.s#IrFD0rCJCő,Euxwv&kfxv_fKc]XV\5坌p;%LjY̙ 獸PltȒ$*!9)(*B.o1D)p (D$XfQTՐCvb3R5+RQzk0 A7u@Tb X}2T,gkΩg/a[t޿ԊY@a֬F2[fv2`( c4`(ᚎ^fAE0cdР"E*k#l~){}[Eο~m#ʹɅE[Z0ɝDu'CIU2_^H"XP@˜GSF4_5;g$ښZQÆG,XRg↘k F[$!#Yp.~)&KP$b,;ZFΎӿgU($Ju 2`K)}x8F vi+4fs0u`uUhqޗpqPnw=MSMǞ#<:1$X9/<9T"Y\+V.)*#)l |FD$-3 H'䘘e T]@1 sPp07?.o0V$)#Cj JXCHfq ;Hq*e[_pT"rsNZXyTQ.Ihm E$K&,ŋ. x:)"0{WNpUF_wP02Qc';#M@011 &ai:]S 8Pْca@4*Ąy@Aa |g[ѱBʆ~:Nرxe~$xf\>CӫnnTi'EwgWU_{3|ũ$Q*@PL/ـH #FJ$N01I"!! 8C)Ӡc7cphH˃B.e/J'̽I1 -DԽb4K%D@{1% L D19n`;9,V*=WbQT)TQޫH6 2}#H9:"x ™"%L@q ?>Y|: aKdX9zvY*Baj3:]}/)qĊd;&DtxT- 5ѣD"߭$^;R L0Y|@0,+N6 O`Q{QL%5HՌT 5/Ŏ*4Bm-!W]&b#QJ1ar'E3F^GkC0@.eRXẖesSc'm߰-篺y4Bt8bdHb@;00p䃓 @|,O ' o 3My >-J %8hR^C1=VUZ9-&N>K Yq OLSka,,30+I5}YgB~@ꄥO dCd*0&lMgAd6:80bSi[nh aC~ ƙaCsEӚP4Iu֊2UcYVbwv^MElV cTX*qi+2d3 p(~V ,`cH& gDL\sMbx Ҹ׉ɉiiAYsŁ>duT$fAhمg<6v/Pu"uN)J$ WJT3UdȜQMiX&N$b⫠Ť`R+ ū075L M0L  0hd#S>VFcEllq@9eíbM!ƃF9DݨMI5+>[' @ }":[%]@ER@J}|L[x?VϦX=xa$ĠJʙ?Ns=qCCf}Q#]z_bB5-fR1`b1q:S^62A B예8<=^Aa mKӱ5uottnJv YOJ%r%N߃ <m&AǛ@ 0 !FJQ 2Z a!8c+ͯ(ʐ[pS+1|TX8FkqƛrH6Qa@0TAC.P, l!De)]O-Ud-x:ri%MN- DU*+cJ!9 [)}e-Ժ$C+ZXiW=.cl_=sLc L)Sk`RetT Qp.aM:#)n-d(9&nUT9rR&>0 $  $EV*ʅ1nj"gR0؁ur|L*/ם54 g"'Id,HJ2Kz1KmD4ʧ-bk+UU^hh5t_Ff] l\ߒx*$@(P``"L&0A`GaGK ^*HafgD l,Kl (z3VBla{ 3 PRㆯSXm*Zh"N~QIH֏-R5D={~\lp8S0A0GDL40q1-`ق`i`r1^p! c2 21 qL Zr@)GR8 yHhM*2 FȞ DZ٭2}!4D(ͼ&")%pT *Y#%N;/Q>a׋)k/Cg V;k})n^d5`.c 1$ތ ^ 2"k4K'ȘNm&fAɌ} 4?C @EƔ<"и@f&g&H$$M2QeҘȌzB= nU̇xBlq]Aܰ7EfzKJbRf" j`22Z`q|~0¥Fn@TV]njY$ra6j| C C, ң.ǁ!I02 >vSM%LE)lN%m}='>eQo_"ꈅcR`Sx̗ E- ff3301L1`Fr v&Q &#&7ūf+F!͔'+^6(Zq4yD-*wZuF꿐+]2âΥX@isC21 M4/r1m+(R BaK!e*$PK?~ԛBG1N%P휷ɦT8Kc4˕=K=պjjq*_ꖆ_=A-˰ ;vKSU[uhXEZwrXl제d1?=00-S1s`4 C30 q1 1qj051E.1\-3fN@1i5-0o ǀ$!( `<d< 0`h 0nB~$޵p,( !xD72K:p\h @ @`>hj`.Y9@e:h`6` `<` f}!!a8o 0(!w^:)ZiZGMElSa8w3F_ eVݺOPK/;,fͬP梊x2lp ;6d^sA\`ੁ`PP@`0i&U&3c ,Lj_IK .ˮ]cԂ>a$M&`(e3p:jddTWh"j2湎=+/'9'gUR gE3ϔE0T!Hf(,FЄK(713`,%1 )@YU H3:2im3% w3 nJ8xgjy`"}BTzDO6ikljO 34^pG=)qcXc#ԤAc`LZ#Lf2HCM"H.KbGP/!vI'jd#(J <*hȤ-0k.'Z]9cjzWYnʹZ/J]I#,Brǐ8r6I zM/!pE=`I*S7L?6$cO H~ DB+2HHP9F:$"s:U݇治]nxDW]abX*X󿼓*SU=rP:烖0n¾&q-[]Ro?1VٺFHȢr6Vțf@[o q'bVoeSQRlqIIK((ԡȊXcBk 9Qll`R@&\Y2I6F$AX Md; ̲c# !Ӓ:;Y-!2.aqa$e`t7 iQaP` 3AMzQ8s2H A2cBV=  YD:L#$dѬDa" ɉH*RFHBd$a:lV3-@(HdP $;8w? >N}﬩+4bv=u;X^zwNjJ*LC @hQ X?I)B$Z2Xk܉-2#MX3z|3 (ć& Avl !ԝ8酌2!L*E Ǖ5 J3*]Lx9v*Z mE N SMQZ%Q*YuX][r[OU/Q>a 7Re^ ա'Q8od/(cq1h#˨E̶&Vb*nF%G $0fabc}uz7H)POxdtIb3?L6E%cC"켥"{:[YQA̦ԨG+NӅBAS"w-S%JiZH,َ{G+[WX%#ZQt=l.\OS_Xd.@4Z',Dn',]CEt^ķ'UUńLʤm0t'ƫ!f+mg+Q 05(8AQ9a iN GLH|0Ě+YP2 a3&8)4%Oda!E<ђ=')d 1@WםɈk-KKX4Ght0Z86k÷bSuIyЮ%>0ļmĆQzYRiԞ7/ɋKK 6J1/S9:_u9WLA ?1UuPOр ._Uk)\l˒s%9)D^H4\5*UOđa:n@h"cN,P։ %q-ʁ}Ѥ&[JLH\j'D[#t$"廪fCOP2.HEӡ.ĩʩ**գf s) NB&d2Q 9C@a+J^];, T Dpu"p_Y"; Ԧ}[@RO4y^l;S;cTdL2G y@ rΉ d@Ġ^FQ069 D X `3I/Mrn_#o(] ^FUp%^lh0 u8 \V`*,BUBHAuNDh EꗵH@r*FV533i<ԨD"֞I }ZLJ~).k\bb$h[8"R~(lƚ#mT밧nק)/OOO#FB퀕m=IL=&2q[;7KN`Q9@f{*iA3%%9vΩ -. !#!RN"οi8&p禞a>e °?r7P={wtNK?ߣBugKsKԧnՉs>ޜUQjuXy9G+;rjYdqFeu6haJme99*L.ի, QQzɋUkE9Fa'%`4(qTInswWe̕:Pnڐ߭/-Ś[3xao рà`p~d@q/O#aY(1\6%(U M-5F^ SP9B J.v>Nm|a6Kb[4nxbo&nyB2US̨@{64_}w= {s(48a*LC(xG %'+: -0oH׸<5|gCzj1΁cN1@A0@B Br=W} jg¡7Q$X\}6D(_߸ڧ$gNtm`&-%W)0w `̭Ӕ$r:He0Ţ$[z,CVҁrWk9 ڸ纛}ryH!F@D *!c` %Aقgɐ@H `g@P|e&m;t D1BY58K_ƄI"<>X@K B2fieȣ؉6Oq@t=|w}USOMPژ4%_qẶidj4`i>bJH VܚL&E !PbPa*ux&HTS@*.)~!B@!2 A&=+Ux QQV1܃.~`52(M!y$ 4ҾwY=;\}L3tw,{*'ԥ'?U xL GPdw$ieq@*&,ǘ<$^p8KA +bEG&LtAVȥQb* vE ÆX( 0M PxG8f\{.6SbBhv`(z|R5'ץ[-R!,.\x]n6ğQ]AAy#3G T(̬PP "gl^̄ 1LGER Q1X xZY @>)0%dT8@D$* fF\RAv Kl 8 wEӢgݽ%/t7!&wKVޗ+;Z3ϛ_)b8lÖ#4[+uk5a:f Hcs2ȧL?191伏Ƽ2S+}m\##ɐEzm~!@v ChyIUy'krͮ* >bY-/|ZPD{JQ&±lOF- S`y'<4w2 Eaƒ 3+̀^1`Ai eJ~]ϋ\! @/ZsFZbijl {_IV/OTXCn\_Дv탗12u̥ܤEL?S7Ff;9TY9\SJ<qQ3L05#'̰`˯aPG]qC`@ND5‹#tBPaRIX= `*U,<0N4sP*wALؠc͝PQZ|͢ ƱA9D 䅉Vލ5G 9-?wݖ"[Ͼ$&3/"Uv-U| -uy>4H2t~Jz" 5 Li9AXވʀ2c#5Ur .f EaS2ѵ7@( &]\1@9@ T8p$|L Z>:-HD3"eB$$A̱ϣY\Mp!e. p~}g?_KQ`18cBpY9R@غaJhʡLL2*L6$C>sx ?0ՈcQ $ 晑f 0iBGQ6fRZ{$ &GM rm5A(1QTWZ['N H*)M8[I, a91Ta,uggNQ՘ئj7i21810^qx~85Ǔ%R,4FB:@Ñz`@&>=Xea샖5(eP'ŞhN|82P:ɘLR\(F2ȗ JF OĚwj؝ heNL#,BFްc% 29 )ُlՏ@<ö,SP-6F@adu ֘Y 6[,B^+#b JfhJFnBUVD֚Qs! WJ:;ĕ[y醜6<- TIS!0kpt,Sư"$4 W;=#bk{vlw{"TUd3#`-=NԦ^`kʣ$"5#L30 f0xB8 Ŀ123i$5"@$N\Y3@Q.DhNAS`+ PÑ/2o@ /1 *< 1NA ŬNvՀ-J0¨ P#D%cyܢl/ao(;*vi f|LV5؂d2m4+GZl)`{tO* * $rDy^, n&#,21"x%*!ANgʲr&p$gInA_l\K/9pq2Ste E#D gGyg*'l5bUA@Ȁ%7dHqX3&9l ]4fr yYRإADQ?j.90E7]*kC@Hhkv@fĸNa’iP&9P$:N$ ܅@<̧M-g?JF" H'OXс͒.. %♣MkI40zȑ&Z+`LW c.1 3`_4@D%8vh0A$) %LgM|mLA# 3sQ#@s, ̈s0 0,1LK3)31h0@x$QLȁp׹`0`% v_ 3uVUMSu U5M&lyUf a|g'5!km-@$ 6$1)t4NP~bvX$oDnKYf3Ԧ9@u%=O=Ao[! $00s`%ѱbGGǂ $P(R 8tcↀvPb0jq_+ C(PA"`&9C0ڜWX]J81)qƖtY)P.w%H݉|Rr_, ~;4KD Ӂve F:00@![9̨LȘIN`|D|` $2($AQ`ۊl@Ѱ0.Smzwe*Է-;kFYQWbcZے6y43^]ZYxj_[xĩY1: ''=n OLR(>LCB;#   & "̋0tB dkDC+LSͷx4LMD &өbAC @01l 21|k0=1x f`aL@'>a<@")a(a8. 9@%uV$16wFPP*`#2^!:{_ˬIqT`krwjTv/r>aԣw&b[2^޵ 9fl]س3Nl)FcK"eH|:cXf>dnaLgdRb`cabbseHgsĮ#c(9ހg);bcagBb &$ ($0&03fp:h`8`@(axB2aatZt/|.w0X# 8 A9XeD^SVTx cIGcNCe2h1Qک=)3/;嚖epZ62}G,=uA1x]f'4Åi3APL橌 A&@:64v0V  -Hï6bShJܞugŸa>@h0=LZ/eW\Wmtݡe]sbhMv;Y3\ Nra,Mrn4 "#Qc 6̡(3LSRG0f"R** 2 @Pb=uRm^@LI%}^Vb~ I!Yp,-ƨC2١ˊ==$3=SdmRu+tX8 1$AH $;Z4*.im$e̊80 ,0b23#N2%M< 8(%Z)s =v]$Vf)Ϛ!\&7\VWoL)C퍕:tej4ud)M `ZSu|8ɏ Uij[]IK,n9=@:/<ӫknҘqPvLsIA :,p2BY;?1INZI6LcCSBuw-4dkf[+P*SV#Eb`k0Z2?dmЅw(7֭s%wS$o4K婀6zQfޭ l n ʖL8'Dkyf 4)4$EimYH~T5$w|ZVu!=8G49 ȧRA[ش̅wKo7DT5uV5yqاǮ7,ؚעY&ַ99o"ZÿoRQ1Oݩ;N+%K>|מd9(m|Huh/YWfja+9o]KFD9}<¦e zR]s=;.ιu`zR, ,9^hyAA/gܸbܦ:O;eJ|9iw-Pr:ܔ :ߑ._S'Kh曛z$9[؞ƈ/x]`EWST I$L9gH.PXFg M Q+ }Y V49 aQw5áW?9ln5wImhd^$9Kx ۽msO-}n x ^U6D9R+mےXМX 2UR]l*r卝W49!bNGnH.fR ^LMN&q~j|*|G:q 49_ b[>H^K>]Vg7r +}QkDs+[uNo?#L, `*)"1o3xѥ9gsǛl83bZ}9sNu\Ug_/{%ʟ}Cip jE!nrYOn_jM &pоzku-GbG%|~>,E/oxמ:+@U%HYs>{Wн|Lm-̍ܰK= :8ҫfBTa;/lwPnXbuW ¿/ڰG3ַ-hyUP {CNv#TLe_[tz;q=?OAmlKQ@'ŕjjH-{R{P}"$f)e(!εј>GZ%J[ԧһZl:uWibWDp'ԝoȅDNIbٻ%=$2㠿(.}9AnIbho?<\V-:I]0WD`9 `۾CjI+ ZqlX!9֕Zs !8k!vIFeg9y}! ?*8~M?^IV!R{-9: dp*5,@<= G<[z=l&vU/CsǶ Jo'-7co>Ч,;Ϯnݰ,98Ny-Km*-/vŴmo[ R;ӀaV+7~y1#y_ۼ<WM<R,j#p#|"u׾ ̠La+&~ < bvJD.A̓|/FxmzpO+]5/BGwOA ;5,8*aF^ܨQ2l;l1OLN+[`sv68ѿdj:ͽyWS: -L;m' OëX%,"=eUMRp' (*cμϥ3|Ytw6G%W0N(\IQْ"H[P0ZLҘη1aqVK'6Xܠ#ˎHy`z0kSB:_POzZg\_\~IGTvÇ||tNsL ;].FsMoٽ;[z^(Ѥy6.[n^2iR{0ߌr|6:qhh^_Mt755mskf1ϋ Mg/SF㫣eNjb:O>鵲eg#U~O|d:7!0$fX*dAvKxb:'>jBWJ:h4{2~!a|NcgL>Gz mᲝ󊔙Z{"K7[ͥ&D&g:5=쒨u*UkUI%97 L5Mۓ)aUw,!YGpY5i 4L:ϔjr*KJXAx_I>!Nؗ[prpݺYBRT:nLb^xM3BmRLQQ1`4-&>Fh_:Ig{~bƸ*M dkVj~)%$׵n` +*|=Vx1 #^s0vb<m b4oth5HA6O=üU@M$ 3<*߇nDYdoYCJ'A?lڲ~'Ci:ĜHX#Ul1EP^y*`5fm<>&2vpij8ʬm.ۆ{j;()_VD+Y̫@LA*x`0sISԍlh&LfϬ&Òk}jFy?fw5;KB?1 OggSar@3%####$''=||h~OB\[ 1`b0P7&GC=/ʼnhX A,PdeؾL/B('9:B Y#+7 ˂Y_)jz@5Bi>Kb6$iZK8.S(Չ~[ipc".˱TØU\|,sg Ihɷ,omVI]lj]6;>KեC*6ZEjp!zSѓQ ǭ~z9T )= *?.?="^ԣde*cK֗ʆ lzΕD^ҁG0<c{ےe/Ms~hݹ:nn*@N-d4N06ah$ڐnq9U҆)jB,bïҩb!;V-da7c'eJ/B1EAx#Sv&' ŚކȊ$"1m0ᶌ$뇷=oǞ~N=62/W 2nڮh e7 G(.K6v%Y@ CsY&#* ؚpaIqc.~?F  ԣ ǯ <Oc?WW=I{%oyBQx4<6'ZeY6]/my8cItcT =5⺺e0YI_|*ٚE) B4I:ϬvOX. &ȕS:PEQ19|?Jc{3>VCsr+pqBst[n MPJV  \UH̕߈,6騷"Z#? (覠A06X Evo 5c0 jrL&gy^6/OVR$qנ9W"j Ъ(0>q-gp ͛LlM@D~L#W1 ib=K] jøK<3p :Y"S>\~8R ԛvGP ^ocNh- ~?@zzԂa_U۲Ƚ- [8sU 3  WqRj]_>C!&[\ım--y: [mhQ|I/*64DS8`MjG݈tUTLP~< sB'eUJL清Cɒiڻl!IJbB+C*t'ʳn[0j"sŽ@W\#tA]8Lہ]kLU.u߽R >.96ɥW53y)恔ʼ> HI}?bކ$,s&#㹂Nrm@?yd<;|wmSn7VcH.v~Vk1!C0g_QpY9&}[gA7 (YpTw9Y0࣎?H Q#GhjzST8y'!InEO=ކ$1N܎tþU$@bcux?oSR2-Ϛ&)&. xoD dT`6L}y1Ua9TI@?Ρ[еhYBjLSQ -}Esm98-Z_wmk?HtA!|8jg,Sˏ^ʬLv:9Џ[ M9O|@pS_re+<䱲>|gRF1]o;LpZ4oz;f]žܠ\34_7"zxC(r7:}_K֗=u=!|~|%]/Mx*e wߕOmrަYe8Z}Pz8*}!ʳ4N}Z;$ou?GEA`GhPe;gǰ { kʫA4CNW4Z0'% cxe\:ɝs&: mxK7goq6u>ykz  һB:QE֚ֈq|~a줴)ߑ-*JKU@/Z Ca߼1eDBE']9{ A9# )hnRCH,:pz3o#˗Z^ij~tèx/wu@\P-Ɗ5 G&KPV;P="`r3|։`_+?1,:u=~Zm5D,-ˢ'|A!2eߌ.=唯r0حʉM 2l\}ǵnauVٮ-o;C3*xu54.`!ڙAXٮV9TnPAlB0E'UpZk2OggS a`-+*+&&''&(--..'&&&%&).-(+/.e߶`|ad:u*gp}CG/bYj5y5 1Q(x%i+Y0,#ᰍ'ېj&F$<}j ̕|+~Q1GNWxwF<7ݿk|+ř4 >MV3k69t/M1}řCխDExsٖ Oۧr Ј`}T`'ҕH0d`ݸ-?xQz2}S|9X%L7@ֱ9d7SZfg{+-Z>\*rwO'ff-!W Ln~^JIIM߆fL>F>y1b$[*:Z?UL540='\V= 4   xVkk((3лDr"gR{1:#v N!O,?ɷ R8nx^ U{>KF_i; 31Zzzyb8i|20ա idȌ -(u{a{U0,2ج),Ќ=墨~hП*W$V9׮>X׺[ˁ ; ?xj ?U$;-ϱIz#v e:PbHG+t`ҕ8Z:YxSdҶT 7d߉5m{* c @|}Vv^{pzgi, s䔥Rc|"#&`@93:ٸ etI T*E?,gK lXaOj?/I#VQTjjzW)}THJW+T8MvS&g~֗eMxC hTUQNˌF|ߢcdϹi2rگb(PI;jz]{]WvGW@U*B|rd- N |=|}$x7 vi߉{YSK5/2Ӭ,g  JؚZHUA>z.a7򓊜Px cq7I[S3~RhejS!,8؁<;jj'r4TC}@ߖL{'Pvu@!͝kWfmHaˮoK0.ψU^9%lq~wNA۽* @x0ܵ.aC7ׇP#y2fs2w=3 v 8C#J#'vdy"ʤHNƑQ=T Ľb; 6I.\w\6]a#>]8W4[6iOL #.~;?cRqGlO̗g.!! |h'f,) q!E( OK:Uu(Jb'/ZMQ^,hNkjifoc~ڥA~[nՅv{ć?22ᘤ:[N$ ^4EVT t*׍rG[S +j+^ɱ[Z3"JĹk& l{4#')D7;^TkT8{>ys=}}3Uޒ[PU @4q*kSK]Mk+d:jVST W%J/="aBT bs PlӚ8Eݻk< hD1C[(-)9J]s6#\#"G!ީ4&Q~-ȫ}|e+]U~ 당>S_"Vd/ʨALg,W|+)]u3idl?T/DKu|m5bwhZ#ofJ6 0wv} go>6K369R:+v0g=r@Zb|ư$j8qexQiƬ[ ݹYlyM'F#1\y_y[J -sĮLtor m&Ff0 3cXD>qdS'S Q۪1!E~FwDD:)i sl+(#rfʰyO:4:dlj֬04k]`<_:uIhRU|s}o1>$6ȯ񖌅a wu+I2|}ڙh= &P 7Ӥ8D[ش;O2u]{fU:uͩyS :ƍ=΁$r(r}": 8tg{wN)? $^iUOXTh+xo弉+?Il_@̖EFAÿaS6˓т+-/7КƶfR rm 츍Em ~3SdN:Oy?_$zKg(?J@jcI_fZ%okM *Ռ>DbuG>@ N5äHrG?h\t[8@Fz'm#wBzc]4{[:.g+gU^ tqRkGgP̨vnIv!|9*r9"*OKfkFhۃ{=2?I8˟슰~s>9wR%3 xt ȭx7{uɭ|N^hWr|]3_7/J7㲺e+x(U΄ERVXU$ՏlVjs=i>W -4g3 3ٺ"7&\ =~HԡControl Parlatype using LibreOffice macros https://gkarsay.github.io/parlatype/ https://github.com/gkarsay/parlatype/issues CC-BY-SA-4.0 GPL-3.0+ gabor.karsay@gmx.at parlatype-1.6.2/libreoffice/meson.build000066400000000000000000000010111353244124700201320ustar00rootroot00000000000000install_data( 'Parlatype.py', install_dir: get_option('libreoffice-dir') ) lo_metainfo = app_id + '.libreoffice_helpers.metainfo.xml' i18n.merge_file( input: lo_metainfo + '.in', output: lo_metainfo, type: 'xml', po_dir: '../po', install: true, install_dir: join_paths(datadir, 'metainfo') ) # searched for appstream_util in ../data/ if appstream_util.found() test('Validating ' + lo_metainfo, appstream_util, args: ['validate-relax', '--nonet', lo_metainfo], workdir: meson.current_build_dir() ) endif parlatype-1.6.2/meson.build000066400000000000000000000046101353244124700156710ustar00rootroot00000000000000project('parlatype', 'c', version: '1.6.2', #meson_version: '>= 0.47.2', # oldest working tested version license: 'GPL3+', ) app_id = 'com.github.gkarsay.parlatype' libreoffice = get_option('libreoffice') asr = get_option('asr') conf = configuration_data() conf.set_quoted('VERSION', meson.project_version()) conf.set_quoted('PACKAGE_VERSION', meson.project_version()) conf.set_quoted('PACKAGE', meson.project_name()) conf.set_quoted('PACKAGE_NAME', meson.project_name()) conf.set_quoted('PACKAGE_URL', 'https://gkarsay.github.io/parlatype/') conf.set('HAVE_ASR', asr) configure_file(output: 'config.h', configuration: conf) conf_inc = include_directories('.', 'libparlatype/src') 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') gnome = import('gnome') i18n = import('i18n') gettext_package = 'parlatype' # Checks for libraries. gtk = dependency('gtk+-3.0', version: '>= 3.22') gmodule = dependency('gmodule-2.0') atspi = dependency('atspi-2') # GLib versioned dependency is for the build system, # see https://bugzilla.gnome.org/show_bug.cgi?id=774368 glib = dependency('glib-2.0', version: '>= 2.50.2') subdir('libparlatype') subdir('data') subdir('docs') subdir('help') subdir('po') subdir('src') if libreoffice subdir('libreoffice') endif status = [ '', '', 'Parlatype @0@'.format(meson.project_version()), '', 'Prefix ................... : @0@'.format(prefix), 'With ASR ................. : @0@'.format(asr), 'With LibreOffice helpers . : @0@'.format(libreoffice) ] if libreoffice status += [ 'Script folder ............ : @0@'.format(get_option('libreoffice-dir')) ] endif status += [ '', '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:'] if (asr) status += ['LD_LIBRARY_PATH=@0@ GST_PLUGIN_PATH=@0@/gstreamer-1.0 @1@/parlatype'.format(libdir, bindir)] else status += ['LD_LIBRARY_PATH=@0@ @1@/parlatype'.format(libdir, bindir)] endif status += [''] endif message('\n '.join(status)) parlatype-1.6.2/meson_options.txt000066400000000000000000000013341353244124700171640ustar00rootroot00000000000000option( 'libreoffice', type: 'boolean', value: true, description: 'Install LibreOffice helpers' ) option( 'libreoffice-dir', type: 'string', value: '/usr/lib/libreoffice/share/Scripts/python', description: 'Directory to install LibreOffice python scripts' ) option( '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( 'asr', type: 'boolean', value: true, description: 'Compile with ASR, requires CMU Sphinx' ) parlatype-1.6.2/po/000077500000000000000000000000001353244124700141445ustar00rootroot00000000000000parlatype-1.6.2/po/LINGUAS000066400000000000000000000004101353244124700151640ustar00rootroot00000000000000# 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_GB es fi fr hu id it ja kab ku lt ms nl pl pt pt_BR sk sr sv parlatype-1.6.2/po/Makevars000066400000000000000000000070571353244124700156510ustar00rootroot00000000000000# 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-1.6.2/po/POTFILES.in000066400000000000000000000010541353244124700157210ustar00rootroot00000000000000# List of source files which contain translatable strings. data/com.github.gkarsay.parlatype.appdata.xml.in data/com.github.gkarsay.parlatype.desktop.in libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in src/main.c src/pt-app.c src/pt-asr-assistant.c src/pt-asr-output.c src/pt-goto-dialog.c src/pt-preferences.c src/pt-window.c src/resources/asr-assistant.ui src/resources/goto-dialog.ui src/resources/help-overlay.ui src/resources/menus.ui src/resources/preferences.ui src/resources/window.ui src/resources/window-headerbar.ui parlatype-1.6.2/po/POTFILES.skip000066400000000000000000000000001353244124700162470ustar00rootroot00000000000000parlatype-1.6.2/po/ar.po000066400000000000000000000462161353244124700151170ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 21:09+0200\n" "PO-Revision-Date: 2019-05-28 11:06+0000\n" "Last-Translator: Ibrahim Saed \n" "Language-Team: Arabic \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: ar\n" #: data/com.github.gkarsay.parlatype.appdata.xml.in:7 #: data/com.github.gkarsay.parlatype.desktop.in:4 src/pt-app.c:189 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "بارلاتايب" #: data/com.github.gkarsay.parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "مشغل وسائط لتدوين الخطابات" #: data/com.github.gkarsay.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/com.github.gkarsay.parlatype.appdata.xml.in:24 msgid "Gabor Karsay" msgstr "غابور كارساي" #: data/com.github.gkarsay.parlatype.desktop.in:5 msgid "Transcription utility" msgstr "أداة تدوين" #: data/com.github.gkarsay.parlatype.desktop.in:6 msgid "Transcription;" msgstr "تدوين; استنساخ; انتساخ; نسخ" #: data/com.github.gkarsay.parlatype.desktop.in:8 msgid "com.github.gkarsay.parlatype" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:6 msgid "LibreOffice/Parlatype Helpers" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:7 msgid "Control Parlatype using LibreOffice macros" msgstr "التحكم في بارلاتايب باستخدام الماكرو في ليبرأوفيس" #: src/pt-app.c:43 msgid "Show the application’s version" msgstr "عرض إصدار التطبيق" #: src/pt-app.c:52 msgid "Enable automatic speech recognition" msgstr "تفعيل التعرف التلقائي على الكلام" #: src/pt-app.c:60 msgid "Use internal textpad for automatic speech recognition" msgstr "استخدم لوحة النص الداخلية للتعرف التلقائي على الكلام" #: src/pt-app.c:83 msgid "Open Audio File" msgstr "أفتح ملف صوت" #: src/pt-app.c:86 src/resources/window-headerbar.ui:12 msgid "_Open" msgstr "_فتح" #: src/pt-app.c:87 src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_إلغاء" #: src/pt-app.c:106 msgid "Audio files" msgstr "ملفات صوت" #: src/pt-app.c:107 msgid "All files" msgstr "كل الملفّات" #. Translators: %s is a detailed error message #: src/pt-app.c:156 #, 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:174 msgid "Including code from other projects:" msgstr "Including code from other projects:" #: src/pt-app.c:192 msgid "A basic transcription utility" msgstr "أداة إملاء اساسية" #: src/pt-app.c:196 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:321 msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" "تحذير: بارلاتايب يفتح ملف واحد فقط في أي وقت. الملف الآخر سيتم تجاهله.\n" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:194 msgid "The folder contains no acoustic model." msgstr "المجلد لا يحتوي على نموذج صوتي." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:301 msgid "Please select …" msgstr "الرجاء الاختيار ..." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:340 msgid "Missing parameters" msgstr "معايير مفقودة" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:384 msgid "Timed out" msgstr "انتهى الوقت" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:386 msgid "" "Scanning the folder took too long. Please make sure to open a folder with " "model data only." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:390 msgid "Scanning the folder failed" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:406 msgid "Nothing found" msgstr "لم يُعثر على أي شيء" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:408 msgid "This folder doesn’t contain a suitable model." msgstr "هذا المجلد لا يحتوي على نموذج مناسب." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:459 msgid "" "The folder contains no language model. Please choose a language model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:468 msgid "The folder contains several language models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:479 msgid "" "The folder contains no dictionary. Please choose a dictionary from another " "folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:488 msgid "The folder contains several dictionaries." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:498 msgid "" "The folder contains no acoustic model. Please choose an acoustic model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:507 msgid "The folder contains several acoustic models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:625 msgid "Download model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:633 msgid "Finish configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:210 msgid "Select output for automatic speech recognition" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:212 msgid "Please open and switch focus to a word processor." 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:98 src/pt-preferences.c:108 #: src/pt-preferences.c:118 msgid "second" msgid_plural "seconds" msgstr[0] "ثانية" msgstr[1] "ثواني" msgstr[2] "ثانيتان" msgstr[3] "ثوانِ" msgstr[4] "ثانية" msgstr[5] "ثانية" #: src/pt-preferences.c:289 msgid "Deleting configuration" msgstr "حذف إعدادات التكوين" #: src/pt-preferences.c:290 #, c-format msgid "Do you really want to delete “%s”?" msgstr "هل ترغب فعلا بحذف “%s”؟" #: src/pt-window.c:219 #, c-format msgid "Found %s" msgstr "" #: src/pt-window.c:220 msgid "Press “Play” to start automatic speech recognition." msgstr "اضغط \"تشغيل\" لبدء التعرف الآلي للخطاب." #: src/pt-window.c:423 #, 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:440 #, 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:459 msgid "Pause" msgstr "إلباث" #: src/pt-window.c:462 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:469 msgid "Start playing" msgstr "إبدأ التشغيل" #: src/pt-window.c:505 #, c-format msgid "Go to time in clipboard: %s" msgstr "اذهب إلى الوقت في الحافظة: %s" #: src/pt-window.c:507 src/pt-window.c:1246 msgid "Go to time in clipboard" msgstr "اذهب إلى الوقت في الحافظة" #: src/pt-window.c:1162 #, 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 "" #: src/pt-window.c:1165 msgid "Fatal error" msgstr "خطأ فادح" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:15 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:30 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:45 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:59 msgid "When you are finished, specify the folder with the model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:96 msgid "Language model" msgstr "" #: src/resources/asr-assistant.ui:125 msgid "Select language model" msgstr "اختر نموذج اللغة" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:157 msgid "Dictionary" msgstr "القاموس" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:186 msgid "Select dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:218 msgid "Acoustic model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:248 msgid "Select acoustic model folder" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:285 msgid "Setup is completed. Please give this configuration a name:" msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:46 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:15 msgid "General" 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:270 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:27 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 "Manual transcription" msgstr "تدوين يدوي" #: src/resources/menus.ui:12 msgid "Automatic transcription" msgstr "تدوين تلقائي" #: src/resources/menus.ui:19 msgid "Preferences" msgstr "التفضيلات" #: src/resources/menus.ui:23 msgid "_Keyboard Shortcuts" msgstr "اختصارات لو_حة المفاتيح" #: src/resources/menus.ui:31 msgid "About Parlatype" msgstr "عن بارلاتايب" #: src/resources/menus.ui:38 msgid "Copy time to clipboard" msgstr "نسخ الوقت إلى الحافظة" #: src/resources/menus.ui:42 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:140 msgid "_Pixels per second:" msgstr "" #: src/resources/preferences.ui:170 msgid "Show _time scale" msgstr "" #. Resolution of the waveform image #: src/resources/preferences.ui:188 msgid "Resolution" msgstr "الدقة" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:203 msgid "Display" msgstr "العرض" #: src/resources/preferences.ui:216 msgid "_Moving cursor" msgstr "" #: src/resources/preferences.ui:233 msgid "_Fixed cursor" msgstr "" #: src/resources/preferences.ui:287 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:389 msgid "Jump _forward:" msgstr "" #: src/resources/preferences.ui:403 msgid "Jump _back:" msgstr "" #: src/resources/preferences.ui:417 msgid "Jump back on _pause:" msgstr "" #: src/resources/preferences.ui:440 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:454 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:473 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:487 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:509 msgid "Controls" msgstr "عناصر التحكم" #: src/resources/preferences.ui:552 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:565 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:583 msgid "Precision" msgstr "الدقة" #: src/resources/preferences.ui:599 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:615 msgid "Examples" msgstr "أمثلة" #: src/resources/preferences.ui:657 msgid "Precision:" msgstr "الدقة:" #: src/resources/preferences.ui:689 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:732 msgid "Timestamps" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:863 msgid "Language model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:890 msgid "Dictionary:" msgstr "القاموس:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:917 msgid "Acoustic model folder:" msgstr "مجلد النموذج الصوتي:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:965 msgid "There is no configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:975 msgid "Add a configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:1004 msgid "Speech recognition" msgstr "" #: src/resources/preferences.ui:1022 msgid "Remember _size" msgstr "تذكر ال_حجم" #: src/resources/preferences.ui:1037 msgid "Remember _position" msgstr "تذكر ال_موضع" #: src/resources/preferences.ui:1052 msgid "Start on _top" msgstr "" #: src/resources/preferences.ui:1074 msgid "Window" msgstr "" #: src/resources/window.ui:142 msgid "_Play" msgstr "" #: src/resources/window.ui:312 msgid "Speed:" msgstr "" #: src/resources/window-headerbar.ui:17 msgid "Open a file" msgstr "" parlatype-1.6.2/po/ca.po000066400000000000000000000423701353244124700150750ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 21:09+0200\n" "PO-Revision-Date: 2018-06-04 12:45+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Catalan \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: ca\n" #: data/com.github.gkarsay.parlatype.appdata.xml.in:7 #: data/com.github.gkarsay.parlatype.desktop.in:4 src/pt-app.c:189 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/com.github.gkarsay.parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/com.github.gkarsay.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/com.github.gkarsay.parlatype.appdata.xml.in:24 msgid "Gabor Karsay" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Utilitat de transcripció" #: data/com.github.gkarsay.parlatype.desktop.in:6 msgid "Transcription;" msgstr "Transcripció;" #: data/com.github.gkarsay.parlatype.desktop.in:8 msgid "com.github.gkarsay.parlatype" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:6 msgid "LibreOffice/Parlatype Helpers" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:7 msgid "Control Parlatype using LibreOffice macros" msgstr "" #: src/pt-app.c:43 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:52 msgid "Enable automatic speech recognition" msgstr "" #: src/pt-app.c:60 msgid "Use internal textpad for automatic speech recognition" msgstr "" #: src/pt-app.c:83 msgid "Open Audio File" msgstr "Obre Fitxer d'Àudio" #: src/pt-app.c:86 src/resources/window-headerbar.ui:12 msgid "_Open" msgstr "_Obre" #: src/pt-app.c:87 src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Cancel·la" #: src/pt-app.c:106 msgid "Audio files" msgstr "Fitxers d'àudio" #: src/pt-app.c:107 msgid "All files" msgstr "Tots els fitxers" #. Translators: %s is a detailed error message #: src/pt-app.c:156 #, 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:174 msgid "Including code from other projects:" msgstr "Inclou codi d'altres projectes:" #: src/pt-app.c:192 msgid "A basic transcription utility" msgstr "Una utilitat bàsica de transcripció" #: src/pt-app.c:196 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:321 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" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:194 msgid "The folder contains no acoustic model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:301 msgid "Please select …" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:340 msgid "Missing parameters" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:384 msgid "Timed out" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:386 msgid "" "Scanning the folder took too long. Please make sure to open a folder with " "model data only." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:390 msgid "Scanning the folder failed" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:406 msgid "Nothing found" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:408 msgid "This folder doesn’t contain a suitable model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:459 msgid "" "The folder contains no language model. Please choose a language model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:468 msgid "The folder contains several language models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:479 msgid "" "The folder contains no dictionary. Please choose a dictionary from another " "folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:488 msgid "The folder contains several dictionaries." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:498 msgid "" "The folder contains no acoustic model. Please choose an acoustic model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:507 msgid "The folder contains several acoustic models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:625 msgid "Download model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:633 msgid "Finish configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:210 msgid "Select output for automatic speech recognition" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:212 msgid "Please open and switch focus to a word processor." 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:98 src/pt-preferences.c:108 #: src/pt-preferences.c:118 msgid "second" msgid_plural "seconds" msgstr[0] "segon" msgstr[1] "segons" #: src/pt-preferences.c:289 msgid "Deleting configuration" msgstr "" #: src/pt-preferences.c:290 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-window.c:219 #, c-format msgid "Found %s" msgstr "" #: src/pt-window.c:220 msgid "Press “Play” to start automatic speech recognition." msgstr "" #: src/pt-window.c:423 #, 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:440 #, 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:459 msgid "Pause" msgstr "Pausa" #: src/pt-window.c:462 #, 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:469 msgid "Start playing" msgstr "Inicia la reproducció" #: src/pt-window.c:505 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:507 src/pt-window.c:1246 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1162 #, 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 "" #: src/pt-window.c:1165 msgid "Fatal error" msgstr "Error greu" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:15 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:30 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:45 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:59 msgid "When you are finished, specify the folder with the model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:96 msgid "Language model" msgstr "" #: src/resources/asr-assistant.ui:125 msgid "Select language model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:157 msgid "Dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:186 msgid "Select dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:218 msgid "Acoustic model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:248 msgid "Select acoustic model folder" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:285 msgid "Setup is completed. Please give this configuration a name:" msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:46 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:15 msgid "General" 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 "Surt" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:270 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:27 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 "Manual transcription" msgstr "" #: src/resources/menus.ui:12 msgid "Automatic transcription" msgstr "" #: src/resources/menus.ui:19 msgid "Preferences" msgstr "Preferències" #: src/resources/menus.ui:23 msgid "_Keyboard Shortcuts" msgstr "" #: src/resources/menus.ui:31 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:38 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:42 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:140 msgid "_Pixels per second:" msgstr "_Píxels per segon:" #: src/resources/preferences.ui:170 msgid "Show _time scale" msgstr "Mostra escala de _temps" #. Resolution of the waveform image #: src/resources/preferences.ui:188 msgid "Resolution" msgstr "Resolució" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:203 msgid "Display" msgstr "Visualitza" #: src/resources/preferences.ui:216 msgid "_Moving cursor" msgstr "Cursor _mòvil" #: src/resources/preferences.ui:233 msgid "_Fixed cursor" msgstr "Cursor _fixe" #: src/resources/preferences.ui:287 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:389 msgid "Jump _forward:" msgstr "_Avança:" #: src/resources/preferences.ui:403 msgid "Jump _back:" msgstr "Torna _enrere:" #: src/resources/preferences.ui:417 msgid "Jump back on _pause:" msgstr "Torna enrere quan es _pause:" #: src/resources/preferences.ui:440 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:454 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:473 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:487 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:509 msgid "Controls" msgstr "Controls" #: src/resources/preferences.ui:552 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:565 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:583 msgid "Precision" msgstr "" #: src/resources/preferences.ui:599 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:615 msgid "Examples" msgstr "" #: src/resources/preferences.ui:657 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:689 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:732 msgid "Timestamps" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:863 msgid "Language model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:890 msgid "Dictionary:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:917 msgid "Acoustic model folder:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:965 msgid "There is no configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:975 msgid "Add a configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:1004 msgid "Speech recognition" msgstr "" #: src/resources/preferences.ui:1022 msgid "Remember _size" msgstr "" #: src/resources/preferences.ui:1037 msgid "Remember _position" msgstr "Recorda _posició" #: src/resources/preferences.ui:1052 msgid "Start on _top" msgstr "Comença a la par_t superior" #: src/resources/preferences.ui:1074 msgid "Window" msgstr "Finestra" #: src/resources/window.ui:142 msgid "_Play" msgstr "_Reprodueix" #: src/resources/window.ui:312 msgid "Speed:" msgstr "Velocitat:" #: src/resources/window-headerbar.ui:17 msgid "Open a file" msgstr "Obre un fitxer" parlatype-1.6.2/po/cs.po000066400000000000000000000512741353244124700151220ustar00rootroot00000000000000# 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: 2019-05-27 21:09+0200\n" "PO-Revision-Date: 2019-03-11 07:56+0000\n" "Last-Translator: fri \n" "Language-Team: Czech \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: cs\n" #: data/com.github.gkarsay.parlatype.appdata.xml.in:7 #: data/com.github.gkarsay.parlatype.desktop.in:4 src/pt-app.c:189 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/com.github.gkarsay.parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/com.github.gkarsay.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/com.github.gkarsay.parlatype.appdata.xml.in:24 msgid "Gabor Karsay" msgstr "Gabor Karsay" #: data/com.github.gkarsay.parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Pomůcka pro přepis" #: data/com.github.gkarsay.parlatype.desktop.in:6 msgid "Transcription;" msgstr "Přepis;" #: data/com.github.gkarsay.parlatype.desktop.in:8 msgid "com.github.gkarsay.parlatype" msgstr "com.github.gkarsay.parlatype" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:6 msgid "LibreOffice/Parlatype Helpers" msgstr "Pomocníci LibreOffice/Parlatype" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:7 msgid "Control Parlatype using LibreOffice macros" msgstr "Ovládejte Parlatype pomocí maker LibreOffice" #: src/pt-app.c:43 msgid "Show the application’s version" msgstr "Ukázat verzi programu" #: src/pt-app.c:52 msgid "Enable automatic speech recognition" msgstr "" #: src/pt-app.c:60 msgid "Use internal textpad for automatic speech recognition" msgstr "Použít vnitřní textový blok pro automatické rozpoznávání řeči" #: src/pt-app.c:83 msgid "Open Audio File" msgstr "Otevřít zvukový soubor" #: src/pt-app.c:86 src/resources/window-headerbar.ui:12 msgid "_Open" msgstr "_Otevřít" #: src/pt-app.c:87 src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Zrušit" #: src/pt-app.c:106 msgid "Audio files" msgstr "Zvukové soubory" #: src/pt-app.c:107 msgid "All files" msgstr "Všechny soubory" #. Translators: %s is a detailed error message #: src/pt-app.c:156 #, 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:174 msgid "Including code from other projects:" msgstr "Obsahuje kód z jiných projektů:" #: src/pt-app.c:192 msgid "A basic transcription utility" msgstr "Základní prostředek na přepis" #: src/pt-app.c:196 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " fri https://launchpad.net/~pavelfric" #: src/pt-app.c:321 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" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:194 msgid "The folder contains no acoustic model." msgstr "Složka obsahuje akustický model." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:301 msgid "Please select …" msgstr "Vyberte, prosím, ..." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:340 msgid "Missing parameters" msgstr "Chybí parametry" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:384 msgid "Timed out" msgstr "Čas vypršel" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:386 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:390 msgid "Scanning the folder failed" msgstr "Prohledávání složky selhalo" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:406 msgid "Nothing found" msgstr "Nic nenalezeno" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:408 msgid "This folder doesn’t contain a suitable model." msgstr "Tato složka neobsahuje vhodný model." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:459 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:468 msgid "The folder contains several language models." msgstr "Složka obsahuje několik jazykových modelů." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:479 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:488 msgid "The folder contains several dictionaries." msgstr "Složka obsahuje několik slovníků." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:498 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:507 msgid "The folder contains several acoustic models." msgstr "Složka obsahuje několik akustický modelů." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:625 msgid "Download model" msgstr "Stáhnout model" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:633 msgid "Finish configuration" msgstr "Dokončit nastavení" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:210 msgid "Select output for automatic speech recognition" msgstr "Vybrat výstup pro automatické rozpoznávání řeči" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:212 msgid "Please open and switch focus to a word processor." msgstr "Otevřete, prosím, a přepněte zaměření na textový editor." #. 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:98 src/pt-preferences.c:108 #: src/pt-preferences.c:118 msgid "second" msgid_plural "seconds" msgstr[0] "sekunda" msgstr[1] "sekund" msgstr[2] "sekund" #: src/pt-preferences.c:289 msgid "Deleting configuration" msgstr "Smazání nastavení" #: src/pt-preferences.c:290 #, c-format msgid "Do you really want to delete “%s”?" msgstr "Opravdu chcete smazat “%s”?" #: src/pt-window.c:219 #, c-format msgid "Found %s" msgstr "Nalezeno %s" #: src/pt-window.c:220 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." #: src/pt-window.c:423 #, 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:440 #, 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:459 msgid "Pause" msgstr "Pozastavit" #: src/pt-window.c:462 #, 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:469 msgid "Start playing" msgstr "Začít přehrávat" #: src/pt-window.c:505 #, c-format msgid "Go to time in clipboard: %s" msgstr "Jít na čas ve schránce: %s" #: src/pt-window.c:507 src/pt-window.c:1246 msgid "Go to time in clipboard" msgstr "Jít na čas ve schránce" #: src/pt-window.c:1162 #, 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" #: src/pt-window.c:1165 msgid "Fatal error" msgstr "Vážná chyba" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:15 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:30 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ů." #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:45 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ě." #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:59 msgid "When you are finished, specify the folder with the model:" msgstr "Až skončíte, stanovte složku s modelem:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:96 msgid "Language model" msgstr "Jazykový model" #: src/resources/asr-assistant.ui:125 msgid "Select language model" msgstr "Vybrat jazykový model" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:157 msgid "Dictionary" msgstr "Slovník" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:186 msgid "Select dictionary" msgstr "Vybrat slovník" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:218 msgid "Acoustic model" msgstr "Akustický model" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:248 msgid "Select acoustic model folder" msgstr "Vybrat složku s akustickým modelem" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:285 msgid "Setup is completed. Please give this configuration a name:" msgstr "Nastavení je hotovo. Nastavení, prosím, pojmenujte:" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:46 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:15 msgid "General" msgstr "Obecné" #: 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:270 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:27 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 "Manual transcription" msgstr "Ruční přepis" #: src/resources/menus.ui:12 msgid "Automatic transcription" msgstr "Automatický přepis" #: src/resources/menus.ui:19 msgid "Preferences" msgstr "Nastavení" #: src/resources/menus.ui:23 msgid "_Keyboard Shortcuts" msgstr "_Klávesové zkratky" #: src/resources/menus.ui:31 msgid "About Parlatype" msgstr "O programu Parlatype" #: src/resources/menus.ui:38 msgid "Copy time to clipboard" msgstr "Kopírovat čas do schránky" #: src/resources/menus.ui:42 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:140 msgid "_Pixels per second:" msgstr "_Obrazových bodů za sekundu:" #: src/resources/preferences.ui:170 msgid "Show _time scale" msgstr "Ukázat ča_sovou stupnici" #. Resolution of the waveform image #: src/resources/preferences.ui:188 msgid "Resolution" msgstr "Rozlišení" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:203 msgid "Display" msgstr "Zobrazení" #: src/resources/preferences.ui:216 msgid "_Moving cursor" msgstr "_Pohybující se ukazatel" #: src/resources/preferences.ui:233 msgid "_Fixed cursor" msgstr "P_evný ukazatel" #: src/resources/preferences.ui:287 msgid "Jumps" msgstr "Skoky" #: src/resources/preferences.ui:389 msgid "Jump _forward:" msgstr "Skočit _vpřed:" #: src/resources/preferences.ui:403 msgid "Jump _back:" msgstr "Skočit zpě_t:" #: src/resources/preferences.ui:417 msgid "Jump back on _pause:" msgstr "Skočit zpět při p_ozastavení:" #: src/resources/preferences.ui:440 msgid "Pressing “Play” at the end of file" msgstr "Stisknutí Přehrát na konci souboru" #: src/resources/preferences.ui:454 msgid "Replay file" msgstr "Přehrát soubor znovu" #: src/resources/preferences.ui:473 msgid "Pressing “Play” at the end of selection" msgstr "Stisknutí Přehrát na konci výběru" #: src/resources/preferences.ui:487 msgid "Replay selection" msgstr "Přehrát výběr znovu" #: src/resources/preferences.ui:509 msgid "Controls" msgstr "Ovládání" #: src/resources/preferences.ui:552 msgid "Hours and zeroes" msgstr "Hodiny a nuly" #: src/resources/preferences.ui:565 msgid "Always show hours and leading zeroes" msgstr "Vždy ukazovat hodiny a nuly na začátku" #: src/resources/preferences.ui:583 msgid "Precision" msgstr "Přesnost" #: src/resources/preferences.ui:599 msgid "Characters around timestamps" msgstr "Znaky okolo časových razítek" #: src/resources/preferences.ui:615 msgid "Examples" msgstr "Príklady" #: src/resources/preferences.ui:657 msgid "Precision:" msgstr "Přesnost:" #: src/resources/preferences.ui:689 msgid "Fraction separator:" msgstr "Oddělovač zlomku:" #: src/resources/preferences.ui:732 msgid "Timestamps" msgstr "Časová razítka" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:863 msgid "Language model:" msgstr "Jazykový model:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:890 msgid "Dictionary:" msgstr "Slovník:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:917 msgid "Acoustic model folder:" msgstr "Složka s akustickým modelem:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:965 msgid "There is no configuration" msgstr "Není žádné nastavení" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:975 msgid "Add a configuration" msgstr "Přidat nastavení" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:1004 msgid "Speech recognition" msgstr "Rozpoznávání řeči" #: src/resources/preferences.ui:1022 msgid "Remember _size" msgstr "Zapamatovat si ve_likost" #: src/resources/preferences.ui:1037 msgid "Remember _position" msgstr "Zapamatovat si polo_hu" #: src/resources/preferences.ui:1052 msgid "Start on _top" msgstr "Začít n_ahoře" #: src/resources/preferences.ui:1074 msgid "Window" msgstr "Okno" #: src/resources/window.ui:142 msgid "_Play" msgstr "_Přehrát" #: src/resources/window.ui:312 msgid "Speed:" msgstr "Rychlost:" #: src/resources/window-headerbar.ui:17 msgid "Open a file" msgstr "Otevřít soubor" parlatype-1.6.2/po/de.po000066400000000000000000000521441353244124700151020ustar00rootroot00000000000000# German translations for parlatype. # Copyright (C) 2016 Gabor Karsay # This file is distributed under the same license as the parlatype package. # Gabor Karsay , 2016, 2017, 2018, 2019. # msgid "" msgstr "" "Project-Id-Version: parlatype 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-05-27 21:09+0200\n" "PO-Revision-Date: 2019-06-22 10:22+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Deutsch <>\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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: de\n" #: data/com.github.gkarsay.parlatype.appdata.xml.in:7 #: data/com.github.gkarsay.parlatype.desktop.in:4 src/pt-app.c:189 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/com.github.gkarsay.parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "Medienspieler für Sprachtranskription" #: data/com.github.gkarsay.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/com.github.gkarsay.parlatype.appdata.xml.in:24 msgid "Gabor Karsay" msgstr "Gabor Karsay" #: data/com.github.gkarsay.parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Transkriptions-Helfer" #: data/com.github.gkarsay.parlatype.desktop.in:6 msgid "Transcription;" msgstr "Transkription;" #: data/com.github.gkarsay.parlatype.desktop.in:8 msgid "com.github.gkarsay.parlatype" msgstr "com.github.gkarsay.parlatype" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:6 msgid "LibreOffice/Parlatype Helpers" msgstr "LibreOffice/Parlatype-Helfer" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:7 msgid "Control Parlatype using LibreOffice macros" msgstr "Parlatype mit Hilfe von LibreOffice-Makros bedienen" #: src/pt-app.c:43 msgid "Show the application’s version" msgstr "Version der Anwendung anzeigen" #: src/pt-app.c:52 msgid "Enable automatic speech recognition" msgstr "Automatische Spracherkennung aktivieren" #: src/pt-app.c:60 msgid "Use internal textpad for automatic speech recognition" msgstr "Internes Textpad für Spracherkennung verwenden" #: src/pt-app.c:83 msgid "Open Audio File" msgstr "Audio-Datei öffnen" #: src/pt-app.c:86 src/resources/window-headerbar.ui:12 msgid "_Open" msgstr "_Öffnen" #: src/pt-app.c:87 src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Abbrechen" #: src/pt-app.c:106 msgid "Audio files" msgstr "Audio-Dateien" #: src/pt-app.c:107 msgid "All files" msgstr "Alle Dateien" #. Translators: %s is a detailed error message #: src/pt-app.c:156 #, 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:174 msgid "Including code from other projects:" msgstr "Aus anderen Projekten übernommener Code:" #: src/pt-app.c:192 msgid "A basic transcription utility" msgstr "Ein einfaches Transkriptionsprogramm" #: src/pt-app.c:196 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" #: src/pt-app.c:321 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" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:194 msgid "The folder contains no acoustic model." msgstr "Das Verzeichnis enthält kein akustisches Modell." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:301 msgid "Please select …" msgstr "Bitte wählen …" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:340 msgid "Missing parameters" msgstr "Fehlende Parameter" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:384 msgid "Timed out" msgstr "Zeitüberschreitung" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:386 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:390 msgid "Scanning the folder failed" msgstr "Durchsuchen des Verzeichnisses fehlgeschlagen" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:406 msgid "Nothing found" msgstr "Nichts gefunden" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:408 msgid "This folder doesn’t contain a suitable model." msgstr "Dieses Verzeichnis enthält kein geeignetes Modell." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:459 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:468 msgid "The folder contains several language models." msgstr "Das Verzeichnis enthält mehrere Sprachmodelle." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:479 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:488 msgid "The folder contains several dictionaries." msgstr "Das Verzeichnis enthält mehrere Wörterbücher." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:498 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:507 msgid "The folder contains several acoustic models." msgstr "Das Verzeichnis enthält mehrere akustische Modelle." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:625 msgid "Download model" msgstr "Modell herunterladen" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:633 msgid "Finish configuration" msgstr "Konfiguration beenden" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:210 msgid "Select output for automatic speech recognition" msgstr "Wählen Sie eine Ausgabe für die automatische Spracherkennung" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:212 msgid "Please open and switch focus to a word processor." msgstr "" "Bitte öffnen Sie und wechseln Sie den Fokus zu einer Textverarbeitung." #. 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:98 src/pt-preferences.c:108 #: src/pt-preferences.c:118 msgid "second" msgid_plural "seconds" msgstr[0] "Sekunde" msgstr[1] "Sekunden" #: src/pt-preferences.c:289 msgid "Deleting configuration" msgstr "Konfiguration löschen" #: src/pt-preferences.c:290 #, c-format msgid "Do you really want to delete “%s”?" msgstr "Wollen Sie wirklich »%s« löschen?" #: src/pt-window.c:219 #, c-format msgid "Found %s" msgstr "%s gefunden" #: src/pt-window.c:220 msgid "Press “Play” to start automatic speech recognition." msgstr "" "Drücken Sie »Wiedergabe«, um die automatische Spracherkennung zu beginnen." #: src/pt-window.c:423 #, 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:440 #, 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:459 msgid "Pause" msgstr "Wiedergabe unterbrechen" #: src/pt-window.c:462 #, 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:469 msgid "Start playing" msgstr "Wiedergabe starten" #: src/pt-window.c:505 #, c-format msgid "Go to time in clipboard: %s" msgstr "Zu Zeit aus Zwischenablage gehen: %s" #: src/pt-window.c:507 src/pt-window.c:1246 msgid "Go to time in clipboard" msgstr "Zu Zeit aus Zwischenablage gehen" #: src/pt-window.c:1162 #, 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" #: src/pt-window.c:1165 msgid "Fatal error" msgstr "Schwerer Fehler" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:15 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:30 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)." #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:45 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:59 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:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:96 msgid "Language model" msgstr "Sprachmodell" #: src/resources/asr-assistant.ui:125 msgid "Select language model" msgstr "Sprachmodell auswählen" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:157 msgid "Dictionary" msgstr "Wörterbuch" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:186 msgid "Select dictionary" msgstr "Wörterbuch auswählen" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:218 msgid "Acoustic model" msgstr "Akustisches Modell" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:248 msgid "Select acoustic model folder" msgstr "Verzeichnis mit akustischem Modell auswählen" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:285 msgid "Setup is completed. Please give this configuration a name:" msgstr "" "Die Einrichtung ist abgeschlossen. Bitte geben Sie dieser Konfiguration " "einen Namen:" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:46 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:15 msgid "General" msgstr "Allgemein" #: 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:270 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:27 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 "Manual transcription" msgstr "Manuelle Transkription" #: src/resources/menus.ui:12 msgid "Automatic transcription" msgstr "Automatische Transkription" #: src/resources/menus.ui:19 msgid "Preferences" msgstr "Einstellungen" #: src/resources/menus.ui:23 msgid "_Keyboard Shortcuts" msgstr "_Tastenkürzel" #: src/resources/menus.ui:31 msgid "About Parlatype" msgstr "Über Parlatype" #: src/resources/menus.ui:38 msgid "Copy time to clipboard" msgstr "Zeit in die Zwischenablage kopieren" #: src/resources/menus.ui:42 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:140 msgid "_Pixels per second:" msgstr "_Pixel pro Sekunde:" #: src/resources/preferences.ui:170 msgid "Show _time scale" msgstr "_Zeitskala anzeigen" #. Resolution of the waveform image #: src/resources/preferences.ui:188 msgid "Resolution" msgstr "Auflösung" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:203 msgid "Display" msgstr "Anzeige" #: src/resources/preferences.ui:216 msgid "_Moving cursor" msgstr "Cursor _bewegt sich" #: src/resources/preferences.ui:233 msgid "_Fixed cursor" msgstr "Cursor ist _fixiert" #: src/resources/preferences.ui:287 msgid "Jumps" msgstr "Sprünge" #: src/resources/preferences.ui:389 msgid "Jump _forward:" msgstr "_Vorwärts springen:" #: src/resources/preferences.ui:403 msgid "Jump _back:" msgstr "_Zurückspringen:" #: src/resources/preferences.ui:417 msgid "Jump back on _pause:" msgstr "Bei _Pause zurückspulen:" #: src/resources/preferences.ui:440 msgid "Pressing “Play” at the end of file" msgstr "»Wiedergabe« drücken am Ende der Datei" #: src/resources/preferences.ui:454 msgid "Replay file" msgstr "Datei wieder abspielen" #: src/resources/preferences.ui:473 msgid "Pressing “Play” at the end of selection" msgstr "»Wiedergabe« drücken am Ende einer Auswahl" #: src/resources/preferences.ui:487 msgid "Replay selection" msgstr "Auswahl wieder abspielen" #: src/resources/preferences.ui:509 msgid "Controls" msgstr "Steuerung" #: src/resources/preferences.ui:552 msgid "Hours and zeroes" msgstr "Stunden und Nullen" #: src/resources/preferences.ui:565 msgid "Always show hours and leading zeroes" msgstr "Immer Stunden und führende Null zeigen" #: src/resources/preferences.ui:583 msgid "Precision" msgstr "Genauigkeit" #: src/resources/preferences.ui:599 msgid "Characters around timestamps" msgstr "Zeichen um Zeitstempel" #: src/resources/preferences.ui:615 msgid "Examples" msgstr "Beispiele" #: src/resources/preferences.ui:657 msgid "Precision:" msgstr "Genauigkeit:" #: src/resources/preferences.ui:689 msgid "Fraction separator:" msgstr "Abgrenzung für Sekundenbruchteile:" #: src/resources/preferences.ui:732 msgid "Timestamps" msgstr "Zeitstempel" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:863 msgid "Language model:" msgstr "Sprachmodell:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:890 msgid "Dictionary:" msgstr "Wörterbuch:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:917 msgid "Acoustic model folder:" msgstr "Verzeichnis mit akustischem Modell:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:965 msgid "There is no configuration" msgstr "Es gibt keine Konfiguration" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:975 msgid "Add a configuration" msgstr "Konfiguration hinzufügen" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:1004 msgid "Speech recognition" msgstr "Spracherkennung" #: src/resources/preferences.ui:1022 msgid "Remember _size" msgstr "_Größe des Fensters merken" #: src/resources/preferences.ui:1037 msgid "Remember _position" msgstr "_Position des Fensters merken" #: src/resources/preferences.ui:1052 msgid "Start on _top" msgstr "»Immer im _Vordergrund« starten" #: src/resources/preferences.ui:1074 msgid "Window" msgstr "Fenster" #: src/resources/window.ui:142 msgid "_Play" msgstr "_Wiedergabe" #: src/resources/window.ui:312 msgid "Speed:" msgstr "Geschwindigkeit:" #: src/resources/window-headerbar.ui:17 msgid "Open a file" msgstr "Eine Datei öffnen" parlatype-1.6.2/po/en_GB.po000066400000000000000000000504261353244124700154650ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 21:09+0200\n" "PO-Revision-Date: 2019-05-27 20:10+0000\n" "Last-Translator: Stephan Woidowski \n" "Language-Team: English (United Kingdom) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: en_GB\n" #: data/com.github.gkarsay.parlatype.appdata.xml.in:7 #: data/com.github.gkarsay.parlatype.desktop.in:4 src/pt-app.c:189 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/com.github.gkarsay.parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "Media player for speech transcription" #: data/com.github.gkarsay.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/com.github.gkarsay.parlatype.appdata.xml.in:24 msgid "Gabor Karsay" msgstr "Gabor Karsay" #: data/com.github.gkarsay.parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Transcription utility" #: data/com.github.gkarsay.parlatype.desktop.in:6 msgid "Transcription;" msgstr "Transcription;" #: data/com.github.gkarsay.parlatype.desktop.in:8 msgid "com.github.gkarsay.parlatype" msgstr "com.github.gkarsay.parlatype" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:6 msgid "LibreOffice/Parlatype Helpers" msgstr "LibreOffice/Parlatype Helpers" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:7 msgid "Control Parlatype using LibreOffice macros" msgstr "Control Parlatype using LibreOffice macros" #: src/pt-app.c:43 msgid "Show the application’s version" msgstr "Show the application’s version" #: src/pt-app.c:52 msgid "Enable automatic speech recognition" msgstr "Enable automatic speech recognition" #: src/pt-app.c:60 msgid "Use internal textpad for automatic speech recognition" msgstr "Use internal textpad for automatic speech recognition" #: src/pt-app.c:83 msgid "Open Audio File" msgstr "Open Audio File" #: src/pt-app.c:86 src/resources/window-headerbar.ui:12 msgid "_Open" msgstr "_Open" #: src/pt-app.c:87 src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Cancel" #: src/pt-app.c:106 msgid "Audio files" msgstr "Audio files" #: src/pt-app.c:107 msgid "All files" msgstr "All files" #. Translators: %s is a detailed error message #: src/pt-app.c:156 #, 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:174 msgid "Including code from other projects:" msgstr "Including code from other projects:" #: src/pt-app.c:192 msgid "A basic transcription utility" msgstr "A basic transcription utility" #: src/pt-app.c:196 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:321 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" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:194 msgid "The folder contains no acoustic model." msgstr "The folder contains no acoustic model." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:301 msgid "Please select …" msgstr "Please select …" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:340 msgid "Missing parameters" msgstr "Missing parameters" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:384 msgid "Timed out" msgstr "Timed out" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:386 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:390 msgid "Scanning the folder failed" msgstr "Scanning the folder failed" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:406 msgid "Nothing found" msgstr "Nothing found" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:408 msgid "This folder doesn’t contain a suitable model." msgstr "This folder doesn’t contain a suitable model." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:459 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:468 msgid "The folder contains several language models." msgstr "The folder contains several language models." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:479 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:488 msgid "The folder contains several dictionaries." msgstr "The folder contains several dictionaries." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:498 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:507 msgid "The folder contains several acoustic models." msgstr "The folder contains several acoustic models." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:625 msgid "Download model" msgstr "Download model" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:633 msgid "Finish configuration" msgstr "Finish configuration" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:210 msgid "Select output for automatic speech recognition" msgstr "Select output for automatic speech recognition" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:212 msgid "Please open and switch focus to a word processor." msgstr "Please open and switch focus to a word processor." #. 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:98 src/pt-preferences.c:108 #: src/pt-preferences.c:118 msgid "second" msgid_plural "seconds" msgstr[0] "second" msgstr[1] "seconds" #: src/pt-preferences.c:289 msgid "Deleting configuration" msgstr "Deleting configuration" #: src/pt-preferences.c:290 #, c-format msgid "Do you really want to delete “%s”?" msgstr "Do you really want to delete “%s”?" #: src/pt-window.c:219 #, c-format msgid "Found %s" msgstr "Found %s" #: src/pt-window.c:220 msgid "Press “Play” to start automatic speech recognition." msgstr "Press “Play” to start automatic speech recognition." #: src/pt-window.c:423 #, 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:440 #, 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:459 msgid "Pause" msgstr "Pause" #: src/pt-window.c:462 #, 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:469 msgid "Start playing" msgstr "Start playing" #: src/pt-window.c:505 #, c-format msgid "Go to time in clipboard: %s" msgstr "Go to time in clipboard: %s" #: src/pt-window.c:507 src/pt-window.c:1246 msgid "Go to time in clipboard" msgstr "Go to time in clipboard" #: src/pt-window.c:1162 #, 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" #: src/pt-window.c:1165 msgid "Fatal error" msgstr "Fatal error" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:15 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:30 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:45 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:59 msgid "When you are finished, specify the folder with the model:" msgstr "When you are finished, specify the folder with the model:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:96 msgid "Language model" msgstr "Language model" #: src/resources/asr-assistant.ui:125 msgid "Select language model" msgstr "Select language model" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:157 msgid "Dictionary" msgstr "Dictionary" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:186 msgid "Select dictionary" msgstr "Select dictionary" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:218 msgid "Acoustic model" msgstr "Acoustic model" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:248 msgid "Select acoustic model folder" msgstr "Select acoustic model folder" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:285 msgid "Setup is completed. Please give this configuration a name:" msgstr "Setup is completed. Please give this configuration a name:" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:46 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:15 msgid "General" msgstr "General" #: 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:270 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:27 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 "Manual transcription" msgstr "Manual transcription" #: src/resources/menus.ui:12 msgid "Automatic transcription" msgstr "Automatic transcription" #: src/resources/menus.ui:19 msgid "Preferences" msgstr "Preferences" #: src/resources/menus.ui:23 msgid "_Keyboard Shortcuts" msgstr "_Keyboard Shortcuts" #: src/resources/menus.ui:31 msgid "About Parlatype" msgstr "About Parlatype" #: src/resources/menus.ui:38 msgid "Copy time to clipboard" msgstr "Copy time to clipboard" #: src/resources/menus.ui:42 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:140 msgid "_Pixels per second:" msgstr "_Pixels per second:" #: src/resources/preferences.ui:170 msgid "Show _time scale" msgstr "Show _time scale" #. Resolution of the waveform image #: src/resources/preferences.ui:188 msgid "Resolution" msgstr "Resolution" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:203 msgid "Display" msgstr "Display" #: src/resources/preferences.ui:216 msgid "_Moving cursor" msgstr "_Moving cursor" #: src/resources/preferences.ui:233 msgid "_Fixed cursor" msgstr "_Fixed cursor" #: src/resources/preferences.ui:287 msgid "Jumps" msgstr "Jumps" #: src/resources/preferences.ui:389 msgid "Jump _forward:" msgstr "Jump _forward:" #: src/resources/preferences.ui:403 msgid "Jump _back:" msgstr "Jump _back:" #: src/resources/preferences.ui:417 msgid "Jump back on _pause:" msgstr "Jump back on _pause:" #: src/resources/preferences.ui:440 msgid "Pressing “Play” at the end of file" msgstr "Pressing “Play” at the end of file" #: src/resources/preferences.ui:454 msgid "Replay file" msgstr "Replay file" #: src/resources/preferences.ui:473 msgid "Pressing “Play” at the end of selection" msgstr "Pressing “Play” at the end of selection" #: src/resources/preferences.ui:487 msgid "Replay selection" msgstr "Replay selection" #: src/resources/preferences.ui:509 msgid "Controls" msgstr "Controls" #: src/resources/preferences.ui:552 msgid "Hours and zeroes" msgstr "Hours and zeroes" #: src/resources/preferences.ui:565 msgid "Always show hours and leading zeroes" msgstr "Always show hours and leading zeroes" #: src/resources/preferences.ui:583 msgid "Precision" msgstr "Precision" #: src/resources/preferences.ui:599 msgid "Characters around timestamps" msgstr "Characters around timestamps" #: src/resources/preferences.ui:615 msgid "Examples" msgstr "Examples" #: src/resources/preferences.ui:657 msgid "Precision:" msgstr "Precision:" #: src/resources/preferences.ui:689 msgid "Fraction separator:" msgstr "Fraction separator:" #: src/resources/preferences.ui:732 msgid "Timestamps" msgstr "Timestamps" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:863 msgid "Language model:" msgstr "Language model:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:890 msgid "Dictionary:" msgstr "Dictionary:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:917 msgid "Acoustic model folder:" msgstr "Acoustic model folder:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:965 msgid "There is no configuration" msgstr "There is no configuration" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:975 msgid "Add a configuration" msgstr "Add a configuration" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:1004 msgid "Speech recognition" msgstr "Speech recognition" #: src/resources/preferences.ui:1022 msgid "Remember _size" msgstr "Remember _size" #: src/resources/preferences.ui:1037 msgid "Remember _position" msgstr "Remember _position" #: src/resources/preferences.ui:1052 msgid "Start on _top" msgstr "Start on _top" #: src/resources/preferences.ui:1074 msgid "Window" msgstr "Window" #: src/resources/window.ui:142 msgid "_Play" msgstr "_Play" #: src/resources/window.ui:312 msgid "Speed:" msgstr "Speed:" #: src/resources/window-headerbar.ui:17 msgid "Open a file" msgstr "Open a file" parlatype-1.6.2/po/es.po000066400000000000000000000516521353244124700151240ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 21:09+0200\n" "PO-Revision-Date: 2019-07-14 11:50+0000\n" "Last-Translator: Jorge Toledo \n" "Language-Team: Spanish \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: 2019-07-18 10:44+0000\n" "X-Generator: Launchpad (build 19010)\n" "Language: es\n" #: data/com.github.gkarsay.parlatype.appdata.xml.in:7 #: data/com.github.gkarsay.parlatype.desktop.in:4 src/pt-app.c:189 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/com.github.gkarsay.parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "Reproductor multimedia para transcripción de grabaciones de voz" #: data/com.github.gkarsay.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/com.github.gkarsay.parlatype.appdata.xml.in:24 msgid "Gabor Karsay" msgstr "Gabor Karsay" #: data/com.github.gkarsay.parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Utilidad de transcripción" #: data/com.github.gkarsay.parlatype.desktop.in:6 msgid "Transcription;" msgstr "Transcripción;" #: data/com.github.gkarsay.parlatype.desktop.in:8 msgid "com.github.gkarsay.parlatype" msgstr "com.github.gkarsay.parlatype" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:6 msgid "LibreOffice/Parlatype Helpers" msgstr "Auxiliares de LibreOffice/Parlatype" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:7 msgid "Control Parlatype using LibreOffice macros" msgstr "Controle Parlatype a través de macros de LibreOffice" #: src/pt-app.c:43 msgid "Show the application’s version" msgstr "Mostrar la versión de la aplicación" #: src/pt-app.c:52 msgid "Enable automatic speech recognition" msgstr "Activar el reconocimiento de voz automático" #: src/pt-app.c:60 msgid "Use internal textpad for automatic speech recognition" msgstr "" "Usar editor de textos interno para el reconocimiento automático de voz" #: src/pt-app.c:83 msgid "Open Audio File" msgstr "Abrir archivo de audio" #: src/pt-app.c:86 src/resources/window-headerbar.ui:12 msgid "_Open" msgstr "_Abrir" #: src/pt-app.c:87 src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Cancelar" #: src/pt-app.c:106 msgid "Audio files" msgstr "Archivos de audio" #: src/pt-app.c:107 msgid "All files" msgstr "Todos los archivos" #. Translators: %s is a detailed error message #: src/pt-app.c:156 #, 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:174 msgid "Including code from other projects:" msgstr "Incluye código de otros proyectos:" #: src/pt-app.c:192 msgid "A basic transcription utility" msgstr "Una utilidad básica de transcripción" #: src/pt-app.c:196 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" " VPablo https://launchpad.net/~villumar" #: src/pt-app.c:321 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" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:194 msgid "The folder contains no acoustic model." msgstr "La carpeta no contiene ningún modelo acústico." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:301 msgid "Please select …" msgstr "Seleccione…" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:340 msgid "Missing parameters" msgstr "Faltan parámetros" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:384 msgid "Timed out" msgstr "Tiempo agotado" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:386 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:390 msgid "Scanning the folder failed" msgstr "Fallo al escanear la carpeta" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:406 msgid "Nothing found" msgstr "No se encontró nada" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:408 msgid "This folder doesn’t contain a suitable model." msgstr "La carpeta no contiene ningún modelo adecuado." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:459 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:468 msgid "The folder contains several language models." msgstr "La carpeta contiene varios modelos lingüísticos." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:479 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:488 msgid "The folder contains several dictionaries." msgstr "La carpeta contiene varios diccionarios." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:498 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:507 msgid "The folder contains several acoustic models." msgstr "La carpeta contiene varios modelos acústicos." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:625 msgid "Download model" msgstr "Descargar el modelo" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:633 msgid "Finish configuration" msgstr "Finalizar la configuración" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:210 msgid "Select output for automatic speech recognition" msgstr "Selecciona una salida para el reconocimiento automático de voz" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:212 msgid "Please open and switch focus to a word processor." msgstr "Por favor, abre y cambia el foco a un procesador de textos." #. 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:98 src/pt-preferences.c:108 #: src/pt-preferences.c:118 msgid "second" msgid_plural "seconds" msgstr[0] "segundo" msgstr[1] "segundos" #: src/pt-preferences.c:289 msgid "Deleting configuration" msgstr "Eliminando la configuración" #: src/pt-preferences.c:290 #, c-format msgid "Do you really want to delete “%s”?" msgstr "¿Confirma que quiere eliminar «%s»?" #: src/pt-window.c:219 #, c-format msgid "Found %s" msgstr "Encontrados %s" #: src/pt-window.c:220 msgid "Press “Play” to start automatic speech recognition." msgstr "Pulse en «Reproducir» para iniciar el reconocimiento de voz." #: src/pt-window.c:423 #, 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:440 #, 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:459 msgid "Pause" msgstr "Pausa" #: src/pt-window.c:462 #, 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:469 msgid "Start playing" msgstr "Iniciar la reproducción" #: src/pt-window.c:505 #, c-format msgid "Go to time in clipboard: %s" msgstr "Ir a tiempo en portapapeles: %s" #: src/pt-window.c:507 src/pt-window.c:1246 msgid "Go to time in clipboard" msgstr "Ir a tiempo en portapapeles" #: src/pt-window.c:1162 #, 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" #: src/pt-window.c:1165 msgid "Fatal error" msgstr "Error grave" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:15 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:30 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:45 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:59 msgid "When you are finished, specify the folder with the model:" msgstr "Cuando hayas terminado, especifica la carpeta con el modelo:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:96 msgid "Language model" msgstr "Modelo lingüístico" #: src/resources/asr-assistant.ui:125 msgid "Select language model" msgstr "Seleccione un modelo lingüístico" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:157 msgid "Dictionary" msgstr "Diccionario" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:186 msgid "Select dictionary" msgstr "Seleccione un diccionario" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:218 msgid "Acoustic model" msgstr "Modelo acústico" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:248 msgid "Select acoustic model folder" msgstr "Selecciona la carpeta del modelo acústico" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:285 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:" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:46 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:15 msgid "General" msgstr "General" #: 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:270 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:27 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 "Manual transcription" msgstr "Transcripción manual" #: src/resources/menus.ui:12 msgid "Automatic transcription" msgstr "Transcripción automática" #: src/resources/menus.ui:19 msgid "Preferences" msgstr "Preferencias" #: src/resources/menus.ui:23 msgid "_Keyboard Shortcuts" msgstr "Atajos de teclado" #: src/resources/menus.ui:31 msgid "About Parlatype" msgstr "Acerca de Parlatype" #: src/resources/menus.ui:38 msgid "Copy time to clipboard" msgstr "Copiar tiempo al portapapeles" #: src/resources/menus.ui:42 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:140 msgid "_Pixels per second:" msgstr "_Píxeles por segundo:" #: src/resources/preferences.ui:170 msgid "Show _time scale" msgstr "Muestra escala de _tiempo" #. Resolution of the waveform image #: src/resources/preferences.ui:188 msgid "Resolution" msgstr "Resolución" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:203 msgid "Display" msgstr "Visualizar" #: src/resources/preferences.ui:216 msgid "_Moving cursor" msgstr "Cursor _móvil" #: src/resources/preferences.ui:233 msgid "_Fixed cursor" msgstr "Cursor _fijo" #: src/resources/preferences.ui:287 msgid "Jumps" msgstr "Saltos" #: src/resources/preferences.ui:389 msgid "Jump _forward:" msgstr "Avan_zar:" #: src/resources/preferences.ui:403 msgid "Jump _back:" msgstr "_Volver atrás:" #: src/resources/preferences.ui:417 msgid "Jump back on _pause:" msgstr "Volver atrás al _pausar:" #: src/resources/preferences.ui:440 msgid "Pressing “Play” at the end of file" msgstr "Al pulsar “Reproducir” al final del archivo" #: src/resources/preferences.ui:454 msgid "Replay file" msgstr "Reproducir de nuevo el archivo" #: src/resources/preferences.ui:473 msgid "Pressing “Play” at the end of selection" msgstr "Al pulsar \"Reproducir\" al final de la selección" #: src/resources/preferences.ui:487 msgid "Replay selection" msgstr "Reproducir de nuevo la selección" #: src/resources/preferences.ui:509 msgid "Controls" msgstr "Controles" #: src/resources/preferences.ui:552 msgid "Hours and zeroes" msgstr "Horas y ceros" #: src/resources/preferences.ui:565 msgid "Always show hours and leading zeroes" msgstr "Mostrar siempre las horas y los ceros a la izquierda" #: src/resources/preferences.ui:583 msgid "Precision" msgstr "Precisión" #: src/resources/preferences.ui:599 msgid "Characters around timestamps" msgstr "Caracteres alrededor de las marcas temporales" #: src/resources/preferences.ui:615 msgid "Examples" msgstr "Ejemplos" #: src/resources/preferences.ui:657 msgid "Precision:" msgstr "Precisión:" #: src/resources/preferences.ui:689 msgid "Fraction separator:" msgstr "Separador de fracciones:" #: src/resources/preferences.ui:732 msgid "Timestamps" msgstr "Marcas cronológicas" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:863 msgid "Language model:" msgstr "Modelo lingüístico:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:890 msgid "Dictionary:" msgstr "Diccionario:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:917 msgid "Acoustic model folder:" msgstr "Carpeta de modelo acústico:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:965 msgid "There is no configuration" msgstr "No hay configuración" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:975 msgid "Add a configuration" msgstr "Añadir una configuración" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:1004 msgid "Speech recognition" msgstr "Reconocimiento de voz" #: src/resources/preferences.ui:1022 msgid "Remember _size" msgstr "Recordar el _tamaño" #: src/resources/preferences.ui:1037 msgid "Remember _position" msgstr "Recordar la _posición" #: src/resources/preferences.ui:1052 msgid "Start on _top" msgstr "Iniciar _encima de las demás ventanas" #: src/resources/preferences.ui:1074 msgid "Window" msgstr "Ventana" #: src/resources/window.ui:142 msgid "_Play" msgstr "_Reproducir" #: src/resources/window.ui:312 msgid "Speed:" msgstr "Velocidad:" #: src/resources/window-headerbar.ui:17 msgid "Open a file" msgstr "Abrir un archivo" parlatype-1.6.2/po/fi.po000066400000000000000000000427331353244124700151130ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 21:09+0200\n" "PO-Revision-Date: 2018-06-04 12:45+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Finnish \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: fi\n" #: data/com.github.gkarsay.parlatype.appdata.xml.in:7 #: data/com.github.gkarsay.parlatype.desktop.in:4 src/pt-app.c:189 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/com.github.gkarsay.parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/com.github.gkarsay.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/com.github.gkarsay.parlatype.appdata.xml.in:24 msgid "Gabor Karsay" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Työkalu transkriptioon" #: data/com.github.gkarsay.parlatype.desktop.in:6 msgid "Transcription;" msgstr "Transkriptio;" #: data/com.github.gkarsay.parlatype.desktop.in:8 msgid "com.github.gkarsay.parlatype" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:6 msgid "LibreOffice/Parlatype Helpers" msgstr "LibreOffice-/Parlatype-avustajat" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:7 msgid "Control Parlatype using LibreOffice macros" msgstr "Hallitse Parlatypea käyttäen LibreOffice-makroja" #: src/pt-app.c:43 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:52 msgid "Enable automatic speech recognition" msgstr "" #: src/pt-app.c:60 msgid "Use internal textpad for automatic speech recognition" msgstr "" #: src/pt-app.c:83 msgid "Open Audio File" msgstr "Avaa äänitiedosto" #: src/pt-app.c:86 src/resources/window-headerbar.ui:12 msgid "_Open" msgstr "_Avaa" #: src/pt-app.c:87 src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Peru" #: src/pt-app.c:106 msgid "Audio files" msgstr "Äänitiedostot" #: src/pt-app.c:107 msgid "All files" msgstr "Kaikki tiedostot" #. Translators: %s is a detailed error message #: src/pt-app.c:156 #, 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:174 msgid "Including code from other projects:" msgstr "Sisältää koodia muista projekteista:" #: src/pt-app.c:192 msgid "A basic transcription utility" msgstr "" #: src/pt-app.c:196 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:321 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" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:194 msgid "The folder contains no acoustic model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:301 msgid "Please select …" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:340 msgid "Missing parameters" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:384 msgid "Timed out" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:386 msgid "" "Scanning the folder took too long. Please make sure to open a folder with " "model data only." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:390 msgid "Scanning the folder failed" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:406 msgid "Nothing found" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:408 msgid "This folder doesn’t contain a suitable model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:459 msgid "" "The folder contains no language model. Please choose a language model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:468 msgid "The folder contains several language models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:479 msgid "" "The folder contains no dictionary. Please choose a dictionary from another " "folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:488 msgid "The folder contains several dictionaries." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:498 msgid "" "The folder contains no acoustic model. Please choose an acoustic model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:507 msgid "The folder contains several acoustic models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:625 msgid "Download model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:633 msgid "Finish configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:210 msgid "Select output for automatic speech recognition" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:212 msgid "Please open and switch focus to a word processor." 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:98 src/pt-preferences.c:108 #: src/pt-preferences.c:118 msgid "second" msgid_plural "seconds" msgstr[0] "sekunti" msgstr[1] "sekuntia" #: src/pt-preferences.c:289 msgid "Deleting configuration" msgstr "" #: src/pt-preferences.c:290 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-window.c:219 #, c-format msgid "Found %s" msgstr "" #: src/pt-window.c:220 msgid "Press “Play” to start automatic speech recognition." msgstr "" #: src/pt-window.c:423 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "Siirry takaisinpäin 1 sekunti" msgstr[1] "Siirry takaisinpäin %d sekuntia" #: src/pt-window.c:440 #, 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:459 msgid "Pause" msgstr "Keskeytä" #: src/pt-window.c:462 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:469 msgid "Start playing" msgstr "Aloita toistaminen" #: src/pt-window.c:505 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:507 src/pt-window.c:1246 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1162 #, 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 "" #: src/pt-window.c:1165 msgid "Fatal error" msgstr "Vakava virhe" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:15 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:30 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:45 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:59 msgid "When you are finished, specify the folder with the model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:96 msgid "Language model" msgstr "" #: src/resources/asr-assistant.ui:125 msgid "Select language model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:157 msgid "Dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:186 msgid "Select dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:218 msgid "Acoustic model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:248 msgid "Select acoustic model folder" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:285 msgid "Setup is completed. Please give this configuration a name:" msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:46 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 "Siirry sijaintiin:" #: src/resources/help-overlay.ui:15 msgid "General" msgstr "Yleiset" #: 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:270 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:27 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 "Manual transcription" msgstr "" #: src/resources/menus.ui:12 msgid "Automatic transcription" msgstr "" #: src/resources/menus.ui:19 msgid "Preferences" msgstr "Asetukset" #: src/resources/menus.ui:23 msgid "_Keyboard Shortcuts" msgstr "_Pikanäppäimet" #: src/resources/menus.ui:31 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:38 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:42 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 "Parlatypen asetukset" #: src/resources/preferences.ui:140 msgid "_Pixels per second:" msgstr "_Pikseliä sekunnissa:" #: src/resources/preferences.ui:170 msgid "Show _time scale" msgstr "Näytä a_ika-asteikko" #. Resolution of the waveform image #: src/resources/preferences.ui:188 msgid "Resolution" msgstr "Tarkkuus" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:203 msgid "Display" msgstr "Esitystapa" #: src/resources/preferences.ui:216 msgid "_Moving cursor" msgstr "_Liikkuva kursori" #: src/resources/preferences.ui:233 msgid "_Fixed cursor" msgstr "_Kiinteä kursori" #: src/resources/preferences.ui:287 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:389 msgid "Jump _forward:" msgstr "Siirry _eteenpäin:" #: src/resources/preferences.ui:403 msgid "Jump _back:" msgstr "Siirry t_aaksepäin:" #: src/resources/preferences.ui:417 msgid "Jump back on _pause:" msgstr "" #: src/resources/preferences.ui:440 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:454 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:473 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:487 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:509 msgid "Controls" msgstr "Säätimet" #: src/resources/preferences.ui:552 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:565 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:583 msgid "Precision" msgstr "" #: src/resources/preferences.ui:599 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:615 msgid "Examples" msgstr "" #: src/resources/preferences.ui:657 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:689 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:732 msgid "Timestamps" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:863 msgid "Language model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:890 msgid "Dictionary:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:917 msgid "Acoustic model folder:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:965 msgid "There is no configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:975 msgid "Add a configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:1004 msgid "Speech recognition" msgstr "" #: src/resources/preferences.ui:1022 msgid "Remember _size" msgstr "Muista _koko" #: src/resources/preferences.ui:1037 msgid "Remember _position" msgstr "Muista _sijainti" #: src/resources/preferences.ui:1052 msgid "Start on _top" msgstr "K_äynnistä päällimmäisenä" #: src/resources/preferences.ui:1074 msgid "Window" msgstr "Ikkuna" #: src/resources/window.ui:142 msgid "_Play" msgstr "T_oista" #: src/resources/window.ui:312 msgid "Speed:" msgstr "Nopeus:" #: src/resources/window-headerbar.ui:17 msgid "Open a file" msgstr "Avaa tiedosto" parlatype-1.6.2/po/fr.po000066400000000000000000000434061353244124700151220ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 21:09+0200\n" "PO-Revision-Date: 2018-07-06 20:48+0000\n" "Last-Translator: Georgelemental \n" "Language-Team: French \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: fr\n" #: data/com.github.gkarsay.parlatype.appdata.xml.in:7 #: data/com.github.gkarsay.parlatype.desktop.in:4 src/pt-app.c:189 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/com.github.gkarsay.parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/com.github.gkarsay.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/com.github.gkarsay.parlatype.appdata.xml.in:24 msgid "Gabor Karsay" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Outil de transcription" #: data/com.github.gkarsay.parlatype.desktop.in:6 msgid "Transcription;" msgstr "Transcription;" #: data/com.github.gkarsay.parlatype.desktop.in:8 msgid "com.github.gkarsay.parlatype" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:6 msgid "LibreOffice/Parlatype Helpers" msgstr "LIbreOffice/Parlatype Assistants" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:7 msgid "Control Parlatype using LibreOffice macros" msgstr "Contrôler Parlatype à l'aide de macros LibreOffice" #: src/pt-app.c:43 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:52 msgid "Enable automatic speech recognition" msgstr "" #: src/pt-app.c:60 msgid "Use internal textpad for automatic speech recognition" msgstr "" #: src/pt-app.c:83 msgid "Open Audio File" msgstr "Ouvrir un fichier audio" #: src/pt-app.c:86 src/resources/window-headerbar.ui:12 msgid "_Open" msgstr "_Ouvrir" #: src/pt-app.c:87 src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Annuler" #: src/pt-app.c:106 msgid "Audio files" msgstr "Fichiers audio" #: src/pt-app.c:107 msgid "All files" msgstr "Tous les fichiers" #. Translators: %s is a detailed error message #: src/pt-app.c:156 #, 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:174 msgid "Including code from other projects:" msgstr "Inclut du code issu d'autres projets :" #: src/pt-app.c:192 msgid "A basic transcription utility" msgstr "Un outil de transcription de base" #: src/pt-app.c:196 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " Georgelemental https://launchpad.net/~georgelemental-n\n" " archi02 https://launchpad.net/~jo-chibois\n" " yeKcim https://launchpad.net/~yekcim" #: src/pt-app.c:321 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" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:194 msgid "The folder contains no acoustic model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:301 msgid "Please select …" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:340 msgid "Missing parameters" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:384 msgid "Timed out" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:386 msgid "" "Scanning the folder took too long. Please make sure to open a folder with " "model data only." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:390 msgid "Scanning the folder failed" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:406 msgid "Nothing found" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:408 msgid "This folder doesn’t contain a suitable model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:459 msgid "" "The folder contains no language model. Please choose a language model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:468 msgid "The folder contains several language models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:479 msgid "" "The folder contains no dictionary. Please choose a dictionary from another " "folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:488 msgid "The folder contains several dictionaries." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:498 msgid "" "The folder contains no acoustic model. Please choose an acoustic model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:507 msgid "The folder contains several acoustic models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:625 msgid "Download model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:633 msgid "Finish configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:210 msgid "Select output for automatic speech recognition" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:212 msgid "Please open and switch focus to a word processor." 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:98 src/pt-preferences.c:108 #: src/pt-preferences.c:118 msgid "second" msgid_plural "seconds" msgstr[0] "seconde" msgstr[1] "secondes" #: src/pt-preferences.c:289 msgid "Deleting configuration" msgstr "" #: src/pt-preferences.c:290 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-window.c:219 #, c-format msgid "Found %s" msgstr "" #: src/pt-window.c:220 msgid "Press “Play” to start automatic speech recognition." msgstr "" #: src/pt-window.c:423 #, 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:440 #, 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:459 msgid "Pause" msgstr "Mettre en pause" #: src/pt-window.c:462 #, 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:469 msgid "Start playing" msgstr "Démarrer la lecture" #: src/pt-window.c:505 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:507 src/pt-window.c:1246 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1162 #, 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 "" #: src/pt-window.c:1165 msgid "Fatal error" msgstr "Erreur fatale" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:15 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:30 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:45 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:59 msgid "When you are finished, specify the folder with the model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:96 msgid "Language model" msgstr "" #: src/resources/asr-assistant.ui:125 msgid "Select language model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:157 msgid "Dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:186 msgid "Select dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:218 msgid "Acoustic model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:248 msgid "Select acoustic model folder" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:285 msgid "Setup is completed. Please give this configuration a name:" msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:46 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 "Aller à la position..." #: src/resources/help-overlay.ui:15 msgid "General" msgstr "Général" #: 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:270 msgid "Waveform" msgstr "Forme d'onde" #: 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 "Reculer" #: src/resources/help-overlay.ui:71 src/resources/help-overlay.ui:79 msgid "Jump forward" msgstr "Avancer" #: 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:27 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 "Manual transcription" msgstr "" #: src/resources/menus.ui:12 msgid "Automatic transcription" msgstr "" #: src/resources/menus.ui:19 msgid "Preferences" msgstr "Préférences" #: src/resources/menus.ui:23 msgid "_Keyboard Shortcuts" msgstr "Raccourcis _clavier" #: src/resources/menus.ui:31 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:38 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:42 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 "Préférences de Parlatype" #: src/resources/preferences.ui:140 msgid "_Pixels per second:" msgstr "_Pixels par seconde :" #: src/resources/preferences.ui:170 msgid "Show _time scale" msgstr "Montrer l'échelle de _temps" #. Resolution of the waveform image #: src/resources/preferences.ui:188 msgid "Resolution" msgstr "Résolution" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:203 msgid "Display" msgstr "Affichage" #: src/resources/preferences.ui:216 msgid "_Moving cursor" msgstr "Curseur _mobile" #: src/resources/preferences.ui:233 msgid "_Fixed cursor" msgstr "Curseur _fixe" #: src/resources/preferences.ui:287 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:389 msgid "Jump _forward:" msgstr "_Avancer" #: src/resources/preferences.ui:403 msgid "Jump _back:" msgstr "_Reculer" #: src/resources/preferences.ui:417 msgid "Jump back on _pause:" msgstr "Reculer à la _pause" #: src/resources/preferences.ui:440 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:454 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:473 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:487 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:509 msgid "Controls" msgstr "Touches de contrôle" #: src/resources/preferences.ui:552 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:565 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:583 msgid "Precision" msgstr "" #: src/resources/preferences.ui:599 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:615 msgid "Examples" msgstr "" #: src/resources/preferences.ui:657 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:689 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:732 msgid "Timestamps" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:863 msgid "Language model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:890 msgid "Dictionary:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:917 msgid "Acoustic model folder:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:965 msgid "There is no configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:975 msgid "Add a configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:1004 msgid "Speech recognition" msgstr "" #: src/resources/preferences.ui:1022 msgid "Remember _size" msgstr "Mémoriser la _taille" #: src/resources/preferences.ui:1037 msgid "Remember _position" msgstr "Mémoriser la _position" #: src/resources/preferences.ui:1052 msgid "Start on _top" msgstr "Lancer au _premier plan" #: src/resources/preferences.ui:1074 msgid "Window" msgstr "Fenêtre" #: src/resources/window.ui:142 msgid "_Play" msgstr "_Lancer" #: src/resources/window.ui:312 msgid "Speed:" msgstr "Vitesse :" #: src/resources/window-headerbar.ui:17 msgid "Open a file" msgstr "Ouvrir un fichier" parlatype-1.6.2/po/hu.po000066400000000000000000000515231353244124700151260ustar00rootroot00000000000000# 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: 2019-05-27 21:09+0200\n" "PO-Revision-Date: 2019-07-19 07:00+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Hungarian \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: 2019-07-19 07:04+0000\n" "X-Generator: Launchpad (build 19010)\n" "Language: hu\n" #: data/com.github.gkarsay.parlatype.appdata.xml.in:7 #: data/com.github.gkarsay.parlatype.desktop.in:4 src/pt-app.c:189 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/com.github.gkarsay.parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "Médialejátszó a beszéd átírásához" #: data/com.github.gkarsay.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/com.github.gkarsay.parlatype.appdata.xml.in:24 msgid "Gabor Karsay" msgstr "Karsay Gábor" #: data/com.github.gkarsay.parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Átírás segédprogram" #: data/com.github.gkarsay.parlatype.desktop.in:6 msgid "Transcription;" msgstr "Átírás;" #: data/com.github.gkarsay.parlatype.desktop.in:8 msgid "com.github.gkarsay.parlatype" msgstr "com.github.gkarsay.parlatype" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:6 msgid "LibreOffice/Parlatype Helpers" msgstr "LibreOffice/Parlatype segítők" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:7 msgid "Control Parlatype using LibreOffice macros" msgstr "A Parlatype vezérlése a LibreOffice makrók használatával" #: src/pt-app.c:43 msgid "Show the application’s version" msgstr "Az alkalmazás verziójának megjelenítése" #: src/pt-app.c:52 msgid "Enable automatic speech recognition" msgstr "Önműködő beszédfelismerés engedélyezése" #: src/pt-app.c:60 msgid "Use internal textpad for automatic speech recognition" msgstr "Használja a belső szövegpadt az önműködő beszédfelismeréshez" #: src/pt-app.c:83 msgid "Open Audio File" msgstr "Hangfájl megnyitása" #: src/pt-app.c:86 src/resources/window-headerbar.ui:12 msgid "_Open" msgstr "Meg_nyitás" #: src/pt-app.c:87 src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Mégse" #: src/pt-app.c:106 msgid "Audio files" msgstr "Hangfájlok" #: src/pt-app.c:107 msgid "All files" msgstr "Minden fájl" #. Translators: %s is a detailed error message #: src/pt-app.c:156 #, 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:174 msgid "Including code from other projects:" msgstr "Más projektek kódja:" #: src/pt-app.c:192 msgid "A basic transcription utility" msgstr "Egy alapvető átírás segédprogram" #: src/pt-app.c:196 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:321 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" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:194 msgid "The folder contains no acoustic model." msgstr "A mappa nem tartalmaz akusztikus modellt." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:301 msgid "Please select …" msgstr "Kérlek, válassz…" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:340 msgid "Missing parameters" msgstr "Hiányzó segédváltozók" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:384 msgid "Timed out" msgstr "Időtúllépés" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:386 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:390 msgid "Scanning the folder failed" msgstr "A mappa keresése sikertelen" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:406 msgid "Nothing found" msgstr "Nincs találat" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:408 msgid "This folder doesn’t contain a suitable model." msgstr "Ez a mappa nem tartalmaz megfelelő modellt." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:459 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:468 msgid "The folder contains several language models." msgstr "A mappa több nyelvi modellt tartalmaz." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:479 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:488 msgid "The folder contains several dictionaries." msgstr "A mappa több szótárat tartalmaz." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:498 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:507 msgid "The folder contains several acoustic models." msgstr "A mappa több akusztikus modellt tartalmaz." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:625 msgid "Download model" msgstr "Letöltésmodell" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:633 msgid "Finish configuration" msgstr "Beállítás befejezése" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:210 msgid "Select output for automatic speech recognition" msgstr "Válassza ki a kimenetet az önműködő beszédfelismeréshez" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:212 msgid "Please open and switch focus to a word processor." msgstr "Kérjük, nyissa meg és kapcsoljon fókuszt egy szövegszerkesztőre." #. 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:98 src/pt-preferences.c:108 #: src/pt-preferences.c:118 msgid "second" msgid_plural "seconds" msgstr[0] "másodperc" msgstr[1] "másodperc" #: src/pt-preferences.c:289 msgid "Deleting configuration" msgstr "Beállítás törlése" #: src/pt-preferences.c:290 #, c-format msgid "Do you really want to delete “%s”?" msgstr "Tényleg törölni szeretné a(z) „%s”-t?" #: src/pt-window.c:219 #, c-format msgid "Found %s" msgstr "Talált %s" #: src/pt-window.c:220 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." #: src/pt-window.c:423 #, 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:440 #, 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:459 msgid "Pause" msgstr "Szünet" #: src/pt-window.c:462 #, 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:469 msgid "Start playing" msgstr "Lejátszás elindítása" #: src/pt-window.c:505 #, 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:507 src/pt-window.c:1246 msgid "Go to time in clipboard" msgstr "Ugrás a vágólapon látható időre" #: src/pt-window.c:1162 #, 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" #: src/pt-window.c:1165 msgid "Fatal error" msgstr "Végzetes hiba" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:15 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:30 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:45 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:59 msgid "When you are finished, specify the folder with the model:" msgstr "Ha elkészült, adja meg a mappát a modellel:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:96 msgid "Language model" msgstr "Nyelvmodell" #: src/resources/asr-assistant.ui:125 msgid "Select language model" msgstr "Válasszon nyelvmodellt" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:157 msgid "Dictionary" msgstr "Szótár" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:186 msgid "Select dictionary" msgstr "Szótár kiválasztása" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:218 msgid "Acoustic model" msgstr "Akusztikus modell" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:248 msgid "Select acoustic model folder" msgstr "Válassza ki az akusztikus modellmappát" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:285 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:" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:46 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:15 msgid "General" msgstr "Általános" #: 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:270 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:27 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 "Manual transcription" msgstr "Kézi átírás" #: src/resources/menus.ui:12 msgid "Automatic transcription" msgstr "Önműködő átírás" #: src/resources/menus.ui:19 msgid "Preferences" msgstr "Beállítások" #: src/resources/menus.ui:23 msgid "_Keyboard Shortcuts" msgstr "_Gyorsbillentyűk" #: src/resources/menus.ui:31 msgid "About Parlatype" msgstr "A Parlatype névjegye" #: src/resources/menus.ui:38 msgid "Copy time to clipboard" msgstr "Idő másolása a vágólapra" #: src/resources/menus.ui:42 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:140 msgid "_Pixels per second:" msgstr "_Pixel másodpercenként:" #: src/resources/preferences.ui:170 msgid "Show _time scale" msgstr "Idő_mérték megjelenítése" #. Resolution of the waveform image #: src/resources/preferences.ui:188 msgid "Resolution" msgstr "Felbontás" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:203 msgid "Display" msgstr "Megjelenítés" #: src/resources/preferences.ui:216 msgid "_Moving cursor" msgstr "_Mozgó kurzor" #: src/resources/preferences.ui:233 msgid "_Fixed cursor" msgstr "_Rögzített kurzor" #: src/resources/preferences.ui:287 msgid "Jumps" msgstr "Ugrások" #: src/resources/preferences.ui:389 msgid "Jump _forward:" msgstr "Ugrás _előre:" #: src/resources/preferences.ui:403 msgid "Jump _back:" msgstr "Ugrás _vissza:" #: src/resources/preferences.ui:417 msgid "Jump back on _pause:" msgstr "Ugrás vissza a _szünetre:" #: src/resources/preferences.ui:440 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:454 msgid "Replay file" msgstr "Fájl ismétlése" #: src/resources/preferences.ui:473 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:487 msgid "Replay selection" msgstr "Kijelölés ismétlése" #: src/resources/preferences.ui:509 msgid "Controls" msgstr "Vezérlők" #: src/resources/preferences.ui:552 msgid "Hours and zeroes" msgstr "Órak és nullák" #: src/resources/preferences.ui:565 msgid "Always show hours and leading zeroes" msgstr "Az „órák” és a „vezető nullák” mindig megjelenik" #: src/resources/preferences.ui:583 msgid "Precision" msgstr "Pontosság" #: src/resources/preferences.ui:599 msgid "Characters around timestamps" msgstr "Karakterek az időbélyegek körül" #: src/resources/preferences.ui:615 msgid "Examples" msgstr "Példák" #: src/resources/preferences.ui:657 msgid "Precision:" msgstr "Pontosság:" #: src/resources/preferences.ui:689 msgid "Fraction separator:" msgstr "Töredékelválasztó:" #: src/resources/preferences.ui:732 msgid "Timestamps" msgstr "Időbélyegek" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:863 msgid "Language model:" msgstr "Nyelvmodell:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:890 msgid "Dictionary:" msgstr "Szótár:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:917 msgid "Acoustic model folder:" msgstr "Akusztikus modell mappa:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:965 msgid "There is no configuration" msgstr "Nincs beállítás" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:975 msgid "Add a configuration" msgstr "Beállítás hozzáadása" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:1004 msgid "Speech recognition" msgstr "Beszédfelismerés" #: src/resources/preferences.ui:1022 msgid "Remember _size" msgstr "_Méret megőrzése" #: src/resources/preferences.ui:1037 msgid "Remember _position" msgstr "_Hely megőrzés" #: src/resources/preferences.ui:1052 msgid "Start on _top" msgstr "Kezdje a _tetején" #: src/resources/preferences.ui:1074 msgid "Window" msgstr "Ablak" #: src/resources/window.ui:142 msgid "_Play" msgstr "_Lejátszás" #: src/resources/window.ui:312 msgid "Speed:" msgstr "Sebesség:" #: src/resources/window-headerbar.ui:17 msgid "Open a file" msgstr "Fájl megnyitása" parlatype-1.6.2/po/id.po000066400000000000000000000417551353244124700151140ustar00rootroot00000000000000# 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: 2019-05-27 21:09+0200\n" "PO-Revision-Date: 2018-06-04 12:45+0000\n" "Last-Translator: Ari Setyo Wibowo \n" "Language-Team: Indonesian \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: id\n" #: data/com.github.gkarsay.parlatype.appdata.xml.in:7 #: data/com.github.gkarsay.parlatype.desktop.in:4 src/pt-app.c:189 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/com.github.gkarsay.parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/com.github.gkarsay.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/com.github.gkarsay.parlatype.appdata.xml.in:24 msgid "Gabor Karsay" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Peralatan transkripsi" #: data/com.github.gkarsay.parlatype.desktop.in:6 msgid "Transcription;" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:8 msgid "com.github.gkarsay.parlatype" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:6 msgid "LibreOffice/Parlatype Helpers" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:7 msgid "Control Parlatype using LibreOffice macros" msgstr "" #: src/pt-app.c:43 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:52 msgid "Enable automatic speech recognition" msgstr "" #: src/pt-app.c:60 msgid "Use internal textpad for automatic speech recognition" msgstr "" #: src/pt-app.c:83 msgid "Open Audio File" msgstr "Buka Berkas Audio" #: src/pt-app.c:86 src/resources/window-headerbar.ui:12 msgid "_Open" msgstr "B_uka" #: src/pt-app.c:87 src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Batal" #: src/pt-app.c:106 msgid "Audio files" msgstr "Berkas audio" #: src/pt-app.c:107 msgid "All files" msgstr "Semua berkas" #. Translators: %s is a detailed error message #: src/pt-app.c:156 #, 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:174 msgid "Including code from other projects:" msgstr "Termasuk kode dari proyek lain:" #: src/pt-app.c:192 msgid "A basic transcription utility" msgstr "Sebuah peralatan transkrip dasar" #: src/pt-app.c:196 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Ari Setyo Wibowo https://launchpad.net/~ari-el-uno" #: src/pt-app.c:321 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" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:194 msgid "The folder contains no acoustic model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:301 msgid "Please select …" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:340 msgid "Missing parameters" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:384 msgid "Timed out" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:386 msgid "" "Scanning the folder took too long. Please make sure to open a folder with " "model data only." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:390 msgid "Scanning the folder failed" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:406 msgid "Nothing found" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:408 msgid "This folder doesn’t contain a suitable model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:459 msgid "" "The folder contains no language model. Please choose a language model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:468 msgid "The folder contains several language models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:479 msgid "" "The folder contains no dictionary. Please choose a dictionary from another " "folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:488 msgid "The folder contains several dictionaries." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:498 msgid "" "The folder contains no acoustic model. Please choose an acoustic model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:507 msgid "The folder contains several acoustic models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:625 msgid "Download model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:633 msgid "Finish configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:210 msgid "Select output for automatic speech recognition" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:212 msgid "Please open and switch focus to a word processor." 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:98 src/pt-preferences.c:108 #: src/pt-preferences.c:118 msgid "second" msgid_plural "seconds" msgstr[0] "detik" #: src/pt-preferences.c:289 msgid "Deleting configuration" msgstr "" #: src/pt-preferences.c:290 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-window.c:219 #, c-format msgid "Found %s" msgstr "" #: src/pt-window.c:220 msgid "Press “Play” to start automatic speech recognition." msgstr "" #: src/pt-window.c:423 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "Lompat mundur %d detik" #: src/pt-window.c:440 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "Lompat maju %d detik" #: src/pt-window.c:459 msgid "Pause" msgstr "Pause" #: src/pt-window.c:462 #, 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:469 msgid "Start playing" msgstr "Mulai memutar" #: src/pt-window.c:505 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:507 src/pt-window.c:1246 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1162 #, 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 "" #: src/pt-window.c:1165 msgid "Fatal error" msgstr "Kesalahan fatal" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:15 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:30 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:45 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:59 msgid "When you are finished, specify the folder with the model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:96 msgid "Language model" msgstr "" #: src/resources/asr-assistant.ui:125 msgid "Select language model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:157 msgid "Dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:186 msgid "Select dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:218 msgid "Acoustic model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:248 msgid "Select acoustic model folder" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:285 msgid "Setup is completed. Please give this configuration a name:" msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:46 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:15 msgid "General" 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 "Keluar" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:270 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:27 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 "Manual transcription" msgstr "" #: src/resources/menus.ui:12 msgid "Automatic transcription" msgstr "" #: src/resources/menus.ui:19 msgid "Preferences" msgstr "Preferensi" #: src/resources/menus.ui:23 msgid "_Keyboard Shortcuts" msgstr "" #: src/resources/menus.ui:31 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:38 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:42 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:140 msgid "_Pixels per second:" msgstr "_Pixels per detik:" #: src/resources/preferences.ui:170 msgid "Show _time scale" msgstr "Tampilkan _skala waktu" #. Resolution of the waveform image #: src/resources/preferences.ui:188 msgid "Resolution" msgstr "Resolusi" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:203 msgid "Display" msgstr "Tampilan" #: src/resources/preferences.ui:216 msgid "_Moving cursor" msgstr "_Kursor bergerak" #: src/resources/preferences.ui:233 msgid "_Fixed cursor" msgstr "Kursor _Tetap" #: src/resources/preferences.ui:287 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:389 msgid "Jump _forward:" msgstr "Jump ma_ju:" #: src/resources/preferences.ui:403 msgid "Jump _back:" msgstr "Lompat _mundur:" #: src/resources/preferences.ui:417 msgid "Jump back on _pause:" msgstr "Lompat mundur ke _pause:" #: src/resources/preferences.ui:440 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:454 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:473 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:487 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:509 msgid "Controls" msgstr "Kendali" #: src/resources/preferences.ui:552 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:565 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:583 msgid "Precision" msgstr "" #: src/resources/preferences.ui:599 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:615 msgid "Examples" msgstr "" #: src/resources/preferences.ui:657 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:689 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:732 msgid "Timestamps" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:863 msgid "Language model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:890 msgid "Dictionary:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:917 msgid "Acoustic model folder:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:965 msgid "There is no configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:975 msgid "Add a configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:1004 msgid "Speech recognition" msgstr "" #: src/resources/preferences.ui:1022 msgid "Remember _size" msgstr "" #: src/resources/preferences.ui:1037 msgid "Remember _position" msgstr "Ingat _posisi" #: src/resources/preferences.ui:1052 msgid "Start on _top" msgstr "Mulai di _atas" #: src/resources/preferences.ui:1074 msgid "Window" msgstr "Jendela" #: src/resources/window.ui:142 msgid "_Play" msgstr "_Putar" #: src/resources/window.ui:312 msgid "Speed:" msgstr "Kecepatan:" #: src/resources/window-headerbar.ui:17 msgid "Open a file" msgstr "Buka berkas" parlatype-1.6.2/po/it.po000066400000000000000000000421721353244124700151260ustar00rootroot00000000000000# 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: 2019-05-27 21:09+0200\n" "PO-Revision-Date: 2018-06-04 12:45+0000\n" "Last-Translator: Luca Ciavatta \n" "Language-Team: Italian \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: it\n" #: data/com.github.gkarsay.parlatype.appdata.xml.in:7 #: data/com.github.gkarsay.parlatype.desktop.in:4 src/pt-app.c:189 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/com.github.gkarsay.parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/com.github.gkarsay.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/com.github.gkarsay.parlatype.appdata.xml.in:24 msgid "Gabor Karsay" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Utilità di trascrizione" #: data/com.github.gkarsay.parlatype.desktop.in:6 msgid "Transcription;" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:8 msgid "com.github.gkarsay.parlatype" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:6 msgid "LibreOffice/Parlatype Helpers" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:7 msgid "Control Parlatype using LibreOffice macros" msgstr "" #: src/pt-app.c:43 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:52 msgid "Enable automatic speech recognition" msgstr "" #: src/pt-app.c:60 msgid "Use internal textpad for automatic speech recognition" msgstr "" #: src/pt-app.c:83 msgid "Open Audio File" msgstr "Aprire File Audio" #: src/pt-app.c:86 src/resources/window-headerbar.ui:12 msgid "_Open" msgstr "_Apri" #: src/pt-app.c:87 src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Annulla" #: src/pt-app.c:106 msgid "Audio files" msgstr "File audio" #: src/pt-app.c:107 msgid "All files" msgstr "Tutti i file" #. Translators: %s is a detailed error message #: src/pt-app.c:156 #, 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:174 msgid "Including code from other projects:" msgstr "Incluso il codice da altri progetti:" #: src/pt-app.c:192 msgid "A basic transcription utility" msgstr "Un programma di trascrizione" #: src/pt-app.c:196 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Luca Ciavatta https://launchpad.net/~cialu" #: src/pt-app.c:321 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" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:194 msgid "The folder contains no acoustic model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:301 msgid "Please select …" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:340 msgid "Missing parameters" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:384 msgid "Timed out" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:386 msgid "" "Scanning the folder took too long. Please make sure to open a folder with " "model data only." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:390 msgid "Scanning the folder failed" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:406 msgid "Nothing found" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:408 msgid "This folder doesn’t contain a suitable model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:459 msgid "" "The folder contains no language model. Please choose a language model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:468 msgid "The folder contains several language models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:479 msgid "" "The folder contains no dictionary. Please choose a dictionary from another " "folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:488 msgid "The folder contains several dictionaries." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:498 msgid "" "The folder contains no acoustic model. Please choose an acoustic model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:507 msgid "The folder contains several acoustic models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:625 msgid "Download model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:633 msgid "Finish configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:210 msgid "Select output for automatic speech recognition" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:212 msgid "Please open and switch focus to a word processor." 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:98 src/pt-preferences.c:108 #: src/pt-preferences.c:118 msgid "second" msgid_plural "seconds" msgstr[0] "secondo" msgstr[1] "secondi" #: src/pt-preferences.c:289 msgid "Deleting configuration" msgstr "" #: src/pt-preferences.c:290 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-window.c:219 #, c-format msgid "Found %s" msgstr "" #: src/pt-window.c:220 msgid "Press “Play” to start automatic speech recognition." msgstr "" #: src/pt-window.c:423 #, 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:440 #, 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:459 msgid "Pause" msgstr "Pausa" #: src/pt-window.c:462 #, 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:469 msgid "Start playing" msgstr "Avvia la riproduzione" #: src/pt-window.c:505 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:507 src/pt-window.c:1246 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1162 #, 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 "" #: src/pt-window.c:1165 msgid "Fatal error" msgstr "Errore critico" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:15 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:30 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:45 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:59 msgid "When you are finished, specify the folder with the model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:96 msgid "Language model" msgstr "" #: src/resources/asr-assistant.ui:125 msgid "Select language model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:157 msgid "Dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:186 msgid "Select dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:218 msgid "Acoustic model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:248 msgid "Select acoustic model folder" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:285 msgid "Setup is completed. Please give this configuration a name:" msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:46 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 "Vai alla posizione:" #: src/resources/help-overlay.ui:15 msgid "General" 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 "Esci" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:270 msgid "Waveform" msgstr "Forma d’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:27 msgid "Help" msgstr "Aiuto" #: 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 "Manual transcription" msgstr "" #: src/resources/menus.ui:12 msgid "Automatic transcription" msgstr "" #: src/resources/menus.ui:19 msgid "Preferences" msgstr "Preferenze" #: src/resources/menus.ui:23 msgid "_Keyboard Shortcuts" msgstr "" #: src/resources/menus.ui:31 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:38 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:42 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 "Preferenze di Parlatype" #: src/resources/preferences.ui:140 msgid "_Pixels per second:" msgstr "_Pixels al secondo:" #: src/resources/preferences.ui:170 msgid "Show _time scale" msgstr "Mostra scala _temporale" #. Resolution of the waveform image #: src/resources/preferences.ui:188 msgid "Resolution" msgstr "Risoluzione" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:203 msgid "Display" msgstr "Visualizzazione" #: src/resources/preferences.ui:216 msgid "_Moving cursor" msgstr "Cursore in _movimento" #: src/resources/preferences.ui:233 msgid "_Fixed cursor" msgstr "Cursore _fisso" #: src/resources/preferences.ui:287 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:389 msgid "Jump _forward:" msgstr "_Avanti:" #: src/resources/preferences.ui:403 msgid "Jump _back:" msgstr "_Indietro:" #: src/resources/preferences.ui:417 msgid "Jump back on _pause:" msgstr "Indietro in _pausa:" #: src/resources/preferences.ui:440 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:454 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:473 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:487 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:509 msgid "Controls" msgstr "Controlli" #: src/resources/preferences.ui:552 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:565 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:583 msgid "Precision" msgstr "" #: src/resources/preferences.ui:599 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:615 msgid "Examples" msgstr "" #: src/resources/preferences.ui:657 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:689 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:732 msgid "Timestamps" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:863 msgid "Language model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:890 msgid "Dictionary:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:917 msgid "Acoustic model folder:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:965 msgid "There is no configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:975 msgid "Add a configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:1004 msgid "Speech recognition" msgstr "" #: src/resources/preferences.ui:1022 msgid "Remember _size" msgstr "" #: src/resources/preferences.ui:1037 msgid "Remember _position" msgstr "Ricorda la _posizione" #: src/resources/preferences.ui:1052 msgid "Start on _top" msgstr "" #: src/resources/preferences.ui:1074 msgid "Window" msgstr "Finestra" #: src/resources/window.ui:142 msgid "_Play" msgstr "_Riproduci" #: src/resources/window.ui:312 msgid "Speed:" msgstr "Velocità:" #: src/resources/window-headerbar.ui:17 msgid "Open a file" msgstr "Aprire un file" parlatype-1.6.2/po/ja.po000066400000000000000000000437431353244124700151110ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 21:09+0200\n" "PO-Revision-Date: 2018-06-04 12:48+0000\n" "Last-Translator: Shinichirou Yamada " "\n" "Language-Team: Japanese \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: ja\n" #: data/com.github.gkarsay.parlatype.appdata.xml.in:7 #: data/com.github.gkarsay.parlatype.desktop.in:4 src/pt-app.c:189 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/com.github.gkarsay.parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/com.github.gkarsay.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/com.github.gkarsay.parlatype.appdata.xml.in:24 msgid "Gabor Karsay" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:5 msgid "Transcription utility" msgstr "転写ユーティリティー" #: data/com.github.gkarsay.parlatype.desktop.in:6 msgid "Transcription;" msgstr "Transcription;トランスクリプション;書き起こし;転写;" #: data/com.github.gkarsay.parlatype.desktop.in:8 msgid "com.github.gkarsay.parlatype" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:6 msgid "LibreOffice/Parlatype Helpers" msgstr "LibreOffice/Parlatype ヘルパー" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:7 msgid "Control Parlatype using LibreOffice macros" msgstr "LibreOffice のマクロで Parlatype をコントロールする" #: src/pt-app.c:43 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:52 msgid "Enable automatic speech recognition" msgstr "" #: src/pt-app.c:60 msgid "Use internal textpad for automatic speech recognition" msgstr "" #: src/pt-app.c:83 msgid "Open Audio File" msgstr "音楽ファイルを開く" #: src/pt-app.c:86 src/resources/window-headerbar.ui:12 msgid "_Open" msgstr "開く(_O)" #: src/pt-app.c:87 src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "キャンセル(_C)" #: src/pt-app.c:106 msgid "Audio files" msgstr "音楽ファイル" #: src/pt-app.c:107 msgid "All files" msgstr "すべてのファイル" #. Translators: %s is a detailed error message #: src/pt-app.c:156 #, 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:174 msgid "Including code from other projects:" msgstr "他のプロジェクトによるコードを内包しています:" #: src/pt-app.c:192 msgid "A basic transcription utility" msgstr "ベーシックな転写ユーティリティー" #: src/pt-app.c:196 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Shinichirou Yamada https://launchpad.net/~yamada-strong-yamada-nice-64bit" #: src/pt-app.c:321 msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "警告: Parlatype は一度にファイルを一つだけ処理します。他のファイルは無視されます。\n" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:194 msgid "The folder contains no acoustic model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:301 msgid "Please select …" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:340 msgid "Missing parameters" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:384 msgid "Timed out" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:386 msgid "" "Scanning the folder took too long. Please make sure to open a folder with " "model data only." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:390 msgid "Scanning the folder failed" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:406 msgid "Nothing found" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:408 msgid "This folder doesn’t contain a suitable model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:459 msgid "" "The folder contains no language model. Please choose a language model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:468 msgid "The folder contains several language models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:479 msgid "" "The folder contains no dictionary. Please choose a dictionary from another " "folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:488 msgid "The folder contains several dictionaries." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:498 msgid "" "The folder contains no acoustic model. Please choose an acoustic model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:507 msgid "The folder contains several acoustic models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:625 msgid "Download model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:633 msgid "Finish configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:210 msgid "Select output for automatic speech recognition" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:212 msgid "Please open and switch focus to a word processor." 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:98 src/pt-preferences.c:108 #: src/pt-preferences.c:118 msgid "second" msgid_plural "seconds" msgstr[0] "秒" #: src/pt-preferences.c:289 msgid "Deleting configuration" msgstr "" #: src/pt-preferences.c:290 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-window.c:219 #, c-format msgid "Found %s" msgstr "" #: src/pt-window.c:220 msgid "Press “Play” to start automatic speech recognition." msgstr "" #: src/pt-window.c:423 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "%d 秒前に戻る" #: src/pt-window.c:440 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "%d 秒先に進む" #: src/pt-window.c:459 msgid "Pause" msgstr "一時停止" #: src/pt-window.c:462 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "一時停止して %d 秒前に戻る" #: src/pt-window.c:469 msgid "Start playing" msgstr "再生を開始する" #: src/pt-window.c:505 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:507 src/pt-window.c:1246 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1162 #, 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 "" #: src/pt-window.c:1165 msgid "Fatal error" msgstr "致命的なエラー" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:15 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:30 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:45 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:59 msgid "When you are finished, specify the folder with the model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:96 msgid "Language model" msgstr "" #: src/resources/asr-assistant.ui:125 msgid "Select language model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:157 msgid "Dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:186 msgid "Select dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:218 msgid "Acoustic model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:248 msgid "Select acoustic model folder" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:285 msgid "Setup is completed. Please give this configuration a name:" msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:46 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:15 msgid "General" 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:270 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:27 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 "Manual transcription" msgstr "" #: src/resources/menus.ui:12 msgid "Automatic transcription" msgstr "" #: src/resources/menus.ui:19 msgid "Preferences" msgstr "設定" #: src/resources/menus.ui:23 msgid "_Keyboard Shortcuts" msgstr "キーボードショートカット(_K)" #: src/resources/menus.ui:31 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:38 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:42 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 の設定" #: src/resources/preferences.ui:140 msgid "_Pixels per second:" msgstr "1秒辺りのピクセル数(_P):" #: src/resources/preferences.ui:170 msgid "Show _time scale" msgstr "タイムスケールを表示する(_T)" #. Resolution of the waveform image #: src/resources/preferences.ui:188 msgid "Resolution" msgstr "解像度" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:203 msgid "Display" msgstr "表示" #: src/resources/preferences.ui:216 msgid "_Moving cursor" msgstr "カーソルを移動する(_M)" #: src/resources/preferences.ui:233 msgid "_Fixed cursor" msgstr "カーソルを固定する(_F)" #: src/resources/preferences.ui:287 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:389 msgid "Jump _forward:" msgstr "進む位置(_F):" #: src/resources/preferences.ui:403 msgid "Jump _back:" msgstr "戻る位置(_B):" #: src/resources/preferences.ui:417 msgid "Jump back on _pause:" msgstr "一時停止時に戻る位置(_P):" #: src/resources/preferences.ui:440 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:454 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:473 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:487 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:509 msgid "Controls" msgstr "コントロール" #: src/resources/preferences.ui:552 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:565 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:583 msgid "Precision" msgstr "" #: src/resources/preferences.ui:599 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:615 msgid "Examples" msgstr "" #: src/resources/preferences.ui:657 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:689 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:732 msgid "Timestamps" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:863 msgid "Language model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:890 msgid "Dictionary:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:917 msgid "Acoustic model folder:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:965 msgid "There is no configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:975 msgid "Add a configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:1004 msgid "Speech recognition" msgstr "" #: src/resources/preferences.ui:1022 msgid "Remember _size" msgstr "サイズを記憶する(_S)" #: src/resources/preferences.ui:1037 msgid "Remember _position" msgstr "位置を記憶する(_P)" #: src/resources/preferences.ui:1052 msgid "Start on _top" msgstr "最前面に起動する(_T)" #: src/resources/preferences.ui:1074 msgid "Window" msgstr "ウィンドウ" #: src/resources/window.ui:142 msgid "_Play" msgstr "再生(_P)" #: src/resources/window.ui:312 msgid "Speed:" msgstr "速度:" #: src/resources/window-headerbar.ui:17 msgid "Open a file" msgstr "ファイルを開く" parlatype-1.6.2/po/kab.po000066400000000000000000000405741353244124700152530ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 21:09+0200\n" "PO-Revision-Date: 2018-06-04 12:45+0000\n" "Last-Translator: Belkacem Mohammed \n" "Language-Team: Kabyle \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: kab\n" #: data/com.github.gkarsay.parlatype.appdata.xml.in:7 #: data/com.github.gkarsay.parlatype.desktop.in:4 src/pt-app.c:189 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/com.github.gkarsay.parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/com.github.gkarsay.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/com.github.gkarsay.parlatype.appdata.xml.in:24 msgid "Gabor Karsay" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:5 msgid "Transcription utility" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:6 msgid "Transcription;" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:8 msgid "com.github.gkarsay.parlatype" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:6 msgid "LibreOffice/Parlatype Helpers" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:7 msgid "Control Parlatype using LibreOffice macros" msgstr "" #: src/pt-app.c:43 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:52 msgid "Enable automatic speech recognition" msgstr "" #: src/pt-app.c:60 msgid "Use internal textpad for automatic speech recognition" msgstr "" #: src/pt-app.c:83 msgid "Open Audio File" msgstr "Ldi afaylu ameslaw" #: src/pt-app.c:86 src/resources/window-headerbar.ui:12 msgid "_Open" msgstr "_Ldi" #: src/pt-app.c:87 src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Sefsex" #: src/pt-app.c:106 msgid "Audio files" msgstr "Ifuyla imeslawen" #: src/pt-app.c:107 msgid "All files" msgstr "Akk ifuyla" #. Translators: %s is a detailed error message #: src/pt-app.c:156 #, 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:174 msgid "Including code from other projects:" msgstr "" #: src/pt-app.c:192 msgid "A basic transcription utility" msgstr "" #: src/pt-app.c:196 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Belkacem Mohammed https://launchpad.net/~belkacem77" #: src/pt-app.c:321 msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:194 msgid "The folder contains no acoustic model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:301 msgid "Please select …" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:340 msgid "Missing parameters" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:384 msgid "Timed out" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:386 msgid "" "Scanning the folder took too long. Please make sure to open a folder with " "model data only." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:390 msgid "Scanning the folder failed" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:406 msgid "Nothing found" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:408 msgid "This folder doesn’t contain a suitable model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:459 msgid "" "The folder contains no language model. Please choose a language model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:468 msgid "The folder contains several language models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:479 msgid "" "The folder contains no dictionary. Please choose a dictionary from another " "folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:488 msgid "The folder contains several dictionaries." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:498 msgid "" "The folder contains no acoustic model. Please choose an acoustic model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:507 msgid "The folder contains several acoustic models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:625 msgid "Download model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:633 msgid "Finish configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:210 msgid "Select output for automatic speech recognition" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:212 msgid "Please open and switch focus to a word processor." 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:98 src/pt-preferences.c:108 #: src/pt-preferences.c:118 msgid "second" msgid_plural "seconds" msgstr[0] "tasint" msgstr[1] "tasinin" #: src/pt-preferences.c:289 msgid "Deleting configuration" msgstr "" #: src/pt-preferences.c:290 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-window.c:219 #, c-format msgid "Found %s" msgstr "" #: src/pt-window.c:220 msgid "Press “Play” to start automatic speech recognition." msgstr "" #: src/pt-window.c:423 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:440 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:459 msgid "Pause" msgstr "" #: src/pt-window.c:462 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:469 msgid "Start playing" msgstr "" #: src/pt-window.c:505 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:507 src/pt-window.c:1246 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1162 #, 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 "" #: src/pt-window.c:1165 msgid "Fatal error" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:15 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:30 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:45 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:59 msgid "When you are finished, specify the folder with the model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:96 msgid "Language model" msgstr "" #: src/resources/asr-assistant.ui:125 msgid "Select language model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:157 msgid "Dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:186 msgid "Select dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:218 msgid "Acoustic model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:248 msgid "Select acoustic model folder" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:285 msgid "Setup is completed. Please give this configuration a name:" msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:46 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:15 msgid "General" 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:270 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:27 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 "Manual transcription" msgstr "" #: src/resources/menus.ui:12 msgid "Automatic transcription" msgstr "" #: src/resources/menus.ui:19 msgid "Preferences" msgstr "" #: src/resources/menus.ui:23 msgid "_Keyboard Shortcuts" msgstr "" #: src/resources/menus.ui:31 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:38 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:42 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:140 msgid "_Pixels per second:" msgstr "" #: src/resources/preferences.ui:170 msgid "Show _time scale" msgstr "" #. Resolution of the waveform image #: src/resources/preferences.ui:188 msgid "Resolution" msgstr "" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:203 msgid "Display" msgstr "" #: src/resources/preferences.ui:216 msgid "_Moving cursor" msgstr "" #: src/resources/preferences.ui:233 msgid "_Fixed cursor" msgstr "" #: src/resources/preferences.ui:287 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:389 msgid "Jump _forward:" msgstr "" #: src/resources/preferences.ui:403 msgid "Jump _back:" msgstr "" #: src/resources/preferences.ui:417 msgid "Jump back on _pause:" msgstr "" #: src/resources/preferences.ui:440 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:454 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:473 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:487 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:509 msgid "Controls" msgstr "" #: src/resources/preferences.ui:552 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:565 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:583 msgid "Precision" msgstr "" #: src/resources/preferences.ui:599 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:615 msgid "Examples" msgstr "" #: src/resources/preferences.ui:657 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:689 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:732 msgid "Timestamps" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:863 msgid "Language model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:890 msgid "Dictionary:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:917 msgid "Acoustic model folder:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:965 msgid "There is no configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:975 msgid "Add a configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:1004 msgid "Speech recognition" msgstr "" #: src/resources/preferences.ui:1022 msgid "Remember _size" msgstr "" #: src/resources/preferences.ui:1037 msgid "Remember _position" msgstr "" #: src/resources/preferences.ui:1052 msgid "Start on _top" msgstr "" #: src/resources/preferences.ui:1074 msgid "Window" msgstr "" #: src/resources/window.ui:142 msgid "_Play" msgstr "" #: src/resources/window.ui:312 msgid "Speed:" msgstr "" #: src/resources/window-headerbar.ui:17 msgid "Open a file" msgstr "" parlatype-1.6.2/po/ku.po000066400000000000000000000406671353244124700151400ustar00rootroot00000000000000# 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: 2019-05-27 21:09+0200\n" "PO-Revision-Date: 2018-06-04 12:48+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Kurdish \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: ku\n" #: data/com.github.gkarsay.parlatype.appdata.xml.in:7 #: data/com.github.gkarsay.parlatype.desktop.in:4 src/pt-app.c:189 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "" #: data/com.github.gkarsay.parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/com.github.gkarsay.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/com.github.gkarsay.parlatype.appdata.xml.in:24 msgid "Gabor Karsay" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:5 msgid "Transcription utility" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:6 msgid "Transcription;" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:8 msgid "com.github.gkarsay.parlatype" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:6 msgid "LibreOffice/Parlatype Helpers" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:7 msgid "Control Parlatype using LibreOffice macros" msgstr "" #: src/pt-app.c:43 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:52 msgid "Enable automatic speech recognition" msgstr "" #: src/pt-app.c:60 msgid "Use internal textpad for automatic speech recognition" msgstr "" #: src/pt-app.c:83 msgid "Open Audio File" msgstr "" #: src/pt-app.c:86 src/resources/window-headerbar.ui:12 msgid "_Open" msgstr "_Veke" #: src/pt-app.c:87 src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Betal" #: src/pt-app.c:106 msgid "Audio files" msgstr "Pelên Dengê" #: src/pt-app.c:107 msgid "All files" msgstr "Hemû pelan" #. Translators: %s is a detailed error message #: src/pt-app.c:156 #, 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:174 msgid "Including code from other projects:" msgstr "" #: src/pt-app.c:192 msgid "A basic transcription utility" msgstr "" #: src/pt-app.c:196 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " Rokar ✌ https://launchpad.net/~rokarali" #: src/pt-app.c:321 msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:194 msgid "The folder contains no acoustic model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:301 msgid "Please select …" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:340 msgid "Missing parameters" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:384 msgid "Timed out" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:386 msgid "" "Scanning the folder took too long. Please make sure to open a folder with " "model data only." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:390 msgid "Scanning the folder failed" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:406 msgid "Nothing found" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:408 msgid "This folder doesn’t contain a suitable model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:459 msgid "" "The folder contains no language model. Please choose a language model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:468 msgid "The folder contains several language models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:479 msgid "" "The folder contains no dictionary. Please choose a dictionary from another " "folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:488 msgid "The folder contains several dictionaries." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:498 msgid "" "The folder contains no acoustic model. Please choose an acoustic model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:507 msgid "The folder contains several acoustic models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:625 msgid "Download model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:633 msgid "Finish configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:210 msgid "Select output for automatic speech recognition" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:212 msgid "Please open and switch focus to a word processor." 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:98 src/pt-preferences.c:108 #: src/pt-preferences.c:118 msgid "second" msgid_plural "seconds" msgstr[0] "çirke" msgstr[1] "çirke" #: src/pt-preferences.c:289 msgid "Deleting configuration" msgstr "" #: src/pt-preferences.c:290 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-window.c:219 #, c-format msgid "Found %s" msgstr "" #: src/pt-window.c:220 msgid "Press “Play” to start automatic speech recognition." msgstr "" #: src/pt-window.c:423 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:440 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:459 msgid "Pause" msgstr "Raweste" #: src/pt-window.c:462 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:469 msgid "Start playing" msgstr "" #: src/pt-window.c:505 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:507 src/pt-window.c:1246 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1162 #, 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 "" #: src/pt-window.c:1165 msgid "Fatal error" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:15 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:30 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:45 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:59 msgid "When you are finished, specify the folder with the model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:96 msgid "Language model" msgstr "" #: src/resources/asr-assistant.ui:125 msgid "Select language model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:157 msgid "Dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:186 msgid "Select dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:218 msgid "Acoustic model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:248 msgid "Select acoustic model folder" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:285 msgid "Setup is completed. Please give this configuration a name:" msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:46 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:15 msgid "General" 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:270 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:27 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 "Manual transcription" msgstr "" #: src/resources/menus.ui:12 msgid "Automatic transcription" msgstr "" #: src/resources/menus.ui:19 msgid "Preferences" msgstr "Vebijêrk" #: src/resources/menus.ui:23 msgid "_Keyboard Shortcuts" msgstr "" #: src/resources/menus.ui:31 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:38 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:42 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:140 msgid "_Pixels per second:" msgstr "" #: src/resources/preferences.ui:170 msgid "Show _time scale" msgstr "" #. Resolution of the waveform image #: src/resources/preferences.ui:188 msgid "Resolution" msgstr "Rêjeşane" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:203 msgid "Display" msgstr "Nîşandan" #: src/resources/preferences.ui:216 msgid "_Moving cursor" msgstr "" #: src/resources/preferences.ui:233 msgid "_Fixed cursor" msgstr "" #: src/resources/preferences.ui:287 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:389 msgid "Jump _forward:" msgstr "" #: src/resources/preferences.ui:403 msgid "Jump _back:" msgstr "" #: src/resources/preferences.ui:417 msgid "Jump back on _pause:" msgstr "" #: src/resources/preferences.ui:440 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:454 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:473 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:487 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:509 msgid "Controls" msgstr "Kontrolkirin" #: src/resources/preferences.ui:552 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:565 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:583 msgid "Precision" msgstr "" #: src/resources/preferences.ui:599 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:615 msgid "Examples" msgstr "" #: src/resources/preferences.ui:657 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:689 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:732 msgid "Timestamps" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:863 msgid "Language model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:890 msgid "Dictionary:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:917 msgid "Acoustic model folder:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:965 msgid "There is no configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:975 msgid "Add a configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:1004 msgid "Speech recognition" msgstr "" #: src/resources/preferences.ui:1022 msgid "Remember _size" msgstr "" #: src/resources/preferences.ui:1037 msgid "Remember _position" msgstr "" #: src/resources/preferences.ui:1052 msgid "Start on _top" msgstr "" #: src/resources/preferences.ui:1074 msgid "Window" msgstr "Pencere" #: src/resources/window.ui:142 msgid "_Play" msgstr "_Lêdan" #: src/resources/window.ui:312 msgid "Speed:" msgstr "Lez:" #: src/resources/window-headerbar.ui:17 msgid "Open a file" msgstr "Dosiyekê veke" parlatype-1.6.2/po/lt.po000066400000000000000000000514431353244124700151320ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 21:09+0200\n" "PO-Revision-Date: 2019-07-22 19:14+0000\n" "Last-Translator: Moo \n" "Language-Team: Lithuanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=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: 2019-07-23 18:40+0000\n" "X-Generator: Launchpad (build 19010)\n" "Language: lt\n" #: data/com.github.gkarsay.parlatype.appdata.xml.in:7 #: data/com.github.gkarsay.parlatype.desktop.in:4 src/pt-app.c:189 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/com.github.gkarsay.parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "Šnekos transkripcijos medijos leistuvė" #: data/com.github.gkarsay.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/com.github.gkarsay.parlatype.appdata.xml.in:24 msgid "Gabor Karsay" msgstr "Gabor Karsay" #: data/com.github.gkarsay.parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Transkripcijos paslaugų programa" #: data/com.github.gkarsay.parlatype.desktop.in:6 msgid "Transcription;" msgstr "Transkripcija;" #: data/com.github.gkarsay.parlatype.desktop.in:8 msgid "com.github.gkarsay.parlatype" msgstr "com.github.gkarsay.parlatype" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:6 msgid "LibreOffice/Parlatype Helpers" msgstr "LibreOffice/Parlatype pagelbikliai" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:7 msgid "Control Parlatype using LibreOffice macros" msgstr "Valdyti Parlatype, naudojant LibreOffice makrokomandas" #: src/pt-app.c:43 msgid "Show the application’s version" msgstr "Rodyti programos versiją" #: src/pt-app.c:52 msgid "Enable automatic speech recognition" msgstr "Įjungti automatinį šnekos atpažinimą" #: src/pt-app.c:60 msgid "Use internal textpad for automatic speech recognition" msgstr "Automatiniam šnekos atpažinimui, naudoti vidinę tekstų rengyklę" #: src/pt-app.c:83 msgid "Open Audio File" msgstr "Atverti garso failą" #: src/pt-app.c:86 src/resources/window-headerbar.ui:12 msgid "_Open" msgstr "_Atverti" #: src/pt-app.c:87 src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Atsisakyti" #: src/pt-app.c:106 msgid "Audio files" msgstr "Garso failai" #: src/pt-app.c:107 msgid "All files" msgstr "Visi failai" #. Translators: %s is a detailed error message #: src/pt-app.c:156 #, 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:174 msgid "Including code from other projects:" msgstr "Kodas iš kitų projektų:" #: src/pt-app.c:192 msgid "A basic transcription utility" msgstr "Pagrindinė transkripcijos paslaugų programa" #: src/pt-app.c:196 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Moo https://launchpad.net/~mooo" #: src/pt-app.c:321 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" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:194 msgid "The folder contains no acoustic model." msgstr "Aplanke nėra jokio akustinio modelio." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:301 msgid "Please select …" msgstr "Pasirinkite…" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:340 msgid "Missing parameters" msgstr "Trūksta parametrų" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:384 msgid "Timed out" msgstr "Pasibaigė skirtas laikas" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:386 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:390 msgid "Scanning the folder failed" msgstr "Aplanko peržiūra nepavyko" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:406 msgid "Nothing found" msgstr "Nieko nerasta" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:408 msgid "This folder doesn’t contain a suitable model." msgstr "Šiame aplanke nėra tinkamo modelio." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:459 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:468 msgid "The folder contains several language models." msgstr "Aplanke yra keli kalbos modeliai" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:479 msgid "" "The folder contains no dictionary. Please choose a dictionary from another " "folder." msgstr "Aplanke nėra jokio žodyno. Pasirinkite žodyną iš kito aplanko." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:488 msgid "The folder contains several dictionaries." msgstr "Aplanke yra keli žodynai." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:498 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:507 msgid "The folder contains several acoustic models." msgstr "Aplanke yra keli akustiniai modeliai." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:625 msgid "Download model" msgstr "Atsisiųsti modelį" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:633 msgid "Finish configuration" msgstr "Užbaigti konfigūraciją" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:210 msgid "Select output for automatic speech recognition" msgstr "Pasirinkite automatinio šnekos atpažinimo išvestį" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:212 msgid "Please open and switch focus to a word processor." msgstr "Atverkite ir perjunkite fokusavimą į tekstų rengyklę." #. 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:98 src/pt-preferences.c:108 #: src/pt-preferences.c:118 msgid "second" msgid_plural "seconds" msgstr[0] "sekundę" msgstr[1] "sekundes" msgstr[2] "sekundžių" #: src/pt-preferences.c:289 msgid "Deleting configuration" msgstr "Ištrinama konfigūracija" #: src/pt-preferences.c:290 #, c-format msgid "Do you really want to delete “%s”?" msgstr "Ar tikrai norite ištrinti “%s”?" #: src/pt-window.c:219 #, c-format msgid "Found %s" msgstr "Rasta %s" #: src/pt-window.c:220 msgid "Press “Play” to start automatic speech recognition." msgstr "" "Norėdami pradėti automatinį šnekos atpažinimą, paspauskite \"Groti\"." #: src/pt-window.c:423 #, 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:440 #, 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:459 msgid "Pause" msgstr "Pristabdyti" #: src/pt-window.c:462 #, 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:469 msgid "Start playing" msgstr "Pradėti groti" #: src/pt-window.c:505 #, c-format msgid "Go to time in clipboard: %s" msgstr "Pereiti į laiką iškarpinėje: %s" #: src/pt-window.c:507 src/pt-window.c:1246 msgid "Go to time in clipboard" msgstr "Pereiti į laiką iškarpinėje" #: src/pt-window.c:1162 #, 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" #: src/pt-window.c:1165 msgid "Fatal error" msgstr "Lemtingoji klaida" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:15 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:30 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." #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:45 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ą." #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:59 msgid "When you are finished, specify the folder with the model:" msgstr "Užbaigę, nurodykite aplanką su modeliu:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:96 msgid "Language model" msgstr "Kalbos modelis" #: src/resources/asr-assistant.ui:125 msgid "Select language model" msgstr "Pasirinkite kalbos modelį" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:157 msgid "Dictionary" msgstr "Žodynas" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:186 msgid "Select dictionary" msgstr "Pasirinkite žodyną" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:218 msgid "Acoustic model" msgstr "Akustinis modelis" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:248 msgid "Select acoustic model folder" msgstr "Pasirinkite akustinio modelio aplanką" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:285 msgid "Setup is completed. Please give this configuration a name:" msgstr "Sąranka užbaigta. Suteikite šiai konfigūracijai pavadinimą:" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:46 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:15 msgid "General" msgstr "Bendra" #: 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:270 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:27 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 "Manual transcription" msgstr "Rankinė transkripcija" #: src/resources/menus.ui:12 msgid "Automatic transcription" msgstr "Automatinė transkripcija" #: src/resources/menus.ui:19 msgid "Preferences" msgstr "Nuostatos" #: src/resources/menus.ui:23 msgid "_Keyboard Shortcuts" msgstr "_Klaviatūros trumpiniai" #: src/resources/menus.ui:31 msgid "About Parlatype" msgstr "Apie Parlatype" #: src/resources/menus.ui:38 msgid "Copy time to clipboard" msgstr "Kopijuoti laiką į iškarpinę" #: src/resources/menus.ui:42 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:140 msgid "_Pixels per second:" msgstr "_Pikselių per sekundę:" #: src/resources/preferences.ui:170 msgid "Show _time scale" msgstr "Rodyti _laiko mastelį" #. Resolution of the waveform image #: src/resources/preferences.ui:188 msgid "Resolution" msgstr "Raiška" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:203 msgid "Display" msgstr "Rodymas" #: src/resources/preferences.ui:216 msgid "_Moving cursor" msgstr "_Judantis žymeklis" #: src/resources/preferences.ui:233 msgid "_Fixed cursor" msgstr "_Fiksuotas žymeklis" #: src/resources/preferences.ui:287 msgid "Jumps" msgstr "Peršokimai" #: src/resources/preferences.ui:389 msgid "Jump _forward:" msgstr "Peršokti p_irmyn:" #: src/resources/preferences.ui:403 msgid "Jump _back:" msgstr "Peršokti _atgal:" #: src/resources/preferences.ui:417 msgid "Jump back on _pause:" msgstr "Pristabdžius, _peršokti atgal:" #: src/resources/preferences.ui:440 msgid "Pressing “Play” at the end of file" msgstr "Paspaudus \"Groti\" failo pabaigoje" #: src/resources/preferences.ui:454 msgid "Replay file" msgstr "Iš naujo groti failą" #: src/resources/preferences.ui:473 msgid "Pressing “Play” at the end of selection" msgstr "Paspaudus \"Groti\" žymėjimo pabaigoje" #: src/resources/preferences.ui:487 msgid "Replay selection" msgstr "Iš naujo groti žymėjimą" #: src/resources/preferences.ui:509 msgid "Controls" msgstr "Valdikliai" #: src/resources/preferences.ui:552 msgid "Hours and zeroes" msgstr "Valandos ir nuliai" #: src/resources/preferences.ui:565 msgid "Always show hours and leading zeroes" msgstr "Visada rodyti valandas ir priekinius nulius" #: src/resources/preferences.ui:583 msgid "Precision" msgstr "Tikslumas" #: src/resources/preferences.ui:599 msgid "Characters around timestamps" msgstr "Simboliai aplink laiko žymas" #: src/resources/preferences.ui:615 msgid "Examples" msgstr "Pavyzdžiai" #: src/resources/preferences.ui:657 msgid "Precision:" msgstr "Tikslumas:" #: src/resources/preferences.ui:689 msgid "Fraction separator:" msgstr "Trupmenų skirtuvas:" #: src/resources/preferences.ui:732 msgid "Timestamps" msgstr "Laiko žymos" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:863 msgid "Language model:" msgstr "Kalbos modelis:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:890 msgid "Dictionary:" msgstr "Žodynas:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:917 msgid "Acoustic model folder:" msgstr "Akustinio modelio aplankas:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:965 msgid "There is no configuration" msgstr "Nėra konfigūracijos" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:975 msgid "Add a configuration" msgstr "Pridėti konfigūraciją" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:1004 msgid "Speech recognition" msgstr "Šnekos atpažinimas" #: src/resources/preferences.ui:1022 msgid "Remember _size" msgstr "Prisiminti _dydį" #: src/resources/preferences.ui:1037 msgid "Remember _position" msgstr "Prisiminti _poziciją" #: src/resources/preferences.ui:1052 msgid "Start on _top" msgstr "Paleisti viršuje" #: src/resources/preferences.ui:1074 msgid "Window" msgstr "Langas" #: src/resources/window.ui:142 msgid "_Play" msgstr "_Groti" #: src/resources/window.ui:312 msgid "Speed:" msgstr "Greitis:" #: src/resources/window-headerbar.ui:17 msgid "Open a file" msgstr "Atverti failą" parlatype-1.6.2/po/meson.build000066400000000000000000000000561353244124700163070ustar00rootroot00000000000000i18n.gettext(gettext_package, preset: 'glib') parlatype-1.6.2/po/ms.po000066400000000000000000000414211353244124700151250ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 21:09+0200\n" "PO-Revision-Date: 2018-06-04 12:45+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Malay \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: ms\n" #: data/com.github.gkarsay.parlatype.appdata.xml.in:7 #: data/com.github.gkarsay.parlatype.desktop.in:4 src/pt-app.c:189 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/com.github.gkarsay.parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/com.github.gkarsay.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/com.github.gkarsay.parlatype.appdata.xml.in:24 msgid "Gabor Karsay" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Utiliti transkripsi" #: data/com.github.gkarsay.parlatype.desktop.in:6 msgid "Transcription;" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:8 msgid "com.github.gkarsay.parlatype" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:6 msgid "LibreOffice/Parlatype Helpers" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:7 msgid "Control Parlatype using LibreOffice macros" msgstr "" #: src/pt-app.c:43 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:52 msgid "Enable automatic speech recognition" msgstr "" #: src/pt-app.c:60 msgid "Use internal textpad for automatic speech recognition" msgstr "" #: src/pt-app.c:83 msgid "Open Audio File" msgstr "Buka Fail Audio" #: src/pt-app.c:86 src/resources/window-headerbar.ui:12 msgid "_Open" msgstr "B_uka" #: src/pt-app.c:87 src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Batal" #: src/pt-app.c:106 msgid "Audio files" msgstr "Fail audio" #: src/pt-app.c:107 msgid "All files" msgstr "Semua fail" #. Translators: %s is a detailed error message #: src/pt-app.c:156 #, 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:174 msgid "Including code from other projects:" msgstr "Kod yang disertakan dari projek lain:" #: src/pt-app.c:192 msgid "A basic transcription utility" msgstr "Utiliti transkripsi asas" #: src/pt-app.c:196 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " abuyop https://launchpad.net/~abuyop" #: src/pt-app.c:321 msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:194 msgid "The folder contains no acoustic model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:301 msgid "Please select …" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:340 msgid "Missing parameters" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:384 msgid "Timed out" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:386 msgid "" "Scanning the folder took too long. Please make sure to open a folder with " "model data only." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:390 msgid "Scanning the folder failed" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:406 msgid "Nothing found" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:408 msgid "This folder doesn’t contain a suitable model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:459 msgid "" "The folder contains no language model. Please choose a language model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:468 msgid "The folder contains several language models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:479 msgid "" "The folder contains no dictionary. Please choose a dictionary from another " "folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:488 msgid "The folder contains several dictionaries." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:498 msgid "" "The folder contains no acoustic model. Please choose an acoustic model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:507 msgid "The folder contains several acoustic models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:625 msgid "Download model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:633 msgid "Finish configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:210 msgid "Select output for automatic speech recognition" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:212 msgid "Please open and switch focus to a word processor." 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:98 src/pt-preferences.c:108 #: src/pt-preferences.c:118 msgid "second" msgid_plural "seconds" msgstr[0] "saat" msgstr[1] "saat" #: src/pt-preferences.c:289 msgid "Deleting configuration" msgstr "" #: src/pt-preferences.c:290 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-window.c:219 #, c-format msgid "Found %s" msgstr "" #: src/pt-window.c:220 msgid "Press “Play” to start automatic speech recognition." msgstr "" #: src/pt-window.c:423 #, 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:440 #, 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:459 msgid "Pause" msgstr "Jeda" #: src/pt-window.c:462 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:469 msgid "Start playing" msgstr "Mulakan main" #: src/pt-window.c:505 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:507 src/pt-window.c:1246 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1162 #, 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 "" #: src/pt-window.c:1165 msgid "Fatal error" msgstr "Ralat mati" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:15 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:30 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:45 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:59 msgid "When you are finished, specify the folder with the model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:96 msgid "Language model" msgstr "" #: src/resources/asr-assistant.ui:125 msgid "Select language model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:157 msgid "Dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:186 msgid "Select dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:218 msgid "Acoustic model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:248 msgid "Select acoustic model folder" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:285 msgid "Setup is completed. Please give this configuration a name:" msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:46 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:15 msgid "General" 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 "Keluar" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:270 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:27 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 "Manual transcription" msgstr "" #: src/resources/menus.ui:12 msgid "Automatic transcription" msgstr "" #: src/resources/menus.ui:19 msgid "Preferences" msgstr "Keutamaan" #: src/resources/menus.ui:23 msgid "_Keyboard Shortcuts" msgstr "" #: src/resources/menus.ui:31 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:38 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:42 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:140 msgid "_Pixels per second:" msgstr "_Piksel per saat:" #: src/resources/preferences.ui:170 msgid "Show _time scale" msgstr "Tunjuk skala _waktu" #. Resolution of the waveform image #: src/resources/preferences.ui:188 msgid "Resolution" msgstr "Resolusi" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:203 msgid "Display" msgstr "Paparan" #: src/resources/preferences.ui:216 msgid "_Moving cursor" msgstr "Kursor _bergerak" #: src/resources/preferences.ui:233 msgid "_Fixed cursor" msgstr "Kursor _tetap" #: src/resources/preferences.ui:287 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:389 msgid "Jump _forward:" msgstr "" #: src/resources/preferences.ui:403 msgid "Jump _back:" msgstr "" #: src/resources/preferences.ui:417 msgid "Jump back on _pause:" msgstr "" #: src/resources/preferences.ui:440 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:454 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:473 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:487 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:509 msgid "Controls" msgstr "Kawalan" #: src/resources/preferences.ui:552 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:565 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:583 msgid "Precision" msgstr "" #: src/resources/preferences.ui:599 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:615 msgid "Examples" msgstr "" #: src/resources/preferences.ui:657 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:689 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:732 msgid "Timestamps" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:863 msgid "Language model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:890 msgid "Dictionary:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:917 msgid "Acoustic model folder:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:965 msgid "There is no configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:975 msgid "Add a configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:1004 msgid "Speech recognition" msgstr "" #: src/resources/preferences.ui:1022 msgid "Remember _size" msgstr "" #: src/resources/preferences.ui:1037 msgid "Remember _position" msgstr "Ingat _kedudukan" #: src/resources/preferences.ui:1052 msgid "Start on _top" msgstr "Mula di _atas" #: src/resources/preferences.ui:1074 msgid "Window" msgstr "Tetingkap" #: src/resources/window.ui:142 msgid "_Play" msgstr "_Tukarnama" #: src/resources/window.ui:312 msgid "Speed:" msgstr "Kelajuan:" #: src/resources/window-headerbar.ui:17 msgid "Open a file" msgstr "Buka satu fail" parlatype-1.6.2/po/nl.po000066400000000000000000000422711353244124700151230ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 21:09+0200\n" "PO-Revision-Date: 2019-05-27 17:09+0000\n" "Last-Translator: Heimen Stoffels \n" "Language-Team: Dutch \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: nl\n" #: data/com.github.gkarsay.parlatype.appdata.xml.in:7 #: data/com.github.gkarsay.parlatype.desktop.in:4 src/pt-app.c:189 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/com.github.gkarsay.parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/com.github.gkarsay.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/com.github.gkarsay.parlatype.appdata.xml.in:24 msgid "Gabor Karsay" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Transcriptiehulpmiddel" #: data/com.github.gkarsay.parlatype.desktop.in:6 msgid "Transcription;" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:8 msgid "com.github.gkarsay.parlatype" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:6 msgid "LibreOffice/Parlatype Helpers" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:7 msgid "Control Parlatype using LibreOffice macros" msgstr "" #: src/pt-app.c:43 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:52 msgid "Enable automatic speech recognition" msgstr "" #: src/pt-app.c:60 msgid "Use internal textpad for automatic speech recognition" msgstr "" #: src/pt-app.c:83 msgid "Open Audio File" msgstr "Audiobestand openen" #: src/pt-app.c:86 src/resources/window-headerbar.ui:12 msgid "_Open" msgstr "_Openen" #: src/pt-app.c:87 src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Annuleren" #: src/pt-app.c:106 msgid "Audio files" msgstr "Audiobestanden" #: src/pt-app.c:107 msgid "All files" msgstr "Alle bestanden" #. Translators: %s is a detailed error message #: src/pt-app.c:156 #, 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:174 msgid "Including code from other projects:" msgstr "Inclusief code van andere projecten:" #: src/pt-app.c:192 msgid "A basic transcription utility" msgstr "Een basis-transcriptiehulpmiddel" #: src/pt-app.c:196 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Heimen Stoffels https://launchpad.net/~vistaus" #: src/pt-app.c:321 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" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:194 msgid "The folder contains no acoustic model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:301 msgid "Please select …" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:340 msgid "Missing parameters" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:384 msgid "Timed out" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:386 msgid "" "Scanning the folder took too long. Please make sure to open a folder with " "model data only." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:390 msgid "Scanning the folder failed" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:406 msgid "Nothing found" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:408 msgid "This folder doesn’t contain a suitable model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:459 msgid "" "The folder contains no language model. Please choose a language model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:468 msgid "The folder contains several language models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:479 msgid "" "The folder contains no dictionary. Please choose a dictionary from another " "folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:488 msgid "The folder contains several dictionaries." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:498 msgid "" "The folder contains no acoustic model. Please choose an acoustic model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:507 msgid "The folder contains several acoustic models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:625 msgid "Download model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:633 msgid "Finish configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:210 msgid "Select output for automatic speech recognition" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:212 msgid "Please open and switch focus to a word processor." 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:98 src/pt-preferences.c:108 #: src/pt-preferences.c:118 msgid "second" msgid_plural "seconds" msgstr[0] "seconde" msgstr[1] "seconden" #: src/pt-preferences.c:289 msgid "Deleting configuration" msgstr "" #: src/pt-preferences.c:290 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-window.c:219 #, c-format msgid "Found %s" msgstr "" #: src/pt-window.c:220 msgid "Press “Play” to start automatic speech recognition." msgstr "" #: src/pt-window.c:423 #, 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:440 #, 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:459 msgid "Pause" msgstr "Pauzeren" #: src/pt-window.c:462 #, 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:469 msgid "Start playing" msgstr "Afspelen starten" #: src/pt-window.c:505 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:507 src/pt-window.c:1246 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1162 #, 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 "" #: src/pt-window.c:1165 msgid "Fatal error" msgstr "Fatale fout" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:15 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:30 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:45 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:59 msgid "When you are finished, specify the folder with the model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:96 msgid "Language model" msgstr "" #: src/resources/asr-assistant.ui:125 msgid "Select language model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:157 msgid "Dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:186 msgid "Select dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:218 msgid "Acoustic model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:248 msgid "Select acoustic model folder" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:285 msgid "Setup is completed. Please give this configuration a name:" msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:46 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:15 msgid "General" 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 "Afsluiten" #: src/resources/help-overlay.ui:42 src/resources/preferences.ui:270 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:27 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 "Manual transcription" msgstr "" #: src/resources/menus.ui:12 msgid "Automatic transcription" msgstr "" #: src/resources/menus.ui:19 msgid "Preferences" msgstr "Voorkeuren" #: src/resources/menus.ui:23 msgid "_Keyboard Shortcuts" msgstr "" #: src/resources/menus.ui:31 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:38 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:42 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:140 msgid "_Pixels per second:" msgstr "_Pixels per seconde:" #: src/resources/preferences.ui:170 msgid "Show _time scale" msgstr "_Tijdschaal weergeven" #. Resolution of the waveform image #: src/resources/preferences.ui:188 msgid "Resolution" msgstr "Resolutie" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:203 msgid "Display" msgstr "Weergave" #: src/resources/preferences.ui:216 msgid "_Moving cursor" msgstr "Be_wegende cursor" #: src/resources/preferences.ui:233 msgid "_Fixed cursor" msgstr "_Vastgezette cursor" #: src/resources/preferences.ui:287 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:389 msgid "Jump _forward:" msgstr "_Vooruitspoelen:" #: src/resources/preferences.ui:403 msgid "Jump _back:" msgstr "_Terugspoelen" #: src/resources/preferences.ui:417 msgid "Jump back on _pause:" msgstr "Terugspoelen bij _pauzeren:" #: src/resources/preferences.ui:440 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:454 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:473 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:487 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:509 msgid "Controls" msgstr "Bediening" #: src/resources/preferences.ui:552 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:565 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:583 msgid "Precision" msgstr "" #: src/resources/preferences.ui:599 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:615 msgid "Examples" msgstr "" #: src/resources/preferences.ui:657 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:689 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:732 msgid "Timestamps" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:863 msgid "Language model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:890 msgid "Dictionary:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:917 msgid "Acoustic model folder:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:965 msgid "There is no configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:975 msgid "Add a configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:1004 msgid "Speech recognition" msgstr "" #: src/resources/preferences.ui:1022 msgid "Remember _size" msgstr "" #: src/resources/preferences.ui:1037 msgid "Remember _position" msgstr "_Positie onthouden" #: src/resources/preferences.ui:1052 msgid "Start on _top" msgstr "Beginnen aan _bovenkant" #: src/resources/preferences.ui:1074 msgid "Window" msgstr "Venster" #: src/resources/window.ui:142 msgid "_Play" msgstr "Afs_pelen" #: src/resources/window.ui:312 msgid "Speed:" msgstr "Snelheid:" #: src/resources/window-headerbar.ui:17 msgid "Open a file" msgstr "Een bestand openen" parlatype-1.6.2/po/pl.po000066400000000000000000000515661353244124700151340ustar00rootroot00000000000000# 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: 2019-05-27 21:09+0200\n" "PO-Revision-Date: 2019-05-28 18:17+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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: pl\n" #: data/com.github.gkarsay.parlatype.appdata.xml.in:7 #: data/com.github.gkarsay.parlatype.desktop.in:4 src/pt-app.c:189 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/com.github.gkarsay.parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "Odtwarzacz multimedialny do transkrypcji mowy" #: data/com.github.gkarsay.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/com.github.gkarsay.parlatype.appdata.xml.in:24 msgid "Gabor Karsay" msgstr "Gabor Karsay" #: data/com.github.gkarsay.parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Narzędzie do transkrypcji" #: data/com.github.gkarsay.parlatype.desktop.in:6 msgid "Transcription;" msgstr "Transkrypcja;" #: data/com.github.gkarsay.parlatype.desktop.in:8 msgid "com.github.gkarsay.parlatype" msgstr "com.github.gkarsay.parlatype" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:6 msgid "LibreOffice/Parlatype Helpers" msgstr "Narzędzia pomocnicze LibreOffice/Parlatype" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:7 msgid "Control Parlatype using LibreOffice macros" msgstr "Sterowanie programem Parlatype za pomocą makr pakietu LibreOffice" #: src/pt-app.c:43 msgid "Show the application’s version" msgstr "Wyświetla wersję programu" #: src/pt-app.c:52 msgid "Enable automatic speech recognition" msgstr "Włącza automatyczne rozpoznawanie mowy" #: src/pt-app.c:60 msgid "Use internal textpad for automatic speech recognition" msgstr "" "Używa wewnętrznego pola tekstowego do automatycznego rozpoznawania mowy" #: src/pt-app.c:83 msgid "Open Audio File" msgstr "Otwarcie pliku dźwiękowego" #: src/pt-app.c:86 src/resources/window-headerbar.ui:12 msgid "_Open" msgstr "_Otwórz" #: src/pt-app.c:87 src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Anuluj" #: src/pt-app.c:106 msgid "Audio files" msgstr "Pliki dźwiękowe" #: src/pt-app.c:107 msgid "All files" msgstr "Wszystkie pliki" #. Translators: %s is a detailed error message #: src/pt-app.c:156 #, 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:174 msgid "Including code from other projects:" msgstr "Zawiera kod z innych projektów:" #: src/pt-app.c:192 msgid "A basic transcription utility" msgstr "Podstawowe narzędzie do transkrypcji" #: src/pt-app.c:196 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:321 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" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:194 msgid "The folder contains no acoustic model." msgstr "Katalog nie zawiera modelu akustycznego." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:301 msgid "Please select …" msgstr "Proszę wybrać…" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:340 msgid "Missing parameters" msgstr "Brak parametrów" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:384 msgid "Timed out" msgstr "Przekroczono czas odpowiedzi" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:386 msgid "" "Scanning the folder took too long. Please make sure to open a folder with " "model data only." msgstr "" "Skanowanie katalogu trwało za długo. Proszę się upewnić, że otwierany jest " "katalog tylko z danymi modelu." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:390 msgid "Scanning the folder failed" msgstr "Skanowanie katalogu się nie powiodło" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:406 msgid "Nothing found" msgstr "Nic nie odnaleziono" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:408 msgid "This folder doesn’t contain a suitable model." msgstr "Ten katalog nie zawiera odpowiedniego modelu." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:459 msgid "" "The folder contains no language model. Please choose a language model from " "another folder." msgstr "" "Katalog nie zawiera modelu języka. Proszę wybrać model języka z innego " "katalogu." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:468 msgid "The folder contains several language models." msgstr "Katalog zawiera kilka modeli języków." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:479 msgid "" "The folder contains no dictionary. Please choose a dictionary from another " "folder." msgstr "" "Katalog nie zawiera słownika. Proszę wybrać słownik z innego katalogu." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:488 msgid "The folder contains several dictionaries." msgstr "Katalog zawiera kilka słowników." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:498 msgid "" "The folder contains no acoustic model. Please choose an acoustic model from " "another folder." msgstr "" "Katalog nie zawiera modelu akustycznego. Proszę wybrać model akustyczny " "z innego katalogu." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:507 msgid "The folder contains several acoustic models." msgstr "Katalog zawiera kilka modeli akustycznych." #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:625 msgid "Download model" msgstr "Pobieranie modelu" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:633 msgid "Finish configuration" msgstr "Kończenie konfiguracji" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:210 msgid "Select output for automatic speech recognition" msgstr "Wybór wyjścia do automatycznego rozpoznawania mowy" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:212 msgid "Please open and switch focus to a word processor." msgstr "Proszę otworzyć i aktywować procesor tekstu." #. 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:98 src/pt-preferences.c:108 #: src/pt-preferences.c:118 msgid "second" msgid_plural "seconds" msgstr[0] "sekunda" msgstr[1] "sekundy" msgstr[2] "sekund" #: src/pt-preferences.c:289 msgid "Deleting configuration" msgstr "Usuwanie konfiguracji" #: src/pt-preferences.c:290 #, c-format msgid "Do you really want to delete “%s”?" msgstr "Na pewno usunąć „%s”?" #: src/pt-window.c:219 #, c-format msgid "Found %s" msgstr "Odnaleziono %s" #: src/pt-window.c:220 msgid "Press “Play” to start automatic speech recognition." msgstr "Kliknięcie „Odtwórz” rozpocznie automatyczne rozpoznawanie mowy" #: src/pt-window.c:423 #, 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:440 #, 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:459 msgid "Pause" msgstr "Wstrzymaj" #: src/pt-window.c:462 #, 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:469 msgid "Start playing" msgstr "Rozpocznij odtwarzanie" #: src/pt-window.c:505 #, c-format msgid "Go to time in clipboard: %s" msgstr "Przejście do czasu w schowku: %s" #: src/pt-window.c:507 src/pt-window.c:1246 msgid "Go to time in clipboard" msgstr "Przejście do czasu w schowku" #: src/pt-window.c:1162 #, 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 wymaga biblioteki GStreamer 1.x do działania. Proszę sprawdzić " "poprawność instalacji biblioteki GStreamer i upewnić się, że „Dobre wtyczki” " "są zainstalowane.\n" "Działanie Parlatype zostanie teraz zakończone. Otrzymano ten komunikat " "o błędzie: %s" #: src/pt-window.c:1165 msgid "Fatal error" msgstr "Błąd krytyczny" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:15 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 "" "Przed rozpoczęciem należy pobrać tak zwany model akustyczny i model języka. " "Jest to zestaw plików dla konkretnego języka." #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:30 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 używa CMU Sphinx jako mechanizm rozpoznawania mowy. Można pobrać " "modele odpowiednie dla mechanizmu CMU Sphinx na przykład z repozytorium SourceForge projektu CMU Sphinx. Są w nim " "modele dla wielu najczęściej używanych języków." #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:45 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 "" "Jeśli model jest skompresowany, to należy go zdekompresować do katalogu, " "w którym może zostać. Parlatype nie przechowuje wewnętrznej kopii modelu." #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:59 msgid "When you are finished, specify the folder with the model:" msgstr "Po ukończeniu należy podać katalog z modelem:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:96 msgid "Language model" msgstr "Model języka" #: src/resources/asr-assistant.ui:125 msgid "Select language model" msgstr "Wybierz model języka" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:157 msgid "Dictionary" msgstr "Słownik" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:186 msgid "Select dictionary" msgstr "Wybierz słownik" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:218 msgid "Acoustic model" msgstr "Model akustyczny" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:248 msgid "Select acoustic model folder" msgstr "Wybierz katalog z modelem akustycznym" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:285 msgid "Setup is completed. Please give this configuration a name:" msgstr "Ukończono konfigurację. Proszę nadać jej nazwę:" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:46 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:15 msgid "General" msgstr "Ogólne" #: 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:270 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:27 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 "Manual transcription" msgstr "Ręczna transkrypcja" #: src/resources/menus.ui:12 msgid "Automatic transcription" msgstr "Automatyczna transkrypcja" #: src/resources/menus.ui:19 msgid "Preferences" msgstr "Preferencje" #: src/resources/menus.ui:23 msgid "_Keyboard Shortcuts" msgstr "_Skróty klawiszowe" #: src/resources/menus.ui:31 msgid "About Parlatype" msgstr "O programie" #: src/resources/menus.ui:38 msgid "Copy time to clipboard" msgstr "Skopiuj czas do schowka" #: src/resources/menus.ui:42 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:140 msgid "_Pixels per second:" msgstr "_Piksele na sekundę:" #: src/resources/preferences.ui:170 msgid "Show _time scale" msgstr "Podziałka _czasu" #. Resolution of the waveform image #: src/resources/preferences.ui:188 msgid "Resolution" msgstr "Rozdzielczość" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:203 msgid "Display" msgstr "Wyświetlanie" #: src/resources/preferences.ui:216 msgid "_Moving cursor" msgstr "_Kursor się porusza" #: src/resources/preferences.ui:233 msgid "_Fixed cursor" msgstr "_Stały kursor" #: src/resources/preferences.ui:287 msgid "Jumps" msgstr "Przejścia" #: src/resources/preferences.ui:389 msgid "Jump _forward:" msgstr "Przejście _naprzód:" #: src/resources/preferences.ui:403 msgid "Jump _back:" msgstr "Prz_ejście wstecz:" #: src/resources/preferences.ui:417 msgid "Jump back on _pause:" msgstr "Przejście _wstecz przy wstrzymaniu:" #: src/resources/preferences.ui:440 msgid "Pressing “Play” at the end of file" msgstr "Kliknięcie „Odtwórz” na końcu pliku" #: src/resources/preferences.ui:454 msgid "Replay file" msgstr "Powtórzenie pliku" #: src/resources/preferences.ui:473 msgid "Pressing “Play” at the end of selection" msgstr "Kliknięcie „Odtwórz” na końcu zaznaczenia" #: src/resources/preferences.ui:487 msgid "Replay selection" msgstr "Powtórzenie zaznaczenia" #: src/resources/preferences.ui:509 msgid "Controls" msgstr "Sterowanie" #: src/resources/preferences.ui:552 msgid "Hours and zeroes" msgstr "Godziny i zera" #: src/resources/preferences.ui:565 msgid "Always show hours and leading zeroes" msgstr "Wyświetlanie godzin i początkowych zer" #: src/resources/preferences.ui:583 msgid "Precision" msgstr "Dokładność" #: src/resources/preferences.ui:599 msgid "Characters around timestamps" msgstr "Znaki wokół czasów" #: src/resources/preferences.ui:615 msgid "Examples" msgstr "Przykłady" #: src/resources/preferences.ui:657 msgid "Precision:" msgstr "Dokładność:" #: src/resources/preferences.ui:689 msgid "Fraction separator:" msgstr "Separator dziesiętny:" #: src/resources/preferences.ui:732 msgid "Timestamps" msgstr "Czasy" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:863 msgid "Language model:" msgstr "Model języka:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:890 msgid "Dictionary:" msgstr "Słownik:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:917 msgid "Acoustic model folder:" msgstr "Katalog z modelem akustycznym:" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:965 msgid "There is no configuration" msgstr "Nie ma konfiguracji" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:975 msgid "Add a configuration" msgstr "Dodaj konfigurację" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:1004 msgid "Speech recognition" msgstr "Rozpoznawanie mowy" #: src/resources/preferences.ui:1022 msgid "Remember _size" msgstr "Pamiętanie _rozmiaru" #: src/resources/preferences.ui:1037 msgid "Remember _position" msgstr "Pamiętanie p_ozycji" #: src/resources/preferences.ui:1052 msgid "Start on _top" msgstr "_Uruchamianie zawsze na wierzchu" #: src/resources/preferences.ui:1074 msgid "Window" msgstr "Okno" #: src/resources/window.ui:142 msgid "_Play" msgstr "_Odtwórz" #: src/resources/window.ui:312 msgid "Speed:" msgstr "Prędkość:" #: src/resources/window-headerbar.ui:17 msgid "Open a file" msgstr "Otwiera plik" parlatype-1.6.2/po/pt.po000066400000000000000000000410601353244124700151300ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 21:09+0200\n" "PO-Revision-Date: 2018-06-04 12:48+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Portuguese \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: pt\n" #: data/com.github.gkarsay.parlatype.appdata.xml.in:7 #: data/com.github.gkarsay.parlatype.desktop.in:4 src/pt-app.c:189 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/com.github.gkarsay.parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/com.github.gkarsay.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/com.github.gkarsay.parlatype.appdata.xml.in:24 msgid "Gabor Karsay" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:5 msgid "Transcription utility" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:6 msgid "Transcription;" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:8 msgid "com.github.gkarsay.parlatype" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:6 msgid "LibreOffice/Parlatype Helpers" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:7 msgid "Control Parlatype using LibreOffice macros" msgstr "" #: src/pt-app.c:43 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:52 msgid "Enable automatic speech recognition" msgstr "" #: src/pt-app.c:60 msgid "Use internal textpad for automatic speech recognition" msgstr "" #: src/pt-app.c:83 msgid "Open Audio File" msgstr "Abrir Ficheiro Áudio" #: src/pt-app.c:86 src/resources/window-headerbar.ui:12 msgid "_Open" msgstr "_Abrir" #: src/pt-app.c:87 src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Cancelar" #: src/pt-app.c:106 msgid "Audio files" msgstr "Ficheiros áudio" #: src/pt-app.c:107 msgid "All files" msgstr "Todos os ficheiros" #. Translators: %s is a detailed error message #: src/pt-app.c:156 #, 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:174 msgid "Including code from other projects:" msgstr "" #: src/pt-app.c:192 msgid "A basic transcription utility" msgstr "" #: src/pt-app.c:196 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:321 msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:194 msgid "The folder contains no acoustic model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:301 msgid "Please select …" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:340 msgid "Missing parameters" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:384 msgid "Timed out" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:386 msgid "" "Scanning the folder took too long. Please make sure to open a folder with " "model data only." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:390 msgid "Scanning the folder failed" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:406 msgid "Nothing found" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:408 msgid "This folder doesn’t contain a suitable model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:459 msgid "" "The folder contains no language model. Please choose a language model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:468 msgid "The folder contains several language models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:479 msgid "" "The folder contains no dictionary. Please choose a dictionary from another " "folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:488 msgid "The folder contains several dictionaries." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:498 msgid "" "The folder contains no acoustic model. Please choose an acoustic model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:507 msgid "The folder contains several acoustic models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:625 msgid "Download model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:633 msgid "Finish configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:210 msgid "Select output for automatic speech recognition" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:212 msgid "Please open and switch focus to a word processor." 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:98 src/pt-preferences.c:108 #: src/pt-preferences.c:118 msgid "second" msgid_plural "seconds" msgstr[0] "segundo" msgstr[1] "segundos" #: src/pt-preferences.c:289 msgid "Deleting configuration" msgstr "" #: src/pt-preferences.c:290 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-window.c:219 #, c-format msgid "Found %s" msgstr "" #: src/pt-window.c:220 msgid "Press “Play” to start automatic speech recognition." msgstr "" #: src/pt-window.c:423 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:440 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:459 msgid "Pause" msgstr "Pausa" #: src/pt-window.c:462 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:469 msgid "Start playing" msgstr "Começar a tocar" #: src/pt-window.c:505 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:507 src/pt-window.c:1246 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1162 #, 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 "" #: src/pt-window.c:1165 msgid "Fatal error" msgstr "Erro fatal" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:15 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:30 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:45 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:59 msgid "When you are finished, specify the folder with the model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:96 msgid "Language model" msgstr "" #: src/resources/asr-assistant.ui:125 msgid "Select language model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:157 msgid "Dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:186 msgid "Select dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:218 msgid "Acoustic model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:248 msgid "Select acoustic model folder" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:285 msgid "Setup is completed. Please give this configuration a name:" msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:46 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:15 msgid "General" 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:270 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:27 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 "Manual transcription" msgstr "" #: src/resources/menus.ui:12 msgid "Automatic transcription" msgstr "" #: src/resources/menus.ui:19 msgid "Preferences" msgstr "Preferências" #: src/resources/menus.ui:23 msgid "_Keyboard Shortcuts" msgstr "" #: src/resources/menus.ui:31 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:38 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:42 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:140 msgid "_Pixels per second:" msgstr "" #: src/resources/preferences.ui:170 msgid "Show _time scale" msgstr "" #. Resolution of the waveform image #: src/resources/preferences.ui:188 msgid "Resolution" msgstr "Resolução" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:203 msgid "Display" msgstr "Visualização" #: src/resources/preferences.ui:216 msgid "_Moving cursor" msgstr "" #: src/resources/preferences.ui:233 msgid "_Fixed cursor" msgstr "" #: src/resources/preferences.ui:287 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:389 msgid "Jump _forward:" msgstr "" #: src/resources/preferences.ui:403 msgid "Jump _back:" msgstr "" #: src/resources/preferences.ui:417 msgid "Jump back on _pause:" msgstr "" #: src/resources/preferences.ui:440 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:454 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:473 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:487 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:509 msgid "Controls" msgstr "Controlos" #: src/resources/preferences.ui:552 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:565 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:583 msgid "Precision" msgstr "" #: src/resources/preferences.ui:599 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:615 msgid "Examples" msgstr "" #: src/resources/preferences.ui:657 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:689 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:732 msgid "Timestamps" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:863 msgid "Language model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:890 msgid "Dictionary:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:917 msgid "Acoustic model folder:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:965 msgid "There is no configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:975 msgid "Add a configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:1004 msgid "Speech recognition" msgstr "" #: src/resources/preferences.ui:1022 msgid "Remember _size" msgstr "" #: src/resources/preferences.ui:1037 msgid "Remember _position" msgstr "" #: src/resources/preferences.ui:1052 msgid "Start on _top" msgstr "" #: src/resources/preferences.ui:1074 msgid "Window" msgstr "Janela" #: src/resources/window.ui:142 msgid "_Play" msgstr "_Reproduzir" #: src/resources/window.ui:312 msgid "Speed:" msgstr "Velocidade:" #: src/resources/window-headerbar.ui:17 msgid "Open a file" msgstr "Abrir um ficheiro" parlatype-1.6.2/po/pt_BR.po000066400000000000000000000422451353244124700155210ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 21:09+0200\n" "PO-Revision-Date: 2018-06-04 12:45+0000\n" "Last-Translator: André decko de Brito \n" "Language-Team: Brazilian Portuguese \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: pt_BR\n" #: data/com.github.gkarsay.parlatype.appdata.xml.in:7 #: data/com.github.gkarsay.parlatype.desktop.in:4 src/pt-app.c:189 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/com.github.gkarsay.parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/com.github.gkarsay.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/com.github.gkarsay.parlatype.appdata.xml.in:24 msgid "Gabor Karsay" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Utilitário de transcrição" #: data/com.github.gkarsay.parlatype.desktop.in:6 msgid "Transcription;" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:8 msgid "com.github.gkarsay.parlatype" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:6 msgid "LibreOffice/Parlatype Helpers" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:7 msgid "Control Parlatype using LibreOffice macros" msgstr "" #: src/pt-app.c:43 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:52 msgid "Enable automatic speech recognition" msgstr "" #: src/pt-app.c:60 msgid "Use internal textpad for automatic speech recognition" msgstr "" #: src/pt-app.c:83 msgid "Open Audio File" msgstr "Abrir Arquivo de Áudio" #: src/pt-app.c:86 src/resources/window-headerbar.ui:12 msgid "_Open" msgstr "_Abrir" #: src/pt-app.c:87 src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Cancelar" #: src/pt-app.c:106 msgid "Audio files" msgstr "Arquivos de áudio" #: src/pt-app.c:107 msgid "All files" msgstr "Todos os arquivos" #. Translators: %s is a detailed error message #: src/pt-app.c:156 #, 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:174 msgid "Including code from other projects:" msgstr "Incluindo código de outros projetos:" #: src/pt-app.c:192 msgid "A basic transcription utility" msgstr "Um utilitário basico de transcrição" #: src/pt-app.c:196 msgid "translator-credits" msgstr "" "André \"decko\" de Brito \n" "Launchpad Contributions:\n" " André decko de Brito https://launchpad.net/~brito-afa" #: src/pt-app.c:321 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" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:194 msgid "The folder contains no acoustic model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:301 msgid "Please select …" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:340 msgid "Missing parameters" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:384 msgid "Timed out" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:386 msgid "" "Scanning the folder took too long. Please make sure to open a folder with " "model data only." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:390 msgid "Scanning the folder failed" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:406 msgid "Nothing found" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:408 msgid "This folder doesn’t contain a suitable model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:459 msgid "" "The folder contains no language model. Please choose a language model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:468 msgid "The folder contains several language models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:479 msgid "" "The folder contains no dictionary. Please choose a dictionary from another " "folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:488 msgid "The folder contains several dictionaries." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:498 msgid "" "The folder contains no acoustic model. Please choose an acoustic model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:507 msgid "The folder contains several acoustic models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:625 msgid "Download model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:633 msgid "Finish configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:210 msgid "Select output for automatic speech recognition" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:212 msgid "Please open and switch focus to a word processor." 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:98 src/pt-preferences.c:108 #: src/pt-preferences.c:118 msgid "second" msgid_plural "seconds" msgstr[0] "segundo" msgstr[1] "segundos" #: src/pt-preferences.c:289 msgid "Deleting configuration" msgstr "" #: src/pt-preferences.c:290 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-window.c:219 #, c-format msgid "Found %s" msgstr "" #: src/pt-window.c:220 msgid "Press “Play” to start automatic speech recognition." msgstr "" #: src/pt-window.c:423 #, 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:440 #, 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:459 msgid "Pause" msgstr "Pausa" #: src/pt-window.c:462 #, 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:469 msgid "Start playing" msgstr "Começar a tocar" #: src/pt-window.c:505 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:507 src/pt-window.c:1246 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1162 #, 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 "" #: src/pt-window.c:1165 msgid "Fatal error" msgstr "Erro fatal" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:15 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:30 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:45 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:59 msgid "When you are finished, specify the folder with the model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:96 msgid "Language model" msgstr "" #: src/resources/asr-assistant.ui:125 msgid "Select language model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:157 msgid "Dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:186 msgid "Select dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:218 msgid "Acoustic model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:248 msgid "Select acoustic model folder" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:285 msgid "Setup is completed. Please give this configuration a name:" msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:46 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 "Ir para a posição:" #: src/resources/help-overlay.ui:15 msgid "General" 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:270 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:27 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 "Manual transcription" msgstr "" #: src/resources/menus.ui:12 msgid "Automatic transcription" msgstr "" #: src/resources/menus.ui:19 msgid "Preferences" msgstr "Preferências" #: src/resources/menus.ui:23 msgid "_Keyboard Shortcuts" msgstr "" #: src/resources/menus.ui:31 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:38 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:42 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ências do Parlatype" #: src/resources/preferences.ui:140 msgid "_Pixels per second:" msgstr "_Pixels por segundo:" #: src/resources/preferences.ui:170 msgid "Show _time scale" msgstr "Mostrar escala de _tempo" #. Resolution of the waveform image #: src/resources/preferences.ui:188 msgid "Resolution" msgstr "Resolução" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:203 msgid "Display" msgstr "Visualização" #: src/resources/preferences.ui:216 msgid "_Moving cursor" msgstr "Cursor _movél" #: src/resources/preferences.ui:233 msgid "_Fixed cursor" msgstr "Cursor _fixo" #: src/resources/preferences.ui:287 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:389 msgid "Jump _forward:" msgstr "A_vançar:" #: src/resources/preferences.ui:403 msgid "Jump _back:" msgstr "Volta_r:" #: src/resources/preferences.ui:417 msgid "Jump back on _pause:" msgstr "Voltar quando _pausar:" #: src/resources/preferences.ui:440 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:454 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:473 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:487 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:509 msgid "Controls" msgstr "Controles" #: src/resources/preferences.ui:552 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:565 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:583 msgid "Precision" msgstr "" #: src/resources/preferences.ui:599 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:615 msgid "Examples" msgstr "" #: src/resources/preferences.ui:657 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:689 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:732 msgid "Timestamps" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:863 msgid "Language model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:890 msgid "Dictionary:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:917 msgid "Acoustic model folder:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:965 msgid "There is no configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:975 msgid "Add a configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:1004 msgid "Speech recognition" msgstr "" #: src/resources/preferences.ui:1022 msgid "Remember _size" msgstr "" #: src/resources/preferences.ui:1037 msgid "Remember _position" msgstr "Lembrar _posição" #: src/resources/preferences.ui:1052 msgid "Start on _top" msgstr "Iniciar no _topo" #: src/resources/preferences.ui:1074 msgid "Window" msgstr "Janela" #: src/resources/window.ui:142 msgid "_Play" msgstr "_Reproduzir" #: src/resources/window.ui:312 msgid "Speed:" msgstr "Velocidade:" #: src/resources/window-headerbar.ui:17 msgid "Open a file" msgstr "Abrir um arquivo" parlatype-1.6.2/po/sk.po000066400000000000000000000404411353244124700151240ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 21:09+0200\n" "PO-Revision-Date: 2018-06-04 12:48+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Slovak \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: sk\n" #: data/com.github.gkarsay.parlatype.appdata.xml.in:7 #: data/com.github.gkarsay.parlatype.desktop.in:4 src/pt-app.c:189 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "" #: data/com.github.gkarsay.parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/com.github.gkarsay.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/com.github.gkarsay.parlatype.appdata.xml.in:24 msgid "Gabor Karsay" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:5 msgid "Transcription utility" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:6 msgid "Transcription;" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:8 msgid "com.github.gkarsay.parlatype" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:6 msgid "LibreOffice/Parlatype Helpers" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:7 msgid "Control Parlatype using LibreOffice macros" msgstr "" #: src/pt-app.c:43 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:52 msgid "Enable automatic speech recognition" msgstr "" #: src/pt-app.c:60 msgid "Use internal textpad for automatic speech recognition" msgstr "" #: src/pt-app.c:83 msgid "Open Audio File" msgstr "" #: src/pt-app.c:86 src/resources/window-headerbar.ui:12 msgid "_Open" msgstr "_Otvoriť" #: src/pt-app.c:87 src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Zrušiť" #: src/pt-app.c:106 msgid "Audio files" msgstr "" #: src/pt-app.c:107 msgid "All files" msgstr "" #. Translators: %s is a detailed error message #: src/pt-app.c:156 #, 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:174 msgid "Including code from other projects:" msgstr "" #: src/pt-app.c:192 msgid "A basic transcription utility" msgstr "" #: src/pt-app.c:196 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Gabor Karsay https://launchpad.net/~gabor-karsay" #: src/pt-app.c:321 msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:194 msgid "The folder contains no acoustic model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:301 msgid "Please select …" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:340 msgid "Missing parameters" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:384 msgid "Timed out" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:386 msgid "" "Scanning the folder took too long. Please make sure to open a folder with " "model data only." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:390 msgid "Scanning the folder failed" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:406 msgid "Nothing found" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:408 msgid "This folder doesn’t contain a suitable model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:459 msgid "" "The folder contains no language model. Please choose a language model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:468 msgid "The folder contains several language models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:479 msgid "" "The folder contains no dictionary. Please choose a dictionary from another " "folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:488 msgid "The folder contains several dictionaries." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:498 msgid "" "The folder contains no acoustic model. Please choose an acoustic model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:507 msgid "The folder contains several acoustic models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:625 msgid "Download model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:633 msgid "Finish configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:210 msgid "Select output for automatic speech recognition" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:212 msgid "Please open and switch focus to a word processor." 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:98 src/pt-preferences.c:108 #: src/pt-preferences.c:118 msgid "second" msgid_plural "seconds" msgstr[0] "" msgstr[1] "" #: src/pt-preferences.c:289 msgid "Deleting configuration" msgstr "" #: src/pt-preferences.c:290 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-window.c:219 #, c-format msgid "Found %s" msgstr "" #: src/pt-window.c:220 msgid "Press “Play” to start automatic speech recognition." msgstr "" #: src/pt-window.c:423 #, c-format msgid "Jump back 1 second" msgid_plural "Jump back %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:440 #, c-format msgid "Jump forward 1 second" msgid_plural "Jump forward %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:459 msgid "Pause" msgstr "" #: src/pt-window.c:462 #, c-format msgid "Pause and rewind 1 second" msgid_plural "Pause and rewind %d seconds" msgstr[0] "" msgstr[1] "" #: src/pt-window.c:469 msgid "Start playing" msgstr "" #: src/pt-window.c:505 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:507 src/pt-window.c:1246 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1162 #, 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 "" #: src/pt-window.c:1165 msgid "Fatal error" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:15 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:30 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:45 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:59 msgid "When you are finished, specify the folder with the model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:96 msgid "Language model" msgstr "" #: src/resources/asr-assistant.ui:125 msgid "Select language model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:157 msgid "Dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:186 msgid "Select dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:218 msgid "Acoustic model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:248 msgid "Select acoustic model folder" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:285 msgid "Setup is completed. Please give this configuration a name:" msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:46 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:15 msgid "General" 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:270 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:27 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 "Manual transcription" msgstr "" #: src/resources/menus.ui:12 msgid "Automatic transcription" msgstr "" #: src/resources/menus.ui:19 msgid "Preferences" msgstr "" #: src/resources/menus.ui:23 msgid "_Keyboard Shortcuts" msgstr "" #: src/resources/menus.ui:31 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:38 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:42 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:140 msgid "_Pixels per second:" msgstr "" #: src/resources/preferences.ui:170 msgid "Show _time scale" msgstr "" #. Resolution of the waveform image #: src/resources/preferences.ui:188 msgid "Resolution" msgstr "" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:203 msgid "Display" msgstr "" #: src/resources/preferences.ui:216 msgid "_Moving cursor" msgstr "" #: src/resources/preferences.ui:233 msgid "_Fixed cursor" msgstr "" #: src/resources/preferences.ui:287 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:389 msgid "Jump _forward:" msgstr "" #: src/resources/preferences.ui:403 msgid "Jump _back:" msgstr "" #: src/resources/preferences.ui:417 msgid "Jump back on _pause:" msgstr "" #: src/resources/preferences.ui:440 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:454 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:473 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:487 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:509 msgid "Controls" msgstr "" #: src/resources/preferences.ui:552 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:565 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:583 msgid "Precision" msgstr "" #: src/resources/preferences.ui:599 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:615 msgid "Examples" msgstr "" #: src/resources/preferences.ui:657 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:689 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:732 msgid "Timestamps" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:863 msgid "Language model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:890 msgid "Dictionary:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:917 msgid "Acoustic model folder:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:965 msgid "There is no configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:975 msgid "Add a configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:1004 msgid "Speech recognition" msgstr "" #: src/resources/preferences.ui:1022 msgid "Remember _size" msgstr "" #: src/resources/preferences.ui:1037 msgid "Remember _position" msgstr "" #: src/resources/preferences.ui:1052 msgid "Start on _top" msgstr "" #: src/resources/preferences.ui:1074 msgid "Window" msgstr "" #: src/resources/window.ui:142 msgid "_Play" msgstr "_Hrať" #: src/resources/window.ui:312 msgid "Speed:" msgstr "" #: src/resources/window-headerbar.ui:17 msgid "Open a file" msgstr "" parlatype-1.6.2/po/sr.po000066400000000000000000000432251353244124700151360ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 21:09+0200\n" "PO-Revision-Date: 2019-05-27 17:12+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Serbian \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: sr\n" #: data/com.github.gkarsay.parlatype.appdata.xml.in:7 #: data/com.github.gkarsay.parlatype.desktop.in:4 src/pt-app.c:189 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Парлатајп" #: data/com.github.gkarsay.parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/com.github.gkarsay.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/com.github.gkarsay.parlatype.appdata.xml.in:24 msgid "Gabor Karsay" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Алат за транскрипцију." #: data/com.github.gkarsay.parlatype.desktop.in:6 msgid "Transcription;" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:8 msgid "com.github.gkarsay.parlatype" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:6 msgid "LibreOffice/Parlatype Helpers" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:7 msgid "Control Parlatype using LibreOffice macros" msgstr "" #: src/pt-app.c:43 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:52 msgid "Enable automatic speech recognition" msgstr "" #: src/pt-app.c:60 msgid "Use internal textpad for automatic speech recognition" msgstr "" #: src/pt-app.c:83 msgid "Open Audio File" msgstr "Отвори звучни фајл" #: src/pt-app.c:86 src/resources/window-headerbar.ui:12 msgid "_Open" msgstr "_Отвори" #: src/pt-app.c:87 src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Откажи" #: src/pt-app.c:106 msgid "Audio files" msgstr "Звучни фајлови" #: src/pt-app.c:107 msgid "All files" msgstr "Сви фајлови" #. Translators: %s is a detailed error message #: src/pt-app.c:156 #, 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:174 msgid "Including code from other projects:" msgstr "Код из осталих пројеката:" #: src/pt-app.c:192 msgid "A basic transcription utility" msgstr "Основни алат за транскрипцију" #: src/pt-app.c:196 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Gabor Karsay https://launchpad.net/~gabor-karsay\n" " Томица Кораћ https://launchpad.net/~tevs-kapoan" #: src/pt-app.c:321 msgid "" "Warning: Parlatype handles only one file at a time. The other files are " "ignored.\n" msgstr "" "Упозорење: Парлатајп ради само са једним фајлом истовремено. Други фајлови " "се занемарују.\n" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:194 msgid "The folder contains no acoustic model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:301 msgid "Please select …" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:340 msgid "Missing parameters" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:384 msgid "Timed out" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:386 msgid "" "Scanning the folder took too long. Please make sure to open a folder with " "model data only." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:390 msgid "Scanning the folder failed" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:406 msgid "Nothing found" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:408 msgid "This folder doesn’t contain a suitable model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:459 msgid "" "The folder contains no language model. Please choose a language model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:468 msgid "The folder contains several language models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:479 msgid "" "The folder contains no dictionary. Please choose a dictionary from another " "folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:488 msgid "The folder contains several dictionaries." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:498 msgid "" "The folder contains no acoustic model. Please choose an acoustic model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:507 msgid "The folder contains several acoustic models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:625 msgid "Download model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:633 msgid "Finish configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:210 msgid "Select output for automatic speech recognition" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:212 msgid "Please open and switch focus to a word processor." 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:98 src/pt-preferences.c:108 #: src/pt-preferences.c:118 msgid "second" msgid_plural "seconds" msgstr[0] "секунду" msgstr[1] "sekundi" msgstr[2] "sekundi" #: src/pt-preferences.c:289 msgid "Deleting configuration" msgstr "" #: src/pt-preferences.c:290 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-window.c:219 #, c-format msgid "Found %s" msgstr "" #: src/pt-window.c:220 msgid "Press “Play” to start automatic speech recognition." msgstr "" #: src/pt-window.c:423 #, 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:440 #, 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:459 msgid "Pause" msgstr "Pauza" #: src/pt-window.c:462 #, 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:469 msgid "Start playing" msgstr "Покрени" #: src/pt-window.c:505 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:507 src/pt-window.c:1246 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1162 #, 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 "" #: src/pt-window.c:1165 msgid "Fatal error" msgstr "Кобна грешка" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:15 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:30 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:45 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:59 msgid "When you are finished, specify the folder with the model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:96 msgid "Language model" msgstr "" #: src/resources/asr-assistant.ui:125 msgid "Select language model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:157 msgid "Dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:186 msgid "Select dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:218 msgid "Acoustic model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:248 msgid "Select acoustic model folder" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:285 msgid "Setup is completed. Please give this configuration a name:" msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:46 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:15 msgid "General" 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:270 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:27 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 "Manual transcription" msgstr "" #: src/resources/menus.ui:12 msgid "Automatic transcription" msgstr "" #: src/resources/menus.ui:19 msgid "Preferences" msgstr "Поставке" #: src/resources/menus.ui:23 msgid "_Keyboard Shortcuts" msgstr "" #: src/resources/menus.ui:31 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:38 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:42 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:140 msgid "_Pixels per second:" msgstr "_Пиксела по секунди" #: src/resources/preferences.ui:170 msgid "Show _time scale" msgstr "" #. Resolution of the waveform image #: src/resources/preferences.ui:188 msgid "Resolution" msgstr "" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:203 msgid "Display" msgstr "" #: src/resources/preferences.ui:216 msgid "_Moving cursor" msgstr "" #: src/resources/preferences.ui:233 msgid "_Fixed cursor" msgstr "" #: src/resources/preferences.ui:287 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:389 msgid "Jump _forward:" msgstr "" #: src/resources/preferences.ui:403 msgid "Jump _back:" msgstr "" #: src/resources/preferences.ui:417 msgid "Jump back on _pause:" msgstr "" #: src/resources/preferences.ui:440 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:454 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:473 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:487 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:509 msgid "Controls" msgstr "" #: src/resources/preferences.ui:552 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:565 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:583 msgid "Precision" msgstr "" #: src/resources/preferences.ui:599 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:615 msgid "Examples" msgstr "" #: src/resources/preferences.ui:657 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:689 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:732 msgid "Timestamps" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:863 msgid "Language model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:890 msgid "Dictionary:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:917 msgid "Acoustic model folder:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:965 msgid "There is no configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:975 msgid "Add a configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:1004 msgid "Speech recognition" msgstr "" #: src/resources/preferences.ui:1022 msgid "Remember _size" msgstr "" #: src/resources/preferences.ui:1037 msgid "Remember _position" msgstr "" #: src/resources/preferences.ui:1052 msgid "Start on _top" msgstr "" #: src/resources/preferences.ui:1074 msgid "Window" msgstr "" #: src/resources/window.ui:142 msgid "_Play" msgstr "_Пусти" #: src/resources/window.ui:312 msgid "Speed:" msgstr "" #: src/resources/window-headerbar.ui:17 msgid "Open a file" msgstr "" parlatype-1.6.2/po/sv.po000066400000000000000000000426221353244124700151420ustar00rootroot00000000000000# 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: https://github.com/gkarsay/parlatype/issues\n" "POT-Creation-Date: 2019-05-27 21:09+0200\n" "PO-Revision-Date: 2018-06-04 12:48+0000\n" "Last-Translator: Gabor Karsay \n" "Language-Team: Swedish \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: 2019-07-05 10:56+0000\n" "X-Generator: Launchpad (build 19007)\n" "Language: sv\n" #: data/com.github.gkarsay.parlatype.appdata.xml.in:7 #: data/com.github.gkarsay.parlatype.desktop.in:4 src/pt-app.c:189 #: src/resources/window.ui:32 msgid "Parlatype" msgstr "Parlatype" #: data/com.github.gkarsay.parlatype.appdata.xml.in:8 msgid "Media player for speech transcription" msgstr "" #: data/com.github.gkarsay.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/com.github.gkarsay.parlatype.appdata.xml.in:24 msgid "Gabor Karsay" msgstr "" #: data/com.github.gkarsay.parlatype.desktop.in:5 msgid "Transcription utility" msgstr "Transkriberingsverktyg" #: data/com.github.gkarsay.parlatype.desktop.in:6 msgid "Transcription;" msgstr "Transkribering;" #: data/com.github.gkarsay.parlatype.desktop.in:8 msgid "com.github.gkarsay.parlatype" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:6 msgid "LibreOffice/Parlatype Helpers" msgstr "" #: libreoffice/com.github.gkarsay.parlatype.libreoffice-helpers.metainfo.xml.in:7 msgid "Control Parlatype using LibreOffice macros" msgstr "Styr Parlatype med LibreOffice-makron" #: src/pt-app.c:43 msgid "Show the application’s version" msgstr "" #: src/pt-app.c:52 msgid "Enable automatic speech recognition" msgstr "" #: src/pt-app.c:60 msgid "Use internal textpad for automatic speech recognition" msgstr "" #: src/pt-app.c:83 msgid "Open Audio File" msgstr "Öppna ljudfil" #: src/pt-app.c:86 src/resources/window-headerbar.ui:12 msgid "_Open" msgstr "_Öppna" #: src/pt-app.c:87 src/resources/goto-dialog.ui:26 msgid "_Cancel" msgstr "_Avbryt" #: src/pt-app.c:106 msgid "Audio files" msgstr "Ljudfiler" #: src/pt-app.c:107 msgid "All files" msgstr "Alla filer" #. Translators: %s is a detailed error message #: src/pt-app.c:156 #, 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:174 msgid "Including code from other projects:" msgstr "Med kod från andra projekt:" #: src/pt-app.c:192 msgid "A basic transcription utility" msgstr "Ett enkelt transkriberingsverktyg" #: src/pt-app.c:196 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:321 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" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:194 msgid "The folder contains no acoustic model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:301 msgid "Please select …" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:340 msgid "Missing parameters" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:384 msgid "Timed out" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:386 msgid "" "Scanning the folder took too long. Please make sure to open a folder with " "model data only." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:390 msgid "Scanning the folder failed" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:406 msgid "Nothing found" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:408 msgid "This folder doesn’t contain a suitable model." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:459 msgid "" "The folder contains no language model. Please choose a language model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:468 msgid "The folder contains several language models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:479 msgid "" "The folder contains no dictionary. Please choose a dictionary from another " "folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:488 msgid "The folder contains several dictionaries." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:498 msgid "" "The folder contains no acoustic model. Please choose an acoustic model from " "another folder." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:507 msgid "The folder contains several acoustic models." msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:625 msgid "Download model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-assistant.c:633 msgid "Finish configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:210 msgid "Select output for automatic speech recognition" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/pt-asr-output.c:212 msgid "Please open and switch focus to a word processor." 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:98 src/pt-preferences.c:108 #: src/pt-preferences.c:118 msgid "second" msgid_plural "seconds" msgstr[0] "sekund" msgstr[1] "sekunder" #: src/pt-preferences.c:289 msgid "Deleting configuration" msgstr "" #: src/pt-preferences.c:290 #, c-format msgid "Do you really want to delete “%s”?" msgstr "" #: src/pt-window.c:219 #, c-format msgid "Found %s" msgstr "" #: src/pt-window.c:220 msgid "Press “Play” to start automatic speech recognition." msgstr "" #: src/pt-window.c:423 #, 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:440 #, 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:459 msgid "Pause" msgstr "Pausa" #: src/pt-window.c:462 #, 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:469 msgid "Start playing" msgstr "Spela upp" #: src/pt-window.c:505 #, c-format msgid "Go to time in clipboard: %s" msgstr "" #: src/pt-window.c:507 src/pt-window.c:1246 msgid "Go to time in clipboard" msgstr "" #: src/pt-window.c:1162 #, 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 "" #: src/pt-window.c:1165 msgid "Fatal error" msgstr "Allvarligt fel" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:15 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:30 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:45 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 "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:59 msgid "When you are finished, specify the folder with the model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:96 msgid "Language model" msgstr "" #: src/resources/asr-assistant.ui:125 msgid "Select language model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:157 msgid "Dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:186 msgid "Select dictionary" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:218 msgid "Acoustic model" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:248 msgid "Select acoustic model folder" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/asr-assistant.ui:285 msgid "Setup is completed. Please give this configuration a name:" msgstr "" #: src/resources/goto-dialog.ui:13 src/resources/menus.ui:46 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:15 msgid "General" msgstr "Generellt" #: 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:270 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:27 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 "Manual transcription" msgstr "" #: src/resources/menus.ui:12 msgid "Automatic transcription" msgstr "" #: src/resources/menus.ui:19 msgid "Preferences" msgstr "Inställningar" #: src/resources/menus.ui:23 msgid "_Keyboard Shortcuts" msgstr "_Tangentbordsgenvägar" #: src/resources/menus.ui:31 msgid "About Parlatype" msgstr "" #: src/resources/menus.ui:38 msgid "Copy time to clipboard" msgstr "" #: src/resources/menus.ui:42 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:140 msgid "_Pixels per second:" msgstr "_Pixlar per sekund:" #: src/resources/preferences.ui:170 msgid "Show _time scale" msgstr "_Visa tidsskala" #. Resolution of the waveform image #: src/resources/preferences.ui:188 msgid "Resolution" msgstr "Upplösning" #. A section in preferences, how to display the waveform. #: src/resources/preferences.ui:203 msgid "Display" msgstr "Utseende" #: src/resources/preferences.ui:216 msgid "_Moving cursor" msgstr "_Rörlig pekare" #: src/resources/preferences.ui:233 msgid "_Fixed cursor" msgstr "_Fast pekare" #: src/resources/preferences.ui:287 msgid "Jumps" msgstr "" #: src/resources/preferences.ui:389 msgid "Jump _forward:" msgstr "Spola _framåt" #: src/resources/preferences.ui:403 msgid "Jump _back:" msgstr "Spola _tillbaka:" #: src/resources/preferences.ui:417 msgid "Jump back on _pause:" msgstr "Spola tillbaka vid pause:" #: src/resources/preferences.ui:440 msgid "Pressing “Play” at the end of file" msgstr "" #: src/resources/preferences.ui:454 msgid "Replay file" msgstr "" #: src/resources/preferences.ui:473 msgid "Pressing “Play” at the end of selection" msgstr "" #: src/resources/preferences.ui:487 msgid "Replay selection" msgstr "" #: src/resources/preferences.ui:509 msgid "Controls" msgstr "Kontroller" #: src/resources/preferences.ui:552 msgid "Hours and zeroes" msgstr "" #: src/resources/preferences.ui:565 msgid "Always show hours and leading zeroes" msgstr "" #: src/resources/preferences.ui:583 msgid "Precision" msgstr "" #: src/resources/preferences.ui:599 msgid "Characters around timestamps" msgstr "" #: src/resources/preferences.ui:615 msgid "Examples" msgstr "" #: src/resources/preferences.ui:657 msgid "Precision:" msgstr "" #: src/resources/preferences.ui:689 msgid "Fraction separator:" msgstr "" #: src/resources/preferences.ui:732 msgid "Timestamps" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:863 msgid "Language model:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:890 msgid "Dictionary:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:917 msgid "Acoustic model folder:" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:965 msgid "There is no configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:975 msgid "Add a configuration" msgstr "" #. Translators: This feature is disabled by default, its translation has low priority. #: src/resources/preferences.ui:1004 msgid "Speech recognition" msgstr "" #: src/resources/preferences.ui:1022 msgid "Remember _size" msgstr "Kom ihåg _storlek" #: src/resources/preferences.ui:1037 msgid "Remember _position" msgstr "Kom ihåg _position" #: src/resources/preferences.ui:1052 msgid "Start on _top" msgstr "Starta med _fokus" #: src/resources/preferences.ui:1074 msgid "Window" msgstr "Fönster" #: src/resources/window.ui:142 msgid "_Play" msgstr "Spela _upp" #: src/resources/window.ui:312 msgid "Speed:" msgstr "Hastighet:" #: src/resources/window-headerbar.ui:17 msgid "Open a file" msgstr "Öppna en fil" parlatype-1.6.2/src/000077500000000000000000000000001353244124700143155ustar00rootroot00000000000000parlatype-1.6.2/src/main.c000066400000000000000000000022301353244124700154020ustar00rootroot00000000000000/* 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, LOCALEDIR); bind_textdomain_codeset (PACKAGE, "UTF-8"); textdomain (PACKAGE); 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-1.6.2/src/meson.build000066400000000000000000000014441353244124700164620ustar00rootroot00000000000000gresources = 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-assistant.c', 'pt-asr-assistant.h', 'pt-asr-assistant-helpers.c', 'pt-asr-assistant-helpers.h', 'pt-asr-output.c', 'pt-asr-output.h', 'pt-asr-settings.c', 'pt-asr-settings.h', 'pt-dbus-service.c', 'pt-dbus-service.h', 'pt-goto-dialog.c', 'pt-goto-dialog.h', 'pt-mediakeys.c', 'pt-mediakeys.h', 'pt-preferences.c', 'pt-preferences.h', 'pt-window.c', 'pt-window.h', 'pt-window-dnd.c', 'pt-window-dnd.h', 'pt-window-private.h', ] executable('parlatype', src, link_with: libparlatype, include_directories : conf_inc, install: true, dependencies: [ gtk, gmodule, atspi ], ) parlatype-1.6.2/src/pt-app.c000066400000000000000000000260511353244124700156660ustar00rootroot00000000000000/* 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 "pt-preferences.h" #include "pt-window.h" #include "pt-app.h" struct _PtAppPrivate { gboolean asr; gboolean atspi; PtAsrSettings *asr_settings; }; 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 }, #ifdef HAVE_ASR { "with-asr", 'a', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, NULL, N_("Enable automatic speech recognition"), NULL }, { "textpad", 't', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, NULL, N_("Use internal textpad for automatic speech recognition"), NULL }, #endif { NULL } }; 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; gchar *uri = NULL; 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")); gtk_file_filter_add_mime_type (filter_audio, "audio/*"); 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); if (gtk_native_dialog_run (GTK_NATIVE_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog)); } g_object_unref (dir); g_object_unref (dialog); if (uri) { pt_window_open_file (PT_WINDOW (win), uri); g_free (uri); } } 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; win = gtk_application_get_active_window (app); GError *error = NULL; gchar *errmsg; gtk_show_uri_on_window ( win, "help:com.github.gkarsay.parlatype", 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); } } 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–2019", "comments", _("A basic transcription utility"), "logo-icon-name", "com.github.gkarsay.parlatype", "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 } }; PtAsrSettings* pt_app_get_asr_settings (PtApp *app) { g_assert (PT_IS_APP (app)); return app->priv->asr_settings; } gboolean pt_app_get_atspi (PtApp *app) { g_assert (PT_IS_APP (app)); return app->priv->atspi; } gboolean pt_app_get_asr (PtApp *app) { g_assert (PT_IS_APP (app)); return app->priv->asr; } static void pt_app_startup (GApplication *app) { g_application_set_resource_base_path (app, "/com/github/gkarsay/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 }; 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); /* Load custom css */ GtkCssProvider *provider; provider = gtk_css_provider_new (); gtk_css_provider_load_from_resource (provider, "/com/github/gkarsay/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 *app) { GList *windows; PtWindow *win; windows = gtk_application_get_windows (GTK_APPLICATION (app)); if (windows) win = PT_WINDOW (windows->data); else win = pt_window_new (PT_APP (app)); 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; pt_app_activate (app); win = gtk_application_get_active_window (GTK_APPLICATION (app)); 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]); pt_window_open_file (PT_WINDOW (win), uri); g_free (uri); } static gint pt_app_handle_local_options (GApplication *application, GVariantDict *options) { PtApp *app = PT_APP (application); if (g_variant_dict_contains (options, "version")) { g_print ("%s %s\n", PACKAGE, VERSION); return 0; } if (g_variant_dict_contains (options, "with-asr")) { app->priv->asr = TRUE; } if (g_variant_dict_contains (options, "textpad")) { app->priv->atspi = FALSE; } return -1; } static gchar* get_asr_settings_filename (void) { const gchar *userdir; gchar *configdir; GFile *create_dir; gchar *filename; userdir = g_get_user_data_dir (); configdir = g_build_path ("/", userdir, PACKAGE, NULL); create_dir = g_file_new_for_path (configdir); g_file_make_directory (create_dir, NULL, NULL); filename = g_build_filename (configdir, "asr.ini", NULL); g_free (configdir); g_object_unref (create_dir); return filename; } static gboolean is_flatpak (void) { /* Flatpak sandboxes have a file ".flatpak-info" in their filesystem root. It's a keyfile, an example how to read is get_flatpak_information() in https://gitlab.gnome.org/GNOME/recipes/blob/master/src/gr-about-dialog.c */ return (g_file_test ("/.flatpak-info", G_FILE_TEST_EXISTS)); } static void pt_app_init (PtApp *app) { app->priv = pt_app_get_instance_private (app); g_application_add_main_option_entries (G_APPLICATION (app), options); /* In Flatpak's sandbox ATSPI doesn't work */ if (is_flatpak ()) app->priv->atspi = FALSE; else app->priv->atspi = TRUE; app->priv->asr = FALSE; gchar *asr_settings_filename; asr_settings_filename = get_asr_settings_filename (); app->priv->asr_settings = pt_asr_settings_new (asr_settings_filename); g_free (asr_settings_filename); } static void pt_app_finalize (GObject *object) { PtApp *app = PT_APP (object); g_clear_object (&app->priv->asr_settings); 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->finalize = pt_app_finalize; 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", "com.github.gkarsay.parlatype", "flags", G_APPLICATION_HANDLES_OPEN, NULL); } parlatype-1.6.2/src/pt-app.h000066400000000000000000000027301353244124700156710ustar00rootroot00000000000000/* 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 #include "pt-asr-settings.h" #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; PtAsrSettings *pt_app_get_asr_settings (PtApp *app); gboolean pt_app_get_atspi (PtApp *app); gboolean pt_app_get_asr (PtApp *app); PtApp *pt_app_new (void); #endif parlatype-1.6.2/src/pt-asr-assistant-helpers.c000066400000000000000000000117041353244124700213410ustar00rootroot00000000000000/* 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-asr-assistant-helpers.h" void search_result_free (SearchResult *r) { g_ptr_array_free (r->lms, TRUE); g_ptr_array_free (r->dicts, TRUE); g_ptr_array_free (r->hmms, TRUE); g_slice_free (SearchResult, r); } static void actually_search (GFile *folder, GCancellable *cancel, GPtrArray *lms, GPtrArray *dicts, GPtrArray *hmms, GError **forward_error) { GError *error = NULL; GFileEnumerator *files; gint hmm_hint = 0; files = g_file_enumerate_children (folder, G_FILE_ATTRIBUTE_STANDARD_NAME"," G_FILE_ATTRIBUTE_STANDARD_TYPE, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, cancel, &error); if (error) { g_propagate_error (forward_error, error); return; } while (TRUE) { if (g_cancellable_set_error_if_cancelled (cancel, &error)) break; GFileInfo *info; GFile *file; if (!g_file_enumerator_iterate (files, &info, &file, cancel, &error)) break; if (!info) break; const char *name = g_file_info_get_name (info); if (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY) { GFile *subdir; subdir = g_file_get_child (folder, name); actually_search (subdir, cancel, lms, dicts, hmms, &error); g_object_unref (subdir); if (error) break; } if (g_str_has_suffix (name, ".lm.bin")) g_ptr_array_add (lms, g_object_ref (file)); if (g_str_has_suffix (name, ".dict") || g_str_has_suffix (name, ".dic")) g_ptr_array_add (dicts, g_object_ref (file)); if (g_strcmp0 (name, "feat.params") == 0 || g_strcmp0 (name, "feature_transform") == 0 || g_strcmp0 (name, "mdef") == 0 || g_strcmp0 (name, "means") == 0 || g_strcmp0 (name, "mixture_weights") == 0 || g_strcmp0 (name, "noisedict") == 0 || g_strcmp0 (name, "sendump") == 0 || g_strcmp0 (name, "transition_matrices") == 0 || g_strcmp0 (name, "variances") == 0) { hmm_hint++; } } if (hmm_hint > 4) { g_ptr_array_add (hmms, g_object_ref (folder)); } g_object_unref (files); if (error) g_propagate_error (forward_error, error); } static void recursive_search (GTask *task, gpointer soure_object, gpointer task_data, GCancellable *cancel) { GError *error = NULL; GFile *folder; SearchResult *r; folder = task_data; r = g_slice_new (SearchResult); r->lms = g_ptr_array_new_with_free_func (g_object_unref); r->dicts = g_ptr_array_new_with_free_func (g_object_unref); r->hmms = g_ptr_array_new_with_free_func (g_object_unref); actually_search (folder, cancel, r->lms, r->dicts, r->hmms, &error); if (error) { g_task_return_error (task, error); search_result_free (r); } else { g_task_return_pointer (task, r, (GDestroyNotify) search_result_free); } } gpointer _pt_asr_assistant_recursive_search_finish (PtAsrAssistant *self, GAsyncResult *result, GError **error) { g_return_val_if_fail (G_IS_TASK (result), NULL); g_return_val_if_fail (g_task_is_valid (G_TASK (result), self), NULL); return g_task_propagate_pointer (G_TASK (result), error); } static gboolean failed_timeout (GCancellable *cancel) { g_cancellable_cancel (cancel); return G_SOURCE_REMOVE; } void _pt_asr_assistant_recursive_search_async (PtAsrAssistant *self, GFile *folder, GAsyncReadyCallback callback, gpointer user_data) { GTask *task; GCancellable *cancel; cancel = g_cancellable_new (); task = g_task_new (self, cancel, callback, user_data); g_task_set_return_on_cancel (task, TRUE); g_task_set_task_data (task, folder, g_object_unref); g_task_run_in_thread (task, recursive_search); g_object_unref (task); /* Add a timeout of 0.5 seconds to avoid infinite running */ g_timeout_add (500, (GSourceFunc) failed_timeout, cancel); } parlatype-1.6.2/src/pt-asr-assistant-helpers.h000066400000000000000000000024341353244124700213460ustar00rootroot00000000000000/* 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_ASR_ASSISTANT_HELPERS_H #define PT_ASR_ASSISTANT_HELPERS_H #include "config.h" #include "pt-asr-assistant.h" typedef struct { GPtrArray *lms; GPtrArray *dicts; GPtrArray *hmms; } SearchResult; void search_result_free (SearchResult *r); gpointer _pt_asr_assistant_recursive_search_finish ( PtAsrAssistant *self, GAsyncResult *result, GError **error); void _pt_asr_assistant_recursive_search_async ( PtAsrAssistant *self, GFile *folder, GAsyncReadyCallback callback, gpointer user_data); #endif parlatype-1.6.2/src/pt-asr-assistant.c000066400000000000000000000521461353244124700177060ustar00rootroot00000000000000/* 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 #include #include #include "pt-asr-settings.h" #include "pt-asr-assistant-helpers.h" #include "pt-asr-assistant.h" struct _PtAsrAssistantPrivate { /* Pages */ GtkWidget *intro; GtkWidget *models; GtkWidget *summary; /* Widgets */ GtkWidget *lm_chooser; GtkWidget *lm_combo; GtkWidget *lm_message; GtkWidget *lm_heading; GtkWidget *dict_chooser; GtkWidget *dict_combo; GtkWidget *dict_message; GtkWidget *dict_heading; GtkWidget *hmm_chooser; GtkWidget *hmm_combo; GtkWidget *hmm_message; GtkWidget *hmm_heading; GtkWidget *name_entry; GtkListStore *lm_list; GtkListStore *dict_list; GtkListStore *hmm_list; /* Data */ gchar *lm_path; gchar *dict_path; gchar *hmm_path; }; G_DEFINE_TYPE_WITH_PRIVATE (PtAsrAssistant, pt_asr_assistant, GTK_TYPE_ASSISTANT) static gchar* get_path_for_uri (gchar *uri) { GFile *file; gchar *path; file = g_file_new_for_uri (uri); path = g_file_get_path (file); g_object_unref (file); return path; } void name_entry_changed_cb (GtkEntry *entry, PtAsrAssistant *self) { gtk_assistant_set_page_complete ( GTK_ASSISTANT (self), self->priv->summary, gtk_entry_get_text_length (entry) > 0); } static void check_models_complete (PtAsrAssistant *self) { gtk_assistant_set_page_complete ( GTK_ASSISTANT (self), self->priv->models, self->priv->lm_path && self->priv->dict_path && self->priv->hmm_path); } void lm_chooser_file_set_cb (GtkFileChooserButton *button, PtAsrAssistant *self) { gchar *lm_uri; if (self->priv->lm_path) { g_free (self->priv->lm_path); self->priv->lm_path = NULL; } lm_uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (button)); self->priv->lm_path = get_path_for_uri (lm_uri); g_free (lm_uri); check_models_complete (self); } void dict_chooser_file_set_cb (GtkFileChooserButton *button, PtAsrAssistant *self) { gchar *dict_uri; if (self->priv->dict_path) { g_free (self->priv->dict_path); self->priv->dict_path = NULL; } dict_uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (button)); self->priv->dict_path = get_path_for_uri (dict_uri); g_free (dict_uri); check_models_complete (self); } static gboolean check_hmm_folder (gchar *folder_uri) { GError *error = NULL; gchar *folder_path; GFile *folder; GFileEnumerator *files; gint hits = 0; folder = g_file_new_for_uri (folder_uri); folder_path = g_file_get_path (folder); files = g_file_enumerate_children (folder, G_FILE_ATTRIBUTE_STANDARD_NAME, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, NULL, /* cancellable */ &error); /* TODO process error */ while (TRUE) { GFileInfo *info; if (!g_file_enumerator_iterate (files, &info, NULL, NULL, NULL)) /* GFile, cancellable & TODO error */ break; if (!info) break; const char *name = g_file_info_get_name (info); if (g_strcmp0 (name, "feat.params") == 0 || g_strcmp0 (name, "feature_transform") == 0 || g_strcmp0 (name, "mdef") == 0 || g_strcmp0 (name, "means") == 0 || g_strcmp0 (name, "mixture_weights") == 0 || g_strcmp0 (name, "noisedict") == 0 || g_strcmp0 (name, "sendump") == 0 || g_strcmp0 (name, "transition_matrices") == 0 || g_strcmp0 (name, "variances") == 0) { hits++; continue; } } g_object_unref (folder); g_object_unref (files); g_free (folder_path); return (hits > 4); } void hmm_chooser_file_set_cb (GtkFileChooserButton *button, PtAsrAssistant *self) { gchar *hmm_uri; if (self->priv->hmm_path) { g_free (self->priv->hmm_path); self->priv->hmm_path = NULL; } hmm_uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (button)); if (check_hmm_folder (hmm_uri)) { self->priv->hmm_path = get_path_for_uri (hmm_uri); gtk_widget_hide (self->priv->hmm_message); } else { gtk_label_set_text (GTK_LABEL (self->priv->hmm_message), /* Translators: This feature is disabled by default, its translation has low priority. */ _("The folder contains no acoustic model.")); gtk_widget_show (self->priv->hmm_message); } g_free (hmm_uri); check_models_complete (self); } void lm_combo_changed_cb (GtkComboBox *combo, PtAsrAssistant *self) { GtkTreeIter iter; /* This is also called when the ListStore is cleared */ if (!gtk_tree_model_get_iter_first (GTK_TREE_MODEL (self->priv->lm_list), &iter)) return; if (gtk_combo_box_get_active (combo) == 0) { g_free (self->priv->lm_path); self->priv->lm_path = NULL; } else { gtk_combo_box_get_active_iter (combo, &iter); gtk_tree_model_get (GTK_TREE_MODEL (self->priv->lm_list), &iter, 1, &self->priv->lm_path, -1); } check_models_complete (self); } void dict_combo_changed_cb (GtkComboBox *combo, PtAsrAssistant *self) { GtkTreeIter iter; if (!gtk_tree_model_get_iter_first (GTK_TREE_MODEL (self->priv->dict_list), &iter)) return; if (gtk_combo_box_get_active (combo) == 0) { g_free (self->priv->dict_path); self->priv->dict_path = NULL; } else { gtk_combo_box_get_active_iter (combo, &iter); gtk_tree_model_get (GTK_TREE_MODEL (self->priv->dict_list), &iter, 1, &self->priv->dict_path, -1); } check_models_complete (self); } void hmm_combo_changed_cb (GtkComboBox *combo, PtAsrAssistant *self) { GtkTreeIter iter; if (!gtk_tree_model_get_iter_first (GTK_TREE_MODEL (self->priv->hmm_list), &iter)) return; if (gtk_combo_box_get_active (combo) == 0) { g_free (self->priv->hmm_path); self->priv->hmm_path = NULL; } else { gtk_combo_box_get_active_iter (combo, &iter); gtk_tree_model_get (GTK_TREE_MODEL (self->priv->hmm_list), &iter, 1, &self->priv->hmm_path, -1); } check_models_complete (self); } static void error_message (PtAsrAssistant *self, const gchar *message, const gchar *secondary_message) { GtkWidget *dialog; dialog = gtk_message_dialog_new ( GTK_WINDOW (self), 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); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); } static void fill_list (GtkListStore *list, GPtrArray *array, gchar *base_uri) { GtkTreeIter iter; guint i; GFile *base; gchar *relative_path; gchar *full_path; base = g_file_new_for_uri (base_uri); gtk_list_store_append (list, &iter); /* Translators: This feature is disabled by default, its translation has low priority. */ gtk_list_store_set (list, &iter, 0, _("Please select …"), -1); for (i = 0; i < array->len; i++) { gtk_list_store_append (list, &iter); relative_path = g_file_get_relative_path (base, g_ptr_array_index (array, i)); full_path = g_file_get_path (g_ptr_array_index (array, i)); gtk_list_store_set (list, &iter, 0, relative_path, 1, full_path, -1); g_free (relative_path); g_free (full_path); } g_object_unref (base); } static void add_model_page (PtAsrAssistant *self) { if (gtk_assistant_get_n_pages (GTK_ASSISTANT (self)) != 2) return; GtkBuilder *builder; builder = gtk_builder_new_from_resource ("/com/github/gkarsay/parlatype/asr-assistant.ui"); self->priv->models = GTK_WIDGET (gtk_builder_get_object (builder, "models")); self->priv->lm_chooser = GTK_WIDGET (gtk_builder_get_object (builder, "lm_chooser")); self->priv->dict_chooser = GTK_WIDGET (gtk_builder_get_object (builder, "dict_chooser")); self->priv->hmm_chooser = GTK_WIDGET (gtk_builder_get_object (builder, "hmm_chooser")); self->priv->lm_combo = GTK_WIDGET (gtk_builder_get_object (builder, "lm_combo")); self->priv->dict_combo = GTK_WIDGET (gtk_builder_get_object (builder, "dict_combo")); self->priv->hmm_combo = GTK_WIDGET (gtk_builder_get_object (builder, "hmm_combo")); self->priv->lm_message = GTK_WIDGET (gtk_builder_get_object (builder, "lm_message")); self->priv->dict_message = GTK_WIDGET (gtk_builder_get_object (builder, "dict_message")); self->priv->hmm_message = GTK_WIDGET (gtk_builder_get_object (builder, "hmm_message")); self->priv->lm_heading = GTK_WIDGET (gtk_builder_get_object (builder, "lm_heading")); self->priv->dict_heading = GTK_WIDGET (gtk_builder_get_object (builder, "dict_heading")); self->priv->hmm_heading = GTK_WIDGET (gtk_builder_get_object (builder, "hmm_heading")); gtk_assistant_insert_page (GTK_ASSISTANT (self), self->priv->models, 1); /* Translators: This feature is disabled by default, its translation has low priority. */ gtk_assistant_set_page_title (GTK_ASSISTANT (self), self->priv->models, _("Missing parameters")); gtk_assistant_set_page_type (GTK_ASSISTANT (self), self->priv->models, GTK_ASSISTANT_PAGE_CONTENT); gtk_assistant_set_page_complete (GTK_ASSISTANT (self), self->priv->models, FALSE); gtk_widget_show_all (self->priv->models); gtk_combo_box_set_model (GTK_COMBO_BOX (self->priv->lm_combo), GTK_TREE_MODEL (self->priv->lm_list)); gtk_combo_box_set_model (GTK_COMBO_BOX (self->priv->dict_combo), GTK_TREE_MODEL (self->priv->dict_list)); gtk_combo_box_set_model (GTK_COMBO_BOX (self->priv->hmm_combo), GTK_TREE_MODEL (self->priv->hmm_list)); gtk_builder_connect_signals (builder, self); g_object_unref (builder); } static void remove_model_page (PtAsrAssistant *self) { if (gtk_assistant_get_n_pages (GTK_ASSISTANT (self)) != 3) return; gtk_assistant_remove_page (GTK_ASSISTANT (self), 1); } static void recursive_search_finished (PtAsrAssistant *self, GAsyncResult *res, gpointer *data) { SearchResult *r; GError *error = NULL; gchar *folder_uri; gchar *lm_uri; gchar *dict_uri; gchar *hmm_uri; gboolean nothing_found; gboolean complete; folder_uri = (gchar*)data; r = _pt_asr_assistant_recursive_search_finish (self, res, &error); remove_model_page (self); if (error) { if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { error_message (self, /* Translators: This feature is disabled by default, its translation has low priority. */ _("Timed out"), /* Translators: This feature is disabled by default, its translation has low priority. */ _("Scanning the folder took too long. Please make sure to open a folder with model data only.")); } else { error_message (self, /* Translators: This feature is disabled by default, its translation has low priority. */ _("Scanning the folder failed"), error->message); } g_clear_error (&error); g_free (folder_uri); gtk_assistant_set_page_complete (GTK_ASSISTANT (self), self->priv->intro, FALSE); return; } nothing_found = (r->lms->len == 0 && r->dicts->len == 0 && r->hmms->len == 0); complete = (r->lms->len == 1 && r->dicts->len == 1 && r->hmms->len == 1); if (nothing_found) { error_message (self, /* Translators: This feature is disabled by default, its translation has low priority. */ _("Nothing found"), /* Translators: This feature is disabled by default, its translation has low priority. */ _("This folder doesn’t contain a suitable model.")); search_result_free (r); g_free (folder_uri); gtk_assistant_set_page_complete (GTK_ASSISTANT (self), self->priv->intro, FALSE); return; } gtk_assistant_set_page_complete (GTK_ASSISTANT (self), self->priv->intro, TRUE); if (r->lms->len == 1) self->priv->lm_path = g_file_get_path (g_ptr_array_index (r->lms, 0)); if (r->dicts->len == 1) self->priv->dict_path = g_file_get_path (g_ptr_array_index (r->dicts, 0)); if (r->hmms->len == 1) self->priv->hmm_path = g_file_get_path (g_ptr_array_index (r->hmms, 0)); if (complete) { search_result_free (r); g_free (folder_uri); return; } /* Setup model page */ add_model_page (self); lm_uri = g_strdup (folder_uri); dict_uri = g_strdup (folder_uri); hmm_uri = g_strdup (folder_uri); gtk_widget_hide (self->priv->lm_combo); gtk_widget_hide (self->priv->dict_combo); gtk_widget_hide (self->priv->hmm_combo); gtk_widget_hide (self->priv->lm_chooser); gtk_widget_hide (self->priv->dict_chooser); gtk_widget_hide (self->priv->hmm_chooser); gtk_widget_hide (self->priv->lm_heading); gtk_widget_hide (self->priv->dict_heading); gtk_widget_hide (self->priv->hmm_heading); gtk_widget_hide (self->priv->lm_message); gtk_widget_hide (self->priv->dict_message); gtk_widget_hide (self->priv->hmm_message); if (r->lms->len == 0) { gtk_label_set_text (GTK_LABEL (self->priv->lm_message), /* Translators: This feature is disabled by default, its translation has low priority. */ _("The folder contains no language model. Please choose a language model from another folder.")); gtk_widget_show (self->priv->lm_heading); gtk_widget_show (self->priv->lm_message); gtk_widget_show (self->priv->lm_chooser); } if (r->lms->len > 1) { gtk_label_set_text (GTK_LABEL (self->priv->lm_message), /* Translators: This feature is disabled by default, its translation has low priority. */ _("The folder contains several language models.")); fill_list (self->priv->lm_list, r->lms, folder_uri); gtk_combo_box_set_active (GTK_COMBO_BOX (self->priv->lm_combo), 0); gtk_widget_show (self->priv->lm_heading); gtk_widget_show (self->priv->lm_message); gtk_widget_show (self->priv->lm_combo); } if (r->dicts->len == 0) { gtk_label_set_text (GTK_LABEL (self->priv->dict_message), /* Translators: This feature is disabled by default, its translation has low priority. */ _("The folder contains no dictionary. Please choose a dictionary from another folder.")); gtk_widget_show (self->priv->dict_heading); gtk_widget_show (self->priv->dict_message); gtk_widget_show (self->priv->dict_chooser); } if (r->dicts->len > 1) { gtk_label_set_text (GTK_LABEL (self->priv->dict_message), /* Translators: This feature is disabled by default, its translation has low priority. */ _("The folder contains several dictionaries.")); fill_list (self->priv->dict_list, r->dicts, folder_uri); gtk_combo_box_set_active (GTK_COMBO_BOX (self->priv->dict_combo), 0); gtk_widget_show (self->priv->dict_heading); gtk_widget_show (self->priv->dict_message); gtk_widget_show (self->priv->dict_combo); } if (r->hmms->len == 0) { gtk_label_set_text (GTK_LABEL (self->priv->hmm_message), /* Translators: This feature is disabled by default, its translation has low priority. */ _("The folder contains no acoustic model. Please choose an acoustic model from another folder.")); gtk_widget_show (self->priv->hmm_heading); gtk_widget_show (self->priv->hmm_message); gtk_widget_show (self->priv->hmm_chooser); } if (r->hmms->len > 1) { gtk_label_set_text (GTK_LABEL (self->priv->hmm_message), /* Translators: This feature is disabled by default, its translation has low priority. */ _("The folder contains several acoustic models.")); fill_list (self->priv->hmm_list, r->hmms, folder_uri); gtk_combo_box_set_active (GTK_COMBO_BOX (self->priv->hmm_combo), 0); gtk_widget_show (self->priv->hmm_heading); gtk_widget_show (self->priv->hmm_message); gtk_widget_show (self->priv->hmm_combo); } gtk_file_chooser_set_uri (GTK_FILE_CHOOSER (self->priv->lm_chooser), lm_uri); gtk_file_chooser_set_uri (GTK_FILE_CHOOSER (self->priv->dict_chooser), dict_uri); gtk_file_chooser_set_uri (GTK_FILE_CHOOSER (self->priv->hmm_chooser), hmm_uri); g_free (folder_uri); g_free (lm_uri); g_free (dict_uri); g_free (hmm_uri); search_result_free (r); } void folder_chooser_file_set_cb (GtkFileChooserButton *button, PtAsrAssistant *self) { gchar *folder_uri; GFile *folder; /* Clear data */ if (self->priv->lm_path) { g_free (self->priv->lm_path); self->priv->lm_path = NULL; } if (self->priv->dict_path) { g_free (self->priv->dict_path); self->priv->dict_path = NULL; } if (self->priv->hmm_path) { g_free (self->priv->hmm_path); self->priv->hmm_path = NULL; } gtk_list_store_clear (self->priv->lm_list); gtk_list_store_clear (self->priv->dict_list); gtk_list_store_clear (self->priv->hmm_list); gtk_assistant_set_page_complete (GTK_ASSISTANT (self), self->priv->intro, FALSE); folder_uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (button)); if (!folder_uri) { return; } folder = g_file_new_for_uri (folder_uri); _pt_asr_assistant_recursive_search_async (self, folder, (GAsyncReadyCallback)recursive_search_finished, folder_uri); /* folder cleaned up in async, folder_uri in callback */ } static gboolean assistant_is_complete (PtAsrAssistant *self) { return (gtk_assistant_get_page_complete (GTK_ASSISTANT (self), self->priv->summary)); } gchar* pt_asr_assistant_get_name (PtAsrAssistant *self) { const gchar *name; gchar *result; if (!assistant_is_complete (self)) return NULL; name = gtk_entry_get_text (GTK_ENTRY (self->priv->name_entry)); result = g_strdup (name); return result; } gchar* pt_asr_assistant_save_config (PtAsrAssistant *self, PtAsrSettings *settings) { gchar *id; const gchar *entry_name; gchar *name; if (!assistant_is_complete (self)) return NULL; entry_name = gtk_entry_get_text (GTK_ENTRY (self->priv->name_entry)); name = g_strdup (entry_name); id = pt_asr_settings_add_config (settings, name, "sphinx"); pt_asr_settings_set_string (settings, id, "lm", self->priv->lm_path); pt_asr_settings_set_string (settings, id, "dict", self->priv->dict_path); pt_asr_settings_set_string (settings, id, "hmm", self->priv->hmm_path); g_free (name); return id; } static void pt_asr_assistant_init (PtAsrAssistant *self) { self->priv = pt_asr_assistant_get_instance_private (self); self->priv->lm_path = NULL; self->priv->dict_path = NULL; self->priv->hmm_path = NULL; GtkBuilder *builder; builder = gtk_builder_new_from_resource ("/com/github/gkarsay/parlatype/asr-assistant.ui"); self->priv->intro = GTK_WIDGET (gtk_builder_get_object (builder, "intro")); gtk_assistant_append_page (GTK_ASSISTANT (self), self->priv->intro); /* Translators: This feature is disabled by default, its translation has low priority. */ gtk_assistant_set_page_title (GTK_ASSISTANT (self), self->priv->intro, _("Download model")); gtk_assistant_set_page_type (GTK_ASSISTANT (self), self->priv->intro, GTK_ASSISTANT_PAGE_INTRO); gtk_assistant_set_page_complete (GTK_ASSISTANT (self), self->priv->intro, FALSE); gtk_widget_show_all (self->priv->intro); self->priv->summary = GTK_WIDGET (gtk_builder_get_object (builder, "summary")); gtk_assistant_append_page (GTK_ASSISTANT (self), self->priv->summary); /* Translators: This feature is disabled by default, its translation has low priority. */ gtk_assistant_set_page_title (GTK_ASSISTANT (self), self->priv->summary, _("Finish configuration")); gtk_assistant_set_page_type (GTK_ASSISTANT (self), self->priv->summary, GTK_ASSISTANT_PAGE_CONFIRM); self->priv->name_entry = GTK_WIDGET (gtk_builder_get_object (builder, "name_entry")); gtk_assistant_set_page_complete (GTK_ASSISTANT (self), self->priv->summary, FALSE); gtk_widget_show_all (self->priv->summary); gtk_window_set_default_size (GTK_WINDOW (self), 500, -1); gtk_builder_connect_signals (builder, self); g_object_unref (builder); self->priv->lm_list = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING); self->priv->dict_list = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING); self->priv->hmm_list = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING); } static void pt_asr_assistant_finalize (GObject *object) { PtAsrAssistant *self = PT_ASR_ASSISTANT (object); g_clear_object (&self->priv->lm_list); g_clear_object (&self->priv->dict_list); g_clear_object (&self->priv->hmm_list); g_free (self->priv->lm_path); g_free (self->priv->dict_path); g_free (self->priv->hmm_path); G_OBJECT_CLASS (pt_asr_assistant_parent_class)->finalize (object); } static void pt_asr_assistant_class_init (PtAsrAssistantClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = pt_asr_assistant_finalize; } PtAsrAssistant * pt_asr_assistant_new (GtkWindow *win) { return g_object_new ( PT_TYPE_ASR_ASSISTANT, "use-header-bar", TRUE, "transient-for", win, NULL); } parlatype-1.6.2/src/pt-asr-assistant.h000066400000000000000000000031351353244124700177050ustar00rootroot00000000000000/* 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_ASR_ASSISTANT_H #define PT_ASR_ASSISTANT_H #include "config.h" #include "pt-asr-settings.h" #define PT_TYPE_ASR_ASSISTANT (pt_asr_assistant_get_type()) #define PT_ASR_ASSISTANT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PT_TYPE_ASR_ASSISTANT, PtAsrAssistant)) typedef struct _PtAsrAssistant PtAsrAssistant; typedef struct _PtAsrAssistantClass PtAsrAssistantClass; typedef struct _PtAsrAssistantPrivate PtAsrAssistantPrivate; struct _PtAsrAssistant { GtkAssistant assistant; /*< private > */ PtAsrAssistantPrivate *priv; }; struct _PtAsrAssistantClass { GtkAssistantClass parent_class; }; GType pt_asr_assistant_get_type (void) G_GNUC_CONST; gchar* pt_asr_assistant_get_name (PtAsrAssistant *self); gchar* pt_asr_assistant_save_config (PtAsrAssistant *self, PtAsrSettings *settings); PtAsrAssistant *pt_asr_assistant_new (GtkWindow *win); #endif parlatype-1.6.2/src/pt-asr-output.c000066400000000000000000000316351353244124700172350ustar00rootroot00000000000000/* 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 #include #include #include "pt-app.h" #include "pt-asr-output.h" struct _PtAsrOutputPrivate { gboolean atspi; GtkWidget *dialog; GtkWidget *textpad; GtkTextBuffer *textbuffer; AtspiEventListener *focus_listener; AtspiEventListener *caret_listener; AtspiAccessible *app; AtspiAccessible *editable; gchar *app_name; gint offset; gint hyp_len; }; G_DEFINE_TYPE_WITH_PRIVATE (PtAsrOutput, pt_asr_output, G_TYPE_OBJECT) static gboolean register_listener (AtspiEventListener *listener, const gchar *event_type) { GError *error = NULL; gboolean success; success = atspi_event_listener_register (listener, event_type, &error); if (error) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "Registering AtspiEventListener failed: %s", error->message); g_clear_error (&error); } return success; } static gboolean deregister_listener (AtspiEventListener *listener, const gchar *event_type) { GError *error = NULL; gboolean success; success = atspi_event_listener_deregister (listener, event_type, &error); if (error) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "Deregistering AtspiEventListener failed: %s", error->message); g_clear_error (&error); } return success; } static gboolean is_editable (AtspiAccessible *accessible) { AtspiStateSet *state_set; GArray *states; gint i; AtspiStateType state; gboolean result = FALSE; state_set = atspi_accessible_get_state_set (accessible); states = atspi_state_set_get_states (state_set); for (i = 0; i < states->len; i++) { state = g_array_index (states, gint, i); if (state == ATSPI_STATE_EDITABLE) { result = TRUE; break; } } g_array_free (states, TRUE); g_object_unref (state_set); return result; } static void on_caret_cb (AtspiEvent *event, void *user_data) { PtAsrOutput *self = PT_ASR_OUTPUT (user_data); if (!event->source) return; if (!is_editable (event->source)) return; if (event->source != self->priv->editable) { /* The caret is at a different paragraph. This can be done only by the user. Update our output editable. */ g_object_unref (self->priv->editable); self->priv->editable = g_object_ref (event->source); } } static void on_focus_cb (AtspiEvent *event, void *user_data) { PtAsrOutput *self = PT_ASR_OUTPUT (user_data); if (!event->source) return; /* We only care about focus/selection gain there’s no detail1 on focus loss in AT-SPI specs taken from accessibilitywatcher.cpp from compiz-plugins-main */ if (!event->detail1) return; if (!is_editable (event->source)) return; self->priv->app = atspi_accessible_get_application (event->source, NULL); if (self->priv->app == NULL) return; self->priv->app_name = atspi_accessible_get_name (self->priv->app, NULL); if (g_strcmp0 (self->priv->app_name, "gnome-shell") == 0) { /* That’s the search field of gnome shell when trying to find and launch a program */ g_free (self->priv->app_name); return; } self->priv->editable = g_object_ref (event->source); deregister_listener (self->priv->focus_listener, "object:state-changed:focused"); /* LibreOffice needs extra care: each paragraph is an AtspiEditable of its own. If the user moves the cursor/caret to another paragraph, we still reference the old one and there is no output at all. */ if (g_strcmp0 (self->priv->app_name, "soffice") == 0) { g_free (self->priv->app_name); self->priv->app_name = g_strdup ("LibreOffice"); register_listener (self->priv->caret_listener, "object:text-caret-moved"); /* listener stays active until object destruction */ } gtk_widget_destroy (self->priv->dialog); g_signal_emit_by_name (self, "app-found"); } static void pt_asr_output_reset (PtAsrOutput *self) { g_clear_object (&self->priv->app); g_clear_object (&self->priv->editable); g_free (self->priv->app_name); self->priv->app_name = NULL; } static void pt_asr_output_cancel_search (PtAsrOutput *self) { deregister_listener (self->priv->focus_listener, "object:state-changed:focused"); pt_asr_output_reset (self); } static void dialog_response_cb (GtkDialog *dialog, gint response_id, PtAsrOutput *self) { /* every response means cancel */ pt_asr_output_cancel_search (self); gtk_widget_destroy (GTK_WIDGET (dialog)); } static void show_dialog (PtAsrOutput *self, GtkWindow *parent) { gchar *message; gchar *secondary_message; /* Translators: This feature is disabled by default, its translation has low priority. */ message = _("Select output for automatic speech recognition"); /* Translators: This feature is disabled by default, its translation has low priority. */ secondary_message = _("Please open and switch focus to a word processor."); self->priv->dialog = gtk_message_dialog_new ( parent, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_CANCEL, "%s", message); gtk_message_dialog_format_secondary_text ( GTK_MESSAGE_DIALOG (self->priv->dialog), "%s", secondary_message); g_signal_connect (self->priv->dialog, "response", G_CALLBACK (dialog_response_cb), self); gtk_widget_show (self->priv->dialog); } void create_textpad (PtAsrOutput *self, GtkWindow *parent) { GtkWidget *textview; GtkWidget *scrolled_window; self->priv->textpad = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (self->priv->textpad), "Textpad"); textview = gtk_text_view_new (); gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (textview), GTK_WRAP_WORD); self->priv->textbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview)); scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_container_add (GTK_CONTAINER (scrolled_window), textview); gtk_container_add (GTK_CONTAINER (self->priv->textpad), scrolled_window); gtk_widget_show_all (scrolled_window); gtk_window_set_default_size (GTK_WINDOW (self->priv->textpad), 400, 200); gtk_window_present (GTK_WINDOW (self->priv->textpad)); } void pt_asr_output_search_app (PtAsrOutput *self, GtkWindow *parent) { pt_asr_output_reset (self); if (self->priv->atspi) { if (!register_listener (self->priv->focus_listener, "object:state-changed:focused")) { self->priv->atspi = FALSE; } } if (!self->priv->atspi) { create_textpad (self, parent); self->priv->app_name = g_strdup ("Textpad"); g_signal_emit_by_name (self, "app-found"); return; } show_dialog (self, parent); } gchar* pt_asr_output_get_app_name (PtAsrOutput *self) { return self->priv->app_name; } static void delete_hypothesis (PtAsrOutput *self) { if (self->priv->hyp_len == 0) return; if (self->priv->atspi) { atspi_editable_text_delete_text ( ATSPI_EDITABLE_TEXT (self->priv->editable), self->priv->offset, self->priv->offset + self->priv->hyp_len, NULL); } else { GtkTextIter iter1, iter2; gtk_text_buffer_get_iter_at_offset (self->priv->textbuffer, &iter1, self->priv->offset); gtk_text_buffer_get_iter_at_offset (self->priv->textbuffer, &iter2, self->priv->offset + self->priv->hyp_len); gtk_text_buffer_delete (self->priv->textbuffer, &iter1, &iter2); } } static void get_offset (PtAsrOutput *self) { if (self->priv->atspi) { self->priv->offset = atspi_text_get_caret_offset (ATSPI_TEXT (self->priv->editable), NULL); } else { self->priv->offset = gtk_text_buffer_get_char_count (self->priv->textbuffer); } } void pt_asr_output_hypothesis (PtAsrOutput *self, gchar *string) { /* TODO A long hypothesis, quickly updated, can flicker. Try to reduce flickering by comparing the old string and new string from left (what about RTL?) until there is a difference and output only the rest. Store the old string, compare, delete with new offsets */ g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Hypothesis: %s", string); delete_hypothesis (self); GtkTextIter iter; get_offset (self); self->priv->hyp_len = g_utf8_strlen (string, -1); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Offset: %d – Length: %d", self->priv->offset, self->priv->hyp_len); /* inserting moves caret, important: use strlen, not UTF-8 character count */ if (self->priv->atspi) { atspi_editable_text_insert_text ( ATSPI_EDITABLE_TEXT (self->priv->editable), self->priv->offset, string, strlen (string), NULL); } else { gtk_text_buffer_get_iter_at_offset (self->priv->textbuffer, &iter, self->priv->offset); gtk_text_buffer_insert (self->priv->textbuffer, &iter, string, strlen (string)); } } void pt_asr_output_final (PtAsrOutput *self, gchar *string) { gchar *string_with_space; GtkTextIter iter; delete_hypothesis (self); get_offset (self); self->priv->hyp_len = 0; string_with_space = g_strdup_printf ("%s ", string); g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Final: %s", string); /* inserting moves caret, important: use strlen, not UTF-8 character count */ if (self->priv->atspi) { atspi_editable_text_insert_text ( ATSPI_EDITABLE_TEXT (self->priv->editable), self->priv->offset, string_with_space, strlen (string_with_space), NULL); } else { gtk_text_buffer_get_iter_at_offset (self->priv->textbuffer, &iter, self->priv->offset); gtk_text_buffer_insert (self->priv->textbuffer, &iter, string_with_space, strlen (string_with_space)); } g_free (string_with_space); } static void pt_asr_output_init (PtAsrOutput *self) { self->priv = pt_asr_output_get_instance_private (self); GApplication *app; gint status; app = g_application_get_default (); self->priv->atspi = pt_app_get_atspi (PT_APP (app)); if (self->priv->atspi) status = atspi_init (); else status = 3; if (status == 0 || status == 1) { self->priv->focus_listener = atspi_event_listener_new ( (AtspiEventListenerCB) on_focus_cb, self, NULL); self->priv->caret_listener = atspi_event_listener_new ( (AtspiEventListenerCB) on_caret_cb, self, NULL); if (status == 0) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "MESSAGE", "ATSPI initted"); } else { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "MESSAGE", "ATSPI already initted"); } } else { self->priv->atspi = FALSE; self->priv->focus_listener = NULL; self->priv->caret_listener = NULL; if (status == 2) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "MESSAGE", "ATSPI failed"); } else { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "MESSAGE", "ATSPI fallback requested"); } } self->priv->app = NULL; self->priv->editable = NULL; self->priv->app_name = NULL; self->priv->offset = 0; self->priv->hyp_len = 0; } static void pt_asr_output_dispose (GObject *object) { PtAsrOutput *self = PT_ASR_OUTPUT (object); g_clear_object (&self->priv->app); g_clear_object (&self->priv->editable); g_clear_object (&self->priv->focus_listener); g_clear_object (&self->priv->caret_listener); G_OBJECT_CLASS (pt_asr_output_parent_class)->dispose (object); } static void pt_asr_output_finalize (GObject *object) { PtAsrOutput *self = PT_ASR_OUTPUT (object); g_free (self->priv->app_name); G_OBJECT_CLASS (pt_asr_output_parent_class)->finalize (object); } static void pt_asr_output_class_init (PtAsrOutputClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = pt_asr_output_dispose; object_class->finalize = pt_asr_output_finalize; g_signal_new ("app-found", PT_TYPE_ASR_OUTPUT, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); g_signal_new ("search-cancelled", PT_TYPE_ASR_OUTPUT, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); } PtAsrOutput * pt_asr_output_new (void) { return g_object_new (PT_TYPE_ASR_OUTPUT, NULL); } parlatype-1.6.2/src/pt-asr-output.h000066400000000000000000000033411353244124700172330ustar00rootroot00000000000000/* 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_ASR_OUTPUT_H #define PT_ASR_OUTPUT_H #include "config.h" #define PT_TYPE_ASR_OUTPUT (pt_asr_output_get_type()) #define PT_ASR_OUTPUT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PT_TYPE_ASR_OUTPUT, PtAsrOutput)) typedef struct _PtAsrOutput PtAsrOutput; typedef struct _PtAsrOutputClass PtAsrOutputClass; typedef struct _PtAsrOutputPrivate PtAsrOutputPrivate; struct _PtAsrOutput { GObject parent; /*< private > */ PtAsrOutputPrivate *priv; }; struct _PtAsrOutputClass { GObjectClass parent_class; }; GType pt_asr_output_get_type (void) G_GNUC_CONST; void pt_asr_output_hypothesis (PtAsrOutput *self, gchar *string); void pt_asr_output_final (PtAsrOutput *self, gchar *string); gchar* pt_asr_output_get_app_name (PtAsrOutput *self); void pt_asr_output_search_app (PtAsrOutput *self, GtkWindow *parent); PtAsrOutput *pt_asr_output_new (void); #endif parlatype-1.6.2/src/pt-asr-settings.c000066400000000000000000000323721353244124700175340ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 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 "config.h" #include #include "pt-asr-settings.h" struct _PtAsrSettingsPrivate { gchar *filename; GKeyFile *keyfile; }; enum { PROP_0, PROP_KEYFILE, N_PROPERTIES }; static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, }; G_DEFINE_TYPE_WITH_PRIVATE (PtAsrSettings, pt_asr_settings, G_TYPE_OBJECT) /** * SECTION: pt-asr-settings * @short_description: * @stability: Unstable * @include: parlatype/pt-asr-settings.h * * TODO */ static gboolean pt_asr_settings_save_keyfile (PtAsrSettings *settings) { GError *error = NULL; gboolean result; result = g_key_file_save_to_file ( settings->priv->keyfile, settings->priv->filename, &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; } /** * pt_asr_settings_set_int: * @settings: a #PtAsrSettings instance * @id: the ID of the config * @field: the field in the config * @value: the new integer value * * Sets a new integer value. If the config doesn’t exist, it will be created. * Likewise the field will be created, if it doesn’t exist yet. * * Return value: TRUE on success, FALSE on failure */ gboolean pt_asr_settings_set_int (PtAsrSettings *settings, gchar *id, gchar *field, gint value) { g_key_file_set_integer ( settings->priv->keyfile, id, field, value); return pt_asr_settings_save_keyfile (settings); } /** * pt_asr_settings_get_int: * @settings: a #PtAsrSettings instance * @id: the ID of the config * @field: the field asked for * * Gets an integer value from a field for a certain config. If it’s not found, * the return value is 0. * * Return value: the integer value or 0 in case of failure */ gint pt_asr_settings_get_int (PtAsrSettings *settings, gchar *id, gchar *field) { GError *error = NULL; gint result; result = g_key_file_get_integer ( settings->priv->keyfile, id, field, &error); if (error) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "Keyfile value not retrieved: %s", error->message); g_error_free (error); } return result; } /** * pt_asr_settings_set_boolean: * @settings: a #PtAsrSettings instance * @id: the ID of the config * @field: the field in the config * @value: the new value * * Sets a boolean value. If the config doesn’t exist, it will be created. * Likewise the field will be created, if it doesn’t exist yet. * * Return value: TRUE on success, FALSE on failure */ gboolean pt_asr_settings_set_boolean (PtAsrSettings *settings, gchar *id, gchar *field, gboolean value) { g_key_file_set_boolean ( settings->priv->keyfile, id, field, value); return pt_asr_settings_save_keyfile (settings); } /** * pt_asr_settings_get_boolean: * @settings: a #PtAsrSettings instance * @id: the ID of the config * @field: the field asked for * * Gets a boolean value from a field for a certain config. If it’s not found, * the return value is FALSE. * * Return value: the boolean value or FALSE if it wasn’t found */ gboolean pt_asr_settings_get_boolean (PtAsrSettings *settings, gchar *id, gchar *field) { GError *error = NULL; gboolean result; result = g_key_file_get_boolean ( settings->priv->keyfile, id, field, &error); if (error) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "Keyfile value not retrieved: %s", error->message); g_error_free (error); } return result; } /** * pt_asr_settings_set_string: * @settings: a #PtAsrSettings instance * @id: the ID of the config * @field: the field in the config * @string: the new string * * Sets a new string. If the config doesn’t exist, it will be created. * Likewise the field will be created, if it doesn’t exist yet. * * Return value: TRUE on success, FALSE on failure */ gboolean pt_asr_settings_set_string (PtAsrSettings *settings, gchar *id, gchar *field, gchar *string) { g_key_file_set_string ( settings->priv->keyfile, id, field, string); return pt_asr_settings_save_keyfile (settings); } /** * pt_asr_settings_get_string: * @settings: a #PtAsrSettings instance * @id: the ID of the config * @field: the field asked for * * Gets a string from a field for a certain config. If it’s not found, * the return value is NULL. * * Return value: a newly allocated string or NULL if it wasn’t found */ gchar* pt_asr_settings_get_string (PtAsrSettings *settings, gchar *id, gchar *field) { GError *error = NULL; gchar *result; result = g_key_file_get_string ( settings->priv->keyfile, id, field, &error); if (error) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "Keyfile value not retrieved: %s", error->message); g_error_free (error); } return result; } /** * pt_asr_settings_get_configs: * @settings: a #PtAsrSettings instance * * Returns the names (IDs) of all saved configurations or NULL, if there are none. * * After use g_object_unref() it. * * Return value: (array zero-terminated=1)(transfer full): a newly-allocated * NULL-terminated array of strings. Use g_strfreev() to free it. */ gchar** pt_asr_settings_get_configs (PtAsrSettings *settings) { return g_key_file_get_groups (settings->priv->keyfile, NULL); } /** * pt_asr_settings_have_configs: * @settings: a #PtAsrSettings instance * * Returns TRUE if there are any configurations stored. * * Return value: TRUE for existing configurations, otherwise FALSE */ gboolean pt_asr_settings_have_configs (PtAsrSettings *settings) { gboolean result = FALSE; gchar **groups; groups = g_key_file_get_groups (settings->priv->keyfile, NULL); if (groups[0]) result = TRUE; g_strfreev (groups); return result; } /** * pt_asr_settings_add_config: * @settings: a #PtAsrSettings instance * @name: the descriptive name of the new config, shown to the user * @type: the ASR engine used * * Adds a new configuration, with a descriptive name and a type. The name * should be but doesn’t have to be unique. The only type allowed is "sphinx". * * Return value: (transfer full): the ID of the new config as a string, * or NULL in case of failure */ gchar* pt_asr_settings_add_config (PtAsrSettings *settings, gchar *name, gchar *type) { gchar *group; gint id = 1; gboolean unique = FALSE; if (g_strcmp0 (type, "sphinx") != 0) return NULL; while (!unique) { group = g_strdup_printf ("config%d", id); if (g_key_file_has_group (settings->priv->keyfile, group)) { g_free (group); id++; } else { unique = TRUE; } } g_key_file_set_string ( settings->priv->keyfile, group, "name", name); g_key_file_set_string ( settings->priv->keyfile, group, "type", type); if (!pt_asr_settings_save_keyfile (settings)) { g_key_file_remove_group (settings->priv->keyfile, group, NULL); g_free (group); group = NULL; } return group; } /** * pt_asr_settings_remove_config: * @settings: a #PtAsrSettings instance * @id: the ID of the config to remove * * Removes a complete configuration. On success it’s gone forever. * * Return value: TRUE on success, FALSE on failure */ gboolean pt_asr_settings_remove_config (PtAsrSettings *settings, gchar *id) { GError *error = NULL; gboolean result; result = g_key_file_remove_group (settings->priv->keyfile, id, &error); if (error) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "Removing group failed: %s", error->message); g_error_free (error); return result; } return pt_asr_settings_save_keyfile (settings); } gboolean apply_sphinx (PtAsrSettings *settings, gchar *id, GObject *sphinx) { gchar *lm, *dict, *hmm; lm = pt_asr_settings_get_string (settings, id, "lm"); dict = pt_asr_settings_get_string (settings, id, "dict"); hmm = pt_asr_settings_get_string (settings, id, "hmm"); g_object_set (sphinx, "lm", lm, "dict", dict, "hmm", hmm, NULL); g_free (lm); g_free (dict); g_free (hmm); return TRUE; } /** * pt_asr_settings_apply_config: * @settings: a #PtAsrSettings instance * @id: the ID of the config to apply * @player: the PtPlayer to setup * * Applies a configuration to a PtPlayer. * * Return value: TRUE on success, FALSE on failure */ gboolean pt_asr_settings_apply_config (PtAsrSettings *settings, gchar *id, PtPlayer *player) { gchar *type; type = pt_asr_settings_get_string (settings, id, "type"); if (g_strcmp0 (type, "sphinx") == 0) { g_free (type); return apply_sphinx (settings, id, player->sphinx); } g_free (type); return FALSE; } static void pt_asr_settings_constructed (GObject *object) { PtAsrSettings *settings = PT_ASR_SETTINGS (object); GError *error = NULL; settings->priv->keyfile = g_key_file_new (); g_key_file_load_from_file ( settings->priv->keyfile, settings->priv->filename, G_KEY_FILE_KEEP_COMMENTS, &error); if (error) { if (g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOENT)) { g_key_file_load_from_file ( settings->priv->keyfile, "resource:///com/github/gkarsay/libparlatype/asr.ini", G_KEY_FILE_KEEP_COMMENTS, NULL); } else { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "MESSAGE", "Key file not loaded: %s", error->message); } g_error_free (error); } } static void pt_asr_settings_init (PtAsrSettings *settings) { settings->priv = pt_asr_settings_get_instance_private (settings); } static void pt_asr_settings_dispose (GObject *object) { G_OBJECT_CLASS (pt_asr_settings_parent_class)->dispose (object); } static void pt_asr_settings_finalize (GObject *object) { PtAsrSettings *settings = PT_ASR_SETTINGS (object); g_free (settings->priv->filename); g_key_file_free (settings->priv->keyfile); G_OBJECT_CLASS (pt_asr_settings_parent_class)->finalize (object); } static void pt_asr_settings_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { PtAsrSettings *settings = PT_ASR_SETTINGS (object); switch (property_id) { case PROP_KEYFILE: g_free (settings->priv->filename); settings->priv->filename = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void pt_asr_settings_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { PtAsrSettings *settings = PT_ASR_SETTINGS (object); switch (property_id) { case PROP_KEYFILE: g_value_set_string (value, settings->priv->filename); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void pt_asr_settings_class_init (PtAsrSettingsClass *klass) { G_OBJECT_CLASS (klass)->set_property = pt_asr_settings_set_property; G_OBJECT_CLASS (klass)->get_property = pt_asr_settings_get_property; G_OBJECT_CLASS (klass)->constructed = pt_asr_settings_constructed; G_OBJECT_CLASS (klass)->dispose = pt_asr_settings_dispose; G_OBJECT_CLASS (klass)->finalize = pt_asr_settings_finalize; /** * PtAsrSettings:keyfile: * * The keyfile to use. */ obj_properties[PROP_KEYFILE] = g_param_spec_string ( "keyfile", "Key file", "Name of the key file", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT); g_object_class_install_properties ( G_OBJECT_CLASS (klass), N_PROPERTIES, obj_properties); } /** * pt_asr_settings_new: * @settings_file: path to the file with the settings * * Returns a new PtAsrSettings 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 #PtAsrSettings */ PtAsrSettings * pt_asr_settings_new (gchar *settings_file) { return g_object_new (PT_TYPE_ASR_SETTINGS, "keyfile", settings_file, NULL); } parlatype-1.6.2/src/pt-asr-settings.h000066400000000000000000000071071353244124700175370ustar00rootroot00000000000000/* Copyright (C) Gabor Karsay 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_ASR_SETTINGS_H #define PT_ASR_SETTINGS_H #include #include "pt-player.h" #define PT_TYPE_ASR_SETTINGS (pt_asr_settings_get_type()) #define PT_ASR_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PT_TYPE_ASR_SETTINGS, PtAsrSettings)) #define PT_IS_ASR_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PT_TYPE_ASR_SETTINGS)) typedef struct _PtAsrSettings PtAsrSettings; typedef struct _PtAsrSettingsClass PtAsrSettingsClass; typedef struct _PtAsrSettingsPrivate PtAsrSettingsPrivate; /** * PtAsrSettings: * * #PtAsrSettings contains only private fields and should not be directly accessed. */ struct _PtAsrSettings { GObject parent; /*< private > */ PtAsrSettingsPrivate *priv; }; struct _PtAsrSettingsClass { GObjectClass parent_class; }; GType pt_asr_settings_get_type (void) G_GNUC_CONST; gboolean pt_asr_settings_set_string (PtAsrSettings *settings, gchar *id, gchar *field, gchar *string); gchar* pt_asr_settings_get_string (PtAsrSettings *settings, gchar *id, gchar *field); gboolean pt_asr_settings_set_int (PtAsrSettings *settings, gchar *id, gchar *field, gint value); int pt_asr_settings_get_int (PtAsrSettings *settings, gchar *id, gchar *field); gboolean pt_asr_settings_set_boolean (PtAsrSettings *settings, gchar *id, gchar *field, gboolean value); gboolean pt_asr_settings_get_boolean (PtAsrSettings *settings, gchar *id, gchar *field); /*gboolean pt_asr_settings_name_is_unique (PtAsrSettings *settings, gchar *name);*/ gchar** pt_asr_settings_get_configs (PtAsrSettings *settings); gboolean pt_asr_settings_have_configs (PtAsrSettings *settings); gchar* pt_asr_settings_add_config (PtAsrSettings *settings, gchar *name, gchar *type); gboolean pt_asr_settings_remove_config (PtAsrSettings *settings, gchar *id); gboolean pt_asr_settings_apply_config (PtAsrSettings *settings, gchar *id, PtPlayer *player); PtAsrSettings* pt_asr_settings_new (gchar *settings_file); #endif parlatype-1.6.2/src/pt-dbus-service.c000066400000000000000000000127271353244124700175060ustar00rootroot00000000000000/* 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 #include "pt-window.h" #include "pt-window-private.h" static GDBusNodeInfo *introspection_data = NULL; /* Introspection data for the service we are exporting */ static const gchar introspection_xml[] = "" " " " " " " " " " " " " " " " " " " " " " " " " " " ""; 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) { PtWindow *win; win = PT_WINDOW (user_data); gchar *timestamp = NULL; if (g_strcmp0 (method_name, "GetTimestamp") == 0) { timestamp = pt_player_get_timestamp (win->priv->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 (win->priv->player, timestamp); g_dbus_method_invocation_return_value (invocation, NULL); } else if (g_strcmp0 (method_name, "PlayPause") == 0) { gboolean state; state = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (win->priv->button_play)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (win->priv->button_play), !state); g_dbus_method_invocation_return_value (invocation, NULL); } else if (g_strcmp0 (method_name, "JumpBack") == 0) { gtk_button_clicked (GTK_BUTTON (win->priv->button_jump_back)); g_dbus_method_invocation_return_value (invocation, NULL); } else if (g_strcmp0 (method_name, "JumpForward") == 0) { gtk_button_clicked (GTK_BUTTON (win->priv->button_jump_forward)); g_dbus_method_invocation_return_value (invocation, NULL); } else if (g_strcmp0 (method_name, "IncreaseSpeed") == 0) { gdouble value; value = gtk_range_get_value (GTK_RANGE (win->priv->speed_scale)); gtk_range_set_value (GTK_RANGE (win->priv->speed_scale), value + 0.1); g_dbus_method_invocation_return_value (invocation, NULL); } else if (g_strcmp0 (method_name, "DecreaseSpeed") == 0) { gdouble value; value = gtk_range_get_value (GTK_RANGE (win->priv->speed_scale)); gtk_range_set_value (GTK_RANGE (win->priv->speed_scale), value - 0.1); 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) { guint registration_id; registration_id = g_dbus_connection_register_object (connection, "/com/github/gkarsay/parlatype", introspection_data->interfaces[0], &interface_vtable, user_data, NULL, /* user_data_free_func */ NULL); /* GError */ g_assert (registration_id > 0); } 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 setup_dbus_service (PtWindow *win) { introspection_data = g_dbus_node_info_new_for_xml (introspection_xml, NULL); g_assert (introspection_data != NULL); win->priv->owner_id = g_bus_own_name (G_BUS_TYPE_SESSION, "com.github.gkarsay.parlatype", G_BUS_NAME_OWNER_FLAGS_NONE, on_bus_acquired, on_name_acquired, on_name_lost, win, NULL); } void close_dbus_service (PtWindow *win) { if (win->priv->owner_id > 0) { g_bus_unown_name (win->priv->owner_id); g_dbus_node_info_unref (introspection_data); win->priv->owner_id = 0; } } parlatype-1.6.2/src/pt-dbus-service.h000066400000000000000000000016041353244124700175030ustar00rootroot00000000000000/* 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_DBUS_SERVICE_H #define PT_DBUS_SERVICE_H #include "config.h" #include "pt-window.h" void setup_dbus_service (PtWindow *win); void close_dbus_service (PtWindow *win); #endif parlatype-1.6.2/src/pt-goto-dialog.c000066400000000000000000000113171353244124700173120ustar00rootroot00000000000000/* 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; } } 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)); } 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; } 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, "/com/github/gkarsay/parlatype/goto-dialog.ui"); 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-1.6.2/src/pt-goto-dialog.h000066400000000000000000000030771353244124700173230ustar00rootroot00000000000000/* 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-1.6.2/src/pt-mediakeys.c000066400000000000000000000124001353244124700170520ustar00rootroot00000000000000/* 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 "pt-window.h" #include "pt-window-private.h" static void on_media_key_pressed (GDBusProxy *proxy, gchar *sender_name, gchar *signal_name, GVariant *parameters, PtWindow *win) { GVariant *app_parameter; GVariant *key_parameter; const gchar *app; const gchar *key; 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 (win->priv->player); } if (g_strcmp0 (key, "Previous") == 0 || g_strcmp0 (key, "Rewind") == 0) { pt_player_jump_back (win->priv->player); return; } if (g_strcmp0 (key, "Next") == 0 || g_strcmp0 (key, "FastForward") == 0) { pt_player_jump_forward (win->priv->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 (PtWindow *win) { if (!win->priv->proxy) return; g_dbus_proxy_call ( win->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, PtWindow *win) { grab_mediakeys (win); return FALSE; } static void remove_bus_watch (PtWindow *win) { if (win->priv->dbus_watch_id != 0) { g_bus_unwatch_name (win->priv->dbus_watch_id); win->priv->dbus_watch_id = 0; } } static void name_appeared_cb (GDBusConnection *connection, const gchar *name, const gchar *name_owner, PtWindow *win) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "MESSAGE", "Found %s", name); GError *error = NULL; win->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 (win); g_signal_connect ( win->priv->proxy, "g-signal", G_CALLBACK (on_media_key_pressed), win); g_signal_connect ( G_OBJECT (win), "focus-in-event", G_CALLBACK (window_focus_in_event_cb), win); remove_bus_watch (win); } static void clean_up (const gchar *name, PtWindow *win) { g_log_structured (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "MESSAGE", "Couldn’t find %s", name); if (win->priv->proxy) { g_object_unref (win->priv->proxy); win->priv->proxy = NULL; } remove_bus_watch (win); } static void name2_vanished_cb (GDBusConnection *connection, const gchar *name, PtWindow *win) { clean_up (name, win); /* We are done, nothing found */ } static void name1_vanished_cb (GDBusConnection *connection, const gchar *name, PtWindow *win) { clean_up (name, win); /* Now try org.gnome.SettingsDaemon … */ win->priv->dbus_watch_id = g_bus_watch_name ( G_BUS_TYPE_SESSION, "org.gnome.SettingsDaemon", G_BUS_NAME_WATCHER_FLAGS_NONE, (GBusNameAppearedCallback) name_appeared_cb, (GBusNameVanishedCallback) name2_vanished_cb, win, NULL); } void setup_mediakeys (PtWindow *win) { win->priv->proxy = NULL; win->priv->dbus_watch_id = 0; /* watch for GNOME settings daemon and stop watching immediatetly after because we don’t assume this will change later on */ win->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) name1_vanished_cb, win, NULL); } parlatype-1.6.2/src/pt-mediakeys.h000066400000000000000000000057411353244124700170710ustar00rootroot00000000000000/* 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 . */ /* 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 #include "pt-window.h" void setup_mediakeys (PtWindow *win); #endif parlatype-1.6.2/src/pt-preferences.c000066400000000000000000000574631353244124700174220ustar00rootroot00000000000000/* 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 #include "pt-asr-assistant.h" #include "pt-asr-settings.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; /* ASR tab */ GtkWidget *asr_page; PtAsrSettings *asr_settings; GtkWidget *asr_initial_box; GtkWidget *asr_ready_box; GtkWidget *add_asr_button; GtkWidget *remove_asr_button; GtkWidget *asr_view; GtkListStore *asr_store; GtkWidget *lm_chooser; GtkWidget *dict_chooser; GtkWidget *hmm_chooser; }; G_DEFINE_TYPE_WITH_PRIVATE (PtPreferencesDialog, pt_preferences_dialog, GTK_TYPE_DIALOG) 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))); } 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))); } 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))); } gchar* format_value_cb (GtkScale *scale, gdouble value, gpointer data) { return g_strdup_printf ("%d", 25 * (gint) value); } gboolean get_pps (GValue *value, GVariant *variant, gpointer data) { gint32 pps; pps = g_variant_get_int32 (variant); if (pps < 25) pps = 25; g_value_set_double (value, (gdouble) (pps / 25)); return TRUE; } GVariant* set_pps (const GValue *value, const GVariantType *type, gpointer data) { gdouble pps; pps = g_value_get_double (value); pps = pps * 25; return g_variant_new_int32 ((gint32) pps); } 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); } 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); } 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); } 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); } 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 asr_assistant_cancel_cb (GtkAssistant *assistant, gpointer user_data) { gtk_widget_destroy (GTK_WIDGET (assistant)); } static void asr_assistant_close_cb (GtkAssistant *assistant, PtPreferencesDialog *dlg) { GtkTreeSelection *sel; GtkTreeIter iter; gchar *name; gchar *id; gboolean empty; name = pt_asr_assistant_get_name (PT_ASR_ASSISTANT (assistant)); id = pt_asr_assistant_save_config ( PT_ASR_ASSISTANT (assistant), dlg->priv->asr_settings); gtk_widget_destroy (GTK_WIDGET (assistant)); empty = !gtk_tree_model_get_iter_first (GTK_TREE_MODEL (dlg->priv->asr_store), &iter); gtk_list_store_append (dlg->priv->asr_store, &iter); gtk_list_store_set (dlg->priv->asr_store, &iter, 0, FALSE, 1, id, 2, name, -1); sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (dlg->priv->asr_view)); gtk_tree_selection_select_iter (sel, &iter); if (empty) { gtk_widget_hide (dlg->priv->asr_initial_box); gtk_widget_show (dlg->priv->asr_ready_box); /* Make it the default config in settings and in the view */ g_settings_set_string (dlg->priv->editor, "asr-config", id); gtk_list_store_set (dlg->priv->asr_store, &iter, 0, TRUE, -1); } g_free (name); g_free (id); } static void launch_asr_assistant (PtPreferencesDialog *dlg) { GtkWindow *parent; GtkWidget *assistant; g_object_get (dlg, "transient-for", &parent, NULL); assistant = GTK_WIDGET (pt_asr_assistant_new (parent)); g_signal_connect (assistant, "cancel", G_CALLBACK (asr_assistant_cancel_cb), NULL); g_signal_connect (assistant, "close", G_CALLBACK (asr_assistant_close_cb), dlg); gtk_widget_show (assistant); g_object_unref (parent); } void add_asr_button_clicked_cb (GtkToolButton *button, PtPreferencesDialog *dlg) { launch_asr_assistant (dlg); } void initial_asr_button_clicked_cb (GtkButton *button, PtPreferencesDialog *dlg) { launch_asr_assistant (dlg); } gboolean confirm_delete (GtkWindow *parent, gchar *name) { g_assert_nonnull (name); GtkWidget *dialog; gchar *message; gchar *secondary_message; gint response; message = _("Deleting configuration"); secondary_message = g_strdup_printf (_("Do you really want to delete “%s”?"), name); dialog = gtk_message_dialog_new (parent, GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "%s", message); gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), "%s", secondary_message); response = gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); g_free (secondary_message); return (response == GTK_RESPONSE_YES); } void remove_asr_button_clicked_cb (GtkToolButton *button, PtPreferencesDialog *dlg) { GtkTreeSelection *sel; GtkTreeIter iter; gboolean active; gboolean last; gchar *name; gchar *id; sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (dlg->priv->asr_view)); if (!gtk_tree_selection_get_selected (sel, NULL, &iter)) return; gtk_tree_model_get ( GTK_TREE_MODEL (dlg->priv->asr_store), &iter, 0, &active, 1, &id, 2, &name, -1); if (confirm_delete (GTK_WINDOW (dlg), name)) { gtk_list_store_remove (dlg->priv->asr_store, &iter); pt_asr_settings_remove_config (dlg->priv->asr_settings, id); last = !gtk_tree_model_get_iter_first (GTK_TREE_MODEL (dlg->priv->asr_store), &iter); if (last) { gtk_widget_hide (dlg->priv->asr_ready_box); gtk_widget_show (dlg->priv->asr_initial_box); g_settings_set_string (dlg->priv->editor, "asr-config", "none"); } else { gtk_tree_selection_select_iter (sel, &iter); if (active) { g_free (id); gtk_tree_model_get ( GTK_TREE_MODEL (dlg->priv->asr_store), &iter, 1, &id, -1); g_settings_set_string (dlg->priv->editor, "asr-config", id); gtk_list_store_set (dlg->priv->asr_store, &iter, 0, TRUE, -1); } } } g_free (name); g_free (id); } static void clear_active (GtkListStore *store) { GtkTreeIter iter; gboolean valid; valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter); while (valid) { gtk_list_store_set (store, &iter, 0, FALSE, -1); valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter); } } static void set_active (PtPreferencesDialog *dlg, GtkTreePath *path) { GtkListStore *store = dlg->priv->asr_store; GtkTreeIter iter; gboolean active; gchar *new; gtk_tree_model_get_iter (GTK_TREE_MODEL (store), &iter, path); gtk_tree_model_get ( GTK_TREE_MODEL (store), &iter, 0, &active, 1, &new, -1); if (!active) { clear_active (store); gtk_list_store_set (store, &iter, 0, TRUE, -1); g_settings_set_string (dlg->priv->editor, "asr-config", new); } g_free (new); } void asr_default_toggled_cb (GtkCellRendererToggle *cell, gchar *path_string, gpointer user_data) { PtPreferencesDialog *dlg = PT_PREFERENCES_DIALOG (user_data); GtkTreePath *path; path = gtk_tree_path_new_from_string (path_string); set_active (dlg, path); gtk_tree_path_free (path); } static gchar* get_path_for_uri (gchar *uri) { GFile *file; gchar *path; file = g_file_new_for_uri (uri); path = g_file_get_path (file); g_object_unref (file); return path; } static gchar* get_uri_for_path (gchar *path) { GFile *file; gchar *uri; file = g_file_new_for_path (path); uri = g_file_get_uri (file); g_object_unref (file); return uri; } static gchar* get_selected_id (GtkTreeView *view) { GtkTreeSelection *sel; GtkTreeModel *model; GtkTreeIter iter; gchar *id; sel = gtk_tree_view_get_selection (view); gtk_tree_selection_get_selected (sel, &model, &iter); gtk_tree_model_get (model, &iter, 1, &id, -1); return id; } void prefs_lm_chooser_file_set_cb (GtkFileChooserButton *button, PtPreferencesDialog *dlg) { gchar *id; gchar *lm_uri, *lm; lm_uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (button)); lm = get_path_for_uri (lm_uri); id = get_selected_id (GTK_TREE_VIEW (dlg->priv->asr_view)); pt_asr_settings_set_string (dlg->priv->asr_settings, id, "lm", lm); g_free (id); g_free (lm); g_free (lm_uri); } void prefs_dict_chooser_file_set_cb (GtkFileChooserButton *button, PtPreferencesDialog *dlg) { gchar *id; gchar *dict_uri, *dict; dict_uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (button)); dict = get_path_for_uri (dict_uri); id = get_selected_id (GTK_TREE_VIEW (dlg->priv->asr_view)); pt_asr_settings_set_string (dlg->priv->asr_settings, id, "dict", dict); g_free (id); g_free (dict); g_free (dict_uri); } void prefs_hmm_chooser_file_set_cb (GtkFileChooserButton *button, PtPreferencesDialog *dlg) { gchar *id; gchar *hmm_uri, *hmm; hmm_uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (button)); hmm = get_path_for_uri (hmm_uri); id = get_selected_id (GTK_TREE_VIEW (dlg->priv->asr_view)); pt_asr_settings_set_string (dlg->priv->asr_settings, id, "hmm", hmm); g_free (id); g_free (hmm); g_free (hmm_uri); } static void asr_selection_changed_cb (GtkTreeSelection *sel, gpointer user_data) { PtPreferencesDialog *dlg = PT_PREFERENCES_DIALOG (user_data); GtkTreeIter iter; gchar *id; gchar *lm, *dict, *hmm; gchar *lm_uri, *dict_uri, *hmm_uri; if (!gtk_tree_selection_get_selected (sel, NULL, &iter)) return; gtk_tree_model_get ( GTK_TREE_MODEL (dlg->priv->asr_store), &iter, 1, &id, -1); lm = pt_asr_settings_get_string (dlg->priv->asr_settings, id, "lm"); dict = pt_asr_settings_get_string (dlg->priv->asr_settings, id, "dict"); hmm = pt_asr_settings_get_string (dlg->priv->asr_settings, id, "hmm"); lm_uri = get_uri_for_path (lm); dict_uri = get_uri_for_path (dict); hmm_uri = get_uri_for_path (hmm); gtk_file_chooser_set_uri (GTK_FILE_CHOOSER (dlg->priv->lm_chooser), lm_uri); gtk_file_chooser_set_uri (GTK_FILE_CHOOSER (dlg->priv->dict_chooser), dict_uri); gtk_file_chooser_set_uri (GTK_FILE_CHOOSER (dlg->priv->hmm_chooser), hmm_uri); g_free (id); g_free (lm); g_free (lm_uri); g_free (dict); g_free (dict_uri); g_free (hmm); g_free (hmm_uri); } static void pt_preferences_dialog_init (PtPreferencesDialog *dlg) { dlg->priv = pt_preferences_dialog_get_instance_private (dlg); dlg->priv->editor = g_settings_new ("com.github.gkarsay.parlatype"); dlg->priv->player = pt_player_new (); pt_player_setup_player (dlg->priv->player, NULL); /* no error handling, already checked in main window */ GApplication *app; app = g_application_get_default (); dlg->priv->asr_settings = g_object_ref (pt_app_get_asr_settings (PT_APP (app))); 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); GdkDisplay *display; display = gdk_display_get_default (); #ifdef GDK_WINDOWING_X11 if (GDK_IS_X11_DISPLAY (display)) { 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); } #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_with_mapping ( dlg->priv->editor, "pps", pps_adj, "value", G_SETTINGS_BIND_DEFAULT, get_pps, set_pps, NULL, 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); /* setup ASR page */ if (!pt_app_get_asr (PT_APP (app))) { gint num; num = gtk_notebook_page_num (GTK_NOTEBOOK (dlg->priv->notebook), dlg->priv->asr_page); g_assert (num != -1); gtk_notebook_remove_page (GTK_NOTEBOOK (dlg->priv->notebook), num); return; } GtkTreeSelection *sel; GtkTreeIter row; GtkTreeIter active_row; gchar **configs = NULL; gchar *active_id; gboolean active; gint i = 0; dlg->priv->asr_store = gtk_list_store_new (3, G_TYPE_BOOLEAN, /* active */ G_TYPE_STRING, /* ID */ G_TYPE_STRING); /* name */ configs = pt_asr_settings_get_configs (dlg->priv->asr_settings); gtk_tree_view_set_model (GTK_TREE_VIEW (dlg->priv->asr_view), GTK_TREE_MODEL (dlg->priv->asr_store)); sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (dlg->priv->asr_view)); g_signal_connect (sel, "changed", G_CALLBACK (asr_selection_changed_cb), dlg); if (!configs[0]) { gtk_widget_hide (dlg->priv->asr_ready_box); g_strfreev (configs); return; } gtk_widget_hide (dlg->priv->asr_initial_box); active_id = g_settings_get_string (dlg->priv->editor, "asr-config"); while (configs[i]) { active = (g_strcmp0 (active_id, configs[i]) == 0); gtk_list_store_append (dlg->priv->asr_store, &row); gtk_list_store_set (dlg->priv->asr_store, &row, 0, active, 1, configs[i], 2, pt_asr_settings_get_string (dlg->priv->asr_settings, configs[i], "name"), -1); if (i == 0) active_row = row; if (active) active_row = row; i++; } gtk_tree_selection_select_iter (sel, &active_row); g_free (active_id); g_strfreev (configs); } 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_clear_object (&dlg->priv->asr_settings); 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, "/com/github/gkarsay/parlatype/preferences.ui"); 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); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, asr_page); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, add_asr_button); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, remove_asr_button); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, asr_view); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, lm_chooser); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, dict_chooser); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, hmm_chooser); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, asr_initial_box); gtk_widget_class_bind_template_child_private (widget_class, PtPreferencesDialog, asr_ready_box); } 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-1.6.2/src/pt-preferences.h000066400000000000000000000030021353244124700174030ustar00rootroot00000000000000/* 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-1.6.2/src/pt-window-dnd.c000066400000000000000000000147171353244124700171660ustar00rootroot00000000000000/* 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->priv->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; } 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)) { 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. */ 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-1.6.2/src/pt-window-dnd.h000066400000000000000000000021661353244124700171660ustar00rootroot00000000000000/* 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 /* from LibreOffice */ }; static const GtkTargetEntry drag_target_string[] = { { "STRING", GTK_TARGET_OTHER_APP, TARGET_STRING } , { "UTF8_STRING", GTK_TARGET_OTHER_APP, TARGET_UTF8_STRING } }; void pt_window_setup_dnd (PtWindow *win); #endif parlatype-1.6.2/src/pt-window-private.h000066400000000000000000000036341353244124700200740ustar00rootroot00000000000000/* 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 #include #include struct _PtWindowPrivate { GSettings *editor; PtAsrSettings *asr_settings; PtAsrOutput *output; GDBusProxy *proxy; gint dbus_watch_id; GtkRecentManager *recent; GtkAccelGroup *accels; PtPlayer *player; GtkWidget *progress_dlg; gint progress_handler_id; guint output_handler_id1; guint output_handler_id2; GtkClipboard *clip; gulong clip_handler_id; /* Headerbar widgets */ GtkWidget *button_open; GtkWidget *primary_menu_button; /* Main window widgets */ GtkWidget *button_play; GtkWidget *button_fast_back; // not used GtkWidget *button_fast_forward; // not used GtkWidget *button_jump_back; GtkWidget *button_jump_forward; GtkWidget *volumebutton; GtkWidget *pos_menu_button; GtkWidget *pos_label; GMenuItem *go_to_timestamp; GtkWidget *speed_scale; GtkWidget *waveviewer; GMenuModel *secondary_menu; PtWavedata *wavedata; gint64 last_time; // last time to compare if it changed gint timer; gdouble speed; guint owner_id; }; #endif parlatype-1.6.2/src/pt-window.c000066400000000000000000001154761353244124700164270ustar00rootroot00000000000000/* 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 #include #include "pt-app.h" #include "pt-asr-assistant.h" #include "pt-dbus-service.h" #include "pt-goto-dialog.h" #include "pt-mediakeys.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) void play_button_toggled_cb (GtkToggleButton *button, PtWindow *win); void jump_back_button_clicked_cb (GtkButton *button, PtWindow *win); void jump_forward_button_clicked_cb (GtkButton *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); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (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->priv->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->priv->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); } void goto_position (GSimpleAction *action, GVariant *parameter, gpointer user_data) { PtWindow *win; win = PT_WINDOW (user_data); PtGotoDialog *dlg; gint pos; dlg = pt_goto_dialog_new (GTK_WINDOW (win)); pt_goto_dialog_set_pos (dlg, pt_player_get_position (win->priv->player) / 1000); pt_goto_dialog_set_max (dlg, pt_player_get_duration (win->priv->player) / 1000); if (gtk_dialog_run (GTK_DIALOG (dlg)) == GTK_RESPONSE_OK) { pos = pt_goto_dialog_get_pos (dlg); pt_player_jump_to_position (win->priv->player, pos * 1000); pt_waveviewer_set_follow_cursor (PT_WAVEVIEWER (win->priv->waveviewer), TRUE); } gtk_widget_destroy (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); } 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 void setup_sphinx (PtWindow *win) { GError *error = NULL; pt_asr_settings_apply_config ( win->priv->asr_settings, g_settings_get_string (win->priv->editor, "asr-config"), win->priv->player); pt_player_setup_sphinx (win->priv->player, &error); if (error) { pt_error_message (win, error->message, NULL); g_clear_error (&error); } } static void asr_output_search_cancelled_cb (PtAsrOutput *output, PtWindow *win) { GAction *action; GVariant *state; g_signal_handler_disconnect (win->priv->output, win->priv->output_handler_id1); g_signal_handler_disconnect (win->priv->output, win->priv->output_handler_id2); g_clear_object (&win->priv->output); action = g_action_map_lookup_action (G_ACTION_MAP (win), "mode"); state = g_variant_new_string ("playback"); g_simple_action_set_state (G_SIMPLE_ACTION (action), state); } static void asr_output_app_found_cb (PtAsrOutput *output, PtWindow *win) { GApplication *app; GNotification *notification; gchar *summary; gchar *message; g_signal_handler_disconnect (win->priv->output, win->priv->output_handler_id1); g_signal_handler_disconnect (win->priv->output, win->priv->output_handler_id2); summary = g_strdup_printf (_("Found %s"), pt_asr_output_get_app_name (output)); message = _("Press “Play” to start automatic speech recognition."); notification = g_notification_new (summary); g_notification_set_body (notification, message); app = G_APPLICATION (gtk_window_get_application (GTK_WINDOW (win))); g_application_send_notification (app, "app-found", notification); setup_sphinx (win); g_application_withdraw_notification (app, "app-found"); g_object_unref (notification); g_free (summary); } static void set_mode_asr (PtWindow *win) { win->priv->output = pt_asr_output_new (); win->priv->output_handler_id1 = g_signal_connect ( win->priv->output, "app-found", G_CALLBACK (asr_output_app_found_cb), win); win->priv->output_handler_id2 = g_signal_connect ( win->priv->output, "search-cancelled", G_CALLBACK (asr_output_search_cancelled_cb), win); pt_asr_output_search_app (win->priv->output, GTK_WINDOW (win)); } static void asr_assistant_cancel_cb (GtkAssistant *assistant, gpointer user_data) { gtk_widget_destroy (GTK_WIDGET (assistant)); } static void asr_assistant_close_cb (GtkAssistant *assistant, PtWindow *win) { gchar *name; gchar *id; name = pt_asr_assistant_get_name (PT_ASR_ASSISTANT (assistant)); id = pt_asr_assistant_save_config ( PT_ASR_ASSISTANT (assistant), win->priv->asr_settings); g_settings_set_string (win->priv->editor, "asr-config", id); gtk_widget_destroy (GTK_WIDGET (assistant)); g_free (name); g_free (id); } static void launch_asr_assistant (PtWindow *win) { GtkWidget *assistant; assistant = GTK_WIDGET (pt_asr_assistant_new (GTK_WINDOW (win))); g_signal_connect (assistant, "cancel", G_CALLBACK (asr_assistant_cancel_cb), NULL); g_signal_connect (assistant, "close", G_CALLBACK (asr_assistant_close_cb), win); gtk_widget_show (assistant); } static void set_mode_playback (PtWindow *win) { GError *error = NULL; pt_player_setup_player (win->priv->player, &error); if (error) { pt_error_message (win, error->message, NULL); g_clear_error (&error); } } void change_mode (GSimpleAction *action, GVariant *state, gpointer user_data) { PtWindow *win = PT_WINDOW (user_data); const gchar *mode; if (!win->priv->asr_settings) { GtkApplication *app; app = gtk_window_get_application (GTK_WINDOW (win)); win->priv->asr_settings = g_object_ref (pt_app_get_asr_settings (PT_APP (app))); } mode = g_variant_get_string (state, NULL); if (g_strcmp0 (mode, "playback") == 0) { g_clear_object (&win->priv->output); set_mode_playback (win); } else if (g_strcmp0 (mode, "asr") == 0) { if (pt_asr_settings_have_configs (win->priv->asr_settings)) { /* TODO && have config saved in GSettings */ set_mode_asr (win); } else { launch_asr_assistant (win); return; } } else { g_assert_not_reached (); } 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 } }; static void update_time (PtWindow *win) { gchar *text; gint64 time; time = pt_player_get_position (win->priv->player); /* 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->priv->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; } 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); } 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->priv->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->priv->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->priv->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->priv->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 insensitve: 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 destroy_progress_dlg (PtWindow *win) { if (win->priv->progress_handler_id > 0) { g_signal_handler_disconnect (win->priv->player, win->priv->progress_handler_id); win->priv->progress_handler_id = 0; } if (win->priv->progress_dlg) { gtk_widget_destroy (win->priv->progress_dlg); } } static void progress_response_cb (GtkWidget *dialog, gint response, PtWindow *win) { if (response == GTK_RESPONSE_CANCEL) pt_player_cancel (win->priv->player); /* This will trigger an error */ } static void show_progress_dlg (PtWindow *win) { if (win->priv->progress_dlg) { /* actually this should never happen */ gtk_window_present (GTK_WINDOW (win->priv->progress_dlg)); return; } win->priv->progress_dlg = GTK_WIDGET (pt_progress_dialog_new (GTK_WINDOW (win))); g_signal_connect (win->priv->progress_dlg, "destroy", G_CALLBACK (gtk_widget_destroyed), &win->priv->progress_dlg); g_signal_connect (win->priv->progress_dlg, "response", G_CALLBACK (progress_response_cb), win); win->priv->progress_handler_id = g_signal_connect_swapped (win->priv->player, "load-progress", G_CALLBACK (pt_progress_dialog_set_progress), PT_PROGRESS_DIALOG (win->priv->progress_dlg)); gtk_widget_show_all (win->priv->progress_dlg); } 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_fast_back, state); gtk_widget_set_sensitive (win->priv->button_fast_forward, 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); if (state) { open_context = gtk_widget_get_style_context (win->priv->button_open); gtk_style_context_remove_class (open_context, "suggested-action"); destroy_progress_dlg (win); display_name = pt_player_get_filename (win->priv->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->priv->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); win->priv->wavedata = pt_player_get_data (win->priv->player, g_settings_get_int (win->priv->editor, "pps")); pt_waveviewer_set_wave (PT_WAVEVIEWER (win->priv->waveviewer), win->priv->wavedata); pt_wavedata_free (win->priv->wavedata); /* add timer after waveviewer, didn’t update cursor otherwise sometimes */ 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); pt_waveviewer_set_wave (PT_WAVEVIEWER (win->priv->waveviewer), NULL); } } static void player_error_cb (PtPlayer *player, GError *error, PtWindow *win) { destroy_progress_dlg (win); pt_window_ready_to_play (win, FALSE); pt_error_message (win, error->message, NULL); /* TODO clear error? */ } static void open_cb (PtPlayer *player, GAsyncResult *res, gpointer *data) { PtWindow *win = (PtWindow *) data; GError *error = NULL; destroy_progress_dlg (win); if (!pt_player_open_uri_finish (player, res, &error)) { pt_error_message (win, error->message, NULL); g_error_free (error); return; } pt_window_ready_to_play (win, TRUE); } gchar* pt_window_get_uri (PtWindow *win) { return pt_player_get_uri (win->priv->player); } void pt_window_open_file (PtWindow *win, gchar *uri) { show_progress_dlg (win); pt_window_ready_to_play (win, FALSE); pt_player_open_uri_async (win->priv->player, uri, (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); } void play_button_toggled_cb (GtkToggleButton *button, PtWindow *win) { /* GUI button toggled, block signals from PtPlayer */ g_signal_handlers_block_by_func (win->priv->player, player_play_toggled_cb, win); pt_player_play_pause (win->priv->player); g_signal_handlers_unblock_by_func (win->priv->player, player_play_toggled_cb, win); update_play_after_toggle (win, button); } static void player_end_of_stream_cb (PtPlayer *player, PtWindow *win) { /* Don’t jump back */ GtkToggleButton *play; play = GTK_TOGGLE_BUTTON (win->priv->button_play); g_signal_handlers_block_by_func (play, play_button_toggled_cb, win); gtk_toggle_button_set_active (play, FALSE); g_signal_handlers_unblock_by_func (play, play_button_toggled_cb, win); pt_player_pause (win->priv->player); change_play_button_tooltip (win); } static void player_jumped_back_cb (PtPlayer *player, PtWindow *win) { GtkButton *button; button = GTK_BUTTON (win->priv->button_jump_back); g_signal_handlers_block_by_func (button, jump_back_button_clicked_cb, win); gtk_button_clicked (button); g_signal_handlers_unblock_by_func (button, jump_back_button_clicked_cb, win); } void jump_back_button_clicked_cb (GtkButton *button, PtWindow *win) { g_signal_handlers_block_by_func (win->priv->player, player_jumped_back_cb, win); pt_player_jump_back (win->priv->player); g_signal_handlers_unblock_by_func (win->priv->player, player_jumped_back_cb, win); } static void player_jumped_forward_cb (PtPlayer *player, PtWindow *win) { GtkButton *button; button = GTK_BUTTON (win->priv->button_jump_forward); g_signal_handlers_block_by_func (button, jump_forward_button_clicked_cb, win); gtk_button_clicked (button); g_signal_handlers_unblock_by_func (button, jump_forward_button_clicked_cb, win); } void jump_forward_button_clicked_cb (GtkButton *button, PtWindow *win) { pt_player_jump_forward (win->priv->player); } /* currently not used */ gboolean fast_back_button_pressed_cb (GtkButton *button, GdkEvent *event, PtWindow *win) { pt_player_rewind (win->priv->player, 2.0); return FALSE; } /* currently not used */ gboolean fast_back_button_released_cb (GtkButton *button, GdkEvent *event, PtWindow *win) { pt_player_set_speed (win->priv->player, win->priv->speed); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (win->priv->button_play))) { pt_player_play (win->priv->player); } else { pt_player_pause (win->priv->player); } return FALSE; } /* currently not used */ gboolean fast_forward_button_pressed_cb (GtkButton *button, GdkEvent *event, PtWindow *win) { pt_player_fast_forward (win->priv->player, 2.0); return FALSE; } /* currently not used */ gboolean fast_forward_button_released_cb (GtkButton *button, GdkEvent *event, PtWindow *win) { pt_player_set_speed (win->priv->player, win->priv->speed); if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (win->priv->button_play))) { pt_player_play (win->priv->player); } else { pt_player_pause (win->priv->player); } return FALSE; } void speed_changed_cb (GtkRange *range, PtWindow *win) { win->priv->speed = gtk_range_get_value (range); pt_player_set_speed (win->priv->player, win->priv->speed); } static void player_asr_final_cb (PtPlayer *player, gchar *word, PtWindow *win) { pt_asr_output_final (win->priv->output, word); } static void player_asr_hypothesis_cb (PtPlayer *player, gchar *word, PtWindow *win) { pt_asr_output_hypothesis (win->priv->output, word); } void speed_scale_direction_changed_cb (GtkWidget *widget, GtkTextDirection previous_direction, gpointer data) { if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) gtk_scale_set_value_pos (GTK_SCALE (widget), GTK_POS_LEFT); else gtk_scale_set_value_pos (GTK_SCALE (widget), GTK_POS_RIGHT); } static void swap_accelerators (GtkWidget *widget, GtkAccelGroup *accels, guint old, guint new) { gtk_widget_remove_accelerator ( widget, accels, old, GDK_CONTROL_MASK); gtk_widget_add_accelerator ( widget, "clicked", accels, new, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); } void jump_back_direction_changed_cb (GtkWidget *widget, GtkTextDirection previous_direction, gpointer data) { PtWindow *self = PT_WINDOW (data); guint old, new; if (previous_direction == GTK_TEXT_DIR_LTR) { old = GDK_KEY_Left; new = GDK_KEY_Right; } else { old = GDK_KEY_Right; new = GDK_KEY_Left; } swap_accelerators (widget, self->priv->accels, old, new); } void jump_forward_direction_changed_cb (GtkWidget *widget, GtkTextDirection previous_direction, gpointer data) { PtWindow *self = PT_WINDOW (data); guint old, new; if (previous_direction == GTK_TEXT_DIR_LTR) { old = GDK_KEY_Right; new = GDK_KEY_Left; } else { old = GDK_KEY_Left; new = GDK_KEY_Right; } swap_accelerators (widget, self->priv->accels, old, new); } 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, "pps") == 0) { gchar *uri; uri = pt_player_get_uri (win->priv->player); if (uri) { win->priv->wavedata = pt_player_get_data (win->priv->player, g_settings_get_int (win->priv->editor, "pps")); g_object_set (win->priv->waveviewer, "zoom", TRUE, NULL); pt_waveviewer_set_wave (PT_WAVEVIEWER (win->priv->waveviewer), win->priv->wavedata); pt_wavedata_free (win->priv->wavedata); g_free (uri); } 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_settings (PtWindow *win) { win->priv->editor = g_settings_new ("com.github.gkarsay.parlatype"); g_settings_bind_with_mapping ( win->priv->editor, "rewind-on-pause", win->priv->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->priv->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->priv->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->priv->player, "repeat-all", G_SETTINGS_BIND_GET); g_settings_bind ( win->priv->editor, "repeat-selection", win->priv->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->priv->player, "timestamp-precision", G_SETTINGS_BIND_GET); g_settings_bind ( win->priv->editor, "timestamp-fixed", win->priv->player, "timestamp-fixed", G_SETTINGS_BIND_GET); g_settings_bind ( win->priv->editor, "timestamp-delimiter", win->priv->player, "timestamp-delimiter", G_SETTINGS_BIND_GET); g_settings_bind ( win->priv->editor, "timestamp-fraction-sep", win->priv->player, "timestamp-fraction-sep", G_SETTINGS_BIND_GET); /* 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; /* Set size on both X11 and Wayland */ 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")); } /* The following would fail silently on Wayland, we make it conditional anyway */ #ifdef GDK_WINDOWING_X11 GdkDisplay *display; display = gdk_display_get_default (); if (GDK_IS_X11_DISPLAY (display)) { 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")); } } #endif } static void setup_player (PtWindow *win) { GError *error = NULL; win->priv->player = pt_player_new (); if (!pt_player_setup_player (win->priv->player, &error)) { gchar *secondary_message = g_strdup_printf ( _("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"), error->message); pt_error_message (win, _("Fatal error"), secondary_message); g_clear_error (&error); g_free (secondary_message); exit (2); } pt_player_connect_waveviewer ( win->priv->player, PT_WAVEVIEWER (win->priv->waveviewer)); g_signal_connect (win->priv->player, "end-of-stream", G_CALLBACK (player_end_of_stream_cb), win); g_signal_connect (win->priv->player, "error", G_CALLBACK (player_error_cb), win); g_signal_connect (win->priv->player, "play-toggled", G_CALLBACK (player_play_toggled_cb), win); g_signal_connect (win->priv->player, "jumped-back", G_CALLBACK (player_jumped_back_cb), win); g_signal_connect (win->priv->player, "jumped-forward", G_CALLBACK (player_jumped_forward_cb), win); g_object_bind_property ( win->priv->volumebutton, "value", win->priv->player, "volume", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); g_signal_connect (win->priv->player, "asr-final", G_CALLBACK (player_asr_final_cb), win); g_signal_connect (win->priv->player, "asr-hypothesis", G_CALLBACK (player_asr_hypothesis_cb), win); } static void setup_accels_actions_headerbar (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); /* GtkHeader workaround for glade 3.16 + Menu button */ GtkBuilder *builder; GtkWidget *hbar; GMenuModel *primary_menu; builder = gtk_builder_new_from_resource ("/com/github/gkarsay/parlatype/window-headerbar.ui"); hbar = GTK_WIDGET (gtk_builder_get_object (builder, "headerbar")); win->priv->button_open = GTK_WIDGET (gtk_builder_get_object (builder, "button_open")); win->priv->primary_menu_button = GTK_WIDGET (gtk_builder_get_object (builder, "primary_menu_button")); gtk_window_set_titlebar (GTK_WINDOW (win), hbar); gtk_builder_connect_signals (builder, win); g_object_unref (builder); builder = gtk_builder_new_from_resource ("/com/github/gkarsay/parlatype/menus.ui"); primary_menu = G_MENU_MODEL (gtk_builder_get_object (builder, "primary-menu")); win->priv->secondary_menu = G_MENU_MODEL (gtk_builder_get_object (builder, "secondary-menu")); gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (win->priv->primary_menu_button), primary_menu); gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (win->priv->pos_menu_button), win->priv->secondary_menu); g_object_unref (builder); win->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, win->priv->go_to_timestamp); GApplication *app; app = g_application_get_default (); if (!pt_app_get_asr (PT_APP (app))) { g_menu_remove (G_MENU (primary_menu), 0); } /* Accels */ win->priv->accels = gtk_accel_group_new (); gtk_window_add_accel_group (GTK_WINDOW (win), win->priv->accels); gtk_widget_add_accelerator ( win->priv->primary_menu_button, "clicked", win->priv->accels, GDK_KEY_F10, 0, GTK_ACCEL_VISIBLE); guint jump_back, jump_forward; if (gtk_widget_get_default_direction () == GTK_TEXT_DIR_LTR) { jump_back = GDK_KEY_Left; jump_forward = GDK_KEY_Right; } else { jump_back = GDK_KEY_Right; jump_forward = GDK_KEY_Left; } gtk_widget_add_accelerator ( win->priv->button_jump_back, "clicked", win->priv->accels, jump_back, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); gtk_widget_add_accelerator ( win->priv->button_jump_forward, "clicked", win->priv->accels, jump_forward, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); gtk_widget_add_accelerator ( win->priv->button_play, "clicked", win->priv->accels, GDK_KEY_space, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); } 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_settings (win); setup_accels_actions_headerbar (win); setup_mediakeys (win); /* this is in pt_mediakeys.c */ pt_window_setup_dnd (win); /* this is in pt_window_dnd.c */ setup_dbus_service (win); /* this is in pt_dbus_service.c */ win->priv->asr_settings = NULL; win->priv->output = NULL; win->priv->output_handler_id1 = 0; win->priv->output_handler_id2 = 0; win->priv->recent = gtk_recent_manager_get_default (); win->priv->timer = 0; win->priv->last_time = 0; win->priv->progress_dlg = NULL; win->priv->progress_handler_id = 0; win->priv->wavedata = NULL; 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 ("com.github.gkarsay.parlatype"); /* Flip speed scale for right to left layouts */ if (gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL) gtk_scale_set_value_pos (GTK_SCALE (win->priv->speed_scale), GTK_POS_LEFT); 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); } static void pt_window_dispose (GObject *object) { PtWindow *win; win = PT_WINDOW (object); close_dbus_service (win); /* 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->priv->proxy); destroy_progress_dlg (win); g_clear_object (&win->priv->player); g_clear_object (&win->priv->output); g_clear_object (&win->priv->asr_settings); g_clear_object (&win->priv->go_to_timestamp); 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; gtk_widget_class_set_template_from_resource (widget_class, "/com/github/gkarsay/parlatype/window.ui"); gtk_widget_class_bind_template_child_private (widget_class, PtWindow, button_play); gtk_widget_class_bind_template_child_private (widget_class, PtWindow, button_fast_back); // not used gtk_widget_class_bind_template_child_private (widget_class, PtWindow, button_fast_forward); // not used 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-1.6.2/src/pt-window.h000077500000000000000000000031501353244124700164200ustar00rootroot00000000000000/* 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 "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; /*< 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-1.6.2/src/resources/000077500000000000000000000000001353244124700163275ustar00rootroot00000000000000parlatype-1.6.2/src/resources/asr-assistant.ui000066400000000000000000000315421353244124700214670ustar00rootroot00000000000000 500 True False vertical 12 True False 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. True True 0 False True 0 True False Parlatype uses CMU Sphinx as its speech recognition engine. You can download models suitable for CMU Sphinx for example from <a href="https://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/">CMU Sphinx’ sourceforge repository</a>. It has models for some of the most widespread languages. True True 0 False True 1 True False If it’s compressed, uncompress the model. Save it to a folder where it can stay. Parlatype doesn’t copy the model internally. True 0 False True 2 True False When you are finished, specify the folder with the model: True 0 False True 3 True False select-folder False True 4 True False vertical 6 True False Language model 0 False True 0 True False This is a message label. 0 False True 1 True False Select language model False True 2 True False 0 False True 3 True False 12 Dictionary 0 False True 4 True False This is a message label. 0 False True 5 True False Select dictionary False True 6 True False 0 False True 7 True False 12 Acoustic model 0 False True 8 True False This is a message label. 0 False True 9 True False select-folder Select acoustic model folder False True 10 True False 0 False True 11 True False vertical 12 True False Setup is completed. Please give this configuration a name: True 0 False True 0 True True True False True 1 parlatype-1.6.2/src/resources/goto-dialog.ui000066400000000000000000000122061353244124700210740ustar00rootroot00000000000000 100000000000000 1 10 parlatype-1.6.2/src/resources/help-overlay.ui000066400000000000000000000142241353244124700213000ustar00rootroot00000000000000 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-1.6.2/src/resources/menus.ui000066400000000000000000000033701353244124700200200ustar00rootroot00000000000000
Manual transcription win.mode playback Automatic transcription win.mode asr
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-1.6.2/src/resources/parlatype.css000066400000000000000000000003441353244124700210430ustar00rootroot00000000000000/* 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; } parlatype-1.6.2/src/resources/parlatype.gresource.xml000066400000000000000000000012251353244124700230470ustar00rootroot00000000000000 window.ui menus.ui goto-dialog.ui preferences.ui asr-assistant.ui window-headerbar.ui parlatype.css help-overlay.ui parlatype-1.6.2/src/resources/preferences.ui000066400000000000000000001531441353244124700211770ustar00rootroot00000000000000 1 60 10 1 10 1 60 10 1 10 10 2 1 1 1 8 4 1 1 None None # #Number signs# ( (Round brackets) [ [Square brackets] . . (point) - - (hyphen) 0 Full seconds 1 10th seconds 2 100th seconds parlatype-1.6.2/src/resources/window-headerbar.ui000066400000000000000000000033161353244124700221130ustar00rootroot00000000000000 True False Parlatype True _Open True True True True Open a file app.open True True False False none True False open-menu-symbolic end 2 parlatype-1.6.2/src/resources/window.ui000066400000000000000000000426671353244124700202140ustar00rootroot00000000000000 -3 3 0.10000000000000001 10 0.5 2 1 0.10000000000000001 0.10000000000000001 1000 1 10 1 1 0.10000000000000001 0.10000000000000001

8?8_b:hxU9Sğ7|Ϳ@Tr85i݂`󇲋 AIN5\9y2 Gy-tHrȮzM1€{#&ϻ ,)%5|8Go10kb^fOxy<;]9R=+gf:6R=7$` 8|+8gPvQQ KrRj, ,"];/OggS[am&6%%%#&#(,-'''(,+)++-*,---,)./.,0.(+/0(..>]qZ;ܟ3$ #.Hs32zds>| ՈD٘9\)|!2F '\Pk帷jͶ~7_v@?< ^h%k(!~eqxn p)Cn*/]%l1%z{9mYS3y3ni24Rpڍ]Rx 1ʙ%Rkp :&%]^Sȕy:bmROWsbAd?!tA&]؏@Uhk1VU᪙IJܥ߸wCiO4@I "L7jb?Q^2ϓ{%!AIw˾yeP߯u M揻4Z(Yf4%il Tp(}X\F\ h|+6;Tcрmw-:K RG4Uu"zVfw5zaDzmy̾{ _ui{cЪ^^߲6O,ל1?a$]3[>bc>B S 7ՊDKTe ՚bd>XI&O@ZAl,\;hfֽ;*XѸ^阬V&zN?=Kz9,lS5XsBykvU5 *8Iaſ r̸NU<mNTg>Ϫzozʥ`>'"΢'l9ո#'ނ;2ƀQ(݊9U/8i9|C+1 #5,K[1/&S\|9hɳQ\ϸ VI qw_ V1:4~ͣ\?VO A3-J\YlV-EĶ[T A8j,s|.ֺB;4f-wL `"V&clm~3J$RKqoNif@' FDjPQ1sPd#Psw~9(Ddٗ}xneZMa*9;g$WC9Uʚ*[+3 gq|=QC'fWYʀݩW9:!L&5J=+):H|֓E;|^YϾm*{#1[y$+8u0G{h8;Z47l^-(6ۍ)# s~+2gnDk!~Ot ݸG4CTQ<ՉGͧ|^P"k6DygLYy{@(dmi[=Ӌ+ٴ Hf]ҭBJ@Oyu޷9Dz]g-y.zSr?.dt'-\kesSW]`* P)T[JK+zv:|t`"\G7'̀zyz1|O~) ʁڑ_~TNG;>v ҽCj8edҁ:}dӦ8DVV<="*(.' e%kqa[s~2? 2J}1HiL]xq0+㭵F 4ݏ vP"/c ĤkDi TIj,1ky%=7Ҷ&oj n-&a[zC=A2չ 0;ēkyWS̤tkqV+#7hI46E62AjRSхbJQ:~ @,lWϚ ,nj?0 !:aBȔa"bS N,t(`1IH?\ǚㅌ R g.[p,ai }Xu9U@&3@a|q.o ^qMHա>G 4 px3ݗK"6%&y)h &fWNIXmwXut#X;@jQh~MH4klo+ҕt}6(eSLv98QKt(j> 湢 Ô[h{]~ \٣ mDLNa0iUK9C/TYľW4GQF:9椻Kk@EUHD]jek y½/JD3?ޓǕH|kiLX`}~ Yܟm˾+NC@U4S _i=6~γ 'DJ5̖GR0k]4>q>W]ڊhK 3QT}ujIVٟ(UTc4z:.߷FVrUڿW]qa *\cHhz̊>bwͫy=CiYDjk?9WTd/jZ.ɕ%ʧ#lf=4OV-5NOx*:>M< Ԛ&qP_Zؔs}ۥ3ZoNz2I4tB@@zGnڲ\M?4VK&|z]_?b P͡/'5=mvPvhܚq4 9*b_~29k۬5Oef4[HAכ8}G{a!Lku[T yE\)oVwBh% +w:CT~d?Fay%`dHtް+[]'|/gӒoĞ`V/;}1P m<3S2H޵? atk0pt$(g4"}-K¾_'$*vc}$7@'1&jU {,|yÉ\ Ěe؛~pbCs#R >?_mokiY>S|yS M~b к?m[8RuBWc=09tbOkr(SBh^Lv2'rF?t5PTc\=2xzRπ'b˞٬&(qƐ7~Eg@vcy fpvh#H28E ] X74&^o 8@ܤh4Q;(m2%T3)KE!\itv?_H*ۺTjh$ps +6K5w|ωh@H LukBefc\γKjj A TvY Ώ-6Hp0hCKSFU-eLnA,R2oޜJ$^P;ra6sv}sg`C(4JJë9}KGF[Qr%l^8?Ff) Ç-4&5F4)ZDj1IbmnS\RĻ0jN|!ʢP$rNZ#k7e*)8rHg'W~ ƃ0I`*>'l ʺoWCrX^1^"er4+Et OsZZKgl0F z 'YkS9_dM}}79xmri}gAdo{ hkG:R-+ q+wC*5d ܸuMXP w:b|şMTu\ˊvZ.O ~/_ކLJcH"?Ms  9 `|53M<04ԫrz ,U9_'! tgSOQlffe5Յ$N~L>Y)9DOB%ղu%E/FUd\~J˩D*Qx JI7g?0fH"x`8so.g/"*BBJiL2<痮nϝ$I3]i;~:`0Cb;pgK$Qn@En|OnU`rs%6h %P?%#'Pm6a쌵͠K?l1|"be]Z[$e^bNTK -?]8W҆BQRgk m8٠W[d\sZ :9s&oHãD %89_>)MU>TjV @RA~4YGZyL#mrEb#[L?i)hHՊG%t(Ư_H;M> 7 1Sn}VV6?d`<߳-dXv^\19;r= *GM綰9|"̒8?{@pj;Οߌ~Mo*2r"p}/rv7K"in9xV a?xWxإTq#CרArY.gh^kG|]IFw(zsIz KXUQKyo&9Sl3qD bNn(}$P33[2sm밊-qTT!W$2z4!e.f2 tޑEwEnbja]%\&8rR˽3ô:^ Hz͖zfzlW|%1e^>жw?Gl'z]{n~DOg %Z~d;f:0bDRv1o4 D}k36W16ZYVa .Iek p&M0 GMc2D5RخaK==(.:'4ݶh93ôSjrA6)A2e+":·=d՘i{VITZ3g ū2%L&ֺ[_ZњU10B7~fb^ zOMJhH@ؾbuKdeڬڜ7ktջ79c-w}X)fFx8^u@NQ?%>rʴ43W_?Jt86xQfd,}>ϲ+̠%K8L})@U214?Xdo秮={,,La/Y 8?E/P+k 9T z 2۹ta yhKEXMD"-o{svh| Kb~~,]*N"@T29t>n̗=)oeUA0Ҳ_P }_W;lz.M|xa \¡_CBy(M^}^ItB.bDn|_2t33N]D  3i#ヮOtT>d'`7>hSͪ uU=CQJe: 1Sy95?Ԗ=THJb2I=b(BeUu=}"sav*eFZ;F ϲ(*oo_vÙ-;r)jz!P?^Mwe֍ɺMEz4rLRɰk'A25WEkNW;1בwT;_*ʢ6.g3'Lv6Kj3Pm턻"[jeDR@9geJ6*5i} 6.k_FśŖChWJ-d[|u؇g_BG<mhLV^OZ(`11 <m#b7o~##5Nq37.h[|ntV;xoR ?1Zns{rlenh?\V4Xo Z {ϻ=LOغK^ A8Ԋ 7[R4O`TхPu^q ?~ɞ)h*H*8QDPo*uH/B[h-|zO~zc}`Nv~j9)N)8OggS@ay'+-+/-,,+.*.-+,%%.*(),ķƶ°1/UT yu$227!̆~=lم|\+::ǒ6j:!cʛ`Ԓps)>2XsmoFU^EUs< cୁ4 ';u s)E׭Y}cles'aQ~-+`ř1ͼ Yv7_-s RJ}5RTX#{3Bf[Wh?6{pB VOujR~?24Q0Lx)*E y9ow.zp/PjJ_knZjZ2AbR?gz%1J"M;7@UEݙ$܄nb_PuDN0K+~K0X.ZRelt4L"MEM"R-ʸGVvIpF:z?8ȓτ~|"zt@ /@VHdclqv?]~4I{+mlxl\Ԗxa@"GugV/bgpJb%K+(>~x9>sXK.L<-]+,@yη*B jKGGX(4~19'pc$~}hD8oH_ dbܺ_GVy=+>LW>`0%jb"hkx+2r;BW!Pz;"y_6IֳRj4}ǧ=hqRuls~9KtfcSKr^w>Hl7=c^1܄u&ǟǽ-zc)~2@ܸXrE%2ow#UxJEJS 2{G0 $r"PǔP>dlgϾ4Zhaio\mI8["wΌwML`f!^20>G{ʔqZ^DnϺiqkko5L6pp n4\mlw>yl.㱔^/2{)j4E|"KQJwt׆;ƒG7TJ Aa4G6gr^c.&+zi3Կ J^Y, yR2&po\;X:11G%vQuR(w+Z1dǷar7 Lj.ġʼY_3j|tvhDGY$CfF';_<ӷg 5#\J֠3 Æ(i3aXϋXdeVS08HYb;_ڱ Vs2M죴# @I@=SiNwd'+%~;9@qM:}`IŢVYQLjWOzO ToNdmT8<%X5''1l9{U(wXXYlQUbվBOxA*ln ȍvOƴ-mIOΎ7wg;OSmfAW!j#*)zt3ü0Hj>%;iK>n *qAb/ k[mz)e,e.gvcHvsolYeq#UV \æs;o-jPg\| Eu_e X$S̃+8b}02#DYpVGh+u%3zE]71ܳ9dMi˩}Eh1H+XX4q~3 nkUY YnMI5K\q܆LninBӡ鐯 Ъ+Ƶ) 06r׮ɉ)! UDDN XzaPN;0* $捊{LwN/T8y}Engp!_W^o_^iFLfnЫ=ۏ?d쫘tةh@|PrGԀ.fa]&=fmSn+eJֆnu.ahdt:wTiY֜C‡QQT`̹$׊)k.کS' 'y |9w1nO"sH8#'Mmb97 1.D]@D~b79S+$;q qͮ;8$ OT3m^iUokY'ja$6[|8/ ތ B"S\oq7t5u\;-FRṬXzv4xP@jUK``m}X5n]]`j{tGȷ.k^`unƣuk-j^iV Z5>?>w=<>oSW[@yf<~llnesrsƔj6~pmuf ޷:F#|,ÀJi'lxI9! 'iK," LLO' &gz|5 g7wr+]?՜#O#n3" peU]`gE: &yg`w:+{?DA _ nb{k4dհ(W$)$Z ֘<\✅)_Y$m'J+;Eb=w>(K۱֫ 3+8L2~~M` X|1 W2wZC#J\E;TOggSPa=mlĺ%+,+,*/)--2eVI:ųɏ}v؏j r 9YA7IK@&YA 8[}^HHn[کy8rͰ%ܹLKm)2%8ʍ0o1UɋCk70h;*m6 Ĥ`sAh|B]둘!8fڜO+ۼMA՘di)a4#=~\2u8"jru*Ebc׵w칮t~lK+;l ԧ^N3(G$:QWW$4PLӜ%F/ՋveΨ~#B]` 7XH%$x>9jhy!zgtч*PZ70ˬ`ԈbjQځ9 _nQ:p|h?ixv0x>5U4&KyPV962ӻs9 쿇4M [U%uKy5 |,|vL9* `M&OH*W7-#,I2CIF>|on-+@9҃{6UOzzftQx_%@>ڽfsUO0SiFDQ6TC׎ F, |:ف;.ͩ%{]+e̞CĹyP܈?0C@+J0 LC %o RW&K;EؕL,%3 tkޓtfWPB~Y6 +p~M,V EW_ȁi}zc_u2pEW8y{`\h4lHZ *1A(|XЮ]^G= s:EK`$l W ?co=!Sć&Q5_(xv ]vV8# ƹE]ouW(Q7p (\FĀE`>b C n A`?㠒ׄol Ae[,ڻâ>эM:5ׅn~u{!t-P3&KIGh=B%ݸHr*YKFHCņOE'6PWgZc$S x>T*^p1 WzL޾ ?'+G;:cq@}@J{wLD_#T3e`ϳEX~= ՘Z5Ko *4sZpk3g߇G3yCj3rwR[*־~u;2L0`~b_W9pVu@7'y iNŜ9W]2ۮam"I$5x*Ĥ_ M(2&|/oVܖG]׆:ٛ=+NLKK}GI~B B<Z9JzK{uwLNiL>(ZAD+1ie*8Jĭ{P$\2}pq)[_Xy%1%-e/Y\k;:ve'˕Ӫ)u[e!ƈ1Sp޾G:!:xV"HeY,|.bzePK,SqPh忺wn$>) 46zŐ@XX,9>+gKtoKxx)i:9>?"ed=wÞ m ௥ړNaif"!¶0# K4^~gKof@%Yv6$IO}V4eb]J;IG\$I$GZZV mW$o?l 0'u QȓkI1OM 16Mb)(?2PGm$W?2L ; 1VHd=wۛ{fDEhxM=>1uE!eA -gjzHIJ: yO ~w\ZH)Im~y{.V"r/UjU+,j6~R5 9|_I%1Xk"n?!!ׅaj Qv'ٮW$3@2uR-ɪ[%K{ |" V#r?aJ%^ᇿ%>N(xJ5?זUZcR[a1Mxԕu؃%l`j!݉q1@lK/PNhSK}Qsns喺ͼS@'|DG1/ 5%$oGyLAEÈ׊dюXx~U(%Q%KJM59|TIdK3aT}j4 ]7bEydg񦄑~وУ` l~Mj?|xd:`2+H_qjL*GOqgfwB邆6] rT+%~aV}x?Ed߻~Вك:4 ~pf'͗ #T _x{w=5s)?.ݶf,ن` yƖ`M ق=bMJ'MbEYu0Z,V V%=/?@Xְ$XqàA*HÓ5%:-M\ &uНT;sj&%[ " :eϛ]WIB73+FBs4;øs>/iba1r!L8~cf0ma^ Ezl4岓_>iGЉh1WHc37dsu@(52EcSc?E-p;g`w L׊y~#]>j3^]Ŷ>nW1Lԝ_rOv׋ (^^'=xˉGjAHgO(xMܮo9mMzoG?^6r:@X$?,>{uTw!eHn{x,w͂|khgVD*hhs$ƆhFvO5G5>vǓ}u) iS#-ĭse%^g gȥ,Et(yf-oɄis`H>2!ˋ/ᷣkެ^VcAD-Ԍk0˩3ٜr>N; bZus=u.C' -PV´Qe@򤲹ʦZqlY=*N̥tԘqǣFxٮR(Rmf'wcTBhMH8s!b؆dY@V#c04UK&)1ժj\?,5P_nǞKv1>XH^ ySi7,xPB8}3'`ͭpѐ3^FK%j{(~KXƄZZ^X4E u*ވ\POv!ukmh3y79= 9m޸ۍdB]J@C1!~hBc(yF`h%&$9+'#d@GQ˷/϶$굤aĐcE"ڍVtK.TzRUFSND&'?Az24g{=forKZlAA&s.HsV߱c5uc'}FiQ׀$0|{JhFt@Ŵ<}d;4c K 6,Lj耭%p$u^ՍU0[]` dwA{#1z5oz溌IN>- u:|8Sx&%xJSJ2KVBc湌)mNRӃ΁C9#WNcXiHsrB7TǴSg=#:aB$l?P-pkn; )0i6(:5@;My#@R(.<^IYӑ|J<0 y( gqϕ:J6̳(VR,Qv"'4'fK)ҪX-`dxҠzzx:o>+rPP^?ٿx'EyO@V&'%;3Հ]5W^iEĘX: 쏜ܤgK\w5\rͨf>N3P^l. EL6mi.KBt7 wa$E3~.5Kc+е#Hh6hߪuk n%gDHC%wjۧч]ogK('Q^; =E z<: > _,i\P` p1m^yR&A-\;#VŖw9wu) Mﭙ`R ã"K ۶qvnt%=1v1s#",xE0 5q%EYPĊn^ANz}[{[;&sQ G(]>Yr 8|lwI%~\fG3orރ& F3o9"`aCU'øLL_~R6.I'5ߦJwO %’Eq;/H)!aíRO"ބ*1WtLHt8@͏nB=) }#lJ1 ` q-z䮆jbOx{jڑnjg$GjWj`l4\5lںܒ}@R_ټŁ㌰Zi/y8/^|)\W'WrwU?T= d͋gNBkBNViP}K P:;t?T2jHWLDLKz9B6ʉDԲƇͻxA?Y~d> I췽S.ٹIe V]xY%%el_Nc[k:_uDQt'`AFF~,boxM/Zi6F*Q2Q{GVݴ23]GruaZ}9nvf{&'#X_LjD[jK V`䣩$y5v]Da XIxI2iH[$#(f7 QQ_OZdC\R.6$$PE/Vq|><OggSa 턍&$$$#%%+T\RG'_[•&^ P ł?e11|! Zp9u5>ƷWVfMY3+=ZR%iM+6n՜Ɠ^526nS^otS54ψսwޗN]s77~Y͹0FJvZ~e0._}x>yͷק#,uf OK;$th "-jF# V(^Eqr%WiU4C,{l[o̒KXscȷ?Jpk٨Hhc6uJX X͂=!Ev;W m`1a# aybӂt#ىK?E=օ#;ucl,[`QL! H$jÝWkbo>Zrk2l<Փ0g 7͜X~98bIji8vh>ZTFl߷Ƴ|M|S6 ł\GÊq|UƵl~ҭy]@XUH X].Ī'KѩkHc<\y*_Jى!w.<&5s_:ۓ(ha}hS]&ty/OZ iѾn#]!Wj­W]L_j)!xԏ̨.ZR}(,ahu":ړD}i}MNzp#Խ~Rv ɿеvNGI9z'fx0y>vyr\}u͞nGs вW&2~yEH7yGTn=őpel" /ģ m䦙b&K#[!~1 Y~ (CaigV$oav բWK ;@iv9 H aQTTk&5RTֹ(@ʩ6U^qމ%TJS?f[>~גJn貙ۘs!i{#̜(\Mj1WɭWoJP{]l+^!:QK"Kn!uP~8IR$\%([_°^bjE)ĨFtuxAn x͟è;BlEPB IU"Qu$[@UzjG U|$|(, luL @g#{$Lv$v,HX0i%Vgm~Υu}r];iQykB2c2E;ыiWm[-) U@ɊCwB^,—YX>ε2svEHgYKSWPsoS?I~.-Tʳ2` @KMEJiUuS3/G\uVIH81]_ =Oȓihoqn %4+AG,IVfMHD'q0u!PiOj;aiji{e 4$JH50IZlz͊)wۏ}MD9YvDvn5M=8uoppEPՇ[J2 J㉡v$rU8whcN"cvt96ilM@62ayR bo2oY;3z46ۑ:2*K*D *h>m6}2K}+5M p/1*ʌ3FL77#֐t)zxS"X5cW%ۯOi%zFa/ۢP~}%+NnQ^D v 3+Kp=`EѦ5rO&8?0 4iK 5Y[ϔASWDRu_rq?s 891ADYTJ1鴃JbU#3@wm@КZPCމ?lr >%``][E%qHz\ZO("W 4 'Z{sݖghxdNC6q?|ڹS:\rl]Q]HReja _dfI{? .  Yy꺮*{#[8i(ޓOggSTa P4*+-/,+-,-.(*,+,.-+-+*/.)1*%)+#%'"'**nq&/ONBlal*DZ9>!JuNbl H}sýsuca=:EWJĆFCV}?5 nM)X^Tu5pc Z>vĂћ2Ѐ]F6@'uKӹԝyna{l!oQ)w~YӞgSG%Pjw V@/@`s]R'x0 ԖuC#?:R یxt*XR֑ML7ch?ΣH=&+8cU]7}E1j?7|}hKz"{d XDw͌'ao!2_Ԋ=pL='#ɥxJrĽA4/Vzu/Zu Zg(~DݖMN{[ĸmu"{E/+`cdP])#DSt=H,_Ѭ\_Cw?.ވܞ;[+EsW 9ֺh׏U?ܖ]k~Q:$buX2٦,vV049Z؈S4A-m_G{|~L/2s)hKo6?0ex_~ZdŽcWU&Pqp/Jъkћnm_i@N G5H/@V>It~u!(} <#SدXPUhBO?R{P;U>~e}7f}oȵ] (F-8n[) 'ނHkgM z Z Fl/4֗r>F%`k=`9t<ھ0gF'VgRniZhNʩɄi:z*œ;zY72}&t$-趼/z5cSPqXZxj ˦T]Լ!ZFԺ@OĆ$m#CִU Z~GqA0P,\r&=F|dUY9HSLye# fcze3һ ? Xt҃`%l\QZZ[Tb8u_%k<{ɹK?-\eZĔ\}ѳ;2>^o<0)9H‚J8Ӱ7\͜}æUb?7"?.,h NdSo;=!d*+!* ~wleU}ܓ*I[JZnlzE98{G.bNW_+K/3-~J+ͱ`LYϺX*Q"(/l R3-Fϸ̦e+5鴳gI"8 j|-aZOg 8'~ٌd7ћ5 MY_[Tgz~i%$DȒ~d٬LIC~qI]VA凢c oxwRw'} 5@I9[07}=Ba~9QW(vQ<z|~*Nn)gqQBmܓo;-h+3Cx3md6,t~Q5@6 TåUMM@O,><|vuZ7O!BSx=HN Y /:Ufw?8F*B+߯ *ș9V `b94(7,($:]^?X>ۦǀ!Y!!=5U\*V%boiH'~N 6m%\-<1eYͮ4qjCAwH ns"hZXmZĞVzI}JKƍ=H8%CT;c{JV݇(NןO WZh2N+Ɔ`ZezĂMx (t5K:5PaS-0+vNؑjH udV&Ω 8aepX~{ELj|I1h Ud2wEjmʧ+hYf_UHI;a<^,W#$4$$e\=ek|/@,_m me3{q'Z ,^ZAr, h:|\6ƾ8 Db_y#Lß_u5pW; ?G疳f5B>qKg+gZɒȮgI:COD& (y4G/YC_Agj`5PAc>UK|A |-d) aAETVW&-GU[ eM-(LN+m*f؁,")Ou~uz8vA*^l<>Z KH냇{Z LɾO P$p@^V9^L7ˎ |̽ h傔&z<^й t\"1՛~̌Ѩ@[xNU..*նORo}8 ޠ&T?z#:" N Ri 2;S[|iJИTh5nZC"ű Xzy ~qpUK>b=^:]qyF v=s \Ar2mGnmd-|II$&[]M+<&L{ﰦl~#GӋô G5fMb1@¼I|0&!~#^&_QYQ|),Lt@ TTSP ҟwe6Cxh|U pk/Ajŭ&ݯFv#JIH^vS' ~4DH ޭ-OTJHTg`X X;TVϰB2YS)t@>&m|q`RL? _X-O'y$2SfӐ&. >a:9Km ӫ=wy)]uоYۍ}ySkU0T]H2=ĽY\I{8 ?<,g>44@m8J E\li^Rӌרߓuֹ򜿱*K tQ|Yms޿5Ϻju3o4 5 U& p7S5bSR@7ۄ-[ 7#9Ѩ1,bfFq?YOggSa $*+))-IȼXoR6܇ Er\e4Ѯrx8K"\w',¸"'W[0s(DzaӇ}sgiMPQFdG?-HePȎ?ȣ{]KKz~k-[q=q[ľ3fE`<'i+ƒh IֆaΒ27-郝aL+eWIw+Y0.Z{- 1kzTn.\> EJ\#|91KUaSVj +Sk[;{ώi7Te ~r'PXU1am%Q2?ZnnhS%N-kkgZ3_2≀lkk|Y׃Fz{I#&'!>8b*uQ8Ph=3Tnbwq/kA3(/ 9ֿK} D?YWg3֏zS-@$7>$-tN}Pruy},)^ @AUt㖐YYW $.XFNlQՍOSӱ:To~!D42|yLL4ttl5"3i8H -i*f́ {U SiOʈ܌E>] E) W$.5Kf&umPsrrmOLCXKvhtS&Pg+^+oOj?2,ԃr:`|7@>di5U,zQAŰ'^1,pp]omG PMʵ}6#TM %vq)TĒx;2~GH%ߌ/(%UPEV(8[kE!ΐ`fr@IPÖ?7ֻܿeH$ }mQx @ǸP4>V&STp?/"Φɓ%ِKը)h% GZMNo X%ʞ<5 қ滋ւ y=z~ԀjhK/@7f+3p'WJGFW>Jט#*-~aD6 @oˇRRYC9NɍA|FTD 3ڮ \̘c~4vf<%v;XQp \ˤWtgZ!-p͏uho]Yi`*,+iVW-}v;8iA䪨#Z/FVUQ#=0GmLFTxXs1ikRp_7 yUxOhZY ,X<Bqu*;CyIY,?Jxm[Ot:&-TĹ l,NټF"O ~ѿ/_hPcY krnoɉ@Wa7,` #]y傟Cs`Oj#i[0Ys6 ˮ>5s*T٧7gPK$ ,T#F%ZNLľ))EgSl4M &Lhk5ruȧ<#,ѯ# ,w+Z`6AC)P .LWXՑV8n#ش䬘\b~4L |a?((tɫ" 陿:.%?Q_<.wsL F+tΦ`vKkvRj`3>|WgtPa?fJ31QBCm!Ĵu`EHU.}&n0KC٦}q!$}\ߏi^SiHf+13< Z C'*otyr}U\^뼌-TH pk7Z43߷'{mX@1*t%{mYŷ:<k_TeJ..rޑaTTH M7Pz >]X>D^X-hwٲDv}d%OLa.Pt԰X H ~4t]3a_׌M$UnH@_b N۾ %/!BfRG7]0RG{y8ۣeD.%K@"gZJUфۮ_  sK[' qkΌ:+Pʮs ~N㉴3Bޜq :&qX}l \`r!7x6@ *WDI̷TRZS.A Y6pהk dcT3{A msɡ v"/6JILIkXQLBm XןdRtYތKQtBʸ3Xw#uP&m~?*H6GtH}[= mɨ^Pze4"j?$\Q}_y*ߪ,* p3<ɔa@m0*{dׄff JU޵3ͥ| W=/?P@P?_ Y,Cs0ܺ޹=q!W'nsRҫi1%@9G&:xi#b54*w_?9n0 %mbD%rilY2#VS-gR h"ږt).:T2P) 0*#1>J %$gU=ٯao瓯92K$p2uqy@&4,۩b1yy?hu!iZS }12_c |t=k`Y)ߓkg^(|{,3&wqJHdOggS a m3%+*)%*++%.,,,*,,-/%)/&)-.*/0'**&$%$鄒 M4%V1<n̖Śٛczĭ=z@s錝EQ]|_Гց^O*.u_7jYbߝ3[?*qm[?(|uFZ_gjq  kzATo;$)t"Yf7 pD's'.&;.ufڙ'oKp/k Sem'تἥDl nǗdnh oi.q P Tt5ûvKح yWNT3Ro? 9CrɌ$>{ۘq~H4b&7\N ud#G3@境qJƹsĵ3{)4xj)9* 0-foΠ9))-0_sڼۺԕıR Oek_ِ`RCk!lPTՙ[ԏb45=-FױᯢeϺtX/}*1>J[ h@&)Z}>jn/Iv@Ilw,HNg5Cܧû`ɽiM`6TWzO[aHec̍P|GdF2^J߭g^ϳYA9`:lϸMȆֹ$vۗ U"[mRdJ+Zv>69Ҟ*J4K_smL$8i蚂h֙AkXkx}>8e<=Tv 4iQ)y%T/0cFi| 98yATO [haj1?Pϯ ɥV-byd)=ǘ%@U(j<ѣqo76HFӉjcB-͉P~&6{k a>l3L|`֋DKo_QB 9&j,qg]RJG^66b}Y)I׹.~ sS7z85 @Ƅr+c>[>=lqMz(Ս߅ WQ I@du)F#wcط,Xc]Cܖea^Lj Aow?ېk*`J-?HvMjGoNl bZe\H$Qu5>vXsa4pLc"6b%gf =SFBn>e55Iu͍ 9#$~jfGDa͓*v5Atlpi80#=r`qpxͥh?ϧY f{um耤2o9ӻ)΄BvDj5fݬ)v>G4+m',{ ?Ӕj=iyalgިT@2ok$jZbC>bѯ*XF& Z?\kKJʯQtAY DEɖ+)Y/w'Ye(L`+|AXbBj HOTJ5or|XKK KGRkf]̟=iv\Z4er6=tw$)ӑ_׊Wv:=Rj7m?`EARH8-uRi4ѳ;?/WGj ,IRGZaP|k:/-jk\3wGj|`9%b/g⯏lbA'>6/P 0ߎb(g.hJvҷ5z2}U8="GFr q˟]h 7Cekc1lkV SM?q0F]v NZ:(E"׹aWͽ{g0|b ӞnUj?2em)*U "*Xˀc4DJ}+=\msKnr_~pR/}zAz}{YABu{E#{V"iUFx^ˀj+l ^5i i [}ߢ!e|ZYb?.4@p=O,n(99ѣ>v .fO 8TRw* /G WK5. vV"^]BxfuDz[y֜۵Gf=7k-?ё'$kr-\#)~: j{P>%iV -6ŋ]N`za;o )px~uשj1]'s1[2,:79o_0y H^A03Hyl99Kfy_\ %LOԟN`'"3:CnQF 6u/ͺ~(!]&: ķ};ݣZd;ueZpm9c:{>I0nΌqoQ]>ڴ}މ]=9K,-=^;~v/ٞPc=.i5,qKnLu=]; IA'?g'jl>\|Z+4pb8z狕{*q"c(^21*s'-\_J@Xqa1Up3)9A.0>?Eahl60>MLj}_p5rwCh뉠.v vpeo@ýz:r~8ͻ|&V I38%k<҃nw', X9*𶠻7"RΑ)'@SɜQI)o \=\_n#:JjsD/]F, .WARKƋL]nr?p ݸ&`|[P2rPP6]Hd;{43s-nt&ɵO[7eb9Bn#1:^Jr?s3}z&4G\l7PUρBqs.\.}+fDiMWo0T5pʰDg%^ (K.="it}@/~ 4oxS$܈$;ڿק]ܡZjӞREiBnG: ē2,F 5x/]X@_Ĕ 4'ben"} XgA-~)p׉o~`,LKutp1-{ݼ)x5?:*zd?7Fz>,*X'u'j?mCG7NFĒm+?埥yR""TBbM'-On~}=:#w 9)9QI)\%S~揬x5<؏C`R 蛰m80- y5%+6ݢ/W`Ex7ƕ64_>s+K U[_SX 3{{=.3b:H0FymV~fQ="iiw2g7CHS&D|APZ6Kr#1P=w^,ZҺu([r)RvFo&cG#UEuFZ9vb.wiaԺ;{3+)"fo3w/"Z@4.ݎIpO^37l1*uR>~ mTS>|˲ ӪVn]uއO?eSӭ]T k%`g4K~a)#iüx?g6$ I}).L!'A::zFZFbuΙ&9gDzIKϘ#9@ 3K K;-ˇMoI@mK#f]3N9ʏKs@d##֝p%:l*82RWۿ̺R+I7;8gq>OO :u׮ HLva~t=Jso90k{Wxye5ȆC'NNPp?Z@%X5&e,D4Us7M۩b,q(֕SC|j?VwڡrtZ(nAJ-BGU_J\eB|&|70s?,f>ה(USyprwwoRlsܖ8ʖXY`Jl6^cq_+s@L+BFlòq-5c.^E!/3Z<4li w\#UXݵmqVԶ3%l.vр9*o}%l? sY(FW%]O9I,%aa%FcI‚59wݷ|:. G ޚ=몮fV}9&lA\SK[!謻C ʕ9$8?Pf$נA6E)9h635kR2;55Ԉȇ{;(&m=#Ϧ0$OT ,6ҩW4W_w/^hY W8Qe &u3 \t a'Ǿ{FC&Ѳq ? +N{$2{vo8JB;I:ZjgsPj y;T@ u9ڦոWƄʘ)ׄ7/,TK此oNAOeo GOggSaA ,&&$$,0&*+-µ$$&'').)&$')++,()J釪Bg?0>ɓ5Е,„ݜ37ƙxSK_vq,u)P%KlHN@a(9KPuRņ5^(bqh;6?CЩ]FJ m!kŁbQ`idȷ%'ny1YȰUsOZgN=>^bVWjl(={ktNCnDI'}N Ah%μ?i~aU>vO7Tg-ހNtxgE^13/x{ܸ>N $'m X>'>r!ak4QFi} "S&٭]SԆ煝ҿA::9R*9狻)pPh- :D9uz4.,46%{+Z~O$x4혆w |2f0kLGBٶbƻvb{?y|H#ՑHb,iQfHC|5 Vʭsw=c]  L43B^4-BȲ Ro;z35-fv ]g*Gr5ex Zzii&:H0pY2ηI4 jY|h-~vm6i °czj MMG nzC5~_1\(Z#ʯ?G`u|uDž0D߮QW  <Hcz ܺV4ttFܔX Iv]^ƽ[z͏q$[P~9( d]e s7vg29_H5L]]i> SOUNvxdG6Ы)%~+Zitqv8^{XST }c.z6d V7F6E:gm"d#EӮwJllK,;G >iL`g)W8 5k ;X}K߹URk⪘vG lq* +#WK.cďnt`> nXˁgcuV+p w[wηٛ6t_UY7[}}byizhcEHf &;dنē)c] h}i݌n[Լ9 >ccSps'JYGG ܱ>}WnCgN-khsc鬓/yNt0IӦJc8;<7[g[ p{Lt#P|W.*\uDZ'n@k-LJHhŹֲ&if``B)&HuX E>ܝ=-񾧸ZG8)6͇ZU/vG}/eY)aƜmpk[i?>YpTR3,˙Q%9(<@싴su e??4gq3 :ubש?WFj`582M_3IR&j>CJ-HMZؾ k0^;J 1*"B$:u'Iحg AU(݄{ 9:öf'|2-V.9==HUQ缜Z}AO-Nf] : 4~N鰐jf*xfdrH7Q]59}і~@rD-e |)j]F tuOɱGyYU]UoGƊ}ၽ\8-ֹR +$?)2dx%T7=9RRNX`zaDW|冦cec,J;pZ\J_XDUhoᒍRU~d:;h&nYƱoݿ\C$OVZIK|Hx_u%{j)|BP\x=3psi}ygfQ*ߛwf.e+Rrh#N|v?h*-9(jxZC"Mwr'iu]13`G`هtȩmVKp|MA<{^:8`$6Y m;^rצ5MW< ,ZScbBH'Kn9v>55cRnCsNP ʦiw YT2h)S`X5i' 9~v&${nGϼ #-؊OhlChIV"J& d2Jnl[0H v˗V^T>*o,ͬvU. J{;3n'BliOB^4FƟ)`SS O9?Uf8,F5a~<%l߷M)jl`i| Wٮ:0}"qg4UwAз+t}7d'Pr!nZK1wdbO^S9tj]ޯ~4{ tV:b| Ee?3EJ/a_Y^Y=fAFta <"8dbb>OL)I HO <6v OlbU,_3U uX+鮟pX nyM( N 0Xjӫ*ܰL5$2,EtjMS|?$XI kdn9hOu[(n>4xY)q>y>ۋc/rzUtr2_7@S@8bTMW~F\{OggS ar.-4,/+0(*('/.1Il5ۏL|_lb%Yv nep̙rqW_Swj[u/0 p27N`/FBCإȚ:|զW1?yurw7,0\ 'oZڼBSc\^y%,[0VP4Vxf&it1WwnlOջኦ4#߿f dF96InoRݺO| uԋon1I0vY+kϽkkZW? 3u1DΙ24D$|_~Ď֬Mk?-QFJIi8V;Q'NmitDuܑb'3p |4}q? ]s/{Ȧ.'gwC"Ѻ$R[nN6&3w>T n?9&lGjMUEҠ@X[Y2_M~ϑwQ3,IU44ck JMwq(?~}5ɀf2 C:U[$먒q5H6i0-<,,n9EA6ËtRΉh>)+RH1rʏEL{bWG}%æ,Hv|QRMjq2)][ ;#}w⊖ԣEf=vz_arYݕ^Řqו <7.0V"2ݒSɵ1G?h܎LU^Bq;t5ؚ> :]*D}+4UEdz`ՏwQ+=J.cdK5ɰ`  a^\?*\G]K,$.~XYc#6ţqKHrfeco07Ε|elry&$tՄq~=%kۑgC|jk<1ATH 3]bԾ %ȳ7mc" . Y`'Ǝ5&1z}i#5Òbv/G͛"wCd[o ͕˵]n76'2I\o-'ej]HVw|gaVUx7Xж].6Cu5 lC 94o)>ܷ&Clm\Y9,>6A]Lx6mnhN"x1̋nZN4lyL3C3UK_RJHCD^&rp" 緖^$+/ ZZ$-2ǥoʭGT` "/ԾGNW)jpXrj\"T>M&vlΊ ԯ2j48ͳ2IX6Fa ?CYWL|*K{ƈ/a'թQѴLϏm~=+9_ փUُ+S$;C\H5\Œgxbز"=j*M|h8G@1an {\qmô5\Itc+@ KkFdĴbKā=sɁ+?w!B>ir=:>Lf((b@Y t Ml"tEOy9Owo0$Ģ#Hfzdy/֞U510O<'*z7C ^e134Op"i ;"X{no@>@({:6.W~>d`}z>Lt|tc0IȖHrR߉1WdɩF϶xLbݘ c[|p"N+~+ q1YZgDf`'0;uSl{- ^ă]_(*bq~W(0Ѓ.[ĘJN%^reG?gNLV M^kh/⒏*OC[nPدKZHʡ) ϫWLp'xxK@ LVfgzFR ^ $G6nhf 'ly`ID'?ci{SpSmWqW2Z9!ܚ[x ]Y*8l4m{ˠj3B1%OsH'&u@#m2. 4,6m ϳȫ22&MS9pJ.[ BgR OTz0K䒠 ?[k;#jLV"oRY%an #)$嗫޶m|혒03xTɜTGJf+ Y0I9wOY(@Zx61Rƽ56,bS sd(w:&U_i3u()9O:J|LJ"u1A%8 M=7S~xh\} ;ۋdgWq%Iw?)C5p7E&[\-|J9Iш`L V]}Yмbb|kȉ5dV (?R]q2ӁKUmOOLj2s)u>xƸ6PӾ65Vne32iD\6 &#;* e뽤8UIbIUKr"^oNڥZ3c`N]c*pg3{ޟ޻r6Q,\ &GM~yS_?Kf>W׻ի_FYRFf@ 7ȏnQ~CnMM#$cm^8vklXPf[VKPuc36K@kMYo`Yj>  hhF}zp>!(OggSdaLdiŽ%&'*+) KW;WggJ[I+g |ygkMfc敛_ǜơ h|Sj>nԲr _ A0aRBϳx]`v{RwfCv#N]r1͗3<-znktzxׂ]d࿊~Գw&~/ܥ P|$@^?a:a$|rx1~jN*yY2EYp,7ܟ.vV,=.1IDYlY0׫HN;j!)h  -XqOA9Z9 զmU7p056 KHuCEfu4r7χQ6ڻ=aUK=ϓB!`XD "q$,I^N;~H 9^k:^ p?@چ3\Aw3iٔ'auo/JG2(7Y-j+n/RY|kO8Q\ݮ{bŸ|[̾m 16&RjuɞުR#~`«RV ܂~e ;w}jҺx=6XAYy74f(`w |,%H"][pe}s8yʢ%Zf1Yﮛ䂐I'y88 S&_sZ }o SC#̆DD5¹Zux D'3ah0C|6J6#H*P{Qyʯ^H Կ4_|d4Sq ) οO^c E<]Gc*~UgAԾӢJ{Ƭσ+cUt+pNsAοϋa)R"k?E3lR=Ost?:]=f.냞bSI`0)Sp'I /yX[K{?ٱNߵvPtc-,qGP\/Fʱ3ʅ.%ͳL=GC Y|@,*Xy-)C%~I*61a~ߣrXh$@@%.wEif ~WzQ |Mb<ǎv`l5A}W.4=[Kh{|[y-v!L[CT"cX) ؎狰$1y. Hq( 8A8@{"Dwުއ595EF& *ɥ-U&a}:LDRWwc5dxBnfbv ǛJ #iѾ {jjGXZ!ڐ X[>@/D!?c،hw%7,*SF@CAN~P+U+;N@Iކ=T.ڏ3 4LK @}&mb.tw^㚶_N,8̌f3B|:$~0Лpݪw\!{'H] YчYjw4*:*xس#*r^I;աrfJBkT3G[#c&<֖&TjMoBփ7|schy{]f sJb@SBH> 6F$U 2"ς3{}  eM8N;%+C}rgmOaJt!Jxhj\Ș집37mJׯؤ]~ݒ3ʃ˨Y).1ZcS/w+GM t*?f*rz[=|GHWjFZK}$H  Sv~Iim;$>bBؗn6[jGgB${t5[i1cݚjt3 2NxeDR9esi̯ZEO&Ӓljst~S'pO]Jc#c<[h;Ȝ9ֻٰػQ^0=Ty a_" ek)#ކ(l!>uy[&瀱Ixaw!ݩKX]}nbύ2$_K 1k4j}Ȝ/q^CtJbx>p͋iTZ -MogTȦA$z~"7ڜup^$%q#h;\"0".[@$d"<: 뵞Kvl2&UyuڦϷ?<ۦIvEݿFk꧰iTL[go#Loq)YZ' {x`#l^m"wwZC_c7 4eIDo0 >ȵI?.P &y+2[rhOFZ*jA!qq?[@emk:/<3%5w~Mu1z)zdqMOR"i\bT:cseKx܅=ϑyq ;5ۻTnP$];Wdـc%$.:avy9#^iIo$ Ӗ[4IUi]ū?ϽjSqxʯ'W/]a0BuFLgG\X4)$gT&QTI5P-i 3Z挬z'\KFU-5a.ͲefVOl2?09QWA`_0>"Rx@[iU4 (ل;KXe]h*#mߴta5(E͛8/[Q ai]u˜f?k΋{{Z-_DOb0xD`6e|<54؏}#S-t)YhL&rЂZAm K˗צLw ެՋ|9+Wl?RKBsv^~]jɎ m#*F_.yUAqPry! _ƗR<T1hx0`w_w=OףXOaZ;p3.ǔS 9Ee{ Yۢ*[5]SESU]DHCc$eB8D3mF} VW&/yH HMMv9',;:3K9/BPC-,e+Et48 ,89œF++7 LkK^{~d9IygpRB1_+yZ.h9f(I.?:lF%Q'qGv7H\ Q_퉯7M6xp ̔lf 8UD={UJMws;)[|}[Q-u]XhY?YXā6/֒<^q2~Ɯ GPתQ)ޏ;[Q’xjg$za^@̨i^ƸCqPQS}jҙ)z$5t+Z(>&P6a"dYTOggSa+VоŹ(A@Vm3@ݦ%U ,͇WI-&quJk7Ml}a%œԒKCDųyyοj:D3BKǓ'O8qY@HagDޱ$ȁl8F `Nq" J+]cGUA\rz,scl;\J@k8%(Gj!:ߎuY]@ko%MX/Mρbm imO\-U YsʙܾS]+ROg[L+&Gt` %qb t;0}tka fkNۉ0be͜E4v-o. ?|U!ޯT_m VVBa#`PL 𸿣"0|I6{νe_kUh@X%ɔO4Z‡X ޗx;C3,vۖ0ɴ`oXl)d-N+sw@ye4 H - <:x 3b:@7}Pg1GH99FP3=gk9Ȃc|6v<$l?,c6:ئqR4{UzTASj_E ?~" Vw;T"x?OB: ZTq$ c2I2/E[7U@(&3+;h~zZAHYLo &c6*/ua*= Éz¶#xjOػ׉S?Y fA[ ?DR ^wݸW&XpOwhM$nR^jzC{E{ j,~Q"g$ >=1whoEP?+P:bcu0x# ؼb- H&\i'* xk\ u$=WqgùI*w"Sp~xrוg7?@UTA ؀q<udS C2|r>GTakczLy zAcy. lL]Ny?^.<̞xx]rcL81H@'Nfܕ6ju>-;ƿRjZ% w ^ J<>obpU_!k=zYo&Skrhsl];Ԝ$&~fi 9v yܑw{פc˅ ؄%ѿ0RZٯk0^ %'V](vw >E}Di`+\?::+3c0-) ݳ4@XcD?!F£R1I/mq2El)} ^Ytfy܊"Ѕ(:ec'\ G (gtLmd\.jIMYŕ{GR%n8@G( tuW kJН|$?f$6n2LT\J5-e- O6d>K/UE͓~a&I"zL6~IDC襚< _[11l34 d#MYOAޝ೿;bs:xQG$I9)9ihTthwS{mj(d}*ԖܡxcYtzY qUIZ-^ Oݸ& 6M>"0X?ufʋhPPD`;w ܽq9.8dy+8rQewnA}h8UN ߄/‡ϵ@n dU  ϟn>4D,=10V/1^P#Հ$hGꡬ`,>YZ3M 0Rsـҿ92ֆܭ&}I9pG$²|ih.^ٓFl_[v64y\i*gOH>x_yU (?ΝvͰfW|;d!˕򫡀kF/g#h5[(I|f Co4=ecԭރs3`zϒ##ʑId+'`>ȦE3V2|Z=axHAjLR cH5Mc0fǗa#qi:4cKdz &*H1Gg0́=lqR͝ʟM?ܬpB5 !>yҷ5KD'za] Y/]|^$jJ[?<> G7̨(%wLhfQl3Azjj 0;|Deo< N-tG9<ƚܑTaYp\PJ 7r~A Dq`,9Y/lvH*[^viUb #K'9=9tP0*0};G49ԓlT#Ej}:-ԺfQ{FK$it4gǼnwy P(`mN>׺m/1e=Bkb9hSKsECEOYTjHmQTL v{ f'an6I1-g Иs=vԸ$Ne"n|*`)KDL""CCаrrq+BZͥ}k +$MU8~XԱEwL_Elݝ4`AEӤt0 wYl+gk?*Z6Sư@?d>dAVpk;, W)M0VAyKljCi"@?s9N `Q k7-W*Тg˰W,Zn&&E`]fWqJ@g!K݋g%-|_:&|_KưXb) ĔsL< I2̱#9lɁJ&+N=Ä. '_O-~r +]<̆E}.pM_b  <ȶl9JS Jͣ>1UW'V.Ϭh? Ʊքr~[<SHV/GFJ)x PpfZlCW\|y.[*b( d>":u&i!X $!ߍ TpǺh(xEw$~ OggSaqiV&$(($..-1-.+,.+,-/,,-+./,./,.+.-+,.1.-/-,,+,,.-./,,1/12/.0-1./1,10./100/./-.+.0///./f٭mFwn-«!.u7hfZEp5 s5ô V{yfz=mu ݑy"u@H=w=mA?h@ ]EC3ɹ_q^?dlOAC/xW ՂTh29qX *G#Ԟ73+zڇS<::\7=سp8G5 $kȀWN-sGC9`8 [6Ԛu{U3]Tûi&m%&ߖ׫'黧7u; /k|i܏p|ɩ,p=7O|?ÛeHJqjԁaSwPPt;?I%i7VFJ v]jszuTW WiSRqtద,@v5oK^4/2PpH޾U 7tuW.NC4b341B4 K3'Zg$jaXW-{^χG0R ҎTr OOu۾pntj../^{!])+3P4oB׶{t}=J]fis<zǘҿ8pZ;@ak{Fx*}E-+أIraU~ rkkj[Y~$WU!ؾt*D5'A jT4uF#r@9Dnw̉}#:q@X>Ik3fatK.v?J|8Z0Е-ԓhqaӷ=,o'TzGa~T&*b[R+ER:V+끵u@ҾOv!UZ{ˬ2wxkLKL\aMW*eJs'sz[IUtͭ+jv=۟rVZ KmTEIu4KJbb .%>_![ Pjny4 m8~K\]B%6q#uX7TzK6k5{ \Ҽz=oKkJw)oHtnA|@pЈN%'ՅV ~\n%P)&:3[J3҄G_϶FXR8o JvNl ml*3cKn?zU.ջS)T WYKW>4ۦ^ȏp v7Na6]?pfԳ{[&lKAjv7wk5IN@^F),K$7R vmzmWdIћoK!}kDj nAKnS)uHZյNCUX;) nORIŵCKvCmrW)p/QGl՜ؓ ǠZxn}7Q(E͢W@O1T~K_HNH mZrKY[L<`jψ=d oA%?#}7[#8_>)WlU<Z,ru[.GfX[ \ux j&γOwZgL  g$Wtw構(әsh*鋧.!;ԜZ~=g4 wM/ŗ(Ђ*[FTbj1MIxftҷ@kp߇o$S756esZ6>^g4dx),~\(@ X lX&NWǂ3AՏC:. 1ZIJSrjc]tu39[+\ Jo $xIp@B暨"y^+>!?\r}w0^} J--m>QyDn6Mc3_ .sBqmP Gg=۴ڏ`|#"<^gʟ&x> Zw)o;Lo}t#\U| o 33PLZxy>%p<'tql_=G4 r.vP QGa33DЌb ,q)J~%`#3|_wb 3FbތB.hL*Ls WlPc|P ۆË"R['=`95r.df@ @xX=$\2 zxBuG+t dO.lֱ3Og ug mk&aϡuB" ?xkJ8R>(Fi .7muZ&uˠP/ڨ!Ci5RV0,[: ; ]8?Pn8V_s3i +my!O~`!uyi TZ#v, kڤV[Ǿ4)i\@J32V!A-<߶5PR/z6{ўoOa[n̖N\}Ht泓w[o'bV|K0e2c`FX<\6v|::47#-T/ъ )>P4ii[.wGMLji/Ď9AZG;Aۚ(`\ c%dvYvl!V̞C?I CpܼDZGvDM̿^ )?5 8Ě`Π:dFQ [DT_:gAq]/?لK̇z-oߞTjƱ~!i1/I|VG5uKڶuCYE2Ƹ?bsޟz^+kG0 zSǺ"L D%a^^D >-̘bXc>οR]d_0Ed mH|qA8nziϗGșJT)2/f;0Bnj)yXSkgĚNnQ/ϸb( h޹/u2M4!Nthب#o{_OggS@Ka^,$$##*-,**+,+'/.#%#&""$((+>$ews Nڗ%T@p_zx\z+F`Ód.p$ _Z6!zc(b& "t8~5̋kJ%h5 E ho50 윴8:w^D%Y7?LI 92 ʡ6=huvTy'UjT>TehPN:vQ^BvWyP"{13~jYvd!nrg{SubQ#I,jW  ~|\g1I%eZ`<6U 8֨St|˜<[|E{#(u uf~Eg͈I\w\ ~25_ 4$5"?{8݌D 6KӄlkVԽqѳd\r h Zg BdЏPZHTa?KO!c=. ~U_( ֛O,}gw{uKU[B[pېٟV<+RrꫫkHÙjakdG,_%yV[o Jg}%J~qqt5sZu= &˽~ jJ(߹iL}Q9à炙W,ȷ)i rug(?,AWw&VRhǭU^7 :;HۑB^IMу|plAb_VF4{g"l k9Ubbx¸G @ŪD53UIvZNA~]`ۃbJ t5( =f4f2327g5ݣg4fK@*W?fN;852}z=TM5j'¯wo$Yaz K߭am}uȜ"`3.|HxeY 1FDOWh t$p ƬѭL޴~KWm%q %Y#wFYNJSF=(>40k6lOg:͝u239=3cPҥA-Ez1J.DKi#qRrdZ'K=h"+ɜ(V@qXCp>A(r&jJa-<Ɯ2G*ܨŹJH }evr8m3[ G7,oǟ2<&tY3-7]Z(bt a`v̄v=ܧu|1љ9 Ը2kww0Ayd(K2r2򦥡?қfp1* E&^` ҆IQp vKR2lP6N$f:"Shr IP-BNX\\mP[;Y ^])){{0OXkZK]q!$qo<ھZRlnK ;:I8bqy>́{, sZc%8&ղu?!Q5&fgkl :ԖS/̦iCyx D|jUFFѲ7k1hƠiOK; 8"{ k(;#=@ j]V/C̩ _'AJh#O>cY%d߳g=m;j5_r+-(w3+85^hYlh#ۤ% $9&c|SWg1 ?Hn1G^k?t3bnfոnE }ekH3܆~M`2=zu ; 2Y$DVfpCMUld<_}Ո~ݍ~zL9RQ~4 " =.3{aupJC RyDJSoњWm|_9N3 ﵺbYWil>SeX|Ղ!|y3o2O4F͈%gZ[xkM CQ:x5D6u`nrM 'O,qQCB#"(,yLBcM SwL4X<x`Y 90Nj}}Q4 S1 Vd·~*$[9)ljbZ_]Mm[j+^j%U~.^g8Eq,^=#Gk:dzR쥆O:8̪3r'PR.ۇ }gerqcd"G>O_v~&k՜ o\To6c}8*j=r\ ͆V }lWĂ7iV5ΟЭҁ?BM|xe @xE~uQrw)~V}Cpo;KfZZPfyMњZhpkϯ<ڡrv[W^2>8ɠVSqSΉ^Zx]ԔoRg@l] ,.Aj˖fl+R:zۼe'/ͥn3>W PHKhzw;2(dX[Zr?zPOe8a0c\TP g+ hi-ہej~_OBFṙ >UԱ <#? ?|3B¯PZ /ū ֭4DѰ Q5ӃT)=~tp%|P˼j`vgVaTI6&nxSA[=*lRvH~sN[Keʜf./~ZBX/"j(\O: ZBjF2a?rMrMy@D93$x1nnֈnٞzbW%J=**żlnUOUC QCR+CF^%OlrpQ OB1GpX{n+ovհ?4^͈/&+HdȊ [H> UfE|yʓ&HXL^D^S=aʸƄ^#ա: B Y_5j=X'fA߀{wA&{)s&DNu :) ;l2U')Z-HUFclz)3kO}IŮ=6ĕĖk',HMCyS(˿I೟M) dG1֪r6=֦ny;+jKхs':Ѳ4GMԧ)%WK" $ 5F47CPu3K ]R;4ߗG> SXv揣W¹.ԕ#ۡ@E)@r>s]J㟕c יELVwrJ0Xp{N ؃dM8:Sv7(hj[z}ՏTO7N^)JKѾQI"C^0&& l%\# alDqxD* sBo fC-Rj2/I_x `,r-6^%ht%@q#&W9fyՆ4Gk0IطxI Gpޣ0Cx2x]%p=!/hI|-e8嬀s׻wtOF{ZpDhFEmFґ*<;PoTZj~[}6r=>L7.$@= K6>ÎQTڥn/L_j{H' RN[^0tXyM^yCI@P&=b N){=dZz*pP\`u0h5H3(x`mpU k5ѐa{Hs04{$МY1 t^%tzFE:G`r;~*8{D[9{^Uϼyvq8@D1}̤;G![UsVP4r[& [ wܤgqMqIhq:Q52u@1I`|f3>٩{!0rVhq1T_J9#$2R{`_ex;=⎤g $0 [-<}#Ǎux8%''%,s1FW\Dj*Q)aTfir <6O"PC*~T2BG"h ^ZO *fzgN8;C>2zֈw&̪PTCiߝl ɤxH&rGHs'kckΟ)Lvaq3&F8@|Kqo|5H`3&h'eSה^4_H^@<\gɈ8fld ls>myZK0`$k\vh;Uz6fPg+Ȃ=ͫ5,M^;r58)7WmD JåC;tr隕3hjWiRB @BsAS'2Valr H:+ @jDwgޞ.ftS>۵2}njktbuԨԕH_4 FS6r&l1Gn(bwޤo5ɪpmPIφVJȵc1]9cɥG+10Axo)?z&;[{S9ЯBW%F Fae~yQ>()n}=N?I/IbM-}ϐQkJ0.lZvV2hnf .yz5UZ'~dM]om}+bd %Q\X{3Vb@ǧ:oIvgI1Hvb0 gtvVN.aՠ5h7#~"I-ROU8ۣȌrЌ_m)[eŅN{q,O6:iA #¬7˲jo洂u=$oԧ7s<7eV:70L)Hu[>Y]/QF ơ 8L՛@7?[a_k={:J l~ VJK܁lY( *`NtJ!N_SVب5]~t.w'iT~D}HVa;Q Yoҫ; D $cZL ?FUEv6l!oi{^XD6|rLhr>e;'yNzv 3֚\_HX7  Ĕ c Q(yH)ʐ%W0*OunzG-{:-Jm~H2~E V1HquTS4Xf[u49Wľ>P?xh\޹p)eV}ϦJvKPHkh\@o Zlٮj.U&rݕz0!MI!J:e4l{kE122Ҝa%"8ޤ曕x|'@V`A-pVC&ŏ7ۊw~h#?uhi >=^Ol3jAL$OUo;_pRu{Qݠ?xqHR-ׂe$x8 U4WHr''IOXu 7hP`U6)/+;xJ { ({ dEàB/k~jmXԑs?@P,} ,`<3|⧂V1IF ̒`_Ki'{)-07U'޲dSw䞹 ^7ZZs/~xPO[1} IΌ-h3 (i|{aJ`"*U좕51p쫾iar'D]L>uuiC?:Yӏ2a^;]'a,VG? ԚAKO SWXwx"MgܿlYSĒCl'wf漵>7(ooLwM%'+gƷ_I橕'$f ǯ/oE=,?xV K<>mޯby D|l|)g5la i 7<9%~s)﫢u*饹`ez'# M~Pύ>`B- )ڧCG#V\EmDaGwk=P[3"S_v{4 Yl |}' p^8=>mcz3Nz OggS@at?1...+.+,./-+/,,-..,-+,/*-,,/",)&,-y-w튭mbjaY"}bǸSJSY[Sjrs˃ T[ioU;:{+sgKj{zlz ҝfWpd3d\̎ňC;R-|esഡ{u;<mcnĖ'koH)@ I|L_\QU2l^}jޘ>!c\-u7^1⩍?|ұlhd9k]ݧ|S2=Qrczf^_Dn}̂9Wl4X"u kÿLdpϷ A_֍g1|u ׿F pVܤpSSH^Q}ȗKa5ۜgm۬%sJWo O $u׹S E>WXdljq"}=M}Osa^? t@}=R ;$#&k;X8SbaKai3C4Jf{Z4.KSx 2nw>G0i 0<+QհE'[ĉ |[G(uM{(7k }aiq:XR-ꃧS ?UG72z><\Mѕ?ye%V;q 4mxYv>udJ~)qxD;2IG O ^Z+wxT Ii2Pڕbd E衰mwj#*bFE'P4 &D”)%c#',Y3z2*`|wȤw2UIw{vVa1(j޸ 2)v֮s;3}b|7ߟID=FNOU69!CWg1Aw$K8V5`)еx7Ts.ۭ:4 R"}~7]zρ1Xbq~6略C u ne/U5b?_#}1-Ϊ=ӼqЯ_7QBR%Xa>8&zHNIBsP> 2e65˯G8}S6Q=W-YPYlvVU3iڱB=1-@"oB۪lE__ ]f5~T0N[%VNwg3B%Ys~z G&j~Ro;% t#0̺UOf+hφY(8KPꜱi=_ AOSaG^VT$GXdt2 c2'~J=zcHz_lʖ~$<7%\6]F$ԣ"xxkƯoY9L̹ IF̳efY/6ńY@z9_|*uELȣ$>LDtVlIG{sj:~`k ] >@XآYkoW Gxr#V)IiH)\Σjw4 'C(G92:KcPŵ)1J HZ\Ig͡qNhh 9 9ptiX$Ir?_L2/ =jdJJC- V5OThj8<`_}o wW`|>A о 0$!ӱ{>唤XؕbҧJ; +L`n#9-vy7iiQPnͷz]O )#_Hk*mlsI/X  @+ae$6p!Dz ǩo3d#Q @K:ROo%'uF#1T,-%^Z2v >[a@3z9/pu(jDw7þϤLF6l汥f'-#nl @*Thqu[x p;ђ&&)DȨ 5IО]mY@gz6>UYJ18Z;|4?W]t4|.sٞAlR*ESzlShH ꌙd~_E:(FUp$b@tf Du"}=R5\1|ZaflB HИT"h{"Kb1(T(4N#%|PkEQ~C&En놎dp@f=,jI又I s<<[Tȁ/1 CN_f#CA[u\d^7JBKEH-Kd,s&<ܞ| H3YtH Fm+zޥx oBG;}`\@=wf]QƳCQXJ7AO?!2q ~ peI2h% ڴ[Fq<҇)|.7։&KZn%FT ƥmk_P" ΊSuػ{nǮꏵIB)m|J jgvDB$V>ĥwQ2C 8V' q|U}em;l-'&ێgFە~WcKD%|>8bFDpT֑6(5v1 5S&IcI,o]+Ma+~+Hj߯:HFYPe*^?w#.  OggSHa,s%$#)+*,-&(#($$+,>F·HB X`.UӞj% W]T_/E @sƙaM?GKx`>s-?e7視O G5h/ZVВhJPShKQ6x2{†bo4g:}pr>JZ#(4]m]~ yd8ˆ۹]1:h(UI3S ֙]yntdYXrT2ZdL*9K=r8^\WAlI-(ua? 6 #Z\3ThHxG_Ƚ9&l,hq&2g=3˕/aN;` o@p&|וzՌ>N*ڀPŧJ9frKhm}Ð xEd#a+P>yz`DМČϤ{}I!P9;DM;͙+L鷝Ef.qIq Ssb(Kɍ_}Vm$vx޶\G?fNTN8HI882LaC/>IXvӵQ1ga}8 Wf!Hrmkn/1-59mWcXFy'yV\VJ2%T8,qog B[ E\e("30shͥXtm8F <`K-^1LՄb=g_0J{DT(HQFxhk\U_֩D|\ӃkUNϦߝ #,ؘ KBai䙐)TfR5Lq\-1DvHukPq,IXJ] $D BnKlZe!EZ~@~DX.]̧6 `d2Ch+V-9qBҮ(6D >! 7kO4 ^ŴI6Y4 WILw7]ܬ"5;61HGa~_~Kάُ RU8w~S%%7Hk0 ro?fHR]i.mVm23ڎRY]n9XZ*u i,>1C.#*#59.Ya_ %OHs挗 z2.2tA V<EOytv<gbdG}j ]9:/Ni:o?WT[7҆N ШMVOqv Mm .☋D = >zʩh竦'?_4zЖKYPb|ש/r5U 67J**4>ђd:WE\%Ħ ekUq64+NԤ렆%zgۿlv#(xMnh &=Hlɖk_@z@1F+UnkE S-`7Z1ǥetH sAp˛o;ai۬M=;^JAٚXyB1Ƿ(Dt[ (AuG ً3S >&"]8AgbHS&Ar٤l 񤂪a6E}Mn𖊽R {.1 ,)5K>+AK=k}m2U<[J}VB?f.Ap> zKegq=886S3әxm]ENo֟lt%ZuW:.wra'f]fݕY+u>09k%-/TM6šez*X'|Q^;[{56ݬ%B73+TM@Uu ^d\n㯙U ' XO&$"IL klc ԍX׏*a9:AasjFL9h U{zDt~WMm61#V ErzW'8'~LvKGӘ]2&|EmYHQ1KQQVh|F"d,_jmdͪ4n$"YX E MnBwUi7-.&QfT߀31cM`Mh9k]93=??F43"BG IU% _}o_}yq{o1~ȉv|Tm g;d^̤V]SJX=Y~*dxjS'?t3o&ΣMtMI9R1Zw/CdoA<^>S=b^PUeGAZ#98w>!CQ..l+:_K$˖ᗧqEE>u GL]yM XfJeEłg 4I%N>^-o'9IN|^xT'2"f8[zYF.Mo}]j2K^SݙM.wl0ٟǕ8Uw',t+Sx#j%,tae@] C#Ⱦg )Ø<uC:Ej}ErVt'Ǐk\Z+>ZUgڗ*G6敚=5?C~`il;6։z%ẙ  -Y7=ԡK~ rXὈ!k ( }+XmعroЮ5s-.뜪rDKlrϬ^T/(Q.nd(:;D%PƟ} nRH/76M;o|=&|^KڹjZ{M_ TH ljcxB[0V7;uO\ǫN,f4ۡC.M⺥ b3dy]U3- '`Œ ާW~ u\g`_ kR#;|k [\z̴v_FxR 7yDR abybaox_I45œҖԙ. ]oyZQ*5 Y=uaq6^ eф!:G*&U/q!ķ Km"GG[qZK䆶:׷w-!ѭ4+&9' 8wI#fl(VRhDMUS%>u>{g4ͩjC-I)я[)GOggS_aP5|\&c=< EBtE\SN?*`ȳTptֲHf u9LRmDؔʥd  6kTgD,.QF >GW zIƹDPFzsJo,|k"plb-7Y4PUU]% &P~Ncdck\c啗E ٯ˶l>?o~P[-o54zAyO66KU>d˶;Y+qK-jRaz7ab.U 7ўusDI>+*0ȃhH*QYP6O"ڗS;2pW+18`˕8Qv0O4%y r8/-[CZDǫe%x 7ݵ}\=@mL,3d& Zparlatype-1.6.2/libparlatype/tests/glib.supp000066400000000000000000000162111353244124700212070ustar00rootroot00000000000000# GLib Valgrind suppressions file # # This provides a list of suppressions for all of GLib (including GIO), for all # Valgrind tools (memcheck, drd, helgrind, etc.) for the false positives and # deliberate one-time leaks which GLib causes to be reported when running under # Valgrind. # # When running an application which links to GLib under Valgrind, you can pass # this suppression file to Valgrind using --suppressions=/path/to/glib-2.0.supp. # # http://valgrind.org/docs/manual/manual-core.html#manual-core.suppress # # Note that there is currently no way for Valgrind to load this automatically # (https://bugs.kde.org/show_bug.cgi?id=160905), so the best GLib can currently # do is to install this file as part of its development package. # # This file should be updated if GLib introduces a new deliberate one-time leak, # or another false race positive in Valgrind: please file bugs at: # # https://bugzilla.gnome.org/enter_bug.cgi?product=glib { gnutls-init-calloc Memcheck:Leak fun:calloc ... fun:gtls_gnutls_init } { gnutls-init-realloc Memcheck:Leak fun:realloc ... fun:gtls_gnutls_init } { g-tls-backend-gnutls-init Memcheck:Leak fun:g_once_impl fun:g_tls_backend_gnutls_init } { p11-tokens-init Memcheck:Leak fun:calloc ... fun:create_tokens_inlock fun:initialize_module_inlock_reentrant } { gobject-init-malloc Memcheck:Leak fun:malloc ... fun:gobject_init_ctor } { gobject-init-realloc Memcheck:Leak fun:realloc ... fun:gobject_init_ctor } { gobject-init-calloc Memcheck:Leak fun:calloc ... fun:gobject_init_ctor } { g-type-register-dynamic Memcheck:Leak fun:malloc ... fun:g_type_register_dynamic } { g-type-register-static Memcheck:Leak fun:malloc ... fun:g_type_register_static } { g-type-register-static-realloc Memcheck:Leak fun:realloc ... fun:g_type_register_static } { g-type-register-static-calloc Memcheck:Leak fun:calloc ... fun:g_type_register_static } { g-type-add-interface-dynamic Memcheck:Leak fun:malloc ... fun:g_type_add_interface_dynamic } { g-type-add-interface-static Memcheck:Leak fun:malloc ... fun:g_type_add_interface_static } { g-test-rand-init Memcheck:Leak fun:calloc ... fun:g_rand_new_with_seed_array fun:test_run_seed ... fun:g_test_run } { g-test-rand-init2 Memcheck:Leak fun:calloc ... fun:g_rand_new_with_seed_array ... fun:get_global_random ... fun:g_test_init } { g-quark-table-new Memcheck:Leak fun:g_hash_table_new ... fun:quark_new } { g-quark-table-resize Memcheck:Leak fun:g_hash_table_resize ... fun:quark_new } { g-type-interface-init Memcheck:Leak fun:malloc ... fun:type_iface_vtable_base_init_Wm } { g-type-class-init Memcheck:Leak fun:calloc ... fun:type_class_init_Wm } { g-io-module-default-singleton-malloc Memcheck:Leak fun:malloc ... fun:g_type_create_instance ... fun:_g_io_module_get_default } { g-io-module-default-singleton-module Memcheck:Leak fun:calloc ... fun:g_module_open ... fun:_g_io_module_get_default } { g-get-language-names Memcheck:Leak fun:malloc ... fun:g_get_language_names } { g-static-mutex Memcheck:Leak fun:malloc ... fun:g_static_mutex_get_mutex_impl } { g-system-thread-init Memcheck:Leak fun:calloc ... fun:g_system_thread_new } { g-io-module-default-proxy-resolver-gnome Memcheck:Leak fun:calloc ... fun:g_proxy_resolver_gnome_init ... fun:_g_io_module_get_default } # memcheck checks that the third argument to ioctl() is a valid pointer, but # some ioctls use that argument as an integer { ioctl-with-non-pointer-param Memcheck:Param ioctl(generic) fun:ioctl fun:btrfs_reflink_with_progress } { g-private-get drd:ConflictingAccess fun:g_private_get } { g-private-get-helgrind Helgrind:Race fun:g_private_get } { g-private-set drd:ConflictingAccess fun:g_private_set } { g-private-set-helgrind Helgrind:Race fun:g_private_set } { g-type-construct-free drd:ConflictingAccess fun:g_type_free_instance } { g-type-construct-free-helgrind Helgrind:Race fun:g_type_free_instance } { g-variant-unref drd:ConflictingAccess fun:g_variant_unref } { g-variant-unref-helgrind Helgrind:Race fun:g_variant_unref } { g-unix-signals-main drd:ConflictingAccess fun:_g_main_create_unix_signal_watch } { g-unix-signals-dispatch drd:ConflictingAccess ... fun:dispatch_unix_signals* } { g-unix-signals-dispatch-helgrind Helgrind:Race ... fun:dispatch_unix_signals* } { g-unix-signals-other drd:ConflictingAccess fun:g_unix_signal_watch* } { g-unix-signals-other-helgrind Helgrind:Race fun:g_unix_signal_watch* } { g-unix-signals-handler drd:ConflictingAccess fun:g_unix_signal_handler* } { g-unix-signals-handler-helgrind Helgrind:Race fun:g_unix_signal_handler* } { g-unix-signals-worker drd:ConflictingAccess fun:glib_worker_main } { g-unix-signals-worker-helgrind Helgrind:Race fun:glib_worker_main } { g-wakeup-acknowledge drd:ConflictingAccess fun:read fun:g_wakeup_acknowledge } { g-type-fundamental drd:ConflictingAccess fun:g_type_fundamental } { g-type-fundamental-helgrind Helgrind:Race fun:g_type_fundamental } { g-type-class-peek-static drd:ConflictingAccess fun:g_type_class_peek_static } { g-type-class-peek-static-helgrind Helgrind:Race fun:g_type_class_peek_static } { g-type-is-a drd:ConflictingAccess ... fun:g_type_is_a } { g-type-is-a-helgrind Helgrind:Race ... fun:g_type_is_a } { g-inet-address-get-type drd:ConflictingAccess fun:g_inet_address_get_type } { g-inet-address-get-type-helgrind Helgrind:Race fun:g_inet_address_get_type } # From: https://github.com/fredericgermain/valgrind/blob/master/glibc-2.X-drd.supp { drd-libc-stdio drd:ConflictingAccess obj:*/lib*/libc-* } { drd-libc-recv drd:ConflictingAccess fun:recv } { drd-libc-send drd:ConflictingAccess fun:send } # GSources do an opportunistic ref count check { g-source-set-ready-time drd:ConflictingAccess fun:g_source_set_ready_time } { g-source-set-ready-time-helgrind Helgrind:Race fun:g_source_set_ready_time } { g-source-iter-next Helgrind:Race fun:g_source_iter_next fun:g_main_context_* fun:g_main_context_iterate } { g-object-instance-private drd:ConflictingAccess fun:*_get_instance_private } { g-object-instance-private-helgrind Helgrind:Race fun:*_get_instance_private } # GLib legitimately calls pthread_cond_signal without a mutex held { g-task-thread-complete drd:CondErr ... fun:g_cond_signal fun:g_task_thread_complete } { g-task-thread-complete Helgrind:Misc ... fun:g_cond_signal fun:g_task_thread_complete } # False positive, but I can't explain how (FIXME) { g-task-cond Helgrind:Misc ... fun:g_cond_clear fun:g_task_finalize } # Real race, but is_cancelled() is an opportunistic function anyway { g-cancellable-is-cancelled Helgrind:Race fun:g_cancellable_is_cancelled } # False positive { g-main-context-cond Helgrind:Misc ... fun:g_cond_clear fun:g_main_context_unref } # False positives { g-source-unlocked Helgrind:Race fun:g_source_*_unlocked } { g-source-internal Helgrind:Race fun:g_source_*_internal } # False positive { g_object_real_dispose Helgrind:Race fun:g_object_real_dispose } # False positive { g_object_new_valist Helgrind:Race ... fun:g_object_new_valist } parlatype-1.6.2/libparlatype/tests/gst.supp000066400000000000000000002156111353244124700210740ustar00rootroot00000000000000### this file contains suppressions for valgrind when running ### the gstreamer unit tests ### it might be useful for wider use as well ### syscall suppressions { Memcheck:Param clone(parent_tidptr) fun:clone fun:clone } { Memcheck:Param clone(child_tidptr) fun:clone fun:clone } { Memcheck:Param clone(tlsinfo) fun:clone fun:clone } ### glibc suppressions { Memcheck:Cond obj:/lib/ld-2.*.so fun:dl_open_worker obj:/lib/ld-2.*.so fun:_dl_open fun:dlopen_doit obj:/lib/ld-2.*.so fun:_dlerror_run fun:dlopen fun:g_module_open fun:gst_plugin_load_file } { Memcheck:Cond fun:strlen fun:fillin_rpath fun:_dl_init_paths fun:dl_main fun:_dl_sysdep_start fun:_dl_start obj:/lib64/ld-2.*.so obj:* obj:* } { Memcheck:Cond fun:_dl_relocate_object fun:dl_main fun:_dl_sysdep_start fun:_dl_start } { Memcheck:Cond fun:* fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen@@GLIBC_2.2.5 } # glibc does not deallocate thread-local storage { Memcheck:Leak fun:calloc fun:_dl_allocate_tls fun:pthread_create@@* } { Memcheck:Leak fun:calloc fun:allocate_dtv fun:_dl_allocate_tls } # I get an extra stack entry on x86/dapper { Memcheck:Leak fun:calloc obj:/lib/ld-2.3.*.so fun:_dl_allocate_tls fun:pthread_create@@* } { Memcheck:Cond fun:strstr fun:__pthread_initialize_minimal obj:/lib/libpthread-*.so obj:/lib/libpthread-*.so fun:call_init fun:_dl_init obj:/lib/ld-*.so } # a thread-related free problem in glibc from Edgard { __libc_freeres_rw_acess Memcheck:Addr4 obj:* obj:* obj:* obj:* obj:* fun:__libc_freeres } { Memcheck:Cond obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so } # g_module_open-related problems { Memcheck:Addr2 fun:memcpy fun:_dl_map_object_deps fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen@@GLIBC_2.1 fun:g_module_open fun:gst_plugin_load_file fun:gst_registry_scan_path_level fun:gst_registry_scan_path_level fun:gst_registry_scan_path_level fun:init_post fun:g_option_context_parse fun:gst_init_check fun:gst_init fun:gst_check_init fun:main } { Memcheck:Addr4 fun:memcpy fun:_dl_map_object_deps fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen@@GLIBC_2.1 fun:g_module_open fun:gst_plugin_load_file fun:gst_registry_scan_path_level fun:gst_registry_scan_path_level fun:gst_registry_scan_path_level fun:init_post fun:g_option_context_parse fun:gst_init_check fun:gst_init fun:gst_check_init fun:main } { Memcheck:Cond obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so fun:do_sym fun:_dl_sym fun:dlsym_doit obj:/lib/ld-2.3.*.so fun:_dlerror_run fun:dlsym fun:g_module_symbol fun:g_module_open fun:gst_plugin_load_file } { Memcheck:Cond obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so fun:dl_open_worker obj:/lib/ld-2.3.*.so fun:_dl_open fun:dlopen_doit obj:/lib/ld-2.3.*.so fun:_dlerror_run fun:dlopen@@GLIBC_2.1 fun:g_module_open fun:gst_plugin_load_file } { Memcheck:Cond obj:/lib/ld-2.3.*.so fun:dl_open_worker obj:/lib/ld-2.3.*.so fun:_dl_open fun:dlopen_doit obj:/lib/ld-2.3.*.so fun:_dlerror_run fun:dlopen@@GLIBC_2.1 fun:g_module_open fun:gst_plugin_load_file fun:gst_plugin_load_by_name fun:gst_plugin_feature_load } { Memcheck:Leak fun:malloc obj:/lib/ld-2.3.*.so fun:dl_open_worker obj:/lib/ld-2.3.*.so fun:_dl_open fun:dlopen_doit obj:/lib/ld-2.3.*.so fun:_dlerror_run fun:dlopen@@GLIBC_2.1 fun:g_module_open fun:gst_plugin_load_file fun:gst_plugin_load_by_name } { Memcheck:Addr4 obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so fun:dl_open_worker obj:/lib/ld-2.3.*.so fun:_dl_open fun:dlopen_doit obj:/lib/ld-2.3.*.so } { Memcheck:Addr4 obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so fun:dl_open_worker obj:/lib/ld-2.3.*.so fun:_dl_open fun:dlopen_doit obj:/lib/ld-2.3.*.so fun:_dlerror_run } { Memcheck:Addr4 obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so fun:dl_open_worker obj:/lib/ld-2.3.*.so fun:_dl_open fun:dlopen_doit obj:/lib/ld-2.3.*.so fun:_dlerror_run fun:dlopen@@GLIBC_2.1 fun:g_module_open } { Memcheck:Addr4 obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so fun:dl_open_worker obj:/lib/ld-2.3.*.so fun:_dl_open fun:dlopen_doit obj:/lib/ld-2.3.*.so fun:_dlerror_run fun:dlopen@@GLIBC_2.1 fun:g_module_open } { Memcheck:Addr4 obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so fun:do_sym fun:_dl_sym fun:dlsym_doit obj:/lib/ld-2.3.*.so fun:_dlerror_run fun:dlsym fun:g_module_symbol fun:g_module_open } { Memcheck:Param futex(uaddr2) fun:pthread_once obj:/lib/libc-2.3.*.so obj:/lib/libc-2.3.*.so fun:mbsnrtowcs fun:vfprintf fun:vsprintf fun:sprintf obj:/lib/libc-2.3.*.so fun:tmpfile fun:setup_pipe fun:setup_messaging_with_key fun:setup_messaging } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so fun:dlopen fun:g_module_open } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libc-2.7.so fun:_dl_sym obj:/lib/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so fun:dlsym fun:g_module_symbol fun:g_module_open } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so fun:dlopen fun:g_module_open } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so fun:dlopen fun:g_module_open } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so fun:dlopen fun:g_module_open } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libc-2.7.so obj:/lib/ld-2.7.so fun:__libc_dlopen_mode } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libc-2.7.so obj:/lib/ld-2.7.so fun:__libc_dlopen_mode } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libc-2.7.so obj:/lib/ld-2.7.so fun:__libc_dlopen_mode obj:/lib/i686/cmov/libc-2.7.so obj:/lib/i686/cmov/libc-2.7.so obj:/lib/i686/cmov/libc-2.7.so obj:/lib/i686/cmov/libc-2.7.so obj:/lib/i686/cmov/libc-2.7.so fun:iconv_open } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libc-2.7.so obj:/lib/ld-2.7.so fun:__libc_dlopen_mode obj:/lib/i686/cmov/libc-2.7.so obj:/lib/i686/cmov/libc-2.7.so obj:/lib/i686/cmov/libc-2.7.so obj:/lib/i686/cmov/libc-2.7.so obj:/lib/i686/cmov/libc-2.7.so fun:iconv_open } { Memcheck:Addr8 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/libc-2.7.so obj:/lib/ld-2.7.so fun:__libc_dlopen_mode obj:/lib/libc-2.7.so obj:/lib/libc-2.7.so obj:/lib/libc-2.7.so obj:/lib/libc-2.7.so obj:/lib/libc-2.7.so fun:iconv_open } { Memcheck:Addr8 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/libc-2.7.so obj:/lib/ld-2.7.so fun:__libc_dlopen_mode obj:/lib/libc-2.7.so obj:/lib/libc-2.7.so obj:/lib/libc-2.7.so obj:/lib/libc-2.7.so obj:/lib/libc-2.7.so fun:iconv_open } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so fun:dlopen } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so fun:dlopen } { Memcheck:Addr8 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/libc-2.7.so obj:/lib/ld-2.7.so fun:__libc_dlopen_mode } { Memcheck:Cond obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so fun:dlopen } { Memcheck:Cond obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so fun:dlopen } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so fun:dlopen } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so fun:dlopen } { Memcheck:Cond obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so fun:dlopen } { Memcheck:Cond obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so fun:dlopen } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so fun:dlopen } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so fun:dlopen } { Memcheck:Cond obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so fun:dlopen } { Memcheck:Cond obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so fun:dlopen } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/i686/cmov/libdl-2.7.so fun:dlopen } # suppression for a glibc bug: # http://valgrind.org/docs/manual/faq.html#faq.exit_errors> { Memcheck:Free fun:free obj:*libc-*.so fun:__libc_freeres fun:* fun:_Exit } # same as above, just so it works for tpm on gutsy/x86-64 { Memcheck:Free fun:free fun:free_mem fun:__libc_freeres } # valgrind doesn't allow me to specify a suppression for Addr1, Addr2, Addr4 # as Addr*, so 3 copies for that; and then 2 of each for that pesky memcpy { Memcheck:Addr1 fun:_dl_signal_error fun:_dl_map_object_deps fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen@@GLIBC_2.1 fun:g_module_open } { Memcheck:Addr2 fun:_dl_signal_error fun:_dl_map_object_deps fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen@@GLIBC_2.1 fun:g_module_open } { Memcheck:Addr4 fun:_dl_signal_error fun:_dl_map_object_deps fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen@@GLIBC_2.1 fun:g_module_open } { Memcheck:Addr1 fun:memcpy fun:_dl_signal_error fun:_dl_map_object_deps fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen@@GLIBC_2.1 fun:g_module_open } { Memcheck:Addr2 fun:memcpy fun:_dl_signal_error fun:_dl_map_object_deps fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen@@GLIBC_2.1 fun:g_module_open } { Memcheck:Addr4 fun:memcpy fun:_dl_signal_error fun:_dl_map_object_deps fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen@@GLIBC_2.1 fun:g_module_open } { Memcheck:Addr8 obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/libc-2.3.*.so obj:/lib/ld-2.3.*.so fun:_dl_open obj:/lib/libdl-2.3.*.so obj:/lib/ld-2.3.*.so } { Memcheck:Cond obj:/lib/ld-2.3.*.so obj:/lib/libc-2.3.*.so obj:/lib/ld-2.3.*.so fun:_dl_open obj:/lib/libdl-2.3.*.so obj:/lib/ld-2.3.*.so obj:/lib/libdl-2.3.*.so fun:dlopen fun:g_module_open fun:gst_plugin_load_file fun:gst_plugin_load_by_name fun:gst_plugin_feature_load } { Memcheck:Addr4 obj:/lib/ld-2.3.6.so obj:/lib/ld-2.3.6.so obj:/lib/tls/i686/cmov/libc-2.3.6.so obj:/lib/ld-2.3.6.so fun:_dl_open obj:/lib/tls/i686/cmov/libdl-2.3.6.so obj:/lib/ld-2.3.6.so obj:/lib/tls/i686/cmov/libdl-2.3.6.so fun:dlopen } { Memcheck:Cond obj:/lib/ld-2.3.6.so obj:/lib/tls/i686/cmov/libc-2.3.6.so obj:/lib/ld-2.3.6.so fun:_dl_open obj:/lib/tls/i686/cmov/libdl-2.3.6.so obj:/lib/ld-2.3.6.so obj:/lib/tls/i686/cmov/libdl-2.3.6.so fun:dlopen } { Memcheck:Cond obj:/lib/ld-2.3.6.so obj:/lib/ld-2.3.6.so obj:/lib/ld-2.3.6.so obj:/lib/tls/i686/cmov/libc-2.3.6.so obj:/lib/ld-2.3.6.so fun:_dl_open obj:/lib/tls/i686/cmov/libdl-2.3.6.so obj:/lib/ld-2.3.6.so obj:/lib/tls/i686/cmov/libdl-2.3.6.so fun:dlopen } ### glib suppressions { Memcheck:Cond fun:g_parse_debug_string obj:/usr/lib*/libglib-2.0.so.* fun:g_slice_alloc fun:g_slice_alloc0 } { Memcheck:Leak fun:*alloc ... fun:g_type_init* fun:init_pre* } { Memcheck:Leak fun:*alloc ... fun:g_type_register_fundamental } { Memcheck:Leak fun:malloc fun:realloc fun:g_realloc fun:type_node_any_new_W } { Memcheck:Leak fun:realloc fun:g_realloc fun:type_node_any_new_W } { Memcheck:Leak fun:calloc fun:g_malloc0 fun:g_type_class_ref } { Memcheck:Leak fun:malloc fun:realloc fun:g_realloc fun:type_add_flags_W } { Memcheck:Leak fun:calloc fun:g_malloc0 fun:type_add_flags_W } #pthread memleaks { Thread creation leak Memcheck:Leak fun:calloc fun:allocate_dtv fun:_dl_allocate* fun:_dl_allocate* fun:__pthread_initialize_minimal } { Thread management leak Memcheck:Leak fun:calloc fun:allocate_dtv fun:_dl_allocate* fun:_dl_allocate* fun:__pthread_* } { Thread management leak 2 Memcheck:Leak fun:memalign fun:_dl_allocate* fun:_dl_allocate* fun:__pthread_* } { pthread_create Syscall param write(buf) points to uninitialised byte(s) Memcheck:Param write(buf) fun:pthread_create@@GLIBC_2.2.5 fun:g_thread_create* } # nss_parse_* memleak (used by g_option_context_parse) { nss_parse_* memleak Memcheck:Leak fun:malloc fun:nss_parse_service_list fun:__nss_database_lookup } # liboil suppressions { Memcheck:Value8 obj:/usr/lib/liboil-0.3.so.0.1.0 obj:/usr/lib/liboil-0.3.so.0.1.0 obj:/usr/lib/liboil-0.3.so.0.1.0 fun:oil_cpu_fault_check_try fun:oil_test_check_impl fun:oil_class_optimize fun:oil_optimize_all fun:oil_init } { Memcheck:Addr8 obj:/lib/ld-2.3.6.so } { Memcheck:Param futex(uaddr2) fun:pthread_once obj:/lib/libc-2.3.6.so obj:/lib/libc-2.3.6.so fun:setlocale fun:init_pre fun:g_option_context_parse fun:gst_init_check fun:gst_init fun:gst_check_init fun:main } { Memcheck:Cond obj:/lib/ld-2.3.6.so obj:/lib/ld-2.3.6.so fun:_dl_open obj:/lib/libdl-2.3.6.so obj:/lib/ld-2.3.6.so obj:/lib/libdl-2.3.6.so fun:dlopen fun:g_module_open fun:gst_plugin_load_file } # this exists in a bunch of different variations, hence the short tail/trace { Memcheck:Addr4 obj:/lib/ld-2.4.so obj:/lib/ld-2.4.so } { Memcheck:Addr8 obj:/lib/ld-2.4.so obj:/lib/ld-2.4.so } # More edgy suppressions (Mike) { Memcheck:Cond obj:/lib/ld-2.4.so obj:/lib/ld-2.4.so obj:/lib/ld-2.4.so obj:/lib/ld-2.4.so fun:dlopen_doit obj:/lib/ld-2.4.so fun:_dlerror_run fun:dlopen@@GLIBC_2.1 } { Memcheck:Cond obj:/lib/ld-2.4.so obj:/lib/ld-2.4.so obj:/lib/ld-2.4.so obj:/lib/ld-2.4.so obj:/lib/ld-2.4.so obj:/lib/ld-2.4.so fun:dlopen_doit obj:/lib/ld-2.4.so fun:_dlerror_run fun:dlopen@@GLIBC_2.1 } { Memcheck:Cond obj:/lib/ld-2.4.so obj:/lib/ld-2.4.so obj:/lib/ld-2.4.so fun:do_sym fun:_dl_sym } # This one's overly general, but there's zero other information in the stack # trace - just these five lines! { Memcheck:Cond obj:/lib/ld-2.4.so obj:/lib/ld-2.4.so obj:/lib/ld-2.4.so obj:/lib/ld-2.4.so obj:/lib/ld-2.4.so } { Memcheck:Leak fun:calloc obj:/lib/ld-2.4.so fun:_dl_allocate_tls fun:pthread_create@@GLIBC_2.1 } # TLS leaks for feisty/x86 { Memcheck:Leak fun:calloc fun:allocate_dtv fun:_dl_allocate_tls fun:pthread_create@@GLIBC_2.1 } { Memcheck:Leak fun:calloc obj:/usr/lib/libcdio.so.6.0.1 fun:cdio_open_am_linux obj:/usr/lib/libcdio.so.6.0.1 fun:cdio_open_am } { Memcheck:Addr8 obj:/lib/ld-2.5.so } { Memcheck:Cond fun:snd_pcm_direct_shm_create_or_connect fun:snd_pcm_dsnoop_open fun:_snd_pcm_dsnoop_open obj:/*lib/libasound.so.2.0.0 obj:/*lib/libasound.so.2.0.0 fun:snd_pcm_open_slave fun:_snd_pcm_plug_open obj:/*lib/libasound.so.2.0.0 fun:snd_pcm_open_slave fun:_snd_pcm_asym_open obj:/*lib/libasound.so.2.0.0 obj:/*lib/libasound.so.2.0.0 } { Memcheck:Cond fun:snd*_pcm_hw_param_set_near } { Memcheck:Cond ... fun:snd*_pcm_hw_param_set_near } { Memcheck:Cond obj:/*lib/libasound.so.2.0.0 obj:/*lib/libasound.so.2.0.0 fun:snd_pcm_close obj:/*lib/libasound.so.2.0.0 } { Memcheck:Cond fun:snd_pcm_direct_shm_create_or_connect fun:snd_pcm_dmix_open fun:_snd_pcm_dmix_open obj:/*lib/libasound.so.2.0.0 obj:/*lib/libasound.so.2.0.0 fun:snd_pcm_open_slave fun:_snd_pcm_softvol_open obj:/*lib/libasound.so.2.0.0 fun:snd_pcm_open_slave fun:_snd_pcm_plug_open obj:/*lib/libasound.so.2.0.0 fun:snd_pcm_open_slave fun:_snd_pcm_asym_open obj:/*lib/libasound.so.2.0.0 obj:/*lib/libasound.so.2.0.0 } { Memcheck:Leak fun:malloc fun:strdup fun:snd_dlobj_cache_add obj:/*lib/libasound.so.2.0.0 fun:snd_pcm_open_slave fun:snd_pcm_dsnoop_open fun:_snd_pcm_dsnoop_open obj:/*lib/libasound.so.2.0.0 obj:/*lib/libasound.so.2.0.0 fun:snd_pcm_open_slave fun:_snd_pcm_plug_open obj:/*lib/libasound.so.2.0.0 fun:snd_pcm_open_slave fun:_snd_pcm_asym_open obj:/*lib/libasound.so.2.0.0 obj:/*lib/libasound.so.2.0.0 } # Catch about 15 variations on inserting info into an ALSA # internal cache { Memcheck:Leak fun:malloc ... fun:snd*_dlobj_cache_add obj:/*lib*/libasound.so.2.0.0 } { Memcheck:Leak fun:*alloc ... fun:snd_pcm_open_conf } { Memcheck:Leak fun:*alloc obj:/*lib*/libasound.so.2.0.0 ... fun:snd_config_hook_load } { Memcheck:Leak fun:*alloc obj:/*lib*/libasound.so.2.0.0 ... fun:snd_config_update_r fun:snd_config_update } { Memcheck:Leak fun:*alloc fun:strdup ... fun:snd_config_update_r fun:snd_config_update } { Memcheck:Leak fun:*alloc fun:_dl_close_worker ... fun:snd_config_searcha_hooks } { Memcheck:Leak fun:malloc obj:/lib/libc*.so fun:__nss_database_lookup obj:* obj:* fun:getgrnam_r fun:getgrnam fun:snd_pcm_direct_parse_open_conf } { Memcheck:Leak fun:calloc fun:_XCBInitDisplayLock fun:XOpenDisplay } # GConf internal initialisations related to getting the default client. { Memcheck:Leak fun:calloc fun:g_malloc0 fun:ORBit_alloc_tcval obj:/usr/lib/libORBit-2.so.* fun:ORBit_demarshal_IOR fun:ORBit_demarshal_object fun:CORBA_ORB_string_to_object obj:/usr/lib/libgconf-2.so.* fun:gconf_get_current_lock_holder fun:gconf_activate_server obj:/usr/lib/libgconf-2.so.* obj:/usr/lib/libgconf-2.so.* fun:gconf_engine_get_default } { Memcheck:Leak fun:calloc fun:g_malloc0 fun:ORBit_alloc_tcval obj:* fun:PortableServer_POA_servant_to_reference fun:* fun:* fun:* fun:gconf_engine_get_default } { Memcheck:Leak fun:calloc fun:g_malloc0 fun:ORBit_alloc_tcval obj:/usr/lib/libORBit-2.so.* fun:ORBit_demarshal_IOR fun:ORBit_demarshal_object fun:CORBA_ORB_string_to_object obj:/usr/lib/libgconf-2.so.* fun:gconf_get_current_lock_holder fun:gconf_activate_server obj:/usr/lib/libgconf-2.so.* obj:/usr/lib/libgconf-2.so.* fun:gconf_engine_get_default } { Memcheck:Leak fun:calloc fun:g_malloc0 fun:ORBit_alloc* fun:* fun:ORBit_demarshal_IOR fun:ORBit_demarshal_object fun:ORBit_demarshal_value fun:* fun:ORBit_small_invoke_stub fun:ConfigServer_get_default_database fun:* fun:gconf_engine_get_default } { Memcheck:Leak fun:calloc fun:g_malloc0 fun:ORBit_alloc* fun:* fun:IOP_generate_profiles fun:ORBit_marshal_object fun:ORBit_marshal_value fun:* fun:ORBit_small_invoke_stub fun:ConfigServer_add_client fun:* fun:* fun:gconf_engine_get_default } { Memcheck:Leak fun:calloc fun:g_malloc0 fun:ORBit_alloc_by_tc fun:* fun:PortableServer_POA_servant_to_reference fun:* fun:* fun:* fun:gconf_engine_get_default } { Memcheck:Leak fun:calloc fun:g_malloc0 fun:ORBit_alloc_by_tc obj:/usr/lib/libORBit-2.so.* fun:ORBit_demarshal_IOR fun:ORBit_demarshal_object fun:CORBA_ORB_string_to_object obj:/usr/lib/libgconf-2.so.* fun:gconf_get_current_lock_holder fun:gconf_activate_server obj:/usr/lib/libgconf-2.so.* obj:/usr/lib/libgconf-2.so.* fun:gconf_engine_get_default } { Memcheck:Leak fun:calloc fun:g_malloc0 fun:ORBit_alloc* fun:* fun:ORBit_demarshal_IOR fun:ORBit_demarshal_object fun:* fun:* fun:gconf_activate_server } # Some libORBit/bonobo initialisation stuff { Memcheck:Leak fun:malloc fun:g_malloc fun:ORBit_alloc_string fun:CORBA_string_dup fun:Bonobo_ActivationEnvValue_set fun:bonobo_activation_init_activation_env fun:bonobo_activation_orb_init fun:bonobo_activation_init } { Memcheck:Leak fun:calloc fun:g_malloc0 fun:ORBit_alloc* fun:ORBit_small_alloc* obj:/usr/lib/libORBit-2.so* fun:PortableServer_POA_servant_to_reference obj:/usr/lib/libbonobo-2.so* } { Memcheck:Leak fun:calloc fun:g_malloc0 fun:ORBit_alloc_tcval fun:ORBit_small_allocbuf fun:ORBit_adaptor_setup obj:/usr/lib/libORBit-2.so* fun:ORBit_POA_setup_root fun:ORBit_init_internals fun:CORBA_ORB_init } { Memcheck:Leak fun:calloc fun:g_malloc0 fun:ORBit_alloc_tcval fun:ORBit_adaptor_setup fun:* fun:ORBit_POA_setup_root fun:ORBit_init_internals fun:CORBA_ORB_init } { Memcheck:Leak fun:calloc fun:g_malloc0 fun:ORBit_alloc* fun:ORBit_small_allocbuf fun:bonobo_activation_init_activation_env fun:bonobo_activation_orb_init fun:bonobo_activation_init } # More GConf stuff from the FC5 buildbot, mostly variations on the # above stack traces { Memcheck:Param writev(vector[...]) fun:writev obj:/usr/lib/libORBit-2.so* fun:link_connection_writev fun:giop_send_buffer_write obj:/usr/lib/libORBit-2.so* fun:ORBit_small_invoke_stub fun:ORBit_small_invoke_stub_n fun:ORBit_c_stub_invoke fun:ConfigServer_ping fun:gconf_activate_server obj:/usr/lib/libgconf-2.so* obj:/usr/lib/libgconf-2.so* fun:gconf_engine_get_default } { Memcheck:Leak fun:calloc fun:g_malloc0 fun:ORBit_alloc* fun:ORBit_small_alloc* obj:/usr/lib/libORBit-2.so* fun:PortableServer_POA_servant_to_reference obj:/usr/lib/libgconf-2.so* obj:/usr/lib/libgconf-2.so* obj:/usr/lib/libgconf-2.so* fun:gconf_engine_get_default } { Memcheck:Leak fun:calloc fun:g_malloc0 fun:ORBit_alloc* fun:ORBit_small_alloc obj:/usr/lib/libORBit-2.so* fun:ORBit_demarshal_IOR fun:ORBit_demarshal_object fun:CORBA_ORB_string_to_object obj:/usr/lib/libgconf-2.so* fun:gconf_get_current_lock_holder fun:gconf_activate_server obj:/usr/lib/libgconf-2.so* obj:/usr/lib/libgconf-2.so* fun:gconf_engine_get_default } { Memcheck:Leak fun:calloc fun:g_malloc0 fun:ORBit_alloc* fun:ORBit_small_alloc* obj:/usr/lib/libORBit-2.so* fun:ORBit_demarshal_IOR fun:ORBit_demarshal_object fun:CORBA_ORB_string_to_object obj:/usr/lib/libgconf-2.so* fun:gconf_get_current_lock_holder fun:gconf_activate_server obj:/usr/lib/libgconf-2.so* obj:/usr/lib/libgconf-2.so* fun:gconf_engine_get_default } { Memcheck:Leak fun:calloc fun:g_malloc0 fun:ORBit_alloc* fun:ORBit_small_alloc* obj:/usr/lib/libORBit-2.so* fun:ORBit_demarshal_IOR fun:ORBit_demarshal_object fun:ORBit_demarshal_value obj:/usr/lib/libORBit-2.so* fun:ORBit_small_invoke_stub fun:ORBit_small_invoke_stub_n fun:ORBit_c_stub_invoke fun:ConfigServer_get_default_database obj:/usr/lib/libgconf-2.so* fun:gconf_engine_get_default } { Memcheck:Leak fun:calloc fun:g_malloc0 fun:ORBit_alloc* fun:ORBit_small_alloc* obj:/usr/lib/libORBit-2.so* fun:ORBit_OAObject_object_to_objkey fun:IOP_generate_profiles fun:ORBit_marshal_object fun:ORBit_marshal_value obj:/usr/lib/libORBit-2.so* fun:ORBit_small_invoke_stub fun:ORBit_small_invoke_stub_n fun:ORBit_c_stub_invoke fun:ConfigServer_add_client obj:/usr/lib/libgconf-2.so* obj:/usr/lib/libgconf-2.so* fun:gconf_engine_get_default } { Memcheck:Leak fun:malloc obj:*libc-*.so fun:__nss_database_lookup obj:* obj:* fun:getpwnam_r obj:/usr/lib*/libglib-2.0.so.* fun:g_get_home_dir } { Memcheck:Leak fun:malloc obj:*libc-*.so fun:__nss_database_lookup obj:* obj:* fun:getpwnam_r obj:/usr/lib*/libglib-2.0.so.* fun:g_get_user_name } { Memcheck:Leak fun:malloc obj:*libc-*.so fun:__nss_database_lookup obj:* obj:* fun:getpwnam_r obj:/usr/lib*/libglib-2.0.so.* fun:g_get_tmp_dir } { Memcheck:Leak fun:malloc obj:*libc-*.so fun:__nss_database_lookup obj:* obj:* fun:getpwnam_r obj:/usr/lib*/libglib-2.0.so.0.* fun:g_get_host_name } ## Some Fontconfig errors. { Memcheck:Leak fun:malloc fun:FcPatternObjectInsertElt fun:FcPatternObjectAddWithBinding fun:FcPatternAppend fun:FcEndElement obj:/usr/lib/libexpat.so.* obj:/usr/lib/libexpat.so.* obj:/usr/lib/libexpat.so.* obj:/usr/lib/libexpat.so.* fun:XML_ParseBuffer fun:FcConfigParseAndLoad fun:FcConfigParseAndLoad fun:FcParseInclude fun:FcEndElement obj:/usr/lib/libexpat.so.* obj:/usr/lib/libexpat.so.* obj:/usr/lib/libexpat.so.* obj:/usr/lib/libexpat.so.* fun:XML_ParseBuffer fun:FcConfigParseAndLoad } { Memcheck:Leak fun:*alloc ... fun:FcInitLoadConfig } # Issues with ubuntu Hardy, same crack as for previous ubuntus { Memcheck:Leak fun:calloc obj:* fun:_dl_allocate_tls fun:pthread_create@@* obj:/usr/lib/libgthread* fun:g_thread_* } # I've made this version generic, so that it covers future modifications # of library names { Memcheck:Leak fun:calloc obj:* fun:_dl_allocate_tls fun:pthread_create@@* fun:g_thread_* } # series of invalid read of size 4 in g_module_open for ubuntu # hardy x86/32bit { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/tls/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/tls/i686/cmov/libdl-2.7.so fun:dlopen fun:g_module_open fun:gst_plugin_load_* } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/tls/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/tls/i686/cmov/libdl-2.7.so fun:dlopen fun:g_module_open fun:gst_plugin_load_* } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/tls/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/tls/i686/cmov/libdl-2.7.so fun:dlopen fun:g_module_open fun:gst_plugin_load_* } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/tls/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/tls/i686/cmov/libdl-2.7.so fun:dlopen fun:g_module_open fun:gst_plugin_load_* } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/tls/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/tls/i686/cmov/libdl-2.7.so fun:dlopen fun:g_module_open fun:gst_plugin_load* } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/tls/i686/cmov/libc-2.7.so fun:_dl_sym obj:/lib/tls/i686/cmov/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/tls/i686/cmov/libdl-2.7.so fun:dlsym fun:g_module_symbol fun:g_module_open fun:gst_plugin_load_* } # series of invalid read of size 8 in g_module_open for ubuntu # hardy x86/64bit { Memcheck:Addr8 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/libdl-2.7.so fun:dlopen fun:g_module_open } { Memcheck:Addr8 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/libdl-2.7.so fun:dlopen fun:g_module_open } { Memcheck:Addr8 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/libdl-2.7.so fun:dlopen fun:g_module_open } { Memcheck:Addr8 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/libdl-2.7.so fun:dlopen fun:g_module_open } { Memcheck:Addr8 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/libdl-2.7.so fun:dlopen fun:g_module_open } { Memcheck:Addr8 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/libdl-2.7.so fun:dlopen fun:g_module_open } { Memcheck:Addr8 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/libc-2.7.so obj:/lib/libdl-2.7.so obj:/lib/ld-2.7.so obj:/lib/libdl-2.7.so fun:dlsym fun:g_module_symbol fun:g_module_open } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/tls/i686/cmov/libc-2.7.so obj:/lib/ld-2.7.so fun:__libc_dlopen_mode fun:__nss_lookup_function obj:/lib/tls/i686/cmov/libc-2.7.so fun:__nss_passwd_lookup fun:getpwnam_r } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/tls/i686/cmov/libc-2.7.so obj:/lib/ld-2.7.so fun:__libc_dlopen_mode fun:__nss_lookup_function obj:/lib/tls/i686/cmov/libc-2.7.so fun:__nss_passwd_lookup fun:getpwnam_r } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/tls/i686/cmov/libc-2.7.so obj:/lib/ld-2.7.so fun:__libc_dlopen_mode fun:__nss_lookup_function obj:/lib/tls/i686/cmov/libnss_compat-2.7.so fun:_nss_compat_getpwnam_r fun:getpwnam_r } { Memcheck:Addr4 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/tls/i686/cmov/libc-2.7.so obj:/lib/ld-2.7.so fun:__libc_dlopen_mode fun:__nss_lookup_function obj:/lib/tls/i686/cmov/libnss_compat-2.7.so fun:_nss_compat_getpwnam_r fun:getpwnam_r } { Memcheck:Addr8 obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/ld-2.7.so obj:/lib/libc-2.7.so obj:/lib/ld-2.7.so fun:__libc_dlopen_mode fun:__nss_lookup_function obj:/lib/libc-2.7.so fun:getpwnam_r } ## Leaks in ALSA (variations of leak from snd_config_load1) { Memcheck:Leak fun:calloc fun:_snd_config_make fun:_snd_config_make_add fun:* fun:* fun:* fun:* fun:snd_config_load1 } { Memcheck:Leak fun:calloc fun:_snd_config_make fun:_snd_config_make_add fun:* fun:* fun:snd_config_load1 } { Memcheck:Leak fun:calloc fun:_snd_config_make fun:_snd_config_make_add fun:* fun:* fun:* fun:snd_config_load1 } { Memcheck:Leak fun:calloc fun:_snd_config_make fun:_snd_config_make_add fun:* fun:* fun:* fun:* fun:* fun:snd_config_load1 } { Memcheck:Leak fun:calloc fun:_snd_config_make fun:_snd_config_make_add fun:* fun:* fun:* fun:* fun:* fun:* fun:snd_config_load1 } { Memcheck:Leak fun:calloc fun:_snd_config_make fun:_snd_config_make_add fun:* fun:* fun:* fun:* fun:* fun:* fun:* fun:snd_config_load1 } { Memcheck:Leak fun:calloc fun:_snd_config_make fun:_snd_config_make_add fun:* fun:* fun:* fun:* fun:* fun:* fun:* fun:* fun:snd_config_load1 } { Memcheck:Leak fun:malloc fun:snd1_dlobj_cache_add fun:snd_ctl_open_noupdate } { Memcheck:Leak fun:malloc fun:* fun:snd1_dlobj_cache_add fun:snd_ctl_open_noupdate } { Memcheck:Leak fun:*alloc fun:* fun:* fun:* fun:snd_config_load1 } { Memcheck:Leak fun:*alloc fun:* fun:* fun:* fun:* fun:snd_config_load1 } { Memcheck:Leak fun:*alloc fun:* fun:* fun:* fun:* fun:* fun:snd_config_load1 } { Memcheck:Leak fun:*alloc fun:* fun:* fun:* fun:* fun:* fun:* fun:snd_config_load1 } { Memcheck:Leak fun:*alloc fun:* fun:* fun:* fun:* fun:* fun:* fun:* fun:snd_config_load1 } { Memcheck:Leak fun:*alloc fun:* fun:* fun:* fun:* fun:* fun:* fun:* fun:* fun:snd_config_load1 } { Memcheck:Leak fun:*alloc fun:* fun:* fun:* fun:* fun:* fun:* fun:* fun:* fun:* fun:snd_config_load1 } { Memcheck:Leak fun:*alloc fun:* fun:* fun:* fun:* fun:* fun:* fun:* fun:* fun:* fun:* fun:snd_config_load1 } # The following are leaks of caps that need to be created dynamically # in the type registration of the plugin (used for pad templates). { Memcheck:Leak fun:malloc fun:g_malloc fun:g_slice_alloc fun:gst_caps_new_empty fun:gst_caps_new_simple fun:* fun:g_type_class_ref fun:gst_element_register } { Memcheck:Leak fun:malloc fun:g_malloc fun:g_slice_alloc fun:gst_caps_new_empty fun:* fun:* fun:g_type_class_ref fun:gst_element_register fun:gst_ogm_parse_plugin_init fun:plugin_init } { Memcheck:Leak fun:malloc fun:g_malloc fun:g_slice_alloc fun:gst_caps_new_empty fun:gst_caps_copy fun:gst_video_test_src_base_init fun:g_type_class_ref fun:gst_element_register } { Memcheck:Leak fun:malloc fun:g_malloc fun:g_slice_alloc fun:gst_caps_new_empty fun:gst_caps_copy fun:gst_video_test_src_getcaps fun:gst_video_test_src_base_init fun:g_type_class_ref fun:gst_element_register } { Memcheck:Leak fun:malloc fun:g_malloc fun:g_slice_alloc fun:gst_caps_new_empty fun:gst_ffmpegcsp_codectype_to_caps fun:gst_ffmpegcolorspace_register fun:plugin_init } { Memcheck:Leak fun:malloc fun:g_malloc fun:g_slice_alloc fun:gst_caps_new_empty fun:gst_caps_copy fun:gst_ffmpegcolorspace_register fun:plugin_init } { Memcheck:Leak fun:malloc fun:g_malloc fun:g_slice_alloc fun:gst_caps_new_empty fun:gst_caps_new_any fun:gst_ffmpegdemux_register fun:plugin_init } { Memcheck:Leak fun:malloc fun:g_malloc fun:g_slice_alloc fun:gst_caps_new_empty fun:gst_caps_copy fun:gst_audio_filter_class_add_pad_templates } { Memcheck:Leak fun:realloc fun:g_realloc fun:g_ptr_array_maybe_expand fun:g_ptr_array_add fun:gst_caps_append fun:gst_audio_filter_class_add_pad_templates } { Memcheck:Leak fun:malloc fun:realloc fun:g_realloc fun:g_ptr_array_maybe_expand fun:g_ptr_array_add fun:gst_caps_append fun:gst_audio_filter_class_add_pad_templates } { Memcheck:Leak fun:malloc fun:realloc fun:g_realloc fun:g_ptr_array_maybe_expand fun:g_ptr_array_add fun:gst_caps_copy fun:gst_audio_filter_class_add_pad_templates } { Memcheck:Leak fun:malloc fun:g_malloc fun:g_slice_alloc fun:g_ptr_array_sized_new fun:gst_caps_new_empty fun:gst_caps_copy fun:gst_audio_filter_class_add_pad_templates } { Memcheck:Leak fun:malloc fun:realloc fun:g_realloc fun:g_array_maybe_expand fun:g_array_sized_new fun:* fun:* fun:* fun:gst_value_init_and_copy fun:gst_structure_copy fun:gst_caps_copy fun:gst_audio_filter_class_add_pad_templates } { Memcheck:Leak fun:malloc fun:realloc fun:g_realloc fun:g_array_maybe_expand fun:g_array_sized_new fun:* fun:gst_structure_copy fun:gst_caps_copy fun:gst_audio_filter_class_add_pad_templates } { Memcheck:Leak fun:malloc fun:g_malloc fun:g_slice_alloc fun:g_array_sized_new fun:* fun:gst_structure_copy fun:gst_caps_copy fun:gst_audio_filter_class_add_pad_templates } { Memcheck:Leak fun:malloc fun:g_malloc fun:g_slice_alloc fun:gst_caps_new_empty fun:gst_riff_create_*_template_caps } { Memcheck:Leak fun:malloc fun:realloc fun:g_realloc fun:* fun:* fun:* fun:gst_structure_copy fun:gst_caps_copy fun:gst_caps_append fun:gst_riff_create_*_template_caps } { Memcheck:Leak fun:malloc fun:g_malloc fun:g_slice_alloc fun:g_array_sized_new fun:* fun:gst_structure_copy fun:gst_caps_copy fun:gst_caps_append fun:gst_riff_create_*_template_caps } ## Leaks in pango (bilboed: gentoo unstable amd64) { Memcheck:Leak fun:*alloc ... fun:pango_layout_get_pixel_extents } { Memcheck:Leak fun:calloc fun:g_malloc0 fun:pango_language_from_string fun:pango_language_get_default fun:pango_context_init fun:g_type_create_instance fun:g_object_constructor fun:g_object_newv fun:g_object_new_valist fun:g_object_new fun:pango_font_map_create_context } { Memcheck:Leak fun:calloc fun:g_malloc0 fun:pango_language_from_string } ## Leak of everything allocated by gst-libav plugin init { Memcheck:Leak fun:*alloc ... fun:gst_ffmpeg_cfg_init } ## Leak of GIO module through gnomevfs { Memcheck:Leak fun:malloc fun:g_malloc fun:* fun:* fun:g_type_create_instance fun:* fun:* fun:* fun:* fun:g_io_module_new fun:g_io_modules_load_all_in_directory fun:* fun:get_default_vfs } ## Conditional jump in getaddrinfo (bilboed, gentoo ~amd64, Dec 13 2008) { Memcheck:Cond fun:gaih_inet fun:getaddrinfo } ## Dynamic pad templates in mxfmux { Memcheck:Leak fun:malloc fun:g_malloc fun:g_slice_alloc fun:gst_caps_new_empty fun:gst_caps_from_string fun:mxf_*_init fun:plugin_init } ## We don't know if ffmpeg frees this or not and better pass a copy for safety { Memcheck:Leak fun:malloc fun:g_malloc fun:g_strdup fun:gst_ffmpeg_cfg_fill_context fun:gst_ffmpegenc_setcaps fun:gst_pad_set_caps } ## Leak/overreads with glibc-2.10 { Memcheck:Value8 fun:do_sym fun:dlsym_doit fun:_dl_catch_error fun:_dlerror_run fun:dlsym } { Memcheck:Cond fun:do_sym fun:dlsym_doit fun:_dl_catch_error fun:_dlerror_run fun:dlsym } { Memcheck:Value8 fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen* } { Memcheck:Value8 fun:_dl_relocate_object fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen* } { Memcheck:Value8 fun:_dl_check_map_versions fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen* } { Memcheck:Cond fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen* } { Memcheck:Cond fun:_dl_relocate_object fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen* } { Memcheck:Cond fun:_dl_check_map_versions fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen* } { Memcheck:Cond fun:_dl_map_object* fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen* } { Memcheck:Value8 fun:_dl_map_object* fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen* } { Memcheck:Value8 fun:_dl_check_caller fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen* } { Memcheck:Cond fun:_dl_check_caller fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen* } { Memcheck:Value8 obj:/lib*/libc-2.10.*.so obj:/lib*/libc-2.10.*.so fun:_vgnU_freeres } { Memcheck:Cond obj:/lib*/libc-2.10.*.so obj:/lib*/libc-2.10.*.so fun:_vgnU_freeres } { Memcheck:Free fun:free obj:/lib*/libc-2.10.*.so obj:/lib*/libc-2.10.*.so fun:_vgnU_freeres } { Memcheck:Value8 fun:_dl_fini fun:__run_exit_handlers fun:exit } { Memcheck:Cond fun:_dl_fini fun:__run_exit_handlers fun:exit } { Memcheck:Value8 fun:_dl_sort_fini fun:_dl_fini fun:__run_exit_handlers fun:exit } { Memcheck:Cond fun:_dl_sort_fini fun:_dl_fini fun:__run_exit_handlers fun:exit } # glibc-2.10 dl overreads { Memcheck:Value8 fun:_dl_fixup fun:_dl_runtime_resolve } { Memcheck:Cond fun:_dl_fixup fun:_dl_runtime_resolve } { Memcheck:Value8 fun:_dl_lookup_symbol_x fun:_dl_fixup fun:_dl_runtime_resolve } { Memcheck:Cond fun:_dl_lookup_symbol_x fun:_dl_fixup fun:_dl_runtime_resolve } { Memcheck:Value8 fun:call_init fun:_dl_init } { Memcheck:Value8 fun:_dl_init } { Memcheck:Value8 fun:do_lookup_x fun:_dl_lookup_symbol_x fun:_dl_relocate_object fun:dl_main } { Memcheck:Cond fun:do_lookup_x fun:_dl_lookup_symbol_x fun:_dl_relocate_object fun:dl_main } { Memcheck:Value8 fun:_dl_lookup_symbol_x fun:_dl_relocate_object fun:dl_main } { Memcheck:Value8 fun:_dl_relocate_object fun:dl_main } { Memcheck:Value8 fun:dl_main fun:_dl_sysdep_start fun:_dl_start } { Memcheck:Cond fun:dl_main fun:_dl_sysdep_start fun:_dl_start } { Memcheck:Cond fun:* fun:do_lookup_x fun:_dl_lookup_symbol_x fun:_dl_relocate_object fun:dl_main } { Memcheck:Value8 fun:* fun:do_lookup_x fun:_dl_lookup_symbol_x fun:_dl_relocate_object fun:dl_main } { Memcheck:Value8 fun:_dl_check_map_versions fun:_dl_check_all_versions fun:version_check_doit fun:_dl_receive_error fun:dl_main } { Memcheck:Cond fun:_dl_check_map_versions fun:_dl_check_all_versions fun:version_check_doit fun:_dl_receive_error fun:dl_main } { Memcheck:Value8 fun:_dl_check_all_versions fun:version_check_doit fun:_dl_receive_error fun:dl_main } { Memcheck:Cond fun:_dl_check_all_versions fun:version_check_doit fun:_dl_receive_error fun:dl_main } { Memcheck:Value8 fun:* fun:_dl_check_map_versions fun:_dl_check_all_versions fun:version_check_doit fun:_dl_receive_error fun:dl_main } { Memcheck:Cond fun:* fun:_dl_check_map_versions fun:_dl_check_all_versions fun:version_check_doit fun:_dl_receive_error fun:dl_main } { Memcheck:Value8 fun:init_tls fun:dl_main } { Memcheck:Cond fun:init_tls fun:dl_main } { Memcheck:Cond fun:_dl_map_object_deps fun:dl_main } { Memcheck:Value8 fun:_dl_map_object_deps fun:dl_main } { Memcheck:Value8 fun:_dl_protect_relro fun:_dl_relocate_object fun:dl_main } { Memcheck:Value8 fun:* fun:do_lookup_x fun:_dl_lookup_symbol_x fun:_dl_relocate_object fun:dl_main } { Memcheck:Value8 fun:_dl_setup_hash fun:_dl_map_object_from_fd fun:_dl_map_object } { Memcheck:Value8 fun:* fun:_dl_new_object fun:_dl_map_object_from_fd fun:_dl_map_object } { Memcheck:Cond fun:* fun:_dl_new_object fun:_dl_map_object_from_fd fun:_dl_map_object } { Memcheck:Value8 fun:openaux fun:_dl_catch_error fun:_dl_map_object_deps fun:dl_main } { Memcheck:Value8 fun:* fun:_dl_map_object } { Memcheck:Cond fun:* fun:_dl_map_object } { Memcheck:Cond fun:_dl_map_object fun:openaux fun:_dl_catch_error fun:_dl_map_object_deps fun:dl_main } { Memcheck:Value8 fun:_dl_map_object fun:openaux fun:_dl_catch_error fun:_dl_map_object_deps fun:dl_main } { Memcheck:Cond fun:* fun:_dl_map_object fun:openaux fun:_dl_catch_error fun:_dl_map_object_deps fun:dl_main } { Memcheck:Value8 fun:* fun:open_path fun:_dl_map_object fun:openaux fun:_dl_catch_error fun:_dl_map_object_deps fun:dl_main } { Memcheck:Cond fun:* fun:open_path fun:_dl_map_object fun:openaux fun:_dl_catch_error fun:_dl_map_object_deps fun:dl_main } { Memcheck:Value8 fun:_dl_map_object_from_fd fun:_dl_map_object } { Memcheck:Cond fun:_dl_map_object_from_fd fun:_dl_map_object } { Memcheck:Value8 fun:* fun:_dl_new_object fun:_dl_map_object_from_fd fun:_dl_map_object } { Memcheck:Value8 fun:_dl_new_object fun:_dl_map_object_from_fd fun:_dl_map_object } { Memcheck:Cond fun:_dl_new_object fun:_dl_map_object_from_fd fun:_dl_map_object } { Memcheck:Value8 fun:* fun:_dl_name_match_p fun:_dl_map_object } { Memcheck:Cond fun:* fun:* fun:_dl_map_object } { Memcheck:Value8 fun:* fun:_dl_name_match_p fun:_dl_check_map_versions fun:_dl_check_all_versions } { Memcheck:Value8 fun:* fun:* fun:do_lookup_x fun:_dl_lookup_symbol_x } { Memcheck:Cond fun:do_lookup_x fun:_dl_lookup_symbol_x } { Memcheck:Value8 fun:do_lookup_x fun:_dl_lookup_symbol_x } { Memcheck:Value8 fun:* fun:do_lookup_x fun:_dl_lookup_symbol_x } { Memcheck:Cond fun:* fun:do_lookup_x fun:_dl_lookup_symbol_x } { Memcheck:Value8 fun:_dl_name_match_p fun:_dl_map_object fun:dl_open_worker } { Memcheck:Cond fun:_dl_name_match_p fun:_dl_map_object fun:dl_open_worker } { Memcheck:Value8 fun:* fun:_dl_name_match_p fun:_dl_map_object fun:dl_open_worker } { Memcheck:Cond fun:* fun:_dl_name_match_p fun:_dl_map_object fun:dl_open_worker } { Memcheck:Value8 fun:_dl_lookup_symbol_x fun:_dl_relocate_object } { Memcheck:Cond fun:_dl_lookup_symbol_x fun:_dl_relocate_object } { Memcheck:Value8 fun:* fun:* fun:_dl_check_map_versions } { Memcheck:Value8 fun:* fun:_dl_check_map_versions } { Memcheck:Cond fun:* fun:* fun:_dl_check_map_versions } { Memcheck:Cond fun:* fun:_dl_check_map_versions } { Memcheck:Value8 fun:openaux } { Memcheck:Value8 fun:_dl_name_match_p fun:_dl_map_object } { Memcheck:Cond fun:_dl_close_worker fun:_dl_close fun:_dl_catch_error fun:dlerror_run } { Memcheck:Value8 fun:_dl_close_worker fun:_dl_close fun:_dl_catch_error fun:dlerror_run } { Memcheck:Cond fun:* fun:_dl_close_worker fun:_dl_close fun:_dl_catch_error fun:dlerror_run } { Memcheck:Value8 fun:* fun:_dl_close_worker fun:_dl_close fun:_dl_catch_error fun:dlerror_run } { Memcheck:Cond fun:fillin_rpath fun:_dl_init_paths fun:dl_main } { Memcheck:Value8 fun:fillin_rpath fun:_dl_init_paths fun:dl_main } { Memcheck:Cond fun:* fun:fillin_rpath fun:_dl_init_paths fun:dl_main } { Memcheck:Value8 fun:* fun:fillin_rpath fun:_dl_init_paths fun:dl_main } { Memcheck:Cond fun:_dl_map_object fun:map_doit fun:_dl_catch_error fun:do_preload fun:dl_main } { Memcheck:Value8 fun:_dl_map_object fun:map_doit fun:_dl_catch_error fun:do_preload fun:dl_main } { Memcheck:Param open(filename) fun:open fun:open_verify fun:_dl_map_object fun:map_doit fun:_dl_catch_error fun:do_preload fun:dl_main } { Memcheck:Param stat(file_name) fun:_xstat fun:open_path fun:_dl_map_object fun:openaux fun:_dl_catch_error fun:_dl_map_object_deps fun:dl_main } { Memcheck:Value8 fun:_dl_catch_error fun:_dl_map_object_deps fun:dl_open_worker } { Memcheck:Cond fun:* fun:_dl_map_object_deps fun:dl_main } { Memcheck:Value8 fun:* fun:_dl_map_object_deps fun:dl_main } { Memcheck:Value8 fun:* fun:* fun:_dl_map_object_deps fun:dl_main } # glibc-2.10 tls issues { Memcheck:Cond fun:* fun:init_tls fun:dl_main } { Memcheck:Value8 fun:* fun:init_tls fun:dl_main } { Memcheck:Cond fun:* fun:* fun:init_tls fun:dl_main } { Memcheck:Value8 fun:* fun:* fun:init_tls fun:dl_main } { Memcheck:Cond fun:_dl_allocate_tls_init fun:dl_main } { Memcheck:Value8 fun:_dl_allocate_tls_init fun:dl_main } { Memcheck:Cond fun:* fun:_dl_allocate_tls_init fun:dl_main } { Memcheck:Value8 fun:* fun:_dl_allocate_tls_init fun:dl_main } { Memcheck:Cond fun:__tls* obj:* obj:* fun:_vgnU_freeres } { Memcheck:Param arch_prctl(arg2) fun:init_tls } # GLib caching tmp/home directories (glibc-2.10 variants) { Memcheck:Cond fun:* fun:dl_open_worker fun:* fun:* fun:* fun:_dl_catch_error fun:dlerror_run fun:* fun:__nss_lookup_function fun:__nss_lookup fun:getpwnam* } { Memcheck:Value8 fun:* fun:dl_open_worker fun:* fun:* fun:* fun:_dl_catch_error fun:dlerror_run fun:* fun:__nss_lookup_function fun:__nss_lookup fun:getpwnam* } { Memcheck:Cond fun:dl_open_worker fun:* fun:* fun:do_dlopen fun:* fun:dlerror_run fun:* fun:__nss_lookup_function fun:__nss_lookup fun:getpwnam* } { Memcheck:Value8 fun:dl_open_worker fun:* fun:* fun:do_dlopen fun:* fun:dlerror_run fun:* fun:__nss_lookup_function fun:__nss_lookup fun:getpwnam* } { Memcheck:Value8 fun:_dl_add_to_slotinfo fun:dl_main } { Memcheck:Param open(filename) fun:open fun:open_verify fun:open_path fun:_dl_map_object } # GModule issues with glibc-2.10 { Memcheck:Value8 fun:* fun:* fun:dlsym fun:g_module_symbol } { Memcheck:Value8 fun:g_module_* fun:gst_plugin* } { Memcheck:Value8 fun:* fun:g_module_* fun:gst_plugin* } { Memcheck:Value8 fun:* fun:* fun:dlopen* fun:g_module_open } { Memcheck:Value8 fun:* fun:* fun:* fun:* fun:* fun:* fun:* fun:dlsym fun:g_module_symbol } { Memcheck:Value8 fun:* fun:* fun:* fun:* fun:* fun:dlopen* fun:g_module_open } # Leak in GSlice { Memcheck:Value8 fun:g_parse_debug_string fun:slice_config_init fun:g_slice_init_nomessage fun:_g_slice_thread_init_nomessage fun:g_thread_init_glib } # 2.10 pthread issues { Memcheck:Value8 fun:__pthread_initialize_minimal } # glibc 2.11 conditional { Memcheck:Cond fun:_dl_relocate_object fun:dl_main fun:_dl_sysdep_start fun:_dl_start obj:/lib64/ld-2.11.so } # glibc 2.11 Leak { Memcheck:Leak fun:*alloc fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen@@GLIBC_2.2.5 } { Memcheck:Leak fun:*alloc fun:_dl_* fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen@@GLIBC_2.2.5 } { Memcheck:Leak fun:*alloc fun:_dl_* fun:_dl_* fun:_dl_* fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen@@GLIBC_2.2.5 } { Memcheck:Leak fun:*alloc fun:* fun:_dl_* fun:openaux fun:_dl_catch_error fun:_dl_map_object_deps fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen@@GLIBC_2.2.5 } { Memcheck:Leak fun:*alloc fun:* fun:_dl_map_object fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen@@GLIBC_2.2.5 } { Memcheck:Leak fun:*alloc fun:_dl_new_object fun:_dl_map_object_from_fd fun:_dl_map_object fun:openaux fun:_dl_catch_error fun:_dl_map_object_deps fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen@@GLIBC_2.2.5 } { Memcheck:Leak fun:*alloc fun:* fun:_dl_* fun:_dl_* fun:_dl_* fun:dl_open_worker fun:_dl_catch_error fun:_dl_open fun:dlopen_doit fun:_dl_catch_error fun:_dlerror_run fun:dlopen@@GLIBC_2.2.5 } # glib type leaks { Memcheck:Leak fun:*alloc ... fun:g_type_register_static } # new registry system # all of this will only be created once when loading registry. { Memcheck:Leak fun:*alloc ... fun:_priv_gst_registry_chunks_load_plugin } # system-wide tags # these tags are registered once { Memcheck:Leak fun:*alloc fun:* fun:* fun:gst_tag_register fun:_gst_tag_initialize } # system-wide type classes that we keep referenced { Memcheck:Leak fun:*alloc ... fun:g_type_class_ref } # leaking cached queries which are only initialized once { Memcheck:Leak fun:*alloc ... fun:_gst_query_initialize fun:init_post } # macosx (leopard) library loader leak { Memcheck:Leak fun:_Znwm fun:_ZNSs4_Rep9_S_createEmmRKSaIcE fun:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag fun:_ZNSsC2EPKcRKSaIcE fun:_Z41__static_initialization_and_destruction_0ii fun:_ZN16ImageLoaderMachO18doModInitFunctionsERKN11ImageLoader11LinkContextE } # GObject type registration { Memcheck:Leak fun:*alloc ... fun:_g_atomic_array_copy } { Memcheck:Leak fun:*alloc fun:getdelim obj:*libselinux* } { Memcheck:Leak fun:*alloc ... obj:*/sed } { Memcheck:Addr8 ... obj:*/sed } # GLib 2.23 interface vtable { Memcheck:Leak fun:*alloc ... fun:g_type_add_interface_static } { Memcheck:Leak fun:*alloc obj:*/dash } # libtool/gentoo fake leak # it actually runs bash and valgrind complains { Memcheck:Leak fun:*alloc obj:/bin/bash } { Memcheck:Leak fun:*alloc ... fun:_gst_plugin_loader_client_run fun:main } { Memcheck:Cond fun:*strcasecmp* ... fun:__dcigettext } { Memcheck:Value8 fun:*strcasecmp* ... fun:__dcigettext } { Memcheck:Leak fun:malloc ... fun:gst_poll_new fun:gst_poll_new_timer fun:gst_system_clock_init } { Memcheck:Leak fun:calloc ... fun:gobject_init_ctor } { Memcheck:Leak fun:malloc ... fun:g_quark_from*_string } { Memcheck:Param timer_create(evp) fun:timer_create@@GLIBC_2.3.3 } { closures aren't valgrind friendly (bgo#739850) Memcheck:Leak fun:calloc ... fun:g_cclosure_new } { closures aren't valgrind friendly (bgo#739850) Memcheck:Leak fun:malloc ... fun:g_closure_add_invalidate_notifier } { closures aren't valgrind friendly (bgo#739850) Memcheck:Leak fun:calloc ... fun:g_closure_new_simple } { glib/giomodules2 (from libsoup.supp) Memcheck:Leak ... fun:_g_io_module_get_default } { Memcheck:Addr8 fun:__GI___strncasecmp_l fun:____strtod_l_internal fun:gst_value_deserialize_double } { Memcheck:Addr8 fun:do_lookup_x } { Memcheck:Leak fun:malloc ... fun:g_quark_init } { Leak of debug function list Memcheck:Leak fun:*alloc ... fun:g_slist_prepend fun:gst_debug_add_log_function }parlatype-1.6.2/libparlatype/tests/meson.build000066400000000000000000000010351353244124700215210ustar00rootroot00000000000000tests = [ 'player', 'progressdialog', 'wavedata', 'waveloader', 'waveviewer', ] test_data = [ 'data/test1.ogg', ] foreach t: tests exe = executable( t, '@0@.c'.format(t), install: false, dependencies: [ libparlatype_dep, gstreamer ], ) 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()), 'GST_PLUGIN_PATH=@0@'.format(join_paths(meson.current_build_dir(), '../gst-plugin-sphinx')), ], ) endforeach parlatype-1.6.2/libparlatype/tests/player.c000066400000000000000000000340731353244124700210270ustar00rootroot00000000000000/* 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 typedef struct { PtPlayer *testplayer; gchar *testfile; gchar *testuri; } PtPlayerFixture; static void pt_player_fixture_set_up (PtPlayerFixture *fixture, gconstpointer user_data) { GError *error = NULL; fixture->testplayer = NULL; gchar *path; GFile *file; gboolean success; fixture->testplayer = pt_player_new (); pt_player_setup_player (fixture->testplayer, &error); g_assert_no_error (error); path = g_test_build_filename (G_TEST_DIST, "data", "test1.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, &error); g_assert_no_error (error); 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); } static void player_new (void) { /* create new PtPlayer and test initial properties */ GError *error = NULL; PtPlayer *testplayer; gdouble speed, volume; testplayer = pt_player_new (); pt_player_setup_player (testplayer, &error); g_assert_no_error (error); g_assert (PT_IS_PLAYER (testplayer)); g_object_get (testplayer, "speed", &speed, "volume", &volume, NULL); g_assert_cmpfloat (speed, ==, 1.0); g_assert_cmpfloat (volume, ==, 1.0); g_object_unref (testplayer); } static void player_open_fail (void) { GError *error = NULL; PtPlayer *testplayer; gboolean success; gchar *path; GFile *file; gchar *uri; testplayer = pt_player_new (); pt_player_setup_player (testplayer, &error); g_assert_no_error (error); success = pt_player_open_uri (testplayer, "foo", &error); g_assert_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_NOT_FOUND); g_assert_false (success); g_clear_error (&error); 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 (testplayer, uri, &error); g_assert_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_NOT_FOUND); g_assert_false (success); g_clear_error (&error); g_object_unref (file); g_free (path); g_free (uri); 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 (testplayer, uri, &error); g_assert_error (error, GST_STREAM_ERROR, GST_STREAM_ERROR_WRONG_TYPE); g_assert_false (success); g_clear_error (&error); g_object_unref (file); g_free (path); g_free (uri); g_object_unref (testplayer); } 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, ==, "test1.ogg"); g_free (getchar); } typedef struct { GAsyncResult *res; GMainLoop *loop; } SyncData; static void quit_loop_cb (PtPlayer *player, GAsyncResult *res, gpointer user_data) { SyncData *data = user_data; data->res = g_object_ref (res); g_main_loop_quit (data->loop); } static void player_open_cancel (void) { /* open test file async and cancel operation */ GError *error = NULL; PtPlayer *testplayer; gchar *testfile; gchar *testuri; gboolean success; SyncData data; GMainContext *context; context = g_main_context_new (); g_main_context_push_thread_default (context); data.loop = g_main_loop_new (context, FALSE); data.res = NULL; testplayer = pt_player_new (); pt_player_setup_player (testplayer, &error); g_assert_no_error (error); testfile = g_test_build_filename (G_TEST_DIST, "data/test1.ogg", NULL); testuri = g_strdup_printf ("file://%s", testfile); pt_player_open_uri_async (testplayer, testuri, (GAsyncReadyCallback) quit_loop_cb, &data); pt_player_cancel (testplayer); g_main_loop_run (data.loop); success = pt_player_open_uri_finish (testplayer, data.res, &error); g_assert_false (success); g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CANCELLED); g_error_free (error); g_free (testfile); g_free (testuri); g_object_unref (testplayer); g_main_loop_unref (data.loop); g_object_unref (data.res); } static void player_timestamps (PtPlayerFixture *fixture, gconstpointer user_data) { gchar *timestamp = NULL; gchar *timestamp2; gboolean valid; /* 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 */ GError *error = NULL; 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 (volume, ==, 0.7); g_assert_cmpfloat (speed, ==, 0.7); /* mute doesn't change the volume */ pt_player_mute_volume (fixture->testplayer, TRUE); g_object_get (fixture->testplayer, "volume", &volume, NULL); g_assert_cmpfloat (volume, ==, 0.7); pt_player_mute_volume (fixture->testplayer, FALSE); g_object_get (fixture->testplayer, "volume", &volume, NULL); g_assert_cmpfloat (volume, ==, 0.7); /* check bind property */ bind_player = pt_player_new (); pt_player_setup_player (bind_player, &error); g_assert_no_error (error); 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:10"); g_free (timestring); timestring = pt_player_get_duration_time_string (fixture->testplayer, PT_PRECISION_SECOND_10TH); g_assert_cmpstr (timestring, ==, "0:10.0"); g_free (timestring); timestring = pt_player_get_duration_time_string (fixture->testplayer, PT_PRECISION_SECOND_100TH); g_assert_cmpstr (timestring, ==, "0:10.06"); 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); } 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_func ("/player/open-cancel", player_open_cancel); 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); return g_test_run (); } parlatype-1.6.2/libparlatype/tests/progressdialog.c000066400000000000000000000022771353244124700225600ustar00rootroot00000000000000/* 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 static void progressdialog_new (void) { PtProgressDialog *testdialog; testdialog = pt_progress_dialog_new (NULL); g_assert (PT_IS_PROGRESS_DIALOG (testdialog)); pt_progress_dialog_set_progress (testdialog, 0.5); gtk_widget_destroy (GTK_WIDGET (testdialog)); } int main (int argc, char *argv[]) { g_test_init (&argc, &argv, NULL); g_test_add_func ("/progressdialog/new", progressdialog_new); gtk_init (NULL, NULL); return g_test_run (); } parlatype-1.6.2/libparlatype/tests/wavedata.c000066400000000000000000000025271353244124700213260ustar00rootroot00000000000000/* 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 static void wavedata_new (void) { PtWavedata *testdata1, *testdata2; float array[8] = {0.1, 0.1, 0.2, 0.2, 0.3, 0.3, 0.4, 0.4}; testdata1 = pt_wavedata_new (array, 8, 1, 100); testdata2 = pt_wavedata_copy (testdata1); g_assert (testdata1 == testdata1); pt_wavedata_free (testdata1); pt_wavedata_free (testdata2); /* There are no tests, bogus input is possible */ testdata1 = pt_wavedata_new (array, 123, 25, 34); pt_wavedata_free (testdata1); } int main (int argc, char *argv[]) { g_test_init (&argc, &argv, NULL); g_test_add_func ("/wavedata/new", wavedata_new); return g_test_run (); } parlatype-1.6.2/libparlatype/tests/waveloader.c000066400000000000000000000040111353244124700216510ustar00rootroot00000000000000/* 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 static void waveloader_new (void) { /* test creation and property, everything else is tested indirectly via PtPlayer */ PtWaveloader *testloader; gchar *uri; testloader = pt_waveloader_new (NULL); g_assert (PT_IS_WAVELOADER (testloader)); g_object_get (testloader, "uri", &uri, NULL); g_assert_null (uri); g_object_unref (testloader); testloader = pt_waveloader_new ("file"); g_assert (PT_IS_WAVELOADER (testloader)); g_object_get (testloader, "uri", &uri, NULL); g_assert_cmpstr (uri, ==, "file"); g_free (uri); g_object_set (testloader, "uri", "some-other-file", NULL); g_object_get (testloader, "uri", &uri, NULL); g_assert_cmpstr (uri, ==, "some-other-file"); g_free (uri); /* Doesn't raise code coverage g_test_expect_message ("GLib-GObject", G_LOG_LEVEL_WARNING, "*has no property named*"); g_object_get (testloader, "not-a-property", &uri, NULL); g_test_assert_expected_messages (); g_test_expect_message ("GLib-GObject", G_LOG_LEVEL_WARNING, "*has no property named*"); g_object_set (testloader, "not-a-property", "fail", NULL); g_test_assert_expected_messages (); */ g_object_unref (testloader); } int main (int argc, char *argv[]) { g_test_init (&argc, &argv, NULL); g_test_add_func ("/waveloader/new", waveloader_new); return g_test_run (); } parlatype-1.6.2/libparlatype/tests/waveviewer.c000066400000000000000000000060361353244124700217150ustar00rootroot00000000000000/* 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 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 (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 gboolean stop_main (gpointer user_data) { gtk_main_quit (); return G_SOURCE_REMOVE; } static void waveviewer_loaded (void) { GError *error = NULL; PtPlayer *player; PtWavedata *data; GtkWidget *window; GtkWidget *viewer; gchar *testfile; gchar *testuri; gboolean success; player = pt_player_new (); pt_player_setup_player (player, &error); g_assert_no_error (error); testfile = g_test_build_filename (G_TEST_DIST, "data/test1.ogg", NULL); testuri = g_strdup_printf ("file://%s", testfile); success = pt_player_open_uri (player, testuri, &error); g_assert_no_error (error); g_assert_true (success); data = pt_player_get_data (player, 100); 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_set_wave (PT_WAVEVIEWER (viewer), data); pt_wavedata_free (data); g_timeout_add (200, stop_main, viewer); gtk_main (); g_free (testfile); g_free (testuri); 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-1.6.2/libreoffice/000077500000000000000000000000001353244124700157775ustar00rootroot00000000000000parlatype-1.6.2/libreoffice/Parlatype.py000066400000000000000000000106431353244124700203160ustar00rootroot00000000000000# -*- coding: utf-8 -*- ''' Parlatype.py is part of Parlatype. Version: 1.6.2 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 . ''' import dbus import msgbox def _showMessage(message): myBox = msgbox.MsgBox(XSCRIPTCONTEXT.getComponentContext()) myBox.addButton("OK") myBox.renderFromButtonSize() myBox.numberOflines = 2 myBox.show(message, 0, "Parlatype for LibreOffice") def _getDBUSService(): try: obj = dbus.SessionBus().get_object( "com.github.gkarsay.parlatype", "/com/github/gkarsay/parlatype") except Exception: # this seems to succeed always, exception never triggered return None return dbus.Interface(obj, "com.github.gkarsay.parlatype") def _getTextRange(): doc = XSCRIPTCONTEXT.getDocument() # the writer controller impl supports # the css.view.XSelectionSupplier interface xSelectionSupplier = doc.getCurrentController() xIndexAccess = xSelectionSupplier.getSelection() count = xIndexAccess.getCount() # don't mess around with multiple selections if (count != 1): return None textrange = xIndexAccess.getByIndex(0) # don't mess around with selections, just plain cursor if (len(textrange.getString()) == 0): return textrange else: return None def InsertTimestamp(*args): textrange = _getTextRange() if (textrange is None): return service = _getDBUSService() try: textrange.setString(service.GetTimestamp()) except Exception: pass def InsertTimestampOnNewLine(*args): textrange = _getTextRange() if (textrange is None): return service = _getDBUSService() try: textrange.setString("\n" + service.GetTimestamp() + " ") except Exception: pass def _isValidCharacter(char): if (char.isdigit() or char == ":" or char == "." or char == "-"): return True return False def _extractTimestamp(): textrange = _getTextRange() if (textrange is None): return None xText = textrange.getText() cursor = xText.createTextCursorByRange(textrange) # select first char on the left, no success if at start of document success = cursor.goLeft(1, True) if (success): i = 0 while (_isValidCharacter(cursor.getString()[0]) and i < 15): success = cursor.goLeft(1, True) i += 1 if (success): cursor.goRight(1, True) cursor.collapseToStart() cursor.goRight(2, True) i = 0 while (_isValidCharacter(cursor.getString()[-1:]) and i < 15): success = cursor.goRight(1, True) i += 1 if (success): cursor.goLeft(1, True) return cursor.getString() def GotoTimestamp(*args): timestamp = _extractTimestamp() if (timestamp is None): return service = _getDBUSService() try: service.GotoTimestamp(timestamp) except Exception: pass def PlayPause(*args): service = _getDBUSService() try: service.PlayPause() except Exception: pass def JumpBack(*args): service = _getDBUSService() try: service.JumpBack() except Exception: pass def JumpForward(*args): service = _getDBUSService() try: service.JumpForward() except Exception: pass def IncreaseSpeed(*args): service = _getDBUSService() try: service.IncreaseSpeed() except Exception: pass def DecreaseSpeed(*args): service = _getDBUSService() try: service.DecreaseSpeed() except Exception: pass # Lists the scripts, that shall be visible inside LibreOffice. g_exportedScripts = \ InsertTimestamp,\ InsertTimestampOnNewLine,\ GotoTimestamp,\ PlayPause,\ JumpBack,\ JumpForward,\ IncreaseSpeed,\ DecreaseSpeed, parlatype-1.6.2/libreoffice/com.github.gkarsay.parlatype.libreoffice_helpers.metainfo.xml.in000066400000000000000000000013141353244124700324170ustar00rootroot00000000000000 com.github.gkarsay.parlatype.libreoffice_helpers com.github.gkarsay.parlatype.libreoffice-helpers com.github.gkarsay.parlatype.desktop libreoffice-writer.desktop LibreOffice/Parlatype Helpers