diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..6811228 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,15 @@ +# Feel free to add/edit your name below. +# The names in this file will be shown in the about dialog. +# Format: name +# is optional. +Connor Duncan +Gaurav Narula +Harenome Ranaivoarivony Razanajato +Michael Heyns +Mingye Wang (Arthur2e5) +Patrick Griffis +Sun +gipawu +gnome-mpv +tista500 +xuzhen diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..a737dcf --- /dev/null +++ b/COPYING @@ -0,0 +1,675 @@ + + 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 +. diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..fd7abf3 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,50 @@ +AUTOMAKE_OPTIONS = foreign + +SUBDIRS = src data docs po + +EXTRA_DIST = README.md AUTHORS meson.build docs/meson.build test/meson.build test/test-option-parser.c meson-post-install.py po/meson.build + +UPDATE_DESKTOP = update-desktop-database -q || : +UPDATE_ICON = gtk-update-icon-cache -q $(datadir)/icons/hicolor/ || : + +# Ensure that the dist tarball does not contain own/group from build system +TAR_OPTIONS = --owner=0 --group=0 +export TAR_OPTIONS + +# Extract version numbers in appdata XML and the main meson build file +APPDATA_VERSION = $(shell xmllint $(top_srcdir)/data/io.github.celluloid_player.Celluloid.appdata.xml.in \ + --xpath /component/releases/release/@version | \ + sed 's/version="\([^s]\+\)"/\1/g;s/ /\n/g' | \ + sort -rn | \ + head -1) +MESON_VERSION = $(shell $(AWK) -F "'" \ + '/\yversion:/{print $$2}' \ + $(top_srcdir)/meson.build) + +# Abort if the version numbers are not the same +dist-hook: + if [ "$(APPDATA_VERSION)" != "$(VERSION)" -o \ + "$(MESON_VERSION)" != "$(VERSION)" ]; \ + then \ + echo "Version numbers in appdata XML, meson.build, and" \ + "configure.ac do not match" 1>&2; \ + exit 1; \ + fi + +# Test building with Meson +distcheck-hook: + mkdir $(PACKAGE)-$(VERSION)/_build/meson \ + $(PACKAGE)-$(VERSION)/_inst/meson && \ + cd $(PACKAGE)-$(VERSION) && \ + meson _build/meson \ + --prefix $(abs_top_srcdir)/$(PACKAGE)-$(VERSION)/_inst/meson && \ + ninja -C _build/meson install && \ + rm -rf _build/meson _inst/meson + +install-data-hook: + $(UPDATE_DESKTOP) + $(UPDATE_ICON) + +uninstall-hook: + $(UPDATE_DESKTOP) + $(UPDATE_ICON) diff --git a/README b/README new file mode 100644 index 0000000..204fe65 --- /dev/null +++ b/README @@ -0,0 +1,169 @@ +# Celluloid + +Celluloid (formerly GNOME MPV) is a simple GTK+ frontend for mpv. Celluloid +interacts with mpv via the client API exported by libmpv, allowing access to +mpv's powerful playback capabilities. + +![Screenshot](https://celluloid-player.github.io/images/screenshot-0.png) + +## Dependencies + +- appstream-glib[[1]](#note1) (build) +- autoconf >= 2.69[[1]](#note1) (build) +- autoconf-archive[[1]](#note1) (build) +- automake >= 1.12[[1]](#note1) (build) +- pkg-config (build) +- gcc (build) +- glib >= 2.44 +- gtk >= 3.22 +- mpv >= 0.32 +- epoxy +- lua (optional) +- youtube-dl (optional) + +[1]: Not required when building from release tarballs + +## Installation + +### GNU/Linux packages +- Arch Linux: https://www.archlinux.org/packages/celluloid +- Arch Linux (Git): https://aur.archlinux.org/packages/celluloid-git +- Debian: https://tracker.debian.org/pkg/celluloid +- Fedora (rpmfusion): https://admin.rpmfusion.org/pkgdb/package/free/celluloid/ +- OpenSUSE: https://software.opensuse.org/package/celluloid +- Gentoo: https://packages.gentoo.org/packages/media-video/celluloid +- Guix: https://guix.gnu.org/en/packages/celluloid-0.20 +- Solus: https://packages.getsol.us/shannon/g/gnome-mpv/ +- Ubuntu: https://launchpad.net/~xuzhen666/+archive/ubuntu/gnome-mpv + +### Flatpak + +[Flatpak](https://flatpak.org) packages support multiple distributions and are sandboxed. +Flatpak 0.9.5+ is recommended for best integration. + +Stable releases are hosted on [Flathub](https://flathub.org): + +```sh +flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo +flatpak install flathub io.github.celluloid_player.Celluloid +``` + +Development versions are also packaged: + +```sh +flatpak install https://dl.tingping.se/flatpak/gnome-mpv.flatpakref +``` + + +### Source code +Run the following command in the source code directory to build and install: + +```sh +meson build && cd build && ninja && sudo ninja install +``` + +Alternatively, you can use Autotools: + +```sh +./autogen.sh && make && sudo make install +``` + +When building from release tarballs, replace `./autogen.sh` with `./configure`: + +```sh +./configure && make && sudo make install +``` + +## Usage + +### Opening files + +There are 4 ways to open files in Celluloid. + +1. Passing files and/or URIs as command line arguments. +2. Using the file chooser dialog box, accessible via the "Open" menu item. +3. Typing URI into the "Open Location" dialog box, accessible via the + menu item with the same name. +4. Dragging and dropping files or URIs onto Celluloid. + +### Manipulating playlist + +The playlist is hidden by default. To show the playlist, click the "Playlist" +menu item or press F9. Files can be added by dragging and dropping files or URIs +onto the playlist. Dropping files or URIs onto the video area will replace the +content of the playlist. Playlist files or online playlists (eg. YouTube's +playlist) will be automatically expanded into individual items when loaded. + +Items in the playlist can be reordered via drag-and-drop. To remove items from +the playlist, select the item by clicking on it then press the delete button on +your keyboard. + +### Configuration + +Celluloid can be configured using the preferences dialog accessible via the +"Preferences" menu item. Additional configuration options can be set from an +external file using the same syntax as mpv's `mpv.conf`. +See [mpv's manual](https://mpv.io/manual/stable/) for the full list of options. +The file must be specified and enabled in the preferences dialog under the "MPV +Configuration" section. + +It is also possible to set mpv options by putting the options — as you +would pass to mpv on the command line — in `Extra MPV Options` text box in +the preferences dialog. You can also pass options directly on the command line +by adding `mpv-` prefix to the option name. For example, using the option +`--mpv-vf=flip` when launching Celluloid is equivalent to using `--vf=flip` in +mpv. + +### User Scripts + +Celluloid can use most mpv user scripts as-is. Some user scripts may define +keybindings that conflict with Celluloid, in which case you'll need to resolve +the conflict by explicitly defining new keybindings using `input.conf`. See +[mpv's manual](https://mpv.io/manual/stable/#lua-scripting-[,flags]]%29) for +more details. + +User scripts can be installed by switching to the "Plugins" tab in the +preferences dialog and dropping the files there. A list of mpv user scripts can +be found [here](https://github.com/mpv-player/mpv/wiki/User-Scripts). + +### Keybindings + +Celluloid defines a set of keybindings in the macro `DEFAULT_KEYBINDS`, which +can be found in +[src/celluloid-def.h](https://github.com/celluloid-player/celluloid/blob/master/src/celluloid-def.h). +The syntax used is exactly the same as mpv's `input.conf`. These keybindings are +applied on top of default keybindings provided by mpv. + +Additional keybindings can be defined in an external file using mpv's +`input.conf` syntax. The file can be set in the preferences dialog under the +"Keybindings" section. + +## Contributing Translations + +Celluloid uses [Zanata](https://zanata.org) to coordinate +translations. You can find Celluloid's page +[here](https://translate.zanata.org/iteration/view/celluloid/master). To +start translating, follow the instructions +[here](http://docs.zanata.org/en/release/user-guide/translator-guide/). If you'd +like to add a new language, open an issue on GitHub. + +While translating, you will find the string `translator-credits`. You should not +translate this string. Instead, you should put your name, and optionally your +email address, in the following format: `FirstName LastName `. +Your name will then appear in the About dialog when your translation is active. + +## License + +Celluloid 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. + +Celluloid 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 Celluloid. If not, see . + diff --git a/README.md b/README.md new file mode 100644 index 0000000..8e73e33 --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +# Celluloid 0.21.1 + +- Upstream : https://github.com/celluloid-player/celluloid + +# Issue +- Celluloid 0.22 부터는 GTK4를 사용하기 때문에 Ubuntu 20.04 또는 Linuxmint 20.3 이후 버전에서는 Upstream에서 다시 빌드를 진행해야함 +- 현재 번역 파일 hamonikr-system에서 관리중 + +# Fix bug +### 2022-10-19 +- 새 창을 여러개 열고 닫을 때 모두 꺼지는 문제 해결 diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 0000000..d4ab98a --- /dev/null +++ b/autogen.sh @@ -0,0 +1,25 @@ +#!/bin/sh +# Run this to generate all the initial makefiles, etc. + +srcdir=`dirname $0` +test -z "$srcdir" && srcdir=. + +(test -f $srcdir/configure.ac) || { + echo -n "**Error**: Directory "\`$srcdir\'" does not look like the top-level directory" + exit 1 +} + +aclocal --install -I m4 || exit 1 +autoreconf --force --install -Wno-portability || exit 1 + +if [ "$NOCONFIGURE" = "" ]; then + $srcdir/configure "$@" || exit 1 + + if [ "$1" = "--help" ]; then exit 0 else + echo "Now type \`make\' to compile" || exit 1 + fi +else + echo "Skipping configure process." +fi + +set +x diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..96a223c --- /dev/null +++ b/configure.ac @@ -0,0 +1,121 @@ +AC_PREREQ([2.69]) + +AC_INIT( [celluloid], + [0.21], + [http://github.com/celluloid-player/celluloid/issues], + [celluloid], + [http://github.com/celluloid/celluloid] ) + +AC_CONFIG_SRCDIR([src/celluloid-main.c]) +AC_CONFIG_MACRO_DIR([m4]) +AC_USE_SYSTEM_EXTENSIONS +AM_INIT_AUTOMAKE([1.12 tar-pax dist-xz no-dist-gzip subdir-objects foreign -Wall -Wno-portability]) +AM_SILENT_RULES([yes]) +AM_MAINTAINER_MODE([enable]) + +# i18n +GETTEXT_PACKAGE=celluloid +AC_SUBST(GETTEXT_PACKAGE) +AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [GETTEXT package name]) + +# TODO: Remove AM_GNU_GETTEXT_VERSION once autoreconf supports +# AM_GNU_GETTEXT_REQUIRE_VERSION +AM_GNU_GETTEXT_VERSION([0.19]) +AM_GNU_GETTEXT_REQUIRE_VERSION([0.19]) + +AM_GNU_GETTEXT([external]) + +GLIB_GSETTINGS + +AC_ARG_ENABLE([debug], AS_HELP_STRING([--enable-debug], [turn on debugging]), [enable_debug=$enableval], [enable_debug=no]) + +AC_DEFUN([GM_CHECK_MACRO], + [m4_ifndef([$1], [m4_fatal($1[ is not defined. Is ]$2[ installed?])])]) + +GM_CHECK_MACRO([AX_APPEND_COMPILE_FLAGS], [autoconf-archive]) +GM_CHECK_MACRO([AX_APPEND_LINK_FLAGS], [autoconf-archive]) +GM_CHECK_MACRO([AX_REQUIRE_DEFINED], [autoconf-archive]) + +GM_CHECK_MACRO([APPSTREAM_XML], [appstream-glib]) +APPSTREAM_XML + +AS_IF([test "x$enable_debug" = "xyes"], [ + AX_APPEND_COMPILE_FLAGS([-O0 -g]) +], [ + AX_APPEND_COMPILE_FLAGS([-O2]) +]) + +AX_APPEND_COMPILE_FLAGS([ \ + -std=gnu99 \ + -funsigned-char \ + -fstack-protector-strong \ + -fPIE \ + -fPIC \ + -Wall \ + -Wextra \ + -Wconversion \ + -Winline \ + -Wno-padded \ + -Wno-unused-parameter \ + -Wstrict-prototypes \ + -Wmissing-prototypes \ + -Werror=implicit-function-declaration \ + -Werror=pointer-arith \ + -Werror=init-self \ + -Werror=format-security \ + -Werror=format=2 \ + -Werror=missing-include-dirs \ + -Werror=date-time \ +]) + +AX_APPEND_LINK_FLAGS([ \ + -pie \ + -Wl,-z,relro \ + -Wl,-z,now \ +]) + +# Checks for programs. +AC_PROG_CC +AC_PROG_CC_STDC +AC_PROG_AWK +AC_PROG_SED +AC_PATH_PROG(GDBUS_CODEGEN, [gdbus-codegen], []) +AC_PATH_PROG(GLIB_GENMARSHAL, [glib-genmarshal], []) + +AS_IF([test "x$GDBUS_CODEGEN" = "x"], [ + AC_MSG_ERROR([Could not find gdbus-codegen]) +]) + +AS_IF([test "x$GLIB_GENMARSHAL" = "x"], [ + AC_MSG_ERROR([Could not find glib-genmarshal]) +]) + +PKG_CHECK_MODULES(DEPS, [gtk+-3.0 >= 3.22.23 glib-2.0 >= 2.44 mpv >= 1.107 epoxy]) +AC_SEARCH_LIBS([sqrt], [m]) + +AC_DEFINE([GLIB_VERSION_MIN_REQUIRED], [GLIB_VERSION_2_44], [Dont warn using older APIs]) +AC_DEFINE([GLIB_VERSION_MAX_ALLOWED], [GLIB_VERSION_2_44], [Prevents using newer APIs]) + +AC_DEFINE([GDK_VERSION_MIN_REQUIRED], [GDK_VERSION_3_22], [Dont warn using older APIs]) +AC_DEFINE([GDK_VERSION_MAX_ALLOWED], [GDK_VERSION_3_22], [Prevents using newer APIs]) + +AC_DEFINE_UNQUOTED([G_LOG_DOMAIN], "$PACKAGE_NAME", [Default logging facility]) + +# Checks for header files. +AC_CHECK_HEADERS([string.h stdio.h stdlib.h locale.h],[],[ + AC_MSG_ERROR([Could not find required headers]) +]) + +AC_CHECK_FUNCS([setlocale],[],[ + AC_MSG_ERROR([Could not find required functions]) +]) + +AC_CONFIG_FILES([Makefile src/Makefile data/Makefile docs/Makefile po/Makefile.in]) +AC_OUTPUT + +echo " + $PACKAGE $VERSION + + prefix ........: $prefix + debug .........: $enable_debug +" diff --git a/data/Makefile.am b/data/Makefile.am new file mode 100644 index 0000000..5321ed3 --- /dev/null +++ b/data/Makefile.am @@ -0,0 +1,44 @@ +gsettings_SCHEMAS = io.github.celluloid_player.Celluloid.gschema.xml io.github.GnomeMpv.gschema.xml + +@GSETTINGS_RULES@ + +appstream_in_files = io.github.celluloid_player.Celluloid.appdata.xml.in +appstream_XML = $(appstream_in_files:.xml.in=.xml) + +%.appdata.xml: %.appdata.xml.in + $(AM_V_GEN)$(MSGFMT) --xml --template $< -d $(top_srcdir)/po -o $@ + +@APPSTREAM_XML_RULES@ + +dbusservicedir = $(datadir)/dbus-1/services +dbusservice_in_files = io.github.celluloid_player.Celluloid.service.in +dbusservice_DATA = $(dbusservice_in_files:.service.in=.service) + +%.service: %.service.in Makefile + $(AM_V_GEN) sed -e "s|\@bindir\@|$(bindir)|" $< > $@ + +desktopdir = $(datadir)/applications +desktop_in_files = io.github.celluloid_player.Celluloid.desktop.in +desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) + +%.desktop: %.desktop.in + $(AM_V_GEN)$(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@ + +icondir = $(datadir)/icons/hicolor/scalable/apps +icon_DATA = io.github.celluloid_player.Celluloid.svg + +symicondir = $(datadir)/icons/hicolor/symbolic/apps +symicon_DATA = io.github.celluloid_player.Celluloid-symbolic.svg + +EXTRA_DIST = $(appstream_in_files) \ + $(desktop_in_files) \ + $(dbusservice_in_files) \ + io.github.celluloid_player.Celluloid.svg \ + io.github.celluloid_player.Celluloid-symbolic.svg \ + io.github.GnomeMpv.gschema.xml \ + io.github.celluloid_player.Celluloid.gschema.xml \ + celluloid-mpris-gdbus.xml \ + celluloid-marshal.lst \ + meson.build + +DISTCLEANFILES = $(appstream_XML) $(desktop_DATA) $(dbusservice_DATA) diff --git a/data/celluloid-marshal.lst b/data/celluloid-marshal.lst new file mode 100644 index 0000000..08ee3fa --- /dev/null +++ b/data/celluloid-marshal.lst @@ -0,0 +1,8 @@ +VOID:POINTER,BOOLEAN +VOID:STRING,POINTER +VOID:INT,INT +VOID:INT64,INT64 +VOID:INT,STRING,STRING +VOID:INT,POINTER +VOID:BOOLEAN,BOOLEAN,POINTER,POINTER +VOID:INT64 diff --git a/data/celluloid-mpris-gdbus.xml b/data/celluloid-mpris-gdbus.xml new file mode 100644 index 0000000..df16fda --- /dev/null +++ b/data/celluloid-mpris-gdbus.xml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/io.github.GnomeMpv.gschema.xml b/data/io.github.GnomeMpv.gschema.xml new file mode 100644 index 0000000..c7e61c1 --- /dev/null +++ b/data/io.github.GnomeMpv.gschema.xml @@ -0,0 +1,152 @@ + + + + + + + + false + Whether the settings has already been migrated from the previous version + + + + + true + Enable or disable dark theme + + + + + true + Enable or disable client-side decorations + + + + + false + Whether or not to use floating controls in windowed mode + + + + + false + Whether or not to autohide mouse cursor in windowed mode + + + + + false + Whether or not to use skip buttons for controlling playlist + + + + + false + Whether or not to make file chooser dialog remember last folder accessed + + + + + false + Whether or not to create new windows when there is already an instance + + + + + '' + Options to pass to mpv + + + + + '' + Path to mpv configuration file + + + + + false + Load or don't load mpv configuration file + + + + + '' + Path to mpv input configuration file + + + + + false + Load or don't load mpv input configuration file + + + + + true + Whether or not to enable MPRIS support + + + + + true + Whether or not to enable GNOME-Settings-Daemon-based media keys support + + + + + true + Whether or not to prefetch metadata for non-current playlist entries + + + + + + + + 640 + Width of the window + + + + + 480 + Height of the window + + + + + + 1.0 + Volume of player + + + + + 250 + Width of the playlist + + + + + true + Show or not show the controls + + + + + false + Show or not show the playlist + + + + + '' + URI of the last folder accessed + + + + + diff --git a/data/io.github.celluloid_player.Celluloid-symbolic.svg b/data/io.github.celluloid_player.Celluloid-symbolic.svg new file mode 100644 index 0000000..4be550e --- /dev/null +++ b/data/io.github.celluloid_player.Celluloid-symbolic.svg @@ -0,0 +1,92 @@ + + + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + Gnome Symbolic Icon Theme + + + + + diff --git a/data/io.github.celluloid_player.Celluloid.appdata.xml.in b/data/io.github.celluloid_player.Celluloid.appdata.xml.in new file mode 100644 index 0000000..1e6263d --- /dev/null +++ b/data/io.github.celluloid_player.Celluloid.appdata.xml.in @@ -0,0 +1,335 @@ + + + + io.github.celluloid_player.Celluloid + CC-BY-SA-4.0 + GPL-3.0+ + Celluloid + GTK+ frontend for mpv + io.github.celluloid_player.Celluloid.desktop + celluloid + + + io.github.GnomeMpv.desktop + + +

+ Celluloid is a simple media player that can play virtually all video and + audio formats. It supports playlists and MPRIS2 media player controls. The + design of Celluloid follows the GNOME Human Interface Guidelines, but can + also be adapted for other systems that don't use client-side decorations + (CSD). It is based on the mpv library and GTK. +

+

Features:

+
    +
  • Drag and drop playlist
  • +
  • Loading external mpv configuration files
  • +
  • MPRIS2 D-Bus interface
  • +
+
+ The Celluloid Developers + + + +

+ This release contains the following changes: +

+
    +
  • + Add Basque translation by @aldatsa. +
  • +
  • + Make the shuffle and loop command line options work properly. +
  • +
  • + Make the main menu button toggleable by pressing F10. +
  • +
  • + Add a setting for always appending opened files to the playlist. +
  • +
  • + Allow appending files to playlist by holding shift while dropping files + onto the video area. +
  • +
  • + Make CSD header bar toggleable via the mpv property "border". +
  • +
  • + Include Flatpak manifest in the repo. This allows Celluloid to be built in + one click in apps like GNOME Builder. +
  • +
+

+ This listing is incomplete. See git log for complete changelog. +

+
+
+ + +

+ This release contains the following changes: +

+
    +
  • + Make it possible to activate context menu when the playlist is empty. +
  • +
  • + Prevent constant resizing of the seek bar due to timestamp label resizing + as its value changes. +
  • +
  • + Only show a single error dialog when a large number of errors occurs in + rapid succession. +
  • +
  • + Add menu item for opening folders. +
  • +
  • + Adjust position of UI elements of modal dialogs in non-CSD mode to be more + consistent with CSD mode. +
  • +
  • + Add support for loading external video tracks. +
  • +
  • + Make playlist shuffle toggleable. +
  • +
  • + Make arrow key bindings work with arrow keys on numpad. +
  • +
+

+ This listing is incomplete. See git log for complete changelog. +

+
+
+ + +

+ This release contains the following changes: +

+
    +
  • + Adjust the range of volume button based on the value of the volume-max + property. +
  • +
  • + Retain window maximization state across sessions. +
  • +
  • + Retain loop state across sessions. +
  • +
  • + Implement playlist search. +
  • +
  • + Update the list of shortcuts in Keyboard Shortcuts dialog. +
  • +
  • + Correctly handle quotes and escape sequences in extra mpv options. +
  • +
  • + Display time at cursor position when hovering the seek bar. +
  • +
  • + Deprecate '--mpv-options'. Options starting with '--mpv-' can be + used to set mpv options instead. For example, passing + '--mpv-vf=vflip' to Celluloid is equivalent to passing + '--vf=vflip' to mpv. +
  • +
  • + Add support for configuring dead zone, an area in which mouse movement + will not cause controls to be shown. +
  • +
  • + Make window sizing work correctly with HiDPI displays. +
  • +
  • + Add Finnish translation by Kimmo Kujansuu. +
  • +
  • + Add Slovenian translation by @bertronika. +
  • +
+

+ This listing is incomplete. See git log for complete changelog. +

+
+
+ + +

+ This release contains the following changes: +

+
    +
  • + Add Persian translation by @danialbehzadi +
  • +
  • + Add Ukranian translation by @vl-nix +
  • +
  • + Add support for showing/hiding window decorations using the mpv option --border +
  • +
  • + Add menu item for opening discs +
  • +
  • + Block cursor autohide when volume popup is open in windowed mode +
  • +
  • + Fix crash with mpv 0.30 +
  • +
+

+ This listing is incomplete. See git log for complete changelog. +

+
+
+ + +

+ This release contains the following changes: +

+
    +
  • + Rename project to Celluloid +
  • +
  • + Add Turkish translation by @TeknoMobil +
  • +
  • + Add Esperanto translation by @F3nd0 +
  • +
  • + Migrate from opengl-cb to the new render API +
  • +
  • + Handle numpad keybindings +
  • +
  • + Handle unicode keybindings +
  • +
  • + Forward media key events to mpv +
  • +
  • + Add dconf key for controlling cursor speed at which controls are unhidden +
  • +
  • + Add option for suppressing playback errors +
  • +
+

+ This listing is incomplete. See git log for complete changelog. +

+
+
+ + +

+ This release contains the following changes: +

+
    +
  • + Split up the General tab in the preferences dialog +
  • +
  • + Improve behavior when toggling playlist under tiling window managers +
  • +
  • + Move app menu items to primary menu +
  • +
  • + Use separate MPRIS DBus connection for each window +
  • +
  • + Add support for MPRIS property LoopStatus +
  • +
  • + Add option --mpv-options for setting arbitrary mpv options from the + command-line +
  • +
+

+ This listing is incomplete. See git log for complete changelog. +

+
+
+ + +

+ This release contains the following changes: +

+
    +
  • + Set default screenshot directory to XDG_PICTURES_DIR +
  • +
  • + Improve handling of --window-scale, --autofit, + --autofit-larger, and --autofit-smaller +
  • +
  • + Add command line option for setting WM_ROLE +
  • +
  • + Add context menu item for removing playlist items +
  • +
  • + Add context menu item for copying location of playlist items +
  • +
+

+ This listing is incomplete. See git log for complete changelog. +

+
+
+ + +

+ This release contains the following changes: +

+
    +
  • + Add option to make skip buttons change playlist entries rather than + chapters +
  • +
  • + Make the file chooser accept non-local locations +
  • +
  • + Add right-click menu entry for looping a single file +
  • +
  • + Handle property change events for fullscreen and window-scale +
  • +
  • + Add option to autohide mouse cursor in windowed mode +
  • +
+

+ This listing is incomplete. See git log for complete changelog. +

+
+
+ +
+ + + http://celluloid-player.github.io/images/screenshot-0.png + The main window showing the application in action + + + http://celluloid-player.github.io/images/screenshot-1.png + The main window with CSD disabled + + + http://celluloid-player.github.io/images/screenshot-2.png + The main window with playlist open + + + http://celluloid-player.github.io + http://github.com/celluloid-player/celluloid/issues + http://translate.zanata.org/project/view/celluloid + gnome-mpv_at_teknik.io +
diff --git a/data/io.github.celluloid_player.Celluloid.desktop.in b/data/io.github.celluloid_player.Celluloid.desktop.in new file mode 100644 index 0000000..bb88123 --- /dev/null +++ b/data/io.github.celluloid_player.Celluloid.desktop.in @@ -0,0 +1,27 @@ +[Desktop Entry] +Version=1.0 +Name=Celluloid +GenericName=Multimedia Player +Comment=Play movies and videos +Exec=celluloid %U +# Translators: This is an icon name, don't translate! +Icon=io.github.celluloid_player.Celluloid +Terminal=false +Type=Application +StartupNotify=true +StartupWMClass=io.github.celluloid_player.Celluloid +DBusActivatable=true +Categories=GTK;GNOME;AudioVideo;Player;Video;TV; +# Translators: Search terms to find this application. Don't translate the semicolons! The list MUST also end with a semicolon! +Keywords=Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv; +MimeType=application/mpeg4-iod;application/mpeg4-muxcodetable;application/mxf;application/ogg;application/ram;application/sdp;application/streamingmedia;application/vnd.apple.mpegurl;application/vnd.ms-asf;application/vnd.rn-realmedia;application/vnd.rn-realmedia-vbr;application/x-extension-m4a;application/x-extension-mp4;application/x-flac;application/x-flash-video;application/x-matroska;application/x-ogg;application/x-streamingmedia;audio/3gpp;audio/3gpp2;audio/aac;audio/ac3;audio/amr;audio/amr-wb;audio/basic;audio/dv;audio/eac3;audio/flac;audio/m4a;audio/midi;audio/mp1;audio/mp2;audio/mp3;audio/mp4;audio/mpeg;audio/mpegurl;audio/mpg;audio/ogg;audio/opus;audio/scpls;audio/vnd.dolby.heaac.1;audio/vnd.dolby.heaac.2;audio/vnd.dolby.mlp;audio/vnd.dts;audio/vnd.dts.hd;audio/vnd.rn-realaudio;audio/wav;audio/webm;audio/x-aac;audio/x-aiff;audio/x-ape;audio/x-flac;audio/x-gsm;audio/x-it;audio/x-m4a;audio/x-matroska;audio/x-mod;audio/x-mp1;audio/x-mp2;audio/x-mp3;audio/x-mpeg;audio/x-mpegurl;audio/x-mpg;audio/x-ms-asf;audio/x-ms-wma;audio/x-musepack;audio/x-pn-aiff;audio/x-pn-au;audio/x-pn-realaudio;audio/x-pn-wav;audio/x-real-audio;audio/x-realaudio;audio/x-s3m;audio/x-scpls;audio/x-shorten;audio/x-speex;audio/x-tta;audio/x-vorbis;audio/x-vorbis+ogg;audio/x-wav;audio/x-wavpack;audio/x-xm;video/3gp;video/3gpp;video/3gpp2;video/divx;video/dv;video/fli;video/flv;video/mp2t;video/mp4;video/mp4v-es;video/mpeg;video/mpeg-system;video/msvideo;video/ogg;video/quicktime;video/vnd.mpegurl;video/vnd.rn-realvideo;video/webm;video/x-avi;video/x-flc;video/x-fli;video/x-flv;video/x-m4v;video/x-matroska;video/x-mpeg;video/x-mpeg-system;video/x-mpeg2;video/x-ms-asf;video/x-ms-wm;video/x-ms-wmv;video/x-ms-wmx;video/x-msvideo;video/x-nsv;video/x-ogm+ogg;video/x-theora;video/x-theora+ogg;x-content/audio-cdda;x-content/audio-player;x-content/video-dvd;x-scheme-handler/mms;x-scheme-handler/mmsh;x-scheme-handler/rtmp;x-scheme-handler/rtp;x-scheme-handler/rtsp; +X-KDE-Protocols=ftp,http,https,mms,rtmp,rtsp,sftp,smb +Actions=new-window;enqueue; + +[Desktop Action new-window] +Name=New Window +Exec=celluloid --new-window + +[Desktop Action enqueue] +Name=Add to Playlist +Exec=celluloid --enqueue %U diff --git a/data/io.github.celluloid_player.Celluloid.gschema.xml b/data/io.github.celluloid_player.Celluloid.gschema.xml new file mode 100644 index 0000000..8f5e9ab --- /dev/null +++ b/data/io.github.celluloid_player.Celluloid.gschema.xml @@ -0,0 +1,202 @@ + + + + + + + + false + Whether the settings has already been migrated from the previous version + + + + + true + Automatically resize window to fit video + + + + + true + Enable dark theme + + + + + true + Enable client-side decorations + + + + + false + Use floating controls in windowed mode + + + + + false + Automatically hide mouse cursor in windowed mode + + + + + 0 + The minimum cursor speed at which floating controls will be unhidden. + + + + + + 0 + Size of the dead zone in which cursor movement will not cause the controls to be shown. + + + + + false + Use skip buttons for controlling playlist + + + + + false + Make file chooser remember last file's location + + + + + false + Always open new window + + + + + false + Always append opened files to playlist + + + + + "" + Options to pass to mpv + + + + + "" + Path to mpv configuration file + + + + + false + Load mpv configuration file + + + + + "" + Path to mpv input configuration file + + + + + false + Load mpv input configuration file + + + + + true + Enable MPRIS support + + + + + true + Enable media keys support + + + + + true + Prefetch metadata + + + + + false + Ignore playback errors + + + + + true + Inhibit session idling + + + + + + + + 640 + Width of the window + + + + + 480 + Height of the window + + + + + false + Whether or not the window is maximized + + + + + + 1.0 + Volume of player + + + + + false + Whether or not to loop when the end of playlist is reached + + + + + 250 + Width of the playlist + + + + + true + Show or not show the controls + + + + + false + Show or not show the playlist + + + + + "" + URI of the last folder accessed + + + + + diff --git a/data/io.github.celluloid_player.Celluloid.service.in b/data/io.github.celluloid_player.Celluloid.service.in new file mode 100644 index 0000000..0567d65 --- /dev/null +++ b/data/io.github.celluloid_player.Celluloid.service.in @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=io.github.celluloid_player.Celluloid +Exec=@bindir@/celluloid --gapplication-service diff --git a/data/io.github.celluloid_player.Celluloid.svg b/data/io.github.celluloid_player.Celluloid.svg new file mode 100644 index 0000000..aae1095 --- /dev/null +++ b/data/io.github.celluloid_player.Celluloid.svg @@ -0,0 +1,201 @@ + + + Adwaita Icon Template + + + + + + + + + + + + + + + + image/svg+xml + + + + GNOME Design Team + + + + + Adwaita Icon Template + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/meson.build b/data/meson.build new file mode 100644 index 0000000..3d5767e --- /dev/null +++ b/data/meson.build @@ -0,0 +1,59 @@ + +schemadir = join_paths(get_option('datadir'), 'glib-2.0/schemas') +install_data([ + 'io.github.GnomeMpv.gschema.xml', + 'io.github.celluloid_player.Celluloid.gschema.xml', +], install_dir: schemadir) + +appdata = i18n.merge_file( + input: 'io.github.celluloid_player.Celluloid.appdata.xml.in', + output: 'io.github.celluloid_player.Celluloid.appdata.xml', + po_dir: '../po', + install: true, + install_dir: join_paths(get_option('datadir'), 'metainfo') +) + +desktop = i18n.merge_file( + input: 'io.github.celluloid_player.Celluloid.desktop.in', + output: 'io.github.celluloid_player.Celluloid.desktop', + type: 'desktop', + po_dir: '../po', + install: true, + install_dir: join_paths(get_option('datadir'), 'applications') +) + +icondir = join_paths(get_option('datadir'), 'icons/hicolor') +install_data('io.github.celluloid_player.Celluloid.svg', + install_dir: join_paths(icondir, 'scalable/apps') +) + +install_data('io.github.celluloid_player.Celluloid-symbolic.svg', + install_dir: join_paths(icondir, 'symbolic/apps') +) + +service_conf = configuration_data() +service_conf.set('bindir', join_paths(get_option('prefix'), get_option('bindir'))) + +configure_file( + input: 'io.github.celluloid_player.Celluloid.service.in', + output: 'io.github.celluloid_player.Celluloid.service', + configuration: service_conf, + install_dir: join_paths(get_option('datadir'), 'dbus-1', 'services') +) + +appstream_util = find_program('appstream-util', required: false) +if appstream_util.found() + test('Validate appstream file', appstream_util, args: ['validate', '--nonet', appdata]) +endif + +desktop_file_validate = find_program('desktop-file-validate', required: false) +if desktop_file_validate.found() + test('Validate desktop file', desktop_file_validate, args: [desktop]) +endif + +glib_compile_schemas = find_program('glib-compile-schemas', required: false) +if glib_compile_schemas.found() + test('Validate schema file', glib_compile_schemas, + args: ['--strict', '--dry-run', meson.current_source_dir()] + ) +endif diff --git a/debian/celluloid.install b/debian/celluloid.install new file mode 100644 index 0000000..5a9c8f6 --- /dev/null +++ b/debian/celluloid.install @@ -0,0 +1,2 @@ +usr/ +debian/io.github.celluloid_player.Celluloid.desktop usr/share/applications/ diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..f92a113 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,124 @@ +celluloid (0.21.1-hamonikr1) uma; urgency=medium + + * Fix celluloid-video-area.c + - Fix bug : create many new windows > close one or two winodws > all windows close + - Delete line 143 : GTK_WIDGET_CLASS(celluloid_video_area_parent_class)->destroy(widget); + + -- HamoniKR Wed, 19 Oct 2022 17:10:22 +0900 + +celluloid (0.21-linuxmint1+uma) uma; urgency=medium + + * Add dependency on ffmpegthumbnailer + * Add build-dep on meson + * l10n: Add translations to desktop file + + -- Clement Lefebvre Thu, 03 Jun 2021 11:25:26 +0100 + +celluloid (0.17-1~bionic2) bionic; urgency=low + + * New upstream release. + * Rename to celluloid. + + -- Xu Zhen Sat, 31 Aug 2019 00:22:44 +0800 + +gnome-mpv (0.16-1~disco1) disco; urgency=low + + * New upstream release. + + -- Xu Zhen Wed, 23 Jan 2019 11:30:35 +0000 + +gnome-mpv (0.15-1~cosmic1) bionic; urgency=low + + * New upstream release. + + -- Xu Zhen Tue, 11 Sep 2018 21:31:29 +0800 + +gnome-mpv (0.14-1~bionic2) bionic; urgency=low + + * Update mpv version requirement. + + -- Xu Zhen Tue, 20 Feb 2018 11:49:48 +0800 + +gnome-mpv (0.14-1~bionic1) bionic; urgency=low + + * New upstream release. + + -- Xu Zhen Tue, 20 Feb 2018 11:38:11 +0800 + +gnome-mpv (0.13-1~artful1) artful; urgency=low + + * New upstream release. + + -- Xu Zhen Sat, 21 Oct 2017 18:21:28 +0800 + +gnome-mpv (0.12-1~zesty1) zesty; urgency=low + + * New upstream release. + + -- Xu Zhen Wed, 14 Jun 2017 19:27:48 +0800 + +gnome-mpv (0.11-1~zesty1) zesty; urgency=low + + * New upstream release. + + -- Xu Zhen Fri, 06 Jan 2017 19:49:59 +0800 + +gnome-mpv (0.10-1~yakkety2) yakkety; urgency=low + + * Rebuild against GTK 3.20 + + -- Xu Zhen Mon, 15 Aug 2016 19:09:31 +0800 + +gnome-mpv (0.10-1~yakkety1) yakkety; urgency=low + + * New upstream release. + + -- Xu Zhen Sun, 31 Jul 2016 19:10:05 +0800 + +gnome-mpv (0.9-1~yakkety2) yakkety; urgency=low + + * Fix FTBFS. + + -- Xu Zhen Wed, 18 May 2016 20:10:35 +0800 + +gnome-mpv (0.9-1~yakkety1) yakkety; urgency=low + + * New upstream release. + + -- Xu Zhen Wed, 18 May 2016 19:43:20 +0800 + +gnome-mpv (0.7-1~xenial1) xenial; urgency=low + + * New upstream release. + + -- Xu Zhen Sun, 31 Jan 2016 16:15:22 +0800 + +gnome-mpv (0.6-1~xenial1) xenial; urgency=low + + * New upstream release. + + -- Xu Zhen Tue, 27 Oct 2015 19:31:50 +0800 + +gnome-mpv (0.5-1~wily1) wily; urgency=low + + * New upstream release. + + -- Xu Zhen Fri, 07 Aug 2015 20:18:30 +0800 + +gnome-mpv (0.4-1~wily2) wily; urgency=low + + * patches/potfile.patch: Fix FTBFS + + -- Xu Zhen Sun, 17 May 2015 13:35:41 +0800 + +gnome-mpv (0.4-1~wily1) wily; urgency=low + + * New upstream release. + + -- Xu Zhen Sun, 17 May 2015 11:22:48 +0800 + +gnome-mpv (0.3-1~vivid1) vivid; urgency=low + + * Initial ubuntu package. + + -- Xu Zhen Wed, 18 Mar 2015 22:53:16 +0800 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +9 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..df2c078 --- /dev/null +++ b/debian/control @@ -0,0 +1,36 @@ +Source: celluloid +Section: video +Priority: optional +Maintainer: Xu Zhen +Build-Depends: debhelper (>= 9), + dh-autoreconf, + appstream-util, + autotools-dev, + autoconf-archive, + intltool (>= 0.40.6), + pkg-config, + libepoxy-dev, + libglib2.0-dev (>= 2.44), + libgtk-3-dev (>= 3.22.23), + libmpv-dev (>= 0.29.0), + meson +Standards-Version: 4.4.0 +Homepage: https://github.com/gnome-mpv/gnome-mpv + +Package: celluloid +Architecture: any +Pre-Depends: ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends}, ffmpegthumbnailer +Recommends: youtube-dl +Breaks: gnome-mpv (<= 0.16) +Replaces: gnome-mpv (<= 0.16) +Description: simple GTK+ frontend for mpv + Celluloid (formerly GNOME MPV) interacts with mpv via the client API exported + by libmpv, allowing access to mpv's powerful playback capabilities. + +Package: gnome-mpv +Architecture: all +Depends: celluloid +Description: transitional dummy package + This is a transitional dummy package, it can be safely removed. + diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..853103e --- /dev/null +++ b/debian/copyright @@ -0,0 +1,28 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: GNOME MPV +Source: https://github.com/gnome-mpv/gnome-mpv + +Files: * +Copyright: Copyright 2014-2015 gnome-mpv +License: GPL-3+ + +Files: debian/* +Copyright: 2015, Xu Zhen +License: GPL-3+ + +License: GPL-3+ + 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 package 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 . + . + On Debian systems, the complete text of the GNU General + Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". diff --git a/debian/io.github.celluloid_player.Celluloid.desktop b/debian/io.github.celluloid_player.Celluloid.desktop new file mode 100644 index 0000000..61a3516 --- /dev/null +++ b/debian/io.github.celluloid_player.Celluloid.desktop @@ -0,0 +1,187 @@ +[Desktop Entry] +Version=1.0 +Name=Celluloid +GenericName=Multimedia Player +GenericName[am]=መገናኛ ማጫወቻ +GenericName[ar]=مشغل الوسائط +GenericName[bg]=Мултимедиен плеър +GenericName[ca]=Reproductor multimèdia +GenericName[cs]=Multimediální přehrávač +GenericName[da]=Medieafspiller +GenericName[de]=Medienwiedergabe +GenericName[el]=Αναπαραγωγή πολυμέσων +GenericName[eo]=Plurmedia ludilo +GenericName[es]=Reproductor multimedia +GenericName[et]=Meediaesitaja +GenericName[eu]=Multimedia-erreproduzitzailea +GenericName[fi]=Mediasoitin +GenericName[fi_FI]=Mediasoitin +GenericName[fr]=Lecteur multimédia +GenericName[he]=נגן מדיה +GenericName[hi]=मीडिया प्लेयर +GenericName[hr]=Multimedijski reproduktor +GenericName[hu]=Médialejátszó +GenericName[ia]=Reproductor de medios +GenericName[id]=Pemutar Media +GenericName[is]=Margmiðlunarspilari +GenericName[it]=Riproduttore multimediale +GenericName[ja]=メディアプレイヤー +GenericName[kab]=Ameɣri n umidya +GenericName[ko]=미디어 플레이어 +GenericName[ku]=Lêdarê Medya +GenericName[lt]=Medijos grotuvas +GenericName[nb]=Mediaspiller +GenericName[nl]=Mediaspeler +GenericName[oc]=Lector multimèdia +GenericName[pl]=Odtwarzacz multimediów +GenericName[pt]=Reprodutor de Multimédia +GenericName[pt_BR]=Reprodutor de Mídia +GenericName[ro]=Player media +GenericName[ru]=Медиаплеер +GenericName[sk]=Prehrávač multimédií +GenericName[sl]=Predvajalnik predstavnosti +GenericName[sr]=Медијски програм +GenericName[sr@Latn]=Medijski program +GenericName[sr@cyrillic]=Медијски програм +GenericName[sr@ije]=Медијски програм +GenericName[sr@ijekavianlatin]=Медијски програм +GenericName[sr@latin]=Medijski program +GenericName[sr_Cyrl]=Медијски програм +GenericName[sr_RS]=Медијски програм +GenericName[sr_RS@latin]=Medijski program +GenericName[sv]=Mediaspelare +GenericName[th]=โปรแกรมเล่นสื่อ +GenericName[tr]=Ortam Oynatıcı +GenericName[uk]=Програвач медіа +GenericName[ur]=میڈیا پلیئر +GenericName[zh]=媒体播放器 +GenericName[zh_CN]=媒体播放器 +GenericName[zh_HK]=媒體播放器 +GenericName[zh_TW]=媒體播放器 +Comment=Play movies and videos +Comment[am]=ሙቪ ማጫወቻ +Comment[ar]=تشغيل الأفلام +Comment[as]=চলচিত্ৰসমূহ চলাওক +Comment[be]=Прайграванне фільмаў +Comment[be@latin]=Прайграванне фільмаў +Comment[bg]=Изпълнение на филми и видеоклипове +Comment[ca]=Reproduïu pel·lícules +Comment[crh]=Filmler oynat +Comment[cs]=Přehrávání filmů +Comment[cs_CZ]=Přehrávání filmů +Comment[da]=Afspil film og videoer +Comment[de]=Filme abspielen +Comment[el]=Αναπαραγωγή ταινιών +Comment[eo]=Ludi filmojn +Comment[es]=Reproduce películas y vídeos +Comment[et]=Filmide esitamine +Comment[eu]=Filma erreproduzitzea +Comment[fa]=پخش فیلم‌ها +Comment[fi]=Toista elokuvia +Comment[fr]=Lecture de films et vidéos +Comment[ga]=Seinn scannáin +Comment[gl]=Reproducir filmes +Comment[gu]=ચિત્રપટ વગાડો +Comment[he]=נגינת סרטים +Comment[he_IL]=נגינת סרטים +Comment[hi]=चलाएँ मूवी +Comment[hr]=Gledajte filmove i video snimke +Comment[hu]=Filmek lejátszása +Comment[ia]=Reproducer films +Comment[id]=Memutar film +Comment[is]=Spila myndskeið +Comment[it]=Riproduce filmati +Comment[ja]=動画を再生します +Comment[kab]=Ɣer tividyutin +Comment[kk]=Бейнелерды ойнату +Comment[km]=ចាក់​ភាពយន្ត +Comment[kn]=ಚಲನಚಿತ್ರವನ್ನು ಚಲಾಯಿಸು +Comment[ko]=동영상을 재생합니다 +Comment[lt]=Groti filmus +Comment[lv]=Atskaņot filmas +Comment[ml]=ചലച്ചിത്രം പ്രവര്‍ത്തിപ്പിക്കുക +Comment[mr]=चित्रपट चालवा +Comment[nb]=Spill av filmer +Comment[nl]=Films afspelen +Comment[oc]=Lectura de filmes +Comment[or]=ଚଳଚିତ୍ର ଚଲାନ୍ତୁ +Comment[pa]=ਮੂਵੀ ਚਲਾਓ +Comment[pl]=Odtwarzanie filmów +Comment[pl_PL]=Odtwarzanie filmów +Comment[pt]=Reproduzir filmes +Comment[pt_BR]=Reproduzir filmes +Comment[ro]=Redare filme +Comment[ru]=Воспроизведение фильмов +Comment[sk]=Prehráva filmy +Comment[sl]=Predvajanje posnetkov +Comment[sr]=Пуштајте филмове +Comment[sr@Latn]=Puštajte filmove +Comment[sr@cyrillic]=Пуштајте филмове +Comment[sr@ije]=Пуштајте филмове +Comment[sr@ijekavianlatin]=Пуштајте филмове +Comment[sr@latin]=Puštajte filmove +Comment[sr_Cyrl]=Пуштајте филмове +Comment[sr_RS]=Пуштајте филмове +Comment[sr_RS@latin]=Puštajte filmove +Comment[sv]=Spela upp filmer +Comment[ta]=திரைப்படங்களை இயக்குக +Comment[te]=చలనచిత్రాలను ప్రదర్శించు +Comment[th]=เล่นภาพยนตร์ +Comment[tr]=Filmleri oynat +Comment[ug]=كىنولارنى قويۇش +Comment[uk]=Відтворити фільм +Comment[ur]=فلمیں چلائیں +Comment[vi]=Phát phim +Comment[zh]=播放电影 +Comment[zh_CN]=播放电影 +Comment[zh_HK]=播放影片 +Comment[zh_TW]=播放影片 +Exec=celluloid %U +# Translators: This is an icon name, don't translate! +Icon=io.github.celluloid_player.Celluloid +Terminal=false +Type=Application +StartupNotify=true +StartupWMClass=Celluloid +DBusActivatable=true +Categories=GTK;GNOME;AudioVideo;Player;Video;TV; +# Translators: Search terms to find this application. Don't translate the semicolons! The list MUST also end with a semicolon! +Keywords=Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv; +Keywords[bg]=Видео;Кино;Филм;Клип;Сериал;Плеър;DVD;TV;Диск, Албум;Музика;Gnome;MPV +Keywords[cs]=Video;Snímek;Film;Klip;Seriál;Přehrávač;DVD;TV;Disk;Album;Hudba;GNOME;mpv; +Keywords[da]=Video;Film;Klip;Serier;Afspiller;DVD;TV;Disk;Album;Musik;GNOME;mpv; +Keywords[de]=Video;Movie;Film;Clip;Serie;Spieler;DVD,TV;Album;Musik;GNOME;mpv +Keywords[eo]=Disko;DVD;Filmo;GNOME;KD;mpv;Muziko;Seriaĵo;Televido;TV; +Keywords[es]=vídeo;película;filme;clip;serie;reproductor;DVD;TV;disco;álbum;música; GNOME;mpv; +Keywords[fr]=Vidéo;Film;Clip;Séries;Lecteur;DVD;TV;Télé;Disque;Album;Musique;GNOME;mpv; +Keywords[pt_BR]=Vídeo;Filme;Clipes;Séries;Tocar;DVD;TV;Disco;Álbum;Música;GNOME;mpv; +Keywords[pt_PT]=Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv; +Keywords[tr]=Video;Film;Müzik;Klip;Diziler;Oynatıcı;DVD;TV;Disk;Albüm;Music;GNOME;mpv; +MimeType=application/mpeg4-iod;application/mpeg4-muxcodetable;application/mxf;application/ogg;application/ram;application/sdp;application/streamingmedia;application/vnd.apple.mpegurl;application/vnd.ms-asf;application/vnd.rn-realmedia;application/vnd.rn-realmedia-vbr;application/x-extension-m4a;application/x-extension-mp4;application/x-flac;application/x-flash-video;application/x-matroska;application/x-ogg;application/x-streamingmedia;audio/3gpp;audio/3gpp2;audio/aac;audio/ac3;audio/amr;audio/amr-wb;audio/basic;audio/dv;audio/eac3;audio/flac;audio/m4a;audio/midi;audio/mp1;audio/mp2;audio/mp3;audio/mp4;audio/mpeg;audio/mpegurl;audio/mpg;audio/ogg;audio/opus;audio/scpls;audio/vnd.dolby.heaac.1;audio/vnd.dolby.heaac.2;audio/vnd.dolby.mlp;audio/vnd.dts;audio/vnd.dts.hd;audio/vnd.rn-realaudio;audio/wav;audio/webm;audio/x-aac;audio/x-aiff;audio/x-ape;audio/x-flac;audio/x-gsm;audio/x-it;audio/x-m4a;audio/x-matroska;audio/x-mod;audio/x-mp1;audio/x-mp2;audio/x-mp3;audio/x-mpeg;audio/x-mpegurl;audio/x-mpg;audio/x-ms-asf;audio/x-ms-wma;audio/x-musepack;audio/x-pn-aiff;audio/x-pn-au;audio/x-pn-realaudio;audio/x-pn-wav;audio/x-real-audio;audio/x-realaudio;audio/x-s3m;audio/x-scpls;audio/x-shorten;audio/x-speex;audio/x-tta;audio/x-vorbis;audio/x-vorbis+ogg;audio/x-wav;audio/x-wavpack;audio/x-xm;video/3gp;video/3gpp;video/3gpp2;video/divx;video/dv;video/fli;video/flv;video/mp2t;video/mp4;video/mp4v-es;video/mpeg;video/mpeg-system;video/msvideo;video/ogg;video/quicktime;video/vnd.mpegurl;video/vnd.rn-realvideo;video/webm;video/x-avi;video/x-flc;video/x-fli;video/x-flv;video/x-m4v;video/x-matroska;video/x-mpeg;video/x-mpeg-system;video/x-mpeg2;video/x-ms-asf;video/x-ms-wm;video/x-ms-wmv;video/x-ms-wmx;video/x-msvideo;video/x-nsv;video/x-ogm+ogg;video/x-theora;video/x-theora+ogg;x-content/audio-cdda;x-content/audio-player;x-content/video-dvd;x-scheme-handler/mms;x-scheme-handler/mmsh;x-scheme-handler/rtmp;x-scheme-handler/rtp;x-scheme-handler/rtsp; +X-KDE-Protocols=ftp,http,https,mms,rtmp,rtsp,sftp,smb +Actions=new-window; + +[Desktop Action new-window] +Name=New Window +Name[bg]=Нов прозорец +Name[ca]=Finestra nova +Name[cs]=Nové okno +Name[da]=Nyt vindue +Name[de]=Neues Fenster +Name[eo]=Nova fenestro +Name[es]=Ventana nueva +Name[fr]=Nouvelle fenêtre +Name[hr]=Novi prozor +Name[it]=Nuova finestra +Name[ja]=新しいウィンドウ +Name[pl]=Nowe okno +Name[pt_BR]=Nova Janela +Name[pt_PT]=Nova janela +Name[ru]=Новое окно +Name[sr@latin]=Novi prozor +Name[sr]=Нови прозор +Name[sv]=Nytt fönster +Name[tr]=Yeni Pencere +Name[uk]=Нове вікно +Name[zh_CN]=新建窗口 +Exec=celluloid --new-window diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..3503c36 --- /dev/null +++ b/debian/rules @@ -0,0 +1,14 @@ +#!/usr/bin/make -f + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +%: + dh $@ #--with autoreconf + +#override_dh_autoreconf: +# NOCONFIGURE=1 ./autogen.sh + +override_dh_install: + dh_install --list-missing + diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (native) diff --git a/docs/Makefile.am b/docs/Makefile.am new file mode 100644 index 0000000..5963ed0 --- /dev/null +++ b/docs/Makefile.am @@ -0,0 +1,5 @@ +man_MANS=celluloid.1 + +EXTRA_DIST = $(man_MANS) + + diff --git a/docs/celluloid.1 b/docs/celluloid.1 new file mode 100644 index 0000000..b347b5f --- /dev/null +++ b/docs/celluloid.1 @@ -0,0 +1,49 @@ +.\"Copyright (c) 2017-2019 gnome-mpv +.\" +.\"This file is part of Celluloid. +.\" +.\"Celluloid 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. +.\" +.\"Celluloid 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 Celluloid. If not, see . +.TH celluloid 1 "19 July 2017" +.SH NAME +celluloid \- A simple GTK+ frontend for mpv +.SH SYNOPSIS +.B celluloid +[\fIoptions...\fR] +[\fIfilenames\fR|\fIURIs\fR] +.SH DESCRIPTION +\fBCelluloid\fR is a simple GTK+ frontend for \fBmpv\fR. \fBCelluloid\fR +interacts with \fBmpv\fR via the client API exported by libmpv, allowing access +to \fBmpv\fR's powerful playback capabilities. +.SH OPTIONS +.TP +\fB\-?, \-h, \-\-help\fR +Show help options. +.TP +\fB\--new-window\fR +Create a new window if there is already a running instance. The option has no +effect otherwise. +.TP +\fB\--enqueue\fR +Append the given files or URIs to the playlist if there is a running instance. +The option has no effect otherwise. +.TP +\fB\--mpv-MPVOPTION=VALUE\fR +Set mpv option \fBMPVOPTION\fR to \fBVALUE\fR. For example, \fB--mpv-vf=vflip\fR +will set the mpv option \fBvf\fR to \fBvflip\fR. This is equivalent to passing +\fB--vf=vflip\fR to mpv. +.TP +\fB\--version\fR +Print the release version and exit. +.SH BUGS +Please report bugs at https://github.com/celluloid-player/celluloid/issues. diff --git a/docs/meson.build b/docs/meson.build new file mode 100644 index 0000000..3d61e5b --- /dev/null +++ b/docs/meson.build @@ -0,0 +1 @@ +install_man('celluloid.1') diff --git a/flatpak/io.github.celluloid_player.Celluloid.json b/flatpak/io.github.celluloid_player.Celluloid.json new file mode 100644 index 0000000..4451be3 --- /dev/null +++ b/flatpak/io.github.celluloid_player.Celluloid.json @@ -0,0 +1,164 @@ +{ + "app-id": "io.github.celluloid_player.Celluloid", + "runtime": "org.gnome.Platform", + "runtime-version": "master", + "sdk": "org.gnome.Sdk", + "command": "celluloid", + "finish-args": [ + "--share=ipc", + "--socket=fallback-x11", + "--socket=wayland", + "--device=all", + "--share=network", + "--socket=pulseaudio", + "--filesystem=xdg-pictures", + "--talk-name=org.gtk.vfs", + "--talk-name=org.gtk.vfs.*", + "--talk-name=org.gnome.SettingsDaemon.MediaKeys", + "--env=LC_NUMERIC=C" + ], + "modules": [ + { + "name": "luajit", + "no-autogen": true, + "cleanup": [ "/bin", "/lib/*.a", "/include", "/lib/pkgconfig", "/share/man" ], + "sources": [ + { + "type": "archive", + "url": "http://luajit.org/download/LuaJIT-2.1.0-beta3.tar.gz", + "sha256": "1ad2e34b111c802f9d0cdf019e986909123237a28c746b21295b63c9e785d9c3" + }, + { + "type": "shell", + "commands": [ "sed -i 's|/usr/local|/app|' ./Makefile" ] + } + ] + }, + { + "name": "libv4l2", + "cleanup": [ "/sbin", "/bin", "/include", "/lib/*.la", "/lib/*/*.la", "/lib*/*/*/*.la", "/lib/pkgconfig", "/share/man" ], + "config-opts": [ "--disable-static", "--disable-bpf", "--with-udevdir=/app/lib/udev" ], + "sources": [ + { + "type": "archive", + "url": "https://linuxtv.org/downloads/v4l-utils/v4l-utils-1.20.0.tar.bz2", + "sha256": "956118713f7ccb405c55c7088a6a2490c32d54300dd9a30d8d5008c28d3726f7" + } + ] + }, + { + "name": "nv-codec-headers", + "cleanup": ["*"], + "no-autogen": true, + "make-install-args": ["PREFIX=/app"], + "sources": [ + { + "type": "git", + "url": "https://git.videolan.org/git/ffmpeg/nv-codec-headers.git", + "commit": "cf8b0b2bb70b59068b06f1d5610627c8aa6d5652" + } + ] + }, + { + "name": "ffmpeg", + "cleanup": [ "/include", "/lib/pkgconfig", "/share/ffmpeg/examples" ], + "config-opts": [ + "--enable-shared", + "--disable-static", + "--enable-gnutls", + "--disable-doc", + "--disable-programs", + "--disable-encoders", + "--disable-muxers", + "--enable-encoder=png", + "--enable-libv4l2", + "--enable-libdav1d" + ], + "sources": [ + { + "type": "git", + "url": "https://git.ffmpeg.org/ffmpeg.git" + } + ] + }, + { + "name": "libass", + "cleanup": [ "/include", "/lib/*.la", "/lib/pkgconfig" ], + "config-opts": [ "--disable-static" ], + "sources": [ + { + "type": "archive", + "url": "https://github.com/libass/libass/releases/download/0.14.0/libass-0.14.0.tar.xz", + "sha256": "881f2382af48aead75b7a0e02e65d88c5ebd369fe46bc77d9270a94aa8fd38a2" + } + ] + }, + { + "name": "uchardet", + "buildsystem": "cmake-ninja", + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release", + "-DBUILD_STATIC=0" + ], + "cleanup": [ + "/bin", + "/include", + "/lib/pkgconfig", + "/share/man" + ], + "sources": [ + { + "type": "archive", + "url": "https://www.freedesktop.org/software/uchardet/releases/uchardet-0.0.6.tar.xz", + "sha256": "8351328cdfbcb2432e63938721dd781eb8c11ebc56e3a89d0f84576b96002c61" + } + ] + }, + { + "name": "libmpv", + "cleanup": [ "/include", "/lib/pkgconfig", "/share/man" ], + "buildsystem": "simple", + "build-commands": [ + "python3 waf configure --prefix=/app --enable-libmpv-shared --disable-cplayer --disable-build-date --disable-alsa", + "python3 waf build", + "python3 waf install" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/mpv-player/mpv.git" + }, + { + "type": "file", + "url": "https://waf.io/waf-2.0.19", + "sha256": "ba63c90a865a9bcf46926c4e6776f9a3f73d29f33d49b7f61f96bc37b7397cef", + "dest-filename": "waf" + } + ] + }, + { + "name": "youtube-dl", + "no-autogen": true, + "no-make-install": true, + "make-args": ["youtube-dl", "PYTHON=/usr/bin/python3"], + "post-install": ["install youtube-dl /app/bin"], + "sources": [{ + "type": "git", + "url": "https://github.com/rg3/youtube-dl.git", + "tag": "2020.05.29", + "commit": "228c1d685bb6d35b2c1a73e1adbc085c76da6b75" + }] + }, + { + "name": "celluloid", + "buildsystem": "meson", + "cleanup": ["/share/man"], + "sources": [ + { + "type": "git", + "url": "https://github.com/celluloid-player/celluloid.git" + } + ] + } + ] +} diff --git a/meson-post-install.py b/meson-post-install.py new file mode 100755 index 0000000..351f4d7 --- /dev/null +++ b/meson-post-install.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python3 + +import os +import subprocess + +prefix = os.environ.get('MESON_INSTALL_PREFIX', '/usr/local') +datadir = os.path.join(prefix, 'share') + +# Packaging tools define DESTDIR and this isn't needed for them +if not 'DESTDIR' in os.environ: + print('Compiling gsettings schemas...') + subprocess.call(['glib-compile-schemas', os.path.join(datadir, 'glib-2.0', 'schemas')]) + + print('Updating icon cache...') + subprocess.call(['gtk-update-icon-cache', '-qtf', os.path.join(datadir, 'icons', 'hicolor')]) + + print('Updating desktop database...') + subprocess.call(['update-desktop-database', '-q', os.path.join(datadir, 'applications')]) + diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..771d6ed --- /dev/null +++ b/meson.build @@ -0,0 +1,65 @@ +project('celluloid', 'c', + version: '0.21', + meson_version: '>= 0.49.0', + default_options: [ + 'warning_level=2', + 'c_std=gnu99', + ] +) + +i18n = import('i18n') +cc = meson.get_compiler('c') + +test_cflags = [ + '-funsigned-char', + '-fstack-protector-strong', + '-fPIE', + '-fPIC', + '-Wconversion', + '-Winline', + '-Wno-padded', + '-Wno-unused-parameter', + '-Wstrict-prototypes', + '-Wmissing-prototypes', + '-Werror=implicit-function-declaration', + '-Werror=pointer-arith', + '-Werror=init-self', + ['-Werror=format-security', '-Werror=format=2'], # Must be checked together + '-Werror=missing-include-dirs', + '-Werror=date-time' +] +global_cflags = [] +foreach cflag : test_cflags + if cc.has_multi_arguments(cflag) + global_cflags += cflag + endif +endforeach +if cc.has_header('execinfo.h') + global_cflags += '-DHAVE_EXECINFO_H' +endif +add_project_arguments(global_cflags, language: 'c') + +test_ldflags = [ + '-pie', + '-Wl,-z,relro', + '-Wl,-z,now' +] +global_ldflags = [] +foreach ldflag : test_ldflags + if cc.has_argument(ldflag) + global_ldflags += ldflag + endif +endforeach +add_project_link_arguments(global_ldflags, language: 'c') + +if not cc.has_function('setlocale') + error('Could not find setlocale()') +endif + +subdir('src') +subdir('data') +subdir('docs') +subdir('po') +subdir('test') + +meson.add_install_script('meson-post-install.py') diff --git a/po/LINGUAS b/po/LINGUAS new file mode 100644 index 0000000..feefc4b --- /dev/null +++ b/po/LINGUAS @@ -0,0 +1,31 @@ +bg +ca +cs +da +de +eo +es +eu +fa +fi +fr +hr +hu +is +it +ja +nl +pl +pt_BR +pt_PT +ro +ru +sk +sl +sr +sr@latin +sv +tr +uk +zh_CN +zh_TW diff --git a/po/Makevars b/po/Makevars new file mode 100644 index 0000000..2480cc0 --- /dev/null +++ b/po/Makevars @@ -0,0 +1,24 @@ +subdir = po +top_builddir = .. + +DOMAIN = $(PACKAGE) + +XGETTEXT_OPTIONS = --from-code=UTF-8 --keyword=_ --keyword=N_ --keyword=C_:1c,2 --keyword=NC_:1c,2 --keyword=g_dngettext:2,3 --add-comments + +COPYRIGHT_HOLDER = Celluloid + +PACKAGE_GNU = no + +MSGID_BUGS_ADDRESS = https://github.com/celluloid/celluloid/issues + +EXTRA_LOCALE_CATEGORIES = + +USE_MSGCTXT = no + +MSGMERGE_OPTIONS = --quiet + +MSGINIT_OPTIONS = + +PO_DEPENDS_ON_POT = no + +DIST_DEPENDS_ON_UPDATE_PO = no diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 0000000..5d2deea --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1,30 @@ +data/io.github.celluloid_player.Celluloid.gschema.xml +data/io.github.celluloid_player.Celluloid.appdata.xml.in +data/io.github.celluloid_player.Celluloid.desktop.in +src/celluloid-application.c +src/celluloid-common.c +src/celluloid-control-box.c +src/celluloid-controller-actions.c +src/celluloid-controller.c +src/celluloid-controller-input.c +src/celluloid-file-chooser.c +src/celluloid-header-bar.c +src/celluloid-main.c +src/celluloid-main-window.c +src/celluloid-menu.c +src/celluloid-metadata-cache.c +src/celluloid-model.c +src/celluloid-mpv.c +src/celluloid-mpv-wrapper.c +src/celluloid-open-location-dialog.c +src/celluloid-option-parser.c +src/celluloid-player.c +src/celluloid-player-options.c +src/celluloid-playlist-widget.c +src/celluloid-plugins-manager.c +src/celluloid-plugins-manager-item.c +src/celluloid-preferences-dialog.c +src/celluloid-seek-bar.c +src/celluloid-shortcuts-window.c +src/celluloid-video-area.c +src/celluloid-view.c diff --git a/po/bg.po b/po/bg.po new file mode 100644 index 0000000..10d45aa --- /dev/null +++ b/po/bg.po @@ -0,0 +1,1166 @@ +# cybercop , 2019. #zanata +# gnome-mpv , 2019. #zanata +# cybercop , 2020. #zanata +# gnome-mpv , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: 0.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-20 20:48+0700\n" +"PO-Revision-Date: 2020-10-09 12:48-0400\n" +"Last-Translator: cybercop \n" +"Language-Team: Bulgarian\n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "Дали настройките вече са прехвърлени от предишната версия" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Автоматично преоразмеряване на прозореца според видеото" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Включване на тъмната тема" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Включване на вградената Gnome 3 декорация" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Използване на плаващи контролери в прозоречен режим" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Автоматично скриване на курсора при режим на цял екран" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"Минималната скорост на курсора, при която да се покажат плаващите " +"контролери." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Размерът на мъртвата зона в която преместването на курсора няма да доведе до" +" показването на контролерите." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Използване на бутони за прескачане за управление на списъка" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" +"Задаване на избора на файлове да запомни местоположението на последния файл" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Винаги да се отваря нов прозорец" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Внасяне на настройки от MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Път до конфигурационен файл на MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Зареждане на mpv конфигурационен файл" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Път до внесения конфигурационен файл на MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Зареждане на входен mpv конфигурационен файл" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Включване поддръжка на MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Включване поддръжка на мултимедийни клавиши" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Предварително изтегляне на метаданни" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Игнориране на грешки при възпроизвеждане" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Задържане на сесията на празен ход" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Ширина на прозореца" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Височина на прозореца" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Да бъде ли максимизиран прозореца" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Сила на звука на плеъра" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Да се превърти ли списъка, когато е достигнат края му" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Ширина на спъсъка за изпълнение" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Да се показват ли контролерите" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Показване и скриване на списъка за изпълнение" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "Адрес на последната посещавана папка" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "GTK+ интерфейс за MPV" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" +"Celluloid е прост медиен плеър, който може да възпроизвежда практически " +"всички видео и аудио формати. Той поддържа плейлисти и MPRIS2 контроли на " +"медийния плеър. Дизайнът на Celluloid следва GNOME Human интерфейса, но може" +" да бъде адаптиран и за други системи, които не използват декорации от " +"страна на клиента (CSD). Той е базиран на MPV и GTK библиотеките." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Опции:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Поддръжка на Drag'n'Drop" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Зареждане на външни MPV конфигурационни файлове" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "MPRIS2 D-Bus интерфейс" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Разработчиците на Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Това издание съдържа следните промени:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Да бъде възможно активирането на контекстното меню, когато списъкът е " +"празен." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Предотвратяване на постоянното преоразмеряване на лентата за търсене поради " +"преоразмеряването на етикета с времева щампа при промяна на стойността му." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Да се показва само един диалогов прозорец за грешка при поява на голям брой " +"грешки за кратко време." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Добавяне на меню на елементите за отворените папки." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Настройване на позицията на елементите на потребителския интерфейс на " +"модалните диалогови прозорци в режим, който не е CSD, за да бъде по-" +"съгласуван с режима CSD." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Добавяне на поддръжка за зареждане на външни видеозаписи." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Възможност за превключване на разбъркването на списъка." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" +"Клавишите за посоки да могат да работят обвързано с клавишите на цифровата " +"клавиатура." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "Списъкът не е завършен. Вижте Git лога за пълния списък с промени." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Регулиране диапазона на бутона за усилване въз основа на зададените от вас " +"стойности за максимално ниво." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Запазване състоянието на максимизиран прозорец през сесиите." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Запазване на състоянието на превъртане през сесиите." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Внедряване на търсене в списъка." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Обновяване на списъка с бързи клавиши в диалога Бързи клавиши." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Коректна работа с цитати и избягване на последователности в допълнителни " +"опции за mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" +"Показване на време в позицията на курсора, когато се намира в лентата за " +"търсене." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"Изтегляне на '--mpv-опции'. Опциите, започващи с '--mpv-', могат да се " +"използват вместо задаване на mpv опции. Например, поставянето на на '--mpv-" +"vf=vflip' в Celluloid е еквивалентно на поставянето '--vf=vflip' в mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Добавена е поддръжка за конфигуриране на \"мъртва зона\" - зона, в която " +"движението на мишката няма да доведе до показване на контролите." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" +"Задаване на оразмеряването на прозореца да работи правилно с HiDPI дисплеи." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Добавен е фински превод от Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Добавен е словенски превод от @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Добавен е превод на ирански от @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Добавен е превод на украински от @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Добавена е поддръжка за показване/скриване декорацията на прозореца с " +"използване на MPV опцията --border" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Добавен е елемент в менюто за отваряне на дискове" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Блокиране на автоматичното скриване на курсора, когато уведомлението за " +"силата на звука е отворено в прозоречен режим" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Фиксиране на срив в MPV 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Проектът е преименуван на Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Добавен е превод на турски от @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Добавен е превод на есперанто от @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Миграция от opengl-cb към нов API за рендиране" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Присвояване на клавиши за цифрова клавиатура" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Присвояване на клавиши за Unicode" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Препращане на медийни ключови събития към mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Добавяне на dconf ключ за контролиране скоростта на курсора, когато " +"контролерите са видими." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Добавяне на опция за игнориране на грешки при възпроизвеждане" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Разделен е разделът Общи в диалога с настройките" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Подобряване на поведението при превключване на списъка за изпълнение при " +"тилинг мениджъри на прозорци " + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Преместени са елементите от менюто на програмите в основното меню" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Използвана е отделна MPRIS DBus връзка за всеки прозорец" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Добавена е поддръжка за свойствата на MPRIS LoopStatus" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Добавете опция --mpv-options за задаване на произволни mpv опции от команден" +" ред" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "" +"Задаване на директорията за снимки на екрана по подразбиране в " +"XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"Подобряване на обработката на мащаба на - Window, --autofit, --autofit-large" +" и --autofit-small" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Добавяне опцията за команден ред за настройка на WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" +"Добавена е опция в контекстното меню за премахване на елементи от списъка за" +" изпълнение" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" +"Добавяне на елемент от контекстното меню за копиране на местоположението на " +"елементите от списъка за изпълнение" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Добавена е опция, бутона за пропускане да променя елементите от списъка, а " +"не не заглавията" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Файловия браузър има възможност да избира не-локални местоположение" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" +"Добавяне на елемент в менюто при десен бутон на мишката за превъртане на " +"единичен файл" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" +"Обработване на събития за промяна на свойствата за цял екран и мащаб на " +"прозореца" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "Добавена е опция за скриване на курсора на мишката в прозоречен режим" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Основният прозорец показва програмата в действие" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Главният прозорец с изключен CSD" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Главният прозорец с отворен спъсък за изпълнение" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Мултимедиен плеър" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Изпълнение на филми и видеоклипове" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "Видео;Кино;Филм;Клип;Сериал;Плеър;DVD;TV;Диск, Албум;Музика;Gnome;MPV" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Нов прозорец" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Изпълнение" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Покажи текущата версия" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "На опашка" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Създаване на нов прозорец" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "ОПЦИИ" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Задаване роля на прозореца" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Не свързвайте към вече стартиран екземпляр" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Пауза" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Изпълнение" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Спиране" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Напред" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Назад" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Следващо заглавие" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Предишно заглавие" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Превъртане на списъка" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Разбъркване на списъка" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Включване/изключване режима на цял екран" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Грешка" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Всички файлове" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Мултимедийни файлове" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Аудио файлове" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Видео файлове" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Файлове с изображения" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Фалове със субтитри" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Няма" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Неизвестно" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "_Зареждане на външен…" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Не е намерен диск" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Файл" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Отваряне..." + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Отваряне на _папка..." + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Отваряне на _местоположение..." + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Отваряне на _диск..." + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Запазване на списък за изпълнение" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Нов прозорец" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Изход" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Редактиране" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Предпочитания" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Видео запис" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Аудио запис" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "_Файл със субтитри" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Преглед" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "Включване/изключване на _контролерите" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "Включване/изключване на _списъка за изпълнение" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Режим на цял екран" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Помощ" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Клавишни комбинации" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Относно Celluloid" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Отваряне на _диск" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "Възпрозвеждането беше спряно непредвидено. Причина: %s." + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Местоположение:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Отказ" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Отваряне" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Не могат да бъдат приложени една или повече опции за MPV." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Копиране на местоположението" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Премахване" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Добавяне…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Добавяне на _папка..." + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Добавяне на _местоположение…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Разбъркано" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Превъртане на _файл" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Превъртане на _списък" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Списък за изпълнение" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Списъкът е празен" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Добавяне на разширение" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Lua разширения" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "JavaScript разширения" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "C - разширения" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Неуспешно копиране на файл от '%s' в '%s'. Причина: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Не са намерени разширения" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Премахване" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "" +"Сигурен ли сте, че искате да премахнете този скрипт? Това действие не може " +"да бъде отменено." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Неуспешно изтриване на файл '%s'. Причина: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "mpv конфигурационен файл:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "входен mpv конфигурационен файл:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Допълнителни mpv опции:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Интерфейс" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Конфигурационни файлове" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Разни" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Разширения" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Запазване" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Предпочитания" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Отваряне на файл" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Отваряне на местоположение" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Добавяне на файлове в списъка за изпълнение" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Добавяне на местоположение в списъка за изпълнение" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Показване на диалога с настройките" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Показване/скриване на контролерите" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Показване/скриване на списъка за изпълнение" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Превключване в режим на цял екран" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Изход от режима на цял екран" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "" +"Превключване в OSD режим между нормалното време и времето на " +"възпроизвеждане/продължителност" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Показване името на файла в OSD" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Показване на прогреса, оставащото време и продължителност в OSD" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Прескачане назад/напред с 5 секунди" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Прецизно прескачане назад/напред с 1 секунда" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Прескачане назад/напред с 1 минута" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Прецизно прескачане назад/напред с 5 секунди" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Преминаване към предишните/следващите субтитри" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Стъпка назад/напред с един кадър" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Преминаване към предишното/следващото заглавие" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Намаляване/увеличаване скоростта на възпроизвеждане с 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Намаляване наполовина/удвояване скоростта на изпълнение" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Нулиране скоростта на изпълнение до нормална стойност" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Отиване назад/напред в списъка за изпълнение" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Премахване на избраните елементи от списъка за изпълнение" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Запазване на списъка за изпълнение" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Задай/изчисти точки на повторение A-B" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Включване/изключване на напрекъснатото повторение" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Пауза и възобновяване" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Изход" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Запазване на текущата позиция на възпроизвеждане и изход" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Влизане в режим на търсене" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Прескачане до следващият резултат" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Прескачане до предишният резултат" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Изход от режима за търсене" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Превъртане през аудио записите" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Намаляване/увеличаване силата на звука" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Заглушаване и пускане на звука" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Задържане на аудиото с + / - 0,1 секунди" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Превключване видимостта на субтитрите" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Превъртане през наличните субтитри" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Задържане на субтитрите с + / - 0,1 секунди" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Превключване промяната стила на субтитрите SSA/ASS" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Преместване на субтитрите нагоре/надолу" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Включване/изключване режим на VSFilter" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Превъртане през видео записите" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Намаляване/увеличаване диапазона на обхващане и сканиране" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Направете снимка на екрана" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Направете снимка на екрана без субтитри" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Направете снимка на екрана с всичко в прозореца" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Оразмеряване на видеото в половината от оригиналния размер" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Оразмеряване на видеото в неговия оригинален размер" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Оразмеряване на видеото в двоен размер спрямо оригинала" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Настройка на контраста" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Настройка на яркостта" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Настройка на гамата" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Настройка на наситеността" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Активирайте или деактивирайте деинтерлактора" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Циклично презаписване на стойностите" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Потребителски интерфейс" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Видео" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Аудио" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Субтитри" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Възпроизвеждане" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Търсене" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Зареди аудио запис…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Зареждане на видео запис..." + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Зареди файл със субтитри…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Включването или изключването на вградената (Gnome 3) декорация изисква " +"рестартиране за да влязат промените в сила." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Добавяне на папка в списъка" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Отваряне на папка" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Добавяне на файл в списъка" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Отваряне на файл" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Добавяне местоположение до списък" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Отвори местоположение" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Запазване на списъка" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "GTK интерфейс за MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Kiril Kirilov " diff --git a/po/ca.po b/po/ca.po new file mode 100644 index 0000000..a8da350 --- /dev/null +++ b/po/ca.po @@ -0,0 +1,1170 @@ +# Toni Estevez , 2019. #zanata +# gnome-mpv , 2019. #zanata +# Toni Estevez , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-20 20:48+0700\n" +"PO-Revision-Date: 2020-12-25 05:54-0500\n" +"Last-Translator: Toni Estevez \n" +"Language-Team: Catalan\n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "Importa la configuració d'una versió anterior" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Redimensionar automàticament la finestra a la mida del vídeo" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Activa el tema fosc" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Activa les decoracions del client" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Utilitza controls flotants al mode finestra" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Amaga automàticament el punter del ratolí en el mode finestra" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"La velocitat mínima del cursor a la qual s'amagaran els controls flotants." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"La mida de la zona morta en què el moviment del cursor no farà que es " +"mostrin els controls." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Utilitza els botons de salt per controlar la llista de reproducció" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Recorda la ubicació de l'últim fitxer" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Obre sempre una finestra nova" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Opcions extra per a l'mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Fitxer de configuració de l'mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Carrega un fitxer de configuració de l'mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Fitxer de configuració de l'entrada de l'mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Carrega un fitxer de configuració de l'entrada de l'mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Activa la compatibilitat amb la interfície MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Activa les tecles multimèdia" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Precarrega les metadades" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ignora els errors de reproducció" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Desactiva la suspensió de la sessió" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Amplada de la finestra" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Alçada de la finestra" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Maximitza la finestra" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Volum del reproductor" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Reprodueix en bucle la llista de reproducció" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Amplada de la llista de reproducció" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Mostra els controls" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Mostra la llista de reproducció" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "Ubicació de l'última carpeta accedida" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "Interfície GTK per al reproductor mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" +"Cel·luloide és un reproductor multimèdia senzill que pot reproduir " +"pràcticament qualsevol format de vídeo i àudio. Admet llistes de reproducció" +" i controls de reproducció MPRIS2. El disseny del Celluloid segueix les " +"guies d'interfície d'usuari del GNOME, però també pot adaptar-se a altres " +"entorns que no fan servir les decoracions del client (CSD). Es basa en les " +"biblioteques mpv i GTK." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Característiques:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "" +"Es poden arrossegar i deixar anar les entrades de la llista de reproducció" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Carrega fitxers de configuració externs de l'mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "Interfície D-Bus de MPRIS2" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Els desenvolupadors del Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Aquesta versió conté els canvis següents:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Permet activar el menú de context quan la llista de reproducció és buida." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Evita el canvi constant de la mida de la barra de cerca a causa del canvi de" +" mida de l'etiqueta de la marca de temps a mesura que canvia el seu valor." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Només mostra un diàleg d'error únic quan es produeix un gran nombre d'errors" +" en una successió ràpida." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Afegeix un element al menú per obrir carpetes." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Ajusta la posició dels elements de la interfície d'usuari dels diàlegs " +"modals en el mode no CSD per ser més coherent amb mode CSD." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Afegeix la possibilitat de carregar pistes de vídeo externes." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Permet alternar la barreja de les llistes de reproducció." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" +"Fa que les combinacions de tecles funcionin amb les tecles de fletxa del " +"teclat numèric." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" +"Aquest llistat és incomplet. Consulteu el registre del Git per obtenir un " +"registre de canvis complet." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Ajusta el rang del botó de volum basant-se en el valor de la propietat " +"«volum màxim»." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Recorda l'estat de maximització de la finestra." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Recorda l'estat de la reproducció en bucle." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Implementa la cerca a la llista de reproducció" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" +"Actualitza la llista de dreceres en el diàleg de les dreceres de teclat." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Gestiona correctament les cometes i les seqüències d'escapada en les opcions" +" extra de MPV." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" +"Mostra el temps en la posició del punter en situar-lo en la barra de cerca." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"Desaprova «--mpv-options». En el seu lloc, per configurar opcions de mpv, es" +" poden fer servir opcions que comencin per «--mpv-». Per exemple, passar " +"«--mpv-vf=vflip» al Celluloid equival a passar «--vf=vflip» a mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Afegeix suport per configurar una zona morta, una àrea en la qual el " +"moviment del ratolí no farà que es mostrin controls." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" +"Ajusta la mida de la finestra correctament en pantalles d'alta densitat " +"(HiDPI)." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Afegeix la traducció al finlandès feta per Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Afegeix la traducció a l'eslovè feta per @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Afegeix la traducció al persa feta per danialbehzad" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Afegeix la traducció a l'ucraïnès feta per vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Afegeix compatibilitat per mostrar/amagar les decoracions de la finestra " +"utilitzant l'opció --border de l'mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Afegeix un element al menú per obrir discs" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Bloqueja l'ocultació automàtica del cursor quan s'obre la finestra emergent " +"del volum en el mode finestra" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Corregeix el bloqueig amb la versió 0.30 de l'mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Canvia el nom del projecte a Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Afegeix la traducció al turc feta per TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Afegeix la traducció a l'esperanto feta per F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Canvia de opengl-cb a la nova API de representació" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Controla les combinacions de tecles de teclat numèric" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Controla les assignacions de tecles de l'Unicode" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Reenvia els esdeveniments de les tecles multimèdia a l'mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Afegeix una clau del dconf per controlar la velocitat del cursor a la qual " +"s'amaguen els controls" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Afegeix una opció per suprimir els errors de reproducció" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Divideix la pestanya General al diàleg de preferències" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Millora el comportament en mostrar o ocultar la llista de reproducció en els" +" gestors de finestra de mosaic" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Desplaça els elements del menú d'aplicació al menú principal" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "" +"Utilitza una connexió DBUS de la interfície MPRIS separada per a cada " +"finestra" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "" +"Afegeix compatibilitat amb la propietat LoopStatus de la interfície MPRIS" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Afegeix l'opció --mpv-options per configurar opcions arbitràries de l'mpv " +"des de la línia d'ordres" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "" +"Estableix com a carpeta de captures de pantalla predeterminada la carpeta " +"XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"Millora el maneig de les opcions --window-scale, --autofit, --autofit-larger" +" i --autofit-smaller" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Afegeix una opció a la línia d'ordres per configurar WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" +"Afegeix un element al menú contextual per suprimir elements de la llista de " +"reproducció" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" +"Afegeix un element al menú contextual per copiar la ubicació dels elements " +"de la llista de reproducció" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Afegeix una opció per fer que els botons de salt seleccionin les entrades de" +" la llista de reproducció en lloc dels capítols" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Fa que el selector de fitxers accepti ubicacions no locals" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" +"Afegeix una entrada al menú contextual per reproduir en bucle un únic fitxer" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" +"Gestiona els esdeveniments de canvi de propietat per a la pantalla completa " +"i l'escala de la finestra" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" +"Afegeix una opció per amagar automàticament el punter del ratolí al mode " +"finestra" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "La finestra principal amb l'aplicació en acció" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "La finestra principal amb les decoracions del client desactivades" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "La finestra principal amb la llista de reproducció oberta" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Reproductor multimèdia" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Reprodueix pel·lícules i vídeos" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "" +"vídeo;pel·lícula;film;clip;sèrie;reproductor;DVD;TV;disc;àlbum;música;GNOME;mpv;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Finestra nova" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "En reproducció" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Mostra la versió" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "A la cua" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Crea una finestra nova" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "OPCIONS" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Estableix el comportament de la finestra" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "No connectis a una instància que ja s'estigui executant" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Posa en pausa" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Reprodueix" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Atura" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Avança" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Rebobina" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Capítol següent" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Capítol anterior" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Llista de reproducció en bucle" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Mescla la llista de reproducció" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Activa/desactiva la pantalla completa" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Error" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Tots els fitxers" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Fitxers multimèdia" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Fitxers d'àudio" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Fitxers de vídeo" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Fitxers d'imatge" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Fitxers de subtítols" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Cap" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Desconeguda" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "_Obre..." + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "No s'ha trobat cap disc" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Fitxer" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Obre..." + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Obre una _carpeta..." + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Obre una _ubicació..." + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Obre un _disc" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Desa la llista de reproducció..." + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "Finestra _nova" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Surt" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Edita" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Preferències" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "Pista de _vídeo" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "Pista d'à_udio" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "Pista de _subtítols" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Vista" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "Mostra/amaga els _controls" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "Mostra/amaga la _llista de reproducció" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Pantalla completa" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Ajuda" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "Dreceres de _teclat" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Quant a" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Obre un _disc" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "La reproducció ha acabat de forma anòmala. Motiu: %s" + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Ubicació:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Cancel·la" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Obre" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "No s'han pogut aplicar una o més opcions de l'mpv." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Copia la ubicació" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Suprimeix" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Afegeix…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Afegeix una _carpeta..." + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Afegeix una _ubicació..." + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Mescla" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "_Fitxer en bucle" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "_Llista de reproducció en bucle" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Llista de reproducció" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "La llista de reproducció és buida" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Afegeix un connector" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Connectors Lua" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "Connectors JavaScript" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "Connectors C" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "No s'ha pogut copiar el fitxer de «%s» a «%s». Motiu: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "No s'ha trobat cap connector" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Suprimeix" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "" +"Segur que voleu suprimir aquest script? Aquesta acció no es pot desfer." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "No s'ha pogut suprimir el fitxer «%s». Motiu: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "Fitxer de configuració de l'mpv:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "Fitxer de configuració de l'entrada de l'mpv:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Opcions addicionals de l'mpv:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Interfície" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Fitxers de configuració" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Miscel·lània" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Connectors" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Desa" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Preferències" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Obre un fitxer" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Obre una ubicació" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Afegeix un fitxer a la llista de reproducció" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Afegeix una ubicació a la llista de reproducció" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Mostra el diàleg de preferències" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Mostra/amaga els controls" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Mostra/amaga la llista de reproducció" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Activa/desactiva el mode de pantalla completa" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Surt del mode de pantalla completa" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "Mostra/amaga en pantalla el temps de reproducció i la durada" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Mostra en pantalla el nom del fitxer" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Mostra en pantalla el progrés, el temps transcorregut i la durada" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Salta 5 segons cap enrere/endavant" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Salta exactament 1 segon cap enrere/endavant" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Salta 1 minut cap enrere/endavant" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Salta exactament 5 segons cap enrere/endavant" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Salta als subtítols anteriors/següents" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Retrocedeix/avança un sol fotograma" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Salta al principi del capítol anterior/següent" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Disminueix/augmenta la velocitat de reproducció un 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Redueix a la meitat o duplica la velocitat de reproducció" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Restableix la velocitat de reproducció" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Retrocedeix/avança a la llista de reproducció" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Suprimeix l'element seleccionat de la llista de reproducció" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Desa la llista de reproducció" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Fixa/esborra els punts de bucle A-B" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Activa/desactiva la reproducció en bucle" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Posa en pausa o continua" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Surt" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Desa la posició de reproducció actual i surt" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Entra al mode de cerca" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Ves a la coincidència següent" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Ves a la coincidència anterior" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Surt del mode de cerca" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Selecciona la pista d'àudio següent" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Disminueix/augmenta el volum" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Silencia/activa el so" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Ajusta el retard de l'àudio en +/- 0.1 segons" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Mostra/amaga els subtítols" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Selecciona els subtítols següents" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Ajusta el retard dels subtítols en +/- 0.1 segons" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Activa/desactiva l'anulació de l'estil dels subtítols SSA/ASS" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Mou els subtítols amunt/avall" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Activa/desactiva el mode de compatibilitat d'aspecte del VSFilter" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Selecciona la pista de vídeo següent" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Disminueix/augmenta el rang de reenquadrament (pan and scan)" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Fes una captura de pantalla" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Fes una captura de pantalla, sense subtítols" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Fes una captura de pantalla, tal com es mostra a la finestra" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Redimensiona el vídeo a la meitat de la mida original" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Redimensiona el vídeo a la mida original" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Redimensiona el vídeo al doble de la mida original" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Ajusta el contrast" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Ajusta la brillantor" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Ajusta la correcció gamma" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Ajusta la saturació" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Activa/desactiva el desentrellaçat" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Selecciona la relació d'aspecte següent" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Interfície d'usuari" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Vídeo" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Àudio" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Subtítols" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Reproducció" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Cerca" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Carrega una pista d'àudio..." + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Carrega una pista de vídeo..." + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Carrega una pista de subtítols..." + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Per activar o desactivar les decoracions del client cal reiniciar " +"l'aplicació." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Afegeix una carpeta a la llista de reproducció" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Obre una carpeta" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Afegeix un fitxer a la llista de reproducció" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Obre un fitxer" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Afegeix una ubicació a la llista de reproducció" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Obre una ubicació" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Desa la llista de reproducció" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "Una interfície GTK per al reproductor mpv" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" +"Toni Estevez, toni.estevez@gmail.com\n" +"Adolfo Jayme Barrientos, fitojb@ubuntu.com" diff --git a/po/cs.po b/po/cs.po new file mode 100644 index 0000000..8f773d8 --- /dev/null +++ b/po/cs.po @@ -0,0 +1,1151 @@ +# Czech translations for gnome-mpv package +# gnome-mpv +# Copyright (C) 2015 THE gnome-mpv'S COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-mpv package. +# Tomáš Marný, 2015. +# Jaroslav Svoboda , 2019. #zanata +# gnome-mpv , 2019. #zanata +# Pavel Zahradník , 2020. #zanata +# Pavel Zahradník , 2021. #zanata +msgid "" +msgstr "" +"Project-Id-Version: gnome-mpv 0.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-20 20:48+0700\n" +"PO-Revision-Date: 2021-01-29 06:44-0500\n" +"Last-Translator: Pavel Zahradník \n" +"Language-Team: \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "Zda už byly předvolby konvertovány ze staré na novou verzi" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Automaticky přizpůsobit velikost okna podle videa" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Povolit tmavý motiv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Povolit dekorace na straně klienta" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Použít v okenním režimu plovoucí ovládání" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Automaticky skrýt kurzor myši v okenním režimu" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"Minimální rychlost kurzoru, při které budou zobrazeny plovoucí ovládací " +"prvky." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Velikost mrtvé zóny, ve které pohyb kurzoru nezpůsobí zobrazení ovládacích " +"prvků." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Použít tlačítka pro přeskakování pro ovládání seznamu přehrávání" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Pamatovat si poslední umístění v dialogu pro výběr souborů " + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Vždy otevřít nové okno" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Přepínače pro mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Cesta ke konfiguračnímu souboru mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Načíst konfigurační soubor mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Cesta ke konfiguračnímu souboru vstupu mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Načíst vstupní konfigurační soubor mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Zapnout podporu MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Zapnout podporu multimediálních kláves" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Dopředu načíst metadata" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ignorovat chyby přehrávání" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Zakázat přerušení relace" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Šířka okna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Výška okna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Zda je okno maximalizováno" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Hlasitost přehrávání" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Zda po dosažení konce seznamu přehrávání pokračovat od začátku" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Šířka seznamu přehrávání" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Zobrazit nebo nezobrazit ovládací tlačítka" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Zobrazit nebo nezobrazit seznam přehrávání" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "Cesta k poslední použité složce" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "GTK+ rozhraní nad mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" +"Celluloid je jednoduchý přehrávač médií, který dokáže přehrávat prakticky " +"všechny formáty videa a zvuku. Podporuje seznamy přehrávání a ovládací prvky" +" MPRIS2. Design aplikace Celluloid odpovídá GNOME Human Interface " +"Guidelines, ale lze jej také přizpůsobit pro jiné systémy, které nepoužívají" +" dekorace na straně klienta (CSD). Je založen na knihovně mpv a GTK." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Nabízí:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Seznam přehrávání („playlist“) s možností přetáhnout soubory myší" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Načítání externího konfiguračního souboru pro mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "Rozhraní MPRIS2 D-Bus" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Vývojáři aplikace Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Tato verze obsahuje následující změny:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Kontextovou nabídku je možné vyvolat i při prázdném seznamu přehrávání." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Oprava neustálých změn velikosti přehrávacího pruhu kvůli změnám velikosti " +"ukazatele času. " + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Při velkém počtu chyb, které nastanou v rychlém sledu, bude zobrazen pouze " +"jeden chybový dialog." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Do nabídky přidána položka pro otevírání složek." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Upraveno umístění prvků uživatelského rozhraní v modálních dialozích, aby " +"bylo konzistentní s CSD módem." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Přidána podpora pro nahrávání externích stop videa." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Míchání skladeb v seznamu přehrávání je možné přepínat." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "Klávesové zkratky fungují s šipkami na numerické klávesnici." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "Tento seznam je neúplný. Úplný přehled změn najdete v git logu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "Rozsah klávesy hlasitosti přizpůsobit na základě hodnoty volume-max." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Zachovat stav maximalizace okna napříč relacemi." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Zachovat stav smyčky napříč relacemi." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Implementovat vyhledávání v seznamu přehrávání." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Aktualizovat seznam klávesových zkratek." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Zacházet správně s uvozovkami a escape sekvencemi v rozšířených možnostech " +"mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "Zobrazit čas na pozici kurzoru při najetí na přehrávací pruh." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "xtra" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Přidat podporu pro nastavení mrtvé zóny, tj. oblasti, ve které pohyb myši " +"nezpůsobí zobrazení ovládacích prvků." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" +"Zajistit, aby nastavení velikosti okna fungovalo správně na displejích s " +"vysokým rozlišením." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Přidán překlad do finštiny od Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Přidán překlad do slovinštiny od @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Přidán překlad do perštiny od @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Přidán překlad do ukrajinštiny od @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Přidána podpora pro zobrazení/skrytí dekorací okna pomocí mpv předvolby " +"--border" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Přidána položka nabídky pro otevírání disků" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Zablokovat automatické skrytí kurzoru, když je v režimu okna otevřeno " +"ovládání hlasitosti" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Opravit pád s mpv 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Přejmenovat projekt na Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Přidán překlad do turečtiny od @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Přidán překlad do esperanta od @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Přejít z opengl-cb na nové vykreslovací rozhraní" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Ovládat klávesové zkratky na numerické klávesnici" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Ovládat klávesové zkratky unicode" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Předávat události mediálních kláves mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Přidán dconf klíč pro nastavení rychlosti kurzoru, při které se zobrazí " +"ovládací prvky" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Přidána možnost pro potlačení chyb přehrávání" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Rozdělit Hlavní záložku v dialogu předvoleb" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Vylepšit chování při přepínání seznamu přehrávání pod dlaždicovými správci " +"oken" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Přesunout položky menu aplikace do primátního menu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Použít pro každé okno oddělené spojení MPRIS DBus" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Přidána podpora pro MPRIS vlastnost LoopStatus" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Přidána předvolba --mpv-options pro nastavení libovolných možností mpv z " +"příkazové řádky" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Nastavit výchozí adresář pro snímky obrazovky na XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"Vylepšit zacházení s předvolbami --window-scale, --autofit, --autofit-larger" +" a --autofit-smaller" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Přidána předvolba příkazové řádky pro nastavení WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" +"Přidána položka kontextové nabídky pro odstranění položek seznamu přehrávání" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" +"Přidána položka kontextové nabídky pro zkopírování umístění položek seznamu " +"přehrávání" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Přidána možnost, aby tlačítka pro přeskočení měnila položky seznamu " +"přehrávání místo kapitol" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Akceptovat vzdálená umístění při výběru souborů" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "Přidána položka kontextové nabídky pro přehrávání souboru ve smyčce" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" +"Ovládat události změn vlastností pro režim celé obrazovky a pro měřítko okna" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "Přidána možnost pro automatické skrývání kurzoru myši v režimu okna" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Hlavní okno a aplikace v akci" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Hlavní okno s vypnutými dekoracemi na straně klienta" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Hlavní okno s otevřeným seznamem přehrávání" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Multimediální přehrávač" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Přehrávat filmy a videa" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "" +"Video;Snímek;Film;Klip;Seriál;Přehrávač;DVD;TV;Disk;Album;Hudba;GNOME;mpv;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Nové okno" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Hraje" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Zobrazit verzi vydání" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Zařadit do fronty" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Vytvořit nové okno" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "MOŽNOSTI" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Nastavit roli okna" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Nepřipojovat k již běžící instanci" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Pozastavit" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Přehrát" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Zastavit" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Vpřed" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Zpět" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Další kapitola" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Předchozí kapitola" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Opakovat seznam přehrávání ve smyčce" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Zamíchat seznam přehrávání" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Zobrazení na celou obrazovku" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Chyba" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Všechny soubory" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Soubory médií" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Soubory zvuku" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Soubory videa" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Soubory obrázků" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Soubory titulků" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Nic" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Neznámý" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "_Načíst externí…" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Nebyl nalezen žádný disk" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Soubor" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Otevřít..." + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Otevřít _složku..." + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Otevřít _umístění..." + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Otevřít _disk..." + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Uložit seznam přehrávání" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Nové okno" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "U_končit" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "Up_ravit" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Předvolby" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "Stopa _videa" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "Stopa _zvuku" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "_Titulky" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "Zo_brazit" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "Přepnout _ovládání" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Přepnout seznam přehrávání" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Celá obrazovka" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Nápověda" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Klávesové zkratky" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_O Celluloidu" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Otevřít _disk" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "Přehrávání bylo nečekaně ukončeno. Důvod: %s." + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Umístění:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Zrušit" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Otevřít" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Nebylo možno uplatnit jednu nebo více předvoleb MPV." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Kopírovat umístění" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Odstranit" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Přidat…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Přidat _složku..." + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Přidat _umístění…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Náhodně" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Opakovat _soubor" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Opakovat seznam přehrávání ve _smyčce" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Seznam přehrávání" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Seznam přehrávání je prázdný" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Přidat plugin" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Lua pluginy" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "JavaScriptové pluginy" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "Pluginy v C" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Selhalo kopírování souboru z ‚%s‘ do ‚%s‘. Důvod: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Nebyly nalezeny žádné pluginy" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Odstranit" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "Určitě si přejete tento skript odstranit? Akci nelze vrátit zpět." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Selhalo smazání souboru ‚%s‘. Důvod: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "Konfigurační soubor mpv:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "Vstupní konfigurační soubor mpv:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Rozšířené možnosti mpv:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Rozhraní" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Konfigurační soubory" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Různé" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Pluginy" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Uložit" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Předvolby" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Otevřít soubor" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Otevřít umístění" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Přidat soubor do seznamu přehrávání" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Přidat umístění do seznamu přehrávání" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Otevřít předvolby" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Přepnout ovládání" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Přepnout seznam přehrávání" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Přepnout zobrazení na celou obrazovku" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Opustit celou obrazovku" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "Přepnout zprávy na obrazovce (normální nebo čas přehrávání)" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Ukazovat na obrazovce název souboru" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Ukazovat na obrazovce postup, uplynulý čas a celkový čas" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Skok zpět o 5 sekund" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Přesný skok zpět o 1 sekundu" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Skok zpět/vpřed o 1 minutu" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Přesný skok zpět/vpřed o 5 sekund" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Skok k předchozím/dalším titulkům" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Krok zpět/vpřed po jednotlivém snímku" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Skok na začátek předchozí/další kapitoly" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Zpomalit/zrychlit přehrávání o 10 %" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Snížit na polovinu / zdvojnásobit rychlost přehrávání" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Obnovit normální rychlost přehrávání" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Jít v seznamu přehrávání zpět/vpřed" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Odstranit vybranou položku v seznamu přehrávání" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Uložit seznam přehrávání" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Nastavit/smazat A-B body smyčky" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Přepnout opakování" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Pozastavit nebo hrát dál" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Ukončit" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Uložit pozici přehrávání a ukončit" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Přejít do režimu vyhledávání" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Přeskočit na další shodu" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Přeskočit na předchozí shodu" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Ukončit režim vyhledávání" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Procházet zvukové stopy" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Snížit/zvýšit hlasitost" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Ztlumit nebo obnovit hlasitost" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Posunout zvukovou stupu o +/- 0,1 sekundy" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Přepnout viditelnost titulků" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Procházet načtené titulky" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Posunout stupu titulků o +/- 0,1 sekundy" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Přepnout styl titulků SSA/ASS" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Posunout titulky nahoru/dolů" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Přepnout mód kompatibility poměru stran VSFilter" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Procházet stopy videa" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Snížit/zvýšit rozsah ořezávání videa s jiným poměrem stran" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Pořídit snímek obrazovky" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Pořídit snímek obrazovky bez titulků" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Pořídit snímek obrazovky tak, jak se okno zobrazuje" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Zmenšit na poloviční velikost videa" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Obnovit původní velikost videa" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Zvětšit na dvojnásobnou velikost videa" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Upravit konstrast" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Upravit jas" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Upravit svítivost (gamma)" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Upravit sytost" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Zapnout nebo vypnout odstranění prokládání" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Procházet přepsání poměru stran" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Uživatelské rozhraní" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Video" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Zvuk" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Titulky" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Přehrávání" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Posouvání" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Načíst zvukovou stopu…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Nahrát stopu videa..." + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Načíst stopu titulků…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Aby se projevilo povolení nebo zakázání dekorací na straně klienta, je nutný" +" restart aplikace" + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Přidat _složku do seznamu přehrávání" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Otevřít složku" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Přidat s_oubor do seznamu přehrávání" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Otevřít soubor" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Přidat u_místění do seznamu přehrávání" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Otevřít umístění" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "_Uložit seznam přehrávání" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "GTK frontend pro MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Tomáš Marný" diff --git a/po/da.po b/po/da.po new file mode 100644 index 0000000..d7268af --- /dev/null +++ b/po/da.po @@ -0,0 +1,1150 @@ +# Danish translation for Celluloid +# scootergrisen, 2017. +# Erased User , 2019. #zanata +# gnome-mpv , 2019. #zanata +# Erased User , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: gnome-mpv 0.15\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-20 20:48+0700\n" +"PO-Revision-Date: 2020-10-24 12:56-0400\n" +"Last-Translator: Erased User \n" +"Language-Team: Danish\n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "" +"Hvorvidt indstillingerne allerede er blevet migreret fra den forrige version" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Tilpas automatisk vinduet til videoen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Aktivér mørkt tema" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Aktivér klientsidedekorationer" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Vis flydende styring i vinduestilstand" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Skjul automatisk musemarkøren i vinduestilstand" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "Den laveste markørhastighed hvor flydende styring ikke skjules." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "Størrelsen på den døde zone hvor markørbevægelser viser styringen." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Brug spring over-knapper til at styre afspilningsliste" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Få tilvælgeren til at huske placeringen af den sidste fil" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Åbn altid et nyt vindue" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Tilvalg som skal videregives til mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Stil til mpv-konfigurationsfil" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Indlæs mpv-konfigurationsfil" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Sti til mpv-input-konfigurationsfil" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Indlæs mpv-input-konfigurationsfil" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Aktivér understøttelse af MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Aktivér understøttelse af medietaster" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Hent metadata på forhånd" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ignorer fejl ved afspilning" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Forhindr sessionsinaktivitet" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Vinduets bredde" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Vinduets højde" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Om vinduet er maksimeret eller ej" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Afspillerens lydstyrke" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Om afspilningslisten skal fortsætte i løkke når slutningen er nået" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Afspilningslistens bredde" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Vis eller skjul styringen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Vis eller skjul afspilningsliste" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "URI'en til mappen som der sidst var adgang til" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "GTK+-frontend til mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" +"Celluloid er en simpel medieafspiller som kan afspille næsten alle video- og" +" lydformater. Den understøtter afspilningslister og " +"MPRIS2-medieafspillerstyring. Celluloids design følger GNOME Human Interface" +" Guidelines men kan også tilpasses andre systemer der ikke bruger " +"klientside-dekorationer (CSD). Den er baseret på mpv-biblioteket og GTK." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Funktionaliteter:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Træk og slip afspilningsliste" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Indlæser eksterne mpv-konfigurationsfiler" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "MPRIS2 D-Bus-grænseflade" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Celluloids udviklere" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Udgivelsen indeholder følgende ændringer:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Gør det muligt at aktivere genvejsmenuen når afspilningslisten er tom." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Forhindr at størrelsen på søgelinjen konstant tilpasses pga. at størrelsen " +"på tidsstempeletiketten tilpasses efterhånden som dens værdi ændres." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Vis kun én fejldialog når der opstår et stort antal fejl hurtigt efter " +"hinanden." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Tilføj menupunkt til at åbne mapper." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Juster placeringen af brugerfladeelementer i modale dialoger i ikke-CSD-" +"tilstand for at være mere konsistent med CSD-tilstand." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Tilføj understøttelse af indlæsning af eksterne videospor." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Gør så bland afspilningsliste kan slås til/fra." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" +"Gør så piletastbindinger virker med piletaster på det numeriske tastatur." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "Listen er ikke komplet. Se git-loggen for en komplet ændringslog." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Juster lydstyrkeknappens område baseret på værdien af egenskaben volume-max." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Bibehold vinduets maksimeret tilstand på tværs af sessioner." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Bibehold løkketilstand på tværs af sessioner." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Implementer søgning i afspilningsliste." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Opdater listen over genveje i dialogen Tastaturgenveje." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Korrekt håndtering af citationstegn og undvigesekvenser i ekstra mpv-" +"tilvalg." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" +"Vis tidspunktet ved markørens placering når der holdes over søgelinjen." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"Gør '--mpv-tilvalg' udgået. Tilvalg som begynder med '--mpv-' kan i stedet " +"bruges til at indstille mpv-tilvalg. Hvis man f.eks. angiver '--mpv-" +"vf=vflip' til Celluloid, så svarer det til at angive '--vf=vflip' til mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Tilføj understøttelse af konfiguration af død zone, et område hvor " +"musebevægelser ikke får styringen til at blive vist." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "Få vinduesstørrelser til at virke korrekt med HiDPI-skærme." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Tilføj finsk oversættelse af Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Tilføj slovensk oversættelse af @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Tilføj persisk oversættelse af @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Tilføj ukrainsk oversættelse af @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Tilføj understøttelse til at vise/skjule vinduesdekorationer med mpv " +"tilvalget --border" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Tilføj menupunkt til at åbne diske" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Bloker automatisk skjulning af markør når lysstyrke-pop op er åben i " +"vinduestilstand" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Ret nedbryd med mpv 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Omdøb projektet til Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Tilføj tyrkisk oversættelse af @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Tilføj esperanto oversættelse af @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Migrer fra opengl-cb til den nye gengivelses API" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Håndter tastebindinger for det numeriske tastatur" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Håndter tastebindinger for unicode" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Viderestil medietast-hændelser til mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Tilføj dconf-nøgle til styring af markørens hastighed hvor styring skjules" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Tilføj tilvalg til undertrykkelse af afspilningsfejl" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Opdeling af Generelt-fanebladet i præferencer-dialogen." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Forbedret opførsel når afspilningslisten vises/skjules under fliselæggende " +"vindueshåndteringer" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Flyt punkterne fra programmenuen til den primære menu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Brug separat MPRIS DBus-forbindelse til hvert vindue" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Tilføj understøttelse af MPRIS-egenskaben LoopStatus" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Tilføj tilvalget --mpv-options til indstilling af vilkårlige tilvalg fra " +"kommandolinjen" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Indstil standardmappen for skærmbilleder til XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"Forbedret håndtering af --window-scale, --autofit, --autofit-larger og " +"--autofit-smaller" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Tilføj kommandolinjetilvalg for indstilling af WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "Tilføj punkt i genvejsmenuen til fjernelse af afspilningslistepunkter" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" +"Tilføj punkt i genvejsmenuen til kopiering af placering for " +"afspilningslistepunkter" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Tilføjet valgmulighed for at få spring over-knappen til at ændre " +"afspilningslistepunkter frem for kapitler." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Fået filvælgeren til at accepterer placeringer som ikke er lokale" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "Tilføj menupunkt ved højreklik for at afspille en enkelt fil i løkke" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" +"Håndter hændelser af egenskabsændring for fuldskærm og vinduesskalering" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" +"Tilføjet valgmulighed for automatisk at skjule musemarkøren i " +"vinduestilstand" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Hovedvinduet som viser programmet i funktion" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Hovedvinduet med deaktiveret skærmdisplay" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Hovedvinduet med åben afspilningsliste" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Multimedieafspiller" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Afspil film og videoer" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "Video;Film;Klip;Serier;Afspiller;DVD;TV;Disk;Album;Musik;GNOME;mpv;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Nyt vindue" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Afspiller" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Vis udgivelsesversion" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Sæt i kø" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Opret et nyt vindue" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "TILVALG" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Sæt vinduesrollen" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Opret ikke forbindelse til en instans som allerede kører" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Pause" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Afspil" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Stop" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Fremad" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Baglæns" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Næste kapitel" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Forrige kapitel" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Afspil afspilningsliste i løkke" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Bland afspilningsliste" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Fuldskærm til/fra" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Fejl" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Alle filer" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Mediefiler" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Lydfiler" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Videofiler" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Billedfiler" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Undertekstfiler" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Intet" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Ukendt" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "_Indlæs eksternt …" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Ingen disk fundet" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Fil" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Åbn …" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Åbn _mappe …" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Åbn _placering …" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Åbn _disk …" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Gem afspilningsliste" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Nyt vindue" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Afslut" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Rediger" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Præferencer" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Videospor" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Lydspor" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "_Undertekstspor" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Vis" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Styring til/fra" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Afspilningsliste til/fra" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Fuldskærm" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Hjælp" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Tastaturgenveje" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Om Celluloid" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Åbn _disk" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "Afspilningen blev afsluttet unormalt. Årsag: %s." + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Placering:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Annuller" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Åbn" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Kunne ikke anvende et eller flere MPV-tilvalg." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Kopíer placering" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Fjern" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Tilføj …" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Tilføj _mappe …" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Tilføj _placering …" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Bland" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Løkke_fil" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Afspil afspilningsliste i _løkke" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Afspilningsliste" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Afspilningslisten er tom" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Tilføj plugin" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Lua-plugins" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "JavaScript-plugins" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "C-plugins" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Kunne ikke kopiere fil fra '%s' til '%s'. Årsag: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Ingen plugins fundet" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Fjern" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "" +"Er du sikker på, at du vil fjerne dette script? Handlingen kan ikke " +"fortrydes." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Kunne ikke slette filen '%s'. Årsag: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "mpv-konfigurationsfil:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "mpv-input-konfigurationsfil:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Ekstra mpv-tilvalg:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Grænseflade" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Konfigurationsfiler" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Diverse" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Plugins" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Gem" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Præferencer" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Åbn fil" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Åbn placering" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Tilføj fil til afspilningsliste" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Tilføj placering til afspilningsliste" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Vis præferencer-dialogen" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Styring til/fra" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Afspilningsliste til/fra" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Fuldskærmstilstand til/fra" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Forlad fuldskærmstilstand" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "Skærmdisplay-tilstande normal og afspilningstid/varighed til/fra" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Vis filnavn på skærmdisplayet" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Vis forløb, forløbet tid og varighed på skærmdisplayet" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Søg 5 sekunder baglæns/fremad" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Søg præcist 1 sekund baglæns/fremad" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Søg 1 minut baglæns/fremad" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Søg præcist 5 sekunder baglæns/fremad" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Søg til forrige/næste undertekst" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Ét billede baglæns/fremad" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Søg til begyndelsen af det forrige/næste kapitel" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Langsommere/hurtigere afspilningshastighed med 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Halve/dobbelte af den nuværende afspilningshastighed" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Nulstil afspilningshastigheden til normal" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Gå baglæns/fremad i afspilningslisten" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Fjern den valgte post fra afspilningslisten" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Gem afspilningsliste" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Sæt/ryd A-B-løkkens punkter" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Uendelig løkke til/fra" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Pause eller fjern fra pause" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Afslut" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Gem nuværende afspilningsposition og afslut" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Gå i søgetilstand" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Hop til næste resultat" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Hop til forrige resultat" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Afslut søgetilstand" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Løb gennem lydspor" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Højere/lavere lydstyrke" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Mute eller slå lyden til" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Juster lydens forsinkelse med +/- 0,1 sekunder" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Undertekst synlighed til/fra" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Løb gennem tilgængelige undertekster" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Juster underteksternes forsinkelse med +/- 0,1 sekunder" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Tilsidesæt stilen af SSA/ASS-undertekster til/fra" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Flyt undertekster op/ned" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Kompatibilitetstilstand af højde-bredde-forhold for VSFilter til/fra" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Løb gennem videospor" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Lavere/højere område for pan-og-skan" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Tag et skærmbillede" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Tag et skærmbillede, uden undertekster" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Tag et skærmbillede, sådan som vinduet viser det" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Tilpas videoens størrelse til halvdelen af dens oprindelige størrelse" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Tilpas videoens størrelse til dens oprindelige størrelse" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "" +"Tilpas videoens størrelse til det dobbelte af dens oprindelige størrelse" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Juster kontrast" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Juster lysstyrke" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Juster gamma" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Juster farvemætning" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Aktivér eller deaktivér afsammenfletter" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Løb gennem tilsidesættelse af højde-bredde-forhold" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Brugerflade" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Video" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Lyd" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Undertekst" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Afspilning" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Søgning" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Indlæs lydspor …" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Indlæs videospor …" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Indlæs undertekstspor …" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Aktivering eller deaktivering af klientsidedekorationer kræver genstart før " +"ændringerne træder i kraft." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Tilføj mappe til afspilningsliste" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Åbn mappe" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Tilføj fil til afspilningsliste" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Åbn fil" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Tilføj placering til afspilningsliste" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Åbn placering" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Gem afspilningsliste" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "En GTK-frontend til MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "scootergrisen" diff --git a/po/de.po b/po/de.po new file mode 100644 index 0000000..a382bf5 --- /dev/null +++ b/po/de.po @@ -0,0 +1,1158 @@ +# German (de_DE) translations for gnome-mpv package. +# gnome-mpv +# Copyright (C) 2015 THE gnome-mpv'S COPYRIGHT HOLDER +# This file is distributed under the same license as the gnone-mpv package. +# Vincent Bermel , 2015. +# Vincent Bermel , 2019. #zanata +# gnome-mpv , 2019. #zanata +# Vincent Bermel , 2020. #zanata +# Vincent Bermel , 2021. #zanata +msgid "" +msgstr "" +"Project-Id-Version: gnome-mpv 0.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-20 20:48+0700\n" +"PO-Revision-Date: 2021-01-04 05:34-0500\n" +"Last-Translator: Vincent Bermel \n" +"Language-Team: German Translations\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "Ob Einstellungen schon von der vorherigen Version übernommen wurden" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Fenstergröße automatisch an Video anpassen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Dunkles Thema verwenden" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Kombinierte Titel-/Menüleiste (CSD)" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Ausblendende Bedienelemente in Fenstermodus" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Mauszeiger im Fenstermodus automatisch ausblenden" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"Minimale Mauszeigergeschwindigkeit unterhalb derer die Kontrollflächen " +"ausgeblendet werden." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Größe der Zone innerhalb derer Mauszeigerbewegung nicht die Bedienelemente " +"aufruft" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "" +"Klick auf Doppelpfeil: Wechsel zum nächsten Element der Wiedergabeliste" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Dateiwähler soll das zuletzt gewählte Verzeichnis beibehalten" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Immer neues Fenster öffnen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "MPV-Einstellungen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "MPV-Konfigurationsdatei" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "mpv-Konfigurationsdatei laden" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Datei mit MPV-Tastenbelegungen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "mpv-Input-Konfigurationsdatei lden" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "MPRIS-Unterstützung aktivieren" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Medientasten unterstützen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Metadaten im Voraus sammeln" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Wiedergabefehler ignorieren" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Bildschirmverdunklung/Standby/Ruhemodus unterdrücken" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Fensterbreite" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Fensterhöhe" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Ob das Fenster maximiert ist" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Lautstärke" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Ob am Ende einer Widergabeliste von vorn begonnen werden soll" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Breite der Wiedergabeliste" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Wiedergabesteuerung anzeigen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Wiedergabeliste anzeigen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "Zuletzt geöffnetes Verzeichnis" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "Eine GTK-Oberfläche für den Medienspieler mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" +"Celluloid ist ein einfach zu bedienender Medienspieler, der so gut wie alle " +"Video- und Audioformate abspielen kann. Es werden Wiedergabelisten und " +"Fernsteuerung über die MPRIS2-Schnittstelle unterstützt. Celluloid ist gemäß" +" der \"GNOME Human Interface Guidelines\", der Designrichtlinien des GNOME-" +"Projekts gestaltet, kann aber für Systeme angepasst werden, welche keine " +"clientseitigen Fensterdekorationen (CDSs) unterstützen. Die technische Basis" +" stellen mpv und GTK." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Funktionen:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Wiedergabeliste mit Drag and Drop-Unterstützung" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Laden externer mpv-Konfigurationsdateien" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "MPRIS2 D-Bus Schnittstelle" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Die Celluloid-Entwickler" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Diese Veröffentlichungen umfasst die folgenden Änderungen:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "Anzeige des Kontextmenüs bei leerer Wiedergabeliste ermöglichen" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Größe der Wiedergabe-Fortschrittsleiste wird unabhängig verschieden lang " +"angezeigter Zahlenwerte konstant gehalten." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Im Falle mehrerer schnell aufeinander folgender Fehler wird nur eine Meldung" +" angezeigt." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Menüeintrag zum Öffnen von Ordnern hinzufügen" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Für den Nicht-CSD-Modus wurde die Anordnung der Elemente in modalen " +"Dialogfenstern an die des CSD-Modus angepasst." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Unerstützung für das Laden externer Videospuren." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Zufällige Wiedergabe schnellschaltbar." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "Tastenkombinationen funktionieren auch mit Tasten des Nummernfeldes." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" +"Diese Liste ist unvollständig. Eine detaillierte Übersicht bietet das " +"Changelog." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Die Spanne des Lautstärkereglers kann über den Wert volume-max beeinflusst " +"werden." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Fenstermaximierungsstatus wird über Sitzungen hinweg beibehalten." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Wiederholungspräferenzen wird über Sitzungen hinweg beibehalten." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Suche in Wiedergabelisten implementiert." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Liste der Tastenkombinationen aktualisiert." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Korrektes Interpretieren von Escape-Sequenzen und Anführungszeichen in " +"Extra-MPV-Optionen." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "Anzeige der Zeit, wenn der Mauszeiger über die Suchbar geführt wird." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"Die Option der Kommandozeilenschnittstelle '--mpv-options' ist als veraltet " +"markiert. Optionen beginnend mit 'mpv-' können stattdessen verwendet werden," +" um mpv-Optionen zu verwenden. So entspricht die Celluloid-Option '--mpv-" +"vf=vflip' der mpv-Option '--vf=vflip'." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Es kann eine tote Zone angegeben werden, innerhalb derer Mauszeigerbewegung " +"nicht zur Anzeige der Kontrollflächen führt." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "Korrigierte Fenstergröße für HiDPI-Bildschirme." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Finnische Übersetzung beigesteuert von Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Slowenische Übersetzung beigesteuert von @bertonika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Persische Übersetzung von @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Ukrainische Übersetzung von@vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Möglichkeit Fensterdekorationen über die mpv-Option --border ein- und " +"auszublenden" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Menüeintrag zum Öffnen von Datenträgern" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Ausblenden des Mauszeigers bei offenem Lautstärke-Popup im Fenstermodus " +"blockieren" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Absturz mit mpv 0.30 behoben" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Projekt umbenannt in Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Türkische Übersetzung von @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Esperanto-Übersetzung von @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Migration von opengl-cb zur neuen Render-API" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "" +"Unterstützung von Tastenkombinationen unter Einbeziehung des Ziffernblocks" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Unterstützung von UnicodeTastenkombinationen" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Medientasten-Eingaben an mpv übergeben" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"dconf key für Regelung der minimalen Mauszeigergeschwindigkeit unterhalb " +"derer die Kontrollflächen ausgeblendet werden." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Option zum Unterdrücken von Wiedergabefehlern" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Der \"Allgemein\"-Tab in den Einstellungen wurde aufgeteilt." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Das Verhalten des Ein-/Aus-Schalters für Wiedergabelisten wurde im " +"Zusammenhang mit Tiling-Fenstermanagern verbessert." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "" +"Im Zuge der Abschaffung des GNOME-Anwendungsmenüs wurde dieses in das " +"Hauptmenü integriert." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Separate MPRIS DBus-Verbindung für jedes Fenster" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Unterstützung für MPRIS property LoopStatus" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Neue Kommondozeilenoption zum Setzen beliebiger MPV-Optionen: --mpv-options" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "XDG_PICTURES_DIR ist nun standardmäßiger Screenshot-Speicherort." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"Verbesserte Handhabung der Optionen --window-scale, --autofit, --autofit-" +"larger, and --autofit-smaller" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Neue Kommandozeilenoption zum Setzen der WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "Neuer Kontextmenüeintrag zum Entfernen von Wiedergabelisten-Elementen" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "Neuer Kontextmenüeintrag zum Kopieren von Wiedergabelisten-Elementen" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Neue Option, die es erlaubt, das Verhalten der \"Überspringen\"-Schaltfläche" +" zu verändern. Zur Wahl stehen Kapitelwechsel und Wechsel zwischen " +"Wiedergabelisten-Elementen." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Der Dateiwähler akzeptiert nun auch nicht-lokale Orte" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "Neues Rechtsklickmenü um einzelne Datei in Schleife zu spielen" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" +"Korrekte Handhabung von property change events für den Vollbildmodus und bei" +" Fenstersklaierung" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "Mauszeiger im Fenstermodus automatisch ausblenden" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Das Hauptfenser von Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Das Hauptfenster ohne CSD-Titelleiste" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Das Hauptfenster mit Wiedergabeliste" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Multimediaspieler" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Filme und Videos abspielen" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "Video;Movie;Film;Clip;Serie;Spieler;DVD,TV;Album;Musik;GNOME;mpv" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Neues Fenster" + +#: src/celluloid-application.c:495 +#, fuzzy +msgid "Playing" +msgstr "Wiedergabe" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Release-Version anzeigen" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "In Warteschlange aufnehmen" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Neues Fenster aufrufen" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "OPTIONS" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Fensterart festlegen" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Nicht mit einer bereits laufenden Instanz verbinden" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Pause" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Abspielen" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Stoppen" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Vorspulen" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Zurückspulen" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Weiterspringen" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Zurückspringen" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Wiedergabeliste in Schleife spielen" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Zufällige Wiedergabe" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Vollbild" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Fehler" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Alle Dateien" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Mediendateien" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Audiodateien" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Videodateien" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Bilddateien" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Untertiteldateien" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Keine" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Originalspur" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "_Importieren" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Kein Datenträger gefunden" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Datei" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Öffnen" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "_Ordner öffnen" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "_Ort öffnen" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "_Datenträger öffnen" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "Wiedergabeliste _speichern" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Neues Fenster" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "B_eenden" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Bearbeiten" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Einstellungen" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Videospur" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Tonspur" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "_Untertitel" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Ansicht" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "Wiedergabe_steuerung ein/aus" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Wiedergabeliste ein/aus" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Vollbild" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Hilfe" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Tastenkürzel" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Über Celluloid" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "_Datenträger öffnen" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "Wiedergabe wurde abgebrochen. Grund: %s." + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Adresse (lokal oder Web):" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Abbrechen" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "Ö_ffnen" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "MPV-Optionen konnten nicht angewendet werden." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "Ort _kopieren" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Entfernen" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Hinzufügen" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Ordner _hinzufügen" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "_Verzeichnis oder URL hinzufügen" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Zufällige Wiedergabe" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "_Datei in Schleife spielen" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "_Wiedergabeliste in Schleife spielen" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Wiedergabeliste" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Wiedergabeliste ist leer." + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Plugin hinzufügen" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Lua-Plugins" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "JavaScript-Plugins" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "C-Plugins" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Datei konnte nicht von '%s' nach '%s' kopiert werden. Grund: %s." + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Keine Plugins gefunden" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Entfernen" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "Wollen Sie dieses Skript unwiderruflich entfernen?" + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Datei '%s' konnte nicht gelöscht werden. Grund: %s." + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "mpv-Konfigurationsdatei" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "mpv-Input-Konfigurationsdatei" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Eingabe zusätzlicher mpv-Optionen:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Schnittstelle" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Konfigurationsdateien" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Sonstiges" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Plugins" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Speichern" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Einstellungen" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Öffnen" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Adresse öffnen" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Datei zur Widergabeliste hinzufügen" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Ort zur Wiedergabeliste hinzufügen" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Einstellungen anzeigen" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Wiedergabesteuerung ein/aus" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Wiedergabeliste ein/aus" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Vollbild" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Vollbildmodus verlassen" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "Wiedergabeposition einblenden/ausblenden" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Dateiname kurzzeitig einblenden" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Wiedergabeposition kurzzeitig einblenden" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "15 Sekunden zurück/vorwärts springen" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Eine Sekunde zurück/vorwärts springen" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Eine Minute zurück/vorwärts springen" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "5 Sekunden zurück/vorwärts springen" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Zum vorherigen/nächsten Untertitel springen" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Einzelnen Frame zurück/nach vorne springen" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Zum vorherigen/nächsten Kapitel springen" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Wiedergabegeschwindigkeit um 10% verringern/erhöhen" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Wiedergabegeschwindigkeit halbieren/verdoppeln" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Wiedergabegeschwindigkeit auf Normalwert zurücksetzen" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Vorheriger/nächster Titel der Wiedergabeliste" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Ausgewählten Titel aus Wiedergabeliste entfernen" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Wiedergabeliste speichern" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Loop-Begrenzungen setzen/entfernen" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Endloses Loopen aktivieren" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Pause oder Fortsetzen" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Beenden" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Wiedergabeposition merken und beenden" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Suchmodus starten" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Zur nächsten Übereinstimmung" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Zur vorigen Übereinstimmung" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Suchmodus beenden" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Zwischen verfügbaren Tonspuren springen" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Lautstärke verringern/erhöhen" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Stummschalten" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Tonspur in Schritten von 0.1 Sekunden vor/zurück verschieben" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Untertitel anzeigen/ausblenden" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Zwischen verfügbaren Untertiteln springen" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Untertitel in Schritten von 0.1 Sekunden verschieben" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "ASS-Untertitelstil erzwingen" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Untertitel höher/tiefer anzeigen" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Streckungskorrektor für Untertiteldarstellung ein/aus" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Zwischen verfügbaren Videospuren springen" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Videoformat schrittweise einpassen (Pan & Scan)" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Bildschirmfoto aufnehmen" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Bildschirmfoto ohne Untertitel aufnehmen" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Foto des Fensterinhalts aufnehmen" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Halbe Videogröße" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Ursprüngliche Videogröße" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Doppelte Videogröße" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Kontrast anpassen" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Helligkeit anpassen" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Gammawert anpassen" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Farbsättigung anpassen" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Deinterlacing (de)aktivieren" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Seitenverhältnis umschalten" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Benutzeroberfläche" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Videowiedergabe" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Audiowiedergabe" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Untertitel" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Wiedergabesteuerung" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Wiedergabeposition" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Audiospur laden..." + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Videospur wird geladen..." + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Untertitel laden..." + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "Die Änderung der Fensterdekoration erfordert einen Neustart." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Ordner zur Widergabeliste hinzufügen" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Ordner öffnen" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Datei zur _Wiedergabeliste hinzufügen" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Datei öffnen" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Verzeichnis oder URL zur Wiedergabeliste hinzufügen" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Adresse öffnen" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Wiedergabeliste speichern" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "Eine GTK-Oberfläche für MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Vincent Bermel" diff --git a/po/eo.po b/po/eo.po new file mode 100644 index 0000000..8cbf8ce --- /dev/null +++ b/po/eo.po @@ -0,0 +1,1120 @@ +# Tirifto , 2019. #zanata +# gnome-mpv , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: celluloid\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-07-07 00:28+0700\n" +"PO-Revision-Date: 2020-06-23 10:42-0400\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Esperanto\n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "Ĉu la agordoj jam transmetiĝis de la antaŭa eldono" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Aŭtomate aligrandigi fenestron por esti samgranda kiel video" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Ŝalti malhelan etoson" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Ŝalti klient-flankajn ornamaĵojn" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Uzi surfilmajn regilojn en fenestra reĝimo" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "Minimuma rapido de musmontrilo je kiu montriĝos surfilmaj regiloj." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Uzi preterpasajn butonojn por regi legliston" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Ĉiam malfermi novan fenestron" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Opcioj transdonotaj al mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Dosierindiko de la agorda dosiero de mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Dosierindiko de la eniga agorda dosiero de mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Ŝalti subtenon de MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Ŝalti subtenon de aŭdovidaj klavoj" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Antaŭpeti metadatumojn" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Malatenti erarojn de legado" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Larĝo de la fenestro" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Alto de la fenestro" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Ĉu la fenestro estas maksimumigita" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Laŭteco de la legilo" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Ĉu aŭ ne ripeti kiam la fino de la leglisto estas atingota" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Larĝo de la leglisto" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Montri aŭ ne montri la regilojn" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Montri aŭ ne montri la legliston" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "URI de la laste atingita dosierujo" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celuloido" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "Fasado per GTK+ por mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" +"Celuloido estas simpla plurmedia legilo, kiu povas legi preskaŭ ĉiuj videaj " +"kaj sonaj formatoj. Ĝi regas leglistojn kaj plurmedilegilajn regilojn laŭ " +"MPRIS2. La fasono de Celuloido laŭas la hominterfacajn gvidliniojn de GNOME," +" sed ankaŭ povasadaptiĝi por aliaj sistemoj, kiuj ne uzas klientflankajn " +"ornamaĵojn (KFO). Ĝi baziĝas sur la bibliotekoj mpv kaj GTK." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Funkcioj:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Ŝovmeta leglisto" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Enlegado de eksteraj agordaj dosieroj de mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "Interfaco de « MPRIS2 D-Bus »" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "La programistoj de Celuloido" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Ĉi tiu eldono enhavas la jenajn ŝanĝojn:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" +"La listigo estas nekompleta. Uzu la komandon `git log` por plena ŝanĝaro." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Aldoni perslingvigon de @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Aldoni ukrajnlingvigon tradukon de @vl-nx" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Aldoni regadon por kaŝadon/malkaŝadon de fenestraj ornamaĵoj per la mpv-" +"opcio --border" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Aldoni menueron por malfermi lumdiskojn" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Embarasi aŭtomatan kaŝiĝon de kursuro dum ŝanĝo de laŭteco en fenestra " +"reĝimo" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Ripari kraŝon kun mpv-0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Alinomi la projektojn Celuloido" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Aldoni turklingvigon de @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Aldoni esperantlingvigon de @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Migri de opengl-cb al la nova API" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Trakti ciferplatajn klavkombinojn" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Trakti unikodajn klavkombinojn" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Plusendi eventojn de aŭdovidaj klavoj al mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Aldonado de dconf-ŝlosilo por regi musmontrilan rapidon de regila kaŝado" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Aldoni opcion por silentigi lego-erarojn" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Dividi la Ĝeneralan langeton en la agorda interagujo" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Plibonigi konduton dum baskuligo de leglisto en kahelaj fenestraj aranĝiloj" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Movi erojn de aplikaĵa menuo al ĉefmenuo" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Uzi apartan konekton de « MPRIS DBus » por ĉiu fenestro" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Aldoni subtenon por eco « LoopStatus » de MPRIS" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Aldoni opcion « --mpv-options » por agordado de ajnaj opcioj de mpv de la " +"komandlinio" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Agordi la implicitan ekrankopian dosierujon al XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"Plibonigi traktadon de « --window-scale », « --autofit », « --autofit-" +"larger », kaj « --autofit-smaller »" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Aldoni komandlinian opcion por agordi econ « WM_ROLE »" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "Aldoni kuntekstan menuon por forigado de leglisteroj" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "Aldoni kuntekstan menueron por kopiado de leglistaj indikoj" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Aldoni opcion por ŝanĝi leglisterojn anstataŭ ĉapitrojn per preterpasaj " +"butonoj" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Akceptigi forajn lokojn al la dosiera elektilo" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "Aldoni dekstraklakan menueron por ripetado de unu dosiero" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "Trakti okazojn de ecaj ŝanĝoj por « fullscreen » kaj « window-scale »" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "Aldoni opcion por aŭtomata kaŝo de musmontrilo en fenestra reĝimo" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "La ĉefa fenestro montras la funkciantan aplikaĵon" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "La ĉefa fenestro kun malŝaltitaj klient-flankaj ornamaĵoj" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "La ĉefa fenestro kun malfermita leglisto" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Plurmedia legilo" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Legi filmojn kaj videojn" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "Disko;DVD;Filmo;GNOME;KD;mpv;Muziko;Seriaĵo;Televido;TV;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Nova fenestro" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Leganta" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Montri eldonon" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Envicigi" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Krei novan fenestron" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "OPCIOJ" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Agordi rolon de la fenestro" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Ne konekti al jama rulaĵo" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Paŭzigi" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Legi" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Haltigi" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Pluen" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Reen" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Sekva ĉapitro" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Antaŭa ĉapitro" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Ripetadi legliston" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Baskuligi tutekranan reĝimon" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Eraro" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Ĉiuj dosieroj" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Aŭdovidaj dosieroj" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Sonaj dosieroj" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Filmaj dosieroj" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Bildaj dosieroj" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Subtekstaj dosieroj" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Neniu" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Nekonata" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "En_legi eksteran…" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Neniu lumdisko trovita" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Dosiero" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Malfermi…" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Malfermi _lokon…" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Malfermi lum_diskon…" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Konservi legliston" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Nova fenestro" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Fini" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "R_edakti" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Agordoj" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "Variaĵo de _filmo" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "Variaĵo de _sono" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "Variaĵo de s_ubteksto" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Vido" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Baskuligi regilojn" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "Baskuligi _legliston" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Tutekrana reĝimo" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Helpo" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Klavkombinoj" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Pri Celuloido" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Malfermi lum_diskon" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "Legado ĉesis malnormale. Kialo: %s" + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Loko:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Nuligi" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Malfermi" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Malsukcesis apliki unu aŭ pli da MPV-opcioj" + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Kopii lokon" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Forigi" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Aldoni…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Aldoni _lokon…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Miksi" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Ripedati _dosieron" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Ripetadi _legliston" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Leglisto" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Leglisto malplenas" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Aldoni kromprogramon" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Kromprogramoj en Lua" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "Kromprogramoj en Ĝavoskripto" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "Kromprogramoj en C" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Malskucesis kopii dosieron de « %s » al « %s ». Kialo: « %s »" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Neniuj kromprogramoj troviĝis" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Forigi" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "Ĉu vi certe volas forigi ĉi tiun skripton? Tiu agon ne eblos malfari." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Malsukcesis forigi dosieron « %s ». Kialo: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Fasado" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Agordaj dosieroj" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Diversaj" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Kromprogramoj" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Konservi" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Agordoj" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Malfermi dosieron" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Malfermi lokon" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Aldoni dosieron al leglisto" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Aldoni lokon al leglisto" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Montri agordan interagujon" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Baskuligi regilojn" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Baskuligi legliston" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Baskuligi tutekranan reĝimon" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Forlasi tutekranan reĝimon" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "Baskuligi statojn inter normala kaj tempomontra" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Montri dosiernomon en la surfilma regilaro" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Montri progreson, pasintan tempon, kaj daŭron en la surfilma regilaro" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Tempiri 5 sekundojn reen/pluen" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Precize tempiri 1 sekundon reen/pluen" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Tempiri 1 minuton reen/pluen" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Precize tempiri 5 sekundojn reen/pluen" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Tempiri al la antaŭa/sekva subteksto" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Tempiri unu filmeron reen/pluen" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Tempiri al la komenco de la lasta/sekva ĉapitro" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Alkrementi/dekrementi legrapidon je 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Du onigi/obligi la nunan legrapidon" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Restarigi norman legrapidon" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Iri pluen/antaŭen en la leglist" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Forigi elektitan leglisteron" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Konservi legliston" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Meti/forigi limojn A-B de ripetado" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Baskuligi senfinan ripetadon" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Paŭzigi aŭ malpaŭzigi" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Fini" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Konservi nunan templokon kaj fini" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Komenci tempiran reĝimon" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Iri al la sekva trafo" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Iri al la antaŭa trafo" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Fini tempiran reĝimon" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Cikligi tra sontrakoj" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "(Mal)pliigi laŭtecon" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "(Mal)silentigi" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Alĝustigi prokraston de sono po 0,1 sekundoj" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Baskuligi videblecon de subtekstoj" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Cikligi tra disponeblaj subtekstoj" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Alĝustigi prokraston de subtekstoj po 0,1 sekundoj" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Baskuligi transpason de stilo de SSA/ASS-subtekstoj" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Movi subtekstojn supren/suben" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Baskuligi reĝimon de formata kongrueco kun VSFilter" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Cikligi tra videaj trakoj" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "(Mal)pliigi amplekson de glitado" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Fari ekrankopion" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Fari ekrankopion, sen subtekstoj" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Fari ekrankopion tian, kian montras la fenestro" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Aligrandigi filmon al duono de originala grando" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Aligrandigi filmon al originala grando" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Aligrandigi filmon al duoblo de originala grando" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Alĝustigi kontraston" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Alĝustigi helecon" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Alĝustigi gamaon" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Alĝustigi saturecon" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Aktivigi aŭ malaktivigi malinterplektilon" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Cikligi transpason de bildformato" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Fasado" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Filmo" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Sono" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Subteksto" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Legado" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Tempiro" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Ŝargi sonan trakon…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Ŝargi subtekstan trakon…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"(Mal)ŝalto de klient-flankaj ornamaĵoj postulas restartigon por efektiviĝi" + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Aldoni dosieron al leglisto" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Malfermi dosieron" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Aldoni lokon al leglisto" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Malfermi lokon" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Konservi legliston" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "Fasado por MPV per GTK" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Tirifto" diff --git a/po/es.po b/po/es.po new file mode 100644 index 0000000..1298f91 --- /dev/null +++ b/po/es.po @@ -0,0 +1,1177 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# Toni Estevez , 2019. #zanata +# gnome-mpv , 2019. #zanata +# Toni Estevez , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-20 20:48+0700\n" +"PO-Revision-Date: 2020-12-25 05:49-0500\n" +"Last-Translator: Toni Estevez \n" +"Language-Team: Spanish\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "Importar la configuración de una versión anterior" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Redimensionar automáticamente la ventana al tamaño del vídeo" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Activar el tema oscuro" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Activar las decoraciones del lado del cliente" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Usar controles flotantes en el modo ventana" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Oculta automáticamente el cursor del ratón en el modo ventana" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"La velocidad mínima del cursor a la que se ocultarán los controles " +"flotantes." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Tamaño de la zona muerta en la que el movimiento del cursor no causará que " +"se muestren los controles." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Usar los botones de salto para controlar la lista de reproducción" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" +"Hacer que el selector de archivos recuerde la ubicación del último archivo." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Abrir siempre una ventana nueva" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Opciones extra para mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Archivo de configuración de mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Cargar el archivo de configuración de mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Archivo de configuración de la entrada de mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Cargar el archivo de configuración de entrada de mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Activar la compatibilidad con MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Activar las teclas multimedia" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Precargar los metadatos" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ignorar los errores de reproducción" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Desactivar la suspensión de la sesión" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Anchura de la ventana" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Altura de la ventana" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Maximizar la ventana" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Volumen del reproductor" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Reproducir en bucle la lista de reproducción" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Anchura de la lista de reproducción" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Mostrar los controles" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Mostrar la lista de reproducción" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "Ubicación de la última carpeta accedida" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "Interfaz GTK para el reproductor mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" +"Celuloide es un reproductor multimedia sencillo que puede reproducir " +"prácticamente cualquier formato de vídeo y audio. Admite listas de " +"reproducción y controles de reproducción MPRIS2. El diseño de Celluloid " +"sigue las guías de interfaz de usuario de GNOME, pero también puede " +"adaptarse a otros entornos que no usan decoraciones del lado del cliente " +"(CSD). Se basa en las bibliotecas mpv y GTK." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Características:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Permite arrastrar y soltar entradas en la lista de reproducción" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Carga archivos de configuración de mpv externos" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "Interfaz D-Bus de MPRIS2" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Los desarrolladores de Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Esta versión contiene los cambios siguientes:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Permite activar el menú contextual cuando la lista de reproducción está " +"vacía." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Evita el cambio constante del tamaño de la barra de búsqueda debido al " +"cambio de tamaño de la etiqueta de la marca de tiempo a medida que cambia su" +" valor." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Solo muestra un diálogo de error único cuando se produce un gran número de " +"errores en una sucesión rápida." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Añade un elemento al menú para abrir carpetas." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Ajusta la posición de los elementos de la interfaz de usuario de los " +"diálogos modales en el modo no CSD para ser más coherente con el modo CSD." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Añade la posibilidad de cargar pistas de vídeo externas." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Permite alternar la mezcla de las listas de reproducción." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" +"Hace que las combinaciones de teclas funcionen con las teclas de flecha del " +"teclado numérico." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" +"Este listado está incompleto. Consulte el registro de Git para obtener un " +"registro de cambios completo." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Ajusta el rango del botón de volumen basándose en el valor de la propiedad " +"«volumen máximo»." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Recuerda el estado de maximización de la ventana." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Recuerda el estado de la reproducción en bucle." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Implementa la búsqueda en la lista de reproducción." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Actualiza la lista de atajos en el diálogo de los atajos de teclado." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Maneja correctamente las comillas y las secuencias de escape en las opciones" +" extra de mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" +"Muestra el tiempo en la posición del puntero al situarlo en la barra de " +"búsqueda." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"Desaprueba «--mpv-options». En su lugar, para configurar opciones de mpv, se" +" pueden usar opciones que empiecen por «--mpv-». Por ejemplo, pasar «--mpv-" +"vf=vflip» a Celulloid equivale a pasar «--vf=vflip» a mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Añade apoyo para configurar una zona muerta, un área en la que el movimiento" +" del ratón no causará que se muestren los controles." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" +"Ajusta el tamaño de la ventana correctamente en pantallas de alta densidad " +"(HiDPI)." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Añade la traducción al finlandés hecha por Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Añade la traducción al esloveno hecha por @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Añade la traducción al persa hecha por danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Añade la traducción al ucraniano hecha por vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Añade compatibilidad para mostrar/ocultar las decoraciones de la ventana " +"usando la opción de mpv --border" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Añade un elemento al menú para abrir discos" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Bloquea la ocultación automática del cursor cuando se abre la ventana " +"emergente del volumen en el modo ventana" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Corrige el bloqueo con la versión 0.30 de mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Cambia el nombre del proyecto a Celulloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Añade la traducción al turco hecha por TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Añade la traducción al esperanto hecha por F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Cambia de opengl-cb a la nueva API de representación" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Maneja las combinaciones de teclas del teclado numérico" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Maneja las combinaciones de teclas de Unicode" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Reenvía los eventos de las teclas multimedia a mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Añade una clave de dconf para controlar la velocidad del cursor a la que se " +"ocultan los controles" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Añade una opción para suprimir los errores de reproducción" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Divide la pestaña General en el diálogo de preferencias" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Mejora el comportamiento al mostrar u ocultar la lista de reproducción en " +"los gestores de ventana de mosaico" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Traslada los elementos del menú de aplicación al menú principal" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Usa una conexión DBus de MPRIS separada para cada ventana" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Añade compatibilidad con la propiedad LoopStatus de MPRIS" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Añade la opción --mpv-options para configurar opciones arbitrarias de mpv " +"desde la línea de órdenes" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "" +"Configura como carpeta de capturas de pantalla predeterminada la carpeta " +"XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"Mejora el manejo de las opciones --window-scale, --autofit, --autofit-larger" +" y --autofit-smaller" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Añade una opción a la línea de órdenes para configurar WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" +"Añade un elemento al menú contextual para eliminar elementos de la lista de " +"reproducción" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" +"Añade un elemento al menú contextual para copiar la ubicación de los " +"elementos de la lista de reproducción" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Añade una opción para que los botones de salto seleccionen las entradas de " +"la lista de reproducción en lugar de los capítulos" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Hace que el selector de archivos acepte ubicaciones no locales" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" +"Añade una entrada en el menú contextual para reproducir en bucle un único " +"archivo" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" +"Maneja los eventos de cambio de propiedad para la pantalla completa y la " +"escala de la ventana" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" +"Añade una opción para ocultar automáticamente el cursor del ratón en el modo" +" ventana" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "La ventana principal con la aplicación en acción" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "" +"La ventana principal con las decoraciones del lado del cliente desactivadas" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "La ventana principal con la lista de reproducción abierta" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Reproductor multimedia" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Reproduce películas y vídeos" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "" +"vídeo;película;filme;clip;serie;reproductor;DVD;TV;disco;álbum;música; " +"GNOME;mpv;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Ventana nueva" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "En reproducción" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Mostrar la versión" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "A la cola" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Crear una nueva ventana" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "OPCIONES" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Configurar el comportamiento de la ventana" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "No conectar a una instancia que ya se esté ejecutando" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Pausar" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Reproducir" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Detener" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Avanzar" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Rebobinar" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Capítulo siguiente" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Capítulo anterior" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Lista de reproducción en bucle" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Barajar la lista de reproducción" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Activar/desactivar la pantalla completa" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Error" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Todos los archivos" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Archivos multimedia" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Archivos de audio" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Archivos de vídeo" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Archivos de imagen" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Archivos de subtítulos" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Ninguna" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Desconocida" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "_Abrir..." + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "No se ha encontrado ningún disco" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Archivo" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Abrir..." + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Abrir una _carpeta..." + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Abrir una _ubicación..." + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Abrir un _disco..." + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Guardar la lista de reproducción..." + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "Ventana _nueva" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Salir" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Editar" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Preferencias" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "Pista de _vídeo" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "Pista de _audio" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "Pista de _subtítulos" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Vista" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "Mostrar/ocultar los _controles" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "Mostrar/ocultar la _lista de reproducción" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Pantalla completa" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "Ay_uda" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "Atajos de _teclado" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Acerca de Celluloid" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Abrir un _disco" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "La reproducción ha terminado de forma anómala. Razón: %s." + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Ubicación:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Cancelar" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Abrir" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "No se han podido aplicar una o más opciones de mpv." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Copiar la ubicación" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Borrar" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Añadir..." + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Añadir una _carpeta..." + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Añadir una _ubicación..." + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Barajar" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr " _Archivo en bucle" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "_Lista de reproducción en bucle" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Lista de reproducción" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "La lista de reproducción está vacía" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Añadir un complemento" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Complementos Lua" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "Complementos JavaScript" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "Complementos C" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "No se ha podido copiar el archivo de «%s» a «%s». Razón: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "No se han encontrado complementos" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Eliminar" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "" +"¿Seguro que quiere eliminar este guion? Esta acción no se puede deshacer." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "No se ha podido eliminar el archivo «%s». Razón: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "Archivo de configuración de mpv:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "Archivo de configuración de la entrada de mpv:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Opciones extra de mpv:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Interfaz" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Archivos de configuración" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Miscelánea" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Complementos" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Guardar" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Preferencias" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Abrir un archivo" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Abrir una ubicación" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Añadir un archivo a la lista de reproducción" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Añadir una ubicación a la lista de reproducción" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Mostrar el diálogo de preferencias" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Mostrar/ocultar los controles" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Mostrar/ocultar la lista de reproducción" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Activar/desactivar el modo de pantalla completa" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Salir del modo de pantalla completa" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "Mostrar/ocultar en pantalla el tiempo de reproducción y la duración" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Mostrar en pantalla el nombre del archivo" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Mostrar en pantalla el progreso, el tiempo transcurrido y la duración" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Saltar 5 segundos hacia atrás/adelante" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Saltar exactamente 1 segundo hacia atrás/adelante" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Saltar 1 minuto hacia atrás/adelante" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Saltar exactamente 5 segundos hacia atrás/adelante" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Saltar a los subtítulos anteriores/siguientes" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Retroceder/avanzar un solo fotograma" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Saltar al principio del capítulo anterior/siguiente" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Disminuir/aumentar la velocidad de reproducción un 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Reducir a la mitad o duplicar la velocidad de reproducción" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Restablecer la velocidad de reproducción" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Retroceder/avanzar en la lista de reproducción" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Borrar el elemento seleccionado de la lista de reproducción" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Guardar la lista de reproducción" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Fijar/borrar los puntos de bucle A-B" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Activar/desactivar la reproducción en bucle" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Pausar/reanudar" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Salir" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Guardar la posición de reproducción actual y salir" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Entrar en el modo de búsqueda" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Ir a la coincidencia siguiente" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Ir a la coincidencia anterior" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Salir del modo de búsqueda" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Seleccionar la pista de audio siguiente" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Disminuir/aumentar el volumen" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Silenciar/activar el sonido" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Ajustar el retraso del audio en +/- 0,1 segundos" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Mostrar/ocultar los subtítulos" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Seleccionar los subtítulos siguientes" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Ajustar el retraso de los subtítulos en +/- 0,1 segundos" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Activar/desactivar la anulación del estilo de los subtítulos SSA/ASS " + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Mover los subtítulos arriba/abajo" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Activar/desactivar el modo de compatibilidad de aspecto de VSFilter" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Seleccionar la pista de vídeo siguiente" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Disminuir/aumentar el rango de reencuadre (pan and scan)" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Tomar una captura de pantalla" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Tomar una captura de pantalla, sin subtítulos" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Tomar una captura de pantalla, tal como se muestra en la ventana" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Redimensionar el vídeo a la mitad de su tamaño original" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Redimensionar el vídeo a su tamaño original" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Redimensionar el vídeo al doble de su tamaño original" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Ajustar el contraste" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Ajustar el brillo" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Ajustar la correcció gamma" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Ajustar la saturación" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Activar/desactivar el desentrelazado" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Seleccionar la relación de aspecto siguiente" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Interfaz de usuario" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Vídeo" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Audio" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Subtítulos" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Reproducción" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Búsqueda" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Cargar una pista de audio..." + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Cargar una pista de vídeo..." + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Cargar una pista de subtítulos..." + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Para activar o desactivar las decoraciones del lado del cliente, es " +"necesario reiniciar la aplicación." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Añadir una carpeta a la lista de reproducción" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Abrir una carpeta" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Añadir un archivo a la lista de reproducción" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Abrir un archivo" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Añadir una ubicación a la lista de reproducción" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Abrir una ubicación" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Guardar la lista de reproducción" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "Una interfaz GTK para el reproductor mpv" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" +"Toni Estevez, toni.estevez@gmail.com>\n" +"Sergio D. Márquez, marquez.sergio.d@gmail.com" diff --git a/po/eu.po b/po/eu.po new file mode 100644 index 0000000..1776b8e --- /dev/null +++ b/po/eu.po @@ -0,0 +1,1156 @@ +# Asier Iturralde Sarasola , 2021. #zanata +msgid "" +msgstr "" +"Project-Id-Version: celluloid\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-10-09 22:16+0700\n" +"PO-Revision-Date: 2021-01-23 01:00-0500\n" +"Last-Translator: Asier Iturralde Sarasola \n" +"Language-Team: Basque\n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "Ezarpenak aurreko bertsiotik jada migratu diren ala ez." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Aldatu leihoaren tamaina automatikoki bideora doitzeko" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Gaitu itxura iluna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Gaitu bezeroaren aldeko apaingarriak" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Gaitu kontrol mugikorrak leiho moduan" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Ezkutatu saguaren kurtsorea automatikoki leiho moduan" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"Kurtsorearen gutxieneko ze abiaduratan bistaratuko diren kontrol mugikorrak." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Kurtsorearen mugimenduek kurtsorea bistaratzea eragiten ez duten eremu " +"hilaren tamaina." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Erabili saltatzeko botoiak erreprodukzio-zerrenda kontrolatzeko" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Fitxategi-hautatzaileak gogora dezala azken fitxategiaren kokalekua." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Ireki leiho berria beti" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "mpv-ri pasako zaizkion aukerak" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "mpv konfigurazio-fitxategiaren bidea" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Kargatu mpv konfigurazio-fitxategia" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "mpv-ren sarrerako konfigurazio-fitxategiaren bidea" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Kargatu mpv-ren sarrerako konfigurazio-fitxategia" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Gaitu MPRIS euskarria" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Gaitu multimedia teklen euskarria" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Eskuratu aurrez metadatuak" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Egin ez ikusi erreprodukzio-erroreei" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Eragotzi saioa ixtea" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Leihoaren zabalera" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Leihoaren altuera" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Leihoa maximizatua dagoen ala ez" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Erreproduzigailuaren bolumena" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Erreprodukzio-zerrendaren amaierara iristean begizta egin ala ez" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Erreprodukzio-zerrendaren zabalera" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Erakutsi kontrolak ala ez" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Erakutsi erreprodukzio-zerrenda ala ez" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "Atzitutako azken karpetaren URIa" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "mpv-ren GTK+ interfazea" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" +"Celluloid multimedia erreproduzigailu sinple bat da, eta bideo eta audio " +"formatu ia guztiak erreproduzitu ditzake. Erreprodukzio-zerrenda eta MPRIS2 " +"multimedia erreproduzigailu kontrolen euskarria du. Celluloiden diseinuak " +"GNOMEren Gizakientzako interfaze gidalerroak jarraitzen ditu, baina " +"bezeroaren aldeko apaingarriak (CSD) erabiltzen ez dituzten beste " +"sistemetara egokitu daiteke. mpv liburutegian eta GTK-n oinarritua dago." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Ezaugarriak:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Erreprodukzio-zerrendak arrastatu eta jaregitea" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Kanpoko mpv konfigurazio-fitxategiak kargatzea" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "MPRIS2 D-Bus interfazea" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Celluloiden garatzaileak" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Bertsio honek ondorengo aldaketak ditu:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Erreprodukzio-zerrenda hutsik dagoenean laster-menua aktibatzeko aukera " +"eman." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Denbora-zigiluaren balioa aldatzean bere etiketaren tamaina aldatzearen " +"ondorioz bilaketa-barraren tamaina etengabe tamainaz aldatzea eragotzi." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Errore kopuru handi bat azkar batean ematen direnean elkarrizketa-koadro " +"bakarra erakutsi." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Karpetak irekitzeko menuko elementua gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Elkarrizketa-koadro modalen interfazeko elementuen kokapena doitu ez-CSD " +"moduetan, CSD moduarekin koherenteago izateko." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Kanpoko bideo-pistak kargatzeko euskarria gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Erreprodukzio-zerrendak nahastea txandakatzeko aukera eman." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "Zenbakizko teklatuko geziak gezien laster-tekletan erabil daitezke." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "Zerrenda hau osatugabea da. Ikusi git log aldaketen zerrenda osorako." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Bolumenaren botoiaren tartea gehienezko bolumena propietatearen balioaren " +"arabera doitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Leihoaren maximizazio egoera mantendu saioen artean." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Begiztaren egoera saioen artean mantendu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Erreprodukzio-zerrenden bilaketa inplementatu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Laster-teklak elkarrizketa-koadroko zerrenda eguneratu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Komatxoak eta ihes sekuentziak zuzen maneiatu mpv-ren aukera gehigarrietan." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" +"Denbora kurtsoaren posizioan bistaratu bilaketa-barraren gainean jartzean." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"'--mpv-options' zaharkitutzat jo. Horren ordez '--mpv-' aurrizkiarekin " +"hasten diren aukerak erabil daitezke mpv-ren aukerak ezartzeko. Adibidez, " +"Celluloidi '--mpv-vf=vflip' pasatzea mpv-ri '--vf=vflip' pasatzearen " +"baliokidea da." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Zonalde hila konfiguratzeko euskarria gehitu, saguaren mugimenduek kontrolak" +" bistaraziko ez dituzten eremua." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "Leiho tamainak HiDPI pantailetan behar bezala funtzionatzea." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Kimmo Kujansuu-ren suomierazko itzulpena gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "@bertronika-ren eslovenierazko itzulpena gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "@danialbehzadi-ren persierazko itzulpena gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "@vl-nix-ren ukrainerazko itzulpena gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"mpv-ren --border aukera erabiliz leihoen apaingarriak erakutsi/ezkutatzeko " +"euskarria gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Diskoak irekitzeko menuko elementua gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Kurtsorea automatikoki ezkutatzea blokeatu bolumenaren laster-leihoa leiho " +"moduan irekita dagoenean." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "mpv 0.30 bertsioarekin hutsegitea zuzendu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Proiektua Celluloid moduan berrizendatu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "@TeknoMobil-en turkierazko itzulpena gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "@F3nd0-ren esperantozko itzulpena gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "opengl-cb-tik errendatze API berrira migratu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Zenbakizko teklatuko laster-teklak maneiatu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Unicode laster-teklak maneiatzea." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Multimedia tekla gertaerak mpv-ri igorri." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Kontrolak kurtsorearen ze abiaduratan bistaratuko diren kontrolatzeko dconf " +"gakoa gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Erreprodukzio-erroreak isiltzeko aukera gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Hobespenak elkarrizketa-koadroko Orokorra fitxa banatu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Erreprodukzio-zerrenda txandakatzeko portaera hobetu mosaiko moduko leiho " +"kudeatzaileetan." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Aplikazioaren menuko elementuak menu nagusira eraman." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "MPRIS DBUS konexio bereizi bat erabili leiho bakoitzean." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "MPRIS-en LoopStatus propietatearen euskarria gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"--mpv-options aukera gehitu, komando lerrotik hautazko mpv aukerak " +"ezartzeko." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "" +"XDG_PICTURES_DIR pantaila-argazkien direktorio lehenetsi bezala ezarri." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"--window-scale, --autofit, --autofit-larger eta --autofit-smaller aukeren " +"maneiatzea hobetu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "WM_ROLE ezartzeko komando-lerroko aukera gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" +"Erreprodukzio-zerrendako elementuak kentzeko laster-menuko elementua gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" +"Erreprodukzio-zerrendako elementuen kokalekua kopiatzeko laster-menuko " +"elementua gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Saltatzeko botoiak erabiliz kapituluen ordez erreprodukzio-zerrendako " +"sarrerak aldatzeko aukera gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Fitxategi-hautatzaileak kokaleku ez-lokalak onartzen ditu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" +"Fitxategi bakarra begiztan jartzeko sarrera gehitu eskuineko botoiko laster-" +"menuan." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" +"Pantaila osoa eta leihoa eskalatzea kudeatzeko aldaketa gertaerak kudeatu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" +"Leiho moduan saguaren kurtsorea automatikoki ezkutatzeko aukera gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Leiho nagusia aplikazioa lanean erakusten" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Leiho nagusia CSD desgaituta" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Leiho nagusia erreprodukzio-zerrenda irekita" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Multimedia erreproduzigailua" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Erreproduzitu film eta bideoak" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "" +"Bideoa;Filma;Pelikula;Klipa;Telesailak;Erreproduzigailua;DVD;TV;Diskoa;Albuma;Musika;GNOME;mpv;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Leiho berria" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Erreproduzitzen" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Erakutsi argitalpenaren bertsioa" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Jarri ilaran" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Sortu leiho berri bat" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "AUKERAK" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Ezarri leihoaren rola" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Ez konektatu dagoeneko martxan dagoen instantzia batera" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Pausatu" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Erreproduzitu" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Gelditu" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Aurrera" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Atzera" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Hurrengo kapitulua" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Aurreko kapitulua" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Egin erreprodukzio-zerrendaren begizta" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Nahasi erreprodukzio-zerrenda" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Txandakatu pantaila osoa" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Errorea" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Fitxategi guztiak" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Multimedia-fitxategiak" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Audio-fitxategiak" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Bideo-fitxategiak" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Irudi fitxategiak" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Azpititulu-fitxategiak" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Bat ere ez" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Ezezaguna" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "_Kargatu kanpokoa..." + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Ez da diskorik aurkitu" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Fitxategia" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Ireki..." + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Ireki _karpeta..." + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Ireki _kokalekua..." + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Ireki _diskoa..." + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Gorde erreprodukzio-zerrenda" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "Leiho _berria" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Irten" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Editatu" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Hobespenak" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Bideo-pista" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Audio-pista" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "A_zpititulu-pista" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Ikusi" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Txandakatu erreprodukzio-zerrenda" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Txandakatu erreprodukzio-zerrenda" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Pantaila osoa" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Laguntza" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "Laster-_teklak" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Celluloidi buruz" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Ireki _diskoa" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "Erreprodukzioa modu anormalean bukatu da. Arrazoia: %s." + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Kokalekua:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Utzi" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Ireki" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Huts egin du MPV-ren aukera bat edo gehiago aplikatzean." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Kopiatu kokalekua" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Kendu" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Gehitu..." + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Gehitu _karpeta..." + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Gehitu k_okalekua" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Nahasi" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Egin _fitxategiaren begizta" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Egin _erreprodukzio-zerrendaren begizta" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Erreprodukzio-zerrenda" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Erreprodukzio-zerrenda hutsik dago" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Gehitu plugina" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Lua pluginak" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "JavaScript pluginak" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "C pluginak" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "" +"Huts egin du fitxategia '%s' jatorritik '%s' helburura kopiatzean. Arrazoia:" +" %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Ez da pluginik aurkitu" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Kendu" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "Ziur zaude script hau kendu nahi duzula? Ekintza hau ezin da desegin." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Huts egin du '%s' fitxategia ezabatzean. Arrazoia: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "mpv konfigurazio-fitxategia:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "mpv-ren sarrerako konfigurazio-fitxategia:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "mpv-ren aukera gehigarriak:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Interfazea" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Konfigurazio-fitxategiak" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Askotarikoa" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Pluginak" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Gorde" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Hobespenak" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Ireki fitxategia" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Ireki kokalekua" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Gehitu fitxategia erreprodukzio-zerrendara" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Gehitu kokalekua erreprodukzio-zerrendara" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Erakutsi hobespenen elkarrizketa-koadroa" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Txandakatu kontrolak" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Txandakatu erreprodukzio-zerrenda" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Txandakatu pantaila osoko modua" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Irten pantaila osoko modutik" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "" +"Txandakatu OSD egoerak normalaren eta erreprodukzioaren denbora/iraupenaren " +"artean" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Erakutsi fitxategi-izena OSD-an" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Erakutsi aurrerapena, igarotako denbora eta iraupena OSD-an" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Joan atzera/aurrera 5 segundo" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Joan atzera/aurrera zehazki segundo bat" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Joan atzera/aurrera minutu bat" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Joan atzera/aurrera zehazki 5 segundo" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Joan aurreko/hurrengo azpititulura" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Joan atzera/aurrera fotograma bakar bat" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Joan aurreko/hurrengo kapituluaren hasierara " + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Txikiagotu/handiagotu erreprodukzio-abiadura %10ean" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Erdira jaitsi/Bikoiztu erreprodukzio-abiadura" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Berrezarri erreprodukzio-abiadura normala" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Joan atzera/aurrera erreprodukzio-zerrendan" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Kendu hautatutako erreprodukzio-zerrendako elementua" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Gorde erreprodukzio-zerrenda" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Ezarri/garbitu A-B begizta-puntuak" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Txandakatu begizta infinitua" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Pausatu edo despausatu" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Irten" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Gorde uneko erreprodukzioaren posizioa eta irten" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Sartu bilaketa moduan" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Jauzi hurrengo bat-etortzera" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Jauzi aurreko bat-etortzera" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Irten bilaketa modutik" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Txandakatu audio-pistak" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Jaitsi/Igo bolumena" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Mututu edo desmututu" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Doitu audioaren atzerapena +/- 0,1 segundoz" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Txandakatu azpitituluen ikusgaitasuna" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Txandakatu erabilgarri dauden azpitituluak" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Doitu azpitituluen atzerapena +/- 0,1 segundoz" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Txandakatu SSA/ASS azpitituluen estiloa gainidaztea" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Mugitu azpitituluak gora/behera" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Txandakatu VSFilter aspektu bateragarritasun modua" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Txandakatu bideo-pistak" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Txikiagotu/Handiagotu pan-and-scan barrutia" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Atera pantaila-argazkia" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Atera pantaila-argazkia, azpititulurik gabe" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Atera pantaila-argazkia, leihoak erakusten duen bezala" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Aldatu bideoaren tamaina jatorrizkoaren erdira" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Aldatu bideoaren tamaina jatorrizkora" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Aldatu bideoaren tamaina jatorrizkoaren bikoitzera" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Doitu kontrastea" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Doitu distira" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Doitu gamma" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Doitu asetasuna" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Aktibatu edo desaktibatu desgurutzelarkatzailea" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Txandakatu aspektu-erlazioa gainidaztea" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Erabiltzaile-interfazea" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Bideoa" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Audioa" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Azpititulua" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Erreprodukzioa" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Bilaketa" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Kargatu audio-pista..." + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Kargatu bideo-pista..." + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Kargatu azpititulu-pista..." + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Bezeroaren aldeko apaingarriak gaitu edo desgaitzeko berrabiarazi beharra " +"dago." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Gehitu karpeta erreprodukzio-zerrendara" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Ireki karpeta" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Gehitu fitxategia erreprodukzio-zerrendara" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Ireki fitxategia" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Gehitu kokalekua erreprodukzio-zerrendara" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Gehitu kokalekua" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Gorde erreprodukzio-zerrenda" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "MPVren GTK interfaze bat" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Asier Iturralde Sarasola " diff --git a/po/fa.po b/po/fa.po new file mode 100644 index 0000000..a631ca3 --- /dev/null +++ b/po/fa.po @@ -0,0 +1,1109 @@ +# Danial Behzadi , 2019. #zanata +# gnome-mpv , 2019. #zanata +# gnome-mpv , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: celluloid\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-10-09 19:52+0700\n" +"PO-Revision-Date: 2020-06-23 10:48-0400\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Persian\n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "این که تنظمیات از نگارش پیشین مهاجرت داده شده یا نه" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "به کار انداختن زمینهٔ تاریک" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "به کار انداختن تزیینات سمت کارخواه" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "استفاده از واپایشگرهای شناور در حالت پنجره‌ای" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "کمینهٔ سرعت نشانگر برای آشکار شدن واپایشگرهای شناور." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "استفاده از دکمه‌های پرش برای واپایش فهرست پخش" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "گشودن همیشگی پنجرهٔ جدید" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "انتخاب‌های داده شده به mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "مسیر پروندهٔ پیکربندی mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "مسیر پروندهٔ پیکربندی ورودی mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "به کار انداختن پشتیبانی MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "به کار انداختن پشتبانی کلیدهای رسانه" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "پیش‌واکشی فراداده" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "چشم‌پوشی از خطاهای پخش" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "پهنای پنجره" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "بلندای پنجره" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "حجم پخش‌کننده" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "پهنای فهرست پخش" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "نمایش یا عدم نمایش واپایشگرها" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "نمایش یا عدم نمایش فهرست پخش" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "نشانی آخرین شاخه" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "سلولوید" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "پیشانهٔ ‪GTK+‬ برای mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" +"سلولوید یک پخش‌کنندهٔ ساده است که می‌تواند تقریباً تمام قالب‌های صوتی و " +"تصویری را پخش کند. این برنامه از فهرست‌های پخش و واپایگشرهای پخش‌کنندهٔ " +"رسانهٔ MPIRS2 پشتیبانی می‌کند. طرّاحی سلولوید پیرو رهنمودهای رابط انسانی " +"گنوم بوده، ولی برای دیگر سامانه‌ها که از تزیینات سمت کارخواه (CSD) استفاده " +"نمی‌کنند نیز قابل تطبیق است. این برنامه بر مبنای کتابخانهٔ mpv و GTK است." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "ویژگی‌ها:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "فهرست پخش با کشش و رهایی" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "بار کردن پرونده‌های پیکربندی mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "رابط دی‌باس MPIRS2" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "این ارائه شامل تغییرات زیر است:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "تغییر نام پروژه به سلولوید" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "افزودن ترجمهٔ ترکی به دست @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "افزودن ترجمهٔ اسپرانتو به دست @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "مهاجرت از opengl-cb به API پرداخت جدید" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "مدیریت ترکیب‌کلیدهای صفحه‌عدد" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "مدیریت ترکیب‌کلیدهای یونی‌کد" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "هدایت رویدادهای کلید رسانه به mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "افزودن کلید dconf برای واپایش سرعت نشانگر برای آشکارسازی واپایشگرها" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "پخش‌کنندهٔ رسانه" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "پخش فیلم‌ها و ویدیوها" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "" +"Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;ویدیو;فیلم;کلیپ;سریال;پخش;دی‌وی‌دی;تلویزیون;سی‌دی;آلبوم;آهنگ;موسیقی;گنوم;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "پنجرهٔ جدید" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "در حال پخش" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "نمایش نگارش ارائه" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "صف کردن" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "ایجاد پنجره‌ای جدید" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "گزینه‌ها" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "تنظیم نقش پنجره" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "وصل نشدن به یک نمونهٔ در حال اجرا" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "مکث" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "پخش" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "توقّف" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "جلو" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "عقب" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "فصل بعدی" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "فصل پیشین" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "فهرست پخش حلقه‌ای" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "تغییر حالت تمام‌صفحه" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "خطا" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "تمام پرونده‌‌ها" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "پرونده‌های رسانه" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "پرونده‌های صوتی" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "پرونده‌های ویدیویی" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "پرونده‌های تصویر" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "پرونده‌های زیرنویس" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "هیچ‌کدام" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "ناشناخته" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "_بار کردن از بیرون…" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "هیچ دیسکی پیدا نشد" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_پرونده" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_گشودن…" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "گشودن _موقعیت…" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "گشودن _دیسک…" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_ذخیرهٔ فهرست پخش" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "پنجرهٔ _جدید" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_ویرایش" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_ترجیحات" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "قطعهٔ _ویدیویی" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "قطعهٔ _صوتی" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "قطعهٔ _زیرنویس" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_نما" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "تغییر _حالت واپایشگرها" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "تغییر _حالت فهرست پخش" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_تمام‌صفحه" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_راهنما" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_میان‌برهای صفحه‌کلید" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_دربارهٔ سلولوید" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "گشودن _دیسک" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "" + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "موقعیت:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_لغو" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_گشودن" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "شکست در اعمال برخی گزینه‌های mpv." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_رونوشت از موقعیت" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_برداشتن" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_افزودن…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "افزودن _موقعیت…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_بر زدن" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "تکرار _پرونده" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "تکرار _فهرست پخش" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "فهرست پخش" + +#: src/celluloid-playlist-widget.c:943 +#, fuzzy +msgid "Playlist is empty" +msgstr "فهرست پخش" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "افزودن افزایه" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "افزایه‌های Lua" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "افزایه‌های جاوااسکریپت" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "افزایه‌های سی" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "هیچ افزایه‌ای پیدا نشد" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "برداشتن" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "" + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "رابط" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "پرونده‌های پیکربندی" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "متفرّقه" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "افزایه‌ها" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_ذخیره" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "ترجیحات" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "گشودن پرونده" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "گشودن موقعیت" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "افزودن پرونده به فهرست پخش" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "افزودن موقعیت به فهرست پخش" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "نمایش گفت‌وگوی ترجیحات" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "تغییر حالت واپایشگرها" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "تغییر حالت فهرست پخش" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "تغییر حالت تمام‌صفحه" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "خروجی از حالت تمام‌صفحه" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "نماگرفت" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "رابط کاربری" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "ویدیو" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "صدا" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "زیرنویس" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "پخش" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "رسیدن" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "بار کردن قطعهٔ صوتی…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "بار کردن قطعهٔ زیرنویس…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "افزودن پرونده به فهرست پخش" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "گشودن پرونده" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "افزودن موقعیت به فهرست پخش" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "گشودن موقعیت" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "ذخیرهٔ فهرست پخش" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "یک پیشانهٔ ‪GTK‬ برای mpv" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "دانیال بهزادی " diff --git a/po/fi.po b/po/fi.po new file mode 100644 index 0000000..2036f98 --- /dev/null +++ b/po/fi.po @@ -0,0 +1,1143 @@ +# Kimmo Kujansuu , 2019. #zanata +# Jiri Grönroos , 2020. #zanata +# Kimmo Kujansuu , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: celluloid\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-12 23:48+0700\n" +"PO-Revision-Date: 2020-10-28 02:38-0400\n" +"Last-Translator: Kimmo Kujansuu \n" +"Language-Team: Finnish\n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "Onko asetukset jo siirretty edellisestä versiosta" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Ikkunan koon muuttaminen automaattisesti videon mukaan" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Käytä tummaa teemaa" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Ota käyttöön asiakkaan ikkunatehosteet" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Käytä kelluvia säätimiä ikkunatilassa" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Piilota hiiren kohdistin automaattisesti ikkunatilassa" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "Kohdistimen miniminopeus, jolla kelluvat säätimet ovat piilossa." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Vyöhykkeen koko, jossa hiiren liike ei nosta ohjauksen kuvakkeita näkyviin." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Käytä ohituspainikkeita soittolistan ohjaamiseen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Tee valitsin muistamaan viimeisten tiedostojen sijainti" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Avaa aina uusi ikkuna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Vaihtoehdot siirtyä MPV:hen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Polku MPV-asetustiedostoon" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Lataa MPV-asetustiedosto" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Polku MPV-sisääntulon asetustiedostoon" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Lataa MPV-sisääntulon asetustiedosto" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Ota MPRIS-tuki käyttöön" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Ota medianäppäintuki käyttöön" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Hae metatiedot etukäteen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ohita toiston virheet" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Estä istunnon joutokäynti" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Ikkunan leveys" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Ikkunan korkeus" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Onko ikkuna on maksimoitu vai ei" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Soittimen äänenvoimakkuus" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Käytetäänkö looppitoimintoa soittolistan lopun saavuttua" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Soittolistan laajuus" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Näytetäänkö säätimet" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Näytetäänkö soittolista" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "Viimeksi käytettyjen kansioiden sijainti" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "GTK+-käyttöliittymä MPV:lle" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" +"Celluloid on yksinkertainen mediasoitin, joka voi toistaa käytännössä kaikki" +" video- ja äänimuodot. Se tukee soittolistoja ja MPRIS2-mediasoittimen " +"ohjaimia. Celluloidin suunnittelu noudattaa GNOME Human Interface -ohjeita, " +"mutta sitä voidaan mukauttaa myös muihin järjestelmiin, jotka eivät käytä " +"ikkunatehosteita (CSD). Se perustuu MPV-kirjastoon ja GTK:hon." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Ominaisuudet:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Vedä ja pudota soittolista" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Ladataan ulkoisia MPV-asetustiedostoja" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "MPRIS2 -D-Bus-liitäntä" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Celluloid-kehittäjät" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Tämä julkaisu sisältää seuraavat muutokset:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "Voit aktivoida pikavalikon, kun soittolista on tyhjä." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Estä palkin jatkuva koon muuttaminen aikaleiman otsikon koon muuttuessa tai " +"sen arvon muuttuessa." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Näytä vain yksi virheikkuna, kun suuri määrä virheitä tapahtuu nopeasti " +"peräkkäin." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Lisää valikkoon kohde kansioiden avaamista varten." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Säädä valintaikkunoiden sijaintia muussa kuin CSD-tilassa, joka olisi " +"johdonmukaisempi CSD-tilan kanssa." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Lisää tuki ulkoisten videoiden lataamiseen." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Tee soittolistasta satunnainen." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "Nuolinäppäinten käyttäminen numeronäppäimistön nuolinäppäimillä." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "Tämä luettelo on puutteellinen. Katso täydellinen git-muutosloki." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "Säädä painikkeen aluetta äänenvoimakkuuden enimmäisarvon mukaan." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Säilytä ikkunan maksimitila istuntojen välillä." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Säilytä toisto tauotta koko istunnon ajan." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Ota soittolistan haku käyttöön." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Päivitä pikanäppäinten luettelo pikanäppäimet-valintaikkunassa." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "Käsitelle oikein lainaumerkkejä ja erikoismerkkejä MPV valinnoissa." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "Näytä aika kohdistimessa kun siirrät hakupalkkia." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"Jätä väliin '--mpv-options'. Asetukset, jotka alkavat '--mpv-' voidaan " +"asettaa mpv-asetusten sen sijaan. Esimerkiksi, '--mpv-vf=vflip' on " +"Celluloidin vastaava ohitus '--vf=vflip' mpv:n tilalle." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Lisää tuki kuolleiden alueiden määrittämiselle. Alue, jolla hiiren " +"liikkuminen ei aiheuta ohjauksen kuvakkeita näkyviin." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "Tee ikkunoiden mitoitus oikein HiDPI-näytöillä." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Lisätty Suomi kielipaketti lähettäjä Kimmo Kujansuu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Lisätty Slovenian kielipaketti lähettäjä @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Lisätty Persian kielipaketti lähettäjä @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Lisätty Ukrainan kielipaketti lähettäjä @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Lisätty tuki ikkunatehosteiden näyttämistä/piilottamista varten MPV-" +"asetuksella --border" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Lisätty valikkoon kohta levyjen avaamista varten" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Estetty kohdistimen automaattinen piilottaminen, kun äänenvoimakkuuden " +"ponnahdusikkuna on avattu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Kaatuminen korjattu versiossa MPV 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Projekti nimetty Celluloid:ksi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Lisätty Turkkilainen kielipaketti lähettäjä @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Lisätty Esperanto kielipaketti lähettäjä @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Siirrytty OpenGL-CB -muodosta uuteen renderöinti API-liittymään" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Osaa numeronäppäimistön painikkeet" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Osaa unicode -painikkeet" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Välittää medianäppäinten avaintoiminnot MPV:hen" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Lisää dconf -avaimen kohdistimen nopeuden hallintaan, kun säätimet ovat " +"piilossa" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Lisää vaihtoehdon toistovirheiden estämiseksi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Jakaa välilehden Yleinen asetukset-valintaikkunassa" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Parantaa käyttäytymistä, kun soittolistat voidaan kytkeä vierekkäin " +"ikkunanhallinan alla" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Siirrä sovelluksen valikkokohteet päävalikkoon" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Käytä erillistä MPRIS DBus -yhteyttä jokaiseen ikkunaan" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Lisää tuki MPRIS -ominaisuus Loop -silmukan tilaksi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Lisää optio --mpv -optio asettaa satunnaiset mpv-asetukset komentoriviltä" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Aseta oletus kuvakaappauksen hakemistoon XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"Paranna käsittelyä --window-scale, --autofit, --autofit-larger, ja " +"--autofit-smaller" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Lisää komentorivivalinta WM_ROLE -asetukseksi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "Lisää pikavalikko soittolistan kohteiden poistamista varten" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "Lisää pikavalikko kopioidaksesi soittolistan kohteiden sijainnin" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Lisää vaihtoehto, jotta ohituspainikkeet muuttavat soittolistan merkintöjä " +"lukujen sijasta" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" +"Varmista, että tiedoston valitsin hyväksyy muut kuin paikalliset sijainnit" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" +"Lisää hiiren kakkospainikkeella merkintä yksittäisen kappaleen silmukointi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "Muuttaa koko näytön ja ikkunan mittakaavan tapahtumia" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" +"Lisää vaihtoehto hiiren kohdistimen automaattiseen piilottamiseen " +"ikkunatilassa" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Pääikkuna, joka näyttää sovelluksen olevan toiminnassa" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Pääikkuna, jossa CSD on poistettu käytöstä" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Pääikkuna, jossa soittolista on auki" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Multimediasoitin" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Toista elokuvia ja videoita" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "" +"Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;Elokuva;Filmi;Sarja;Soitto;Musiikki;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Uusi ikkuna" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Soitetaan" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Näytä julkaisuversio" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Jonoon" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Luo uusi ikkuna" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "VAIHTOEHDOT" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Määritä ikkunan rooli" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Älä muodosta yhteyttä jo käynnissä olevaan tapaukseen" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Tauko" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Toista" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Pysäytä" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Eteenpäin" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Taaksepäin" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Seuraava kappale" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Edellinen kappale" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Toista soittolistaa tauotta" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Sekoita soittolista" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Koko näytön tila päällä/pois" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Virhe" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Kaikki tiedostot" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Mediatiedostot" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Äänitiedostot" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Videotiedostot " + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Kuvatiedostot " + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Tekstitystiedostot" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Ei mitään" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Tuntematon" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "_Lataa ulkoinen…" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Levyä ei löytynyt" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Tiedosto" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Avaa..." + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Avaa _kansio…" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Avaa _sijainti..." + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Avaa _levy..." + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Tallenna soittolista" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Uusi ikkuna" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Lopeta" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Muokkaa" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Asetukset" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Videoraita" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Ääniraita" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "T_ekstitysraita" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Näytä" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Säätimet päällä/pois" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Soittolista päällä/pois" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Koko näyttö" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Ohje" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Pikanäppäimet" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Tietoja - Celluloid" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Avaa _levy" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "Toisto lopetettiin odottamattomasti. Syy: %s" + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Sijainti:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Peru" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Avaa" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Yhtä tai useampaa MPV-valintaa ei voitu käyttää." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Kopioi sijainti" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Poista" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Lisää..." + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Lisää _kansio..." + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Lisää _sijainti..." + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Sekoittaa" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Silmukkaan _tiedosto" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Silmukkaan _soittolista" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Soittolista" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Soittolista on tyhjä" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Lisää laajennus" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Lua-laajennukset" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "JavaScript-laajennukset" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "C-laajennukset" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Tiedoston %s kopioiminen kohteeseen %s epäonnistui. Syy: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Laajennuksia ei löytynyt" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Poista" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "" +"Haluatko varmasti poistaa tämän komentosarjan? Tätä toimintoa ei voi " +"peruuttaa." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Tiedostoa %s ei voitu poistaa. Syy: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "mpv asetustiedosto:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "mpv sisääntulon asetustiedosto:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Ylimääräiset mpv-asetukset:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Käyttöliittymä" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Asetustiedostot" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Sekalaiset" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Laajennukset" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Tallenna" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Asetukset" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Avaa tiedosto" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Avaa sijainti" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Lisää tiedosto soittolistaan" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Lisää sijainti soittolistaan" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Näytä Asetukset-valintaikkuna" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Säätimet päällä/pois" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Soittolista päällä/pois" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Vaihtele koko näytön tilan välillä" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Poistu koko näytön tilasta" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "Vaihda OSD-tilat normaalin ja toistoajan/keston välillä" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Näytä tiedostonimi OSD-näytössä" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Näytä edistyminen, kulunut aika ja kesto OSD-näytössä" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Siirry eteen-/taaksepäin 5 sekuntia" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Siirry tarkasti eteen-/taaksepäin 1 sekunti " + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Siirry eteen-/taaksepäin 1 minuutti" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Siirry tarkasti eteen-/taaksepäin 5 sekuntia " + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Siirry edellinen/seuraava tekstitys" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Astu taaksepäin/eteenpäin yksi kuva kerrallaan" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Siirry edellisen/seuraavan kappaleen alkuun" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Pienennä/lisää toistonopeutta 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Puoli/kaksinkertainen toistonopeus" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Palauta toistonopeus normaaliksi" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Siirry taakse/eteenpäin soittolistassa" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Poista valittu soittolista" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Tallenna soittolista" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Aseta/tyhjennä A-B -soittosilmukkat" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Vaihda ääretön soittosilmukka" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Tauko tai jatka" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Lopeta" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Tallenna nykyinen toistopaikka ja lopeta" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Siirry hakutilaan" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Hyppää seuraavaan osumaan" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Hyppää edelliseen osumaan" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Poistu hakutilasta" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Selaa ääniraitojen läpi" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Pienennä/lisää äänenvoimakkuutta" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Mykistä tai poista mykistys" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Säädä äänen viivettä +/-0,1 sekuntia" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Vaihda tekstityksen näkyvyyttä" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Selaa käytettävissä olevia tekstityksiä" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Säädä tekstityksen viive +/- 0,1 sekunnilla" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Vaihda SSA/ASS-tekstitystyylin ohitus" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Siirrä tekstityksiä ylös/alas" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Vaihda VSFilter-kuvasuhteen yhteensopivuustilaa" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Selaa videoraitojen läpi" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Pienennä/lisää skannausaluetta" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Ota kuvakaappaus" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Ota kuvakaappaus ilman tekstityksiä" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Ota kuva kaappaus, kuten se ikkunassa näykyy" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Videon koon muuttaminen puoleen alkuperäisestä koosta" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Videon koon muuttaminen alkuperäiseen kokoon" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Videon koon muuttaminen kaksinkertaiseksi alkuperäisestä koosta" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Säädä kontrastia" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Säädä kirkkautta" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Säädä gamma" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Säädä värikylläisyyttä" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Aktivoi tai deaktivoi skaalain" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Jakson kuvasuhteen ohitus" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Käyttöliittymä" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Video" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Ääni" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Tekstitys" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Toisto" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Siirtyminen" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Lataa ääniraita…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Lataa video…" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Lataa tekstitys..." + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Asiakkaan ikkunatehosteiden ottaminen käyttöön tai poistaminen käytöstä " +"edellyttää uudelleenkäynnistystä." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Lisää kansio soittolistaan" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Avaa kansio" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Lisää tiedosto soittolistaan" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Avaa tiedosto" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Lisää sijainti soittolistaan" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Avaa sijainti" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Tallenna soittolista" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "MPV:n GTK+ -käyttöliittymä" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" +"Kääntänyt:\n" +"Kimmo Kujansuu" diff --git a/po/fr.po b/po/fr.po new file mode 100644 index 0000000..ca01a9d --- /dev/null +++ b/po/fr.po @@ -0,0 +1,1185 @@ +# French translations for gnome-mpv package +# gnome-mpvパッケージに対する日本語翻訳. +# Copyright (C) 2015 The gnome-mpv'u copyright holder +# This file is distributed under the same license as the gnome-mpv package. +# Harenome Ranaivorarivony Razanajato , 2015. +# Clement Lefebvre , 2019. #zanata +# Erwan Amans , 2019. #zanata +# gnome-mpv , 2019. #zanata +# Yoshida Shouyou , 2021. #zanata +msgid "" +msgstr "" +"Project-Id-Version: gnome-mpv 0.5\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-20 20:48+0700\n" +"PO-Revision-Date: 2021-01-12 04:19-0500\n" +"Last-Translator: Yoshida Shouyou \n" +"Language-Team: Français\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Zanata 4.6.2\n" +"X-Poedit-Basepath: ../src\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: mpv.c\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "" +"Si les paramètres ont déjà été migré à partir de la version précédente" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Ajuster automatiquement la fenêtre à la vidéo" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Activer le thème sombre" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Activer les décorations fenêtre" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Utiliser les commandes flottantes en mode fenêtré" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Cacher automatiquement le pointeur en mode fenêtré" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"La vitesse de pointeur minimum à partir de laquelle les commandes flottantes" +" réapparaissent." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Taille de la zone morte dans laquelle le mouvement du pointeur n'entraînera " +"pas l'apparition des contrôles." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Utilisez les boutons de saut pour contrôler la liste de lecture" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" +"Permettre au sélecteur de fichiers de se souvenir de l'emplacement du " +"dernier fichier ouvert" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Toujours ouvrir une nouvelle fenêtre" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Options à activer dans mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Chemin du fichier de configuration de mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Charger un fichier de configuration de mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Chemin du fichier de configuration des raccourcis de mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Charger un fichier de configuration des raccourcis de mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Activer le support MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Activer la prise en charge des touches multimédias" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Pré-rechercher les métadonnées" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ignorer les erreurs de lecture" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Inhiber l'inactivité de la session" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Largeur de la fenêtre" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Hauteur de la fenêtre" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Défini si la fenêtre est maximisée ou non" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Volume du lecteur" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Relancer ou non la liste de lecture lorsque la fin est atteinte" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Largeur de la liste de lecture" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Afficher ou cacher les contrôles" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Afficher ou cacher la liste de lecture" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "Chemin d'accès du dernier dossier consulté" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "Interface en GTK+ pour mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" +"Celluloid est un lecteur multimédia simple capable de lire pratiquement tous" +" les formats vidéo et audio. Il supporte les listes de lecture et le " +"contrôle à distance MPRIS2. Sa conception est basée sur les recommandation " +"GNOME en matière d'interfaces graphiques mais il peut aussi s'adapter aux " +"autres environnements de bureaux qui n'utilisent pas de décorations de " +"fenêtres côté client (CSD)." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Fonctionnalités" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Glisser-déposer la liste de lecture" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Chargement des fichiers de configuration externes pour mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "Interface D-Bus MPRIS2" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Les développeurs de Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Cette version apporte les changement suivants :" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Permettre l'activation du menu contextuel lorsque la liste de lecture est " +"vide." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Empêcher le redimensionnement constant de la barre de recherche lié au " +"redimensionnement de l'étiquette d'horodatage lorsque sa valeur change." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Montrer une seule boîte de dialogue d'erreur quand un large nombre d'erreurs" +" se succèdent rapidement." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Ajout d'une entrée de menu pour ouvrir les répertoires." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Ajuste la position des éléments d'interface utilisateur des boîtes de " +"dialogue modales en mode non-CSD pour plus de consistance avec le mode CSD." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Ajout du support pour charger des pistes vidéo externes." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Permettre le basculement de la liste de lecture en mode aléatoire." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" +"Permettre aux raccourcis clavier des flèches de fonctionner avec les flèches" +" du pavé numérique." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" +"Cette liste n'est pas complète. Pour voir tous les changements utilisez git" +" log." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Ajuste la portée du bouton de volume en se basant sur la valeur de la " +"propriété volume-max." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Retenir l'état de maximisation de la fenêtre entre les sessions." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Retenir l'état des boucles entre les sessions." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Implémentation de la recherche dans les listes de lecture." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" +"Mise à jour de la liste des raccourcis dans la boîte dialogue des raccourcis" +" clavier." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Gère correctement les guillemets et les séquences d'échappement dans les " +"options supplémentaires de mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" +"Affiche le temps à la position du pointeur lors du survol de la barre de " +"recherche." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"Rendre obsolète '--mpv-options'. Les options commençant avec '--mpv-' " +"peuvent être utilisées pour régler des options de mpv à la place. Par " +"example, activer '--mpv-vf=vflip' dans Celluloid revient à activer '--" +"vf=vflip' dans mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Ajout du support pour configurer une zone morte, une zone dans laquelle le " +"mouvement du pointeur n'entraînera pas l'apparition des contrôles." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" +"Permettre le redimensionnement correct des fenêtres avec les affichages " +"HiDPI" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Ajout de la traduction finnoise par Kimmo Kujansuu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Ajout de la traduction slovène par @bertronika" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Ajout des traductions perses par @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Ajout des traductions ukrainiennes par @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Ajout du support du (dés)affichage des décorations de fenêtres grâce à " +"l'option mpv --border" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Ajout d'une entrée de menu pour ouvrir les disques" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Bloquer le masquage du curseur lorsque la fenêtre de volume est ouverte en " +"mode fenêtré" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Règle le problème de crash avec mpv 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Changement de nom de projet en Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Ajout des traductions turques par @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Ajout des traductions Esperanto par @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Migration de opengl-cb à la nouvelle API de rendu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Support des touches de raccourcis numériques" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Support des touches de raccourcis unicode" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Envoi des évènements de touches multimédia vers mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Ajout d'une clef dconf pour contrôler la vitesse de pointeur à laquelle les " +"commandes flottantes sont montrées." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Ajout d'une option pour ignorer les erreurs de lecture" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Onglet général scindé dans les préférences" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Meilleur comportement lors de la bascule de la liste de lecture sous les " +"gestionnaires de fenêtres de carrelage" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Éléments du menu d'application déplacés vers le menu principal " + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Utilisation d'une connexion DBUS MPRIS unique pour chaque fenêtre" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Ajout du support pour la propriété MPRIS LoopStatus" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Nouvelle option --mpv-options pour passer des options à mpv via la ligne de " +"commande" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Répertoire de capture d'écran par défaut réglé à XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"Meilleur support de --window-scale, --autofit, --autofit-larger et " +"--autofit-smaller" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Ajout d'une option de ligne de commande pour renseigner WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" +"Ajout d'une option pour retirer les éléments de la liste de lecture dans le " +"menu contextuel" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" +"Ajout d'une option pour copier l'emplacement d'éléments de la liste de " +"lecture dans le menu contextuel" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Ajout d'une option pour faire agir les boutons de saut sur les éléments de " +"la liste de lecture plutôt que sur les chapîtres" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Le sélecteur de fichiers accepte les emplacements distants" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" +"Ajout d'une option dans le menu contextuel pour lire un fichier en boucle" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" +"Support des changements de propriétés pour le plein écran et la taille de " +"fenêtre" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" +"Ajout d'une option pour masquer automatiquement le curseur de la souris en " +"mode fenêtré" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "La fenêtre principale montrant l'application en action" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "La fenêtre principale avec CSD désactivé" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "La fenêtre principale avec la liste de lecture ouverte" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Lecteur multimédia" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Lecture de films et vidéos" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "" +"Vidéo;Film;Clip;Séries;Lecteur;DVD;TV;Télé;Disque;Album;Musique;GNOME;mpv;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Nouvelle fenêtre" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "En cours de lecture" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Afficher la version" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Files d'attente" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Créer une nouvelle fenêtre" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "OPTIONS" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Définir le rôle de la fenêtre" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Ne pas se connectez à une instance en cours d'exécution" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Pause" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Lecture" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Arret" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Avancer" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Reculer" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Chapitre suivant" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Chapitre précédant" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Lecture en boucle" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Liste de lecture aléatoire" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Plein écran" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Erreur" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Tous les fichiers" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Fichiers multimédias" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Fichiers audio" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Fichiers vidéo" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Fichiers image" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Fichiers de(s) sous-titres" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Vide" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Inconnu" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "_Charger un fichier externe..." + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Aucun disque trouvé" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Fichier" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Ouvrir..." + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Ouvrir _Dossier…" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Ouvrir un _emplacement..." + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Ouvrir un _disque..." + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Enregistrer la liste de lecture" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Nouvelle fenêtre" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Quitter" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "É_diter" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Préférences" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "Piste _vidéo" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "Piste _audio" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "So_us-titres" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Vue" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "Afficher les _contrôles" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "Afficher la _liste de lecture" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Plein écran" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Aide" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Raccourcis clavier" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_À propos de Celluloid" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Ouvrir un _disque" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "La lecture a été interrompue pour la raison suivante : %s" + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Emplacement:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Annuler" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Ouvrir" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Impossible d'appliquer une ou plusieurs options à mpv." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Copier l'emplacement" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Supprimer" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Ajouter" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Ajouter _Dossier…" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Ajouter un _Emplacement" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "Lecture aléa_toire" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Lecture en boucle du _fichier" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Lecture en boucle de la liste de _lecture" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Liste de lecture" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "La liste de lecture est vide" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Ajouter un greffon" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Greffons Lua" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "Greffons JavaScript" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "Greffons C" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "" +"Impossible de copier le fichier de '%s' vers '%s' pour la raison suivante : " +"%s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Aucun greffon trouvé" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Supprimer" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "" +"Êtes vous sur de vouloir supprimer ce script ? Cette action est irréversible" + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Impossible de supprimer le fichier '%s' pour la raison suivante : %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "Fichier de configuration mpv:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "Fichier de configuration des raccourcis mpv:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Options supplémentaires pour mpv:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Interface" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Fichiers de configuration" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Divers" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Greffons" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Enregistrer" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Préférences" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Ouvrir un fichier" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Ouvrir un emplacement" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Ajouter un fichier à la liste de lecture" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Ajouter un emplacement à la liste de lecture" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Afficher les préférences" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Afficher les contrôles" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Afficher la liste de lecture" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Plein écran" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Quitter le mode plein écran" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "Commutation des états de l'OSD" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Afficher le nom du fichier sur l'OSD" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Afficher la progression, le temps écoulé et la durée sur l'OSD" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Avancer/reculer de 5 secondes" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Avancer/reculer d'exactement 1 second" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Avancer/reculer d'1 minute" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Avancer/reculer d'exactement 5 secondes" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Sous-titre précédent/suivant" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Avancer/reculer d'une image vers l'arrière/vers l'avant" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Aller au début du chapitre précédent/suivant" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Reduire/Augmenter la vitesse de lecture de 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Reduire de moitié ou doubler la vitesse de lecture actuelle" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Réinitialiser la vitesse de lecture" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Aller en arrière/en avant dans la liste de lecture" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Supprimer l'élément sélectionné de la liste de lecture" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Sauvegarder la liste de lecture" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Définir/enlever les repères de boucle A-B" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Basculer en boucle infinie" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Pause/reprendre" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Quitter" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Enregistrer la position de lecture actuelle et quitter" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Passer en mode recherche" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Aller au résultat suivant" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Aller au résultat précédent" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Quitter le mode recherche" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Parcourir les pistes audio" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Diminuer/augmenter le volume" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Muet" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Ajustez le délai audio de +/- 0,1 seconde" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Commutation de la visibilité des sous-titres" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Parcourir les sous-titres disponibles" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Ajustez le délai des sous-titres de +/- 0,1 seconde" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Commutation de la priorité de style des sous-titres SSA/ASS" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Déplacer les sous titres en haut/bas" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Commutation du mode de compatibilité VSFilter" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Parcourir les pistes vidéo" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Augmenter/diminuer la portée du panoramique et du balayage" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Prendre une capture d'écran" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Prendre une capture d'écran, sans les sous-titres" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Prendre une capture d'écran, comme la fenêtre le montre" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Réduire de moitié la taille de la vidéo" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Redimensionner la vidéo à sa taille d'origine" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Doubler la taille de la vidéo" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Ajuster le contraste" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Ajuster la luminosité" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Ajuster le gamma" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Ajuster la saturation" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Activer ou désactiver le désentrelaceur" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Remplacement du rapport d'aspect du cycle" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Interface de l'utilisateur" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Vidéo" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Audio" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Sous-titre" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Lecture" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Navigation" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Chargement de la piste audio...." + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Chargement de la piste vidéo..." + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Chargement des sous-titres...." + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Activation ou désactivation des décorations côté client. Nécessite un " +"redémarrage pour prendre effet." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Ajouter un dossier à la liste de lecture" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Ouvrir le dossier" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Ajouter un fichier à la liste de lecture" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Ouvrir un fichier" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Ajouter l'emplacement à la liste de lecture" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Ouvrir un emplacement" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Enregistrer la liste de lecture" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "Une interface GTK pour MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" +"Harenome Ranaivorarivony Razanajato\n" +"JeanDeLaMouche\n" +"Erwan Amans \n" +"Yoshida Shouyou" diff --git a/po/hr.po b/po/hr.po new file mode 100644 index 0000000..372cc5f --- /dev/null +++ b/po/hr.po @@ -0,0 +1,1152 @@ +# gnome-mpv , 2019. #zanata +# gogo , 2019. #zanata +# gogo , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: gnome-mpv 0.15\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-20 20:48+0700\n" +"PO-Revision-Date: 2020-05-16 06:44-0400\n" +"Last-Translator: gogo \n" +"Language-Team: Croatian\n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "Jesu li postavke već migrirane iz prijašnje inačice" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Automatski prilagodi prozor na video veličinu" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Omogući tamnu temu" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Omogući ukrase klijenta" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Koristi lebdeća upravljanja u prozorskom načinu prikaza" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"Najmanja brzina pokazivača miša pri kojoj će lebdeće upravljanje biti " +"prikazano." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Koristi tipke preskakanja za upravljanje popisom izvođenja" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Uvijek otvori novi prozor" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Mogućnosti za prosljeđivanje u mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Putanja do mpv datoteke podešavanja" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Putanja do ulazne datoteke mpv podešavanja" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Omogući MPRIS podršku" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Omogući podršku medijskih tipki" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Preuzmi metapodatke" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Zanemari greške reprodukcije" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Širina prozora" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Visina prozora" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Treba li uvećati prozor" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Glasnoća zvuka reporduktora" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Treba li ponovno pokrenuti popis izvođenja kada je dosegnut kraj" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Širina popisa izvođenja" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Treba li prikazati upravljanja" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Prikazuj ili ne prikazuj popis izvođenja" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "URI posljednje pristupljene mape" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celuloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "GTK+ grafičko korisničko sučelje za mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" +"Celuloid je jednostavan medijski reproduktor koji može reproducirati " +"virtualno sve video i zvučne formate. Podržava popise izvođenja i MPRIS2 " +"medijsko upravljanje reprodukcijom. Dizajn Celuloida slijedi smjernice GNOME" +" Human sučelja , ali isto tako može biti prilagođen za druge sustave koji ne" +" koriste ukrase od strane klijenta (CSD). Temelji se na mpv biblioteci i " +"GTK-u." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Značajke:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Povuci i ispusti popis izvođenja" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Učitavanje vanjske mpv datoteke podešavanja" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "MPRIS2 D-Bus sučelje" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Celuloid razvijatelji" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Ovo izdanje sadrži sljedeće promjene:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" +"Ovaj popis je nepotpun. Pogledajte git zapis za potpuni pregled promjena." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Prilagodba raspona tipke glasnoće zvuka temeljene na vrijednosti svojstva " +"najveće glasnoće zvuka" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Zadržavanje stanja uvećanog prozora po sesijama." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Zadržavanje stanja petlje po sesijama." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Implemetirana je pretraga popisa izvođenja." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Nadopunjen je popis prečaca u dijalogu prečaca tipkovnice." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Ispravljeno je rukovanje s navodnicima i escape nizovima u dodatnim mpv " +"mogućnostima." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" +"Prikaz vremena na položaju pokazivača pri prelasku preko trake pretrage." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"Zastarjelo '--mpv-options'. Mogućnosti koje započinju s '--mpv-' umjesto se " +"mogu koristiti za postavljanje mpv mogućnosti. Na primjer, proslijeđivanje '" +"--mpv-vf=vflip' u Celluloid je ekvivalent proslijeđivanju '--vf=vflip' u " +"mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Dodana je mogućnost podešavanja mrtve zone, područje u kojemu pomicanje miša" +" neće pokrenuti prikazivanje kontrola." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" +"Promjena veličine prozora na zaslonima visoke razlučivosti (HiDPI) sada radi" +" ispravno." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Finski prijevod je dodao Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Slovenski prijevod je dodao @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Perzijski prijevod je dodao @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Ukrajinski prijevod je dodao @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Dodana je podrška za prikaz/sakrivanje ukrasa prozora pomoću mogućnosti " +"--border" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Dodana je stavka izbornika za otvaranje diskova" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Blokirano je automatsko sakrivanje pokazivača miša kada je skočni prozor " +"glasnoće zvuka otvoren u prozorskom načinu prikaza" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Popravljeno je rušenje s mpv 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Preimenovanje projekta u Celuloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Turski prijevod je dodao @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Esperanto prijevod je dodao @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Prijelaz sa opengl-cb u novi API prikaza" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Rukovanje brojčanim prečacima" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Rukovanje unikôdnim prečacima" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Proslijeđivanje događaja medijske tipke u mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Dodan je dconf izraz za upravljanje brzinom pokazivača miša kada se " +"upravljanja prikažu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Dodana je mogućnost za potiskivanje grešaka repordukcije" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Podjela kartice Općenito u dijalogu osobitosti" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Poboljšanje ponašanja uklj/isklj popisa izvođenja pri popločenom prikazu u " +"upraviteljima prozora" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Premještanje izbornika aplikacije u glavni izbornik" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Korištenje zasebnog MPRIS DBus povezivanja za svaki prozor" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Dodana je podrška za MPRIS LoopStatus svojstvo" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Dodana je mogućnost --mpv-options za postavljanje proizvoljne mpv mogućnosti" +" iz naredbenog redka" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Zadani direktorij snimki zaslona je postavljen u XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"Poboljšano je rukovanje sa --window-scale, --autofit, --autofit-larger i " +"--autofit-smaller" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Dodana je WM_ROLE mogućnost naredbenog redka" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" +"Dodana je stavka sadržajnog izbornika za uklanjanje stavki popisa izvođenja" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" +"Dodana je stavka sadržajnog izbornika za kopiranje lokacije stavki popisa " +"izvođenja" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Dodana je mogućnost za stvaranje tipki preskakanja stavki popisa izvođenja " +"radije nego poglavlja" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Odabiratelj datoteka sada prihvaća nelokalne lokacije" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" +"Dodana je stavka izbornika lijevog klika u svrhu ponavljanja jedne datoteke" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" +"Rukovanje događajima svojstava promjene za cjelozaslonski ili prikaz u " +"prozoru" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" +"Dodana je mogućnost za automatsko sakrivanje pokazivača miša u prozorskom " +"načinu prikaza" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Glavni prozor prikazuje aplikaciju u akciji" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Glavni prozor s onemogućenim CSD-om" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Glavni prozor sa otvorenim popisom izvođenja" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Multimedijski reporduktor" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Gledajte filmove i video snimke" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "" +"Video;Snimka;Film;Klip;Serija;Reproduktor;DVD;TV;Disk;Album;Glazba;GNOME;mpv;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Novi prozor" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Reprodukcija" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Prikaži inačicu izdanja" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Dodaj u red čekanja" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Stvori novi prozor" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "MOGUĆNOSTI" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Postavi namjenu prozora" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Ne povezuj s već pokrenutim primjerkom" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Pauziraj" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Reproduciraj" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Zaustavi" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Premotaj unaprijed" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Premotaj unatrag" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Sljedeće poglavlje" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Prijašnje poglavlje" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Ponovi popis izvođenja" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Naizmjenični popis izvođenja" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Prozor ili cijeli zaslon" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Greška" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Dodaj datoteke" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Medijske datoteke" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Glazbene datoteke" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Video datoteke" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Slikovne datoteke" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Datoteke podnaslova" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Nikakav" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Nepoznat" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "_Učitaj vanjski…" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Nema pronađenog diska" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Datoteka" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Otvori…" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Otvori _lokaciju…" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Otvori _disk…" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Spremi popis izvođenja" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Novi prozor" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Zatvori" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Uredi" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Osobitosti" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Video zapis" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Zvučni zapis" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "Z_apis podnaslova" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Pogled" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "Uklj/Isklj _upravljanja" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "Uklj/Isklj popis _izvođenja" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Cjelozaslonski prikaz" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Pomoć" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Prečaci tipkovnice" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_O Celuloidu" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Otvori _disk" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "Reporodukcija je prekinuta neočekivano. Razlog: %s." + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Lokacija:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Odustani" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Otvori" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Neuspjela primjena jedne ili više MPV mogućnosti." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Kopiraj lokaciju" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Ukloni" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Dodaj…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Dodaj _lokaciju…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Naizmjenično" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Ponovi _datoteku" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Ponovi _popis izvođenja" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Popis izvođenja" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Popis izvođenja je prazan" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Dodaj priključak" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Lua priključci" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "JavaScript priključci" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "C priključci" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Neuspjelo kopiranje datoteke sa '%s' na '%s'. Razlog: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Nema pronađenih priključaka" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Ukloni" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "Sigurno želite ukloniti ovu skriptu? Ova radnja se ne može poništiti." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Neuspjelo brisanje datoteke '%s'. Razlog: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Sučelje" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Datoteke podešavanja" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Ostalo" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Priključci" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Spremi" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Osobitosti" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Otvori datoteku" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Otvori lokaciju" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Dodaj datoteku na popis izvođenja" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Dodaj lokaciju na popis izvođenja" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Prikaži dijalog osobitosti" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Uklj/Isklj upravljanja" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Uklj/Isklj popis izvođenja" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Uklj/Isklj cjelozaslonski način rada" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Napusti cjelozaslonski prikaz" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "" +"Uklj/Isklj OSD prikaz napretka i proteklog vremena/trajanja reprodukcije" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Prikaži naziv datoteka na OSD-u" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Prikaži napredak, proteklo vrijeme i trajanje na OSD-u" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Premotaj unatrag/unaprijed za 5 sekundi" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Premotaj unatrag/unaprijed za 1 sekundu" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Premotaj unatrag/unaprijed za 1 minutu" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Premotaj unatrag/unaprijed za 5 sekundi" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Prebaci na prijašnji/sljedeći podnaslov" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Premotaj za sličicu unatrag/unaprijed" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Premotaj na početak prijašnjeg/sljedećeg poglavlja" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Smanji/Povećaj brzinu reprodukcije za 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Smanji za pola ili udvostruči brzinu trenutne reprodukcije" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Vrati na normalnu brzinu repordukcije" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Idi natrag/naprijed u popisu izvođenja" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Ukloni odabranu stavku s popisa izvođenja" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Spremi popis izvođenja" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Postavi/Ukloni A-B točke ponavljanja" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Uklj/Isklj beskonačno ponavljanje" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Pauziraj ili nastavi reprodukciju" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Zatvori" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Spremi trenutni položaj reprodukcije i zatvori" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Pokreni način pretrage" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Idi na sljedeće podudaranje" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Idi na prijašnje podudaranje" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Zatvori način pretrage" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Odaberi/Prebacuj zvučne zapise" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Pojačaj/Smanji glasnoću zvuka" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Utišaj ili uključi zvuk" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Prilagodi odgodu zvuka za +/- sekundi" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Uklj/Isklj podnaslov" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Odaberi/Prebacuj podnaslove" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Prilagodi odgodu podnaslova za +/- sekundi" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Uklj/Isklj obilaženje SSA/ASS izgleda podnaslova" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Pomakni podnaslove gore/dolje" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Uklj/Isklj način kompatibilnosti VSFilter omjera" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Odaberi/Prebacuj video zapise" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Povećaj/Smanji raspon skeniranja-obrezivanja" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Uslikaj zaslon" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Uslikaj zaslon bez podnaslova" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Uslikaj zaslon kako je prikazan u prozoru" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Promijeni veličinu videa na polovicu izvorne veličine" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Promijeni veličinu videa na izvornu veličinu" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Promijeni veličinu videa na dvostruko od izvorne veličine" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Prilagodi kontrast" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Prilagodi svjetlinu" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Prilagodi gamu" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Prilagodi zasićenje" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Aktiviraj ili deaktiviraj raspletanje" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Odaberi/Prebacuj omjer prikaza" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Korisničko sučelje" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Video" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Zvuk" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Podnaslov" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Reprodukcija" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Premotavanje" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Učitaj zvučni zapis…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Učitaj video zapis…" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Učitaj zapis podnaslova…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Omogućavanje ili onemogućavanje ukrasa od strane klijenta zahtijeva ponovno " +"pokretanje." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Dodaj datoteku na popis izvođenja" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Otvori datoteku" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Dodaj lokaciju na popis izvođenja" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Otvori lokaciju" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Spremi popis izvođenja" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "GTK grafičko korisničko sučelje za mpv" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" +"Launchpad Contributions:\n" +" gogo https://launchpad.net/~trebelnik-stefina" diff --git a/po/hu.po b/po/hu.po new file mode 100644 index 0000000..15e6ea6 --- /dev/null +++ b/po/hu.po @@ -0,0 +1,1118 @@ +# gnome-mpv , 2019. #zanata +# gnome-mpv , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-20 20:48+0700\n" +"PO-Revision-Date: 2020-06-23 10:40-0400\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Hungarian\n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Sötét téma engedélyezése" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Kliensoldali díszítések engedélyezése" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Az mpv-nek átadandó opciók" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Az mpv konfigurációs fájl útvonala" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Az mpv bemeneti konfigurációs fájl útvonala" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Az ablak szélessége" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Az ablak magassága" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "A lejátszó hangereje" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "A lejátszási lista szélessége" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "GTK+ felület az mpv-hez" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Funkciók:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Fogd és vidd lejátszási lista" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Külső mpv konfigurációs fájlok betöltése" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "MPRIS2 D-Bus interfész" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Az alkalmazás működés közben" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "A főablak letiltott díszítésekkel" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "A főablak megnyitott lejátszási listával" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "" + +#: src/celluloid-application.c:551 +#, fuzzy +msgid "Show release version" +msgstr "Kiadási verzió megjelenítése" + +#: src/celluloid-application.c:559 +#, fuzzy +msgid "Enqueue" +msgstr "Sorba állítás" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Ne csatlakozzon egy már futó példányhoz" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Szünet" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Lejátszás" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Megállítás" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Előretekerés" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Visszatekerés" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Következő fejezet" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Előző fejezet" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Átváltás teljes képernyőre" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Hiba" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Egyik sem" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Ismeretlen" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "_Külső betöltése..." + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Fájl" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "Lejátszási lista _mentése" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "" + +#: src/celluloid-menu.c:242 +#, fuzzy +msgid "_Quit" +msgstr "Kilépés" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Szerkesztés" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Beállítások" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Videósáv" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Hangsáv" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "F_eliratsáv" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Nézet" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Vezérlők be-/kikapcsolása" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Lejátszási lista be-/kikapcsolása" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Teljes képernyő" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Súgó" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Billentyűkombinációk" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "" + +#: src/celluloid-menu.c:321 +#, fuzzy +msgid "Open _Disc" +msgstr "Fájl megnyitása" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "A lejátszás nem megfelelően lett leállítva. Ok: %s." + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Hely:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Mégse" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Megnyitás" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Egy vagy több MPV beállítás alkalmazása nem sikerült" + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Hozzáadás..." + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "_Hely hozzáadása..." + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Lejátszási lista" + +#: src/celluloid-playlist-widget.c:943 +#, fuzzy +msgid "Playlist is empty" +msgstr "Lejátszási lista" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "A fájl másolása innen: „%s\", ide: „%s\" nem sikerült. Ok: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Eltávolítás" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "" +"Biztosan el akarja távolítani ezt a parancsfájlt? Ez a művelet nem vonható " +"vissza." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "„%s\" fájl törlése nem sikerült. Ok: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Mentés" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Beállítások" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Fájl megnyitása" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Hely megnyitása" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Beállítások párbeszédablak mutatása" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Vezérlők be-/kikapcsolása" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Lejátszási lista be-/kikapcsolása" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Teljes képernyős mód be-/kikapcsolása" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Kilépés a teljes képernyős módból" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "Váltás a normál és a lejátszási idő/hossz OSD között" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Fájlnév megjelenítése az OSD-n" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "" + +#: src/celluloid-shortcuts-window.c:71 +#, fuzzy +msgid "Seek backward/forward 5 seconds" +msgstr "Visszatekerés/előretekerés 5 másodperccel" + +#: src/celluloid-shortcuts-window.c:72 +#, fuzzy +msgid "Exact seek backward/forward 1 second" +msgstr "Visszatekerés/előretekerés pontosan 1 másodperccel" + +#: src/celluloid-shortcuts-window.c:73 +#, fuzzy +msgid "Seek backward/forward 1 minute" +msgstr "Visszatekerés/előretekerés 1 perccel" + +#: src/celluloid-shortcuts-window.c:74 +#, fuzzy +msgid "Exact seek backward/forward 5 seconds" +msgstr "Visszatekerés/előretekerés pontosan 5 másodperccel" + +#: src/celluloid-shortcuts-window.c:75 +#, fuzzy +msgid "Seek to previous/next subtitle" +msgstr "Ugrás az előző/következő felirathoz" + +#: src/celluloid-shortcuts-window.c:76 +#, fuzzy +msgid "Step backward/forward a single frame" +msgstr "Visszalépés/előrelépés egy képkockával" + +#: src/celluloid-shortcuts-window.c:77 +#, fuzzy +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Ugrás az előző/következő fejezet elejére" + +#: src/celluloid-shortcuts-window.c:80 +#, fuzzy +msgid "Decrease/increase playback speed by 10%" +msgstr "Lejátszási sebesség csökkentése/növelése 10%-kal" + +#: src/celluloid-shortcuts-window.c:81 +#, fuzzy +msgid "Halve/double current playback speed" +msgstr "Jelenlegi lejátszási sebesség felezése/duplázása" + +#: src/celluloid-shortcuts-window.c:82 +#, fuzzy +msgid "Reset playback speed to normal" +msgstr "Normál lejátszási sebesség visszaállítása" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Ugrás előre/hátra a lejátszási listában" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Kiválasztott lejátszási elem eltávolítása" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Lejátszási lista mentése" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "A-B ismétlési szakasz beállítása/törlése" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Végtelen ismétlés be-/kikapcsolása" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Szünet vagy folytatás" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Kilépés" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Jelenlegi lejátszási pozíció mentése és kilépés" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Váltás a hangsávok között" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Hangerő csökkentése/növelése" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Némítás be-/kikapcsolása" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Hangsáv eltolásának beállítása 0,1 mp időközökkel" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Felirat láthatóságának be-/kikapcsolása" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Váltás az elérhető feliratok között" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Feliratok eltolásának beállítása 0,1 mp időközökkel" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "SSA/ASS feliratstílus felülbírálásának be-/kikapcsolása" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Feliratok mozgatása fel/le" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "VSFilter képarány-kompatibilitási mód be-/kikapcsolása" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Váltás a videósávok között" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Pan-and-scan tartomány csökkentése/növelése" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Képernyőkép készítése" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Képernyőkép készítése feliratok nélkül" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Képernyőkép készítése az ablak tartalmáról" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Videó átméretezése az eredeti méret felére" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Videó átméretezése az eredeti méretre" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Videó átméretezése az eredeti méret kétszeresére" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Kontraszt beállítása" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Világosság beállítása" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Gamma beállítása" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Telítettség beállítása" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Váltottsorosság-mentesítés be-/kikapcsolása" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Felhasználói felület" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Videó" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Hang" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Felirat" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Lejátszás" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Tekerés" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Fájl hozzáadása a lejátszási listához" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Fájl megnyitása" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Hely hozzáadása a lejátszási listához" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Hely megnyitása" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Lejátszási lista mentése" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "Egy GTK felület az MPV-hez" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" diff --git a/po/is.po b/po/is.po new file mode 100644 index 0000000..63304b6 --- /dev/null +++ b/po/is.po @@ -0,0 +1,1103 @@ +# Sveinn í Felli , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: celluloid\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-10-09 22:16+0700\n" +"PO-Revision-Date: 2020-11-13 11:57-0500\n" +"Last-Translator: Sveinn í Felli \n" +"Language-Team: Icelandic \n" +"Language: is\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%10!=1 || n%100==11)\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "Hvort stillingar hafi þegar verið yfirfærðar úr fyrri útgáfu" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Aðlaga stærð gluggans sjálfvirkt að myndmerki" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Virkja dökkt þema" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Virkja gluggaskreytingar biðlara (CSD)" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Nota fljótandi stjórntæki í gluggaham" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Fela músarbendil sjálfvirkt í gluggaham" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "Lágmarkshraði bendils til að fljótandi stjórntæki birtist." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Láta skráaval muna staðsetningu síðast notuðu skrár" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Alltaf opna nýjan glugga" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Viðföng til að gefa til mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Slóð að mpv stillingaskrá" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Hlaða inn stillingaskrá mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Slóð að inntaksstillingaskrá mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Hlaða inn inntaksstillingaskrá mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Virkja stuðning við MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Virkja stuðning við margmiðlunarlykla" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Sækja lýsigögn fyrirfram" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Hunsa villur í afspilun" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Koma í veg fyrir að setan verði aðgerðalaus" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Breidd gluggans" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Hæð gluggans" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Hvort glugginn er hámarkaður eða ekki" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Hljóðstyrkur spilarans" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Hvort eigi að endurtaka þegar enda spilunarlistans er náð" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Breidd spilunarlistans" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Birta eða fela stjórntækin" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Birta eða fela spilunarlistann" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "Slóð á síðast notaða möppu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "GTK+ viðmót fyrir mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Eiginleikar:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Draga og sleppa á spilunarlista" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Hleð inn utanaðkomandi mpv-stillingaskrám" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "MPRIS2 D-Bus viðmót" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Celluloid þróunarteymið" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Þessi útgáfa inniheldur eftirfarandi breytingar:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Bætt við finnskri þýðingu eftir Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Bætt við slóvenskri þýðingu eftir @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Bætt við persneskri þýðingu eftir @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Bætt við úkraínskri þýðingu eftir @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Bætt við valmyndarfærslu til að opna diska" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Bætt við tyrkneskri þýðingu eftir @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Bætt við esperantó-þýðingu eftir @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Aðalglugginn sýnir virkni forritsins" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Aðalglugginn með CSD óvirkt" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Aðalglugginn með spilunarlistann opinn" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Margmiðlunarspilari" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Horfðu á kvikmyndir og myndskeið" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "" +"Myndskeið;Vídeó;Kvikmynd;Filma;Þættir;Spilari;DVD;TV;Diskur;albúm;tónlist;GNOME;mpv;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Nýr gluggi" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Spila" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Sýna útgáfunúmer" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Setja í biðröð" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Búa til nýja glugga" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "VALKOSTIR" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Setja hlutverk glugga" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Ekki tengjast við tilvik sem þegar er í gangi" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Í bið" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Spila" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Stöðva" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Spóla áfram" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Spóla til baka" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Næsti kafli" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Fyrri kafli" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Víxla endurtekningu spilunarlista af/á" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Stokka spilunarlista" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Víxla skjáfylli af/á" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Villa" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Allar skrár" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Margmiðlunarskrár" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Hljóðskrár" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Myndskeiðasskrár" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Myndskrár" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Skjátextaskrár" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Ekkert" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Óþekkt" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "H_laða inn utanaðkomandi…" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Enginn diskur fannst" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Skrá" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Opna…" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Opna _möppu...…" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Opna staðsetnin_gu…" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Opna _disk…" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "Vi_sta spilunarlista" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Nýr gluggi" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Hætta" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "Br_eyta" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Kjörstillingar" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "Mynds_por" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Hljóðspor" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "Skjátextasp_or" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "S_koða" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "Ví_xla stýringum af/á" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "Ví_xla spilunarlista af/á" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "Skjá_fylli" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Hjálp" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "Flýtily_klar" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Um Celluloid" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Opna _disk" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "" + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Staðsetning:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Hætta við" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Opna" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "" + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Afrita staðsetningu" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "Fja_rlægja" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "Bæt_a við…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Bæta við _möppu…" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Bæta við staðsetnin_gu…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Stokka" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Endurtaka s_krá" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Endurtaka s_pilunarlista" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Lagalisti" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Spilunarlisti er tómur" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Bæta við forritsviðbót" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Lua-viðbætur" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "JavaScript-viðbætur" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "C-viðbætur" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Mistókst að afrita skrá úr '%s' yfir í '%s'. Ástæða: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Engar viðbætur fundust" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Fjarlægja" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "" +"Ertu viss um að þú viljir fjarlægja þessa skriftu? Það er ekki hægt að taka " +"þetta aftur." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Mistókst að eyða skránni '%s'. Ástæða: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "Stillingaskrá mpv:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "Inntaksstillingaskrá mpv:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Fleiri mpv-valkostir:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Viðmót" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Stillingaskrár" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Ýmislegt" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Viðbætur" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "Vi_sta" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Kjörstillingar" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Opna skrá" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Opna staðsetningu" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Bæta skrá á spilunarlista" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Bæta staðsetningu á spilunarlista" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Birta kjörstillingaglugga" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Víxla stýringum af/á" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Víxla spilunarlista af/á" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Víxla heilskjásham af/á" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Hætta í skjáfylli" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Birta heiti skráa í OSD-stjórntexta" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Leita afturábak/áfram um 5 sekúndur" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Leita nákvæmt afturábak/áfram um 1 sekúndu" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Leita afturábak/áfram um 1 mínútu" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Leita nákvæmt afturábak/áfram um 5 sekúndur" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Fara í fyrri/næsta skjátexta" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Fara afturábak/áfram um einn ramma" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Minnka/auka afspilunarhraða um 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Helminga/tvöfalda núverandi afpilunarhraða" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Endurstilla afspilunarhraða á venjulegan" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Fara afturábak/áfram í spilunarlistanum" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Fjarlægja valið atriði úr spilunarlista" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Vista spilunarlista" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Gera hlé eða halda áfram" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Hætta" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Vista núverandi staðsetningu í afspilun og hætta" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Fara í leitarham" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Hoppa í næstu samsvörun" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Hoppa í fyrri samsvörun" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Fara út úr leitarham" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Fletta í gegnum hljóðspor" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Minnka/auka hljóðstyrk" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Þagga eða kveikja á hljóði" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Aðlaga töf hljóðs um +/- 0.1 sekúndur" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Víxla sýnileika skjátexta af/á" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Fletta í gegnum tiltæka skjátexta" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Aðlaga töf skjátexta um +/- 0.1 sekúndur" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Færa skjátexta upp/niður" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Fletta í gegnum myndmerkisspor" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Taka skjámynd" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Taka skjámynd án skjátexta" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Taka skjámynd eins og glugginn sýnir" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Aðlaga stærð í helming myndmerkis" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Aðlaga stærð að upprunalegri stærð myndmerkis" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Aðlaga stærð í tvöfalda stærð myndmerkis" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Aðlaga birtuskil" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Aðlaga birtustig" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Aðlaga litróf" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Aðlaga litmettun" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Virkja eða afvirkja affléttun" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Notandaviðmót" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Myndmerki" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Hljóð" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Texti" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Afspilun" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Leita" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Hlaða inn hljóðspori…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Hlaða inn myndskeiðspori…" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Hlaða inn skjátextaspori…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Bæta möppu á spilunarlista" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Opna möppu..." + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Bæta skrá á spilunarlista" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Opna skrá" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Bæta staðsetningu á spilunarlista" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Opna staðsetningu" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Vista spilunarlista" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "GTK viðmót fyrir mpv" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Sveinn í Felli" diff --git a/po/it.po b/po/it.po new file mode 100644 index 0000000..d48bef9 --- /dev/null +++ b/po/it.po @@ -0,0 +1,1162 @@ +# gnome-mpv , 2019. #zanata +#,,,,zjf , 2020. #zanata +# gnome-mpv , 2020. #zanata +# asdfghdsadfg , 2021. #zanata +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-20 20:48+0700\n" +"PO-Revision-Date: 2021-02-11 01:36-0500\n" +"Last-Translator: asdfghdsadfg \n" +"Language-Team: Italian\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "" +"Determina se la migrazione delle preferenze da una versione precedente è " +"stata già effettuata" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Ridimensiona automaticamente la finestra per adattarla al video" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Attiva tema scuro" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Attiva le decorazioni client-side" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Usa i controlli mobili in modalità finestra" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Nascondi automaticamente il cursore del mouse in modalità finestra" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"La velocità minima del cursore alla quale saranno mostrati i controlli a " +"schermo." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Dimensione della zona morta in cui il movimento del cursore non comporterà " +"la visualizzazione dei controlli." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Usa i pulsanti di salto per controllare la playlist" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" +"Fai in modo che selettore di file ricordi la posizione dell'ultimo file" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Apri sempre una nuova finestra" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Opzioni da inserire in mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Percorso del file di configurazione di mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Carica il file di configurazione mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Percorso del file delle configurazioni di input di mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Carica il file delle configurazione di input di mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Abilita il supporto MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Abilita il supporto ai tasti multimediali" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Precarica i metadati" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ignora gli errori di riproduzione" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Inibisci l'inativazione della sessione" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Larghezza della finestra" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Altezza della finestra" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Determina se la finestra è massimizzata" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Volume del player" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "" +"Determina se eseguire la ripetizione quando si raggiunge il termine della " +"playlist" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Larghezza della playlist" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Determina se mostrare i controlli" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Determina se mostrare la playlist" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "Percorso dell'ultima cartella visualizzata" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "Un frontend in GTK+ per mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" +"Celluloid è un semplice lettore multimediale in grado di riprodurre " +"praticamente tutti i formati audio e video. Supporta playlist e controlli " +"MPRIS2 multimediali. Il design di Celluloid segue le linee guida GNOME Human" +" Interface, ma può anche essere adattato per altri sistemi che non usano " +"decorazioni lato client (CSD). Si basa sulle librerie libmpv e GTK." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Caratteristiche:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Trascinamento della playlist" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Caricamento di file di configurazione esterni di mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "Interfaccia MPRIS2 D-Bus" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Gli sviluppatori di Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Questa versione contiene le seguenti modifiche:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Rende possibile l'attivazione del menu contestuale quando la playlist è " +"vuota." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Prevenzione del ridimensionamento costante della barra di ricerca a causa " +"del ridimensionamento dell'etichetta timestamp quando il suo valore cambia." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Mostra solo una finestra di dialogo di errore quando si verifica un numero " +"elevato di errori in rapida successione." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Aggiunta una voce al menu per aprire le cartelle." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Regola la posizione degli elementi della UI delle finestre di dialogo in " +"modalità non CSD per essere più coerente con la modalità CSD." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Aggiunto il supporto per il caricamento di tracce video esterne." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Resa attivabile la riproduzione in ordine casuale delle playlist." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" +"Fa in modo che le associazioni dei tasti freccia funzionino con i tasti " +"freccia sul tastierino numerico." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" +"Questa lista è incompleta. Consultare git log per il changelog completo." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Regolazione dell'intervallo del pulsante del volume basata sul valore della " +"proprietà volume-max." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" +"Ricorda lo stato dalla massimizzazione della finestra da una sessione " +"all'altra." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Ricorda lo stato della ripetizione da una sessione all'altra." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Implementata la ricerca nella playlist." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" +"Aggiornata la lista della scorciatoie nell'apposita finestra di dialogo." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Gestione corretta delle virgolette e delle esclusioni nelle opzioni di mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" +"Mostra il tempo quando il cursore si sovrappone alla barra di selezione." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"'--mpv-options' obsoleto. Le opzioni che iniziano con '--mpv-' possono " +"essere usate come opzioni di mpv. Per esempio, '--mpv-vf=vflip' in Celluloid" +" è l'equivalente di '--vf=vflip' in mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Aggiunto supporto alla dead zone, un'area nella quale i movimenti del " +"cursore non invocheranno i controlli a schermo." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "Corretta la grandezza della finestra sugli schermi HiDPI." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Aggiunta traduzione finlandese di Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Aggiunta traduzione slovena di @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Aggiunta traduzione persiana di @danialbehzadi." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Aggiunta traduzione ucraina di @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Aggiunto supporto per l'abilitazione delle decorazioni delle finestre " +"tramite l'opzione di mpv --border" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Aggiunta voce del menù per l'apertura di dischi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Blocco della disabilitazione del cursore quando il popup del volume è aperto" +" in modalità finestra" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Risolto il crash con mpv 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Progetto rinominato in Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Aggiunta traduzione turca di @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Aggiunta traduzione esperanto di @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Migrazione da opengl-cb alla nuova API di rendering" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Gestione comandi da tastierino numerico" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Gestione comandi unicode" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Inoltro delle chiavi di eventi multimediali a mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Aggiunta chiave dconf per il controllo della velocità del cursore in cui i " +"controlli sono mostrati a schermo" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Aggiunta opzione per sopprimere gli errori di riproduzione" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Divisione della scheda Generale nella finestra delle preferenze" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Migliorato il comportamento della playlist con i tiling window manager" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Trasferite le voci dell'app menù nel menù primario" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Utilizzo di connessioni DBus MPRIS separate per ogni finestra" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Aggiunto supporto per la proprietà LoopStatus di MPRIS" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Aggiunta l'opzione --mpv-options per impostare opzioni di mpv dalla riga di " +"comando" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Cartella predefinita degli screenshot impostata a XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"Migliorata la gestione di --window-scale, --autofit, --autofit-larger, e " +"--autofit-smaller" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Aggiunta opzione da riga di comando per l'impostazione di WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "Aggiunta voce menù per la rimozione degli elementi della playlist" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" +"Aggiunta voce menù per copiare la posizione degli elementi della playlist" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Aggiunta opzione per fare in modo che i pulsanti di salto cambino gli " +"elementi della playlist piuttosto che i capitoli" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Il selettore dei file ora accetta anche posizioni non-locali" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "Aggiunta una voce nel menù clic-destro per ripetere un singolo file" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" +"Gestione degli eventi di modifica delle proprietà per fullscreen e window-" +"scale" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" +"Aggiunta opzione per nascondere automaticamente il cursore nella modalità " +"finestra" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "La finestra principale in funzione" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "La finestra principale con le decorazioni client-side disattivate" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "La finestra principale con la playlist visualizzata" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Riproduttore multimediale" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Riproduci film e video" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "Video;Film;Clip;Serie;Player;DVD;TV;Disco;Album;Musica;GNOME;mpv;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Nuova Finestra" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "In riproduzione" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Mostra versione release" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Accoda" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Apri una nuova finestra" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "OPZIONI" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Imposta il ruolo della finestra" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Non connettere a un'istanza già in esecuzione" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Pausa" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Riproduci" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Ferma" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Vai avanti" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Torna indietro" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Capitolo successivo" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Capitolo precedente" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Ripetizione della playlist" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Riordina la playlist" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Attiva/disattiva schermo intero" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Errore" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Tutti i file" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "File multimediali" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "File audio" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "File video" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "File immagine" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "File sottotitoli" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Nessuna" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Sconosciuta" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "_Importa…" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Nessun disco trovato" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_File" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Apri…" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Apri _cartella..." + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Apri _posizione…" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Apri _disco…" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Salva playlist" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Nuova finestra" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Esci" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Modifica" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Preferenze" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "Traccia _video" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "Traccia _audio" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "Traccia s_ottotitoli" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Visualizza" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "Visualizza/nascondi i _controlli" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "Visualizza/nascondi la _playlist" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "Schermo _intero" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Aiuto" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "Scorciatoie da _tastiera" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "I_nformazioni su Celluloid" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Apri _disco" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "La riproduzione si è interrotta in modo anomalo. Motivo: %s" + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Posizione:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Annulla" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Apri" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Impossibile applicare una o più opzioni di MPV" + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Copia posizione" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Rimuovi" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "A_ggiungi…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Aggiungi _cartella..." + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Aggiungi _posizione…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "Riproduzione cas_uale" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Ripeti il _file" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Ripeti la _playlist" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Playlist" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "La playlist è vuota" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Aggiungi plugin" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Plugin in Lua" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "Plugin in JavaScript" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "Plugin in C" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Impossibile copiare il file da '%s' a '%s'. Motivo: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Nessun plugin trovato" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Rimuovi" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "" +"Sei sicuro di voler cancellare questo script? Questa azione non può essere " +"annullata." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Impossibile cancellare il file '%s'. Motivo: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "file di configurazione di mpv:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "file di configurazione degli input di mpv:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Opzioni extra di mpv:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Interfaccia" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "File di configurazione" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Altre opzioni" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Plugin" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Salva" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Preferenze" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Apri file" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Apri posizione" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Aggiungi file alla playlist" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Aggiungi posizione alla playlist" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Mostra la finestra delle preferenze" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Visualizza/nascondi i controlli" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Visualizza/nascondi la playlist" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Attiva/disattiva la modalità a schermo intero" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Esci dalla modalità a schermo intero" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "Attiva/disattiva la visualizzazione del tempo in sovrimpressione" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Mostra il nome del file in sovrimpressione" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Mostra la durata, il tempo trascorso e mancante in sovrimpressione" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Vai indietro/avanti di 5 secondi" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Vai indietro/avanti di 1 secondo" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Vai indietro/avanti di un 1 minuto" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Vai indietro/avanti di 5 secondi" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Vai ai sottotitoli precedenti/prossimi" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Vai indietro/avanti di un singolo fotogramma" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Vai all'inizio del capitolo precedente/prossimo" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Diminuisci/aumenta la velocità di riproduzione del 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Dimezza/raddoppia la velocità di riproduzione corrente" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Ripristina la velocità di riproduzione normale" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Vai indietro/avanti nella playlist" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Rimuovi la voce selezionata dalla playlist" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Salva playlist" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Imposta/rimuovi la ripetizione fra i punti A-B" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Attiva/disattiva la ripetizione continua" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Pausa o riproduci" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Esci" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Salva la posizione di riproduzione corrente ed esci " + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Entra nella modalità di ricerca" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Vai alla corrispondenza successiva" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Vai alla corrispondenza precedente" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Esci dalla modalità di ricerca" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Scegli fra le tracce audio disponibili" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Diminuisci/aumenta il volume" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Attiva/disattiva l'audio" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Regola il ritardo dell'audio di +/- 0.1 secondi" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Attiva/disattiva la visualizzazione dei sottotitoli" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Scegli fra i sottotitoli disponibili" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Regola il ritardo dei sottotitoli di +/- 0.1 secondi" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Attiva/disattiva lo stile dei sottotitoli SSA/ASS" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Sposta i sottotitoli su/giù" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Attiva/disattiva la modalità di compatibilità per VSFilter" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Scegli fra le tracce video disponibili" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Diminuisci/Aumenta la grandezza del pan-and-scan" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Fai uno screenshot" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Fai uno screenshot, senza sottotitoli" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Fai uno screenshot, così come è la finestra" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Dimezza la dimensione originale del video" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Ripristina la dimensione originale del video" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Raddoppia la dimensione originale del video" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Modifica contrasto" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Modifica luminosità" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Modifica gamma" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Modifica saturazione" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Attiva o disattiva il deinterlacciatore" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Scegli fra le proporzioni di aspetto disponibili" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Interfaccia Utente" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Video" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Audio" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Sottotitoli" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Riproduzione" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Ricerca" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Carica traccia audio…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Carica traccia video…" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Carica traccia sottotitoli…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"L'abilitazione o la disabilitazione delle decorazioni client-side richiede " +"un riavvio per avere effetto." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Aggiungi cartella alla playlist" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Apri cartella" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Aggiungi file alla playlist" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Apri file" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Aggiungi posizione alla playlist" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Apri posizione" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Salva playlist" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "Un frontend in GTK per MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Giusy Margarita" diff --git a/po/ja.po b/po/ja.po new file mode 100644 index 0000000..fce06aa --- /dev/null +++ b/po/ja.po @@ -0,0 +1,1154 @@ +# Japanese translations for gnome-mpv package +# gnome-mpvパッケージに対する日本語翻訳. +# Copyright (C) 2015 THE gnome-mpv'S COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-mpv package. +# Tista , 2015. +# gnome-mpv , 2019. #zanata +# gnome-mpv , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: gnome-mpv 0.2\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-20 20:48+0700\n" +"PO-Revision-Date: 2020-06-23 10:48-0400\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Japanese <>\n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "暗いテーマを有効にする" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "CSDを有効にする" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +#, fuzzy +msgid "Options to pass to mpv" +msgstr "mpvに渡すオプション" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +#, fuzzy +msgid "Path to mpv configuration file" +msgstr "MPV設定ファイル" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +#, fuzzy +msgid "Path to mpv input configuration file" +msgstr "MPV入力設定ファイル" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +#, fuzzy +msgid "Width of the window" +msgstr "ウィンドウの横幅" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +#, fuzzy +msgid "Height of the window" +msgstr "ウィンドウの高さ" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +#, fuzzy +msgid "Volume of player" +msgstr "音量" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +#, fuzzy +msgid "Width of the playlist" +msgstr "プレイリストの幅" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "MPVのGTKフロントエンド" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "新しいウィンドウ" + +#: src/celluloid-application.c:495 +#, fuzzy +msgid "Playing" +msgstr "プレイ中" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "" + +#: src/celluloid-application.c:567 +#, fuzzy +msgid "Create a new window" +msgstr "新しいウィンドウを開きます" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "" + +#: src/celluloid-control-box.c:362 +#, fuzzy +msgid "Pause" +msgstr "一時停止" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +#, fuzzy +msgid "Play" +msgstr "プレー" + +#: src/celluloid-control-box.c:568 +#, fuzzy +msgid "Stop" +msgstr "停止" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +#, fuzzy +msgid "Toggle Fullscreen" +msgstr "全面表示を切換える" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +#, fuzzy +msgid "Error" +msgstr "エラー" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +#, fuzzy +msgid "All Files" +msgstr "全てのファイル" + +#: src/celluloid-file-chooser.c:147 +#, fuzzy +msgid "Media Files" +msgstr "メディア" + +#: src/celluloid-file-chooser.c:158 +#, fuzzy +msgid "Audio Files" +msgstr "音声" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "動画" + +#: src/celluloid-file-chooser.c:174 +#, fuzzy +msgid "Image Files" +msgstr "画像" + +#: src/celluloid-file-chooser.c:184 +#, fuzzy +msgid "Subtitle Files" +msgstr "字幕" + +#: src/celluloid-menu.c:106 +#, fuzzy +msgid "None" +msgstr "なし" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +#, fuzzy +msgid "Unknown" +msgstr "不明" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "ファイル(_F)" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "プレイリストの保存(_S)" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +#, fuzzy +msgid "_New Window" +msgstr "新しいウィンドウ" + +#: src/celluloid-menu.c:242 +#, fuzzy +msgid "_Quit" +msgstr "終了" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "編集(_E)" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "設定(_P)" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +#, fuzzy +msgid "_Video Track" +msgstr "ビデオトラック(_V)" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +#, fuzzy +msgid "_Audio Track" +msgstr "音声トラック(_A)" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +#, fuzzy +msgid "S_ubtitle Track" +msgstr "字幕トラック(_S)" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "表示(_V)" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "プレイリストの表示・非表示(_T)" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "全画面表示(_F)" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "ヘルプ(_H)" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +#, fuzzy +msgid "_Keyboard Shortcuts" +msgstr "ショートカット" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "" + +#: src/celluloid-menu.c:321 +#, fuzzy +msgid "Open _Disc" +msgstr "ファイルを開く" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "" + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "場所:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "キャンセル(_C)" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "開く(_O)" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "" + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "プレイリスト" + +#: src/celluloid-playlist-widget.c:943 +#, fuzzy +msgid "Playlist is empty" +msgstr "プレイリスト" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "" + +#: src/celluloid-plugins-manager-item.c:79 +#, fuzzy +msgid "Remove" +msgstr "削除" + +#: src/celluloid-plugins-manager-item.c:178 +#, fuzzy +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "このスクリプトを削除してもよろしいですか?このアクションを元に戻すことはできません。" + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "保存(_S)" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "設定" + +#: src/celluloid-shortcuts-window.c:57 +#, fuzzy +msgid "Open file" +msgstr "ファイルを開く" + +#: src/celluloid-shortcuts-window.c:58 +#, fuzzy +msgid "Open location" +msgstr "場所を開く" + +#: src/celluloid-shortcuts-window.c:59 +#, fuzzy +msgid "Add file to playlist" +msgstr "プレイリストにファイルを追加" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "" + +#: src/celluloid-shortcuts-window.c:61 +#, fuzzy +msgid "Show preferences dialog" +msgstr "設定を表示する" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "" + +#: src/celluloid-shortcuts-window.c:64 +#, fuzzy +msgid "Toggle fullscreen mode" +msgstr "全面表示を切換える" + +#: src/celluloid-shortcuts-window.c:65 +#, fuzzy +msgid "Leave fullscreen mode" +msgstr "全画面表示を終了" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "" + +#: src/celluloid-shortcuts-window.c:85 +#, fuzzy +msgid "Save playlist" +msgstr "プレイリストを保存" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "" + +#: src/celluloid-shortcuts-window.c:89 +#, fuzzy +msgid "Quit" +msgstr "終了" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "" + +#: src/celluloid-shortcuts-window.c:116 +#, fuzzy +msgid "Take a screenshot" +msgstr "スクリーンショットを撮る" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "" + +#: src/celluloid-shortcuts-window.c:130 +#, fuzzy +msgid "User Interface" +msgstr "ユーザーインターフェース" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "ビデオ" + +#: src/celluloid-shortcuts-window.c:132 +#, fuzzy +msgid "Audio" +msgstr "オーディオ" + +#: src/celluloid-shortcuts-window.c:133 +#, fuzzy +msgid "Subtitle" +msgstr "字幕" + +#: src/celluloid-shortcuts-window.c:134 +#, fuzzy +msgid "Playback" +msgstr "プレイバック" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "" + +#: src/celluloid-view.c:728 +#, fuzzy +msgid "Load Audio Track…" +msgstr "音声トラックをロードする" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "" + +#: src/celluloid-view.c:736 +#, fuzzy +msgid "Load Subtitle Track…" +msgstr "字幕をロードする" + +#: src/celluloid-view.c:901 +#, fuzzy +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "CSDの有効・無効は再起動が必要です。" + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "プレイリストの表示・非表示" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "ファイルを開く" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "場所を開く" + +#: src/celluloid-view.c:1532 +#, fuzzy +msgid "Save Playlist" +msgstr "_プレイリストの保存" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "MPVのGTKフロントエンド" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Tista" diff --git a/po/meson.build b/po/meson.build new file mode 100644 index 0000000..d2b9b3b --- /dev/null +++ b/po/meson.build @@ -0,0 +1,20 @@ +i18n.gettext(meson.project_name(), + preset: 'glib' +) + +msgfmt = find_program('msgfmt', required: false) +if msgfmt.found() + linguas = run_command('cat', files('LINGUAS')).stdout().strip().split('\n') + foreach lingua : linguas + po_file = '.'.join([lingua, 'po']) + test('Validate @0@'.format(po_file), msgfmt, + args: [ + '--output-file=/dev/null', + '--check-accelerator=_', + '-c', + '-v', + join_paths(meson.current_source_dir(), po_file) + ] + ) + endforeach +endif diff --git a/po/nl.po b/po/nl.po new file mode 100644 index 0000000..7688e88 --- /dev/null +++ b/po/nl.po @@ -0,0 +1,1138 @@ +# gnome-mpv , 2019. #zanata +# Jan Wesselink , 2020. #zanata +# gnome-mpv , 2020. #zanata +# Jan Wesselink , 2021. #zanata +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-20 20:48+0700\n" +"PO-Revision-Date: 2021-02-07 02:34-0500\n" +"Last-Translator: Jan Wesselink \n" +"Language-Team: Dutch\n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "Of de instellingen al gemigreerd zijn uit de vorige versie" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Automatisch aanpassen van venster aan video" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Schakel donker thema in" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Schakel client-side decoratie in" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Gebruik zwevenden bedieningselementen in venstermodus" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Automatisch verbergen van muisaanwijzer in venstermodus" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"De minimale cursorsnelheid waarbij de zwevende bedieningselementen weer " +"zichtbaar zullen worden." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Grootte van de dode zone die voorkomt dat bij muisbeweging de bediening " +"zichtbaar wordt. " + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Gebruik skip knoppen voor bediening van afspeellijst" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Laat de bestandskiezer de laatste bestandslocatie onthouden" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Altijd een nieuw venster openen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Opties om door te geven aan mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Pad naar mpv configuratiebestand" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Laad mpv configuratiebestand" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Pad naar mpv input configuratie bestand" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Laad mpv input configuratiebestand" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Schakel MPRIS support in" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Schakel media keys support in" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Haal metadata van te voren op" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Negeer afspeelfouten" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Blokkeer het inactiveren van de sessie" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Breedte van het venster" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Hoogte van het venster" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Of het venster wel of niet gemaximaliseerd is" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Volume van speler" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Wel of niet herhalen als het einde van de afspeellijst is bereikt " + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Breedte van de afspeellijst" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Geef de bediening wel of niet weer" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Geef de afspeellijst wel of niet weer" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "URI van de map die het laatst is geraadpleegd" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "GTK+ frontend voor mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" +"Celluloid is een eenvoudige mediaspeler die nagenoeg alle video en " +"audioformaten kan afspelen. Het ondersteunt afspeellijsten en MPRIS2 " +"mediaspeler bediening. Het ontwerp van Celluloid volgt de GNOME Human " +"Interface richtlijnen, maar kan ook worden aangepast voor andere systemen " +"die geen client-side-decortions gebruiken. Het is gebaseerd op de mpv " +"bibliotheek en op GTK. " + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Functies:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Sleep en plaats afspeellijst" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Externe mpv configuratiebestanden laden" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "MPRIS2 D-Bus interface" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "De Celluloid ontwikkelaars" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Deze uitgave bevat de volgende aanpassingen:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Maak het mogelijk om contextmenu te activeren als afspeellijst leeg is." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Voeg menu-item toe om mappen te openen." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Voeg ondersteuning to voor het laden van externe videofragmenten." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Maak willekeurig afspelen van afspeellijst schakelbaar." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "Deze lijst is onvolledig. Zie git log voor volledige changelog." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Stel het bereik van de volumeknop in op basis van de volume-max " +"eigenschappen" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Behoud maximale venstergrootte tussen verschillende sessies" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Behoud herhaalinstelling tussen verschillende sessies" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Implementeer zoeken in afspeellijst" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Werk de lijst met sneltoetsen bij in het dialoogvenster Sneltoetsen" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "Behandel citaten en escape-reeksen correct in extra mpv-opties" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "Geef de tijd weer op de cursorpositie wanneer u de zoekbalk beweegt" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"Beëindig '--mpv-opties'. Opties die beginnen met '--mpv-' kunnen in plaats " +"daarvan worden gebruikt om mpv-opties in te stellen. Het doorgeven van '--" +"mpv-vf = vflip' aan Celluloid is bijvoorbeeld gelijk aan het doorgeven van '" +"--vf = vflip' aan mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Voeg ondersteuning toe voor het configureren van de dode zone, een gebied " +"waarin muisbewegingen geen bediening zullen veroorzaken" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "Zorg ervoor dat venstergrootte correct werkt met HiDPI-schermen" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Finse vertaling toegevoegd door Kimmo Kujansuu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Sloveense vertaling toevoegd door @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Perzische vertaling toegevoegd door @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Oekraïense vertaling toegevoegd door @ vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Ondersteuning toevoegen voor het weergeven / verbergen van vensterdecoraties" +" met behulp van de mpv-optie --border" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Menu-item toevoegen voor het openen van schijven" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Blokkeer cursor autohide wanneer volume pop-up is geopend in venstermodus" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Fix crash met mpv 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Hernoem project naar Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Turkse vertaling toegevoegddoor @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Esperanto-vertaling toegevoegd door @ F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Migreer van opengl-cb naar de nieuwe render-API" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Verwerk numpad sneltoetsen" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Verwerk unicode sneltoetsen" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Stuur mediasleutelgebeurtenissen door naar mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Voeg een dconf-sleutel toe voor het instellen van de cursorsnelheid waarbij " +"bedieningselementen zichtbaar zullen worden" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Optie toevoegen om afspeelfouten te onderdrukken" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Verdeel het tabblad Algemeen in het voorkeurenvenster" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Verbeter het gedrag bij het wisselen van afspeellijst onder tegelende " +"vensterbeheerders" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Verplaats app-menu-items naar het primaire menu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Gebruik voor elk venster een afzonderlijke MPRIS DBus-verbinding" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Ondersteuning toevoegen voor MPRIS-eigenschap LoopStatus" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Optie --mpv-opties toevoegen voor het instellen van willekeurige mpv-opties " +"vanaf de opdrachtregel" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Stel de standaard schermafdruk-map in op XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"Verbeter de afhandeling van --window-schaal, --autofit, --autofit-groter en " +"--autofit-kleiner" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Het hoofdvenster dat de applicatie in actie laat zien" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Het hoofdvenster met CSD uitgeschakeld" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Het hoofdvenster met een afspeellijst open" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Nieuw venster" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Afspelen" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Toon release versie" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Voeg toe aan de wachtrij" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Creëer een nieuw venster" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "Opties" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Verbind niet met instantie die al draait" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Pauze" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Speel af" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Stop" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Voorwaarts" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Achterwaarts" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Volgend Hoofdstuk" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Vorig Hoofdstuk" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Herhaal afspeellijst" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Willekeurig afspelen afspeellijst" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Schakel naar volledig scherm" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Fout" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Alle bestanden" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Media bestanden" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Audio bestanden" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Video bestanden" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Afbeeldingen" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Ondertiteling" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Geen" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Onbekend" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "_Laad Externe…" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Geen schijf gevonden" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Bestand" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Open…" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Open _Locatie…" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Open _Schijf…" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Sla Afspeellijst op" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Nieuw venster" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Stoppen" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Bewerken" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Instellingen" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Video bestand" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Audio bestand" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "_Ondertitel bestand" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Weergave" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Schakel bediening in of uit" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Schakel afspeellijst in of uit" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Volledig Scherm" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Help" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Sneltoetsen" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Over Celluloid" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Open _Schijf…" + +#: src/celluloid-mpv.c:240 +#, fuzzy, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "Afspelen werd abnormaal beëindigd. Reden: %s." + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Locatie:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Annuleren" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Open" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Het toepassen van een of meerdere MPV opties is mislukt." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Kopieer Locatie" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Verwijder" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Voeg Toe…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Voeg _locatie toe" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Willekeurig " + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Herhaal _bestand" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Herhaal _afspeellijst" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Afspeellijst" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Afspeellijst is leeg" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Voeg plugin toe " + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Lua Plugins" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "JavaScript Plugins" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "C Plugins" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Bestand van '%s' naar '%s' kopiëren is mislukt. Reden: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Geen plugins gevonden" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Verwijderen" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "" +"Weet je het zeker dat je dit script wil verwijderen? Deze actie kan niet " +"ongedaan worden gemaakt." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Bestand '%s' verwijderen is mislukt. Reden: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Interface" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Config Bestanden" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Diversen" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Plugins" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Opslaan" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Instellingen" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Open bestand" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Open locatie" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Voeg bestand toe aan afspeellijst" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Voeg locatie toe aan afspeellijst" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Toon instellingen dialoog" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Schakel bediening in of uit" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Schakel afspeellijst in of uit" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Schakel naar volledig scherm" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Verlaat volledig scherm-modus" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "Schakel OSD weergave tussen normaal en afspeeltijd/duur" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Geef bestandsnaam weer op de OSD" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Geef vooruitgang, verstreken tijd en duratie weer op de OSD" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Zoek 5 seconden achter- of voorwaards" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Zoek exact 1 seconde achter- of voorwaards" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Zoek 1 minuut achter- of voorwaards" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Zoek exact 5 seconden achter- of voorwaards" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Zoek naar vorige/volgende ondertiteling" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Ga een frame achter- of voorwaarts" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Zoek naar het begin van het vorige/volgende hoofdstuk" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Verlaag of verhoog afspeelsnelheid met 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Halveer of verdubbel de huidige afspeelsnelheid" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Reset afspeelsnelheid naar normaal" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Ga achter- of voorwaards in de afspeellijst" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Verwijder geselecteerde item van de afspeellijst" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Sla afspeellijst op" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Instellen/verwijderen A-B punten herhaaldelijk afspelen" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Schakel eindeloos herhalen in" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Pauzeren of hervatten" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Afsluiten" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Sla huidige afspeelpositie op en sluit af" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Zoekmodus activeren" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Spring naar volgende overeenkomst" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Spring naar vorige overeenkomst" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Verlaat zoekmodus" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Doorloop audiotracks" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Verlaag of verhoog volume" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Dempen of dempen opheffen" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Verander audiovertraging met ±0.1 seconden" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Schakel ondertiteling in" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Doorloop beschikbare ondertitels" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Verander ondertitelingvertraging met ±0.1 seconden" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Verplaats ondertiteling omhoog of omlaag" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Doorloop videohoofdstukken" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Verkleinen/vergroten pan-en-scanbereik " + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Maak een schermafbeelding" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Maak een schermafbeelding zonder ondertiteling" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Maak een schermafbeelding zoals het venster het toont" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Formaat video wijzigen naar helft van origineel formaat" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Formaat video wijzigen naar origineel formaat" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Formaat video wijzigen naar dubbele grootte van origineel formaat" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Verander contrast" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Verander helderheid" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Verander gamma" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Verander verzadiging" + +#: src/celluloid-shortcuts-window.c:126 +#, fuzzy +msgid "Activate or deactivate deinterlacer" +msgstr "Activeer of deactiveer de deinterlacer" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Doorloop beeldverhouding omzeilen" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Gebruikersomgeving" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Video" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Audio" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Ondertiteling" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Afspelen" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Zoeken" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Laad Audio Track" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Laad video track" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Laad ondertitelingsbestand" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"In- of uitschakelen van client-side decoraties vereist herstarten van om " +"effect te hebben." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Voeg map toe aan afspeellijst" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Voeg Bestand toe aan Afspeellijst" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Open Bestand" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Voeg locatie toe aan Afspeellijst" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Open Locatie" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Sla Afspeellijst op" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "Een GTK frontend voor MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Waardering voor vertalers" diff --git a/po/pl.po b/po/pl.po new file mode 100644 index 0000000..5c7be11 --- /dev/null +++ b/po/pl.po @@ -0,0 +1,1158 @@ +# Piotr Sokół , 2016. +# gnome-mpv , 2019. #zanata +# Piotr Drąg , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: gnome-mpv 0.15\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-20 20:48+0700\n" +"PO-Revision-Date: 2020-10-11 04:51-0400\n" +"Last-Translator: Piotr Drąg \n" +"Language-Team: polski <>\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "Czy ustawienia zostały już zaimportowane z poprzedniej wersji" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Automatyczne dopasowywanie okna do rozmiaru wideo" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Ciemny motyw" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Wyświetlanie obramowania okna po stronie klienta" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Ukrywanie przycisków sterujących w trybie okna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Automatyczne ukrywanie kursora w trybie okna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"Minimalna prędkość kursora, przy jakiej przyciski sterujące zostaną " +"wyświetlone." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Rozmiar martwej strefy, w której ruch kursora nie spowoduje wyświetlenia " +"przycisków sterujących." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Używanie przycisków przechodzenia do sterowania listą odtwarzania" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Okno wyboru pliku pamięta położenie ostatnio używanego pliku" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Otwieranie zawsze w nowym oknie" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Opcje przekazywane do programu mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Ścieżka do pliku konfiguracji mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Wczytywanie pliku konfiguracji MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Ścieżka do pliku konfiguracji skrótów programu mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Wczytywanie pliku konfiguracji skrótów MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Obsługa MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Obsługa przycisków multimedialnych" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Wcześniejsze wczytywanie metadanych" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ignorowanie błędów odtwarzania" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Wstrzymywanie bezczynności sesji" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Szerokość okna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Wysokość okna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Czy okno jest zmaksymalizowane" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Głośność odtwarzania dźwięku" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Czy powtarzać listę odtwarzania po jej ukończeniu" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Szerokość listy odtwarzania" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Czy wyświetlać przyciski sterujące" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Czy wyświetlać listę odtwarzania" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "Adres URI ostatnio używanego katalogu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "Interfejs GTK dla biblioteki mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" +"Celluloid to prosty odtwarzacz multimedialny obsługujący praktycznie " +"wszystkie formaty dźwięku i wideo. Umożliwia korzystanie z list odtwarzania " +"i sterowanie za pomocą MPRIS2. Interfejs programu Celluloid jest zgodny " +"z Wytycznymi projektowania interfejsów GNOME, ale może być używany także " +"w innych środowiskach, które nie obsługują wyświetlania obramowań okna po " +"stronie klienta (CSD). Celluloid korzysta z bibliotek mpv i GTK." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Cechy:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "lista odtwarzania obsługująca przeciąganie plików," + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "wczytywanie zewnętrznych plików konfiguracji programu mpv," + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "obsługa interfejsu D-Bus MPRIS2." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Deweloperzy programu Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "To wydanie zawiera następujące zmiany:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Można teraz aktywować menu kontekstowe, kiedy lista odtwarzania jest pusta." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Pasek przewijania nie zmienia już bez przerwy rozmiaru z powodu zmieniania " +"się rozmiaru etykiety z czasem podczas odtwarzania." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Wyświetlane jest tylko jedno okno z błędem, kiedy wystąpi duża liczba błędów" +" w krótkim czasie." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Menu otwierania katalogów." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Położenie elementów interfejsu w oknach dialogowych w trybie bez CSD jest " +"spójniejsze z trybem CSD." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Obsługa wczytywania zewnętrznych ścieżek wideo." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Można teraz przełączać losowe odtwarzanie listy odtwarzania." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" +"Skróty z klawiszami strzałek działają teraz ze strzałkami na klawiaturze " +"numerycznej." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" +"Ta lista jest niepełna. Polecenie „git log” wyświetli pełną listę zmian." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Dostosowanie zakresu przycisku głośności na podstawie wartości własności " +"„volume-max”." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Zachowywanie stanu maksymalizacji okna między sesjami." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Zachowywanie stanu powtarzania między sesjami." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Implementacja wyszukiwania na liście odtwarzania." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Aktualizacja listy skrótów w oknie skrótów klawiszowych." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Właściwa obsługa cudzysłowów i sekwencji sterujących w dodatkowych opcjach " +"mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" +"Wyświetlanie czasu w pozycji kursora po najechaniu na pasek przewijania." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"„--mpv-options” jest przestarzałe. Zamiast tego do ustawiania opcji mpv " +"można używać opcji zaczynających się od „--mpv-”. Na przykład przekazanie " +"„--mpv-vf=vflip” do programu Celluloid jest odpowiednikiem przekazania " +"„--vf=vflip” do mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Obsługa konfigurowania martwej strefy, w której ruch kursora nie spowoduje " +"wyświetlenia przycisków sterujących." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" +"Rozmiar okna działa teraz poprawnie na ekranach o wysokiej rozdzielczości." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Nowe tłumaczenie na język fiński od Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Nowe tłumaczenie na język słoweński od @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Nowe tłumaczenie na język perski od @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Nowe tłumaczenie na język ukraiński od @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Obsługa wyświetlania/ukrywania obramowania okna za pomocą opcji --border " +"programu mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Menu otwierania płyt" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Blokowanie automatycznego ukrywania kursora, kiedy menu głośności jest " +"otwarte w trybie okna" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Poprawka awarii podczas używania mpv 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Zmiana nazwy projektu na Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Nowe tłumaczenie na język turecki od @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Nowe tłumaczenie na język esperanto od @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Migracja z opengl-cb na nowe API wyświetlania" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Obsługa skrótów na klawiaturze numerycznej" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Obsługa skrótów używających unikodu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Przekierowywanie zdarzeń klawiszy multimedialnych do programu mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Nowy klucz dconf do sterowania prędkością kursora, przy której przyciski " +"sterowania są wyświetlane" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Opcja ukrywania błędów odtwarzania" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Podział karty „Ogólne” w oknie preferencji" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Ulepszone zachowanie podczas przełączania listy odtwarzania w kafelkowych " +"menedżerach okien" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Przeniesienie menu programu do głównego menu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "" +"Używanie oddzielnego połączenia MPRIS z magistralą D-Bus dla każdego okna" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Obsługa własności „LoopStatus” interfejsu MPRIS" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Opcja --mpv-options do ustawiania dowolnych opcji programu mpv z wiersza " +"poleceń" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Ustawienie domyślnego katalogu zrzutów ekranu na XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"Ulepszona obsługa opcji --window-scale, --autofit, --autofit-larger " +"i --autofit-smaller" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Opcja wiersza poleceń do ustawiania WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "Menu kontekstowe do usuwania pozycji z listy odtwarzania" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "Menu kontekstowe do kopiowania ścieżki do pozycji listy odtwarzania" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Opcja zmieniająca działanie przycisków przechodzenia z rozdziałów na pozycje" +" listy odtwarzania" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Okno wyboru pliku przyjmuje nielokalne ścieżki" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "Powtarzanie jednego pliku w menu pod prawym przyciskiem" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "Obsługa zdarzeń zmiany własności dla pełnego ekranu i skalowania okna" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "Opcja automatycznego ukrywania kursora w trybie okna" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Główne okno przedstawiające działanie programu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "" +"Główne okno programu z wyłączonym wyświetlaniem obramowania okna po stronie " +"klienta" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Główne okno programu z listą odtwarzania" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Odtwarzacz multimedialny" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Odtwarzanie filmów i nagrań wideo" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "" +"Wideo;Video;Film;Movie;Klip;Clip;Serial;Series;Show;Odtwarzacz;Player;DVD;Diwidi;Blu-" +"ray;Bluray;Blue-ray;Blurej;TV;Płyta;Płyty;Disc;Album;Muzyka;Music;GNOME;mpv;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Nowe okno" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Odtwarzanie" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Wyświetla informacje o wersji" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Dodaje do kolejki odtwarzania" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Otwiera nowe okno" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "OPCJE" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Ustawia rolę okna" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Nie łączy z już uruchomionym wystąpieniem programu" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Wstrzymuje odtwarzanie" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Rozpoczyna odtwarzanie" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Zatrzymuje odtwarzanie" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Przechodzi naprzód" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Przechodzi wstecz" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Następny rozdział" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Poprzedni rozdział" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Powtarza listę odtwarzania" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Losuje kolejność odtwarzania z listy" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Przełącza wyświetlanie na pełnym ekranie" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Błąd" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Wszystkie pliki" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Pliki multimedialne" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Pliki dźwiękowe" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Pliki wideo" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Pliki obrazów" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Pliki napisów" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Brak" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Nieznana" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "_Wczytaj zewnętrzną…" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Nie odnaleziono płyty" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Plik" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Otwórz…" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Otwórz _katalog…" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Otwórz położ_enie…" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Ot_wórz płytę…" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "Z_apisz listę odtwarzania" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Nowe okno" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "Za_kończ" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Edycja" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Preferencje" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "Ścieżka _wideo" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "Ścieżka _dźwiękowa" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "Ścieżka _napisów" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Widok" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "Przyciski _sterujące" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Lista odtwarzania" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Pełny ekran" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "Pomo_c" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Skróty klawiszowe" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_O programie" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Ot_wórz płytę" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "Zakończono odtwarzanie w nieprawidłowy sposób. Powód: %s." + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Położenie:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Anuluj" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Otwórz" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Zastosowanie jednej lub więcej opcji MPV się nie powiodło." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "S_kopiuj położenie" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Usuń" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Dodaj…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Dodaj _katalog…" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Dodaj p_ołożenie…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Losowe odtwarzanie" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "_Powtarzanie pliku" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Po_wtarzanie listy odtwarzania" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Lista odtwarzania" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Lista odtwarzania jest pusta" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Dodawanie wtyczki" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Wtyczki w języku Lua" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "Wtyczki w języku JavaScript" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "Wtyczki w języku C" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Skopiowanie pliku z „%s” do „%s” się nie powiodło. Powód: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Nie odnaleziono wtyczek" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Usuń" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "Usunąć ten skrypt? Tego działania nie można cofnąć." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Usunięcie pliku „%s” się nie powiodło. Powód: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "Plik konfiguracji MPV:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "Plik konfiguracji skrótów MPV:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Dodatkowe opcje MPV:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Interfejs" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Pliki konfiguracji" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Różne" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Wtyczki" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Zapisz" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Preferencje" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Otwarcie pliku" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Otwarcie położenia" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Dodanie pliku do listy odtwarzania" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Dodanie położenia do listy odtwarzania" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Wyświetlenie okna preferencji" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Przełączenie wyświetlania przycisków sterujących" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Przełączenie wyświetlania listy odtwarzania" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Przełączenie trybu pełnoekranowego" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Opuszczenie trybu pełnoekranowego" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "Przełączenie wyświetlania czasu odtwarzania/trwania w menu ekranowym" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Wyświetlenie nazwy pliku w menu ekranowym" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Wyświetlenie postępu, czasu odtwarzania i trwania w menu ekranowym" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Przejście 5 sekund wstecz/naprzód" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Dokładne przejście 1 sekundę wstecz/naprzód" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Przejście 1 minutę wstecz/naprzód" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Dokładne przejście 5 sekund wstecz/naprzód" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Przejście do poprzedniego/następnego napisu dialogowego" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Przejście pojedynczą klatkę wstecz/naprzód" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Przejście do początku poprzedniego/następnego rozdziału" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Zmniejszenie/zwiększenie prędkości odtwarzania o 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Dwukrotne zmniejszenie/zwiększenie obecnej prędkości odtwarzania" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Przywrócenie zwykłej prędkości odtwarzania" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Przejście wstecz/naprzód na liście odtwarzania" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Usunięcie zaznaczonej pozycji listy odtwarzania" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Zapisanie listy odtwarzania" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Ustawienie/wyczyszczenie punktów zapętlenia A-B" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Przełączenia zapętlonego odtwarzania" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Przełączenie wstrzymania odtwarzania" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Zakończenie działania programu" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "" +"Zapisanie obecnej pozycji odtwarzania i zakończenie działania programu" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Włączenie trybu wyszukiwania" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Przejście do następnego wyniku" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Przejście do poprzedniego wyniku" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Wyłączenie trybu wyszukiwania" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Przełączenie ścieżki dźwiękowej" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Zmniejszenie/zwiększenie głośności" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Przełączenie wyciszenia dźwięku" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Dostosowanie opóźnienia dźwięku o +/- 0,1 s" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Przełączenie widoczności napisów" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Przełączenie ścieżki napisów" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Dostosowanie opóźnienia napisów o +/- 0,1 s" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Przełączenie zastępowania stylów napisów SSA/ASS" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Przesunięcie napisów w górę/dół" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Przełączenie trybu zgodności proporcji VSFilter" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Przełączenie ścieżki wideo" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Zmniejszenie/zwiększenie zakresu „pan-and-scan”" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Wykonanie zrzutu obrazu" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Wykonanie zrzutu obrazu bez napisów" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Wykonanie zrzutu obrazu wyświetlanego w oknie" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Ustawienie rozmiaru obrazu na dwukrotnie mniejszy niż oryginalny" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Przywrócenie oryginalnego rozmiaru obrazu" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Ustawienie rozmiaru obrazu na dwukrotnie większy niż oryginalny" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Dostosowanie kontrastu" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Dostosowanie jasności" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Dostosowanie gammy" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Dostosowanie nasycenia" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Przełączenie usuwania przeplotu" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Przełączenie proporcji obrazu" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Interfejs użytkownika" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Wideo" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Dźwięk" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Napisy dialogowe" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Odtwarzanie" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Przewijanie" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Wczytywanie ścieżki dźwiękowej…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Wczytywanie ścieżki wideo…" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Wczytywanie ścieżki napisów…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Włączenie lub wyłączenie wyświetlania obramowania okna po stronie klienta " +"wymaga ponownego uruchomienia programu, aby wprowadzić zmiany." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Dodawanie katalogu do listy odtwarzania" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Otwieranie katalogu" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Dodawanie pliku do listy odtwarzania" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Otwieranie pliku" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Dodawanie położenia do listy odtwarzania" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Otwieranie położenia" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Zapisywanie listy odtwarzania" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "Interfejs GTK dla biblioteki MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" +"Piotr Sokół , 2016, 2019\n" +"Piotr Drąg , 2020" diff --git a/po/pt_BR.po b/po/pt_BR.po new file mode 100644 index 0000000..e29704d --- /dev/null +++ b/po/pt_BR.po @@ -0,0 +1,1162 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# Carlos Henrique , 2019. #zanata +# gnome-mpv , 2019. #zanata +# Carlos Henrique , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-20 20:48+0700\n" +"PO-Revision-Date: 2020-10-28 03:45-0400\n" +"Last-Translator: Carlos Henrique \n" +"Language-Team: Portuguese (Brazil)\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "Se as configurações já migraram da versão anterior" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Redimensionar automaticamente a janela para caber o vídeo" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Ativar tema escuro" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Ativar decorações de janela independentes" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Usar controles flutuantes no modo janela" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Ocultar automaticamente o cursor do mouse no modo de janela" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"A velocidade mínima do cursor flutuante no qual os controles serão " +"reexibidos." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Tamanho da zona morta em que o movimento do cursor não fará com que os " +"controles sejam exibidos" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Use os botões de pular para controlar a lista de reprodução" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Fazer o seletor de arquivos lembrar a localização do último arquivo" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Sempre abrir uma nova janela" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Opções para passar para o mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Caminho para o arquivo de configuração do mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Carregar arquivo de configuração do mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Caminho para o arquivo de atalhos do mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Carregar arquivo de configuração de entrada do mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Ativar suporte para MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Ativar suporte para atalhos de mídia" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Pré-busca de metadados" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ignorar erros de reprodução" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Inibir sessão inativa" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Largura da janela" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Altura da janela" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Se a janela está ou não maximizada" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Volume do reprodutor" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Se deve ou não repetir a lista quando ela terminar" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Largura da lista de reprodução" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Mostra ou não os controles" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Mostrar ou não a lista de reprodução" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "URI da última pasta acessada" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "Interface em GTK+ para o mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" +"O Celluloid é um media player simples que pode reproduzir praticamente todos" +" os formatos de vídeo e áudio. Ele suporta listas de reprodução e controles " +"MPRIS2 media player. O design do Celluloid segue as Diretrizes da interface " +"humana do GNOME, mas também pode ser adaptado para outros sistemas que não " +"usam decorações do lado do cliente (CSD). É baseado na biblioteca mpv e GTK." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Recursos:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Arrastar e soltar lista de reprodução" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Carregando arquivos externos de configuração do mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "Interface MPRIS2 D-BUS" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Os Desenvolvedores do Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Esta versão contém as seguintes alterações:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Possibilita ativar o menu de contexto quando a lista de reprodução estiver " +"vazia." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Evita o redimensionamento constante da barra de busca devido ao " +"redimensionamento do rótulo do carimbo de data / hora conforme seu valor " +"muda" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Mostra apenas uma única caixa de diálogo de erro quando um grande número de " +"erros ocorre em rápida sucessão." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Adiciona item de menu para abrir pastas." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Ajusta a posição dos elementos da IU dos diálogos modais no modo não CSD " +"para ser mais consistente com o CSD" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Adiciona suporte para carregar trilhas de vídeo externas." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Torna a reprodução aleatória da lista de reprodução alternável." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" +"Faz com que as teclas de seta funcionem com as teclas de seta no teclado " +"numérico" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "Esta listagem está incompleta. Veja log git para changelog completo." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Ajuste o botão do intervalo de volume, com base no valor da propriedade " +"volume-máximo." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Manter o estado de maximização da janela entre as sessões." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Manter o estado do loop entre as sessões." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Implementar pesquisa na lista de reprodução." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Atualizar a lista de atalhos na caixa de diálogo, Atalhos do teclado." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Manuseie corretamente as citações e sequências de escape em opções extras do" +" mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" +"Mostra o tempo na posição do cursor ao passar o mouse na barra de busca." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"Preterir '--mpv-options'. Opções começando com '--mpv-' podem ser usadas " +"para definir as opções do mpv. Por exemplo, passar '--mpv-vf = vflip' para o" +" Celluloid é equivalente a passar '--vf = vflip' para o mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Adicionado suporte para configurar a zona morta, uma área na qual o " +"movimento do mouse não fará com que os controles sejam mostrados." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" +"Faz o dimensionamento da janela funcionar corretamente em monitores HiDPI." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Adicionada a tradução finlandesa por Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Adicionada tradução eslovena por @bertronika" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Adic. tradução Persa por @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Adic. tradução ucraniana por @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Adicionado suporte para mostrar/ocultar as decorações de janela usando a opção \n" +"\"--border\" do mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Adicionado item de menu para abrir discos" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Ocultar automaticamente o bloco do cursor quando o pop-up de volume estiver " +"aberto no modo de janela" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Corrigido erro com o mpv 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Projeto renomeado para Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Adic. tradução Turca por @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Adic. tradução Esperanto por @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Migrado do opengl-cb para o novo renderizador API" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr " Manipulável com combinações de teclas numéricas" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Manipulável com combinações de teclas unicode" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Encaminha eventos-chave da mídia para o mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Adicionado chave dconf para controlar a velocidade do cursor na qual os " +"controles estão ocultos" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Adicionada opção para suprimir erros de reprodução" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Dividir o separador Geral na aba de diálogo de preferências" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Melhorar o comportamento alternando a lista de reprodução gerenciadas em " +"janelas lado a lado" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Mover itens do menu de aplicativos para o menu principal" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Usar janelas separadas para conexões MPRIS D-BUS" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Adicionar suporte para a propriedade MPRIS LoopStatus" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Adicionar a opção --mpv-options para definir opções arbitrárias do mpv em " +"linha de comando" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Definir o local padrão para a tela de captura XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +" Melhorar o tratamento de --window-scale, --autofit, --autofit-larger, e " +"--autofit-smaller" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Adicionar linha de comando para opção de definir WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "Adicionar menu de contexto para remover itens da lista de reprodução" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" +"Adicionar item de menu de contexto para copiar a localização de itens da " +"lista de reprodução" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Adicionar a opção para fazer os botões de pular carregarem de lista de " +"reprodução, ao invés de pular capítulos" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Fazer o seletor de arquivos aceitar locais não-locais" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" +"Adicionar menu de contexto no botão direito para fazer a repetição de um " +"único arquivo" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" +"Manipular eventos de mudança de propriedade para tela inteira e escala de " +"janela" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "Adic. opção auto-ocultar o ponteiro do mouse no modo tela cheia" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Mostrando o aplicativo em ação na janela principal" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Janela principal com CSD desativado" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Janela principal com a lista de reprodução aberta" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Tocador Multimídia" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Reproduz filmes e vídeos" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "Vídeo;Filme;Clipes;Séries;Tocar;DVD;TV;Disco;Álbum;Música;GNOME;mpv;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Nova Janela" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Reproduzindo" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Mostrar a versão" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Enfileirar" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Criar uma nova janela" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "OPÇÕES" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Definir o papel da janela" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Não conectar a uma instância já em execução" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Pausar" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "reproduzir" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Parar" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Avançar" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Retroceder" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Próximo Capítulo" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Capítulo Anterior" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Repetir a Lista" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Misturar a lista de reprodução" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Alternar para Tela Cheia" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Erro" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Todos os Arquivos" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Arquivos de Mídia" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Arquivos de Áudio" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Arquivos de Vídeo" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Arquivos de Imagem" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Arquivos de Legenda" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Nenhum" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Desconhecido" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "_Carregar Externa..." + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Disco não encontrado" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Arquivo" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Abrir..." + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Abrir _Pasta..." + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "_Abrir Local..." + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Abrir _Disco..." + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Salvar Lista de Reprodução" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Nova Janela" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Sair" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Editar" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Preferências" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Faixa de Vídeo" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Faixa de Áudio" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "F_aixa de Legendas" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Exibir" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Mostrar Controles" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Mostrar Lista de Reprodução" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Tela Cheia" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Ajuda" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Teclas de Atalho" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Sobre o Celluloid" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Abrir _Disco" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "A reprodução foi encerrada de forma inesperada. Motivo: %s." + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Local:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Cancelar" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Abrir" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Falha ao aplicar uma ou mais opções do MPV." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Copiar Local" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Remover" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Adicionar..." + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Adic _Pasta..." + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Adicionar _Local" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Aleatório" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Repetir_Arquivo" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Repetir _Lista" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Lista de Reprodução" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Lista está vazia" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Adic. Plugin" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Plugins Lua" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "Plugins JavaScript" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "Plugins C" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Falha ao copiar arquivo de '%s' para '%s'. Motivo: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Nenhum plugin encontrado" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Remover" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "" +"Tem certeza que deseja remover este script? Esta ação não poderá ser " +"desfeita." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Falha ao remover o arquivo %s. Motivo: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "arquivo de configuração do mpv:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "arquivo de configuração de entrada do mpv:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Opções extras do mpv:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Aparência" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Arquivos de Configuração" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Diversos" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Plugins" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Salvar" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Preferências" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Abrir arquivo" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Abrir local" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Adiciona um arquivo à lista de reprodução" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Adiciona um local à lista de reprodução" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Mostra diálogo de preferências" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Exibe os controles" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Mostra a lista de reprodução" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Alterna o modo tela cheia" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Sai do modo tela cheia" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "" +"Alterna os modos de sobreposição de tela (OSD) entre normal e tempo/duração" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Exibe o nome do arquivo na tela (OSD)" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Mostra o progresso, tempo passado, e a duração na tela (OSD)" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Avança/retrocede 5 segundos" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Avança/retrocede exatamente 1 segundo" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Avança/retrocede 1 minuto" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Avança/retrocede 5 minutos" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Procura a legenda anterior/seguinte" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Avança/retrocede um único quadro" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Ir para o início do anterior/próximo capítulo" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Aumenta/diminui a velocidade de reprodução em 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Reproduz com metade/dobro da velocidade atual" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Reinicia a reprodução com velocidade normal" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Avança/volta na lista de reprodução" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Remove item selecionado da lista de reprodução" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Salva a lista de reprodução" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Define/limpa os pontos de loop A-B" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Muda para modo de repetição infinita" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Pausa ou Continua" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Sair" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Salva a posição de reprodução e sai" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Entrar no Modo busca" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Ir para o próximo correspondente" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Ir para o correspondente anterior" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Sai do modo busca" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Percorre pelas faixas de áudio" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Aumenta/diminui volume" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Silencia ou não" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Ajusta o atraso de áudio em +/- 0,1 Segundos" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Alterna a visibilidade das legendas" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Percorre pelas legendas disponíveis" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Ajusta o atraso da legenda por +/- 0.1 segundos" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Substitui alternadamente o estilo das legendas SSA/ASS" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Move as legendas para cima/para baixo" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Alterna o modo de compatibilidade de aspecto do VSFilter" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Percorre pelas trilhas de vídeo" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Diminui/aumenta o alcance da varredura de tela" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Faz uma captura de tela" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Faz uma captura de tela sem legendas" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Faz uma captura de tela da janela mostrada" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Redimensiona o vídeo para a metade do tamanho original" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Redimensiona o vídeo para o tamanho original" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Redimensiona o vídeo para o dobro da tela original" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Ajusta o contraste" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Ajusta o brilho" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Ajusta o gama" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Ajusta a saturação" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Ativa ou desativa desentrelace" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Percorre pela proporção de aspecto ignorado" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Interface de Usuário" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Vídeo" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Áudio" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Legenda" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Reproduzir" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Procurando" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Carregar Faixa de Áudio..." + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Carregar Faixa de Vídeo…" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Carregar Faixa de Legenda" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Ativando ou desativando as decorações do lado do cliente, será necessário a " +"reinicialização para que entre em vigor." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Adic Pasta à Lista de Reprodução" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Abrir Pasta" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Adic. arquivo à Lista de Reprodução" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Abrir Arquivo" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Adic. Local à lista de Reprodução" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Abrir Local" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Salva Lista de Reprodução" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "Uma interface em GTK para o MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Carlos Henrique de Freitas Ferreira." diff --git a/po/pt_PT.po b/po/pt_PT.po new file mode 100644 index 0000000..48d6ba3 --- /dev/null +++ b/po/pt_PT.po @@ -0,0 +1,1171 @@ +# Bruno Guerreiro , 2016. +# Filipe Tostevin , 2019. #zanata +# Hugo Carvalho , 2019. #zanata +# gnome-mpv , 2019. #zanata +# Hugo Carvalho , 2020. #zanata +# gnome-mpv , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: gnome-mpv 0.15\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-20 20:48+0700\n" +"PO-Revision-Date: 2020-12-05 04:17-0500\n" +"Last-Translator: Hugo Carvalho \n" +"Language-Team: Portuguese\n" +"Language: pt_PT\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "Se as definições já foram migradas da versão anterior" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Ajustar automaticamente a janela ao vídeo" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Ativar tema escuro" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Ativar decorações 'client-side'" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Utilizar controlos flutuantes no modo de janela" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Ocultar automaticamente o cursor do rato no modo de janela" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"A velocidade mínima do cursor para que os controlos flutuantes sejam " +"mostrados." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Tamanho da zona morta em que o movimento do cursor não fará com que os " +"controlos sejam mostrados." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Utilizar botões de ignorar para controlar a lista de reprodução" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" +"Fazer com que o selecionador de ficheiros se lembre da localização do último" +" ficheiro" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Abrir sempre uma nova janela" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Opções extra mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Caminho do ficheiro de configuração mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Carregar o ficheiro de configuração do mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Caminho para ficheiro de configurações de entrada mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Carregar o ficheiro de configuração de entrada do mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Ativar suporte a MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Ativar teclas multimédia" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Pré-obtenção de meta-dados" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ignorar erros de reprodução" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Inibir a sessão inativa" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Largura da janela" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Altura da janela" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Se a janela está ou não maximizada" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Volume da aplicação" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "" +"Se deve ou não repetir do início ao chegar ao fim da lista de reprodução" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Largura da lista de reprodução" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Mostrar ou não mostrar os controlos" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Mostrar ou não a lista de reprodução" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "URI da última pasta acedida" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "Interface GTK+ para mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" +"Celluloid é um reprodutor multimédia simples que pode reproduzir " +"praticamente todos os formatos de vídeo e áudio. Tem siporte a listas de " +"reprodução e controlos MPRIS2. O projeto Celluloid segue as diretrizes GNOME" +" Human Interface, mas também pode ser adaptado para outros sistemas que não " +"utilizem decorações 'client-side' (CSD). É baseado na biblioteca mpv e no " +"GTK." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Funcionalidades:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Arrastar e largar listas de reprodução" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Carregar ficheiros de configuração mpv externos" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "Interface MPRIS2 D-Bus" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Os programadores do Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Esta versão contém as seguintes alterações:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Tornar possível ativar o menu de contexto quando a lista de reprodução " +"estiver vazia." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Impedir o redimensionamento constante da barra de procura devido ao " +"redimensionamento da etiqueta do selo temporal à medida que o seu valor " +"muda." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Apenas mostrar um único diálogo de erro quando ocorre um grande número de " +"erros em sucessão rápida." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Adicionar item de menu para abrir pastas." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Ajustar a posição dos elementos de UI dos diálogos modais em modo não-CSD " +"para ser mais consistente com o modo CSD." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Adicionar apoio ao carregamento de faixas de vídeo externas." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Tornar a lista de reprodução baralhável." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" +"Fazer com que as teclas de seta funcionem com as teclas de seta no teclado " +"numérico." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" +"Esta lista está incompleta. Consulte o registo git para ver todas as " +"alterações." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Ajuste o intervalo do botão de volume com base no valor da propriedade " +"volume-max." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Manter o estado de maximização da janela ao longo das sessões." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Manter o estado do ciclo ao longo das sessões." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Implementar a pesquisa na lista de reprodução." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Atualize a lista de atalhos na janela de teclas de atalho." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Manusear correctamente as citações e as sequências de escape em opções de " +"extra mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" +"Mostrar o tempo na posição do cursor ao passar o rato na barra de pesquisa." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"Depreciar \"--mpv-opções\". Opções que começam com '--mpv-' podem ser usadas" +" para definir opções de mpv. Por exemplo, passar '--mpv-vf=vflip' para " +"Celluloid é equivalente a passar '--vf=vflip' para mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Adicionar suporte para a configuração da zona morta, uma área em que o " +"movimento do rato não fará com que os controlos sejam mostrados." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "Faça o dimensionamento correto das janelas com os monitores HiDPI." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Tradução do Finlandês por Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Tradução do Esloveno por @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Tradução persa por @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Tradução ucraniana por @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Adicionado suporte para mostrar/ocultar decorações de janelas com a opção " +"mpv --border" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Adicionado item de menu para abrir discos" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Bloqueio à ocultação automática do cursor se o alerta de volume for aberto " +"no modo de janela" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Correção a um erro com mpv 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Alteração do nome da aplicação para Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Tradução para turco por @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Tradução para esperanto por @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Migração de opengl-cb para a nova API de renderização" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Gestão de teclas de atalho em teclados numéricos" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Gestão de teclas de atalho unicode" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Encaminhamento de eventos das teclas multimédia para mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Adicionada uma chave dconf para controlar a velocidade do cursor necessária " +"para mostrar os controlos" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Adicionada uma opção para suprimir os erros de reprodução" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Separação do separador Geral no diálogo de preferências" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Melhorias no comportamento ao alternar a lista de reprodução em gestores de " +"janelas 'tiling'" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Colocação dos itens de menu da aplicação no menu principal" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Utilização de uma ligação distinta MPRIS DBus para cada janela" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Adicionado suporte à propriedade LoopStatus MPRIS" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Adicionada a opção --mpv-options para definir opções arbitrárias mpv a " +"partir da linha de comando" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Definição do diretório de capturas de ecrã para XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"Melhorias na gestão das opções --window-scale, --autofit, --autofit-larger e" +" --autofit-smaller" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Adicionada uma opção de linha de comando para definir WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" +"Adicionado um item ao menu de contexto para remover itens da lista de " +"reprodução" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" +"Adicionado um item ao menu de contexto para copiar a localização dos itens " +"da lista de reprodução" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Adicionada uma opção para que os botões Ignorar alterem entre entradas da " +"lista de reprodução e não entre capítulos" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Permitir que o seletor de ficheiros aceite localizações não locais" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "Adicionada um item ao menu de contexto para repetir um único ficheiro" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" +"Manipulação de eventos de alteração da propriedade para ecrã inteiro e " +"escala de janela" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" +"Adicionada uma opção para ocultar automaticamente o cursor do rato no modo " +"de janela" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Janela principal a mostrar a aplicação em ação" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Janela principal com decorações 'client side' desativadas" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Janela principal com uma lista de reprodução aberta" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Reprodutor multimédia" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Reproduzir filmes e vídeos" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "" +"Vídeo;Filme;Clip;Séries;Reprodutor;DVD;TV;Disco;Álbum;Música;GNOME;mpv;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Nova janela" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Em reprodução" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Mostrar a versão" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Colocar na fila" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Criar uma nova janela" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "OPÇÕES" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Define o papel da janela" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Não ligar a uma instância em execução" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Pausa" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Reproduzir" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Parar" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Avançar" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Recuar" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Capítulo seguinte" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Capítulo anterior" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Lista de reprodução em ciclo" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Reproduzir aleatoriamente a lista de reprodução" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Alternar para ecrã inteiro" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Erro" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Todos os ficheiros" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Ficheiros multimédia" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Ficheiros de áudio" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Ficheiros de vídeo" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Ficheiros de imagem" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Ficheiros de legendas" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Nenhum" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Desconhecido" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "_Carregar externo…" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Nenhum disco encontrado" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Ficheiro" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Abrir…" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Abrir _pasta…" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Abrir _localização…" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Abrir _disco…" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "Guardar li_sta de reprodução" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Nova janela" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "Sa_ir" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Editar" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Preferências" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "Faixa de _vídeo" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "F_aixa de áudio" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "Fa_ixa de legendas" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Ver" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "Al_ternar controlos" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "Al_ternar lista de reprodução" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Ecrã inteiro" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "Aj_uda" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "Teclas de atal_ho" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Acerca do Celluloid" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Abrir _disco" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "A reprodução terminou abruptamente. Motivo: %s." + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Localização:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Cancelar" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Abrir" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Falha ao aplicar uma ou mais opções mpv." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Copiar localização" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Remover" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Adicionar…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Adicionar _pasta…" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Adicionar _localização…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "Mi_sturar" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Repetir _ficheiro" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Re_petir lista de reprodução" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Lista de reprodução" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Lista de reprodução vazia" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Adicionar plugin" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Plugins Lua" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "Plugins JavaScript" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "Plugins C" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Falha ao copiar o ficheiro de '%s' para '%s'. Motivo: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Nenhum plugin encontrado" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Remover" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "" +"Tem a certeza de que deseja remover este script? Esta ação não pode ser " +"desfeita." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Falha ao eliminar o ficheiro '%s'. Motivo: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "Ficheiro de configuração mpv:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "Ficheiro de configuração de entrada mpv:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Opções extra mpv:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Interface" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Ficheiros de configuração" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Outras" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Plugins" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Guardar" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Preferências" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Abrir ficheiro" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Abrir localização" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Adicionar ficheiro à lista de reprodução" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Adicionar localização à lista de reprodução" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Mostrar janela de preferências" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Alternar entre controlos" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Alternar lista de reprodução" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Alternar ecrã inteiro" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Sair de ecrã inteiro" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "Alternar estados do OSD entre normal e o duração/tempo de reprodução" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Mostrar nome do ficheiro no OSD" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Mostrar progresso, tempo decorrido e duração no OSD" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Procurar Recuar/Avançar 5 segundos" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Procura exata Recuar/Avançar exatamente 1 segundo" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Procurar Recuar/Avançar 1 minuto" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Procura exata Recuar/Avançar exatamente 5 segundos" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Ir para a legenda anterior/seguinte" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Recuar/Avançar exatamente um frame" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Ir para o início do capítulo anterior/seguinte" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Reduzir/aumentar velocidade de reprodução em 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Reduzir a metade/duplicar velocidade de reprodução" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Restaurar velocidade de reprodução" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Recuar/avançar na lista de reprodução" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Remover item selecionado da lista de reprodução" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Guardar lista de reprodução" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Definir/Limpar pontos de ciclo A-B" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Alternar ciclo infinito" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Pausa ou continuar" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Sair" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Guardar posição na lista de reprodução e sair" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Entrar no modo de pesquisa" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Ir para a ocorrência seguinte" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Ir para a ocorrência anterior" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Sair do modo de pesquisa" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Percorrer faixas de áudio" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Reduzir/aumentar volume" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "SIlenciar ou restaurar" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Ajustar atraso de áudio em +/- 0,1 segundos" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Alternar visibilidade das legendas" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Percorrer legendas disponíveis" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Ajustar atraso das legendas em +/- 0,1 segundos" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Alternar substituição da estilo das legendas SSA/ASS" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Mover legendas para cima/baixo" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Alternar modo de compatibilidade do aspeto VSFilter" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Percorrer faixas de vídeo" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Reduzir/aumentar intervalo de panorâmica" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Capturar ecrã" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Capturar ecrã, sem legendas" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Capturar ecrã tal como é mostrado" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Ajustar vídeo para metade do tamanho original" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Ajustar vídeo para o tamanho original" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Ajustar vídeo para o dobro do tamanho original" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Ajustar contraste" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Ajustar brilho" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Ajustar gama" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Ajustar saturação" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Ativar ou desativar o desentrelaçador" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Substituição da relação de aspeto" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Interface" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Vídeo" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Áudio" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Legenda" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Reprodução" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Pesquisa" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Carregar faixa de áudio…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Carregar faixa de vídeo…" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Carregar faixa de legendas…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Para ativar ou desativar as decorações 'client-side', tem que reiniciar a " +"aplicação." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Adicionar pasta à lista de reprodução" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Abrir pasta" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Adicionar ficheiro à lista de reprodução" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Abrir ficheiro" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Adicionar local à lista de reprodução" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Abrir localização" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Guardar lista de reprodução" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "Interface em GTK para mpv" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" +"Hugo Carvalho\n" +"Bruno Guerreiro\n" +"Sérgio Marques" diff --git a/po/ro.po b/po/ro.po new file mode 100644 index 0000000..09b15d0 --- /dev/null +++ b/po/ro.po @@ -0,0 +1,1108 @@ +# Romanian (ro_RO) translations for gnome-mpv package. +# gnome-mpv +# Copyright (C) 2015 THE gnome-mpv'S COPYRIGHT HOLDER +# This file is distributed under the same license as the gnone-mpv package. +# Robert Datcu , 2015. +# gnome-mpv , 2019. #zanata +# gnome-mpv , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: gnome-mpv 0.15\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-20 20:48+0700\n" +"PO-Revision-Date: 2020-06-23 10:49-0400\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Romanian Translations\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Activează tema întunecată" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Activează decorațiile ferestrelor (CSD)" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Fișier" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Salvează Lista Redare" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Modifică" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Preferințe" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Vizualizare" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Afișează Lista Redare" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Tot ecranul" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Ajutor" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "" + +#: src/celluloid-menu.c:321 +#, fuzzy +msgid "Open _Disc" +msgstr "Deschide Fișier" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "" + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Adresă:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Anulează" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Deschide" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "" + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Listă de redare" + +#: src/celluloid-playlist-widget.c:943 +#, fuzzy +msgid "Playlist is empty" +msgstr "Listă de redare" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "" + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Salvează" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Preferințe" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Adaugă un fișier Listei de Redare" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Deschide Fișier" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Deschide Adresa" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Salvează Lista de Redare" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "O interfață GTK pentru MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Robert Datcu" diff --git a/po/ru.po b/po/ru.po new file mode 100644 index 0000000..4230286 --- /dev/null +++ b/po/ru.po @@ -0,0 +1,1142 @@ +# Pavel Nikulin , 2019. #zanata +# gnome-mpv , 2019. #zanata +# gnome-mpv , 2020. #zanata +# Sergei Tkachenko , 2021. #zanata +msgid "" +msgstr "" +"Project-Id-Version: 0.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-20 20:48+0700\n" +"PO-Revision-Date: 2021-01-17 09:13-0500\n" +"Last-Translator: Sergei Tkachenko \n" +"Language-Team: Russian\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "Перенос (миграция) пользовательских настроек из предыдущей версии" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Автоматически менять размер окна под видео" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Использовать тёмную тему" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Включить декорирование на стороне клиента" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Использовать плавающие элементы управления в оконном режиме" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Автоматически скрывать курсор в оконном режиме" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"Минимальная скорость курсора при которой будет показана панель управления." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Размер мертвой зоны в которой движение курсора не будет приводить к показу " +"панели управления" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Использовать кнопки пропуска для управления списком воспроизведения" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Запоминать последний путь при выборе файла" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Всегда открывать новое окно" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Перейти к параметрам MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Путь к файлу конфигурации MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Подгружать файл конфигурации MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Путь к файлу конфигурации ввода MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Подгружать файл конфигурации ввода MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Включить поддержку MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Включить поддержку мультимедийных клавиш" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Предварительная выборка метаданных" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Игнорировать ошибки воспроизведения" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Ширина окна" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Высота окна" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Развернуто ли окно или нет" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Громкость плеера" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "" +"Продолжить ли воспроизведение при достижении конца списка воспроизведеия" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Ширина списка воспроизведения" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Показать или не показывать элементы управления" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Показать или скрыть список воспроизведения" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "Адрес последнего открытого файла" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "GTK+ интерфейс для MPV" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" +"Celluloid - это простой медиа плеет, который способен воспроизводить " +"практически все видео и аудио форматы. Он поддерживает списки " +"воспроизведения и управление плеером через MPRIS2. Дизайн Celluloid " +"соответствует GNOME HIG, но также может быть адаптирован для других систем, " +"которые не используют декорирование на стороне клиента (CSD). Он основан на " +"библиотеке mpv и GTK." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Возможности:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Поддержка drag-and-drop" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Загрузка внешних конфигурационных файлов MPV" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "Интерфейс MPRIS2 D-Bus" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Разработчики Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Этот выпуск содержит следующие изменения:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Появилась возможность открытия контекстного меню при пустом списке " +"воспроизведения." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Убрано постоянное изменение размера полосы прокрутки из-за изменения размера" +" метки времени." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"При большом количестве появляющихся подряд ошибок отображается только одно " +"окно с ошибкой. " + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Добавлен пункт меню для открытия папок." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Настроена позиция элементов модальных окон в режиме отключенного CSD для " +"большего соответствия с CSD режимом." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Добавлена возможность подгрузки внешних видео дорожек." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Воспроизведение в случайном порядке сделано переключаемым." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "Это не полный список. Полный список изменений см. в журнале git." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Сохранение режма развернутого окна между сессиями" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Сохранение режима повтора между сессиями" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Реализован поиск по списку воспроизведения." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Обновлен список комбинаций клавиш." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Исправлена обработка кавычек и экранирующих последовательностей в " +"дополнительных параметрах mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "Отображение времени возле курсора при наведении на панель прокрутки." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Добавлена возможность настройки мертвой зоны в которой движение курсора не " +"будет приводить к показу панели управления." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "Исправлены размеры окна на HiDPI-дисплеях." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Добавлен финский перевод от Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Добавлен словенский перевод от @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Добавлен персидский перевод от @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Добавлен украинский перевод от @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Добавлен пункт меню для открытия дисков" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Исправлен сбой при работе с mpv 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Проект переименован в Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Добавлен турецкий перевод от @TeknoMobil." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Добавлен перевод на эсперанто от @F3nd0." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Переход с opengl-cb на новый API рендеринга" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Обработка комбинаций клавиш цифровой клавиатуры" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Обработка сочетаний клавиш в кодировке Unicode" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Проброска событий от медиа клавиш в mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Добавлена возможность игнорировать ошибки воспроизведения" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Разделите вкладку Общие в диалоге настроек" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Улучшено поведение при переключении плейлиста под тайловыми оконными " +"менеджерами" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Использовать отдельное MPRIS DBus соединение для каждого окна" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Добавлена поддержка MPRIS cвойства LoopStatus" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Установить каталог по умолчанию для скриншотов в XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Добавлен параметр командной строки для настройки WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" +"В контекстное меню добавлен пункт для удаления элементов списка " +"воспроизведения" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" +"В контекстное меню добавлен пункт для копирования пути расположения элемента" +" списка воспроизведения" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Добавлена настройка использования кнопок пропуска для перехода по списку " +"воспроизведения вместо перехода по главам" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "Добавлена настройка автоматического скрытия курсора в оконном режиме" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Главное окно, показывающее приложение в действии" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Главное окно с отключённым CSD" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Главное окно с открытым списком воспроизведения" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Мультимедийный проигрыватель" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Воспроизведение фильмов и видео" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "" +"Видео;Кино;Фильм;Клип;Сериал;Плеер;DVD;ТВ;Диск;Альбом;Музыка;GNOME;mpv;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Новое окно" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Воспроизводится" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Показать версию релиза" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Поставить в очередь" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Создать новое окно" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "ПАРАМЕТРЫ" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Установите роль окна" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Не подключаться к уже работающему экземпляру" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Приостановить" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Воспроизведение" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Остановить" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Перемотать вперёд" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Перемотать назад" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Следующая глава" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Предыдущая глава" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Режим повтора" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Перемешать список воспроизведения" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Переход в полноэкранный режим и обратно" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Ошибка" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Все файлы" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Медиафайлы" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Аудиофайлы" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Видеофайлы" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Файлы изображений" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Файлы субтитров" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Ничего" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Неизвестный" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "Заг_рузить внешние…" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Диски не найдены" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Файл" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "От_крыть..." + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "От_крыть расположение..." + +#: src/celluloid-menu.c:239 +#, fuzzy +msgid "Open _Disc…" +msgstr "От_крыть расположение..." + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Сохранить список воспроизведения" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "Но_вое окно" + +#: src/celluloid-menu.c:242 +#, fuzzy +msgid "_Quit" +msgstr "Завершить" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Правка" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "Пара_метры" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "В_идео дорожка" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Аудио дорожка" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "Дорожка с_убтитров" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "В_ид" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Показать/Скрыть элементы управления" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Показать/Скрыть список воспроизведения" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Полноэкранный режим" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Справка" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Комбинации клавиш" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_О Celluloid" + +#: src/celluloid-menu.c:321 +#, fuzzy +msgid "Open _Disc" +msgstr "Открыть файл" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "Воспроизведение было прекращено. Причина: %s." + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Расположение:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Отмена" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Открыть" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Не удалось применить один или несколько параметров MPV." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Копировать расположение" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Удалить" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Добавить…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Доб_авить расположение…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_В случайном порядке" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Повторять _файл" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Повторять _список воспроизведения" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Список воспроизведения" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Список воспроизведения пуст" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Добавить модуль" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Lua модули" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "JavaScript модули" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "С модули" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Не удалось скопировать файл из '%s' в '%s'. Причина: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Модули не найдены" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Удалить" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "Вы уверены, что хотите удалить этот скрипт? Это действие необратимо." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Не удалось удалить файл '%s'. Причина: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "файл конфигурации mpv:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "файл конфигурации ввода mpv:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Дополнительные параметры mpv:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Интерфейс" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Файлы настроек" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Разное" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Модули" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Сохранить" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Параметры" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Открыть файл" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Открыть расположение" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Добавить файл в список воспроизведения" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Добавить расположение в список воспроизведения" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Показать параметры" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Показать/Скрыть элементы управления" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Показать/Скрыть список воспроизведения" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Полноэкранный режим" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Выйти из полноэкранного режима" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "Показать время воспроизведения/продолжительность" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Показывть имя файла" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Показывать прогресс, прошедшее время и продолжительность" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Переход назад/вперёд на 5 секунд" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Точный переход назад/вперёд на 1 секунду" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Переход назад/вперёд на 1 минуту" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Точный переход назад/вперёд на 5 секунд" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Переход к предыдущему/следующему субтитру" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Шаг назад/вперёд на один кадр" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Переход к предыдущей/следующей главе" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Уменьшить/увеличить скорость воспроизведения на 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Сократить вдвое/удвоить текущую скорость воспроизведения" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Сбросить скорость воспроизведения на нормальную" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Назад/вперёд по списку воспроизведения" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Удалить выбранный файл из списка воспроизведения" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Сохранить список воспроизведения" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Установить/очистить A-B точки цикла" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Переключить бесконечный повтор" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Приостановить или возобновить" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Завершить" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Сохранить текущую позицию воспроизведения и выйти" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Перейти в режим поиска" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Перейти к следующему совпадению" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Перейти к предыдущему совпадению" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Выйти из режима поиска" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Циклически доступные аудио дорожки" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Уменьшить/увеличить громкость" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Отключить или включить звук" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Изменить задержку аудио на + / - 0,1 секунды" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Переключить видимости субтитров" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Циклически переключить доступные субтитры" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Изменить задержку субтитров на + / - 0,1 секунды" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Переключить стиль субтитров SSA/ASS" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Переместить субтитры вверх/вниз" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Циклически доступные видео дорожки" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Уменьшает/увеличивает диапазон панорамирования и сканирования" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Сделать скриншот" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Сделать скриншот, без субтитров" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Сделать скриншот, с субтитрами и OSD, масштабированием" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Изменить размер видео до половины своего исходного размера" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Изменить размер видео до исходного размера" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Удвоить размер видео относительно оригинального размера" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Регулировка контрастности" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Регулировка яркости" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Регулировка гаммы" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Регулировка насыщенности" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Включить или отключить деинтерлейсинг" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Цикл коррекции соотношения сторон" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Пользовательский интерфейс" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Видео" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Аудио" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Субтитры" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Воспроизведение" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Переход" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Загрузить звуковую дорожку…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Загрузить видео дорожку..." + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Загрузить субтитры…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Включение или отключение декораций на стороне клиента требует перезапуска, " +"чтобы изменения вступили в силу." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Добавить папку в список воспроизведения" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Открыть папку" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Добавить файл в список воспроизведения" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Открыть файл" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Добавить расположение в список воспроизведения" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Открыть расположение" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Сохранить список воспроизведения" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "GTK интерфейс для MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" +"Maxim Orlov , 2018.\n" +"Artem Polishchuk , 2019.\n" +"Sergei Tkachenko , 2021." diff --git a/po/sk.po b/po/sk.po new file mode 100644 index 0000000..8b2262e --- /dev/null +++ b/po/sk.po @@ -0,0 +1,1108 @@ +# Ati , 2020. #zanata +# Ati , 2021. #zanata +# gnome-mpv , 2021. #zanata +msgid "" +msgstr "" +"Project-Id-Version: celluloid\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-10-09 22:16+0700\n" +"PO-Revision-Date: 2021-01-30 04:12-0500\n" +"Last-Translator: Ati \n" +"Language-Team: Slovak\n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "Či už boli nastavenia prevziate z predchádzajúcej verzie" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Automaticky prispôsobiť veľkosť okna videu" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Použiť tmavý motív" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Povoliť dekorácie na strane klienta" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Použiť plávajúce ovládacie prvky v režime okna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Automaticky skryť kurzor myši v režime okna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"Minimálna rýchlosť kurzora, pri ktorej budú plávajúce ovládacie prvky " +"odkryté." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Veľkosť mŕtvej zóny, v ktorej pohyb kurzora nespôsobí zobrazenie ovládacích " +"prvkov." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Zapamätanie umiestnenia posledného otvoreného súboru" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Vždy otvoriť nové okno" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Cesta ku konfiguračnému súboru mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Načítanie konfiguračného súboru mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Cesta k mpv vstupnému konfiguračnému súboru" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Načítanie vstupného konfiguračného súboru mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Povoliť podporu MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Povoliť podporu mediálnych tlačidiel" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Predbežne načítať metadáta" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ignorovať chyby prehrávania" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +#, fuzzy +msgid "Inhibit session idling" +msgstr "Zakázať voľnobežnú reláciu" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Šírka okna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Výška okna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Či je okno maximalizované alebo nie" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Hlasitosť prehrávača" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Zobraziť alebo nezobraziť ovládacie prvky" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Funkcie:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Načítavanie externých konfiguračných súborov mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Vývojári Celluloidu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Toto vydanie obsahuje nasledujúce zmeny:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "Video;Film;Klip;Seriál;Prehrávač;DVD;TV;Disk;Album;Hudba;GNOME;mpv;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Nové okno" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Prehrávanie" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Zobraziť verziu" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Vytvoriť nové okno" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Pozastaviť" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Prehrať" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Zastaviť" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Dopredu" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Dozadu" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Nasledujúca kapitola" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Predchádzajúca kapitola" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Prepnúť na celú obrazovku" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Chyba" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Všetky súbory" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Mediálne súbory" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Zvukové súbory" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Videosúbory" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Súbory s obrázkami" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Súbory s titulkami" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Žiadna" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Neznáma" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Nenašiel sa žiadny disk" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Nastavenia" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Video stopa" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Audio stopa" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "" + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Umiestnenie:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "" + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Pridať zásuvný modul" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Zásuvné moduly Lua" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "Zásuvné moduly JavaScript" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "Zásuvné moduly C" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Nepodarilo sa skopírovať súbor z '%s' do '%s'. Dôvod: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Nenašli sa žiadne zásuvné moduly" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Odstrániť" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "" +"Naozaj chcete odstrániť tento skript? Túto akciu nie je možné vrátiť späť." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Nepodarilo sa odstrániť súbor '%s'. Dôvod: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "konfiguračný súbor mpv:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "vstupný konfiguračný súbor mpv:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Rozhranie" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Konfiguračné súbory" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Rôzne" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Zásuvné moduly" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Uložiť" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Nastavenia" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Otvoriť súbor" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Otvoriť umiestnenie" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Pridať súbor do playlistu" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Pridať umiestnenie do playlistu" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Zobraziť nastavenia" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Zobraziť ovládacie prvky" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Zobraziť playlist" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Prepnutie do režimu celej obrazovky" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Vypnutie režimu celej obrazovky" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Zníženie/zvýšenie rýchlosti prehrávania o 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Polovičná/dvojnásobná rýchlosť prehrávania" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Obnovenie normálnej rýchlosti prehrávania" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Odstránenie vybranej položky z playlistu" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Uložiť playlist" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Nekonečné opakovanie" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Pozastavenie alebo pokračovanie" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Ukončenie" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Uloženie aktuálnej polohy prehrávania a ukončenie" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Prejsť do režimu vyhľadávania" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Prejsť na ďalšiu zhodu" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Prejsť na predchádzajúcu zhodu" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Ukončenie režimu vyhľadávania" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Prepnúť zvukovú stopu" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Zníženie/zvýšenie hlasitosti" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Stlmiť alebo obnoviť zvuk" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Nastavenie oneskorenia zvuku o +/- 0,1 sekundy" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Viditeľnost titulkov" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Prepnúť titulky" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Nastavenie oneskorenia titulkov o +/- 0,1 sekundy" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Prepnúť štýl titulkov SSA/ASS" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Posunúť titulky nahor/nadol" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Prepnúť video stopu" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Vytvorenie snímky obrazovky" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "bez titulkov" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Vytvorenie snímky obrazovky ako sa zobrazuje v okne" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Zmenšiť veľkosť videa na polovicu" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Zmeniť veľkosť videa na pôvodnú veľkosť" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Zväčšiť veľkosť videa na dvojnásobok" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Úprava kontrastu" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Úprava jasu" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Úprava gamy" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Úprava sýtosti" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Zapnúť alebo vypnúť odstraňovanie prekladania" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Zmena pomeru strán" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Používateľské rozhranie" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Video" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Zvuk" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Titulky" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Prehrávanie" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Prehľadávanie" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Načítanie stopy so zvukom…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Načítanie stopy s videom…" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Načítanie stopy s titulkami…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "Zapnutie alebo vypnutie dekorácií na strane klienta vyžaduje reštart." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Pridať priečinok do playlistu" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Otvoriť priečinok" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Pridať súbor do playlistu" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Otvoriť súbor" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Pridať umiestnenie do playlistu" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Otvoriť umiestnenie" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Uložiť playlist" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "GTK frontend pre MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" diff --git a/po/sl.po b/po/sl.po new file mode 100644 index 0000000..c234122 --- /dev/null +++ b/po/sl.po @@ -0,0 +1,1129 @@ +# Nejc Bertoncelj , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: celluloid\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-02-16 14:17+0700\n" +"PO-Revision-Date: 2020-06-16 05:00-0400\n" +"Last-Translator: Nejc Bertoncelj \n" +"Language-Team: Slovenian\n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0)\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "So bile nastavitve že preseljene iz prejšnje različice" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Samodejno preoblikuj okno, da se prilega sliki" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Omogoči temno temo" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Omogoči dekoracije na uporabniški strani (CSD)" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Omogoči plavajoče gumbe v okenskem načinu" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "Najmanjša hitrost kazalca, pri katerem bodo plavajoči gumbi skriti" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Uporabi gumbe za preskok za nadzor seznama predvajanja" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Vsakič odpri novo okno" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Nastavitve, ki se prenesejo programu MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Pot do nastavitvene datoteke (mpv.conf)" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Pot do nastavitvene datoteke za tipkovne bližnjice (input.conf)" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Omogoči podporo za MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Omogoči podporo predstavnostnih tipk" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Prenesi metapodatke" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Prezri napake predvajanja" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Širina okna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Višina okna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Naj bo okno razprto" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Glasnost predvajalnika" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Naj se seznam predvajanja vrti v zanki" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Širina seznama predvajanja" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Prikaži gumbe za predvajanje" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Prikaži seznam predvajanja" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "URI zadnje dostopane mape" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "GTK+ vmesnik za mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" +"Celluloid je preprost večpredstavnostni predvajalnik, ki lahko predvaja " +"takorekoč vse zvočne in video formate. Podpira sezname predvajanje in nadzor" +" predvajanja MPRIS2. Oblikovan je po GNOME-ovih smernicah HIG, lahko pa se " +"prilagodi tudi sistemom brez njih. Celluloid je osnovan na predvajalniku MPV" +" in knjižnici GTK." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Lastnosti:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Povleci in spusti" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Nalaganje zunanjih nastavitvenih datotek za MPV" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "MPRIS2 D-Bus vmesnik" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Razvijalci programa Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Ta različica vsebuje sledeče spremembe:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" +"Ta seznam je nepopoln. Preveri zapisnik GIT (git log) za vse spremembe." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Adjust the range of volume button based on the value of the volume-max " +"property." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Retain window maximization state across sessions." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Retain loop state across sessions." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Implement playlist search." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Update the list of shortcuts in Keyboard Shortcuts dialog." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "Correctly handle quotes and escape sequences in extra mpv options." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "Display time at cursor position when hovering the seek bar." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "Make window sizing work correctly with HiDPI displays." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Add Finnish translation by Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Add Slovenian translation by @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Dodan perzijski prevod (@danialbehzadi)" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Dodan ukrajinski prevod (@vl-nix)" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "Dodana podpora za prikazovanje/skrivanje oken z opcijo --border" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Dodan menijski vnos za odpiranje zgoščenk" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Onemogoči skrivanje kazalca, ko je v okenskem načinu odprto okno za " +"nastavitev glasnosti" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Odpravi sesutje pri mpv verziji 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Preimenovanje projekta v Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Dodan turški prevod (@TeknoMobil)" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Dodan esperanto prevod (@F3nd0)" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Selitev iz opengl-cb v nov vmesnik za renderiranje" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Obvladuj bližnjice na numerični tipkovnici" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Obvladuj Unicode tipkovne bližnjice" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Posreduj pritiske medijskih tipk programu mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "Dodaj ključ dconf za nadzor hitrosti kazalca, ko gumbi niso skriti." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Dodaj možnost za skrivanje napak predvajanja." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Razdeli zavihek Splošno v nastavitvah" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Izboljšaj obnašanje pri preklopu seznama predvajanja v upravljalnikih oken" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Premakni vnose menija aplikacij v glavni meni" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Uporabi ločene povezave MPRIS DBus za vsako okno" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Dodaj podporo za lastnost LoopStatus v MPRIS" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Dodaj možnost --mpv-options za podajanje nastavitev prek ukazne vrstice" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Nastavi privzeto mapo za posnetke zaslona na XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"Izboljšaj podporo nastavitev --window-scale, --autofit, --autofit-larger in " +"--autofit-smaller" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Dodaj nastavitev ukazne vrstice za WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" +"V kontekstni meni dodaj gumb za odstranjevanje vnosov seznama predvajanja" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" +"V kontekstni meni dodaj gumb za kopiranje lokacije vnosov seznama " +"predvajanja" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Dodaj možnost za preskakovanje vnosov seznama predvajanja namesto poglavij z" +" gumbi za preskok." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Omogoči izbirniku datotek izbor " + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "Dodaj vnos v meni desnega klika za vrtenje ene datoteke v zanki" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "Obvladuj dogodke sprememb lastnosti za celozaslonski in okenski način" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "Dodaj možnost za skrivanje kazalca v okenskem načinu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Glavno okno programa med predvajanjem" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Glavno okno z onemogočenimi dekoracijami na uporabniški strani (CSD)" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Glavno okno z odprtim seznamom predvajanja" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Večpredstavnostni predvajalnik" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Predvajaj filme in videoposnetke" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "" +"videoposnetek;video;film;videoizrezek;serija;predvajalnik;DVD;TV;CD;zgoščenka;album;glasba;GNOME;mpv;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Novo okno" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Predvajanje" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Prikaži izdajo različice" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Dodaj v seznam predvajanja" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Ustvari novo okno" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "NASTAVITVE" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Nastavi vlogo okna" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Ne priklopi se na že delujoč program" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Pavza" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Predvajaj" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Ustavi" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Naprej" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Nazaj" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Naslednje poglavje" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Prejšnje poglavje" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Seznam predvajanja v zanki" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Naključen izbor seznama predvajanja" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Preklopi celozaslonski način" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Napaka" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Vse datoteke" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Večpredstavnostne datoteke" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Zvočne datoteke" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Video datoteke" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Slikovne datoteke" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Datoteke s podnapisi" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Brez" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Neznano" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "Naloži z_unanje..." + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Zgoščenka ni najdena" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Datoteka" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Odpri..." + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Odpri _mesto..." + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Odpri _zgoščenko..." + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Shrani seznam predvajanja" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Novo okno" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Izhod" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Uredi" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Možnosti" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Video sled" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Avdio sled" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "_Podnapisi" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Ogled" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "Preklopi _gumbe" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "Preklopi _seznam predvajanja" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Celozaslonski način" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Pomoč" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Tipkovne bližnjice" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_O programu" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Odpri _zgoščenko" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "Predvajanje je bilo nepričakovano prekinjeno. Razlog: %s." + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Mesto:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Prekliči" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Odpri" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Napaka pri uveljavljanju nastavitev za MPV." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Kopiraj mesto" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "O_dstrani" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Dodaj..." + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Dodaj _lokacijo..." + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "P_remešaj" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Predvajaj v _zanki" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Predvajaj seznam pre_dvajanja v zanki" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Seznam predvajanja" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Seznam predvajanja je prazen" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Dodaj vtičnik" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Lua vtičniki" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "JavaScript vtičniki" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "C vtičniki" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Napaka prenašanja iz '%s' v '%s'. Razlog: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Vtičniki niso najdeni" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Odstrani" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "" +"Ste prepričani, da želite odstraniti ta skript? Razveljavitev operacije ni " +"mogoča." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Napaka odstranjevanja datoteke '%s'. Razlog: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Vmesnik" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Nastavitve za mpv" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Razno" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Vtičniki" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Shrani" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Nastavitve" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Odpri datoteko" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Odpri mesto" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Dodaj datoteko na seznam predvajanja" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Dodaj mesto na seznam predvajanja" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Pokaži okno za nastavitve" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Preklopi gumbe" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Preklopi seznam predvajanja" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Preklopi na celozaslonski način" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Zapusti celozaslonski način" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "Prikazu OSD dodaj čas predvajanja in trajanje" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Prikaži ime datoteke na OSD" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Prikaži napredek, pretečen čas in trajanje na OSD" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Išči nazaj/naprej po 5 sekund" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Išči nazaj/naprej po 1 sekundo" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Išči nazaj/naprej po 1 minuto" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Točno iskanje nazaj/naprej po 5 sekund" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Išči do prejšnjega/naslednjega podnapisa" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Prehajaj med prejšnjo/naslednjo sličico" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Pojdi na začetek prejšnjega/naslednjega poglavja" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Zvišaj/znižaj hitrost predvajanja za 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Prepolovi/podvoji hitrost predvajanja" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Ponastavi hitrost predvajanja na običajno" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Pojdi nazaj/naprej po seznamu predvajanja" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Odstrani izbran element seznama predvajanja" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Shrani seznam predvajanja" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Nastavi/počisti točki A-B zanke" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Preklopi neskončno zanko" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Začasno ustavi" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Zapri" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Shrani trenutno pozicijo na seznamu predvajanja in zapri" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Vstopi v način iskanja" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Preskoči na naslednji zadetek" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Preskoči na prejšnji zadetek" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Zapri način iskanja" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Kroži skozi zvočne sledi" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Zvišaj/znižaj glasnost" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Izklopi ali vklopi zvok" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Nastavi zamik zvoka za +/- 0,1 sekundo" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Omogoči vidljivost podnapisov" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Kroži skozi podnapise" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Nastavi zamik podnapisov za +/- 0,1 sekundo" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Omogoči prezrtje stilov podnapisov SSA/ASS" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Premakni podnapise gor/dol" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Omogoči združljivostni način za VSFilter" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Kroži skozi video sledi" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Zvišaj/znižaj območje pomikanje-skeniranje (pan-scan)" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Naredi posnetek zaslona" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Naredi posnetek zaslona brez podnapisov" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Naredi posnetek zaslona, kot ga prikazuje okno" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Preoblikuj sliko na polovico izvirne velikosti" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Preoblikuj sliko na izvirno velikost" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Preoblikuj sliko na dvojno izvirno velikost" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Nastavi kontrast" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Nastavi svetlost" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Nastavi gama vrednost" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Nastavi nasičenost" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Omogoči/onemogoči odpravljanje prepletanja (deinterlacing)" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Kroži med razmerji slike" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Uporabniški vmesnik" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Video" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Zvok" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Podnapisi" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Predvajanje" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Iskanje" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Naloži zvočno sled..." + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Naloži slikovno sled..." + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Naloži podnapise..." + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Omogočanje/onemogočanje dekoracij na uporabniški strani zahteva vnovični " +"zagon." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Dodaj datoteko na seznam predvajanja" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Odpri datoteko" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Dodaj mesto na seznam predvajanja" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Odpri mesto" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Shrani seznam predvajanja" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "GTK vmesnik za MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Nejc Bertoncelj " diff --git a/po/sr.po b/po/sr.po new file mode 100644 index 0000000..7722b7a --- /dev/null +++ b/po/sr.po @@ -0,0 +1,1108 @@ +# gnome-mpv , 2019. #zanata +# gnome-mpv , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: gnome-mpv 0.12\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-20 20:48+0700\n" +"PO-Revision-Date: 2020-06-23 10:41-0400\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Serbian (Cyrillic)\n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "Да ли су поставке већ пренете из претходне верзије" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Омогући тамну тему" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Омогући украсе клијента" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Користи пливајуће контроле у режиму прозора" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Увек отвори нови прозор" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Опције које треба пренети на mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Путања до mpv конфигурационе датотеке" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Путања до mpv конфигурационе датотеке уноса" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Омогући подршку за MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Омогући подршку за мултимедијалне тастере" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Припреми метаподатке" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Ширина прозора" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Висина прозора" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Јачина звука" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Ширина листе пуштања" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Дозвољава приказ контрола" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Прикажи листу пуштања" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "URI последње приступљеног директоријума" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "GTK+ прочеље за mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Могућности:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Превуци и отпусти листу пуштања" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Учитавам спољне mpv конфигурационе датотеке" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "MPRIS2 D-Bus сучеље" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +#, fuzzy +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "Користи пливајуће контроле у режиму прозора" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Главни прозор са онемогућеним CSD-ом" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Главни прозор са отвореном листом пуштања" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Нови прозор" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Репродукција" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Прикажи верзију издања" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Нанижи" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Направи нови прозор" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Не повезуј на већ покренут примерак" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Паузирај" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Пусти" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Заустави" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Напред" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Назад" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Следеће Поглавље" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Претходно Поглавље" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Цео Екран" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Грешка" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Све Датотеке" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Медијски записи" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Звучни записи" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Видео записи" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Слике" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Преводи" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Ниједан" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Непознато" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "_Учитај Спољне..." + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Датотека" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Сачувај Листу Пуштања" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Нови прозор" + +#: src/celluloid-menu.c:242 +#, fuzzy +msgid "_Quit" +msgstr "Напусти" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Уреди" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Поставке" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Видео Снимак" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Аудио Снимак" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "_Превод" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Преглед" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Прикажи Контроле" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Прикажи Листу Пуштања" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Цео Екран" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Помоћ" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Пречице Тастатуре" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "" + +#: src/celluloid-menu.c:321 +#, fuzzy +msgid "Open _Disc" +msgstr "Отвори датотеку" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "Репродукција је неправилно окончана. Разлог: %s." + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Локација:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Откажи" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Отвори" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Неуспешна примена једне или више MPV опција." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Додај..." + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Додај_Локацију..." + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Насумично" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Листа Пуштања" + +#: src/celluloid-playlist-widget.c:943 +#, fuzzy +msgid "Playlist is empty" +msgstr "Листа Пуштања" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Неуспешно копирање датотеке из '%s' у '%s'. Разлог: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Уклони" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "" +"Сигурно желите да уклоните ову скрипту? Овај поступак не може бити опозван." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Неуспешно брисање датотеке '%s'. Разлог: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Сачувај" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Поставке" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Отвори датотеку" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Отвори локацију" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Додај датотеку у листу" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Додај место у листу" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Прикажи дијалог поставки" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Прикажи контроле" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Прикажи листу пуштања" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Прикажи у режиму целог екрана" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Напусти режим целог екрана" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "Промени OSD приказ између нормалног и време пуштања/дужина" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Прикажи име датотеке у OSD" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Прикажи напредак, протекло време и дужину на OSD" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Пребаци 5 секунди уназад/унапред" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Пребаци тачно 1 секунд уназад/унапред" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Пребаци 1 минут уназад/унапред" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Пребаци тачно 5 секунди уназад/унапред" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Пребаци на претходни/следећи поднатпис" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Корак за једну слику уназад/унапред" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Пребаци на почетак претходног/следећег поглавља" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Успори/убрзај репродукцију за 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Преполови/удвостручи тренутну брзину репродукције" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Поврати нормалну брзину репродукције" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Иди уназад/унапред у листи пуштања" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Избаци означену ставку из листе пуштања" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Сачувај листу пуштања" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Постави/очисти A-B тачке понављања" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Укључи бесконачно понављање" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Паузирај или настави" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Напусти" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Сачувај тренутну позицију репродукције и напусти" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Кружи кроз аудио снимке" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Смањи/појачај" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Искључи или укључи звук" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Прилагоди кашњење звука за +/- 0.1 секунд" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Промени видљивост поднатписа" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Кружи кроз доступне поднатписе" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Прилагоди кашњење поднатписа за +/- 0.1 секунд" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Измени SSA/ASS стил поднатписа" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Помери поднатписе горе/доле" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Измени VSFilter режим усклађености" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Кружи кроз видео снимке" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Повећај/умањи опсег скенирања односа" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Направи снимак екрана" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Направи снимак екрана без поднатписа" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Направи снимак екрана како га прозор приказује" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Преполови оригиналну величину видео снимка" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Поврати оригиналну величину видео снимка" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Удвостручи оригиналну величину видео снимка" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Прилагоди контраст" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Прилагоди осветљеност" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Прилагоди гаму" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Прилагоди засићење" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Омогући или онемогући преплитање" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Кружи кроз промену размере" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Корисничко Сучеље" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Видео" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Аудио" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Поднатпис" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Репродукција" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Трагање" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Учитај звучни запис…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Учитај превод…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Потребно је поновно покретање да би измена подешавања украса клијента имала " +"ефекат." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Додај Датотеку у Листу Пуштања" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Отвори Датотеку" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Додај Локацију у Листу Пуштања" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Отвори Локацију" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Сачувај Листу Пуштања" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "GTK прочеље за MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Срђан С." diff --git a/po/sr@latin.po b/po/sr@latin.po new file mode 100644 index 0000000..df1a701 --- /dev/null +++ b/po/sr@latin.po @@ -0,0 +1,1108 @@ +# gnome-mpv , 2019. #zanata +# gnome-mpv , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: gnome-mpv 0.12\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-20 20:48+0700\n" +"PO-Revision-Date: 2020-06-23 10:41-0400\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Serbian (Latin)\n" +"Language: sr@latin\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "Da li su postavke već prenete iz prethodne verzije" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Omogući tamnu temu" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Omogući ukrase klijenta" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Koristi plivajuće kontrole u režimu prozora" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Uvek otvori novi prozor" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Opcije koje treba preneti na mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Putanja do mpv konfiguracione datoteke" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Putanja do mpv konfiguracione datoteke unosa" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Omogući podršku za MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Omogući podršku za multimedijalne tastere" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Pripremi metapodatke" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Širina prozora" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Visina prozora" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Jačina zvuka" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Širina liste puštanja" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Dozvoljava prikaz kontrola" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Prikaži listu puštanja" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "URI poslednje pristupljenog direktorijuma" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "GTK+ pročelje za mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Mogućnosti:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Prevuci i otpusti listu puštanja" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Učitavam spoljne mpv konfiguracione datoteke" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "MPRIS2 D-Bus sučelje" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +#, fuzzy +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "Koristi plivajuće kontrole u režimu prozora" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Glavni prozor sa onemogućenim CSD-om" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Glavni prozor sa otvorenom listom puštanja" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Novi prozor" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Reprodukcija" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Prikaži verziju izdanja" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Naniži" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Napravi novi prozor" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Ne povezuj na već pokrenut primerak" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Pauziraj" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Pusti" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Zaustavi" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Napred" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Nazad" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Sledeće Poglavlje" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Prethodno Poglavlje" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Ceo Ekran" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Greška" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Sve Datoteke" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Medijski zapisi" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Zvučni zapisi" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Video zapisi" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Slike" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Prevodi" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Nijedan" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Nepoznato" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "_Učitaj Spoljne..." + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Datoteka" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Sačuvaj Listu Puštanja" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Novi prozor" + +#: src/celluloid-menu.c:242 +#, fuzzy +msgid "_Quit" +msgstr "Napusti" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Uredi" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Postavke" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Video Snimak" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Audio Snimak" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "_Prevod" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Pregled" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Prikaži Kontrole" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Prikaži Listu Puštanja" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Ceo Ekran" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Pomoć" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Prečice Tastature" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "" + +#: src/celluloid-menu.c:321 +#, fuzzy +msgid "Open _Disc" +msgstr "Otvori datoteku" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "Reprodukcija je nepravilno okončana. Razlog: %s." + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Lokacija:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Otkaži" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Otvori" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Neuspešna primena jedne ili više MPV opcija." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Dodaj..." + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Dodaj_Lokaciju..." + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Nasumično" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Lista Puštanja" + +#: src/celluloid-playlist-widget.c:943 +#, fuzzy +msgid "Playlist is empty" +msgstr "Lista Puštanja" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Neuspešno kopiranje datoteke iz '%s' u '%s'. Razlog: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Ukloni" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "" +"Sigurno želite da uklonite ovu skriptu? Ovaj postupak ne može biti opozvan." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Neuspešno brisanje datoteke '%s'. Razlog: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Sačuvaj" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Postavke" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Otvori datoteku" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Otvori lokaciju" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Dodaj datoteku u listu" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Dodaj mesto u listu" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Prikaži dijalog postavki" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Prikaži kontrole" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Prikaži listu puštanja" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Prikaži u režimu celog ekrana" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Napusti režim celog ekrana" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "Promeni OSD prikaz između normalnog i vreme puštanja/dužina" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Prikaži ime datoteke u OSD" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Prikaži napredak, proteklo vreme i dužinu na OSD" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Prebaci 5 sekundi unazad/unapred" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Prebaci tačno 1 sekund unazad/unapred" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Prebaci 1 minut unazad/unapred" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Prebaci tačno 5 sekundi unazad/unapred" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Prebaci na prethodni/sledeći podnatpis" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Korak za jednu sliku unazad/unapred" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Prebaci na početak prethodnog/sledećeg poglavlja" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Uspori/ubrzaj reprodukciju za 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Prepolovi/udvostruči trenutnu brzinu reprodukcije" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Povrati normalnu brzinu reprodukcije" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Idi unazad/unapred u listi puštanja" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Izbaci označenu stavku iz liste puštanja" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Sačuvaj listu puštanja" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Postavi/očisti A-B tačke ponavljanja" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Uključi beskonačno ponavljanje" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Pauziraj ili nastavi" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Napusti" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Sačuvaj trenutnu poziciju reprodukcije i napusti" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Kruži kroz audio snimke" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Smanji/pojačaj" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Isključi ili uključi zvuk" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Prilagodi kašnjenje zvuka za +/- 0.1 sekund" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Promeni vidljivost podnatpisa" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Kruži kroz dostupne podnatpise" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Prilagodi kašnjenje podnatpisa za +/- 0.1 sekund" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Izmeni SSA/ASS stil podnatpisa" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Pomeri podnatpis gore/dole" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Izmeni VSFilter režim usklađenosti" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Kruži kroz video snimke" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Povećaj/umanji opseg skeniranja odnosa" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Napravi snimak ekrana" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Napravi snimak ekrana bez podnatpisa" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Napravi snimak ekrana kako ga prozor prikazuje" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Prepolovi originalnu veličinu video snimka" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Povrati originalnu veličinu video snimka" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Udvostruči originalnu veličinu video snimka" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Prilagodi kontrast" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Prilagodi osvetljenost" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Prilagodi gamu" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Prilagodi zasićenje" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Omogući ili onemogući preplitanje" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Kruži kroz promenu razmere" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Korisničko Sučelje" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Video" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Audio" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Podnatpis" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Reprodukcija" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Traganje" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Učitaj zvučni zapis..." + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Učitaj prevod..." + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Potrebno je ponovno pokretanje da bi izmena podešavanja ukrasa klijenta " +"imala efekat." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Dodaj Datoteku u Listu Puštanja" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Otvori Datoteku" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Dodaj Lokaciju u Listu Puštnja" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Otvori Lokaciju" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Sačuvaj Listu Puštanja" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "GTK pročelje za MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Srđan S." diff --git a/po/sv.po b/po/sv.po new file mode 100644 index 0000000..96968c7 --- /dev/null +++ b/po/sv.po @@ -0,0 +1,1116 @@ +# gnome-mpv , 2019. #zanata +# gnome-mpv , 2020. #zanata +# Åke Engelbrektson , 2020. #zanata +# Kristoffer Brissman , 2021. #zanata +# Åke Engelbrektson , 2021. #zanata +msgid "" +msgstr "" +"Project-Id-Version: gnome-mpv 0.15\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-20 20:48+0700\n" +"PO-Revision-Date: 2021-02-21 03:36-0500\n" +"Last-Translator: Kristoffer Brissman \n" +"Language-Team: Swedish\n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "Om inställningarna redan har migrerats från den föregående versionen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Ändra automatiskt storlek på fönster för att passa videon" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Aktivera mörkt tema" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Aktivera fönsterdekorationer i klienten" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Använd flytande kontroller i fönsterläge" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Dölj muspekare automatiskt i fönsterläge" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "Lägsta muspekarhastighet vid vilken flytande kontroller visas igen." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Storlek på den döda zon i vilken markörens rörelse inte kommer att medföra " +"att kontrollerna visas." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Använd hoppa-över-knappar för att kontrollera spelningslista" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Låt filväljaren komma ihåg senaste filens plats" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Öppna alltid nytt fönster" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Alternativ att skicka vidare till mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Sökväg till mpv konfigurationsfil" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Läs in mpv-konfigurationsfil" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Sökväg till mpv indata konfigurationsfil" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Läs in konfigurationsfil för mpv-indata" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Aktivera stöd för MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Aktivera stöd för media knappar" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Läs in metadata i förväg" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ignorera uppspelningsfel" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Förhindra sessionsvänteläge" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Fönsterbredd" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Fönsterhöjd" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Om fönstret är maximerat eller inte" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Volym för spelaren" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Om spelningslistan skall börja om när slutet nås" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Spelningslistans bredd" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Visa eller visa ej kontrollerna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Visa spelningslistan eller inte" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "URI för den senast använda mappen" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "GTK+ gränssnitt för mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" +"Celluloid är en enkel mediaspelare som kan spela upp i stort sett alla film-" +" och ljudformat. Den stödjer spelningslistor och MPRIS2 " +"mediaspelarkontroller. Designen av Celluloid följer GNOME Human Interface " +"Guidelines, men kan också anpassas för andra system som inte använder " +"klientsidans dekorationer (CSD). Den är baserad på biblioteket mpv och GTK." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Funktioner:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Dra och släpp spelningslista" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Läser in externa mpv konfigurationsfiler" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "MPRIS2 D-Bus gränssnitt" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Celluloids utvecklare" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Den här versionen innehåller följande ändringar:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Visa endast ett felmeddelande när ett stort antal fel uppstår i snabb följd" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Lägg till menyobjekt för att öppna mappar." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Lägg till stöd för externa videospår" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Ange standard skärmklippsmapp till XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Lägg till kommandoalternativ för inställning av WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "Lägg till alternativet att dölja muspekaren automatiskt i fönsterläge" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Huvudfönstret med CSD inaktiverat" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Huvudfönstret med spelningslista öppen" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Multimediaspelare" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Spela filmer och videor" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Nytt fönster" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Spelar" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Visa utgivningsversion" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Lägg till i kö" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Skapa ett nytt fönster" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "ALTERNATIV" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Anslut inte till en instans som redan körs" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Paus" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Spela upp" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Stopp" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Framåt" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Spola tillbaka" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Nästa kapitel" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Föregående kapitel" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Upprepa spelningslista" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Blanda spelningslista" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Växla helskärm" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Fel" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Alla filer" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Mediefiler" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Ljudfiler" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Videofiler" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Bildfiler" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Undertextfiler" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Inga" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Okänd" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "_Läs in externt…" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Ingen skiva hittades" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Fil" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Öppna…" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Öppna _mapp…" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Öppna _plats…" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Öppna _skiva…" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Spara spelningslista" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Nytt fönster" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Avsluta" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Redigera" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Inställningar" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Videospår" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Ljudspår" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "_Undertextspår" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Visa" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Visa/Dölj kontroller" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Visa/Dölj spelningslista" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Helskärm" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Hjälp" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Kortkommandon" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Om Celluloid" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Öppna _skiva" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "Där uppstod ett onormalt avbrott under uppspelningen. Anledning: %s." + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Plats:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Avbryt" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Öppna" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Misslyckades att tillämpa en eller flera mpv-parametrar." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Kopiera plats" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_ta bort" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Lägg till…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Lägg till _mapp…" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Lägg till _plats…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Blanda" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Upprepa _fil" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Upprepa _spelningslista" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Spelningslista" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Spelningslistan är tom" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Lägg till insticksmodul" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Insticksmoduler Lua" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "Insticksmoduler JavaScript" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "C-instick" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Misslyckades att kopiera filen från '%s' till '%s'. Anledning: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Inga insticksmoduler hittades" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Ta bort" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "Vill du verkligen ta bort detta skript? Denna åtgärd kan inte ångras." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Misslyckades att radera filen '%s'. Anledning: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "Mpv-konfigurationsfil:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "Konfigurationsfil för mpv-indata:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Extra mpv-parametrar:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Gränssnitt" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Konfigurationsfiler" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Diverse" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Insticksmoduler" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Spara" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Inställningar" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Öppna fil" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Öppna plats" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Lägg till fil i spelningslista" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Lägg till plats i spelningslista" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Visa dialogrutan för alternativ" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Visa/Dölj kontroller" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Visa/Dölj spelningslista" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Växla helskärmsläge" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Lämna helskärmsläge" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "Växla OSD-lägen mellan normal och speltid/varaktighet" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Visa filnamn i OSD-vyn" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Visa förlopp, förfluten tid och speltid i OSD-vyn" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Sök bakåt/framåt 5 sekunder" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Sök exakt bakåt/framåt en sekund" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Sök bakåt/framåt en minut" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Sök exakt bakåt/framåt 5 sekunder" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Sök till föregående/nästa undertext" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Gå bakåt/framåt med en bildruta" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Sök till början av föregående/nästa kapitel" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Minska/Öka uppspelningshastigheten med 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Halva/Dubbla aktuella uppspelningshastigheten" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Återställ normal uppspelningshastighet" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Gå bakåt/framåt i spelningslistan" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Ta bort markerat objekt från spelningslista" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Spara spelningslista" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Ange/Rensa A-B-punkter för repeterad uppspelning" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Växla oändlig återuppspelning" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Pausa eller fortsätt" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Avsluta" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Spara nuvarande uppspelningsposition och avsluta" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Gå till sökläge" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Hoppa till nästa träff" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Hoppa till föregående träff" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Avsluta sökläge" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Bläddra igenom ljudspår" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Sänk/Höj volymen" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Slå på eller av ljud" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Justera ljudfördröjning med +/- 0,1 sekunder" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Växla synlighet av undertexter" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Bläddra igenom tillgängliga undertexter" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Justera undertexters fördröjning med +/- 0,1 sekunder" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "SSA/ASS åsidosättning av undertexters stil av/på" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Flytta undertexter upp/ner" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Växla VSFilter aspekt kompatibilitetsläge" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Bläddra igenom videospår" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Minska/Öka panorera-och-skanna-området" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Ta ett skärmklipp" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Ta ett skärmklipp, utan undertexter" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Ta ett skärmklipp, som det visas i fönstret." + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Ändra storlek på videon till halva originalstorleken" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Återställ videon till sin ursprungliga storlek" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Ändra storlek på videon till dubbla originalstorleken" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Justera kontrast" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Justera ljusstyrka" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Justera gamma" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Justera färgmättnad" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Aktivera eller inaktivera deinterlacer" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Ändra överskridning av bildförhållande" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Användargränssnitt" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Video" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Ljud" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Undertext" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Uppspelning" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Söker" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Läs in ljudspår…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Läs in videospår…" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Läs in undertextspår…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Aktivering eller inaktivering av fönsterdekorationer i klienten kräver en " +"omstart innan det träder i kraft." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Lägg till mapp till spelningslista" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Öppna mapp" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Lägg till fil i spelningslista" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Öppna fil" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Lägg till plats till spelningslista" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Öppna plats" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Spara spelningslista" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "Ett GTK gränssnitt för MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" +"Patrik Nilsson \n" +"Åke Engelbrektson " diff --git a/po/tr.po b/po/tr.po new file mode 100644 index 0000000..2c5ca59 --- /dev/null +++ b/po/tr.po @@ -0,0 +1,1127 @@ +# Serdar Sağlam , 2019. #zanata +# gnome-mpv , 2019. #zanata +# Serdar Sağlam , 2020. #zanata +# gnome-mpv , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: gnome-mpv 0.15\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-20 20:48+0700\n" +"PO-Revision-Date: 2020-06-23 10:50-0400\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Turkish\n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n>1)\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "Ayarların önceki sürümden zaten geçirilmiş olup olmadığı" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Videoya sığması için pencereyi otomatik olarak yeniden boyutlandır" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Koyu temayı etkinleştir" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "İstemci tarafı süslemelerini etkinleştir" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Pencere kipinde kayan kontroller kullan" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "Yüzen kontrollerin yasak olacağı asgari imleç hızı." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Oynatma listesini kontrol için atlama düğmelerini kullan" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Her zaman yeni pencere aç" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Mpv'ye geçiş seçenekleri" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Mpv yapılandırma dosyası yolu" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Mpv giriş yapılandırma dosyası yolu" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "MPRIS desteğini etkinleştir" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Medya tuşları desteğini etkinleştir" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Meta verileri önceden al" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Oynatma hatalarını yoksay" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Pencere genişliği" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Pencere yüksekliği" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Pencerenin büyütülüp büyütülmediği" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Oynatıcı hacmi" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Oynatma listesinin sonuna ulaşıldığında döngü yapıp yapmamak" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Oynatma listesi genişliği" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Kontrolleri göster veya gösterme" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Oynatma listesini göster veya gösterme" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "Erişilen son klasörün URI'si" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "Mpv için GTK + arayüz" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" +"Celluloid, neredeyse tüm video ve ses biçimlerini oynatabilen basit bir " +"medya oynatıcıdır. Oynatma listelerini ve MPRIS2 medya oynatıcı " +"kontrollerini destekler. Celluloid tasarımı GNOME Arayüz Kılavuzlarına " +"uygundur, ancak istemci tarafı süslemeleri (CSD) kullanmayan diğer sistemler" +" için de uyarlanabilir. Mpv kütüphanesine ve GTK'ya dayanmaktadır." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Özellikler:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Oynatma listesini sürükleyip bırak" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Harici mpv yapılandırma dosyalarını yükle" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "MPRIS2 D-Bus arayüzü" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Celluloid Geliştiricileri" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Bu sürüm aşağıdaki değişiklikleri içerir:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "Bu liste eksik. Değişiklikler için (git) günlüğüne bakın" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Farsça çeviriyi hazırlayan @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Ukraynaca çeviriyi hazırlayan @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Mpv --border seçeneğini kullanarak pencere dekorasyonlarını göstermek / " +"gizlemek için destek" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Diskleri açmak için menü ögesi ekle" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Ses açılır penceresi pencereli kipte açıkken imlecin gizlenmesini engelle" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Mpv 0.30 kilitlenmesi düzeltildi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Proje Celluloid olarak yeniden adlandırıldı" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Türkçe çeviriyi hazırlayan @Serdar Sağlam" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Esperanto çeviriyi hazırlayan @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Opengl-cb'den yeni render API'sına taşı" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Sayısal tuş takımlarını yönet" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Unicode tuş takımlarını yönet" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Medya anahtarı olaylarını mpv'ye ilet" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Denetimlerin yasak olduğu imleç hızını kontrol etmek için dconf anahtarı " +"ekleyin" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Oynatma hatalarını bastırmak için seçenek ekle" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Tercihler iletişim kutusunda Genel sekmeyi böl" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Döşeme pencere yöneticileri altında oynatma listesini değiştirirken " +"davranışı iyileştirin" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Uygulama menüsü ögelerini birincil menüye taşı" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Her pencere için ayrı MPRIS DBus bağlantısı kullan" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "MPRIS özelliği LoopStatus için destek ekle" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Seçenek ekle, komut satırından mpv seçeneklerini ayarlamak için --mpv-" +"options" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Öntanımlı ekran görüntüsü dizinini XDG_PICTURES_DIR olarak ayarla" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"İyileştirme ekle - -pencere-ölçeği, -otoölçek - otoölçek-büyük ve otoölçek-" +"küçük" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "WM_ROLE ayarı için komut satırı seçeneği ekle" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "Oynatma listesi ögelerini kaldırmak için içerik menüsü ögesi ekle" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" +"Oynatma listesi ögelerinin konumunu kopyalamak için bağlam menüsü ögesi ekle" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Atla düğmelerinin bölümler yerine oynatma listesi girişlerini değiştirmesini" +" sağlamak için seçenek ekle" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Dosya seçicinin yerel olmayan kaynakları kabul etmesini sağla" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "Tek bir dosyayı yinelemek için sağ tıklatma menüsü girişi ekle" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "Tam ekran ve pencere ölçeği için özellik değiştirme olaylarını işle" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "Pencere kipinde fare imlecini otomatik gizle" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Uygulamayı çalışırken gösteren ana pencere" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "CSD'nin devre dışı bırakıldığı ana pencere" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Oynatma listesi açık olan ana pencere" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Çoklu Ortam Oynatıcı" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Filmleri ve videoları oynatın" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "" +"Video;Film;Müzik;Klip;Diziler;Oynatıcı;DVD;TV;Disk;Albüm;Music;GNOME;mpv;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Yeni Pencere" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Oynatılıyor" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Mevcut sürümü göster" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Kuyruğa al" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Yeni pencere oluştur" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "SEÇENEKLER" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Pencere rolünü ayarla" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Zaten çalışan bir örneğe bağlanmayın" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Duraklat" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Oynat" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Durdur" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "İleri Sar" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Geri Sar" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Sonraki Bölüm" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Önceki Bölüm" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Yinele" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Tam Ekran ⏎" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Hata" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Tüm Dosyalar" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Medya Dosyaları" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Ses Dosyaları" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Video Dosyaları" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Görüntü Dosyaları" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Altyazı Dosyaları" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Yok" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Bilinmeyen" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "_Harici Kaynaktan Seç…" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Disk bulunamadı" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Dosya" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Aç…" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "_Konum Aç…" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "_Disk Aç…" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "Listeyi _Kaydet" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Yeni Pencere" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Çık" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Düzenle" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Tercihler" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Video" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Diller" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "_Altyazılar" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Görünüm" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Kontrol Tuşları" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Oynatma Listesi" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Tam Ekran" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Yardım" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Klavye Kısayolları" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "Celluloid _Hakkında" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Disk _Aç" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "Oynatma anormal şekilde sonlandırıldı. Neden: %s." + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Konum:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_İptal" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Aç" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Bir veya daha fazla MPV seçeneği uygulanamadı." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "Konumu _Kopyala" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Kaldır" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Ekle…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "_Konum Ekle…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Karıştır" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "_Dosyayı Yinele" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "_Yinele" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Oynatma Listesi" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Oynatma listesi boş" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Eklenti Ekle" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Lua Eklentileri" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "JavaScript Eklentileri" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "С Eklentileri" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Dosya kopyalanamadı '%s' - '%s'. Sebep: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Eklenti bulunamadı" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Kaldır" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "" +"Bu komut dosyasını kaldırmak istediğinizden emin misiniz? Bu eylem geri " +"alınamaz." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Dosya silinemedi '%s'. Sebep: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Arabirim" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Yapılandırma Dosyaları" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Çeşitli" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Eklentiler" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Kaydet" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Tercihler" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Dosya aç" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Konum aç" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Oynatma listesine dosya ekle" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Oynatma listesine konum ekle" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Tercihler iletişim kutusunu göster" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Kontrolleri değiştir" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Oynatma listesini değiştir" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Tam ekran kipini değiştir" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Tam ekran kipinden çık" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "OSD durumlarını normal ve oynatma arasında değiştir zaman/aralık" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "OSD'de dosya adını göster" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "OSD 'de ilerlemeyi, geçen süreyi ve süreyi göster" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "5 saniye ileri/geri ara" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Tam olarak 1 saniye ileri/geri ara" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "1 dakika ileri/geri ara" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Tam olarak 5 saniye ileri/geri ara" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Önceki/sonraki altyazıyı ara" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Tek kare ileri/geri atla" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Önceki/sonraki bölümün başlangıcını araştır" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Oynatma hızını 10% oranında azalt/artır" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Yarım/çift akım oynatma hızı" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Oynatma hızını normale sıfırla" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Oynatma listesinde ileri/geri git" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Seçilen oynatma listesi ögesini kaldır" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Oynatma listesini kaydet" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "A-B yineleme noktalarını ayarla/temizle" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Sonsuz yinelemeyi değiştir" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Duraklat veya devam et" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Çık" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Geçerli oynatma konumunu kaydet ve çık" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Arama kipine gir" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Bir sonraki eşlemeye atla" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Bir önceki eşlemeye atla" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Arama kipinden çık" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Ses parçaları arasında geçiş yap" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Sesi azalt/arttır" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Sesi kapat/aç" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Ses gecikmesini +/- 0.1 saniye olarak ayarla" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Altyazı görünürlüğünü değiştir" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Kullanılabilir altyazılar arasında geçiş yap" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Altyazı gecikmesini +/- 0.1 saniye olarak ayarla" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "SSA/ASS altyazı stili geçersiz kılmayı değiştir" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Altyazıları yukarı/aşağı taşı" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "VSFilter en boy uyumluluk kipini değiştir" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Yinelenen mevcut video parçaları" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Pan ve tarama aralığını azalt/artır" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Ekran görüntüsü al" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Altyazısız ekran görüntüsü al" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Pencerenin gösterdiği gibi bir ekran görüntüsü al" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Videoyu orijinal boyutunun yarısı olarak yeniden boyutlandır" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Videoyu orijinal boyuta yeniden boyutlandır" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Orijinal boyutunu ikiye katlamak için videoyu yeniden boyutlandır" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Karşıtlığı ayarla" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Parlaklığı ayarla" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Gama'yı ayarla" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Doygunluğu ayarla" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Deinterlacer özelliğini etkinleştir veya devre dışı bırak" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Yineleme en boy oranı geçersiz kıl" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Kullanıcı Arabirimi" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Video" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Ses" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Altyazı" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Oynat" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Geçiş" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Ses Parçası Yükle…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Altyazı Parçası Yükle…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"İstemci tarafı süslemelerin etkinleştirilmesi veya devre dışı bırakılması " +"için yeniden başlatma gerekir." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Oynatma Listesine Dosya Ekle" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Dosya Aç" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Oynatma Listesine Konum Ekle" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Konum Aç" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Oynatma Listesini Kaydet" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "MPV için bir GTK arayüzü" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Serdar Sağlam " diff --git a/po/uk.po b/po/uk.po new file mode 100644 index 0000000..1c34162 --- /dev/null +++ b/po/uk.po @@ -0,0 +1,1128 @@ +# Ukrainian translations for gnome-mpv package. +# , 2019. +# Stepan Perun , 2019. #zanata +# gnome-mpv , 2019. #zanata +# gnome-mpv , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: 0.17\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-08-09 20:53+0300\n" +"PO-Revision-Date: 2020-06-23 10:40-0400\n" +"Last-Translator: Copied by Zanata \n" +"Language-Team: Ukrainian\n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "Перенесення (міграція) налаштувань користувача з попередньої версії" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Увімкнути темну тему" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Увімкнути декорування на стороні клієнта" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Використовувати плаваючі елементи керування у віконному режимі" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"Мінімальна швидкість курсору, коли плаваючі елементи управління не " +"приховані." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Використовувати кнопки пропуску для керування списком відтворення" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Завжди відкривати нове вікно" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Перейти до параметрів MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Шлях до файлу конфігурації MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Шлях до файлу конфігурації вводу MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Увімкнути підтримку MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Увімкнути підтримку мультимедійних клавіш" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Попередня вибірка метаданих" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ігнорувати помилки відтворення" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Ширина вікна" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Висота вікна" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Гучність" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Ширина списку відтворення" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Показати або не показувати елементи керування" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Показати або приховати список відтворення" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "Адреса останнього відкритої теки" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "GTK+ інтерфейс для MPV" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Можливості:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Підтримка drag-and-drop" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Завантаження зовнішніх конфігураційних файлів MPV" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "Інтерфейс MPRIS2 D-Bus" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Цей випуск містить наступні зміни:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "Цей список є неповним. Повний список змін див. в журналі git." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +#, fuzzy +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Мінімальна швидкість курсору, коли плаваючі елементи управління не " +"приховані." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +#, fuzzy +msgid "Add option for suppressing playback errors" +msgstr "Ігнорувати помилки відтворення" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Розділіть вкладку Загальні в діалозі налаштувань" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "Поліпшення поведінки при перемиканні списку відтворення" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Перемістити елементи меню програми в основне меню" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Використовувати окреме з'єднання MPRIS DBus для кожного вікна" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Додати підтримку циклу для MPRIS" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Додати параметр -- mpv-options для установки довільних параметрів mpv з " +"командного рядка" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Встановити каталог за замовчуванням для скріншотів у XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"Поліпшення обробки --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Додати параметр командного рядка для встановлення WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" +"Додати пункт контекстного меню для видалення елементів списку відтворення" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" +"Додати пункт контекстного меню для копіювання розташування елементів списку " +"відтворення" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Додати кнопки пропуску для зміни запису списку відтворення, а не глави" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Приймати не локальні розташування" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "Додати пункт меню правою кнопкою миші для зациклення одного файлу" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" +"Обробляти події зміни властивостей для повноекранного режиму і масштабу " +"вікна" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" +"Додати опцію автоматичного приховування курсору миші у віконному режимі" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Головне вікно, яке показує програму у дії" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Головне вікно з вимкненим CSD" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Головне вікно з відкритим списком відтворення" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Нове вікно" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Відтворюється" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Показати версію релізу" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Поставити в чергу" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Створити нове вікно" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "ПАРАМЕТРИ" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Встановіть роль вікна" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Не підключатися до вже працюючого екземпляра" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Призупинити" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Відтворення" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Зупинити" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Перемотати вперед" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Перемотати назад" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Наступний розділ" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Попередній розділ" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Режим повтору" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Перехід у повноекранний режим і назад" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Помилка" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Усі файли" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Медіафайли" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Аудіофайли" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Відеофайли" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Файли зображень" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Файли субтитрів" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Нічого" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Невідомий" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "Зава_нтажити зовнішні…" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +#, fuzzy +msgid "No disc found" +msgstr "Модулі не знайдено" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Файл" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Відкрити..." + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "_Відкрити розташування..." + +#: src/celluloid-menu.c:239 +#, fuzzy +msgid "Open _Disc…" +msgstr "_Відкрити розташування..." + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "З_берегти список відтворення" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Створити вікно" + +#: src/celluloid-menu.c:242 +#, fuzzy +msgid "_Quit" +msgstr "Завершити" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "З_міни" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Параметри" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "В_ідео доріжка" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Аудіо доріжка" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "Доріжка с_убтитрів" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Вигляд" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Показати/Приховати елементи керування" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Показати/Приховати список відтворення" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Повноекранний режим" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Довідка" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Комбінації клавіш" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Про Celluloid" + +#: src/celluloid-menu.c:321 +#, fuzzy +msgid "Open _Disc" +msgstr "Відкрити файл" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "Відтворення було припинено. Причина: %s." + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Розташування:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Скасувати" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Відкрити" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Не вдалося застосувати один або кілька параметрів MPV." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Копіювати розташування" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "Ви_лучити" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Додати…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Дод_ати розташування…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_У випадковому порядку" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Повторювати _файл" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Повторювати _список відтворення" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Список відтворення" + +#: src/celluloid-playlist-widget.c:943 +#, fuzzy +msgid "Playlist is empty" +msgstr "Список відтворення" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Додати модуль" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Lua модулі" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "JavaScript модулі" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "С модулі" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Не вдалося скопіювати файл з '%s' до '%s'. Причина: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Модулі не знайдено" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Видалити" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "Ви впевнені, що хочете видалити цей скрипт? Ця дія незворотна." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Не вдалося видалити файл '%s'. Причина: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Інтерфейс" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Файли налаштувань" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Різне" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Модулі" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "З_берегти" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Параметри" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Відкрити файл" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Відкрити розташування" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Додати файл до списку відтворення" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Додати розташування до списку відтворення" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Показати параметри" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Показати/Приховати елементи керування" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Показати/Сховати список відтворення" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Повноекранний режим" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Вийти з повноекранного режиму" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "Показати час відтворення/тривалість" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Показати ім'я файлу в екранному меню OSD" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Показувати прогрес, поточний час і тривалість" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Перехід назад/вперед на 5 секунд" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Точний перехід назад/вперед на 1 секунду" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Перехід назад/вперед на 1 хвилину" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Точний перехід назад/вперед на 5 секунд" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Перехід до попереднього/наступного субтитру" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Крок назад/вперед на один кадр" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Перехід до попередньої/наступної глави" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Зменшити/збільшити швидкість відтворення на 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Скоротити вдвічі/подвоїти поточну швидкість відтворення" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Скинути швидкість відтворення на нормальну" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Назад/вперед по списку відтворення" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Видалити вибраний файл зі списку відтворення" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Зберегти список відтворення" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Встановити/очистити A-B точки циклу" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Переключити нескінченний повтор" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Призупинити або відновити" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Завершити" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Зберегти поточну позицію відтворення та вийти" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Циклічно доступні аудіо доріжки" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Зменшити/збільшити гучність" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Вимкнути або увімкнути звук" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Змінити затримку аудіо на + / - 0,1 секунди" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Переключити видимість субтитрів" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Циклічно переключити доступні субтитри" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Змінити затримку субтитрів на + / - 0,1 секунди" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Переключити стиль субтитрів SSA/ASS" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Перемістити субтитри вгору/вниз" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Перемикання режиму сумісності аспектів VSFilter" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Циклічно доступні відео доріжки" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Зменшує/збільшує діапазон панорамування та сканування" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Зробити скріншот" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Зробити скріншот, без субтитрів" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Зробити скріншот, з субтитрами та OSD, масштабуванням" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Змінити розмір відео до половини свого вихідного розміру" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Змінити розмір відео до оригінального розміру" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Подвоїти розмір відео щодо оригінального розміру" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Регулювання контрастності" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Регулювання яскравості" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Регулювання гами" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Регулювання насиченості" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Увімкнути або вимкнути деінтерлейсинг" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Цикл корекції співвідношення сторін" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Інтерфейс користувача" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Відео" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Аудіо" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Субтитри" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Відтворення" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Перехід" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Завантажити звукову доріжку…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Завантажити субтитри…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Увімкнути або вимкнути декорування на стороні клієнта вимагає " +"перезавантаження щоб зміни набули чинності." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Додати файл до списку відтворення" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Відкрити файл" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Додати розташування до списку відтворення" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Відкрити розташування" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Зберегти список відтворення" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "GTK інтерфейс для MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po new file mode 100644 index 0000000..4e55ba3 --- /dev/null +++ b/po/zh_CN.po @@ -0,0 +1,1115 @@ +# Chinese translations for gnome-mpv package +# gnome-mpv 软件包的简体中文翻译. +# Copyright (C) 2015 THE GNOME-MPV'S COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-mpv package. +# sun , 2015. +# Mingye Wang , 2015. +# Huang Jiayao , 2019. #zanata +# gnome-mpv , 2019. #zanata +# 玉堂白鹤 , 2019. #zanata +# gnome-mpv , 2020. #zanata +# 玉堂白鹤 , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: gnome-mpv 0.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-20 20:48+0700\n" +"PO-Revision-Date: 2020-06-30 08:57-0400\n" +"Last-Translator: 玉堂白鹤 \n" +"Language-Team: AOSC zh_CN \n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "是否已从上一个版本迁移设置" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "自动调整窗口大小以适合视频" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "启用暗色主题" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "启用客户端装饰" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "在窗口模式下启用浮动控制" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "浮动控件取消隐藏时的最小光标速度。" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "使用跳转按钮控制播放列表" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "总是打开新窗口" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "要传递给 mpv 的选项" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "mpv 配置文件的路径" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "mpv 输入配置文件的路径" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "启用 MPRIS 支持" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "启用媒体键支持" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "预先读取元数据" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "忽略播放错误" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "窗口宽度" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "窗口高度" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "窗口是否最大化" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "播放器音量" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "播放列表结束时是否循环播放" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "播放列表宽度" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "是否显示控制栏" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "是否显示播放列表" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "最近访问的文件夹 URI" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "MPV 的 GTK+ 前端程序" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "特性:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "拖放播放列表" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "正在载入外部 mpv 配置文件" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "MPRIS2 D-Bus 接口" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Celluloid 开发者" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "该发布版本包含了以下变更:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "这个列表不是完整的。请到 git log 中查看完整的 changelog。" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "实现播放列表搜索。" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "更新快捷键对话框中的快捷方式列表。" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "添加 Kimmo Kujansuu 贡献的芬兰语翻译。" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "添加 @bertronika 贡献的斯洛文尼亚语翻译。" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "添加 @danialbehzadi 贡献的波斯语翻译" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "添加 @vl-nix 贡献的乌克兰语翻译" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "使用 mpv 选项 --border 添加显示/隐藏窗口装饰的支持" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "添加打开光盘的菜单项" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "将项目重命名为 Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "添加选项以抑制播放错误" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "在首选项对话框中分离“通用”标签页" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "改善平铺式窗口管理器下的切换显示播放列表功能" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "将 App Menu 的项目移动到主菜单" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "为每个窗口使用分离的 MPRIS DBus 连接" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "添加 MPRIS 属性 LoopStatus 的支持" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "通过 --mpv-options 选项从命令行中设置任意 mpv 参数" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "设置默认的截图目录为 XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"改善对 --window-scale、 --autofit、 --autofit-larger 和 --autofit-smaller 的处理" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "增加一个命令行参数来设置 WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "增加上下文菜单项来移除播放列表里的项目" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "增加上下文菜单项来复制播放列表项目的路径" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "增加选项来让跳转按钮可以切换播放列表项,而不是切换章节" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "让文件选择器可以接受非本地路径" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "增加循环播放单个文件的右键菜单项" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "处理全屏和窗口大小的属性变化事件" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "增加选项以在窗口模式下自动隐藏鼠标指针" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "显示运行中应用的主窗口" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "关闭了 CSD 的主窗口" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "打开了播放列表的主窗口" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "多媒体播放器" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "播放电影和视频" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "视频;电影;剪辑;系列;播放器;DVD;TV;碟片;专辑;音乐;GNOME;mpv;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "新建窗口" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "正在播放" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "显示发布版本号" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "加入队列" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "创建一个新窗口" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "选项" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "设置窗口规则" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "不要连接到已经运行中的实例" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "暂停" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "播放" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "停止" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "快进" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "快退" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "下一章节" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "上一章节" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "循环播放列表" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "随机播放列表" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "切换全屏" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "错误" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "所有文件" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "媒体文件" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "音频文件" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "视频文件" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "图像文件" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "字幕文件" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "无" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "未知" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "载入外部(_L)…" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "未找到光盘" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "文件(_F)" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "打开...(_O)" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "打开路径...(_L)" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "打开光盘...(_D)" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "保存播放列表(_S)" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "新建窗口(_N)" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "退出(_Q)" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "编辑(_E)" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "首选项(_P)" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "视频轨道(_V)" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "音轨(_A)" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "字幕轨道(_u)" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "视图(_V)" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "切换控制栏(_T)" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "切换播放列表(_T)" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "全屏(_F)" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "帮助(_H)" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "快捷键(_K)" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "关于 Celluloid(_A)" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "打开光盘(_D)" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "回放被异常终止。原因:%s。" + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "路径:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "取消(_C)" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "打开(_O)" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "应用一个或多个 MPV 选项失败。" + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "复制路径(_A)" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "移除(_R)" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "添加(_A)…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "添加路径(_L)" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "随机播放(_S)" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "循环播放文件(_F)" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "循环播放列表(_P)" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "播放列表" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "播放列表为空" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "添加插件" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Lua 插件" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "JavaScript 插件" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "C 程序插件" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "从 '%s' 拷贝文件到 '%s' 失败。原因:%s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "未找到插件" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "移除" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "您确定移除此脚本吗?该操作无法被撤销。" + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "删除文件 '%s' 失败。原因:%s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "用户界面" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "配置文件" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "杂项" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "插件" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "保存(_S)" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "首选项" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "打开文件" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "打开路径" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "添加文件到播放列表" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "添加路径到播放列表" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "显示首选项对话框" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "切换控制栏" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "切换播放列表" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "切换全屏模式" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "离开全屏模式" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "切换 OSD 状态为“普通”或者“播放时间/总时长”" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "在 OSD 上显示文件名" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "在 OSD 上显示进度、已播放时间、总时长" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "向后/向前跳转 5 秒" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "向后/向前精确跳转 1 秒" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "向后/向前跳转 1 分钟" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "向后/向前精确跳转 5 秒" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "查找上一个/下一个字幕" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "跳转到上一帧/下一帧" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "跳转到上一章/下一章的开头" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "减少/增加 10% 播放速度" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "减半/加倍当前的播放速度" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "重置播放速度为正常速度" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "跳转到当前播放列表中的前一项/后一项" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "移除选定的播放列表项" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "保存播放列表" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "设置/清除 A-B 循环点" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "开启或关闭无限循环" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "暂停/播放" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "退出" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "保存当前播放进度并退出" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "进入搜索模式" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "跳转到下一匹配" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "跳转到上一匹配" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "退出搜索模式" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "循环播放音轨" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "减少/增大音量" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "静音/取消静音" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "将音频延迟调整为 +/- 0.1 秒" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "切换字幕可见性" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "循环播放当前字幕范围" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "将字幕延迟调整为 +/- 0.1 秒" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "切换 SSA/ASS 字幕样式覆盖" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "移动到上一行/下一行字幕" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "切换 VSFilter aspect 兼容模式" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "循环播放视频轨道" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "减小/增加 pan-and-scan 范围" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "截取屏幕截图" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "截取屏幕截图,不包含字幕" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "截取屏幕截图,就如同窗口中显示的一样(包含字幕、OSD、缩放)" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "调整视频大小为其原始大小的一半" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "调整视频大小为其原始大小" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "调整视频大小为其原始大小的两倍" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "调整对比度" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "调整亮度" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "调整伽玛值" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "调整饱和度" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "激活/取消激活去隔行扫描器" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "循环切换宽高比重写" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "用户界面" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "视频" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "音频" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "字幕" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "回放" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "跳转" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "加载音频轨道..." + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "加载视频轨…" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "加载字幕轨道..." + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "启用或禁用客户端装饰(CSD),需要重启播放器以生效。" + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "添加文件到播放列表" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "打开文件" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "添加路径到播放列表" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "打开路径" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "保存播放列表" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "MPV 的 GTK 前端程序" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" +"Mingye Wang , 2015, 2016.\n" +"Jeff Bai , 2015, 2016.\n" +"Sun , 2015, 2016.\n" +"Huang Jiayao , 2017, 2018." diff --git a/po/zh_TW.po b/po/zh_TW.po new file mode 100644 index 0000000..3399a12 --- /dev/null +++ b/po/zh_TW.po @@ -0,0 +1,1115 @@ +# Chinese translations for gnome-mpv package +# gnome-mpv 套件的正體中文翻譯 +# Copyright (C) 2015 THE GNOME-MPV'S COPYRIGHT HOLDER +# This file is distributed under the same license as the gnome-mpv package. +# sun , 2015. +# Mingye Wang , 2015. +# Julian , 2019. #zanata +# gnome-mpv , 2019. #zanata +# Hsiu-Ming Chang , 2020. #zanata +# gnome-mpv , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: gnome-mpv 0.6\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-20 20:48+0700\n" +"PO-Revision-Date: 2020-12-31 11:30-0500\n" +"Last-Translator: Hsiu-Ming Chang \n" +"Language-Team: zh_Hant \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Zanata 4.6.2\n" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:11 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "是否已從上一個版本遷移設定" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "自動調整視窗大小以符合影片" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "啟用暗色主題" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "啟用客戶端裝飾" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "在視窗模式下啟用浮動控制介面" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "在視窗模式下自動隱藏滑鼠游標" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "取消隱藏浮動控制介面的最小游標速度。" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "使用跳轉按鈕控制播放清單" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "讓檔案選擇器記住上次的檔案位置" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "總是開啟新視窗" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "要傳遞給 mpv 的選項" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "mpv 配置檔的路徑" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "載入 mpv 配置檔" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "mpv 輸入配置檔的路徑" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "載入 mpv 輸入配置檔" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "啟用 MPRIS 支援" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "啟用播放快捷鍵支援" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "預先讀取詮釋資料" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "無視播放錯誤訊息" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "視窗寬度" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "視窗高度" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "視窗是否最大化" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "播放器音量" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "播放清單結束時是否循環播放" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "播放清單寬度" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "是否顯示控制介面" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "是否顯示播放清單" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "最近存取的資料夾 URI" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "MPV 的 GTK+ 前端程式" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:16 +msgid "" +"Celluloid is a simple media player that can play virtually all video and " +"audio formats. It supports playlists and MPRIS2 media player controls. The " +"design of Celluloid follows the GNOME Human Interface Guidelines, but can " +"also be adapted for other systems that don't use client-side decorations " +"(CSD). It is based on the mpv library and GTK." +msgstr "" +"Celluloid 是一個簡單的媒體播放器,可以播放幾乎所有影片和音訊格式。支援播放清單和 MPRIS2 媒體播放器控制介面。Celluloid " +"的設計遵循 GNOME Human Interface Guidelines,但也可以適用於不使用客戶端裝飾 (CSD) 的其他系統。Celluloid" +" 基於 mpv 函式庫和 GTK。" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "特性:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "拖放播放清單" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "載入外部 mpv 配置檔" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "MPRIS2 D-Bus 介面" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Celluloid 開發者" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "此發行版本包含了以下變更:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "這個清單不是完整的。請到 git log 中檢視完整的變更記錄。" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "顯示執行中應用程式的主視窗" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "關閉了 CSD 的主視窗" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "打開了播放清單的主視窗" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "多媒體播放器" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "播放電影和影片" + +#. Translators: Search terms to find this application. Don't translate the +#. semicolons! The list MUST also end with a semicolon! +#: data/io.github.celluloid_player.Celluloid.desktop.in:17 +msgid "Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv;" +msgstr "影片;電影;剪輯;系列;播放器;DVD;TV;光碟;專輯;音樂;GNOME;mpv;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "新視窗" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "正在播放" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "顯示發行版本" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "加入佇列" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "建立一個新視窗" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "選項" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "設定視窗角色 (window role)" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "不要連接到正在執行的實體" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "暫停" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "播放" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "停止" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "快進" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "倒回" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "下一章節" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "前一章節" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "循環播放清單" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "隨機播放清單" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "開關全螢幕" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "錯誤" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "所有檔案" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "多媒體檔" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "音訊檔" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "影片檔" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "圖片檔" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "字幕檔" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "無" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "未知" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "載入外部(_L)…" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "未找到光碟" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "檔案(_F)" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "開啟(_O)…" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "開啟資料夾(_F)…" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "開啟位置(_L)…" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "開啟光碟...(_D)" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "儲存播放清單(_S)" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "新增視窗(_N)" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "退出(_Q)" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "編輯(_E)" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "偏好設定(_P)" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "視訊軌道(_V)" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "音軌(_A)" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "字幕軌道(_U)" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "檢視(_V)" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "開關控制介面(_T)" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "開關播放清單(_T)" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "全螢幕(_F)" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "幫助(_F)" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "快捷鍵(_K)" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "關於 Celluloid(_A)" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "開啟光碟(_D)" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "播放被異常終止。原因:%s。" + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "位置:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "取消(_C)" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "開啟(_O)" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "套用一個或多個 MPV 選項失敗。" + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "複製位置(_C)" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "移除(_R)" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "新增(_A)…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "加入資料夾(_F)…" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "加入位置(_L)…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "隨機播放(_S)" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "循環播放檔案(_F)" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "循環播放清單(_P)" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "播放清單" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "播放清單是空的" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "加入外掛" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Lua 外掛" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "JavaScript 外掛" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "C 外掛" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "從「%s」複製檔案到「%s」失敗。原因:%s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "沒找到外掛" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "移除" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "確定要移除此外掛?這動作將無法復原。" + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "刪除檔案「%s」失敗。原因:%s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "mpv 配置檔:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "mpv 輸入配置檔:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "額外的 mpv 選項:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "界面" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "設定檔" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "雜項" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "外掛" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "儲存(_S)" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "偏好設定" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "開啟檔案" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "開啟位置" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "將檔案加入至播放清單" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "將位置加入至播放清單" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "顯示偏好設定對話框" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "開關控制介面" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "開關播放清單" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "開關全螢幕模式" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "離開全螢幕模式" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "切換 OSD 狀態為「普通」或者「播放時間/總時長」" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "在 OSD 上顯示檔案名稱" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "在 OSD 上顯示進度、已播放時間、總時長" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "向後/向前跳轉 5 秒" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "向後/向前精確跳轉 1 秒" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "向後/向前跳轉 1 分鐘" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "向後/向前精確跳轉 5 秒" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "跳轉到上一個/下一個字幕" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "向後/向前一幀" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "前往上一章/下一章的開頭" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "減少/增加 10% 播放速度" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "減半/加倍目前的播放速度" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "重置播放速度為正常速度" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "前往播放清單的前一項/後一項" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "移除選擇的播放清單項目" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "儲存播放清單" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "設定/清除 A-B 循環點" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "開關無限循環" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "暫停或取消暫停" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "離開" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "儲存目前播放位置並退出" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "進入搜尋模式" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "跳到下一個符合項目" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "跳到上一個符合項目" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "退出搜尋模式" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "循環切換音軌" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "增減音量" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "是否靜音" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "調整音訊延遲 +/- 0.1 秒" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "開關字幕可見度" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "循環切換可用字幕" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "調整字幕延遲 +/- 0.1 秒" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "開關 SSA/ASS 字幕樣式覆蓋" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "字幕上下移動" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "開關 VSFilter aspect 相容模式" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "循環切換視訊軌道" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "減小/增加 pan-and-scan 範圍" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "拍攝螢幕擷圖" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "拍攝螢幕擷圖,不包含字幕" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "拍攝螢幕擷圖,就如同視窗中顯示的一樣" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "將影片縮至原來一半的大小" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "將影片縮放至原始大小" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "將影片放大至原來的兩倍" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "調整對比" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "調整亮度" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "調整 gamma 值" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "調整飽和度" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "是否啟用解調變" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "循環切換寬高比覆蓋" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "使用者界面" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "影片" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "音訊" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "字幕" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "播放" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "跳轉" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "載入音軌…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "載入視訊軌道…" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "載入字幕軌…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "啟用或停用客戶端裝飾(CSD),需要重新啟動播放器以生效。" + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "新增資料夾到播放清單" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "開啟資料夾" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "新增檔案到播放清單" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "開啟檔案" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "新增位置至播放清單" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "開啟位置" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "儲存播放清單" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "MPV 的 GTK 前端程式" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" +"Mingye Wang\n" +"Sun\n" +"張修銘 " diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..3ebe710 --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,82 @@ +AUTOMAKE_OPTIONS = foreign + +bin_PROGRAMS = celluloid + +mpris_generated = mpris/celluloid-mpris-gdbus.c mpris/celluloid-mpris-gdbus.h +mpris_files = mpris/celluloid-mpris.c mpris/celluloid-mpris.h \ + mpris/celluloid-mpris-module.c mpris/celluloid-mpris-module.h \ + mpris/celluloid-mpris-base.c mpris/celluloid-mpris-base.h \ + mpris/celluloid-mpris-player.c mpris/celluloid-mpris-player.h \ + mpris/celluloid-mpris-track-list.c mpris/celluloid-mpris-track-list.h \ + $(mpris_generated) +$(mpris_generated)&: $(top_srcdir)/data/celluloid-mpris-gdbus.xml + $(AM_V_GEN) \ + $(GDBUS_CODEGEN) --c-namespace celluloid_mpris --generate-c-code mpris/celluloid-mpris-gdbus $< && \ + $(SED) -i '1i#pragma GCC diagnostic ignored \"-Wconversion\"' mpris/celluloid-mpris-gdbus.c + +marshal_generated = celluloid-marshal.c celluloid-marshal.h +marshal_files = $(marshal_generated) +celluloid-marshal.h: $(top_srcdir)/data/celluloid-marshal.lst + $(AM_V_GEN) \ + $(GLIB_GENMARSHAL) --prefix="g_cclosure_gen_marshal" --header $< > $@ +celluloid-marshal.c: $(top_srcdir)/data/celluloid-marshal.lst + $(AM_V_GEN) \ + $(GLIB_GENMARSHAL) --prefix="g_cclosure_gen_marshal" --body $< > $@ && \ + $(SED) -i '1i#pragma GCC diagnostic ignored \"-Wmissing-prototypes\"' $@ + +authors_generated = celluloid-authors.h +authors_files = $(authors_generated) +celluloid-authors.h: $(top_srcdir)/AUTHORS + $(AM_V_GEN) \ + $(AWK) 'BEGIN{print "#ifndef AUTHORS_H\n" \ + "#define AUTHORS_H\n\n" \ + "#define AUTHORS {\\"} \ + /^[^#].+/{print "\"" $$0 "\",\\"} \ + END{print "NULL}\n\n#endif"}' $< > $@ + +media_key_files = media-keys/celluloid-media-keys.c media-keys/celluloid-media-keys.h + +BUILT_SOURCES = $(mpris_generated) $(marshal_generated) $(authors_generated) + +celluloid_SOURCES = celluloid-main.c celluloid-def.h \ + celluloid-application.c celluloid-application.h \ + celluloid-common.c celluloid-common.h \ + celluloid-controller.c celluloid-controller.h \ + celluloid-controller-actions.c celluloid-controller-actions.h \ + celluloid-controller-private.h \ + celluloid-controller-input.c celluloid-controller-input.h \ + celluloid-control-box.c celluloid-control-box.h \ + celluloid-file-chooser.c celluloid-file-chooser.h \ + celluloid-header-bar.c celluloid-header-bar.h \ + celluloid-main-window.c celluloid-main-window.h celluloid-main-window-private.h \ + celluloid-menu.c celluloid-menu.h \ + celluloid-metadata-cache.c celluloid-metadata-cache.h \ + celluloid-model.c celluloid-model.h \ + celluloid-mpv.c celluloid-mpv.h \ + celluloid-mpv-private.h \ + celluloid-option-parser.c celluloid-option-parser.h \ + celluloid-open-location-dialog.c celluloid-open-location-dialog.h \ + celluloid-player.c celluloid-player.h celluloid-player-private.h \ + celluloid-player-options.c celluloid-player-options.h \ + celluloid-playlist-widget.c celluloid-playlist-widget.h \ + celluloid-plugins-manager.c celluloid-plugins-manager.h \ + celluloid-plugins-manager-item.c celluloid-plugins-manager-item.h \ + celluloid-preferences-dialog.c celluloid-preferences-dialog.h \ + celluloid-seek-bar.c celluloid-seek-bar.h \ + celluloid-shortcuts-window.c celluloid-shortcuts-window.h \ + celluloid-time-label.c celluloid-time-label.h \ + celluloid-video-area.c celluloid-video-area.h \ + celluloid-view.c celluloid-view.h \ + celluloid-mpv-wrapper.c celluloid-mpv-wrapper.h \ + $(mpris_files) $(marshal_files) $(media_key_files) \ + $(authors_files) + +celluloid_CFLAGS = $(DEPS_CFLAGS) \ + -DG_SETTINGS_ENABLE_BACKEND \ + -DPACKAGE_LOCALEDIR=\""$(localedir)"\" \ + -Impris + +celluloid_LDADD = $(DEPS_LIBS) + +CLEANFILES = $(mpris_generated) $(marshal_generated) $(authors_generated) +EXTRA_DIST = meson.build generate-authors.py diff --git a/src/celluloid-application.c b/src/celluloid-application.c new file mode 100644 index 0000000..1146414 --- /dev/null +++ b/src/celluloid-application.c @@ -0,0 +1,656 @@ +/* + * Copyright (c) 2016-2021 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include +#include +#include +#include +#include + +#include "celluloid-application.h" +#include "celluloid-controller.h" +#include "celluloid-mpv-wrapper.h" +#include "celluloid-common.h" +#include "celluloid-def.h" + +struct _CelluloidApplication +{ + GtkApplication parent; + GSList *controllers; + gboolean enqueue; + gboolean new_window; + gchar *mpv_options; + gchar *role; + guint inhibit_cookie; +}; + +struct _CelluloidApplicationClass +{ + GtkApplicationClass parent_class; +}; + +static void +migrate_config(void); + +static void +initialize_gui(CelluloidApplication *app); + +static void +create_dirs(void); + +static gboolean +shutdown_signal_handler(gpointer data); + +static void +new_window_handler(GSimpleAction *simple, GVariant *parameter, gpointer data); + +static void +activate_handler(GApplication *gapp, gpointer data); + +static void +open_handler( GApplication *gapp, + GFile **files, + gint n_files, + gchar *hint, + gpointer data ); + +static gint +options_handler(GApplication *gapp, GVariantDict *options, gpointer data); + +static gboolean +local_command_line(GApplication *gapp, gchar ***arguments, gint *exit_status); + +static gint +command_line_handler( GApplication *gapp, + GApplicationCommandLine *cli, + gpointer data ); + +static void +startup_handler(GApplication *gapp, gpointer data); + +static void +idle_handler(GObject *object, GParamSpec *pspec, gpointer data); + +static void +shutdown_handler(CelluloidController *controller, gpointer data); + +static void +celluloid_application_class_init(CelluloidApplicationClass *klass); + +static void +celluloid_application_init(CelluloidApplication *app); + +G_DEFINE_TYPE(CelluloidApplication, celluloid_application, GTK_TYPE_APPLICATION) + +static void +migrate_config() +{ + const gchar *keys[] = { "dark-theme-enable", + "csd-enable", + "always-use-floating-controls", + "always-autohide-cursor", + "use-skip-buttons-for-playlist", + "last-folder-enable", + "always-open-new-window", + "mpv-options", + "mpv-config-file", + "mpv-config-enable", + "mpv-input-config-file", + "mpv-input-config-enable", + "mpris-enable", + "media-keys-enable", + "prefetch-metadata", + NULL }; + + GSettings *old_settings = g_settings_new("io.github.GnomeMpv"); + GSettings *new_settings = g_settings_new(CONFIG_ROOT); + + if(!g_settings_get_boolean(new_settings, "settings-migrated")) + { + g_settings_set_boolean(new_settings, "settings-migrated", TRUE); + + for(gint i = 0; keys[i]; i++) + { + GVariant *buf = g_settings_get_user_value + (old_settings, keys[i]); + + if(buf) + { + g_settings_set_value + (new_settings, keys[i], buf); + + g_variant_unref(buf); + } + } + } + + g_object_unref(old_settings); + g_object_unref(new_settings); +} + +static void +initialize_gui(CelluloidApplication *app) +{ + CelluloidController *controller; + CelluloidView *view; + CelluloidMainWindow *window; + GSettings *settings; + + migrate_config(); + + controller = celluloid_controller_new(app); + view = celluloid_controller_get_view(controller); + window = celluloid_view_get_main_window(view); + settings = g_settings_new(CONFIG_ROOT); + app->controllers = g_slist_prepend(app->controllers, controller); + + if(app->role) + { + gtk_window_set_role(GTK_WINDOW(window), app->role); + } + + g_unix_signal_add(SIGHUP, shutdown_signal_handler, app); + g_unix_signal_add(SIGINT, shutdown_signal_handler, app); + g_unix_signal_add(SIGTERM, shutdown_signal_handler, app); + + g_signal_connect( controller, + "notify::idle", + G_CALLBACK(idle_handler), + app ); + g_signal_connect( controller, + "shutdown", + G_CALLBACK(shutdown_handler), + app ); + + g_settings_bind( settings, + "use-skip-buttons-for-playlist", + controller, + "use-skip-buttons-for-playlist", + G_SETTINGS_BIND_GET ); + g_settings_bind( settings, + "always-use-floating-controls", + celluloid_view_get_main_window(view), + "always-use-floating-controls", + G_SETTINGS_BIND_GET ); + g_settings_bind( settings, + "dark-theme-enable", + gtk_settings_get_default(), + "gtk-application-prefer-dark-theme", + G_SETTINGS_BIND_GET ); + + g_object_unref(settings); +} + +static void +create_dirs() +{ + gchar *config_dir = get_config_dir_path(); + gchar *scripts_dir = get_scripts_dir_path(); + gchar *watch_dir = get_watch_dir_path(); + + g_mkdir_with_parents(config_dir, 0755); + g_mkdir_with_parents(scripts_dir, 0755); + g_mkdir_with_parents(watch_dir, 0755); + + g_free(config_dir); + g_free(scripts_dir); + g_free(watch_dir); +} + +static gboolean +shutdown_signal_handler(gpointer data) +{ + g_info("Shutdown signal received. Shutting down..."); + celluloid_application_quit(data); + + return FALSE; +} + +static void +new_window_handler(GSimpleAction *simple, GVariant *parameter, gpointer data) +{ + initialize_gui(data); +} + +static void +activate_handler(GApplication *gapp, gpointer data) +{ + CelluloidApplication *app = data; + + if(!app->controllers) + { + initialize_gui(app); + } +} + +static void +open_handler( GApplication *gapp, + GFile **files, + gint n_files, + gchar *hint, + gpointer data ) +{ + CelluloidApplication *app = data; + GSettings *settings = g_settings_new(CONFIG_ROOT); + + /* Only activate new-window if always-open-new-window is set. It is not + * necessary to handle --new-window here since options_handler() would + * have activated new-window already if it were set. + */ + if(g_settings_get_boolean(settings, "always-open-new-window")) + { + activate_action_string(G_ACTION_MAP(gapp), "new-window"); + } + + g_application_activate(gapp); + + for(gint i = 0; i < n_files; i++) + { + GtkApplication *gtkapp = GTK_APPLICATION(gapp); + GtkWindow *window = gtk_application_get_active_window(gtkapp); + GActionMap *map = G_ACTION_MAP(window); + gchar *uri = g_file_get_uri(((GFile **)files)[i]); + gboolean append = i != 0 || app->enqueue; + GVariant *param = g_variant_new("(sb)", uri, append); + GAction *action = g_action_map_lookup_action(map, "open"); + + g_action_activate(action, param); + + g_free(uri); + } + + g_object_unref(settings); +} + +static gint +options_handler(GApplication *gapp, GVariantDict *options, gpointer data) +{ + gboolean version = FALSE; + + g_variant_dict_lookup(options, "version", "b", &version); + + if(version) + { + g_printf("Celluloid " VERSION "\n"); + } + else + { + gboolean no_existing_session = FALSE; + + g_variant_dict_lookup( options, + "no-existing-session", + "b", + &no_existing_session ); + + if(no_existing_session) + { + GApplicationFlags flags = g_application_get_flags(gapp); + + g_info("Single instance negotiation is disabled"); + g_application_set_flags + (gapp, flags|G_APPLICATION_NON_UNIQUE); + } + } + + return version?0:-1; +} + +static gboolean +local_command_line(GApplication *gapp, gchar ***arguments, gint *exit_status) +{ + CelluloidApplication *app = CELLULOID_APPLICATION(gapp); + GPtrArray *options = g_ptr_array_new_with_free_func(g_free); + gchar **argv = *arguments; + gint i = 1; + + g_clear_pointer(&app->mpv_options, g_free); + + while(argv[i]) + { + // Ignore --mpv-options + const gboolean excluded = + g_str_has_prefix(argv[i], "--mpv-options") && + argv[i][sizeof("--mpv-options")] != '='; + + if(!excluded && g_str_has_prefix(argv[i], MPV_OPTION_PREFIX)) + { + const gchar *suffix = + argv[i] + sizeof(MPV_OPTION_PREFIX) - 1; + + const gchar *value = strchr(suffix, '='); + gchar *option = NULL; + + g_assert(!value || value > suffix); + + if(value) + { + gchar key[value - suffix + 1]; + + g_strlcpy(key, suffix, sizeof(key)); + + option = g_strdup_printf("--%s='%s'", key, value + 1); + } + else + { + option = g_strconcat("--", suffix, NULL); + } + + g_ptr_array_add(options, option); + + // Remove collected option + for(gint j = i; argv[j]; j++) + { + argv[j] = argv[j + 1]; + } + } + else + { + i++; + } + } + + if(options->len > 0) + { + g_ptr_array_add(options, NULL); + + app->mpv_options = g_strjoinv(" ", (gchar **)options->pdata); + } + + g_ptr_array_free(options, TRUE); + + return G_APPLICATION_CLASS(celluloid_application_parent_class) + ->local_command_line(gapp, arguments, exit_status); +} + +static gint +command_line_handler( GApplication *gapp, + GApplicationCommandLine *cli, + gpointer data ) +{ + CelluloidApplication *app = data; + gint argc = 1; + gchar **argv = g_application_command_line_get_arguments(cli, &argc); + GVariantDict *options = g_application_command_line_get_options_dict(cli); + GSettings *settings = g_settings_new(CONFIG_ROOT); + gboolean always_open_new_window = FALSE; + gchar *mpv_options = NULL; + const gint n_files = argc-1; + GFile *files[n_files]; + + app->enqueue = FALSE; + app->new_window = FALSE; + always_open_new_window = g_settings_get_boolean + (settings, "always-open-new-window"); + + g_clear_pointer(&app->role, g_free); + + g_variant_dict_lookup(options, "enqueue", "b", &app->enqueue); + g_variant_dict_lookup(options, "new-window", "b", &app->new_window); + g_variant_dict_lookup(options, "mpv-options", "s", &mpv_options); + g_variant_dict_lookup(options, "role", "s", &app->role); + + /* Combine mpv options from --mpv-options and options matching + * MPV_OPTION_PREFIX + */ + if(mpv_options) + { + gchar *old_mpv_options = app->mpv_options; + + g_warning("--mpv-options is deprecated and will be removed in future versions. Use '--mpv-' prefix options instead."); + + app->mpv_options = + g_strjoin(" ", mpv_options, app->mpv_options, NULL); + + g_free(old_mpv_options); + g_free(mpv_options); + } + + for(gint i = 0; i < n_files; i++) + { + files[i] = g_application_command_line_create_file_for_arg + (cli, argv[i+1]); + } + + /* Only activate the new-window action or emit the activate signal if + * there are no files to be opened. If there are files, open_handler() + * will activate the action by itself. This is necessary because when + * opening files from file managers, files to be opened may be sent in + * the form of DBus message, bypassing this function entirely. + */ + if(app->new_window || (n_files == 0 && always_open_new_window)) + { + activate_action_string(G_ACTION_MAP(gapp), "new-window"); + } + else if(n_files == 0 && !app->controllers) + { + g_application_activate(gapp); + } + + if(n_files > 0) + { + g_application_open + (gapp, files, n_files, app->enqueue?"enqueue":""); + } + + for(gint i = 0; i < n_files; i++) + { + g_object_unref(files[i]); + } + + gdk_notify_startup_complete(); + + g_object_unref(settings); + g_strfreev(argv); + + return 0; +} + +static void +startup_handler(GApplication *gapp, gpointer data) +{ + g_set_application_name(_("Celluloid")); + gtk_window_set_default_icon_name(ICON_NAME); + + bindtextdomain(GETTEXT_PACKAGE, PACKAGE_LOCALEDIR); + bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); + textdomain(GETTEXT_PACKAGE); + create_dirs(); + + g_info("Starting Celluloid " VERSION); +} + +static void +idle_handler(GObject *object, GParamSpec *pspec, gpointer data) +{ + GSettings *settings = g_settings_new(CONFIG_ROOT); + CelluloidApplication *app = data; + CelluloidController *controller = NULL; + gboolean idle = TRUE; + + for( GSList *iter = app->controllers; + iter && idle; + iter = g_slist_next(iter) ) + { + gboolean current = TRUE; + + g_object_get(iter->data, "idle", ¤t, NULL); + idle &= current; + controller = iter->data; + } + + if( !idle && + app->inhibit_cookie == 0 && + g_settings_get_boolean(settings, "inhibit-idle") ) + { + CelluloidView *view = + celluloid_controller_get_view(controller); + CelluloidMainWindow *window = + celluloid_view_get_main_window(view); + + app->inhibit_cookie + = gtk_application_inhibit + ( GTK_APPLICATION(app), + GTK_WINDOW(window), + GTK_APPLICATION_INHIBIT_IDLE, + _("Playing") ); + } + else if(idle && app->inhibit_cookie != 0) + { + gtk_application_uninhibit + (GTK_APPLICATION(app), app->inhibit_cookie); + + app->inhibit_cookie = 0; + } + + g_object_unref(settings); +} + +static void +shutdown_handler(CelluloidController *controller, gpointer data) +{ + CelluloidApplication *app = data; + + app->controllers = g_slist_remove(app->controllers, controller); + g_object_unref(controller); + g_free(app->mpv_options); + g_free(app->role); + + if(!app->controllers) + { + celluloid_application_quit(data); + } +} + +static void +celluloid_application_class_init(CelluloidApplicationClass *klass) +{ + G_APPLICATION_CLASS(klass)->local_command_line = local_command_line; +} + +static void +celluloid_application_init(CelluloidApplication *app) +{ + GSimpleAction *new_window = g_simple_action_new("new-window", NULL); + + app->controllers = NULL; + app->enqueue = FALSE; + app->new_window = FALSE; + app->mpv_options = NULL; + app->role = NULL; + app->inhibit_cookie = 0; + + g_set_prgname(APP_ID); + g_action_map_add_action(G_ACTION_MAP(app), G_ACTION(new_window)); + + g_application_add_main_option + ( G_APPLICATION(app), + "version", + '\0', + G_OPTION_FLAG_NONE, + G_OPTION_ARG_NONE, + _("Show release version"), + NULL ); + g_application_add_main_option + ( G_APPLICATION(app), + "enqueue", + '\0', + G_OPTION_FLAG_NONE, + G_OPTION_ARG_NONE, + _("Enqueue"), + NULL ); + g_application_add_main_option + ( G_APPLICATION(app), + "new-window", + '\0', + G_OPTION_FLAG_NONE, + G_OPTION_ARG_NONE, + _("Create a new window"), + NULL ); + g_application_add_main_option + ( G_APPLICATION(app), + "mpv-options", + '\0', + G_OPTION_FLAG_HIDDEN, + G_OPTION_ARG_STRING, + _("Options to pass to mpv"), + _("OPTIONS") ); + g_application_add_main_option + ( G_APPLICATION(app), + "role", + '\0', + G_OPTION_FLAG_NONE, + G_OPTION_ARG_STRING, + _("Set the window role"), + NULL ); + g_application_add_main_option + ( G_APPLICATION(app), + "no-existing-session", + '\0', + G_OPTION_FLAG_HIDDEN, + G_OPTION_ARG_NONE, + _("Don't connect to an already-running instance"), + NULL ); + + // This is only added so that mpv prefix options could be document in + // the --help text. + g_application_add_main_option + ( G_APPLICATION(app), + "mpv-MPVOPTION", + '\0', + G_OPTION_FLAG_NONE, + G_OPTION_ARG_NONE, + _("Set the mpv option MPVOPTION to VALUE"), + _("VALUE") ); + + g_signal_connect + (new_window, "activate", G_CALLBACK(new_window_handler), app); + g_signal_connect + (app, "handle-local-options", G_CALLBACK(options_handler), app); + g_signal_connect + (app, "command-line", G_CALLBACK(command_line_handler), app); + g_signal_connect + (app, "startup", G_CALLBACK(startup_handler), app); + g_signal_connect + (app, "activate", G_CALLBACK(activate_handler), app); + g_signal_connect + (app, "open", G_CALLBACK(open_handler), app); +} + +CelluloidApplication * +celluloid_application_new(gchar *id, GApplicationFlags flags) +{ + const GType type = celluloid_application_get_type(); + + return CELLULOID_APPLICATION(g_object_new( type, + "application-id", id, + "flags", flags, + NULL )); +} + +void +celluloid_application_quit(CelluloidApplication *app) +{ + g_application_quit(G_APPLICATION(app)); +} + +const gchar * +celluloid_application_get_mpv_options(CelluloidApplication *app) +{ + return app->mpv_options; +} diff --git a/src/celluloid-application.h b/src/celluloid-application.h new file mode 100644 index 0000000..0f6f0f7 --- /dev/null +++ b/src/celluloid-application.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2016-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef APPLICATION_H +#define APPLICATION_H + +#include + +#include "celluloid-main-window.h" +#include "celluloid-mpv.h" + +G_BEGIN_DECLS + +#define CELLULOID_TYPE_APPLICATION (celluloid_application_get_type()) + +G_DECLARE_FINAL_TYPE(CelluloidApplication, celluloid_application, CELLULOID, APPLICATION, GtkApplication) + +CelluloidApplication * +celluloid_application_new(gchar *id, GApplicationFlags flags); + +void +celluloid_application_quit(CelluloidApplication *app); + +const gchar * +celluloid_application_get_mpv_options(CelluloidApplication *app); + +G_END_DECLS + +#endif diff --git a/src/celluloid-common.c b/src/celluloid-common.c new file mode 100644 index 0000000..bb938f2 --- /dev/null +++ b/src/celluloid-common.c @@ -0,0 +1,296 @@ +/* + * Copyright (c) 2014-2020 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include +#include +#include +#include +#include +#include + +#include "celluloid-common.h" +#include "celluloid-def.h" +#include "celluloid-mpv.h" +#include "celluloid-mpv-wrapper.h" +#include "celluloid-main-window.h" +#include "celluloid-control-box.h" + +CelluloidPlaylistEntry * +celluloid_playlist_entry_new(const gchar *filename, const gchar *title) +{ + CelluloidPlaylistEntry *entry = g_malloc(sizeof(CelluloidPlaylistEntry)); + + entry->filename = g_strdup(filename); + entry->title = g_strdup(title); + entry->metadata = g_ptr_array_new_with_free_func + ((GDestroyNotify)celluloid_metadata_entry_free); + + return entry; +} + +void +celluloid_playlist_entry_free(CelluloidPlaylistEntry *entry) +{ + if(entry) + { + g_free(entry->filename); + g_free(entry->title); + g_ptr_array_free(entry->metadata, TRUE); + g_free(entry); + } +} + +CelluloidMetadataEntry * +celluloid_metadata_entry_new(const gchar *key, const gchar *value) +{ + CelluloidMetadataEntry *entry = g_malloc(sizeof(CelluloidMetadataEntry)); + + entry->key = g_strdup(key); + entry->value = g_strdup(value); + + return entry; +} + +void +celluloid_metadata_entry_free(CelluloidMetadataEntry *entry) +{ + if(entry) + { + g_free(entry->key); + g_free(entry->value); + g_free(entry); + } +} + +CelluloidTrack * +celluloid_track_new(void) +{ + CelluloidTrack *entry = g_malloc(sizeof(CelluloidTrack)); + + entry->type = TRACK_TYPE_INVALID; + entry->title = NULL; + entry->lang = NULL; + entry->id = 0; + + return entry; +} + +void +celluloid_track_free(CelluloidTrack *entry) +{ + if(entry) + { + g_free(entry->title); + g_free(entry->lang); + g_free(entry); + } +} + +CelluloidDisc * +celluloid_disc_new(void) +{ + return g_malloc0(sizeof(CelluloidDisc)); +} + +void +celluloid_disc_free(CelluloidDisc *disc) +{ + g_free(disc->uri); + g_free(disc->label); + g_free(disc); +} + +gchar * +get_config_dir_path(void) +{ + return g_build_filename( g_get_user_config_dir(), + CONFIG_DIR, + NULL ); +} + +gchar * +get_scripts_dir_path(void) +{ + return g_build_filename( g_get_user_config_dir(), + CONFIG_DIR, + "scripts", + NULL ); +} + +gchar * +get_watch_dir_path(void) +{ + return g_build_filename( g_get_user_config_dir(), + CONFIG_DIR, + "watch_later", + NULL ); +} + +gchar * +get_path_from_uri(const gchar *uri) +{ + GFile *file = g_vfs_get_file_for_uri(g_vfs_get_default(), uri); + gchar *path = g_file_get_path(file); + + if(file) + { + g_object_unref(file); + } + + return path?path:g_strdup(uri); +} + +gchar * +get_name_from_path(const gchar *path) +{ + const gchar *scheme = g_uri_parse_scheme(path); + gchar *basename = NULL; + + /* Check whether the given path is likely to be a local path */ + if(!scheme && path) + { + basename = g_path_get_basename(path); + } + + return basename?basename:g_strdup(path); +} + +gboolean +extension_matches(const gchar *filename, const gchar **extensions) +{ + const gchar *ext = strrchr(filename, '.'); + gboolean result = FALSE; + + /* Only start checking the extension if there is at + * least one character after the dot. + */ + if(ext && ++ext) + { + const gchar **iter = extensions; + + /* Check if the file extension matches one of the + * supported subtitle formats. + */ + while(*iter && g_strcmp0(ext, *(iter++)) != 0); + + result = !!(*iter); + } + + return result; +} + +gboolean +g_source_clear(guint *tag) +{ + if(*tag != 0) + { + g_source_remove(*tag); + *tag = 0; + } + + return TRUE; +} + +void * +gslist_to_array(GSList *slist) +{ + void **result = g_malloc(sizeof(void **)*(g_slist_length(slist)+1)); + gint i = 0; + + for(GSList *iter = slist; iter; iter = g_slist_next(iter)) + { + result[i++] = iter->data; + } + + result[i] = NULL; + + return result; +} + +gchar * +strnjoinv(const gchar *separator, const gchar **str_array, gsize count) +{ + gsize args_size = ((gsize)count+1)*sizeof(gchar *); + gchar **args = g_malloc(args_size); + gchar *result; + + memcpy(args, str_array, args_size-sizeof(gchar *)); + args[count] = NULL; + result = g_strjoinv(separator, args); + + g_free(args); + + return result; +} + +char * +format_time(gint seconds, gboolean show_hour) +{ + gchar *result = NULL; + + if(show_hour) + { + result = g_strdup_printf( "%02d:%02d:%02d", + seconds/3600, + (seconds%3600)/60, + seconds%60 ); + } + else + { + result = g_strdup_printf("%02d:%02d", seconds/60, seconds%60); + } + + return result; +} + +void +activate_action_string(GActionMap *map, const gchar *str) +{ + GAction *action = NULL; + gchar *name = NULL; + GVariant *param = NULL; + gboolean param_match = FALSE; + + g_action_parse_detailed_name(str, &name, ¶m, NULL); + + if(name) + { + const GVariantType *action_ptype; + const GVariantType *given_ptype; + + action = g_action_map_lookup_action(map, name); + action_ptype = g_action_get_parameter_type(action); + given_ptype = param?g_variant_get_type(param):NULL; + + param_match = (action_ptype == given_ptype) || + ( given_ptype && + g_variant_type_is_subtype_of + (action_ptype, given_ptype) ); + } + + if(action && param_match) + { + g_debug("Activating action %s", str); + g_action_activate(action, param); + } + else + { + g_warning("Failed to activate action \"%s\"", str); + } +} diff --git a/src/celluloid-common.h b/src/celluloid-common.h new file mode 100644 index 0000000..c237cc3 --- /dev/null +++ b/src/celluloid-common.h @@ -0,0 +1,131 @@ +/* + * Copyright (c) 2014-2020 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef COMMON_H +#define COMMON_H + +#include +#include + +G_BEGIN_DECLS + +typedef enum TrackType TrackType; + +typedef struct _CelluloidPlaylistEntry CelluloidPlaylistEntry; +typedef struct _CelluloidMetadataEntry CelluloidMetadataEntry; +typedef struct CelluloidTrack CelluloidTrack; +typedef struct CelluloidDisc CelluloidDisc; + +enum TrackType +{ + TRACK_TYPE_INVALID, + TRACK_TYPE_AUDIO, + TRACK_TYPE_VIDEO, + TRACK_TYPE_SUBTITLE, + TRACK_TYPE_N +}; + +struct _CelluloidPlaylistEntry +{ + gchar *filename; + gchar *title; + gdouble duration; + GPtrArray *metadata; +}; + +struct _CelluloidMetadataEntry +{ + gchar *key; + gchar *value; +}; + +struct CelluloidTrack +{ + TrackType type; + gint64 id; + gchar *title; + gchar *lang; +}; + +struct CelluloidDisc +{ + gchar *uri; + gchar *label; +}; + +CelluloidPlaylistEntry * +celluloid_playlist_entry_new(const gchar *filename, const gchar *title); + +void +celluloid_playlist_entry_free(CelluloidPlaylistEntry *entry); + +CelluloidMetadataEntry * +celluloid_metadata_entry_new(const gchar *key, const gchar *value); + +void +celluloid_metadata_entry_free(CelluloidMetadataEntry *entry); + +CelluloidTrack * +celluloid_track_new(void); + +void +celluloid_track_free(CelluloidTrack *entry); + +CelluloidDisc * +celluloid_disc_new(void); + +void +celluloid_disc_free(CelluloidDisc *disc); + +gchar * +get_config_dir_path(void); + +gchar * +get_scripts_dir_path(void); + +gchar * +get_watch_dir_path(void); + +gchar * +get_path_from_uri(const gchar *uri); + +gchar * +get_name_from_path(const gchar *path); + +gboolean +extension_matches(const gchar *filename, const gchar **extensions); + +gboolean +g_source_clear(guint *tag); + +void * +gslist_to_array(GSList *slist); + +gchar * +strnjoinv(const gchar *separator, const gchar **str_array, gsize count); + +char * +format_time(gint seconds, gboolean show_hour); + +void +activate_action_string(GActionMap *map, const gchar *str); + +G_END_DECLS + +#endif diff --git a/src/celluloid-control-box.c b/src/celluloid-control-box.c new file mode 100644 index 0000000..74cf946 --- /dev/null +++ b/src/celluloid-control-box.c @@ -0,0 +1,750 @@ +/* + * Copyright (c) 2014-2021 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include +#include +#include + +#include "celluloid-control-box.h" +#include "celluloid-seek-bar.h" + +enum +{ + PROP_0, + PROP_SKIP_ENABLED, + PROP_DURATION, + PROP_ENABLED, + PROP_PAUSE, + PROP_SHOW_FULLSCREEN_BUTTON, + PROP_TIME_POSITION, + PROP_LOOP, + PROP_SHUFFLE, + PROP_VOLUME, + PROP_VOLUME_MAX, + PROP_VOLUME_POPUP_VISIBLE, + N_PROPERTIES +}; + +struct _CelluloidControlBox +{ + GtkBox parent_instance; + GtkWidget *play_button; + GtkWidget *stop_button; + GtkWidget *forward_button; + GtkWidget *rewind_button; + GtkWidget *next_button; + GtkWidget *previous_button; + GtkWidget *loop_button; + GtkWidget *shuffle_button; + GtkWidget *volume_button; + GtkWidget *fullscreen_button; + GtkWidget *seek_bar; + gboolean skip_enabled; + gdouble duration; + gboolean enabled; + gboolean pause; + gboolean show_fullscreen_button; + gdouble time_position; + gboolean loop; + gboolean shuffle; + gdouble volume; + gdouble volume_max; + gboolean volume_popup_visible; +}; + +struct _CelluloidControlBoxClass +{ + GtkBoxClass parent_class; +}; + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ); + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ); + +static gboolean +gtk_to_mpv_volume( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer data ); + +static gboolean +mpv_to_gtk_volume( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer data ); + +static void +seek_handler(CelluloidSeekBar *seek_bar, gdouble value, gpointer data); + +static void +volume_changed_handler(GtkVolumeButton *button, gdouble value, gpointer data); + +static void +simple_signal_handler(GtkWidget *widget, gpointer data); + +static void +set_enabled(CelluloidControlBox *box, gboolean enabled); + +static void +set_skip_enabled(CelluloidControlBox *box, gboolean enabled); + +static void +set_playing_state(CelluloidControlBox *box, gboolean playing); + +static void +init_button( GtkWidget *button, + const gchar *icon_name, + const gchar *tooltip_text ); + +G_DEFINE_TYPE(CelluloidControlBox, celluloid_control_box, GTK_TYPE_BOX) + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ) +{ + CelluloidControlBox *self = CELLULOID_CONTROL_BOX(object); + + switch(property_id) + { + case PROP_SKIP_ENABLED: + self->skip_enabled = g_value_get_boolean(value); + set_skip_enabled(self, self->skip_enabled); + break; + + case PROP_DURATION: + self->duration = g_value_get_double(value); + + celluloid_seek_bar_set_duration + (CELLULOID_SEEK_BAR(self->seek_bar), self->duration); + break; + + case PROP_ENABLED: + self->enabled = g_value_get_boolean(value); + set_enabled(self, self->enabled); + break; + + case PROP_PAUSE: + self->pause = g_value_get_boolean(value); + set_playing_state(self, !self->pause); + break; + + case PROP_SHOW_FULLSCREEN_BUTTON: + self->show_fullscreen_button = g_value_get_boolean(value); + break; + + case PROP_TIME_POSITION: + self->time_position = g_value_get_double(value); + + celluloid_seek_bar_set_pos + ( CELLULOID_SEEK_BAR(self->seek_bar), + self->time_position ); + break; + + case PROP_LOOP: + self->loop = g_value_get_boolean(value); + break; + + case PROP_SHUFFLE: + self->shuffle = g_value_get_boolean(value); + break; + + case PROP_VOLUME: + self->volume = g_value_get_double(value); + break; + + case PROP_VOLUME_MAX: + self->volume_max = g_value_get_double(value); + break; + + case PROP_VOLUME_POPUP_VISIBLE: + self->volume_popup_visible = g_value_get_boolean(value); + + if( self->volume_popup_visible && + gtk_widget_is_visible(GTK_WIDGET(self)) ) + { + g_signal_emit_by_name(self->volume_button, "popup"); + } + else if(!self->volume_popup_visible) + { + g_signal_emit_by_name(self->volume_button, "popdown"); + } + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ) +{ + CelluloidControlBox *self = CELLULOID_CONTROL_BOX(object); + + switch(property_id) + { + case PROP_SKIP_ENABLED: + g_value_set_boolean(value, self->skip_enabled); + break; + + case PROP_DURATION: + g_value_set_double(value, self->duration); + break; + + case PROP_ENABLED: + g_value_set_boolean(value, self->enabled); + break; + + case PROP_PAUSE: + g_value_set_boolean(value, self->pause); + break; + + case PROP_SHOW_FULLSCREEN_BUTTON: + g_value_set_boolean(value, self->show_fullscreen_button); + break; + + case PROP_TIME_POSITION: + g_value_set_double(value, self->time_position); + break; + + case PROP_LOOP: + g_value_set_boolean(value, self->loop); + break; + + case PROP_SHUFFLE: + g_value_set_boolean(value, self->shuffle); + break; + + case PROP_VOLUME: + g_value_set_double(value, self->volume); + break; + + case PROP_VOLUME_MAX: + g_value_set_double(value, self->volume_max); + break; + + case PROP_VOLUME_POPUP_VISIBLE: + g_value_set_boolean(value, self->volume_popup_visible); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static gboolean +gtk_to_mpv_volume( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer data ) +{ + gdouble from = g_value_get_double(from_value); + g_value_set_double(to_value, from*100); + + return TRUE; +} + +static gboolean +mpv_to_gtk_volume( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer data ) +{ + gdouble from = g_value_get_double(from_value); + g_value_set_double(to_value, from/100.0); + + return TRUE; +} + +static void +seek_handler(CelluloidSeekBar *seek_bar, gdouble value, gpointer data) +{ + g_signal_emit_by_name(data, "seek", value); +} + +static void +volume_changed_handler(GtkVolumeButton *button, gdouble value, gpointer data) +{ + g_signal_emit_by_name(data, "volume-changed", value*100.0); +} + +static void +simple_signal_handler(GtkWidget *widget, gpointer data) +{ + CelluloidControlBox *box = data; + gint i; + + const struct + { + const GtkWidget *widget; + const gchar *name; + const gchar *button; + } + signal_map[] + = { {box->play_button, "button-clicked", "play"}, + {box->stop_button, "button-clicked", "stop"}, + {box->forward_button, "button-clicked", "forward"}, + {box->rewind_button, "button-clicked", "rewind"}, + {box->previous_button, "button-clicked", "previous"}, + {box->next_button, "button-clicked", "next"}, + {box->fullscreen_button, "button-clicked", "fullscreen"}, + {NULL, NULL, NULL} }; + + for(i = 0; signal_map[i].name && signal_map[i].widget != widget; i++); + + if(signal_map[i].name) + { + g_signal_emit_by_name + (data, signal_map[i].name, signal_map[i].button); + } +} + +static void +set_enabled(CelluloidControlBox *box, gboolean enabled) +{ + gtk_widget_set_sensitive(box->previous_button, enabled); + gtk_widget_set_sensitive(box->rewind_button, enabled); + gtk_widget_set_sensitive(box->stop_button, enabled); + gtk_widget_set_sensitive(box->play_button, enabled); + gtk_widget_set_sensitive(box->forward_button, enabled); + gtk_widget_set_sensitive(box->next_button, enabled); +} + +static void +set_skip_enabled(CelluloidControlBox *box, gboolean enabled) +{ + if(enabled) + { + gtk_widget_show_all(box->previous_button); + gtk_widget_show_all(box->next_button); + } + else + { + gtk_widget_hide(box->previous_button); + gtk_widget_hide(box->next_button); + } +} + +static void +set_playing_state(CelluloidControlBox *box, gboolean playing) +{ + GtkWidget *image = gtk_button_get_image(GTK_BUTTON(box->play_button)); + const gchar *tooltip = playing?_("Pause"):_("Play"); + + gtk_image_set_from_icon_name( GTK_IMAGE(image), + playing? + "media-playback-pause-symbolic": + "media-playback-start-symbolic", + GTK_ICON_SIZE_BUTTON ); + + gtk_widget_set_tooltip_text(box->play_button, tooltip); +} + +static void +init_button( GtkWidget *button, + const gchar *icon_name, + const gchar *tooltip_text ) +{ + GtkWidget *icon = gtk_image_new_from_icon_name + (icon_name, GTK_ICON_SIZE_BUTTON); + + gtk_widget_set_tooltip_text(button, tooltip_text); + g_object_set(button, "relief", GTK_RELIEF_NONE, NULL); + gtk_widget_set_can_focus(button, FALSE); + gtk_button_set_image(GTK_BUTTON(button), icon); +} + +static void +celluloid_control_box_class_init(CelluloidControlBoxClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS(klass); + GParamSpec *pspec = NULL; + + object_class->set_property = set_property; + object_class->get_property = get_property; + + pspec = g_param_spec_boolean + ( "skip-enabled", + "Skip enabled", + "Whether the skip buttons are shown", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property + (object_class, PROP_SKIP_ENABLED, pspec); + + pspec = g_param_spec_double + ( "duration", + "Duration", + "Duration of the file", + 0.0, + G_MAXDOUBLE, + 0.0, + G_PARAM_READWRITE ); + g_object_class_install_property + (object_class, PROP_DURATION, pspec); + + pspec = g_param_spec_boolean + ( "enabled", + "Enabled", + "Whether the controls are enabled", + TRUE, + G_PARAM_READWRITE ); + g_object_class_install_property + (object_class, PROP_ENABLED, pspec); + + pspec = g_param_spec_boolean + ( "pause", + "Pause", + "Whether there is a file playing", + TRUE, + G_PARAM_READWRITE ); + g_object_class_install_property + (object_class, PROP_PAUSE, pspec); + + pspec = g_param_spec_boolean + ( "show-fullscreen-button", + "Show fullscreen button", + "Whether to show fullscreen button when applicable", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property + (object_class, PROP_SHOW_FULLSCREEN_BUTTON, pspec); + + pspec = g_param_spec_double + ( "time-position", + "Time position", + "The current timr position in the current file", + 0.0, + G_MAXDOUBLE, + 0.0, + G_PARAM_READWRITE ); + g_object_class_install_property + (object_class, PROP_TIME_POSITION, pspec); + + pspec = g_param_spec_boolean + ( "loop", + "Loop", + "Whether or not the loop button is active", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property + (object_class, PROP_LOOP, pspec); + + pspec = g_param_spec_boolean + ( "shuffle", + "Shuffle", + "Whether or not the the shuffle button is active", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property + (object_class, PROP_SHUFFLE, pspec); + + pspec = g_param_spec_double + ( "volume", + "Volume", + "The value of the volume button", + 0.0, + G_MAXDOUBLE, + 0.0, + G_PARAM_READWRITE ); + g_object_class_install_property + (object_class, PROP_VOLUME, pspec); + + pspec = g_param_spec_double + ( "volume-max", + "Volume Max", + "The maximum amplification level", + 0.0, + G_MAXDOUBLE, + 100.0, + G_PARAM_READWRITE ); + g_object_class_install_property + (object_class, PROP_VOLUME_MAX, pspec); + + pspec = g_param_spec_boolean + ( "volume-popup-visible", + "Volume popup visible", + "Whether or not the volume popup is visible", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property + (object_class, PROP_VOLUME_POPUP_VISIBLE, pspec); + + g_signal_new( "button-clicked", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, + 1, + G_TYPE_STRING ); + g_signal_new( "seek", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__DOUBLE, + G_TYPE_NONE, + 1, + G_TYPE_DOUBLE ); + g_signal_new( "volume-changed", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__DOUBLE, + G_TYPE_NONE, + 1, + G_TYPE_DOUBLE ); +} + +static void +celluloid_control_box_init(CelluloidControlBox *box) +{ + GtkWidget *popup = NULL; + GtkAdjustment *adjustment = NULL; + + box->play_button = gtk_button_new(); + box->stop_button = gtk_button_new(); + box->forward_button = gtk_button_new(); + box->rewind_button = gtk_button_new(); + box->next_button = gtk_button_new(); + box->previous_button = gtk_button_new(); + box->fullscreen_button = gtk_button_new(); + box->loop_button = gtk_toggle_button_new(); + box->shuffle_button = gtk_toggle_button_new(); + box->volume_button = gtk_volume_button_new(); + box->seek_bar = celluloid_seek_bar_new(); + box->skip_enabled = FALSE; + box->duration = 0.0; + box->enabled = TRUE; + box->pause = TRUE; + box->show_fullscreen_button = FALSE; + box->time_position = 0.0; + box->loop = FALSE; + box->shuffle = FALSE; + box->volume = 0.0; + box->volume_max = 100.0; + + init_button( box->play_button, + "media-playback-start-symbolic", + _("Play") ); + init_button( box->stop_button, + "media-playback-stop-symbolic", + _("Stop") ); + init_button( box->forward_button, + "media-seek-forward-symbolic", + _("Forward") ); + init_button( box->rewind_button, + "media-seek-backward-symbolic", + _("Rewind") ); + init_button( box->next_button, + "media-skip-forward-symbolic", + _("Next Chapter") ); + init_button( box->previous_button, + "media-skip-backward-symbolic", + _("Previous Chapter") ); + init_button( box->loop_button, + "media-playlist-repeat-symbolic", + _("Loop Playlist") ); + init_button( box->shuffle_button, + "media-playlist-shuffle-symbolic", + _("Shuffle Playlist") ); + init_button( box->fullscreen_button, + "view-fullscreen-symbolic", + _("Toggle Fullscreen") ); + + gtk_style_context_add_class + ( gtk_widget_get_style_context(GTK_WIDGET(box)), + GTK_STYLE_CLASS_BACKGROUND ); + + gtk_widget_set_margin_end(box->seek_bar, 6); + + gtk_widget_set_can_focus(box->volume_button, FALSE); + gtk_widget_set_can_focus(box->seek_bar, FALSE); + + gtk_container_add(GTK_CONTAINER(box), box->previous_button); + gtk_container_add(GTK_CONTAINER(box), box->rewind_button); + gtk_container_add(GTK_CONTAINER(box), box->play_button); + gtk_container_add(GTK_CONTAINER(box), box->stop_button); + gtk_container_add(GTK_CONTAINER(box), box->forward_button); + gtk_container_add(GTK_CONTAINER(box), box->next_button); + gtk_box_pack_start(GTK_BOX(box), box->seek_bar, TRUE, TRUE, 0); + gtk_container_add(GTK_CONTAINER(box), box->loop_button); + gtk_container_add(GTK_CONTAINER(box), box->shuffle_button); + gtk_container_add(GTK_CONTAINER(box), box->volume_button); + gtk_container_add(GTK_CONTAINER(box), box->fullscreen_button); + + popup = gtk_scale_button_get_popup + (GTK_SCALE_BUTTON(box->volume_button)); + adjustment = gtk_scale_button_get_adjustment + (GTK_SCALE_BUTTON(box->volume_button)); + + g_object_bind_property( popup, "visible", + box, "volume-popup-visible", + G_BINDING_DEFAULT ); + g_object_bind_property( box, "loop", + box->loop_button, "active", + G_BINDING_BIDIRECTIONAL ); + g_object_bind_property( box, "shuffle", + box->shuffle_button, "active", + G_BINDING_BIDIRECTIONAL ); + g_object_bind_property_full( box->volume_button, "value", + box, "volume", + G_BINDING_BIDIRECTIONAL, + gtk_to_mpv_volume, + mpv_to_gtk_volume, + NULL, + NULL ); + g_object_bind_property_full( box, "volume-max", + adjustment, "upper", + G_BINDING_DEFAULT|G_BINDING_SYNC_CREATE, + mpv_to_gtk_volume, + gtk_to_mpv_volume, + NULL, + NULL ); + + g_signal_connect( box, + "button-press-event", + G_CALLBACK(gtk_true), + NULL ); + g_signal_connect( box->play_button, + "clicked", + G_CALLBACK(simple_signal_handler), + box ); + g_signal_connect( box->stop_button, + "clicked", + G_CALLBACK(simple_signal_handler), + box ); + g_signal_connect( box->seek_bar, + "seek", + G_CALLBACK(seek_handler), + box ); + g_signal_connect( box->forward_button, + "clicked", + G_CALLBACK(simple_signal_handler), + box ); + g_signal_connect( box->rewind_button, + "clicked", + G_CALLBACK(simple_signal_handler), + box ); + g_signal_connect( box->previous_button, + "clicked", + G_CALLBACK(simple_signal_handler), + box ); + g_signal_connect( box->next_button, + "clicked", + G_CALLBACK(simple_signal_handler), + box ); + g_signal_connect( box->fullscreen_button, + "clicked", + G_CALLBACK(simple_signal_handler), + box ); + g_signal_connect( box->volume_button, + "value-changed", + G_CALLBACK(volume_changed_handler), + box ); +} + +GtkWidget * +celluloid_control_box_new(void) +{ + return GTK_WIDGET(g_object_new(celluloid_control_box_get_type(), NULL)); +} + +void +celluloid_control_box_set_seek_bar_pos(CelluloidControlBox *box, gdouble pos) +{ + celluloid_seek_bar_set_pos(CELLULOID_SEEK_BAR(box->seek_bar), pos); +} + +void +celluloid_control_box_set_seek_bar_duration( CelluloidControlBox *box, + gint duration ) +{ + celluloid_seek_bar_set_duration(CELLULOID_SEEK_BAR(box->seek_bar), duration); +} + +void +celluloid_control_box_set_volume(CelluloidControlBox *box, gdouble volume) +{ + g_signal_handlers_block_by_func(box, volume_changed_handler, box); + + gtk_scale_button_set_value + (GTK_SCALE_BUTTON(box->volume_button), volume/100.0); + + g_signal_handlers_unblock_by_func(box, volume_changed_handler, box); +} + +gdouble +celluloid_control_box_get_volume(CelluloidControlBox *box) +{ + return gtk_scale_button_get_value(GTK_SCALE_BUTTON(box->volume_button)); +} + +gboolean +celluloid_control_box_get_volume_popup_visible(CelluloidControlBox *box) +{ + return box->volume_popup_visible; +} + +void +celluloid_control_box_set_fullscreen_state( CelluloidControlBox *box, + gboolean fullscreen ) +{ + GtkWidget *image = + gtk_button_get_image(GTK_BUTTON(box->fullscreen_button)); + + gtk_image_set_from_icon_name( GTK_IMAGE(image), + fullscreen? + "view-restore-symbolic": + "view-fullscreen-symbolic", + GTK_ICON_SIZE_BUTTON ); + + gtk_widget_set_visible( box->fullscreen_button, + box->show_fullscreen_button ); +} + +void +celluloid_control_box_reset(CelluloidControlBox *box) +{ + celluloid_control_box_set_seek_bar_pos(box, 0); + celluloid_control_box_set_seek_bar_duration(box, 0); + set_playing_state(box, FALSE); + set_skip_enabled(box, FALSE); + celluloid_control_box_set_fullscreen_state(box, FALSE); +} diff --git a/src/celluloid-control-box.h b/src/celluloid-control-box.h new file mode 100644 index 0000000..0ef8df4 --- /dev/null +++ b/src/celluloid-control-box.h @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2014-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef CONTROL_BOX_H +#define CONTROL_BOX_H + +#include +#include +#include + +G_BEGIN_DECLS + +#define CELLULOID_TYPE_CONTROL_BOX (celluloid_control_box_get_type()) + +G_DECLARE_FINAL_TYPE(CelluloidControlBox, celluloid_control_box, CELLULOID, CONTROL_BOX, GtkBox) + +GtkWidget * +celluloid_control_box_new(void); + +void +celluloid_control_box_set_enabled(CelluloidControlBox *box, gboolean enabled); + +void +celluloid_control_box_set_seek_bar_pos(CelluloidControlBox *box, gdouble pos); + +void +celluloid_control_box_set_seek_bar_duration( CelluloidControlBox *box, + gint duration ); + +void +celluloid_control_box_set_volume(CelluloidControlBox *box, gdouble volume); + +gdouble +celluloid_control_box_get_volume(CelluloidControlBox *box); + +gboolean +celluloid_control_box_get_volume_popup_visible(CelluloidControlBox *box); + +void +celluloid_control_box_set_fullscreen_state( CelluloidControlBox *box, + gboolean fullscreen ); + +void +celluloid_control_box_reset(CelluloidControlBox *box); + +G_END_DECLS + +#endif diff --git a/src/celluloid-controller-actions.c b/src/celluloid-controller-actions.c new file mode 100644 index 0000000..2bfead4 --- /dev/null +++ b/src/celluloid-controller-actions.c @@ -0,0 +1,640 @@ +/* + * Copyright (c) 2015-2021 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include + +#include "celluloid-controller-actions.h" +#include "celluloid-controller-private.h" +#include "celluloid-file-chooser.h" +#include "celluloid-common.h" + +static gboolean +boolean_to_state( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer user_data ); + +static gboolean +state_to_boolean( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer user_data ); + +static gboolean +track_id_to_state( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer user_data ); + +static gboolean +state_to_track_id( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer user_data ); + +static gboolean +loop_to_state( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer user_data ); + +static gboolean +state_to_loop( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer user_data ); + +static void +bind_properties(CelluloidController *controller); + +static void +open_handler(GSimpleAction *action, GVariant *param, gpointer data); + +static void +show_open_dialog_handler(GSimpleAction *action, GVariant *param, gpointer data); + +static void +show_open_location_dialog_handler( GSimpleAction *action, + GVariant *param, + gpointer data ); + +static void +toggle_loop_handler(GSimpleAction *action, GVariant *value, gpointer data); + +static void +show_shortcuts_dialog_handler( GSimpleAction *action, + GVariant *param, + gpointer data ); + +static void +toggle_controls_handler( GSimpleAction *action, + GVariant *param, + gpointer data ); + +static void +toggle_playlist_handler(GSimpleAction *action, GVariant *param, gpointer data); + +static void +save_playlist_handler(GSimpleAction *action, GVariant *param, gpointer data); + +static void +search_playlist_handler(GSimpleAction *action, GVariant *param, gpointer data); + +static void +stop_search_playlist_handler(GSimpleAction *action, GVariant *param, gpointer data); + +static void +toggle_shuffle_playlist_handler(GSimpleAction *action, GVariant *param, gpointer data); + +static void +copy_selected_playlist_item_handler( GSimpleAction *action, + GVariant *param, + gpointer data ); + +static void +remove_selected_playlist_item_handler( GSimpleAction *action, + GVariant *param, + gpointer data ); + +static void +show_preferences_dialog_handler( GSimpleAction *action, + GVariant *param, + gpointer data ); + +static void +quit_handler(GSimpleAction *action, GVariant *param, gpointer data); + +static void +toggle_main_menu_handler(GSimpleAction *action, GVariant *param, gpointer data); + +static void +set_audio_track_handler(GSimpleAction *action, GVariant *value, gpointer data); + +static void +set_video_track_handler(GSimpleAction *action, GVariant *value, gpointer data); + +static void +set_subtitle_track_handler( GSimpleAction *action, + GVariant *value, + gpointer data ); + +static void +load_track_handler(GSimpleAction *action, GVariant *param, gpointer data); + +static void +toggle_fullscreen_handler( GSimpleAction *action, + GVariant *param, + gpointer data ); + +static void +enter_fullscreen_handler(GSimpleAction *action, GVariant *param, gpointer data); + +static void +leave_fullscreen_handler(GSimpleAction *action, GVariant *param, gpointer data); + +static void +set_video_size_handler(GSimpleAction *action, GVariant *param, gpointer data); + +static void +show_about_dialog_handler( GSimpleAction *action, + GVariant *param, + gpointer data ); + +static gboolean +boolean_to_state( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer user_data ) +{ + gboolean from = g_value_get_boolean(from_value); + GVariant *to = g_variant_new("b", from); + + g_value_set_variant(to_value, to); + + return TRUE; +} + +static gboolean +state_to_boolean( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer user_data ) +{ + GVariant *from = g_value_get_variant(from_value); + gboolean to = g_variant_get_boolean(from); + + g_value_set_boolean(to_value, to); + + return TRUE; +} + +static gboolean +track_id_to_state( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer user_data ) +{ + const gchar *id = g_value_get_string(from_value); + gint64 value = g_strcmp0(id, "no") == 0?0:g_ascii_strtoll(id, NULL, 10); + GVariant *to = g_variant_new("x", value); + + g_value_set_variant(to_value, to); + + return TRUE; +} + +static gboolean +state_to_track_id( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer user_data ) +{ + GVariant *from = g_value_get_variant(from_value); + gint64 id = g_variant_get_int64(from); + gchar *value = id <= 0? + g_strdup("no"): + g_strdup_printf("%" G_GINT64_FORMAT, id); + + g_value_take_string(to_value, value); + + return TRUE; +} + +static gboolean +loop_to_state( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer user_data ) +{ + const gchar *from = g_value_get_string(from_value); + GVariant *to = g_variant_new("b", g_strcmp0(from, "no") != 0); + + g_value_set_variant(to_value, to); + + return TRUE; +} + +static gboolean +state_to_loop( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer user_data ) +{ + GVariant *from = g_value_get_variant(from_value); + gboolean to = g_variant_get_boolean(from); + + g_value_set_static_string(to_value, to?"inf":"no"); + + return TRUE; +} + +static void +bind_properties(CelluloidController *controller) +{ + CelluloidMainWindow *window = celluloid_view_get_main_window + (controller->view); + GAction *action = NULL; + + action = g_action_map_lookup_action + (G_ACTION_MAP(window), "set-audio-track"); + g_object_bind_property_full( controller->model, "aid", + action, "state", + G_BINDING_BIDIRECTIONAL, + track_id_to_state, + state_to_track_id, + NULL, + NULL ); + + action = g_action_map_lookup_action + (G_ACTION_MAP(window), "set-video-track"); + g_object_bind_property_full( controller->model, "vid", + action, "state", + G_BINDING_BIDIRECTIONAL, + track_id_to_state, + state_to_track_id, + NULL, + NULL ); + + action = g_action_map_lookup_action + (G_ACTION_MAP(window), "set-subtitle-track"); + g_object_bind_property_full( controller->model, "sid", + action, "state", + G_BINDING_BIDIRECTIONAL, + track_id_to_state, + state_to_track_id, + NULL, + NULL ); + + action = g_action_map_lookup_action + (G_ACTION_MAP(window), "toggle-shuffle-playlist"); + g_object_bind_property_full( controller->model, "shuffle", + action, "state", + G_BINDING_BIDIRECTIONAL, + boolean_to_state, + state_to_boolean, + NULL, + NULL ); + + action = g_action_map_lookup_action + (G_ACTION_MAP(window), "toggle-loop-file"); + g_object_bind_property_full( controller->model, "loop-file", + action, "state", + G_BINDING_BIDIRECTIONAL, + loop_to_state, + state_to_loop, + NULL, + NULL ); + + action = g_action_map_lookup_action + (G_ACTION_MAP(window), "toggle-loop-playlist"); + g_object_bind_property_full( controller->model, "loop-playlist", + action, "state", + G_BINDING_BIDIRECTIONAL, + loop_to_state, + state_to_loop, + NULL, + NULL ); +} + +static void +open_handler(GSimpleAction *action, GVariant *param, gpointer data) +{ + gchar *uri = NULL; + gboolean append = FALSE; + + g_variant_get(param, "(sb)", &uri, &append); + celluloid_controller_open(data, uri, append); + + g_free(uri); +} + +static void +show_open_dialog_handler(GSimpleAction *action, GVariant *param, gpointer data) +{ + gboolean folder = FALSE; + gboolean append = FALSE; + + g_variant_get(param, "(bb)", &folder, &append); + + celluloid_view_show_open_dialog + (celluloid_controller_get_view(data), folder, append); +} + +static void +show_open_location_dialog_handler( GSimpleAction *action, + GVariant *param, + gpointer data ) +{ + gboolean append = g_variant_get_boolean(param); + + celluloid_view_show_open_location_dialog + (celluloid_controller_get_view(data), append); +} + +static void +toggle_loop_handler(GSimpleAction *action, GVariant *value, gpointer data) +{ + g_simple_action_set_state(action, value); +} + +static void +show_shortcuts_dialog_handler( GSimpleAction *action, + GVariant *param, + gpointer data ) +{ + celluloid_view_show_shortcuts_dialog(celluloid_controller_get_view(data)); +} + +static void +toggle_controls_handler(GSimpleAction *action, GVariant *param, gpointer data) +{ + CelluloidView *view = celluloid_controller_get_view(data); + gboolean visible = celluloid_view_get_controls_visible(view); + + celluloid_view_set_controls_visible(view, !visible); +} + +static void +toggle_playlist_handler(GSimpleAction *action, GVariant *param, gpointer data) +{ + CelluloidView *view = celluloid_controller_get_view(data); + gboolean visible = celluloid_view_get_playlist_visible(view); + + celluloid_view_set_playlist_visible(view, !visible); +} + +static void +save_playlist_handler(GSimpleAction *action, GVariant *param, gpointer data) +{ + celluloid_view_show_save_playlist_dialog + (celluloid_controller_get_view(data)); +} + +static void +search_playlist_handler(GSimpleAction *action, GVariant *param, gpointer data) +{ + CelluloidView *view = celluloid_controller_get_view(data); + + g_object_set(view, "searching", TRUE, NULL); +} + +static void +stop_search_playlist_handler(GSimpleAction *action, GVariant *param, gpointer data) +{ + CelluloidView *view = celluloid_controller_get_view(data); + + g_object_set(view, "searching", FALSE, NULL); +} + +static void +toggle_shuffle_playlist_handler(GSimpleAction *action, GVariant *value, gpointer data) +{ + g_simple_action_set_state(action, value); +} + +static void +copy_selected_playlist_item_handler( GSimpleAction *action, + GVariant *param, + gpointer data ) +{ + CelluloidView *view = celluloid_controller_get_view(data); + CelluloidMainWindow *wnd = celluloid_view_get_main_window(view); + + if(celluloid_main_window_get_playlist_visible(wnd)) + { + CelluloidPlaylistWidget *playlist; + + playlist = celluloid_main_window_get_playlist(wnd); + + celluloid_playlist_widget_copy_selected(playlist); + } +} + +static void +remove_selected_playlist_item_handler( GSimpleAction *action, + GVariant *param, + gpointer data ) +{ + CelluloidView *view = celluloid_controller_get_view(data); + CelluloidMainWindow *wnd = celluloid_view_get_main_window(view); + + if(celluloid_main_window_get_playlist_visible(wnd)) + { + CelluloidPlaylistWidget *playlist; + + playlist = celluloid_main_window_get_playlist(wnd); + + celluloid_playlist_widget_remove_selected(playlist); + } +} + +static void +show_preferences_dialog_handler( GSimpleAction *action, + GVariant *param, + gpointer data ) +{ + celluloid_view_show_preferences_dialog(celluloid_controller_get_view(data)); +} + +static void +quit_handler(GSimpleAction *action, GVariant *param, gpointer data) +{ + celluloid_controller_quit(data); +} + +static void +toggle_main_menu_handler(GSimpleAction *action, GVariant *param, gpointer data) +{ + CelluloidView *view = celluloid_controller_get_view(data); + CelluloidMainWindow *wnd = CELLULOID_MAIN_WINDOW(view); + gboolean csd = celluloid_main_window_get_csd_enabled(wnd); + gboolean visible = celluloid_view_get_main_menu_visible(view); + + if(csd) + { + celluloid_view_set_main_menu_visible(view, !visible); + } +} + +static void +set_audio_track_handler(GSimpleAction *action, GVariant *value, gpointer data) +{ + g_simple_action_set_state(action, value); +} + +static void +set_video_track_handler(GSimpleAction *action, GVariant *value, gpointer data) +{ + g_simple_action_set_state(action, value); +} + +static void +set_subtitle_track_handler( GSimpleAction *action, + GVariant *value, + gpointer data ) +{ + g_simple_action_set_state(action, value); +} + +static void +load_track_handler(GSimpleAction *action, GVariant *param, gpointer data) +{ + CelluloidView *view = celluloid_controller_get_view(data); + gchar *cmd_name = NULL; + + g_variant_get(param, "s", &cmd_name); + + if(g_strcmp0(cmd_name, "audio-add") == 0) + { + celluloid_view_show_open_audio_track_dialog(view); + } + else if(g_strcmp0(cmd_name, "video-add") == 0) + { + celluloid_view_show_open_video_track_dialog(view); + } + else if(g_strcmp0(cmd_name, "sub-add") == 0) + { + celluloid_view_show_open_subtitle_track_dialog(view); + } + else + { + g_assert_not_reached(); + } + + g_free(cmd_name); +} + +static void +toggle_fullscreen_handler(GSimpleAction *action, GVariant *param, gpointer data) +{ + CelluloidView *view = celluloid_controller_get_view(data); + gboolean fullscreen = FALSE; + + g_object_get(view, "fullscreen", &fullscreen, NULL); + celluloid_view_set_fullscreen(view, !fullscreen); +} + +static void +enter_fullscreen_handler(GSimpleAction *action, GVariant *param, gpointer data) +{ + celluloid_view_set_fullscreen(celluloid_controller_get_view(data), TRUE); +} + +static void +leave_fullscreen_handler(GSimpleAction *action, GVariant *param, gpointer data) +{ + celluloid_view_set_fullscreen(celluloid_controller_get_view(data), FALSE); +} + +static void +set_video_size_handler(GSimpleAction *action, GVariant *param, gpointer data) +{ + CelluloidController *controller = data; + gdouble value = g_variant_get_double(param); + + g_object_set(controller->model, "window-scale", value, NULL); +} + +static void +show_about_dialog_handler(GSimpleAction *action, GVariant *param, gpointer data) +{ + celluloid_view_show_about_dialog(celluloid_controller_get_view(data)); +} + +void +celluloid_controller_action_register_actions(CelluloidController *controller) +{ + const GActionEntry entries[] + = { {.name = "open", + .activate = open_handler, + .parameter_type = "(sb)"}, + {.name = "show-open-dialog", + .activate = show_open_dialog_handler, + .parameter_type = "(bb)"}, + {.name = "quit", + .activate = quit_handler}, + {.name = "show-about-dialog", + .activate = show_about_dialog_handler}, + {.name = "show-preferences-dialog", + .activate = show_preferences_dialog_handler}, + {.name = "show-open-location-dialog", + .activate = show_open_location_dialog_handler, + .parameter_type = "b"}, + {.name = "toggle-loop-file", + .state = "false", + .change_state = toggle_loop_handler}, + {.name = "toggle-loop-playlist", + .state = "false", + .change_state = toggle_loop_handler}, + {.name = "show-shortcuts-dialog", + .activate = show_shortcuts_dialog_handler}, + {.name = "toggle-controls", + .activate = toggle_controls_handler}, + {.name = "toggle-playlist", + .activate = toggle_playlist_handler}, + {.name = "save-playlist", + .activate = save_playlist_handler}, + {.name = "search-playlist", + .activate = search_playlist_handler}, + {.name = "stop-search-playlist", + .activate = stop_search_playlist_handler}, + {.name = "toggle-shuffle-playlist", + .state = "false", + .change_state = toggle_shuffle_playlist_handler}, + {.name = "copy-selected-playlist-item", + .activate = copy_selected_playlist_item_handler}, + {.name = "remove-selected-playlist-item", + .activate = remove_selected_playlist_item_handler}, + {.name = "toggle-main-menu", + .activate = toggle_main_menu_handler}, + {.name = "set-audio-track", + .change_state = set_audio_track_handler, + .state = "@x 0", + .parameter_type = "x"}, + {.name = "set-video-track", + .change_state = set_video_track_handler, + .state = "@x 0", + .parameter_type = "x"}, + {.name = "set-subtitle-track", + .change_state = set_subtitle_track_handler, + .state = "@x 0", + .parameter_type = "x"}, + {.name = "load-track", + .activate = load_track_handler, + .parameter_type = "s"}, + {.name = "toggle-fullscreen", + .activate = toggle_fullscreen_handler}, + {.name = "enter-fullscreen", + .activate = enter_fullscreen_handler}, + {.name = "leave-fullscreen", + .activate = leave_fullscreen_handler}, + {.name = "set-video-size", + .activate = set_video_size_handler, + .parameter_type = "d"} }; + + CelluloidMainWindow *window = celluloid_view_get_main_window + (controller->view); + + g_action_map_add_action_entries( G_ACTION_MAP(window), + entries, + G_N_ELEMENTS(entries), + controller ); + + bind_properties(controller); +} diff --git a/src/celluloid-controller-actions.h b/src/celluloid-controller-actions.h new file mode 100644 index 0000000..162ab14 --- /dev/null +++ b/src/celluloid-controller-actions.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2015-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef CONTROLLER_ACTIONS_H +#define CONTROLLER_ACTIONS_H + +#include + +#include "celluloid-controller.h" + +G_BEGIN_DECLS + +void +celluloid_controller_action_register_actions(CelluloidController *controller); + +G_END_DECLS + +#endif diff --git a/src/celluloid-controller-input.c b/src/celluloid-controller-input.c new file mode 100644 index 0000000..5a82048 --- /dev/null +++ b/src/celluloid-controller-input.c @@ -0,0 +1,304 @@ +/* + * Copyright (c) 2016-2020 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include +#include +#include +#include +#include + +#include "celluloid-controller-private.h" +#include "celluloid-controller.h" +#include "celluloid-controller-input.h" +#include "celluloid-mpv.h" +#include "celluloid-mpv-wrapper.h" +#include "celluloid-main-window.h" +#include "celluloid-video-area.h" +#include "celluloid-def.h" + +static gchar * +keyval_to_keystr(guint keyval); + +static gchar * +get_modstr(guint state); + +static gchar * +get_full_keystr(GdkEventKey *event); + +static gboolean +key_press_handler(GtkWidget *widget, GdkEvent *event, gpointer data); + +static gboolean +key_release_handler(GtkWidget *widget, GdkEvent *event, gpointer data); + +static gboolean +mouse_button_handler(GtkWidget *widget, GdkEvent *event, gpointer data); + +static gboolean +mouse_move_handler(GtkWidget *widget, GdkEvent *event, gpointer data); + +static gboolean +scroll_handler(GtkWidget *widget, GdkEvent *event, gpointer data); + +static gchar * +keyval_to_keystr(guint keyval) +{ + const gchar *keystrmap[] = KEYSTRING_MAP; + gboolean found = FALSE; + gchar key_utf8[7] = {0}; // 6 bytes for output and 1 for NULL terminator + const gchar *result = key_utf8; + + g_unichar_to_utf8(gdk_keyval_to_unicode(keyval), key_utf8); + result = result[0] ? result : gdk_keyval_name(keyval); + found = !result; + + for(gint i = 0; !found && keystrmap[i]; i += 2) + { + const gint rc = g_ascii_strncasecmp + (result, keystrmap[i+1], KEYSTRING_MAX_LEN); + + if(rc == 0) + { + result = keystrmap[i][0] ? keystrmap[i] : NULL; + found = TRUE; + } + } + + return result ? g_strdup(result) : NULL; +} + +static gchar * +get_modstr(guint state) +{ + const struct + { + guint mask; + gchar *str; + } + mod_map[] = { {GDK_SHIFT_MASK, "Shift+"}, + {GDK_CONTROL_MASK, "Ctrl+"}, + {GDK_MOD1_MASK, "Alt+"}, + {GDK_SUPER_MASK, "Meta+"}, // Super is Meta in mpv + {0, NULL} }; + + const gsize max_len = 21; // strlen("Ctrl+Alt+Shift+Meta")+1 + gchar *result = g_malloc0(max_len); + + for(gint i = 0; mod_map[i].str; i++) + { + if(state & mod_map[i].mask) + { + g_strlcat(result, mod_map[i].str, max_len); + } + } + + return result; +} + +static gchar * +get_full_keystr(GdkEventKey *event) +{ + gchar *modstr = get_modstr(event->state); + gchar *keystr = keyval_to_keystr(event->keyval); + char *result = keystr ? g_strconcat(modstr, keystr, NULL) : NULL; + + g_free(keystr); + g_free(modstr); + + return result; +} + +static gboolean +key_press_handler(GtkWidget *widget, GdkEvent *event, gpointer data) +{ + CelluloidController *controller = data; + gchar *keystr = get_full_keystr((GdkEventKey *)event); + gboolean searching = FALSE; + + g_object_get(controller->view, "searching", &searching, NULL); + + if(keystr && !searching) + { + celluloid_model_key_down(controller->model, keystr); + g_free(keystr); + } + + return FALSE; +} + +static gboolean +key_release_handler(GtkWidget *widget, GdkEvent *event, gpointer data) +{ + CelluloidController *controller = data; + gchar *keystr = get_full_keystr((GdkEventKey *)event); + gboolean searching = FALSE; + + g_object_get(controller->view, "searching", &searching, NULL); + + if(keystr && !searching) + { + celluloid_model_key_up(controller->model, keystr); + g_free(keystr); + } + + return FALSE; +} + +static gboolean +mouse_button_handler(GtkWidget *widget, GdkEvent *event, gpointer data) +{ + GdkEventButton *btn_event = (GdkEventButton *)event; + + if(btn_event->type == GDK_BUTTON_PRESS + || btn_event->type == GDK_BUTTON_RELEASE + || btn_event->type == GDK_SCROLL) + { + CelluloidController *controller = data; + gchar *btn_str = g_strdup_printf + ("MOUSE_BTN%u", btn_event->button-1); + void (*func)(CelluloidModel *, const gchar *) + = (btn_event->type == GDK_SCROLL)? + celluloid_model_key_press: + (btn_event->type == GDK_BUTTON_PRESS)? + celluloid_model_key_down:celluloid_model_key_up; + + func(controller->model, btn_str); + + g_free(btn_str); + } + + return TRUE; +} + +static gboolean +mouse_move_handler(GtkWidget *widget, GdkEvent *event, gpointer data) +{ + CelluloidController *controller = data; + GdkEventMotion *motion_event = (GdkEventMotion *)event; + + if(controller->model) + { + celluloid_model_mouse( controller->model, + (gint)motion_event->x, + (gint)motion_event->y ); + } + + return FALSE; +} + +static gboolean +scroll_handler(GtkWidget *widget, GdkEvent *event, gpointer data) +{ + GdkEventScroll *scroll_event = (GdkEventScroll *)event; + guint button = 0; + gint count = 0; + + /* Only one axis will be used at a time to prevent accidental activation + * of commands bound to buttons associated with the other axis. + */ + if(ABS(scroll_event->delta_x) > ABS(scroll_event->delta_y)) + { + count = (gint)ABS(scroll_event->delta_x); + + if(scroll_event->delta_x <= -1) + { + button = 6; + } + else if(scroll_event->delta_x >= 1) + { + button = 7; + } + } + else + { + count = (gint)ABS(scroll_event->delta_y); + + if(scroll_event->delta_y <= -1) + { + button = 4; + } + else if(scroll_event->delta_y >= 1) + { + button = 5; + } + } + + if(button > 0) + { + GdkEventButton btn_event; + + btn_event.type = scroll_event->type; + btn_event.window = scroll_event->window; + btn_event.send_event = scroll_event->send_event; + btn_event.time = scroll_event->time; + btn_event.x = scroll_event->x; + btn_event.y = scroll_event->y; + btn_event.axes = NULL; + btn_event.state = scroll_event->state; + btn_event.button = button; + btn_event.device = scroll_event->device; + btn_event.x_root = scroll_event->x_root; + btn_event.y_root = scroll_event->y_root; + + for(gint i = 0; i < count; i++) + { + /* Not used */ + gboolean rc; + + g_signal_emit_by_name + (widget, "button-press-event", &btn_event, &rc); + } + } + + return TRUE; +} + +void +celluloid_controller_input_connect_signals(CelluloidController *controller) +{ + CelluloidMainWindow *wnd = celluloid_view_get_main_window + (controller->view); + CelluloidVideoArea *video_area = celluloid_main_window_get_video_area + (wnd); + + g_signal_connect( controller->view, + "key-press-event", + G_CALLBACK(key_press_handler), + controller ); + g_signal_connect( controller->view, + "key-release-event", + G_CALLBACK(key_release_handler), + controller ); + g_signal_connect( video_area, + "button-press-event", + G_CALLBACK(mouse_button_handler), + controller ); + g_signal_connect( video_area, + "button-release-event", + G_CALLBACK(mouse_button_handler), + controller ); + g_signal_connect( controller->view, + "motion-notify-event", + G_CALLBACK(mouse_move_handler), + controller ); + g_signal_connect( video_area, + "scroll-event", + G_CALLBACK(scroll_handler), + controller ); +} diff --git a/src/celluloid-controller-input.h b/src/celluloid-controller-input.h new file mode 100644 index 0000000..d4adc22 --- /dev/null +++ b/src/celluloid-controller-input.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2016-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef CONTROLLER_INPUT_H +#define CONTROLLER_INPUT_H + +#include + +#include "celluloid-controller-input.h" + +G_BEGIN_DECLS + +void +celluloid_controller_input_connect_signals(CelluloidController *controller); + +G_END_DECLS + +#endif diff --git a/src/celluloid-controller-private.h b/src/celluloid-controller-private.h new file mode 100644 index 0000000..4aaf0b0 --- /dev/null +++ b/src/celluloid-controller-private.h @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2017-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef CONTROLLER_PRIVATE_H +#define CONTROLLER_PRIVATE_H + +#include "celluloid-model.h" +#include "celluloid-view.h" +#include "mpris/celluloid-mpris.h" +#include "media-keys/celluloid-media-keys.h" + +G_BEGIN_DECLS + +enum +{ + PROP_0, + PROP_APP, + PROP_READY, + PROP_IDLE, + PROP_USE_SKIP_BUTTONS_FOR_PLAYLIST, + N_PROPERTIES +}; + +struct _CelluloidController +{ + GObject parent; + CelluloidApplication *app; + CelluloidModel *model; + CelluloidView *view; + gboolean ready; + gboolean idle; + gboolean use_skip_buttons_for_playlist; + gint64 target_playlist_pos; + guint update_seekbar_id; + guint resize_timeout_tag; + GBinding *skip_buttons_binding; + GSettings *settings; + CelluloidMediaKeys *media_keys; + CelluloidMpris *mpris; +}; + +struct _CelluloidControllerClass +{ + GObjectClass parent_class; +}; + +G_END_DECLS + +#endif diff --git a/src/celluloid-controller.c b/src/celluloid-controller.c new file mode 100644 index 0000000..396c8e5 --- /dev/null +++ b/src/celluloid-controller.c @@ -0,0 +1,1328 @@ +/* + * Copyright (c) 2017-2020 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include +#include +#include +#include +#include +#include + +#include "celluloid-controller-private.h" +#include "celluloid-controller.h" +#include "celluloid-controller-actions.h" +#include "celluloid-controller-input.h" +#include "celluloid-player-options.h" +#include "celluloid-def.h" + +static void +constructed(GObject *object); + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ); + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ); + +static void +dispose(GObject *object); + +static gboolean +loop_to_boolean( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer data ); + +static gboolean +boolean_to_loop( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer data ); + +static void +mpris_enable_handler(GSettings *settings, gchar *key, gpointer data); + +static void +media_keys_enable_handler(GSettings *settings, gchar *key, gpointer data); + +static void +view_ready_handler(CelluloidView *view, gpointer data); + +static void +render_handler(CelluloidView *view, gpointer data); + +static void +preferences_updated_handler(CelluloidView *view, gpointer data); + +static void +audio_track_load_handler(CelluloidView *view, const gchar *uri, gpointer data); + +static void +video_track_load_handler(CelluloidView *view, const gchar *uri, gpointer data); + +static void +subtitle_track_load_handler( CelluloidView *view, + const gchar *uri, + gpointer data ); + +static void +file_open_handler( CelluloidView *view, + const gchar **uri_list, + gboolean append, + gpointer data ); + +static void +grab_handler(CelluloidView *view, gboolean was_grabbed, gpointer data); + +static gboolean +delete_handler(CelluloidView *view, GdkEvent *event, gpointer data); + +static void +playlist_item_activated_handler(CelluloidView *view, gint pos, gpointer data); + +static void +playlist_item_deleted_handler(CelluloidView *view, gint pos, gpointer data); + +static void +playlist_reordered_handler( CelluloidView *view, + gint src, + gint dst, + gpointer data ); + +static void +set_use_skip_button_for_playlist( CelluloidController *controller, + gboolean value); + +static void +connect_signals(CelluloidController *controller); + +static gboolean +update_seek_bar(gpointer data); + +static gboolean +is_more_than_one( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer data ); + +static void +idle_active_handler(GObject *object, GParamSpec *pspec, gpointer data); + +static void +playlist_handler(GObject *object, GParamSpec *pspec, gpointer data); + +static void +vid_handler(GObject *object, GParamSpec *pspec, gpointer data); + +static void +window_scale_handler(GObject *object, GParamSpec *pspec, gpointer data); + +static void +model_ready_handler(GObject *object, GParamSpec *pspec, gpointer data); + +static void +frame_ready_handler(CelluloidModel *model, gpointer data); + +static void +metadata_update_handler(CelluloidModel *model, gint64 pos, gpointer data); + +static void +window_resize_handler( CelluloidModel *model, + gint64 width, + gint64 height, + gpointer data ); + +static void +window_move_handler( CelluloidModel *model, + gboolean flip_x, + gboolean flip_y, + GValue *x, + GValue *y, + gpointer data ); + +static void +message_handler(CelluloidMpv *mpv, const gchar *message, gpointer data); + +static void +error_handler(CelluloidMpv *mpv, const gchar *message, gpointer data); + +static void +shutdown_handler(CelluloidMpv *mpv, gpointer data); + +static gboolean +update_window_scale(gpointer data); + +static void +video_area_resize_handler( CelluloidView *view, + gint width, + gint height, + gpointer data ); + +static void +searching_handler(GObject *object, GParamSpec *pspec, gpointer data); + +static void +fullscreen_handler(GObject *object, GParamSpec *pspec, gpointer data); + +static void +play_button_handler(GtkButton *button, gpointer data); + +static void +stop_button_handler(GtkButton *button, gpointer data); + +static void +forward_button_handler(GtkButton *button, gpointer data); + +static void +rewind_button_handler(GtkButton *button, gpointer data); + +static void +next_button_handler(GtkButton *button, gpointer data); + +static void +previous_button_handler(GtkButton *button, gpointer data); + +static void +fullscreen_button_handler(GtkButton *button, gpointer data); + +static void +seek_handler(GtkButton *button, gdouble value, gpointer data); + +static void +celluloid_controller_class_init(CelluloidControllerClass *klass); + +static void +celluloid_controller_init(CelluloidController *controller); + +static void +update_extra_mpv_options(CelluloidController *controller); + +G_DEFINE_TYPE(CelluloidController, celluloid_controller, G_TYPE_OBJECT) + +static void +constructed(GObject *object) +{ + CelluloidController *controller; + CelluloidMainWindow *window; + CelluloidVideoArea *video_area; + gboolean always_floating; + gint64 wid; + + controller = CELLULOID_CONTROLLER(object); + always_floating = g_settings_get_boolean + ( controller->settings, + "always-use-floating-controls" ); + + controller->view = celluloid_view_new(controller->app, always_floating); + window = CELLULOID_MAIN_WINDOW(controller->view); + video_area = celluloid_main_window_get_video_area(window); + wid = celluloid_video_area_get_xid(video_area); + controller->model = celluloid_model_new(wid); + + connect_signals(controller); + celluloid_controller_action_register_actions(controller); + celluloid_controller_input_connect_signals(controller); + update_extra_mpv_options(controller); + + gtk_widget_show_all(GTK_WIDGET(window)); + + g_signal_connect( controller->settings, + "changed::mpris-enable", + G_CALLBACK(mpris_enable_handler), + controller ); + g_signal_connect( controller->settings, + "changed::media-keys-enable", + G_CALLBACK(media_keys_enable_handler), + controller ); + + if(g_settings_get_boolean(controller->settings, "mpris-enable")) + { + controller->mpris = celluloid_mpris_new(controller); + } + + if(g_settings_get_boolean(controller->settings, "media-keys-enable")) + { + controller->media_keys = celluloid_media_keys_new(controller); + } + + G_OBJECT_CLASS(celluloid_controller_parent_class)->constructed(object); +} + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ) +{ + CelluloidController *self = CELLULOID_CONTROLLER(object); + + switch(property_id) + { + case PROP_APP: + self->app = g_value_get_pointer(value); + break; + + case PROP_READY: + self->ready = g_value_get_boolean(value); + break; + + case PROP_IDLE: + self->idle = g_value_get_boolean(value); + break; + + case PROP_USE_SKIP_BUTTONS_FOR_PLAYLIST: + self->use_skip_buttons_for_playlist = g_value_get_boolean(value); + set_use_skip_button_for_playlist + (self, self->use_skip_buttons_for_playlist); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ) +{ + CelluloidController *self = CELLULOID_CONTROLLER(object); + + switch(property_id) + { + case PROP_APP: + g_value_set_pointer(value, self->app); + break; + + case PROP_READY: + g_value_set_boolean(value, self->ready); + break; + + case PROP_IDLE: + g_value_set_boolean(value, self->idle); + break; + + case PROP_USE_SKIP_BUTTONS_FOR_PLAYLIST: + g_value_set_boolean(value, self->use_skip_buttons_for_playlist); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static void +dispose(GObject *object) +{ + CelluloidController *controller = CELLULOID_CONTROLLER(object); + + g_clear_object(&controller->settings); + g_clear_object(&controller->mpris); + g_clear_object(&controller->media_keys); + + g_source_clear(&controller->update_seekbar_id); + g_source_clear(&controller->resize_timeout_tag); + + if(controller->view) + { + celluloid_view_make_gl_context_current(controller->view); + g_clear_object(&controller->model); + gtk_widget_destroy(GTK_WIDGET(controller->view)); + controller->view = NULL; + } + + G_OBJECT_CLASS(celluloid_controller_parent_class)->dispose(object); +} + +static gboolean +loop_to_boolean( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer data ) +{ + const gchar *from = g_value_get_string(from_value); + gboolean to = g_strcmp0(from, "no") != 0; + + g_value_set_boolean(to_value, to); + + return TRUE; +} + +static gboolean +boolean_to_loop( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer data ) +{ + gboolean from = g_value_get_boolean(from_value); + const gchar *to = from?"inf":"no"; + + g_value_set_static_string(to_value, to); + + return TRUE; +} + +static void +mpris_enable_handler(GSettings *settings, gchar *key, gpointer data) +{ + CelluloidController *controller = data; + + if(!controller->mpris && g_settings_get_boolean(settings, key)) + { + controller->mpris = celluloid_mpris_new(controller); + } + else if(controller->mpris) + { + g_clear_object(&controller->mpris); + } +} + +static void +media_keys_enable_handler(GSettings *settings, gchar *key, gpointer data) +{ + CelluloidController *controller = data; + + if(!controller->media_keys && g_settings_get_boolean(settings, key)) + { + controller->media_keys = celluloid_media_keys_new(controller); + } + else if(controller->media_keys) + { + g_clear_object(&controller->media_keys); + } +} + +static void +view_ready_handler(CelluloidView *view, gpointer data) +{ + CelluloidController *controller = CELLULOID_CONTROLLER(data); + CelluloidModel *model = controller->model; + + celluloid_player_options_init + ( CELLULOID_PLAYER(controller->model), + CELLULOID_MAIN_WINDOW(controller->view) ); + + celluloid_model_initialize(model); +} + +static void +render_handler(CelluloidView *view, gpointer data) +{ + CelluloidController *controller = data; + gint scale = 1; + gint width = -1; + gint height = -1; + + scale = celluloid_view_get_scale_factor(controller->view); + + celluloid_view_get_video_area_geometry + (controller->view, &width, &height); + celluloid_model_render_frame + (controller->model, scale*width, scale*height); +} + +static void +preferences_updated_handler(CelluloidView *view, gpointer data) +{ + CelluloidController *controller = data; + + update_extra_mpv_options(controller); + celluloid_view_make_gl_context_current(controller->view); + celluloid_model_reset(controller->model); +} + +static void +audio_track_load_handler(CelluloidView *view, const gchar *uri, gpointer data) +{ + celluloid_model_load_audio_track(CELLULOID_CONTROLLER(data)->model, uri); +} + +static void +video_track_load_handler(CelluloidView *view, const gchar *uri, gpointer data) +{ + celluloid_model_load_video_track(CELLULOID_CONTROLLER(data)->model, uri); +} + +static void +subtitle_track_load_handler( CelluloidView *view, + const gchar *uri, + gpointer data ) +{ + celluloid_model_load_subtitle_track + (CELLULOID_CONTROLLER(data)->model, uri); +} + +static void +file_open_handler( CelluloidView *view, + const gchar **uri_list, + gboolean append, + gpointer data ) +{ + for(const gchar **iter = uri_list; iter && *iter; iter++) + { + celluloid_model_load_file + ( CELLULOID_CONTROLLER(data)->model, + *iter, + append || iter != uri_list ); + } +} + +static void +grab_handler(CelluloidView *view, gboolean was_grabbed, gpointer data) +{ + if(!was_grabbed) + { + celluloid_model_reset_keys(CELLULOID_CONTROLLER(data)->model); + } +} + +static gboolean +delete_handler(CelluloidView *view, GdkEvent *event, gpointer data) +{ + g_signal_emit_by_name(data, "shutdown"); + + return TRUE; +} + +static void +playlist_item_activated_handler(CelluloidView *view, gint pos, gpointer data) +{ + CelluloidController *controller = CELLULOID_CONTROLLER(data); + gboolean idle_active = FALSE; + + g_object_get(controller->model, "idle-active", &idle_active, NULL); + celluloid_model_play(controller->model); + + if(idle_active) + { + controller->target_playlist_pos = pos; + } + else + { + celluloid_model_set_playlist_position(controller->model, pos); + } +} + +static void +playlist_item_deleted_handler(CelluloidView *view, gint pos, gpointer data) +{ + celluloid_model_remove_playlist_entry + (CELLULOID_CONTROLLER(data)->model, pos); +} + +static void +playlist_reordered_handler( CelluloidView *view, + gint src, + gint dst, + gpointer data ) +{ + celluloid_model_move_playlist_entry + (CELLULOID_CONTROLLER(data)->model, src, dst); +} + +static void +set_use_skip_button_for_playlist( CelluloidController *controller, + gboolean value ) +{ + if(controller->skip_buttons_binding) + { + g_binding_unbind(controller->skip_buttons_binding); + } + + controller->skip_buttons_binding + = g_object_bind_property_full + ( controller->model, + value?"playlist-count":"chapters", + controller->view, + "skip-enabled", + G_BINDING_DEFAULT|G_BINDING_SYNC_CREATE, + is_more_than_one, + NULL, + NULL, + NULL ); +} + +static void +connect_signals(CelluloidController *controller) +{ + g_object_bind_property( controller->model, "core-idle", + controller, "idle", + G_BINDING_DEFAULT ); + g_object_bind_property( controller->model, "border", + controller->view, "border", + G_BINDING_DEFAULT ); + g_object_bind_property( controller->model, "fullscreen", + controller->view, "fullscreen", + G_BINDING_BIDIRECTIONAL ); + g_object_bind_property( controller->model, "window-maximized", + controller->view, "maximized", + G_BINDING_BIDIRECTIONAL ); + g_object_bind_property( controller->model, "pause", + controller->view, "pause", + G_BINDING_DEFAULT ); + g_object_bind_property( controller->model, "media-title", + controller->view, "title", + G_BINDING_DEFAULT ); + g_object_bind_property( controller->model, "volume", + controller->view, "volume", + G_BINDING_BIDIRECTIONAL ); + g_object_bind_property( controller->model, "volume-max", + controller->view, "volume-max", + G_BINDING_DEFAULT ); + g_object_bind_property( controller->model, "duration", + controller->view, "duration", + G_BINDING_DEFAULT ); + g_object_bind_property( controller->model, "playlist-pos", + controller->view, "playlist-pos", + G_BINDING_DEFAULT ); + g_object_bind_property( controller->model, "track-list", + controller->view, "track-list", + G_BINDING_DEFAULT ); + g_object_bind_property( controller->model, "disc-list", + controller->view, "disc-list", + G_BINDING_DEFAULT ); + g_object_bind_property( controller->view, "display-fps", + controller->model, "display-fps", + G_BINDING_DEFAULT|G_BINDING_SYNC_CREATE ); + g_object_bind_property_full( controller->view, "loop", + controller->model, "loop-playlist", + G_BINDING_BIDIRECTIONAL| + G_BINDING_SYNC_CREATE, + boolean_to_loop, + loop_to_boolean, + NULL, + NULL ); + g_object_bind_property( controller->view, "shuffle", + controller->model, "shuffle", + G_BINDING_BIDIRECTIONAL|G_BINDING_SYNC_CREATE ); + + g_signal_connect( controller->model, + "notify::ready", + G_CALLBACK(model_ready_handler), + controller ); + g_signal_connect( controller->model, + "notify::idle-active", + G_CALLBACK(idle_active_handler), + controller ); + g_signal_connect( controller->model, + "notify::playlist", + G_CALLBACK(playlist_handler), + controller ); + g_signal_connect( controller->model, + "notify::vid", + G_CALLBACK(vid_handler), + controller ); + g_signal_connect( controller->model, + "notify::window-scale", + G_CALLBACK(window_scale_handler), + controller ); + g_signal_connect( controller->model, + "frame-ready", + G_CALLBACK(frame_ready_handler), + controller ); + g_signal_connect( controller->model, + "metadata-update", + G_CALLBACK(metadata_update_handler), + controller ); + g_signal_connect( controller->model, + "window-resize", + G_CALLBACK(window_resize_handler), + controller ); + g_signal_connect( controller->model, + "window-move", + G_CALLBACK(window_move_handler), + controller ); + g_signal_connect( controller->model, + "message", + G_CALLBACK(message_handler), + controller ); + g_signal_connect( controller->model, + "error", + G_CALLBACK(error_handler), + controller ); + g_signal_connect( controller->model, + "shutdown", + G_CALLBACK(shutdown_handler), + controller ); + + g_signal_connect( controller->view, + "video-area-resize", + G_CALLBACK(video_area_resize_handler), + controller ); + g_signal_connect( controller->view, + "notify::fullscreen", + G_CALLBACK(fullscreen_handler), + controller ); + g_signal_connect( controller->view, + "notify::searching", + G_CALLBACK(searching_handler), + controller ); + g_signal_connect( controller->view, + "button-clicked::play", + G_CALLBACK(play_button_handler), + controller ); + g_signal_connect( controller->view, + "button-clicked::stop", + G_CALLBACK(stop_button_handler), + controller ); + g_signal_connect( controller->view, + "button-clicked::forward", + G_CALLBACK(forward_button_handler), + controller ); + g_signal_connect( controller->view, + "button-clicked::rewind", + G_CALLBACK(rewind_button_handler), + controller ); + g_signal_connect( controller->view, + "button-clicked::next", + G_CALLBACK(next_button_handler), + controller ); + g_signal_connect( controller->view, + "button-clicked::previous", + G_CALLBACK(previous_button_handler), + controller ); + g_signal_connect( controller->view, + "button-clicked::fullscreen", + G_CALLBACK(fullscreen_button_handler), + controller ); + g_signal_connect( controller->view, + "seek", + G_CALLBACK(seek_handler), + controller ); + + g_signal_connect( controller->view, + "ready", + G_CALLBACK(view_ready_handler), + controller ); + g_signal_connect( controller->view, + "render", + G_CALLBACK(render_handler), + controller ); + g_signal_connect( controller->view, + "preferences-updated", + G_CALLBACK(preferences_updated_handler), + controller ); + g_signal_connect( controller->view, + "audio-track-load", + G_CALLBACK(audio_track_load_handler), + controller ); + g_signal_connect( controller->view, + "video-track-load", + G_CALLBACK(video_track_load_handler), + controller ); + g_signal_connect( controller->view, + "subtitle-track-load", + G_CALLBACK(subtitle_track_load_handler), + controller ); + g_signal_connect( controller->view, + "file-open", + G_CALLBACK(file_open_handler), + controller ); + g_signal_connect( controller->view, + "grab-notify", + G_CALLBACK(grab_handler), + controller ); + g_signal_connect( controller->view, + "delete-event", + G_CALLBACK(delete_handler), + controller ); + g_signal_connect( controller->view, + "playlist-item-activated", + G_CALLBACK(playlist_item_activated_handler), + controller ); + g_signal_connect( controller->view, + "playlist-item-deleted", + G_CALLBACK(playlist_item_deleted_handler), + controller ); + g_signal_connect( controller->view, + "playlist-reordered", + G_CALLBACK(playlist_reordered_handler), + controller ); +} + +static gboolean +update_seek_bar(gpointer data) +{ + CelluloidController *controller = data; + gdouble time_pos = celluloid_model_get_time_position(controller->model); + + celluloid_view_set_time_position(controller->view, time_pos); + + return TRUE; +} + +static gboolean +is_more_than_one( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer data ) +{ + gint64 from = g_value_get_int64(from_value); + + g_value_set_boolean(to_value, from > 1); + + return TRUE; +} + +static void +idle_active_handler(GObject *object, GParamSpec *pspec, gpointer data) +{ + CelluloidController *controller = data; + gboolean idle_active = TRUE; + + g_object_get(object, "idle-active", &idle_active, NULL); + + if(idle_active) + { + celluloid_view_reset(CELLULOID_CONTROLLER(data)->view); + } + else if(controller->target_playlist_pos >= 0) + { + celluloid_model_set_playlist_position + (controller->model, controller->target_playlist_pos); + } +} + +static void +playlist_handler(GObject *object, GParamSpec *pspec, gpointer data) +{ + CelluloidView *view = CELLULOID_CONTROLLER(data)->view; + GPtrArray *playlist = NULL; + gint64 pos = 0; + + g_object_get( object, + "playlist", &playlist, + "playlist-pos", &pos, + NULL ); + + celluloid_view_update_playlist(view, playlist); + celluloid_view_set_playlist_pos(view, pos); +} + +static void +vid_handler(GObject *object, GParamSpec *pspec, gpointer data) +{ + CelluloidController *controller = data; + CelluloidMainWindow *window = + celluloid_view_get_main_window(controller->view); + GActionMap *map = G_ACTION_MAP(window); + GAction *action = g_action_map_lookup_action(map, "set-video-size"); + gchar *vid_str = NULL; + gint64 vid = 0; + + // Queue render to clear last frame from the buffer in case video + // becomes disabled + celluloid_view_queue_render(CELLULOID_CONTROLLER(data)->view); + + g_object_get(object, "vid", &vid_str, NULL); + vid = g_ascii_strtoll(vid_str, NULL, 10); + g_simple_action_set_enabled(G_SIMPLE_ACTION(action), vid > 0); + + g_free(vid_str); +} + +static void +window_scale_handler(GObject *object, GParamSpec *pspec, gpointer data) +{ + CelluloidController *controller = data; + gint64 video_width = 1; + gint64 video_height = 1; + gint width = 1; + gint height = 1; + gdouble window_scale = 1.0; + gdouble new_window_scale = 1.0; + + celluloid_model_get_video_geometry + (controller->model, &video_width, &video_height); + celluloid_view_get_video_area_geometry + (controller->view, &width, &height); + + g_object_get(object, "window-scale", &new_window_scale, NULL); + + window_scale = MIN( width/(gdouble)video_width, + height/(gdouble)video_height ); + + if(ABS(window_scale-new_window_scale) > 0.0001) + { + celluloid_controller_autofit(data, new_window_scale); + } +} + +static void +model_ready_handler(GObject *object, GParamSpec *pspec, gpointer data) +{ + CelluloidController *controller = data; + gboolean ready = FALSE; + + g_object_get(object, "ready", &ready, NULL); + + if(ready) + { + gboolean use_opengl_cb; + + use_opengl_cb = celluloid_model_get_use_opengl_cb + (controller->model); + + celluloid_view_set_use_opengl_cb + (controller->view, use_opengl_cb); + + if(use_opengl_cb) + { + celluloid_view_make_gl_context_current(controller->view); + celluloid_model_initialize_gl(controller->model); + } + } + + g_source_clear(&controller->update_seekbar_id); + controller->update_seekbar_id + = g_timeout_add( SEEK_BAR_UPDATE_INTERVAL, + (GSourceFunc)update_seek_bar, + controller ); + + controller->ready = ready; + g_object_notify(data, "ready"); +} + +static void +frame_ready_handler(CelluloidModel *model, gpointer data) +{ + celluloid_view_queue_render(CELLULOID_CONTROLLER(data)->view); +} + +static void +metadata_update_handler(CelluloidModel *model, gint64 pos, gpointer data) +{ + CelluloidView *view = CELLULOID_CONTROLLER(data)->view; + GPtrArray *playlist = NULL; + + g_object_get(G_OBJECT(model), "playlist", &playlist, NULL); + celluloid_view_update_playlist(view, playlist); +} + +static void +window_resize_handler( CelluloidModel *model, + gint64 width, + gint64 height, + gpointer data ) +{ + CelluloidController *controller = data; + + celluloid_view_resize_video_area(controller->view, (gint)width, (gint)height); +} + +static void +window_move_handler( CelluloidModel *model, + gboolean flip_x, + gboolean flip_y, + GValue *x, + GValue *y, + gpointer data ) +{ + celluloid_view_move + (CELLULOID_CONTROLLER(data)->view, flip_x, flip_y, x, y); +} + +static void +message_handler(CelluloidMpv *mpv, const gchar *message, gpointer data) +{ + const gsize prefix_length = sizeof(ACTION_PREFIX)-1; + + /* Verify that both the prefix and the scope matches */ + if(message && strncmp(message, ACTION_PREFIX, prefix_length) == 0) + { + const gchar *action = message+prefix_length+1; + CelluloidController *controller = data; + CelluloidView *view = controller->view; + GActionMap *map = NULL; + + if(g_str_has_prefix(action, "win.")) + { + map = G_ACTION_MAP(celluloid_view_get_main_window(view)); + } + else if(g_str_has_prefix(action, "app.")) + { + map = G_ACTION_MAP(controller->app); + } + + if(map) + { + /* Strip scope and activate */ + activate_action_string(map, strchr(action, '.')+1); + } + else + { + g_warning( "Received action with missing or " + "unknown scope %s", + action ); + } + } +} + +static void +error_handler(CelluloidMpv *mpv, const gchar *message, gpointer data) +{ + celluloid_view_show_message_dialog + ( CELLULOID_CONTROLLER(data)->view, + GTK_MESSAGE_ERROR, + _("Error"), + NULL, + message ); +} + +static void +shutdown_handler(CelluloidMpv *mpv, gpointer data) +{ + g_signal_emit_by_name(data, "shutdown"); +} + +static gboolean +update_window_scale(gpointer data) +{ + gpointer *params = data; + CelluloidController *controller = CELLULOID_CONTROLLER(params[0]); + gint64 video_width = 1; + gint64 video_height = 1; + gint width = 1; + gint height = 1; + gdouble window_scale = 0; + gdouble new_window_scale = 0; + + celluloid_model_get_video_geometry + (controller->model, &video_width, &video_height); + celluloid_view_get_video_area_geometry + (controller->view, &width, &height); + + new_window_scale = MIN( width/(gdouble)video_width, + height/(gdouble)video_height ); + g_object_get(controller->model, "window-scale", &window_scale, NULL); + + if(ABS(window_scale-new_window_scale) > 0.0001) + { + g_object_set( controller->model, + "window-scale", + new_window_scale, + NULL ); + } + + // Clear event source ID for the timeout + *((guint *)params[1]) = 0; + g_free(params); + + return FALSE; +} + +static void +video_area_resize_handler( CelluloidView *view, + gint width, + gint height, + gpointer data ) +{ + CelluloidController *controller = data; + gpointer *params = g_new(gpointer, 2); + + g_source_clear(&controller->resize_timeout_tag); + + params[0] = data; + params[1] = &(controller->resize_timeout_tag); + + // Rate-limit the call to update_window_scale(), which will update the + // window-scale property in the model, to no more than once every 250ms. + controller->resize_timeout_tag = g_timeout_add( 250, + update_window_scale, + params ); +} + +static void +fullscreen_handler(GObject *object, GParamSpec *pspec, gpointer data) +{ + CelluloidView *view = CELLULOID_CONTROLLER(data)->view; + CelluloidMainWindow *window = celluloid_view_get_main_window(view); + GActionMap *map = G_ACTION_MAP(window); + GAction *toggle_playlist = NULL; + GAction *toggle_controls = NULL; + gboolean fullscreen = FALSE; + + toggle_playlist = g_action_map_lookup_action(map, "toggle-playlist"); + toggle_controls = g_action_map_lookup_action(map, "toggle-controls"); + + g_object_get(view, "fullscreen", &fullscreen, NULL); + + g_simple_action_set_enabled + (G_SIMPLE_ACTION(toggle_playlist), !fullscreen); + g_simple_action_set_enabled + (G_SIMPLE_ACTION(toggle_controls), !fullscreen); +} + +static void +searching_handler(GObject *object, GParamSpec *pspec, gpointer data) +{ + // When the search box becomes visible, it blocks all keyboard inputs + // from being handled by CelluloidController. This means that the key up + // event for the key that triggered the search will never arrive, so we + // need to explicitly reset key states here. + celluloid_model_reset_keys(CELLULOID_CONTROLLER(data)->model); +} + +static void +play_button_handler(GtkButton *button, gpointer data) +{ + CelluloidModel *model = CELLULOID_CONTROLLER(data)->model; + gboolean pause = TRUE; + + g_object_get(model, "pause", &pause, NULL); + + if(pause) + { + celluloid_model_play(model); + } + else + { + celluloid_model_pause(model); + } +} + +static void +stop_button_handler(GtkButton *button, gpointer data) +{ + celluloid_model_stop(CELLULOID_CONTROLLER(data)->model); +} + +static void +forward_button_handler(GtkButton *button, gpointer data) +{ + celluloid_model_forward(CELLULOID_CONTROLLER(data)->model); +} + +static void +rewind_button_handler(GtkButton *button, gpointer data) +{ + celluloid_model_rewind(CELLULOID_CONTROLLER(data)->model); +} + +static void +next_button_handler(GtkButton *button, gpointer data) +{ + CelluloidController *controller = data; + + if(controller->use_skip_buttons_for_playlist) + { + celluloid_model_next_playlist_entry + (CELLULOID_CONTROLLER(data)->model); + } + else + { + celluloid_model_next_chapter + (CELLULOID_CONTROLLER(data)->model); + } +} + +static void +previous_button_handler(GtkButton *button, gpointer data) +{ + CelluloidController *controller = data; + + if(controller->use_skip_buttons_for_playlist) + { + celluloid_model_previous_playlist_entry + (CELLULOID_CONTROLLER(data)->model); + } + else + { + celluloid_model_previous_chapter + (CELLULOID_CONTROLLER(data)->model); + } +} + +static void +fullscreen_button_handler(GtkButton *button, gpointer data) +{ + CelluloidView *view = CELLULOID_CONTROLLER(data)->view; + gboolean fullscreen = FALSE; + + g_object_get(view, "fullscreen", &fullscreen, NULL); + g_object_set(view, "fullscreen", !fullscreen, NULL); +} + +static void +seek_handler(GtkButton *button, gdouble value, gpointer data) +{ + celluloid_model_seek(CELLULOID_CONTROLLER(data)->model, value); +} + +static void +celluloid_controller_class_init(CelluloidControllerClass *klass) +{ + GObjectClass *obj_class = G_OBJECT_CLASS(klass); + GParamSpec *pspec; + + obj_class->constructed = constructed; + obj_class->set_property = set_property; + obj_class->get_property = get_property; + obj_class->dispose = dispose; + + pspec = g_param_spec_pointer + ( "app", + "App", + "The CelluloidApplication to use", + G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); + g_object_class_install_property(obj_class, PROP_APP, pspec); + + pspec = g_param_spec_boolean + ( "ready", + "Ready", + "Whether mpv is ready to receive commands", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property(obj_class, PROP_READY, pspec); + + pspec = g_param_spec_boolean + ( "idle", + "Idle", + "Whether or not the player is idle", + TRUE, + G_PARAM_READWRITE ); + g_object_class_install_property(obj_class, PROP_IDLE, pspec); + + pspec = g_param_spec_boolean + ( "use-skip-buttons-for-playlist", + "Use skip buttons for playlist", + "Whether or not to use the skip buttons to control the playlist", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property(obj_class, PROP_USE_SKIP_BUTTONS_FOR_PLAYLIST, pspec); + + g_signal_new( "shutdown", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0 ); +} + +static void +celluloid_controller_init(CelluloidController *controller) +{ + controller->app = NULL; + controller->model = NULL; + controller->view = NULL; + controller->ready = FALSE; + controller->idle = TRUE; + controller->target_playlist_pos = -1; + controller->update_seekbar_id = 0; + controller->resize_timeout_tag = 0; + controller->skip_buttons_binding = NULL; + controller->settings = g_settings_new(CONFIG_ROOT); + controller->media_keys = NULL; + controller->mpris = NULL; +} + +static void +update_extra_mpv_options(CelluloidController *controller) +{ + GSettings *settings = g_settings_new(CONFIG_ROOT); + const gchar *cli_options = celluloid_application_get_mpv_options + (controller->app); + gchar *pref_options = g_settings_get_string(settings, "mpv-options"); + gchar *options = g_strjoin(" ", pref_options, cli_options, NULL); + + + g_object_set(controller->model, "extra-options", options, NULL); + + g_free(options); + g_free(pref_options); + g_object_unref(settings); +} + +CelluloidController * +celluloid_controller_new(CelluloidApplication *app) +{ + const GType type = celluloid_controller_get_type(); + + return CELLULOID_CONTROLLER(g_object_new(type, "app", app, NULL)); +} + +void +celluloid_controller_quit(CelluloidController *controller) +{ + celluloid_view_quit(controller->view); +} + +void +celluloid_controller_autofit( CelluloidController *controller, + gdouble multiplier ) +{ + gchar *vid = NULL; + gint64 width = -1; + gint64 height = -1; + + g_object_get(G_OBJECT(controller->model), "vid", &vid, NULL); + celluloid_model_get_video_geometry(controller->model, &width, &height); + + if(vid && strncmp(vid, "no", 3) != 0 && width >= 0 && width >= 0) + { + gint new_width = (gint)(multiplier*(gdouble)width); + gint new_height = (gint)(multiplier*(gdouble)height); + gint scale = celluloid_view_get_scale_factor(controller->view); + + g_debug("Resizing window to %dx%d", new_width, new_height); + celluloid_view_resize_video_area( controller->view, + new_width/scale, + new_height/scale ); + } + + g_free(vid); +} + +void +celluloid_controller_present(CelluloidController *controller) +{ + celluloid_view_present(controller->view); +} + +void +celluloid_controller_open( CelluloidController *controller, + const gchar *uri, + gboolean append ) +{ + celluloid_model_load_file(controller->model, uri, append); +} + +CelluloidView * +celluloid_controller_get_view(CelluloidController *controller) +{ + return controller->view; +} + +CelluloidModel * +celluloid_controller_get_model(CelluloidController *controller) +{ + return controller->model; +} diff --git a/src/celluloid-controller.h b/src/celluloid-controller.h new file mode 100644 index 0000000..e8159e6 --- /dev/null +++ b/src/celluloid-controller.h @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2017-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef CONTROLLER_H +#define CONTROLLER_H + +#include + +#include "celluloid-model.h" +#include "celluloid-view.h" + +G_BEGIN_DECLS + +#define CELLULOID_TYPE_CONTROLLER (celluloid_controller_get_type()) + +G_DECLARE_FINAL_TYPE(CelluloidController, celluloid_controller, CELLULOID, CONTROLLER, GObject) + +CelluloidController * +celluloid_controller_new(CelluloidApplication *app); + +void +celluloid_controller_quit(CelluloidController *controller); + +void +celluloid_controller_autofit( CelluloidController *controller, + gdouble multiplier ); + +void +celluloid_controller_present(CelluloidController *controller); + +void +celluloid_controller_open( CelluloidController *controller, + const gchar *uri, + gboolean append ); + +CelluloidView * +celluloid_controller_get_view(CelluloidController *controller); + +CelluloidModel * +celluloid_controller_get_model(CelluloidController *controller); + +G_END_DECLS + +#endif diff --git a/src/celluloid-def.h b/src/celluloid-def.h new file mode 100644 index 0000000..ed8beb8 --- /dev/null +++ b/src/celluloid-def.h @@ -0,0 +1,278 @@ +/* + * Copyright (c) 2014-2021 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef DEF_H +#define DEF_H + +#define APP_ID "io.github.celluloid_player.Celluloid" +#define ICON_NAME APP_ID +#define BIN_NAME "celluloid" +#define CONFIG_DIR BIN_NAME +#define CONFIG_ROOT "io.github.celluloid-player.Celluloid" +#define CONFIG_WIN_STATE CONFIG_ROOT".window-state" +#define ACTION_PREFIX "celluloid-action" +#define DEFAULT_LOG_LEVEL MPV_LOG_LEVEL_ERROR +#define MPRIS_TRACK_LIST_BEFORE 10 +#define MPRIS_TRACK_LIST_AFTER 10 +#define MPRIS_TRACK_ID_NO_TRACK "/org/mpris/MediaPlayer2/TrackList/NoTrack" +#define MPRIS_TRACK_ID_PREFIX "/io/github/CelluloidPlayer/Celluloid/Track/" +#define MPRIS_BUS_NAME "org.mpris.MediaPlayer2."APP_ID +#define MPRIS_OBJ_ROOT_PATH "/org/mpris/MediaPlayer2" +#define MPV_OPTION_PREFIX "--mpv-" +#define PLAYLIST_DEFAULT_WIDTH 200 +#define PLAYLIST_MIN_WIDTH 20 +#define CSD_WIDTH_OFFSET 52 +#define CSD_HEIGHT_OFFSET 99 +#define WAYLAND_NOCSD_HEIGHT_OFFSET 60 +#define MAIN_WINDOW_DEFAULT_WIDTH 625 +#define MAIN_WINDOW_DEFAULT_HEIGHT 400 +#define SEEK_BAR_UPDATE_INTERVAL 250 +#define FS_CONTROL_HIDE_DELAY 1 +#define KEYSTRING_MAX_LEN 16 +#define MIN_MPV_MAJOR 0 +#define MIN_MPV_MINOR 29 +#define MIN_MPV_PATCH 0 + +#define SUBTITLE_EXTS { "utf",\ + "utf8",\ + "utf-8",\ + "idx",\ + "sub",\ + "srt",\ + "smi",\ + "rt",\ + "txt",\ + "ssa",\ + "aqt",\ + "jss",\ + "js",\ + "ass",\ + "mks",\ + "vtt",\ + "sup",\ + NULL } + +#define PLAYLIST_EXTS { "m3u",\ + "m3u8",\ + "ini",\ + "pls",\ + "txt",\ + NULL } + +#define DND_TARGETS { {.target = "PLAYLIST_PATH",\ + .flags = GTK_TARGET_SAME_APP,\ + .info = 0},\ + {.target = "text/uri-list",\ + .flags = 0,\ + .info = 0},\ + {.target = "text/plain",\ + .flags = 0,\ + .info = 0},\ + {.target = "STRING",\ + .flags = 0,\ + .info = 0} } + +#define DEFAULT_KEYBINDS \ + { "Ctrl+o script-message celluloid-action win.show-open-dialog((false, false))",\ + "Ctrl+l script-message celluloid-action win.show-open-location-dialog(false)",\ + "Ctrl+Shift+o script-message celluloid-action win.show-open-dialog((false, true))",\ + "Ctrl+Shift+l script-message celluloid-action win.show-open-location-dialog(true)",\ + "Ctrl+Shift+s script-message celluloid-action win.save-playlist",\ + "Ctrl+f script-message celluloid-action win.search-playlist",\ + "Ctrl+q script-message celluloid-action win.quit",\ + "Ctrl+? script-message celluloid-action win.show-shortcuts-dialog",\ + "Ctrl+p script-message celluloid-action win.show-preferences-dialog",\ + "Ctrl+h script-message celluloid-action win.toggle-controls",\ + "F9 script-message celluloid-action win.toggle-playlist",\ + "F10 script-message celluloid-action win.toggle-main-menu",\ + "DEL script-message celluloid-action win.remove-selected-playlist-item",\ + "U stop",\ + "STOP stop",\ + "F11 cycle fullscreen",\ + "WHEEL_UP add volume 2",\ + "WHEEL_DOWN add volume -2",\ + "WHEEL_LEFT no-osd seek -10",\ + "WHEEL_RIGHT no-osd seek 10",\ + NULL } + +#define KEYSTRING_MAP { "PGUP", "Page_Up",\ + "PGDWN", "Page_Down",\ + "BS", "\b",\ + "SHARP", "#",\ + "UP", "KP_Up",\ + "DOWN", "KP_Down",\ + "RIGHT", "KP_Right",\ + "LEFT", "KP_Left",\ + "RIGHT", "Right",\ + "LEFT", "Left",\ + "UP", "Up",\ + "DOWN", "Down",\ + "ESC", "\x1b",\ + "DEL", "\x7f",\ + "ENTER", "\r",\ + "INS", "Insert",\ + "VOLUME_LOWER", "AudioLowerVolume",\ + "MUTE", "AudioMute",\ + "VOLUME_UP", "AudioRaiseVolume",\ + "PLAY", "AudioPlay",\ + "STOP", "AudioStop",\ + "PREV", "AudioPrev",\ + "NEXT", "AudioNext",\ + "FORWARD", "AudioForward",\ + "REWIND", "AudioRewind",\ + "MENU", "Menu",\ + "HOMEPAGE", "HomePage",\ + "MAIL", "Mail",\ + "FAVORITES", "Favorites",\ + "SEARCH", "Search",\ + "SLEEP", "Sleep",\ + "CANCEL", "Cancel",\ + "RECORD", "AudioRecord",\ + "", "Control_L",\ + "", "Control_R",\ + "", "Alt_L",\ + "", "Alt_R",\ + "", "Meta_L",\ + "", "Meta_R",\ + "", "Shift_L",\ + "", "Shift_R",\ + NULL } + +#define SUPPORTED_PROTOCOLS { "cdda",\ + "rtmp",\ + "rtsp",\ + "http",\ + "https",\ + "mms",\ + "mmst",\ + "mmsh",\ + "mmshttp",\ + "rtp",\ + "httpproxy",\ + "hls",\ + "rtmpe",\ + "rtmps",\ + "rtmpt",\ + "rtmpte",\ + "rtmpts",\ + "srtp",\ + "lavf",\ + "ffmpeg",\ + "udp",\ + "ftp",\ + "tcp",\ + "tls",\ + "unix",\ + "sftp",\ + "md5",\ + "concat",\ + "avdevice",\ + "av",\ + "dvb",\ + "tv",\ + "pvr",\ + "smb",\ + "file",\ + "dvdread",\ + "dvd",\ + "dvdnav",\ + "bd",\ + "br",\ + "bluray",\ + "bdnav",\ + "brnav",\ + "bluraynav",\ + "memory",\ + "null",\ + "mf",\ + "edl",\ + "rar",\ + NULL } + +#define SUPPORTED_MIME_TYPES { "application/ogg",\ + "application/x-ogg",\ + "application/sdp",\ + "application/smil",\ + "application/x-smil",\ + "application/streamingmedia",\ + "application/x-streamingmedia",\ + "application/vnd.rn-realmedia",\ + "application/vnd.rn-realmedia-vbr",\ + "audio/aac",\ + "audio/x-aac",\ + "audio/m4a",\ + "audio/x-m4a",\ + "audio/mp1",\ + "audio/x-mp1",\ + "audio/mp2",\ + "audio/x-mp2",\ + "audio/mp3",\ + "audio/x-mp3",\ + "audio/mpeg",\ + "audio/x-mpeg",\ + "audio/mpegurl",\ + "audio/x-mpegurl",\ + "audio/mpg",\ + "audio/x-mpg",\ + "audio/rn-mpeg",\ + "audio/ogg",\ + "audio/scpls",\ + "audio/x-scpls",\ + "audio/vnd.rn-realaudio",\ + "audio/wav",\ + "audio/x-pn-windows-pcm",\ + "audio/x-realaudio",\ + "audio/x-pn-realaudio",\ + "audio/x-ms-wma",\ + "audio/x-pls",\ + "audio/x-wav",\ + "video/mpeg",\ + "video/x-mpeg",\ + "video/x-mpeg2",\ + "video/mp4",\ + "video/msvideo",\ + "video/x-msvideo",\ + "video/ogg",\ + "video/quicktime",\ + "video/vnd.rn-realvideo",\ + "video/x-ms-afs",\ + "video/x-ms-asf",\ + "video/x-ms-wmv",\ + "video/x-ms-wmx",\ + "video/x-ms-wvxvideo",\ + "video/x-avi",\ + "video/x-fli",\ + "video/x-flv",\ + "video/x-theora",\ + "video/x-matroska",\ + "video/webm",\ + "audio/x-flac",\ + "audio/x-vorbis+ogg",\ + "video/x-ogm+ogg",\ + "audio/x-shorten",\ + "audio/x-ape",\ + "audio/x-wavpack",\ + "audio/x-tta",\ + "audio/AMR",\ + "audio/ac3",\ + "video/mp2t",\ + "audio/flac",\ + NULL } + +#endif diff --git a/src/celluloid-file-chooser.c b/src/celluloid-file-chooser.c new file mode 100644 index 0000000..64e649c --- /dev/null +++ b/src/celluloid-file-chooser.c @@ -0,0 +1,203 @@ +/* + * Copyright (c) 2017-2020 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include +#include + +#include "celluloid-file-chooser.h" +#include "celluloid-def.h" + +static void +load_last_folder(GtkFileChooser *chooser); + +static void +save_last_folder(GtkFileChooser *chooser); + +static void +response_handler(GtkDialog *dialog, gint response_id, gpointer data); + +static void +load_last_folder(GtkFileChooser *chooser) +{ + GSettings *win_config = g_settings_new(CONFIG_WIN_STATE); + gchar *uri = g_settings_get_string(win_config, "last-folder-uri"); + + if(uri && *uri) + { + gtk_file_chooser_set_current_folder_uri(chooser, uri); + } + + g_free(uri); + g_object_unref(win_config); +} + +static void +save_last_folder(GtkFileChooser *chooser) +{ + gchar *uri = gtk_file_chooser_get_current_folder_uri(chooser); + GSettings *win_config = g_settings_new(CONFIG_WIN_STATE); + + g_settings_set_string(win_config, "last-folder-uri", uri?:""); + + g_free(uri); + g_object_unref(win_config); +} + +static void +response_handler(GtkDialog *dialog, gint response_id, gpointer data) +{ + if(response_id == GTK_RESPONSE_ACCEPT) + { + GSettings *main_config; + gboolean last_folder_enable; + + main_config = g_settings_new(CONFIG_ROOT); + last_folder_enable = g_settings_get_boolean + (main_config, "last-folder-enable"); + + if(last_folder_enable) + { + save_last_folder(GTK_FILE_CHOOSER(dialog)); + } + + g_object_unref(main_config); + } +} + +CelluloidFileChooser * +celluloid_file_chooser_new( const gchar *title, + GtkWindow *parent, + GtkFileChooserAction action ) +{ + CelluloidFileChooser *chooser; + GtkFileChooser *gtk_chooser; + GSettings *main_config; + gboolean last_folder_enable; + + chooser = gtk_file_chooser_native_new(title, parent, action, NULL, NULL); + gtk_chooser = GTK_FILE_CHOOSER(chooser); + main_config = g_settings_new(CONFIG_ROOT); + last_folder_enable = g_settings_get_boolean + (main_config, "last-folder-enable"); + + if(last_folder_enable) + { + load_last_folder(GTK_FILE_CHOOSER(chooser)); + } + + if( action != GTK_FILE_CHOOSER_ACTION_SAVE && + action != GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER ) + { + gtk_file_chooser_set_select_multiple(gtk_chooser, TRUE); + } + + celluloid_file_chooser_set_modal(chooser, TRUE); + gtk_file_chooser_set_local_only(gtk_chooser, FALSE); + gtk_file_chooser_set_do_overwrite_confirmation(gtk_chooser, TRUE); + + g_signal_connect(chooser, "response", G_CALLBACK(response_handler), NULL); + + g_object_unref(main_config); + + return chooser; +} + +void +celluloid_file_chooser_set_default_filters( CelluloidFileChooser *chooser, + gboolean audio, + gboolean video, + gboolean image, + gboolean subtitle ) +{ + GtkFileChooser *gtk_chooser = GTK_FILE_CHOOSER(chooser); + GSList *filters = gtk_file_chooser_list_filters(gtk_chooser); + + for(GSList *iter = filters; iter; iter = g_slist_next(iter)) + { + gtk_file_chooser_remove_filter(gtk_chooser, iter->data); + } + + if(audio || video || image || subtitle) + { + GtkFileFilter *filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, _("All Files")); + gtk_file_filter_add_pattern(filter, "*"); + gtk_file_chooser_add_filter(gtk_chooser, filter); + } + + if(audio && video && image) + { + GtkFileFilter *filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, _("Media Files")); + gtk_file_filter_add_mime_type(filter, "audio/*"); + gtk_file_filter_add_mime_type(filter, "video/*"); + gtk_file_filter_add_mime_type(filter, "images/*"); + gtk_file_chooser_add_filter(gtk_chooser, filter); + gtk_file_chooser_set_filter(gtk_chooser, filter); + } + + if(audio) + { + GtkFileFilter *filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, _("Audio Files")); + gtk_file_filter_add_mime_type(filter, "audio/*"); + gtk_file_chooser_add_filter(gtk_chooser, filter); + } + + if(video) + { + GtkFileFilter *filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, _("Video Files")); + gtk_file_filter_add_mime_type(filter, "video/*"); + gtk_file_chooser_add_filter(gtk_chooser, filter); + } + + if(image) + { + GtkFileFilter *filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, _("Image Files")); + gtk_file_filter_add_mime_type(filter, "images/*"); + gtk_file_chooser_add_filter(gtk_chooser, filter); + } + + if(subtitle) + { + GtkFileFilter *filter = gtk_file_filter_new(); + const gchar *exts[] = SUBTITLE_EXTS; + + gtk_file_filter_set_name(filter, _("Subtitle Files")); + + for(gint i = 0; exts[i]; i++) + { + gchar *pattern = g_strdup_printf("*.%s", exts[i]); + + gtk_file_filter_add_pattern(filter, pattern); + g_free(pattern); + } + + gtk_file_chooser_add_filter(gtk_chooser, filter); + + if(!(audio || video || image)) + { + gtk_file_chooser_set_filter(gtk_chooser, filter); + } + } + + g_slist_free(filters); +} diff --git a/src/celluloid-file-chooser.h b/src/celluloid-file-chooser.h new file mode 100644 index 0000000..0a39656 --- /dev/null +++ b/src/celluloid-file-chooser.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2017-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef FILE_CHOOSER_H +#define FILE_CHOOSER_H + +#include + +G_BEGIN_DECLS + +#define CELLULOID_FILE_CHOOSER GTK_FILE_CHOOSER_NATIVE +#define CelluloidFileChooser GtkFileChooserNative +#define celluloid_file_chooser_destroy(x) gtk_native_dialog_destroy(GTK_NATIVE_DIALOG(x)) +#define celluloid_file_chooser_show(x) gtk_native_dialog_show(GTK_NATIVE_DIALOG(x)) +#define celluloid_file_chooser_set_modal(x, y) gtk_native_dialog_set_modal(GTK_NATIVE_DIALOG(x), y) +#define celluloid_file_chooser_run(x) gtk_native_dialog_run(GTK_NATIVE_DIALOG(x)) + +CelluloidFileChooser * +celluloid_file_chooser_new( const gchar *title, + GtkWindow *parent, + GtkFileChooserAction action ); +void +celluloid_file_chooser_set_default_filters( CelluloidFileChooser *chooser, + gboolean audio, + gboolean video, + gboolean image, + gboolean subtitle ); + +G_END_DECLS + +#endif diff --git a/src/celluloid-header-bar.c b/src/celluloid-header-bar.c new file mode 100644 index 0000000..6f8e606 --- /dev/null +++ b/src/celluloid-header-bar.c @@ -0,0 +1,280 @@ +/* + * Copyright (c) 2016-2021 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include +#include +#include + +#include "celluloid-header-bar.h" +#include "celluloid-menu.h" +#include "celluloid-def.h" + +enum +{ + PROP_0, + PROP_OPEN_BUTTON_ACTIVE, + PROP_MENU_BUTTON_ACTIVE, + N_PROPERTIES +}; + +struct _CelluloidHeaderBar +{ + GtkHeaderBar parent_instance; + GtkWidget *open_btn; + GtkWidget *fullscreen_btn; + GtkWidget *menu_btn; + + gboolean open_popover_visible; + gboolean menu_popover_visible; +}; + +struct _CelluloidHeaderBarClass +{ + GtkHeaderBarClass parent_class; +}; + +G_DEFINE_TYPE(CelluloidHeaderBar, celluloid_header_bar, GTK_TYPE_HEADER_BAR) + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ) +{ + CelluloidHeaderBar *self = CELLULOID_HEADER_BAR(object); + + switch(property_id) + { + case PROP_OPEN_BUTTON_ACTIVE: + self->open_popover_visible = g_value_get_boolean(value); + break; + + case PROP_MENU_BUTTON_ACTIVE: + self->menu_popover_visible = g_value_get_boolean(value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ) +{ + CelluloidHeaderBar *self = CELLULOID_HEADER_BAR(object); + + switch(property_id) + { + case PROP_OPEN_BUTTON_ACTIVE: + g_value_set_boolean(value, self->open_popover_visible); + break; + + case PROP_MENU_BUTTON_ACTIVE: + g_value_set_boolean(value, self->menu_popover_visible); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} +static void +celluloid_header_bar_class_init(CelluloidHeaderBarClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS(klass); + GParamSpec *pspec = NULL; + + object_class->set_property = set_property; + object_class->get_property = get_property; + + pspec = g_param_spec_boolean + ( "open-button-active", + "Open button active", + "Whether or not the open button is active", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property + (object_class, PROP_OPEN_BUTTON_ACTIVE, pspec); + + pspec = g_param_spec_boolean + ( "menu-button-active", + "Menu button active", + "Whether or not the menu button is active", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property + (object_class, PROP_MENU_BUTTON_ACTIVE, pspec); +} + +static void +celluloid_header_bar_init(CelluloidHeaderBar *hdr) +{ + GtkHeaderBar *ghdr; + GSettings *settings; + gboolean csd; + GMenu *open_btn_menu; + GMenu *menu_btn_menu; + GtkWidget *open_icon; + GtkWidget *fullscreen_icon; + GtkWidget *menu_icon; + + ghdr = GTK_HEADER_BAR(hdr); + settings = g_settings_new(CONFIG_ROOT); + csd = g_settings_get_boolean(settings, "csd-enable"); + open_btn_menu = g_menu_new(); + menu_btn_menu = g_menu_new(); + + open_icon = gtk_image_new_from_icon_name + ("list-add-symbolic", GTK_ICON_SIZE_MENU); + fullscreen_icon = gtk_image_new_from_icon_name + ("view-fullscreen-symbolic", GTK_ICON_SIZE_MENU); + menu_icon = gtk_image_new_from_icon_name + ("open-menu-symbolic", GTK_ICON_SIZE_MENU); + + hdr->open_btn = gtk_menu_button_new(); + hdr->fullscreen_btn = gtk_button_new(); + hdr->menu_btn = gtk_menu_button_new(); + hdr->open_popover_visible = FALSE; + hdr->menu_popover_visible = FALSE; + + celluloid_menu_build_open_btn(open_btn_menu, NULL); + celluloid_menu_build_menu_btn(menu_btn_menu, NULL); + + g_object_set(open_icon, "use-fallback", TRUE, NULL); + g_object_set(fullscreen_icon, "use-fallback", TRUE, NULL); + g_object_set(menu_icon, "use-fallback", TRUE, NULL); + + gtk_button_set_image(GTK_BUTTON(hdr->open_btn), open_icon); + gtk_button_set_image(GTK_BUTTON(hdr->fullscreen_btn), fullscreen_icon); + gtk_button_set_image(GTK_BUTTON(hdr->menu_btn), menu_icon); + + gtk_menu_button_set_menu_model + ( GTK_MENU_BUTTON(hdr->open_btn), + G_MENU_MODEL(open_btn_menu) ); + gtk_menu_button_set_menu_model + ( GTK_MENU_BUTTON(hdr->menu_btn), + G_MENU_MODEL(menu_btn_menu) ); + + gtk_widget_set_tooltip_text + (hdr->fullscreen_btn, _("Toggle Fullscreen")); + gtk_actionable_set_action_name + (GTK_ACTIONABLE(hdr->fullscreen_btn), "win.toggle-fullscreen"); + + gtk_widget_set_can_focus(hdr->open_btn, FALSE); + gtk_widget_set_can_focus(hdr->fullscreen_btn, FALSE); + gtk_widget_set_can_focus(hdr->menu_btn, FALSE); + + gtk_header_bar_pack_start(ghdr, hdr->open_btn); + gtk_header_bar_pack_end(ghdr, hdr->menu_btn); + gtk_header_bar_pack_end(ghdr, hdr->fullscreen_btn); + + gtk_widget_set_no_show_all(hdr->fullscreen_btn, TRUE); + gtk_header_bar_set_show_close_button(ghdr, TRUE); + + g_object_bind_property( hdr->open_btn, "active", + hdr, "open-button-active", + G_BINDING_DEFAULT ); + g_object_bind_property( hdr->menu_btn, "active", + hdr, "menu-button-active", + G_BINDING_DEFAULT ); + + gtk_widget_set_visible(hdr->fullscreen_btn, csd); + + g_object_unref(settings); +} + +GtkWidget * +celluloid_header_bar_new() +{ + return GTK_WIDGET(g_object_new(celluloid_header_bar_get_type(), NULL)); +} + +gboolean +celluloid_header_bar_get_open_button_popup_visible(CelluloidHeaderBar *hdr) +{ + GtkMenuButton *btn = GTK_MENU_BUTTON(hdr->open_btn); + GtkWidget *popover = GTK_WIDGET(gtk_menu_button_get_popover(btn)); + + return gtk_widget_is_visible(popover); +} + +void +celluloid_header_bar_set_open_button_popup_visible( CelluloidHeaderBar *hdr, + gboolean visible ) +{ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(hdr->open_btn), visible); +} + +gboolean +celluloid_header_bar_get_menu_button_popup_visible(CelluloidHeaderBar *hdr) +{ + GtkMenuButton *btn = GTK_MENU_BUTTON(hdr->menu_btn); + GtkWidget *popover = GTK_WIDGET(gtk_menu_button_get_popover(btn)); + + return gtk_widget_is_visible(popover); +} + +void +celluloid_header_bar_set_menu_button_popup_visible( CelluloidHeaderBar *hdr, + gboolean visible ) +{ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(hdr->menu_btn), visible); +} + +void +celluloid_header_bar_set_fullscreen_state( CelluloidHeaderBar *hdr, + gboolean fullscreen ) +{ + GtkWidget *image = gtk_button_get_image(GTK_BUTTON(hdr->fullscreen_btn)); + + gtk_image_set_from_icon_name( GTK_IMAGE(image), + fullscreen? + "view-restore-symbolic": + "view-fullscreen-symbolic", + GTK_ICON_SIZE_MENU ); + + gtk_header_bar_set_show_close_button(GTK_HEADER_BAR(hdr), !fullscreen); +} + +void +celluloid_header_bar_update_track_list( CelluloidHeaderBar *hdr, + const GPtrArray *track_list ) +{ + GMenu *menu = g_menu_new(); + + celluloid_menu_build_menu_btn(menu, track_list); + gtk_menu_button_set_menu_model + (GTK_MENU_BUTTON(hdr->menu_btn), G_MENU_MODEL(menu)); +} + +void +celluloid_header_bar_update_disc_list( CelluloidHeaderBar *hdr, + const GPtrArray *disc_list ) +{ + GMenu *menu = g_menu_new(); + + celluloid_menu_build_open_btn(menu, disc_list); + + gtk_menu_button_set_menu_model + (GTK_MENU_BUTTON(hdr->open_btn), G_MENU_MODEL(menu)); +} diff --git a/src/celluloid-header-bar.h b/src/celluloid-header-bar.h new file mode 100644 index 0000000..217aa7c --- /dev/null +++ b/src/celluloid-header-bar.h @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2016-2021 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef HEADER_BAR_H +#define HEADER_BAR_H + +#include +#include +#include + +#define CELLULOID_TYPE_HEADER_BAR (celluloid_header_bar_get_type ()) + +G_DECLARE_FINAL_TYPE(CelluloidHeaderBar, celluloid_header_bar, CELLULOID, HEADER_BAR, GtkHeaderBar) + +GtkWidget * +celluloid_header_bar_new(void); + +gboolean +celluloid_header_bar_get_open_button_popup_visible(CelluloidHeaderBar *hdr); + +void +celluloid_header_bar_set_open_button_popup_visible( CelluloidHeaderBar *hdr, + gboolean visible ); + +gboolean +celluloid_header_bar_get_menu_button_popup_visible(CelluloidHeaderBar *hdr); + +void +celluloid_header_bar_set_menu_button_popup_visible( CelluloidHeaderBar *hdr, + gboolean visible ); + +void +celluloid_header_bar_set_fullscreen_state( CelluloidHeaderBar *hdr, + gboolean fullscreen ); + +void +celluloid_header_bar_update_track_list( CelluloidHeaderBar *hdr, + const GPtrArray *track_list ); + +void +celluloid_header_bar_update_disc_list( CelluloidHeaderBar *hdr, + const GPtrArray *disc_list ); + +#endif diff --git a/src/celluloid-main-window-private.h b/src/celluloid-main-window-private.h new file mode 100644 index 0000000..804dd67 --- /dev/null +++ b/src/celluloid-main-window-private.h @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2019-2020 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef CELLULOID_MAIN_WINDOW_PRIVATE_H +#define CELLULOID_MAIN_WINDOW_PRIVATE_H + +#include + +G_BEGIN_DECLS + +typedef struct _CelluloidMainWindowPrivate CelluloidMainWindowPrivate; + +enum +{ + PROP_0, + PROP_ALWAYS_FLOATING, + N_PROPERTIES +}; + +struct _CelluloidMainWindowPrivate +{ + GtkApplicationWindow parent; + gint width_offset; + gint height_offset; + gint resize_target[2]; + gboolean csd; + gboolean always_floating; + gboolean use_floating_controls; + gboolean fullscreen; + gboolean playlist_visible; + gboolean playlist_first_toggle; + gboolean pre_fs_playlist_visible; + gint playlist_width; + guint resize_tag; + const GPtrArray *track_list; + const GPtrArray *disc_list; + GtkWidget *header_bar; + GtkWidget *main_box; + GtkWidget *vid_area_paned; + GtkWidget *vid_area; + GtkWidget *control_box; + GtkWidget *playlist; +}; + +#define get_private(window) \ + G_TYPE_INSTANCE_GET_PRIVATE(window, CELLULOID_TYPE_MAIN_WINDOW, CelluloidMainWindowPrivate) + +G_END_DECLS + +#endif + diff --git a/src/celluloid-main-window.c b/src/celluloid-main-window.c new file mode 100644 index 0000000..3651968 --- /dev/null +++ b/src/celluloid-main-window.c @@ -0,0 +1,811 @@ +/* + * Copyright (c) 2014-2021 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include +#include +#include +#include + +#include "celluloid-main-window-private.h" +#include "celluloid-def.h" +#include "celluloid-marshal.h" +#include "celluloid-menu.h" +#include "celluloid-application.h" +#include "celluloid-playlist-widget.h" +#include "celluloid-main-window.h" +#include "celluloid-header-bar.h" +#include "celluloid-control-box.h" +#include "celluloid-video-area.h" + +static void +constructed(GObject *object); + +static void +dispose(GObject *object); + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ); + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ); + +static void +seek_handler(GtkWidget *widget, gdouble value, gpointer data); + +static void +button_clicked_handler( CelluloidControlBox *control_box, + const gchar *button, + gpointer data ); + +static void +notify(GObject *object, GParamSpec *pspec); + +static void +resize_video_area_finalize( GtkWidget *widget, + GdkRectangle *allocation, + gpointer data ); + +static gboolean +resize_to_target(gpointer data); + +G_DEFINE_TYPE_WITH_PRIVATE(CelluloidMainWindow, celluloid_main_window, GTK_TYPE_APPLICATION_WINDOW) + +static void +constructed(GObject *object) +{ + CelluloidMainWindowPrivate *priv = get_private(object); + + priv->playlist = celluloid_playlist_widget_new(); + + gtk_widget_show_all(priv->playlist); + gtk_widget_hide(priv->playlist); + gtk_widget_set_no_show_all(priv->playlist, TRUE); + + gtk_widget_show_all(priv->control_box); + gtk_widget_hide(priv->control_box); + gtk_widget_set_no_show_all(priv->control_box, TRUE); + + gtk_paned_pack1( GTK_PANED(priv->vid_area_paned), + priv->vid_area, + TRUE, + TRUE ); + gtk_paned_pack2( GTK_PANED(priv->vid_area_paned), + priv->playlist, + FALSE, + FALSE ); + + G_OBJECT_CLASS(celluloid_main_window_parent_class)->constructed(object); +} + +static void +dispose(GObject *object) +{ + g_source_clear(&get_private(object)->resize_tag); + + G_OBJECT_CLASS(celluloid_main_window_parent_class)->dispose(object); +} + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ) +{ + CelluloidMainWindowPrivate *priv = get_private(object); + + if(property_id == PROP_ALWAYS_FLOATING) + { + priv->always_floating = g_value_get_boolean(value); + } + else + { + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + } +} + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ) +{ + CelluloidMainWindowPrivate *priv = get_private(object); + + if(property_id == PROP_ALWAYS_FLOATING) + { + g_value_set_boolean(value, priv->always_floating); + } + else + { + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + } +} + +static void +seek_handler(GtkWidget *widget, gdouble value, gpointer data) +{ + g_signal_emit_by_name(data, "seek", value); +} + +static void +button_clicked_handler( CelluloidControlBox *control_box, + const gchar *button, + gpointer data ) +{ + gchar *name = g_strconcat("button-clicked::", button, NULL); + + g_signal_emit_by_name(data, name); + g_free(name); +} + +static void +notify(GObject *object, GParamSpec *pspec) +{ + if(g_strcmp0(pspec->name, "always-use-floating-controls") == 0) + { + CelluloidMainWindow *wnd = CELLULOID_MAIN_WINDOW(object); + CelluloidMainWindowPrivate *priv = get_private(wnd); + gboolean floating = priv->always_floating || priv->fullscreen; + + celluloid_main_window_set_use_floating_controls(wnd, floating); + } +} + +static void +resize_video_area_finalize( GtkWidget *widget, + GdkRectangle *allocation, + gpointer data ) +{ + CelluloidMainWindow *wnd = data; + CelluloidMainWindowPrivate *priv = get_private(wnd); + GdkWindow *gdk_window = gtk_widget_get_window(data); + GdkDisplay *display = gdk_display_get_default(); + GdkMonitor *monitor = gdk_display_get_monitor_at_window + (display, gdk_window); + GdkRectangle monitor_geom = {0}; + gint width = allocation->width; + gint height = allocation->height; + gint target_width = priv->resize_target[0]; + gint target_height = priv->resize_target[1]; + + g_signal_handlers_disconnect_by_func + (widget, resize_video_area_finalize, data); + + gdk_monitor_get_geometry(monitor, &monitor_geom); + + /* Adjust resize offset */ + if((width != target_width || height != target_height) + && ( target_width < monitor_geom.width && + target_height < monitor_geom.height ) + && !gtk_window_is_maximized(GTK_WINDOW(wnd)) + && !priv->fullscreen) + { + priv->width_offset += target_width-width; + priv->height_offset += target_height-height; + + g_source_clear(&priv->resize_tag); + priv->resize_tag = g_idle_add_full( G_PRIORITY_HIGH_IDLE, + resize_to_target, + wnd, + NULL ); + } +} + +static gboolean +resize_to_target(gpointer data) +{ + CelluloidMainWindow *wnd = data; + CelluloidMainWindowPrivate *priv = get_private(data); + gint target_width = priv->resize_target[0]; + gint target_height = priv->resize_target[1]; + + g_source_clear(&priv->resize_tag); + + /* Emulate mpv resizing behavior by using GDK_GRAVITY_CENTER */ + gtk_window_set_gravity(GTK_WINDOW(wnd), GDK_GRAVITY_CENTER); + gtk_window_resize( GTK_WINDOW(wnd), + target_width+priv->width_offset, + target_height+priv->height_offset ); + gtk_window_set_gravity(GTK_WINDOW(wnd), GDK_GRAVITY_NORTH_WEST); + + /* Prevent graphical glitches that appear when calling + * celluloid_main_window_resize_video_area() with the current size as + * the target size. + */ + celluloid_playlist_widget_queue_draw + (CELLULOID_PLAYLIST_WIDGET(priv->playlist)); + + return FALSE; +} + +static void +celluloid_main_window_class_init(CelluloidMainWindowClass *klass) +{ + GObjectClass *obj_class = G_OBJECT_CLASS(klass); + GParamSpec *pspec = NULL; + + obj_class->constructed = constructed; + obj_class->dispose = dispose; + obj_class->set_property = set_property; + obj_class->get_property = get_property; + obj_class->notify = notify; + + pspec = g_param_spec_boolean + ( "always-use-floating-controls", + "Always use floating controls", + "Whether or not to use floating controls in windowed mode", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property(obj_class, PROP_ALWAYS_FLOATING, pspec); + + g_signal_new( "button-clicked", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST|G_SIGNAL_DETAILED, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0 ); + g_signal_new( "seek", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__DOUBLE, + G_TYPE_NONE, + 1, + G_TYPE_DOUBLE ); +} + +static void +celluloid_main_window_init(CelluloidMainWindow *wnd) +{ + CelluloidMainWindowPrivate *priv = get_private(wnd); + CelluloidControlBox *vid_area_control_box = NULL; + CelluloidHeaderBar *vid_area_header_bar = NULL; + GSettings *settings = g_settings_new(CONFIG_WIN_STATE); + + priv->csd = FALSE; + priv->always_floating = FALSE; + priv->use_floating_controls = FALSE; + priv->fullscreen = FALSE; + priv->playlist_visible = FALSE; + priv->pre_fs_playlist_visible = FALSE; + priv->playlist_width = PLAYLIST_DEFAULT_WIDTH; + priv->resize_tag = 0; + priv->track_list = NULL; + priv->disc_list = NULL; + priv->header_bar = celluloid_header_bar_new(); + priv->main_box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); + priv->vid_area_paned = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL); + priv->vid_area = celluloid_video_area_new(); + priv->control_box = celluloid_control_box_new(); + + priv->playlist_first_toggle = TRUE; + priv->width_offset = 0; + priv->height_offset = 0; + + vid_area_control_box = celluloid_video_area_get_control_box + (CELLULOID_VIDEO_AREA(priv->vid_area)); + vid_area_header_bar = celluloid_video_area_get_header_bar + (CELLULOID_VIDEO_AREA(priv->vid_area)); + + g_settings_bind( settings, "loop-playlist", + priv->control_box, "loop", + G_SETTINGS_BIND_DEFAULT ); + + g_object_bind_property( wnd, "title", + priv->vid_area, "title", + G_BINDING_DEFAULT ); + + g_object_bind_property( priv->header_bar, "open-button-active", + vid_area_header_bar, "open-button-active", + G_BINDING_DEFAULT ); + g_object_bind_property( priv->header_bar, "menu-button-active", + vid_area_header_bar, "menu-button-active", + G_BINDING_DEFAULT ); + + g_object_bind_property( priv->control_box, "duration", + vid_area_control_box, "duration", + G_BINDING_DEFAULT ); + g_object_bind_property( priv->control_box, "pause", + vid_area_control_box, "pause", + G_BINDING_DEFAULT ); + g_object_bind_property( priv->control_box, "skip-enabled", + vid_area_control_box, "skip-enabled", + G_BINDING_DEFAULT ); + g_object_bind_property( priv->control_box, "show-fullscreen-button", + vid_area_control_box, "show-fullscreen-button", + G_BINDING_DEFAULT ); + g_object_bind_property( priv->control_box, "time-position", + vid_area_control_box, "time-position", + G_BINDING_DEFAULT ); + g_object_bind_property( priv->control_box, "loop", + vid_area_control_box, "loop", + G_BINDING_BIDIRECTIONAL ); + g_object_bind_property( priv->control_box, "volume", + vid_area_control_box, "volume", + G_BINDING_BIDIRECTIONAL ); + g_object_bind_property( priv->control_box, "volume-popup-visible", + vid_area_control_box, "volume-popup-visible", + G_BINDING_BIDIRECTIONAL ); + + g_signal_connect( priv->control_box, + "seek", + G_CALLBACK(seek_handler), + wnd ); + g_signal_connect( priv->control_box, + "button-clicked", + G_CALLBACK(button_clicked_handler), + wnd ); + g_signal_connect( vid_area_control_box, + "seek", + G_CALLBACK(seek_handler), + wnd ); + g_signal_connect( vid_area_control_box, + "button-clicked", + G_CALLBACK(button_clicked_handler), + wnd ); + + gtk_widget_add_events( priv->vid_area, + GDK_ENTER_NOTIFY_MASK + |GDK_LEAVE_NOTIFY_MASK ); + + gtk_window_set_title(GTK_WINDOW(wnd), g_get_application_name()); + + gtk_paned_set_position( GTK_PANED(priv->vid_area_paned), + MAIN_WINDOW_DEFAULT_WIDTH + -PLAYLIST_DEFAULT_WIDTH ); + + gtk_window_set_default_size( GTK_WINDOW(wnd), + MAIN_WINDOW_DEFAULT_WIDTH, + MAIN_WINDOW_DEFAULT_HEIGHT ); + + gtk_box_pack_start + (GTK_BOX(priv->main_box), priv->vid_area_paned, TRUE, TRUE, 0); + gtk_container_add(GTK_CONTAINER(priv->main_box), priv->control_box); + gtk_container_add(GTK_CONTAINER(wnd), priv->main_box); +} + +GtkWidget * +celluloid_main_window_new( GtkApplication *app, + gboolean always_floating ) +{ + return GTK_WIDGET(g_object_new( celluloid_main_window_get_type(), + "application", + app, + "always-use-floating-controls", + always_floating, + NULL )); +} + +CelluloidPlaylistWidget * +celluloid_main_window_get_playlist(CelluloidMainWindow *wnd) +{ + return CELLULOID_PLAYLIST_WIDGET(get_private(wnd)->playlist); +} + +CelluloidControlBox * +celluloid_main_window_get_control_box(CelluloidMainWindow *wnd) +{ + return CELLULOID_CONTROL_BOX(get_private(wnd)->control_box); +} + +CelluloidVideoArea * +celluloid_main_window_get_video_area(CelluloidMainWindow *wnd) +{ + return CELLULOID_VIDEO_AREA(get_private(wnd)->vid_area); +} + +void +celluloid_main_window_set_use_floating_controls( CelluloidMainWindow *wnd, + gboolean floating ) +{ + CelluloidMainWindowPrivate *priv = get_private(wnd); + + if(floating != priv->use_floating_controls) + { + GSettings *settings = g_settings_new(CONFIG_WIN_STATE); + gboolean controls_visible = g_settings_get_boolean + (settings, "show-controls"); + + gtk_widget_set_visible + (priv->control_box, controls_visible && !floating); + celluloid_video_area_set_control_box_visible + (CELLULOID_VIDEO_AREA(priv->vid_area), floating); + + priv->use_floating_controls = floating; + + g_clear_object(&settings); + } +} + +gboolean +celluloid_main_window_get_use_floating_controls(CelluloidMainWindow *wnd) +{ + return get_private(wnd)->use_floating_controls; +} + +void +celluloid_main_window_set_fullscreen(CelluloidMainWindow *wnd, gboolean fullscreen) +{ + CelluloidMainWindowPrivate *priv = get_private(wnd); + + if(fullscreen != priv->fullscreen) + { + CelluloidVideoArea *vid_area = + CELLULOID_VIDEO_AREA(priv->vid_area); + gboolean floating = + priv->always_floating || fullscreen; + gboolean playlist_visible = + !fullscreen && priv->pre_fs_playlist_visible; + + if(fullscreen) + { + gtk_window_fullscreen(GTK_WINDOW(wnd)); + gtk_window_present(GTK_WINDOW(wnd)); + + priv->pre_fs_playlist_visible = priv->playlist_visible; + } + else + { + gtk_window_unfullscreen(GTK_WINDOW(wnd)); + + priv->playlist_visible = priv->pre_fs_playlist_visible; + } + + if(!celluloid_main_window_get_csd_enabled(wnd)) + { + gtk_application_window_set_show_menubar + (GTK_APPLICATION_WINDOW(wnd), !fullscreen); + } + + celluloid_video_area_set_fullscreen_state(vid_area, fullscreen); + celluloid_main_window_set_use_floating_controls(wnd, floating); + gtk_widget_set_visible(priv->playlist, playlist_visible); + + priv->fullscreen = fullscreen; + } +} + +gboolean +celluloid_main_window_get_fullscreen(CelluloidMainWindow *wnd) +{ + return get_private(wnd)->fullscreen; +} + +void +celluloid_main_window_toggle_fullscreen(CelluloidMainWindow *wnd) +{ + celluloid_main_window_set_fullscreen(wnd, !get_private(wnd)->fullscreen); +} + +void +celluloid_main_window_reset(CelluloidMainWindow *wnd) +{ + gtk_window_set_title + (GTK_WINDOW(wnd), g_get_application_name()); + celluloid_control_box_reset + (CELLULOID_CONTROL_BOX(get_private(wnd)->control_box)); +} + +void +celluloid_main_window_save_state(CelluloidMainWindow *wnd) +{ + GSettings *settings; + CelluloidMainWindowPrivate *priv; + gint width; + gint height; + gboolean maximized; + gint handle_pos; + gdouble volume; + + settings = g_settings_new(CONFIG_WIN_STATE); + priv = get_private(wnd); + maximized = gtk_window_is_maximized(GTK_WINDOW(wnd)); + handle_pos = gtk_paned_get_position(GTK_PANED(priv->vid_area_paned)); + + g_object_get(priv->control_box, "volume", &volume, NULL); + gtk_window_get_size(GTK_WINDOW(wnd), &width, &height); + + // Controls visibility does not need to be saved here since + // celluloid_main_window_set_controls_visible() already updates the + // associated GSettings key when it is called. + g_settings_set_boolean(settings, "maximized", maximized); + g_settings_set_double(settings, "volume", volume/100.0); + g_settings_set_boolean(settings, "show-playlist", priv->playlist_visible); + + if(!maximized) + { + g_settings_set_int(settings, "width", width); + g_settings_set_int(settings, "height", height); + } + + if(celluloid_main_window_get_playlist_visible(wnd)) + { + g_settings_set_int( settings, + "playlist-width", + width-handle_pos ); + } + else + { + g_settings_set_int( settings, + "playlist-width", + priv->playlist_width ); + } + + g_clear_object(&settings); +} + +void +celluloid_main_window_load_state(CelluloidMainWindow *wnd) +{ + if(!gtk_widget_get_realized(GTK_WIDGET(wnd))) + { + GSettings *settings = g_settings_new(CONFIG_WIN_STATE); + CelluloidMainWindowPrivate *priv = get_private(wnd); + gint width = g_settings_get_int(settings, "width"); + gint height = g_settings_get_int(settings, "height"); + gboolean maximized = g_settings_get_boolean(settings, "maximized"); + gint handle_pos; + gboolean controls_visible; + gdouble volume; + + priv->playlist_width + = g_settings_get_int(settings, "playlist-width"); + priv->playlist_visible + = g_settings_get_boolean(settings, "show-playlist"); + controls_visible + = g_settings_get_boolean(settings, "show-controls"); + volume = g_settings_get_double(settings, "volume"); + handle_pos = width-(priv->playlist_visible?priv->playlist_width:0); + + g_object_set(priv->control_box, "volume", volume, NULL); + + gtk_widget_set_visible(priv->control_box, controls_visible); + gtk_widget_set_visible(priv->playlist, priv->playlist_visible); + gtk_window_resize(GTK_WINDOW(wnd), width, height); + gtk_paned_set_position + (GTK_PANED(priv->vid_area_paned), handle_pos); + + if(maximized) + { + gtk_window_maximize(GTK_WINDOW(wnd)); + } + + g_clear_object(&settings); + } + else + { + g_critical( "Attempted to call " + "celluloid_main_window_load_state() " + "on realized window" ); + } +} + +void +celluloid_main_window_update_track_list( CelluloidMainWindow *wnd, + const GPtrArray *track_list ) +{ + CelluloidMainWindowPrivate *priv = get_private(wnd); + + priv->track_list = track_list; + + celluloid_video_area_update_track_list + (CELLULOID_VIDEO_AREA(priv->vid_area), track_list); + + if(celluloid_main_window_get_csd_enabled(wnd)) + { + celluloid_header_bar_update_track_list + (CELLULOID_HEADER_BAR(priv->header_bar), track_list); + } + else + { + GtkApplication *app; + GMenu *menu; + + app = gtk_window_get_application(GTK_WINDOW(wnd)); + menu = G_MENU(gtk_application_get_menubar(app)); + + if(menu) + { + g_menu_remove_all(menu); + + celluloid_menu_build_full + (menu, track_list, priv->disc_list); + } + } +} + +void +celluloid_main_window_update_disc_list( CelluloidMainWindow *wnd, + const GPtrArray *disc_list ) +{ + CelluloidMainWindowPrivate *priv = get_private(wnd); + + priv->disc_list = disc_list; + + if(celluloid_main_window_get_csd_enabled(wnd)) + { + celluloid_header_bar_update_disc_list + (CELLULOID_HEADER_BAR(priv->header_bar), disc_list); + celluloid_video_area_update_disc_list + (CELLULOID_VIDEO_AREA(priv->vid_area), disc_list); + } + else + { + GtkApplication *app; + GMenu *menu; + + app = gtk_window_get_application(GTK_WINDOW(wnd)); + menu = G_MENU(gtk_application_get_menubar(app)); + + if(menu) + { + g_menu_remove_all(menu); + + celluloid_menu_build_full + (menu, priv->track_list, disc_list); + } + } +} + +void +celluloid_main_window_resize_video_area( CelluloidMainWindow *wnd, + gint width, + gint height ) +{ + /* As of GNOME 3.36, attempting to resize the window while it is + * maximized will cause the UI to stop rendering. Resizing while + * fullscreen is unaffected, but it doesn't make sense to resize there + * either. + */ + if( !get_private(wnd)->fullscreen && + !gtk_window_is_maximized(GTK_WINDOW(wnd)) ) + { + CelluloidMainWindowPrivate *priv = get_private(wnd); + + g_signal_connect( priv->vid_area, + "size-allocate", + G_CALLBACK(resize_video_area_finalize), + wnd ); + + priv->resize_target[0] = width; + priv->resize_target[1] = height; + resize_to_target(wnd); + + /* The size may not change, so this is needed to ensure that + * resize_video_area_finalize() will be called so that the event handler + * will be disconnected. + */ + gtk_widget_queue_allocate(priv->vid_area); + } +} + +void +celluloid_main_window_enable_csd(CelluloidMainWindow *wnd) +{ + CelluloidMainWindowPrivate *priv = get_private(wnd); + + priv->csd = TRUE; + + gtk_window_set_titlebar(GTK_WINDOW(wnd), priv->header_bar); + gtk_window_set_title(GTK_WINDOW(wnd), g_get_application_name()); +} + +gboolean +celluloid_main_window_get_csd_enabled(CelluloidMainWindow *wnd) +{ + return get_private(wnd)->csd; +} + +void +celluloid_main_window_set_playlist_visible( CelluloidMainWindow *wnd, + gboolean visible ) +{ + CelluloidMainWindowPrivate *priv = get_private(wnd); + + if(visible != priv->playlist_visible && !priv->fullscreen) + { + GdkWindow *gdk_window; + GdkWindowState window_state; + gboolean resize; + gint handle_pos; + gint width; + gint height; + + gdk_window = gtk_widget_get_window(GTK_WIDGET(wnd)); + window_state = gdk_window_get_state(gdk_window); + resize = window_state & + ( GDK_WINDOW_STATE_TOP_RESIZABLE | + GDK_WINDOW_STATE_RIGHT_RESIZABLE | + GDK_WINDOW_STATE_BOTTOM_RESIZABLE | + GDK_WINDOW_STATE_LEFT_RESIZABLE ); + handle_pos = gtk_paned_get_position + (GTK_PANED(priv->vid_area_paned)); + + gtk_window_get_size(GTK_WINDOW(wnd), &width, &height); + + if(priv->playlist_first_toggle && visible) + { + gint new_pos = width-(resize?0:priv->playlist_width); + + gtk_paned_set_position + (GTK_PANED(priv->vid_area_paned), new_pos); + } + else if(!visible) + { + priv->playlist_width = width-handle_pos; + } + + priv->playlist_visible = visible; + gtk_widget_set_visible(priv->playlist, visible); + + if(resize) + { + gint new_width; + + new_width = visible? + width+priv->playlist_width: + handle_pos; + + gtk_window_resize( GTK_WINDOW(wnd), + new_width, + height ); + } + + priv->playlist_first_toggle = FALSE; + } +} + +gboolean +celluloid_main_window_get_playlist_visible(CelluloidMainWindow *wnd) +{ + return gtk_widget_get_visible(GTK_WIDGET(get_private(wnd)->playlist)); +} + +void +celluloid_main_window_set_controls_visible( CelluloidMainWindow *wnd, + gboolean visible ) +{ + GSettings *settings = g_settings_new(CONFIG_WIN_STATE); + CelluloidMainWindowPrivate *priv = get_private(wnd); + const gboolean floating = priv->use_floating_controls; + + gtk_widget_set_visible + (GTK_WIDGET(priv->control_box), visible && !floating); + g_settings_set_boolean + (settings, "show-controls", visible); + + g_clear_object(&settings); +} + +gboolean +celluloid_main_window_get_controls_visible(CelluloidMainWindow *wnd) +{ + return gtk_widget_get_visible(GTK_WIDGET(get_private(wnd)->control_box)); +} diff --git a/src/celluloid-main-window.h b/src/celluloid-main-window.h new file mode 100644 index 0000000..18e35d1 --- /dev/null +++ b/src/celluloid-main-window.h @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2014-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef MAIN_WINDOW_H +#define MAIN_WINDOW_H + +#include +#include +#include + +#include "celluloid-playlist-widget.h" +#include "celluloid-control-box.h" +#include "celluloid-video-area.h" + +G_BEGIN_DECLS + +#define CELLULOID_TYPE_MAIN_WINDOW (celluloid_main_window_get_type ()) + +G_DECLARE_DERIVABLE_TYPE(CelluloidMainWindow, celluloid_main_window, CELLULOID, MAIN_WINDOW, GtkApplicationWindow) + +struct _CelluloidMainWindowClass +{ + GtkApplicationWindowClass parent_class; +}; + +GtkWidget * +celluloid_main_window_new(GtkApplication *app, gboolean always_floating); + +CelluloidPlaylistWidget * +celluloid_main_window_get_playlist(CelluloidMainWindow *wnd); + +CelluloidControlBox * +celluloid_main_window_get_control_box(CelluloidMainWindow *wnd); + +CelluloidVideoArea * +celluloid_main_window_get_video_area(CelluloidMainWindow *wnd); + +void +celluloid_main_window_set_use_floating_controls( CelluloidMainWindow *wnd, + gboolean floating ); + +gboolean +celluloid_main_window_get_use_floating_controls(CelluloidMainWindow *wnd); + +void +celluloid_main_window_set_fullscreen( CelluloidMainWindow *wnd, + gboolean fullscreen ); + +gboolean +celluloid_main_window_get_fullscreen(CelluloidMainWindow *wnd); + +void +celluloid_main_window_toggle_fullscreen(CelluloidMainWindow *wnd); + +void +celluloid_main_window_reset(CelluloidMainWindow *wnd); + +void +celluloid_main_window_save_state(CelluloidMainWindow *wnd); + +void +celluloid_main_window_load_state(CelluloidMainWindow *wnd); + +void +celluloid_main_window_update_track_list( CelluloidMainWindow *wnd, + const GPtrArray *track_list ); + +void +celluloid_main_window_update_disc_list( CelluloidMainWindow *wnd, + const GPtrArray *disc_list ); + +void celluloid_main_window_resize_video_area( CelluloidMainWindow *wnd, + gint width, + gint height ); + +void +celluloid_main_window_enable_csd(CelluloidMainWindow *wnd); + +gboolean +celluloid_main_window_get_csd_enabled(CelluloidMainWindow *wnd); + +void +celluloid_main_window_set_playlist_visible( CelluloidMainWindow *wnd, + gboolean visible ); + +gboolean +celluloid_main_window_get_playlist_visible(CelluloidMainWindow *wnd); + +void +celluloid_main_window_set_controls_visible( CelluloidMainWindow *wnd, + gboolean visible ); + +gboolean +celluloid_main_window_get_controls_visible(CelluloidMainWindow *wnd); + +G_END_DECLS + +#endif diff --git a/src/celluloid-main.c b/src/celluloid-main.c new file mode 100644 index 0000000..04dfd14 --- /dev/null +++ b/src/celluloid-main.c @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2014-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include +#include +#include + +#include "celluloid-application.h" +#include "celluloid-def.h" + +int +main(int argc, char **argv) +{ + GApplicationFlags flags; + CelluloidApplication *app; + gint status; + + flags = G_APPLICATION_HANDLES_COMMAND_LINE|G_APPLICATION_HANDLES_OPEN; + app = celluloid_application_new(APP_ID, flags); + status = g_application_run(G_APPLICATION(app), argc, argv); + + g_object_unref(app); + + return status; +} diff --git a/src/celluloid-menu.c b/src/celluloid-menu.c new file mode 100644 index 0000000..6791a40 --- /dev/null +++ b/src/celluloid-menu.c @@ -0,0 +1,380 @@ +/* + * Copyright (c) 2015-2020 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include +#include +#include +#include + +#include "celluloid-menu.h" +#include "celluloid-common.h" + +static void +split_track_list( const GPtrArray *track_list, + GPtrArray **audio_tracks, + GPtrArray **video_tracks, + GPtrArray **subtitle_tracks ); + +static GMenu * +build_menu_from_track_list( const GPtrArray *list, + const gchar *action, + const gchar *load_action ); + +static GMenu * +build_video_track_menu(const GPtrArray *list); + +static GMenu * +build_audio_track_menu(const GPtrArray *list); + +static GMenu * +build_subtitle_track_menu(const GPtrArray *list); + +static GMenu * +build_disc_menu(const GPtrArray *disc_list); + +static void +split_track_list( const GPtrArray *track_list, + GPtrArray **audio_tracks, + GPtrArray **video_tracks, + GPtrArray **subtitle_tracks ) +{ + guint track_list_len = track_list?track_list->len:0; + + g_assert(audio_tracks && video_tracks && subtitle_tracks); + + /* The contents of these array are shallow-copied from track_list and + * therefore only the container should be freed. + */ + *audio_tracks = g_ptr_array_new(); + *video_tracks = g_ptr_array_new(); + *subtitle_tracks = g_ptr_array_new(); + + for(guint i = 0; i < track_list_len; i++) + { + CelluloidTrack *track = g_ptr_array_index(track_list, i); + + switch(track->type) + { + case TRACK_TYPE_AUDIO: + g_ptr_array_add(*audio_tracks, track); + break; + + case TRACK_TYPE_VIDEO: + g_ptr_array_add(*video_tracks, track); + break; + + case TRACK_TYPE_SUBTITLE: + g_ptr_array_add(*subtitle_tracks, track); + break; + + default: + g_assert_not_reached(); + break; + } + } +} + +static GMenu * +build_menu_from_track_list( const GPtrArray *list, + const gchar *action, + const gchar *load_action ) +{ + GMenu *menu = g_menu_new(); + const glong max_len = 32; + gchar *detailed_action; + + g_assert(list); + + detailed_action = g_strdup_printf("%s(@x 0)", action); + + g_menu_append(menu, _("None"), detailed_action); + g_free(detailed_action); + + for(guint i = 0; i < list->len; i++) + { + CelluloidTrack *entry; + glong entry_title_len; + gchar *entry_title; + gchar *title; + + entry = g_ptr_array_index(list, i); + + /* For simplicity, also dup the default string used when the + * track has no title. + */ + entry_title = g_strdup(entry->title?:_("Unknown")); + + /* Maximum number of bytes per UTF-8 character is 4 */ + entry_title_len = g_utf8_strlen(entry_title, 4*(max_len+1)); + + if(entry_title_len > max_len) + { + /* Truncate the string */ + *(g_utf8_offset_to_pointer(entry_title, max_len)) = '\0'; + } + + detailed_action + = g_strdup_printf( "%s(@x %" G_GINT64_FORMAT ")", + action, + entry->id ); + + /* Ellipsize the title if it's longer than max_len */ + title = g_strdup_printf( entry->lang? + "%s%s (%s)":"%s%s", + entry_title, + (entry_title_len > max_len)? + "…":"", + entry->lang ); + + g_menu_append(menu, title, detailed_action); + + g_free(detailed_action); + g_free(entry_title); + g_free(title); + } + + if(load_action) + { + g_menu_append(menu, _("_Load External…"), load_action); + } + + return menu; +} + +static GMenu * +build_video_track_menu(const GPtrArray *list) +{ + return build_menu_from_track_list + ( list, + "win.set-video-track", + "win.load-track('video-add')" ); +} + +static GMenu * +build_audio_track_menu(const GPtrArray *list) +{ + return build_menu_from_track_list + ( list, + "win.set-audio-track", + "win.load-track('audio-add')" ); +} + +static GMenu * +build_subtitle_track_menu(const GPtrArray *list) +{ + return build_menu_from_track_list + ( list, + "win.set-subtitle-track", + "win.load-track('sub-add')" ); +} + +static GMenu * +build_disc_menu(const GPtrArray *disc_list) +{ + GMenu *menu = g_menu_new(); + + for(guint i = 0; disc_list && i < disc_list->len; i++) + { + CelluloidDisc *disc = g_ptr_array_index(disc_list, i); + gchar *action = g_strdup_printf + ("win.open(('%s', false))", disc->uri); + + g_menu_append(menu, disc->label, action); + g_free(action); + } + + if(!disc_list || disc_list->len == 0) + { + /* Disable the menu item by setting the action to something + * invalid. + */ + g_menu_append(menu, _("No disc found"), "_"); + } + + return menu; +} + +void +celluloid_menu_build_full( GMenu *menu, + const GPtrArray *track_list, + const GPtrArray *disc_list ) +{ + GPtrArray *audio_tracks = NULL; + GPtrArray *video_tracks = NULL; + GPtrArray *subtitle_tracks = NULL; + GMenu *video_menu = NULL; + GMenu *audio_menu = NULL; + GMenu *subtitle_menu = NULL; + GMenu *disc_menu = NULL; + + split_track_list + (track_list, &audio_tracks, &video_tracks, &subtitle_tracks); + + video_menu = build_video_track_menu(video_tracks); + audio_menu = build_audio_track_menu(audio_tracks); + subtitle_menu = build_subtitle_track_menu(subtitle_tracks); + disc_menu = build_disc_menu(disc_list); + + const CelluloidMenuEntry entries[] + = { CELLULOID_MENU_SUBMENU(_("_File"), NULL), + CELLULOID_MENU_ITEM(_("_Open…"), "win.show-open-dialog((false, false))"), + CELLULOID_MENU_ITEM(_("Open _Folder…"), "win.show-open-dialog((true, false))"), + CELLULOID_MENU_ITEM(_("Open _Location…"), "win.show-open-location-dialog(false)"), + CELLULOID_MENU_SUBMENU(_("Open _Disc…"), disc_menu), + CELLULOID_MENU_ITEM(_("_Save Playlist"), "win.save-playlist"), + CELLULOID_MENU_ITEM(_("_New Window"), "app.new-window"), + CELLULOID_MENU_ITEM(_("_Quit"), "win.quit"), + CELLULOID_MENU_SUBMENU(_("_Edit"), NULL), + CELLULOID_MENU_ITEM(_("_Preferences"), "win.show-preferences-dialog"), + CELLULOID_MENU_SUBMENU(_("_Video Track"), video_menu), + CELLULOID_MENU_SUBMENU(_("_Audio Track"), audio_menu), + CELLULOID_MENU_SUBMENU(_("S_ubtitle Track"), subtitle_menu), + CELLULOID_MENU_SUBMENU(_("_View"), NULL), + CELLULOID_MENU_ITEM(_("_Toggle Controls"), "win.toggle-controls"), + CELLULOID_MENU_ITEM(_("_Toggle Playlist"), "win.toggle-playlist"), + CELLULOID_MENU_ITEM(_("_Fullscreen"), "win.toggle-fullscreen"), + CELLULOID_MENU_SUBMENU(_("_Help"), NULL), + CELLULOID_MENU_ITEM(_("_Keyboard Shortcuts"), "win.show-shortcuts-dialog"), + CELLULOID_MENU_ITEM(_("_About Celluloid"), "win.show-about-dialog"), + CELLULOID_MENU_END }; + + celluloid_menu_build_menu(menu, entries, FALSE); + + g_ptr_array_free(audio_tracks, FALSE); + g_ptr_array_free(video_tracks, FALSE); + g_ptr_array_free(subtitle_tracks, FALSE); + g_object_unref(video_menu); + g_object_unref(audio_menu); + g_object_unref(subtitle_menu); + g_object_unref(disc_menu); +} + +void +celluloid_menu_build_menu_btn(GMenu *menu, const GPtrArray *track_list) +{ + GPtrArray *audio_tracks = NULL; + GPtrArray *video_tracks = NULL; + GPtrArray *subtitle_tracks = NULL; + GMenu *video_menu = NULL; + GMenu *audio_menu = NULL; + GMenu *subtitle_menu = NULL; + + split_track_list + (track_list, &audio_tracks, &video_tracks, &subtitle_tracks); + + video_menu = build_video_track_menu(video_tracks); + audio_menu = build_audio_track_menu(audio_tracks); + subtitle_menu = build_subtitle_track_menu(subtitle_tracks); + + const CelluloidMenuEntry entries[] + = { CELLULOID_MENU_SEPARATOR, + CELLULOID_MENU_ITEM(_("_Toggle Controls"), "win.toggle-controls"), + CELLULOID_MENU_SEPARATOR, + CELLULOID_MENU_ITEM(_("_Toggle Playlist"), "win.toggle-playlist"), + CELLULOID_MENU_ITEM(_("_Save Playlist"), "win.save-playlist"), + CELLULOID_MENU_SEPARATOR, + CELLULOID_MENU_SUBMENU(_("_Video Track"), video_menu), + CELLULOID_MENU_SUBMENU(_("_Audio Track"), audio_menu), + CELLULOID_MENU_SUBMENU(_("S_ubtitle Track"), subtitle_menu), + CELLULOID_MENU_SEPARATOR, + CELLULOID_MENU_ITEM(_("_Preferences"), "win.show-preferences-dialog"), + CELLULOID_MENU_ITEM(_("_Keyboard Shortcuts"), "win.show-shortcuts-dialog"), + CELLULOID_MENU_ITEM(_("_About Celluloid"), "win.show-about-dialog"), + CELLULOID_MENU_END }; + + celluloid_menu_build_menu(menu, entries, TRUE); + + g_ptr_array_free(audio_tracks, FALSE); + g_ptr_array_free(video_tracks, FALSE); + g_ptr_array_free(subtitle_tracks, FALSE); + g_object_unref(video_menu); + g_object_unref(audio_menu); + g_object_unref(subtitle_menu); +} + +void +celluloid_menu_build_open_btn(GMenu *menu, const GPtrArray *disc_list) +{ + GMenu *disc_menu = build_disc_menu(disc_list); + + const CelluloidMenuEntry entries[] + = { CELLULOID_MENU_SEPARATOR, + CELLULOID_MENU_ITEM(_("_Open…"), "win.show-open-dialog((false, false))"), + CELLULOID_MENU_ITEM(_("Open _Folder…"), "win.show-open-dialog((true, false))"), + CELLULOID_MENU_ITEM(_("Open _Location…"), "win.show-open-location-dialog(false)"), + CELLULOID_MENU_SUBMENU(_("Open _Disc"), disc_menu), + CELLULOID_MENU_SEPARATOR, + CELLULOID_MENU_ITEM(_("_New Window"), "app.new-window"), + CELLULOID_MENU_END }; + + celluloid_menu_build_menu(menu, entries, TRUE); + + g_clear_object(&disc_menu); +} + +void +celluloid_menu_build_menu( GMenu *menu, + const CelluloidMenuEntry *entries, + gboolean flat ) +{ + GMenu *current_submenu = NULL; + + for( gint i = 0; + entries[i].title || entries[i].action || entries[i].submenu; + i++ ) + { + const gchar *title = entries[i].title; + const gchar *action = entries[i].action; + const GMenu *submenu = entries[i].submenu; + + if(title && (action || submenu)) + { + GMenuItem *item; + + if(submenu) + { + item = g_menu_item_new_submenu + (title, G_MENU_MODEL(submenu)); + } + else + { + item = g_menu_item_new(title, action); + } + + g_menu_append_item(current_submenu, item); + g_object_unref(item); + } + else + { + GMenuModel *model; + + current_submenu = g_menu_new(); + model = G_MENU_MODEL(current_submenu); + + if(flat) + { + g_menu_append_section(menu, title, model); + } + else + { + g_menu_append_submenu(menu, title, model); + } + } + } +} diff --git a/src/celluloid-menu.h b/src/celluloid-menu.h new file mode 100644 index 0000000..d0f68f5 --- /dev/null +++ b/src/celluloid-menu.h @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2015-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef MENU_H +#define MENU_H + +#include +#include + +G_BEGIN_DECLS + +#define CELLULOID_MENU_ITEM(title, action) {title, action, NULL} +#define CELLULOID_MENU_SUBMENU(title, submenu) {title, NULL, submenu} +#define CELLULOID_MENU_SEPARATOR {NULL, "", NULL} +#define CELLULOID_MENU_END {NULL, NULL, NULL} + +struct CelluloidMenuEntry +{ + gchar *title; + gchar *action; + GMenu *submenu; +}; + +typedef struct CelluloidMenuEntry CelluloidMenuEntry; + +void +celluloid_menu_build_full( GMenu *celluloid_menu, + const GPtrArray *track_list, + const GPtrArray *disc_list ); + +void +celluloid_menu_build_menu_btn(GMenu *celluloid_menu, const GPtrArray *track_list); + +void +celluloid_menu_build_open_btn(GMenu *celluloid_menu, const GPtrArray *disc_list); + +void +celluloid_menu_build_app_menu(GMenu *celluloid_menu); + +void +celluloid_menu_build_menu( GMenu *menu, + const CelluloidMenuEntry *entries, + gboolean flat ); + +G_END_DECLS + +#endif diff --git a/src/celluloid-metadata-cache.c b/src/celluloid-metadata-cache.c new file mode 100644 index 0000000..d5ce416 --- /dev/null +++ b/src/celluloid-metadata-cache.c @@ -0,0 +1,382 @@ +/* + * Copyright (c) 2017-2021 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include "celluloid-metadata-cache.h" +#include "celluloid-mpv.h" +#include "celluloid-mpv-wrapper.h" + +struct _CelluloidMetadataCache +{ + GObject parent; + GHashTable *table; + CelluloidMpv *fetcher; + GQueue *fetch_queue; + guint fetch_timeout_id; +}; + +struct _CelluloidMetadataCacheClass +{ + GObjectClass parent_class; +}; + +static CelluloidMetadataCacheEntry * +celluloid_metadata_cache_entry_new(void); + +static void +celluloid_metadata_cache_entry_free(CelluloidMetadataCacheEntry *entry); + +static void +dispose(GObject *object); + +static void +finalize(GObject *object); + +static void +metadata_to_ptr_array(mpv_node metadata, GPtrArray *array); + +static void +mpv_event_notify( CelluloidMpv *mpv, + gint event_id, + gpointer event_data, + gpointer data ); + +static gboolean +fetch_metadata(CelluloidMetadataCache *cache); + +G_DEFINE_TYPE(CelluloidMetadataCache, celluloid_metadata_cache, G_TYPE_OBJECT) + +static CelluloidMetadataCacheEntry * +celluloid_metadata_cache_entry_new(void) +{ + CelluloidMetadataCacheEntry *entry = + g_new0(CelluloidMetadataCacheEntry, 1); + + entry->tags = g_ptr_array_new_with_free_func + ((GDestroyNotify)celluloid_metadata_entry_free); + + return entry; +} + +static void +celluloid_metadata_cache_entry_free(CelluloidMetadataCacheEntry *entry) +{ + if(entry) + { + g_free(entry->title); + g_ptr_array_free(entry->tags, TRUE); + g_free(entry); + } +} + +static void +dispose(GObject *object) +{ + CelluloidMetadataCache *cache = CELLULOID_METADATA_CACHE(object); + + g_source_clear(&cache->fetch_timeout_id); + g_clear_object(&CELLULOID_METADATA_CACHE(object)->fetcher); +} + +static void +finalize(GObject *object) +{ + CelluloidMetadataCache *cache = CELLULOID_METADATA_CACHE(object); + + g_hash_table_unref(cache->table); + g_queue_free_full(cache->fetch_queue, g_free); +} + +static void +metadata_to_ptr_array(mpv_node metadata, GPtrArray *array) +{ + mpv_node_list *list = metadata.u.list; + + g_ptr_array_set_size(array, 0); + + if(metadata.format == MPV_FORMAT_NODE_MAP && list->num > 0) + { + for(gint i = 0; i < list->num; i++) + { + const gchar *key = list->keys[i]; + mpv_node value = list->values[i]; + + if(value.format == MPV_FORMAT_STRING) + { + CelluloidMetadataEntry *entry; + + entry = celluloid_metadata_entry_new + (key, value.u.string); + + g_ptr_array_add(array, entry); + } + else + { + g_warning( "Ignored metadata field %s " + "with unexpected format %d", + key, + value.format ); + } + } + } +} + +static void +mpv_event_notify( CelluloidMpv *mpv, + gint event_id, + gpointer event_data, + gpointer data ) +{ + if(event_id == MPV_EVENT_FILE_LOADED) + { + CelluloidMetadataCache *cache = data; + CelluloidMetadataCacheEntry *entry = NULL; + gchar *path = NULL; + + celluloid_mpv_get_property + (mpv, "path", MPV_FORMAT_STRING, &path); + + if(path) + { + g_debug("Fetched metadata for %s", path); + + entry = g_hash_table_lookup(cache->table, path); + } + + if(entry) + { + const gchar *cmd[] = {"playlist-next", "force", NULL}; + gchar *media_title = NULL; + mpv_node metadata; + + celluloid_mpv_get_property( mpv, + "duration", + MPV_FORMAT_DOUBLE, + &entry->duration ); + celluloid_mpv_get_property( mpv, + "media-title", + MPV_FORMAT_STRING, + &media_title ); + celluloid_mpv_get_property( mpv, + "metadata", + MPV_FORMAT_NODE, + &metadata ); + + if(!entry->title) + { + entry->title = g_strdup(media_title); + } + + metadata_to_ptr_array(metadata, entry->tags); + celluloid_mpv_command(mpv, cmd); + + g_signal_emit_by_name(cache, "update", path); + + mpv_free(media_title); + mpv_free_node_contents(&metadata); + } + + mpv_free(path); + } + else if(event_id == MPV_EVENT_END_FILE) + { + mpv_event_end_file *event = event_data; + + if(event->reason == MPV_END_FILE_REASON_ERROR) + { + g_debug("Failed to fetch metadata"); + } + } +} + +static void +shutdown_handler(CelluloidMpv *mpv, gpointer data) +{ + CelluloidMetadataCache *cache = data; + + g_clear_object(&cache->fetcher); + + if(!g_queue_is_empty(cache->fetch_queue)) + { + g_source_clear(&cache->fetch_timeout_id); + cache->fetch_timeout_id + = g_idle_add((GSourceFunc)fetch_metadata, cache); + } +} + +static gboolean +fetch_metadata(CelluloidMetadataCache *cache) +{ + g_assert(!cache->fetcher); + cache->fetcher = celluloid_mpv_new(0); + + g_signal_connect( cache->fetcher, + "mpv-event-notify", + G_CALLBACK(mpv_event_notify), + cache ); + g_signal_connect( cache->fetcher, + "shutdown", + G_CALLBACK(shutdown_handler), + cache ); + + celluloid_mpv_set_option_string(cache->fetcher, "ao", "null"); + celluloid_mpv_set_option_string(cache->fetcher, "vo", "null"); + celluloid_mpv_set_option_string(cache->fetcher, "idle", "once"); + celluloid_mpv_set_option_string(cache->fetcher, "ytdl", "yes"); + celluloid_mpv_initialize(cache->fetcher); + + for( gchar *uri = g_queue_pop_tail(cache->fetch_queue); + uri; + uri = g_queue_pop_tail(cache->fetch_queue) ) + { + g_debug("Queuing %s for metadata fetch", uri); + celluloid_mpv_load_file(cache->fetcher, uri, TRUE); + g_free(uri); + } + + cache->fetch_timeout_id = 0; + + return G_SOURCE_REMOVE; +} + +static void +celluloid_metadata_cache_class_init(CelluloidMetadataCacheClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS(klass); + + object_class->dispose = dispose; + object_class->finalize = finalize; + + g_signal_new( "update", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, + 1, + G_TYPE_STRING ); +} + +static void +celluloid_metadata_cache_init(CelluloidMetadataCache *cache) +{ + cache->table = g_hash_table_new_full + ( g_str_hash, + g_str_equal, + g_free, + (GDestroyNotify) + celluloid_metadata_cache_entry_free ); + cache->fetcher = NULL; + cache->fetch_queue = g_queue_new(); + cache->fetch_timeout_id = 0; +} + +CelluloidMetadataCache * +celluloid_metadata_cache_new(void) +{ + return g_object_new(celluloid_metadata_cache_get_type(), NULL); +} + +void +celluloid_metadata_cache_ref_entry( CelluloidMetadataCache *cache, + const gchar *uri ) +{ + celluloid_metadata_cache_lookup(cache, uri)->references++; +} + +void +celluloid_metadata_cache_unref_entry( CelluloidMetadataCache *cache, + const gchar *uri ) +{ + CelluloidMetadataCacheEntry *entry = + g_hash_table_lookup(cache->table, uri); + + if(entry && --entry->references == 0) + { + g_hash_table_remove(cache->table, uri); + } +} + +void +celluloid_metadata_cache_load_playlist( CelluloidMetadataCache *cache, + const GPtrArray *playlist ) +{ + CelluloidMetadataCacheEntry *entry = NULL; + GHashTableIter iter; + + g_hash_table_iter_init(&iter, cache->table); + + /* First, set the refrence count for all entries to zero */ + while(g_hash_table_iter_next(&iter, NULL, (gpointer)&entry)) + { + g_assert(entry); + entry->references = 0; + } + + /* Then ref all entries in the playlist. This sets the reference count + * to the number of times the entry appears in the playlist. + */ + for(guint i = 0; i < playlist->len; i++) + { + CelluloidPlaylistEntry *entry = g_ptr_array_index(playlist, i); + celluloid_metadata_cache_ref_entry(cache, entry->filename); + } + + g_hash_table_iter_init(&iter, cache->table); + + /* Remove all entries that with refrence count of zero, which means that + * the entry no longer exists in the playlist. + */ + while(g_hash_table_iter_next(&iter, NULL, (gpointer)&entry)) + { + g_assert(entry); + + if(entry->references == 0) + { + g_hash_table_iter_remove(&iter); + } + } +} + +CelluloidMetadataCacheEntry * +celluloid_metadata_cache_lookup( CelluloidMetadataCache *cache, + const gchar *uri ) +{ + CelluloidMetadataCacheEntry *entry = + g_hash_table_lookup(cache->table, uri); + + if(!entry) + { + entry = celluloid_metadata_cache_entry_new(); + + g_hash_table_insert(cache->table, g_strdup(uri), entry); + + if(!cache->fetcher && g_queue_is_empty(cache->fetch_queue)) + { + g_source_clear(&cache->fetch_timeout_id); + cache->fetch_timeout_id + = g_idle_add((GSourceFunc)fetch_metadata, cache); + } + + g_queue_push_head(cache->fetch_queue, g_strdup(uri)); + } + + return entry; +} diff --git a/src/celluloid-metadata-cache.h b/src/celluloid-metadata-cache.h new file mode 100644 index 0000000..c252efd --- /dev/null +++ b/src/celluloid-metadata-cache.h @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2017-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef METADATA_CACHE +#define METADATA_CACHE + +#include + +G_BEGIN_DECLS + +typedef struct _CelluloidMetadataCacheEntry CelluloidMetadataCacheEntry; + +struct _CelluloidMetadataCacheEntry +{ + gint references; + gchar *title; + gdouble duration; + GPtrArray *tags; +}; + +#define CELLULOID_TYPE_METADATA_CACHE (celluloid_metadata_cache_get_type()) + +G_DECLARE_FINAL_TYPE(CelluloidMetadataCache, celluloid_metadata_cache, CELLULOID, METADATA_CACHE, GObject) + +CelluloidMetadataCache * +celluloid_metadata_cache_new(void); + +void +celluloid_metadata_cache_ref_entry( CelluloidMetadataCache *cache, + const gchar *uri ); + +void +celluloid_metadata_cache_unref_entry( CelluloidMetadataCache *cache, + const gchar *uri ); + +void +celluloid_metadata_cache_load_playlist( CelluloidMetadataCache *cache, + const GPtrArray *playlist ); + +CelluloidMetadataCacheEntry * +celluloid_metadata_cache_lookup( CelluloidMetadataCache *cache, + const gchar *uri ); + +G_END_DECLS + +#endif diff --git a/src/celluloid-model.c b/src/celluloid-model.c new file mode 100644 index 0000000..31a9613 --- /dev/null +++ b/src/celluloid-model.c @@ -0,0 +1,1224 @@ +/* + * Copyright (c) 2017-2021 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include + +#include "celluloid-model.h" +#include "celluloid-marshal.h" +#include "celluloid-mpv-wrapper.h" +#include "celluloid-option-parser.h" +#include "celluloid-def.h" + +enum +{ + PROP_INVALID, + PROP_AID, + PROP_VID, + PROP_SID, + PROP_CHAPTERS, + PROP_CORE_IDLE, + PROP_IDLE_ACTIVE, + PROP_BORDER, + PROP_FULLSCREEN, + PROP_PAUSE, + PROP_LOOP_FILE, + PROP_LOOP_PLAYLIST, + PROP_SHUFFLE, + PROP_DURATION, + PROP_MEDIA_TITLE, + PROP_PLAYLIST_COUNT, + PROP_PLAYLIST_POS, + PROP_SPEED, + PROP_VOLUME, + PROP_VOLUME_MAX, + PROP_WINDOW_MAXIMIZED, + PROP_WINDOW_SCALE, + PROP_DISPLAY_FPS, + N_PROPERTIES +}; + +struct _CelluloidModel +{ + CelluloidPlayer parent; + gchar *extra_options; + GPtrArray *metadata; + GPtrArray *track_list; + gboolean update_mpv_properties; + gboolean resetting; + gchar *aid; + gchar *vid; + gchar *sid; + gint64 chapters; + gboolean core_idle; + gboolean idle_active; + gboolean border; + gboolean fullscreen; + gboolean pause; + gchar *loop_file; + gchar *loop_playlist; + gboolean shuffle; + gdouble duration; + gchar *media_title; + gint64 playlist_count; + gint64 playlist_pos; + gdouble speed; + gdouble volume; + gdouble volume_max; + gboolean window_maximized; + gdouble window_scale; + gdouble display_fps; +}; + +struct _CelluloidModelClass +{ + GObjectClass parent_class; +}; + +static gboolean +extra_options_contains(CelluloidModel *model, const gchar *option); + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ); + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ); + +static void +dispose(GObject *object); + +static void +finalize(GObject *object); + +static void +set_mpv_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ); + +static void +g_value_set_by_type(GValue *gvalue, GType type, gpointer value); + +static GParamSpec * +g_param_spec_by_type( const gchar *name, + const gchar *nick, + const gchar *blurb, + GType type, + GParamFlags flags ); + +static gboolean +emit_frame_ready(gpointer data); + +static void +render_update_callback(gpointer render_ctx); + +static void +mpv_prop_change_handler( CelluloidMpv *mpv, + const gchar *name, + gpointer value, + gpointer data ); + +G_DEFINE_TYPE(CelluloidModel, celluloid_model, CELLULOID_TYPE_PLAYER) + +static gboolean +extra_options_contains(CelluloidModel *model, const gchar *option) +{ + gboolean result = FALSE; + gchar *extra_options = NULL; + const gchar *cur = NULL; + + g_object_get(model, "extra-options", &extra_options, NULL); + + cur = extra_options; + + while(cur && *cur && !result) + { + gchar *key = NULL; + gchar *value = NULL; + + cur = parse_option(cur, &key, &value); + + if(key && *key) + { + result |= g_strcmp0(key, option) == 0; + } + else + { + g_warning("Failed to parse options"); + + cur = NULL; + } + + g_free(key); + g_free(value); + } + + g_free(extra_options); + + return result; +} + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ) +{ + CelluloidModel *self = CELLULOID_MODEL(object); + + switch(property_id) + { + case PROP_AID: + g_free(self->aid); + self->aid = g_value_dup_string(value); + break; + + case PROP_VID: + g_free(self->vid); + self->vid = g_value_dup_string(value); + break; + + case PROP_SID: + g_free(self->sid); + self->sid = g_value_dup_string(value); + break; + + case PROP_CHAPTERS: + self->chapters = g_value_get_int64(value); + break; + + case PROP_CORE_IDLE: + self->core_idle = g_value_get_boolean(value); + + if(self->resetting) + { + if(self->pause) + { + celluloid_model_pause(self); + } + else + { + celluloid_model_play(self); + } + + self->resetting = FALSE; + } + break; + + case PROP_IDLE_ACTIVE: + self->idle_active = g_value_get_boolean(value); + + if(self->idle_active) + { + g_object_notify(object, "playlist-pos"); + } + break; + + case PROP_BORDER: + self->border = g_value_get_boolean(value); + break; + + case PROP_FULLSCREEN: + self->fullscreen = g_value_get_boolean(value); + break; + + case PROP_PAUSE: + self->pause = g_value_get_boolean(value); + break; + + case PROP_LOOP_FILE: + g_free(self->loop_file); + self->loop_file = g_value_dup_string(value); + break; + + case PROP_LOOP_PLAYLIST: + g_free(self->loop_playlist); + self->loop_playlist = g_value_dup_string(value); + break; + + case PROP_SHUFFLE: + { + gboolean ready = FALSE; + + self->shuffle = g_value_get_boolean(value); + g_object_get(self, "ready", &ready, NULL); + + if(ready) + { + if(self->shuffle) + { + celluloid_model_shuffle_playlist(self); + } + else + { + celluloid_model_unshuffle_playlist(self); + } + } + } + break; + + case PROP_DURATION: + self->duration = g_value_get_double(value); + break; + + case PROP_MEDIA_TITLE: + g_free(self->media_title); + self->media_title = g_value_dup_string(value); + break; + + case PROP_PLAYLIST_COUNT: + self->playlist_count = g_value_get_int64(value); + break; + + case PROP_PLAYLIST_POS: + self->playlist_pos = g_value_get_int64(value); + break; + + case PROP_SPEED: + self->speed = g_value_get_double(value); + break; + + case PROP_VOLUME: + self->volume = g_value_get_double(value); + break; + + case PROP_VOLUME_MAX: + self->volume_max = g_value_get_double(value); + break; + + case PROP_WINDOW_MAXIMIZED: + self->window_maximized = g_value_get_boolean(value); + break; + + case PROP_WINDOW_SCALE: + self->window_scale = g_value_get_double(value); + break; + + case PROP_DISPLAY_FPS: + self->display_fps = g_value_get_double(value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } + + /* Do not propagate changes from mpv back to itself */ + if(self->update_mpv_properties) + { + set_mpv_property(object, property_id, value, pspec); + } +} + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ) +{ + CelluloidModel *self = CELLULOID_MODEL(object); + + switch(property_id) + { + case PROP_AID: + g_value_set_string(value, self->aid); + break; + + case PROP_VID: + g_value_set_string(value, self->vid); + break; + + case PROP_SID: + g_value_set_string(value, self->sid); + break; + + case PROP_CHAPTERS: + g_value_set_int64(value, self->chapters); + break; + + case PROP_CORE_IDLE: + g_value_set_boolean(value, self->core_idle); + break; + + case PROP_IDLE_ACTIVE: + g_value_set_boolean(value, self->idle_active); + break; + + case PROP_BORDER: + g_value_set_boolean(value, self->border); + break; + + case PROP_FULLSCREEN: + g_value_set_boolean(value, self->fullscreen); + break; + + case PROP_PAUSE: + g_value_set_boolean(value, self->pause); + break; + + case PROP_LOOP_FILE: + g_value_set_string(value, self->loop_file); + break; + + case PROP_LOOP_PLAYLIST: + g_value_set_string(value, self->loop_playlist); + break; + + case PROP_SHUFFLE: + g_value_set_boolean(value, self->shuffle); + break; + + case PROP_DURATION: + g_value_set_double(value, self->duration); + break; + + case PROP_MEDIA_TITLE: + g_value_set_string(value, self->media_title); + break; + + case PROP_PLAYLIST_COUNT: + g_value_set_int64(value, self->playlist_count); + break; + + case PROP_PLAYLIST_POS: + g_value_set_int64(value, self->idle_active?0:self->playlist_pos); + break; + + case PROP_SPEED: + g_value_set_double(value, self->speed); + break; + + case PROP_VOLUME: + g_value_set_double(value, self->volume); + break; + + case PROP_VOLUME_MAX: + g_value_set_double(value, self->volume_max); + break; + + case PROP_WINDOW_MAXIMIZED: + g_value_set_boolean(value, self->window_maximized); + break; + + case PROP_WINDOW_SCALE: + g_value_set_double(value, self->window_scale); + break; + + case PROP_DISPLAY_FPS: + g_value_set_double(value, self->display_fps); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static void +dispose(GObject *object) +{ + CelluloidModel *model = CELLULOID_MODEL(object); + CelluloidMpv *mpv = CELLULOID_MPV(model); + + if(mpv) + { + celluloid_mpv_set_render_update_callback(mpv, NULL, NULL); + while(g_source_remove_by_user_data(model)); + } + + g_free(model->extra_options); + + G_OBJECT_CLASS(celluloid_model_parent_class)->dispose(object); +} + +static void finalize(GObject *object) +{ + CelluloidModel *model = CELLULOID_MODEL(object); + + g_free(model->aid); + g_free(model->vid); + g_free(model->sid); + g_free(model->loop_file); + g_free(model->loop_playlist); + g_free(model->media_title); + + G_OBJECT_CLASS(celluloid_model_parent_class)->finalize(object); +} + +static void +set_mpv_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ) +{ + CelluloidModel *self = CELLULOID_MODEL(object); + CelluloidMpv *mpv = CELLULOID_MPV(self); + + switch(property_id) + { + case PROP_AID: + celluloid_mpv_set_property( mpv, + "aid", + MPV_FORMAT_STRING, + &self->aid ); + break; + + case PROP_VID: + celluloid_mpv_set_property( mpv, + "vid", + MPV_FORMAT_STRING, + &self->vid ); + break; + + case PROP_SID: + celluloid_mpv_set_property( mpv, + "sid", + MPV_FORMAT_STRING, + &self->sid ); + break; + + case PROP_BORDER: + celluloid_mpv_set_property( mpv, + "border", + MPV_FORMAT_FLAG, + &self->border ); + break; + + case PROP_FULLSCREEN: + celluloid_mpv_set_property( mpv, + "fullscreen", + MPV_FORMAT_FLAG, + &self->fullscreen ); + break; + + case PROP_PAUSE: + celluloid_mpv_set_property( mpv, + "pause", + MPV_FORMAT_FLAG, + &self->pause ); + break; + + case PROP_LOOP_FILE: + celluloid_mpv_set_property( mpv, + "loop-file", + MPV_FORMAT_STRING, + &self->loop_file ); + break; + + case PROP_LOOP_PLAYLIST: + celluloid_mpv_set_property( mpv, + "loop-playlist", + MPV_FORMAT_STRING, + &self->loop_playlist ); + break; + + case PROP_MEDIA_TITLE: + celluloid_mpv_set_property( mpv, + "media-title", + MPV_FORMAT_INT64, + &self->media_title ); + break; + + case PROP_PLAYLIST_POS: + celluloid_mpv_set_property( mpv, + "playlist-pos", + MPV_FORMAT_INT64, + &self->playlist_pos ); + break; + + case PROP_SPEED: + celluloid_mpv_set_property( mpv, + "speed", + MPV_FORMAT_DOUBLE, + &self->speed ); + break; + + case PROP_VOLUME: + celluloid_mpv_set_property( mpv, + "volume", + MPV_FORMAT_DOUBLE, + &self->volume ); + break; + + case PROP_VOLUME_MAX: + celluloid_mpv_set_property( mpv, + "volume-max", + MPV_FORMAT_DOUBLE, + &self->volume_max ); + break; + + case PROP_WINDOW_MAXIMIZED: + celluloid_mpv_set_property( mpv, + "window-maximized", + MPV_FORMAT_FLAG, + &self->window_maximized ); + break; + + case PROP_WINDOW_SCALE: + celluloid_mpv_set_property( mpv, + "window-scale", + MPV_FORMAT_DOUBLE, + &self->window_scale ); + break; + + case PROP_DISPLAY_FPS: + celluloid_mpv_set_property( mpv, + "display-fps", + MPV_FORMAT_DOUBLE, + &self->display_fps ); + break; + } +} + +static void +g_value_set_by_type(GValue *gvalue, GType type, gpointer value) +{ + g_value_unset(gvalue); + g_value_init(gvalue, type); + + switch(type) + { + case G_TYPE_STRING: + g_value_set_string(gvalue, *((const gchar **)value)); + break; + + case G_TYPE_BOOLEAN: + g_value_set_boolean(gvalue, *((gboolean *)value)); + break; + + case G_TYPE_INT64: + g_value_set_int64(gvalue, *((gint64 *)value)); + break; + + case G_TYPE_DOUBLE: + g_value_set_double(gvalue, *((gdouble *)value)); + break; + + case G_TYPE_POINTER: + g_value_set_pointer(gvalue, *((gpointer *)value)); + break; + + default: + g_assert_not_reached(); + break; + } +} + +static GParamSpec * +g_param_spec_by_type( const gchar *name, + const gchar *nick, + const gchar *blurb, + GType type, + GParamFlags flags ) +{ + GParamSpec *result = NULL; + + switch(type) + { + case G_TYPE_STRING: + result = g_param_spec_string(name, nick, blurb, NULL, flags); + break; + + case G_TYPE_BOOLEAN: + result = g_param_spec_boolean(name, nick, blurb, FALSE, flags); + break; + + case G_TYPE_INT64: + result = g_param_spec_int64( name, + nick, + blurb, + G_MININT64, + G_MAXINT64, + 0, + flags ); + break; + + case G_TYPE_DOUBLE: + result = g_param_spec_double( name, + nick, + blurb, + -G_MAXDOUBLE, + G_MAXDOUBLE, + 0.0, + flags ); + break; + + case G_TYPE_POINTER: + result = g_param_spec_pointer(name, nick, blurb, flags); + break; + + default: + g_assert_not_reached(); + break; + } + + return result; +} + +static gboolean +emit_frame_ready(gpointer data) +{ + CelluloidModel *model = data; + guint64 flags = celluloid_mpv_render_context_update(CELLULOID_MPV(model)); + + if(flags&MPV_RENDER_UPDATE_FRAME) + { + g_signal_emit_by_name(model, "frame-ready"); + } + + return FALSE; +} + +static void +render_update_callback(gpointer data) +{ + g_idle_add_full( G_PRIORITY_HIGH, + emit_frame_ready, + data, + NULL ); +} + +static void +mpv_prop_change_handler( CelluloidMpv *mpv, + const gchar *name, + gpointer value, + gpointer data ) +{ + if( g_strcmp0(name, "playlist") != 0 && + g_strcmp0(name, "metadata") != 0 && + g_strcmp0(name, "track-list") != 0 ) + { + GObjectClass *klass; + GParamSpec *pspec; + GValue gvalue = G_VALUE_INIT; + + klass = G_TYPE_INSTANCE_GET_CLASS + (data, CELLULOID_TYPE_MODEL, GObjectClass); + pspec = g_object_class_find_property(klass, name); + + if(pspec && value) + { + CELLULOID_MODEL(data)->update_mpv_properties = FALSE; + + g_value_set_by_type(&gvalue, pspec->value_type, value); + g_object_set_property(data, name, &gvalue); + + CELLULOID_MODEL(data)->update_mpv_properties = TRUE; + } + } +} + +static void +celluloid_model_class_init(CelluloidModelClass *klass) +{ + /* The "no" value of aid, vid, and sid cannot be represented with an + * int64, so we need to observe them as string to receive notifications + * for all possible values. + */ + const struct + { + const gchar *name; + guint id; + GType type; + } + mpv_props[] = { {"aid", PROP_AID, G_TYPE_STRING}, + {"vid", PROP_VID, G_TYPE_STRING}, + {"sid", PROP_SID, G_TYPE_STRING}, + {"chapters", PROP_CHAPTERS, G_TYPE_INT64}, + {"core-idle", PROP_CORE_IDLE, G_TYPE_BOOLEAN}, + {"idle-active", PROP_IDLE_ACTIVE, G_TYPE_BOOLEAN}, + {"border", PROP_BORDER, G_TYPE_BOOLEAN}, + {"fullscreen", PROP_FULLSCREEN, G_TYPE_BOOLEAN}, + {"pause", PROP_PAUSE, G_TYPE_BOOLEAN}, + {"loop-file", PROP_LOOP_FILE, G_TYPE_STRING}, + {"loop-playlist", PROP_LOOP_PLAYLIST, G_TYPE_STRING}, + {"duration", PROP_DURATION, G_TYPE_DOUBLE}, + {"media-title", PROP_MEDIA_TITLE, G_TYPE_STRING}, + {"playlist-count", PROP_PLAYLIST_COUNT, G_TYPE_INT64}, + {"playlist-pos", PROP_PLAYLIST_POS, G_TYPE_INT64}, + {"speed", PROP_SPEED, G_TYPE_DOUBLE}, + {"volume", PROP_VOLUME, G_TYPE_DOUBLE}, + {"volume-max", PROP_VOLUME_MAX, G_TYPE_DOUBLE}, + {"window-maximized", PROP_WINDOW_MAXIMIZED, G_TYPE_BOOLEAN}, + {"window-scale", PROP_WINDOW_SCALE, G_TYPE_DOUBLE}, + {"display-fps", PROP_DISPLAY_FPS, G_TYPE_DOUBLE}, + {NULL, PROP_INVALID, 0} }; + + GObjectClass *obj_class = G_OBJECT_CLASS(klass); + GParamSpec *pspec = NULL; + + obj_class->set_property = set_property; + obj_class->get_property = get_property; + obj_class->dispose = dispose; + obj_class->finalize = finalize; + + for(int i = 0; mpv_props[i].name; i++) + { + pspec = g_param_spec_by_type( mpv_props[i].name, + mpv_props[i].name, + mpv_props[i].name, + mpv_props[i].type, + G_PARAM_READWRITE ); + g_object_class_install_property + (obj_class, mpv_props[i].id, pspec); + } + + pspec = g_param_spec_boolean + ( "shuffle", + "Shuffle", + "Whether or not the playlist is shuffled", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property(obj_class, PROP_SHUFFLE, pspec); + + g_signal_new( "playback-restart", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0 ); + g_signal_new( "frame-ready", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0 ); +} + +static void +celluloid_model_init(CelluloidModel *model) +{ + model->extra_options = NULL; + model->metadata = NULL; + model->track_list = NULL; + model->update_mpv_properties = TRUE; + model->resetting = FALSE; + model->aid = NULL; + model->vid = NULL; + model->sid = NULL; + model->chapters = 0; + model->core_idle = FALSE; + model->idle_active = FALSE; + model->border = FALSE; + model->fullscreen = FALSE; + model->pause = TRUE; + model->loop_file = NULL; + model->loop_playlist = NULL; + model->shuffle = FALSE; + model->duration = 0.0; + model->media_title = NULL; + model->playlist_count = 0; + model->playlist_pos = 0; + model->speed = 1.0; + model->volume = 1.0; + model->volume_max = 100.0; + model->window_maximized = FALSE; + model->window_scale = 1.0; + model->display_fps = 0.0; +} + +CelluloidModel * +celluloid_model_new(gint64 wid) +{ + const GType type = celluloid_model_get_type(); + CelluloidModel *model = CELLULOID_MODEL(g_object_new( type, + "wid", wid, + NULL )); + + g_signal_connect( model, + "mpv-property-changed", + G_CALLBACK(mpv_prop_change_handler), + model ); + + return model; +} + +void +celluloid_model_initialize(CelluloidModel *model) +{ + CelluloidMpv *mpv = CELLULOID_MPV(model); + GSettings *win_settings = g_settings_new(CONFIG_WIN_STATE); + + celluloid_mpv_initialize + (mpv); + celluloid_mpv_set_render_update_callback + (mpv, render_update_callback, model); + + if(!extra_options_contains(model, "volume")) + { + gdouble volume = g_settings_get_double(win_settings, "volume")*100; + + g_debug("Setting volume to %f", volume); + g_object_set(model, "volume", volume, NULL); + } + + if(extra_options_contains(model, "shuffle")) + { + // Sync the property to match mpv's + CelluloidMpv *mpv = + CELLULOID_MPV(model); + gboolean shuffle = + celluloid_mpv_get_property_flag(mpv, "shuffle"); + + g_object_set(model, "shuffle", shuffle, NULL); + } + + if(extra_options_contains(model, "loop-playlist")) + { + // Sync the property to match mpv's + CelluloidMpv *mpv = + CELLULOID_MPV(model); + gchar *loop_playlist = + celluloid_mpv_get_property_string(mpv, "loop-playlist"); + + g_object_set(model, "loop-playlist", loop_playlist, NULL); + + mpv_free(loop_playlist); + } + else + { + const gchar *loop_playlist = + g_settings_get_boolean(win_settings, "loop-playlist") ? + "inf" : "no"; + + g_object_set(model, "loop-playlist", loop_playlist, NULL); + } + + g_object_unref(win_settings); +} + +void +celluloid_model_reset(CelluloidModel *model) +{ + model->resetting = TRUE; + + celluloid_mpv_reset(CELLULOID_MPV(model)); +} + +void +celluloid_model_quit(CelluloidModel *model) +{ + celluloid_mpv_quit(CELLULOID_MPV(model)); +} + +void +celluloid_model_mouse(CelluloidModel *model, gint x, gint y) +{ + gchar *x_str = g_strdup_printf("%d", x); + gchar *y_str = g_strdup_printf("%d", y); + const gchar *cmd[] = {"mouse", x_str, y_str, NULL}; + + g_debug("Set mouse location to (%s, %s)", x_str, y_str); + celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); + + g_free(x_str); + g_free(y_str); +} + +void +celluloid_model_key_down(CelluloidModel *model, const gchar* keystr) +{ + const gchar *cmd[] = {"keydown", keystr, NULL}; + + g_debug("Sent '%s' key down to mpv", keystr); + celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); +} + +void +celluloid_model_key_up(CelluloidModel *model, const gchar* keystr) +{ + const gchar *cmd[] = {"keyup", keystr, NULL}; + + g_debug("Sent '%s' key up to mpv", keystr); + celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); +} + +void +celluloid_model_key_press(CelluloidModel *model, const gchar* keystr) +{ + const gchar *cmd[] = {"keypress", keystr, NULL}; + + g_debug("Sent '%s' key press to mpv", keystr); + celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); +} + +void +celluloid_model_reset_keys(CelluloidModel *model) +{ + // As of Sep 20, 2019, mpv will crash if the command doesn't have any + // arguments. The empty string is there to work around the issue. + const gchar *cmd[] = {"keyup", "", NULL}; + + g_debug("Sent global key up to mpv"); + celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); +} + +void +celluloid_model_play(CelluloidModel *model) +{ + celluloid_mpv_set_property_flag(CELLULOID_MPV(model), "pause", FALSE); +} + +void +celluloid_model_pause(CelluloidModel *model) +{ + celluloid_mpv_set_property_flag(CELLULOID_MPV(model), "pause", TRUE); +} + +void +celluloid_model_stop(CelluloidModel *model) +{ + const gchar *cmd[] = {"stop", NULL}; + + celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); +} + +void +celluloid_model_forward(CelluloidModel *model) +{ + const gchar *cmd[] = {"seek", "10", NULL}; + + celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); +} + +void +celluloid_model_rewind(CelluloidModel *model) +{ + const gchar *cmd[] = {"seek", "-10", NULL}; + + celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); +} + +void +celluloid_model_next_chapter(CelluloidModel *model) +{ + const gchar *cmd[] = {"osd-msg", "cycle", "chapter", NULL}; + + celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); +} + +void +celluloid_model_previous_chapter(CelluloidModel *model) +{ + const gchar *cmd[] = {"osd-msg", "cycle", "chapter", "down", NULL}; + + celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); +} + +void +celluloid_model_next_playlist_entry(CelluloidModel *model) +{ + const gchar *cmd[] = {"osd-msg", "playlist-next", "weak", NULL}; + + celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); +} + +void +celluloid_model_previous_playlist_entry(CelluloidModel *model) +{ + const gchar *cmd[] = {"osd-msg", "playlist-prev", "weak", NULL}; + + celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); +} + +void +celluloid_model_shuffle_playlist(CelluloidModel *model) +{ + const gchar *cmd[] = {"osd-msg", "playlist-shuffle", NULL}; + + celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); +} + +void +celluloid_model_unshuffle_playlist(CelluloidModel *model) +{ + const gchar *cmd[] = {"osd-msg", "playlist-unshuffle", NULL}; + + celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); +} + +void +celluloid_model_seek(CelluloidModel *model, gdouble value) +{ + celluloid_mpv_set_property(CELLULOID_MPV(model), "time-pos", MPV_FORMAT_DOUBLE, &value); +} + +void +celluloid_model_seek_offset(CelluloidModel *model, gdouble offset) +{ + const gchar *cmd[] = {"seek", NULL, NULL}; + gchar buf[G_ASCII_DTOSTR_BUF_SIZE]; + + g_ascii_dtostr(buf, G_ASCII_DTOSTR_BUF_SIZE, offset); + cmd[1] = buf; + + celluloid_mpv_command_async(CELLULOID_MPV(model), cmd); +} + +void +celluloid_model_load_audio_track(CelluloidModel *model, const gchar *filename) +{ + celluloid_mpv_load_track + (CELLULOID_MPV(model), filename, TRACK_TYPE_AUDIO); +} + +void +celluloid_model_load_video_track(CelluloidModel *model, const gchar *filename) +{ + celluloid_mpv_load_track + (CELLULOID_MPV(model), filename, TRACK_TYPE_VIDEO); +} + +void +celluloid_model_load_subtitle_track( CelluloidModel *model, + const gchar *filename ) +{ + celluloid_mpv_load_track + (CELLULOID_MPV(model), filename, TRACK_TYPE_SUBTITLE); +} + +gdouble +celluloid_model_get_time_position(CelluloidModel *model) +{ + gdouble time_pos = 0.0; + + if(!model->idle_active) + { + celluloid_mpv_get_property( CELLULOID_MPV(model), + "time-pos", + MPV_FORMAT_DOUBLE, + &time_pos ); + } + + /* time-pos may become negative during seeks */ + return MAX(0, time_pos); +} + +void +celluloid_model_set_playlist_position(CelluloidModel *model, gint64 position) +{ + celluloid_player_set_playlist_position + (CELLULOID_PLAYER(model), position); +} + +void +celluloid_model_remove_playlist_entry(CelluloidModel *model, gint64 position) +{ + celluloid_player_remove_playlist_entry + (CELLULOID_PLAYER(model), position); +} + +void +celluloid_model_move_playlist_entry( CelluloidModel *model, + gint64 src, + gint64 dst ) +{ + celluloid_player_move_playlist_entry(CELLULOID_PLAYER(model), src, dst); +} + +void +celluloid_model_load_file( CelluloidModel *model, + const gchar *uri, + gboolean append ) +{ + GSettings *settings = g_settings_new(CONFIG_ROOT); + + append |= g_settings_get_boolean(settings, "always-append-to-playlist"); + + celluloid_mpv_load(CELLULOID_MPV(model), uri, append); + + /* Start playing when replacing the playlist, ie. not appending, or + * adding the first file to the playlist. + */ + if(!append || model->playlist_count == 0) + { + celluloid_model_play(model); + } + + g_object_unref(settings); +} + +gboolean +celluloid_model_get_use_opengl_cb(CelluloidModel *model) +{ + return celluloid_mpv_get_use_opengl_cb(CELLULOID_MPV(model)); +} + +void +celluloid_model_initialize_gl(CelluloidModel *model) +{ + celluloid_mpv_init_gl(CELLULOID_MPV(model)); +} + +void +celluloid_model_render_frame(CelluloidModel *model, gint width, gint height) +{ + mpv_render_context *render_ctx; + + render_ctx = celluloid_mpv_get_render_context(CELLULOID_MPV(model)); + + if(render_ctx) + { + gint fbo = -1; + glGetIntegerv(GL_FRAMEBUFFER_BINDING, &fbo); + + mpv_opengl_fbo opengl_fbo = + {fbo, width, height, 0}; + mpv_render_param params[] = + { {MPV_RENDER_PARAM_OPENGL_FBO, &opengl_fbo}, + {MPV_RENDER_PARAM_FLIP_Y, &(int){1}}, + {0, NULL} }; + + mpv_render_context_render(render_ctx, params); + } +} + +void +celluloid_model_get_video_geometry( CelluloidModel *model, + gint64 *width, + gint64 *height ) +{ + CelluloidMpv *mpv = CELLULOID_MPV(model); + + celluloid_mpv_get_property(mpv, "dwidth", MPV_FORMAT_INT64, width); + celluloid_mpv_get_property(mpv, "dheight", MPV_FORMAT_INT64, height); +} + +gchar * +celluloid_model_get_current_path(CelluloidModel *model) +{ + CelluloidMpv *mpv = CELLULOID_MPV(model); + gchar *path = celluloid_mpv_get_property_string(mpv, "path"); + gchar *buf = g_strdup(path); + + mpv_free(path); + + return buf; +} diff --git a/src/celluloid-model.h b/src/celluloid-model.h new file mode 100644 index 0000000..b2a0b3c --- /dev/null +++ b/src/celluloid-model.h @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2017-2020 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef MODEL_H +#define MODEL_H + +#include + +#include "celluloid-mpv.h" +#include "celluloid-player.h" + +G_BEGIN_DECLS + +#define CELLULOID_TYPE_MODEL (celluloid_model_get_type()) + +G_DECLARE_FINAL_TYPE(CelluloidModel, celluloid_model, CELLULOID, MODEL, CelluloidPlayer) + +CelluloidModel * +celluloid_model_new(gint64 wid); + +void +celluloid_model_initialize(CelluloidModel *model); + +void +celluloid_model_reset(CelluloidModel *model); + +void +celluloid_model_quit(CelluloidModel *model); + +void +celluloid_model_mouse(CelluloidModel *model, gint x, gint y); + +void +celluloid_model_key_down(CelluloidModel *model, const gchar* keystr); + +void +celluloid_model_key_up(CelluloidModel *model, const gchar* keystr); + +void +celluloid_model_key_press(CelluloidModel *model, const gchar* keystr); + +void +celluloid_model_reset_keys(CelluloidModel *model); + +void +celluloid_model_play(CelluloidModel *model); + +void +celluloid_model_pause(CelluloidModel *model); + +void +celluloid_model_stop(CelluloidModel *model); + +void +celluloid_model_forward(CelluloidModel *model); + +void +celluloid_model_rewind(CelluloidModel *model); + +void +celluloid_model_next_chapter(CelluloidModel *model); + +void +celluloid_model_previous_chapter(CelluloidModel *model); + +void +celluloid_model_next_playlist_entry(CelluloidModel *model); + +void +celluloid_model_previous_playlist_entry(CelluloidModel *model); + +void +celluloid_model_shuffle_playlist(CelluloidModel *model); + +void +celluloid_model_unshuffle_playlist(CelluloidModel *model); + +void +celluloid_model_seek(CelluloidModel *model, gdouble value); + +void +celluloid_model_seek_offset(CelluloidModel *model, gdouble offset); + +void +celluloid_model_load_audio_track(CelluloidModel *model, const gchar *filename); + +void +celluloid_model_load_video_track(CelluloidModel *model, const gchar *filename); + +void +celluloid_model_load_subtitle_track( CelluloidModel *model, + const gchar *filename ); + +gdouble +celluloid_model_get_time_position(CelluloidModel *model); + +void +celluloid_model_set_playlist_position(CelluloidModel *model, gint64 position); + +void +celluloid_model_remove_playlist_entry(CelluloidModel *model, gint64 position); + +void +celluloid_model_move_playlist_entry( CelluloidModel *model, + gint64 src, + gint64 dst ); + +void +celluloid_model_load_file( CelluloidModel *model, + const gchar *uri, + gboolean append ); + +gboolean +celluloid_model_get_use_opengl_cb(CelluloidModel *model); + +void +celluloid_model_initialize_gl(CelluloidModel *model); + +void +celluloid_model_render_frame(CelluloidModel *model, gint width, gint height); + +void +celluloid_model_get_video_geometry( CelluloidModel *model, + gint64 *width, + gint64 *height ); + +gchar * +celluloid_model_get_current_path(CelluloidModel *model); + +G_END_DECLS + +#endif diff --git a/src/celluloid-mpv-private.h b/src/celluloid-mpv-private.h new file mode 100644 index 0000000..49b161d --- /dev/null +++ b/src/celluloid-mpv-private.h @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2016-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef MPV_OBJ_PRIVATE_H +#define MPV_OBJ_PRIVATE_H + +#include + +G_BEGIN_DECLS + +typedef struct _CelluloidMpvPrivate CelluloidMpvPrivate; + +enum +{ + PROP_0, + PROP_WID, + PROP_READY, + N_PROPERTIES +}; + +struct _CelluloidMpvPrivate +{ + mpv_handle *mpv_ctx; + mpv_render_context *render_ctx; + gboolean ready; + gchar *tmp_input_file; + GSList *log_level_list; + gboolean init_vo_config; + gboolean force_opengl; + gboolean use_opengl; + gint64 wid; + void *render_update_callback_data; + void (*render_update_callback)(void *data); +}; + +#define get_private(mpv) \ + G_TYPE_INSTANCE_GET_PRIVATE(mpv, CELLULOID_TYPE_MPV, CelluloidMpvPrivate) + +void +mpv_check_error(int status); + +G_END_DECLS + +#endif diff --git a/src/celluloid-mpv-wrapper.c b/src/celluloid-mpv-wrapper.c new file mode 100644 index 0000000..603f23f --- /dev/null +++ b/src/celluloid-mpv-wrapper.c @@ -0,0 +1,291 @@ +/* + * Copyright (c) 2016-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include "celluloid-mpv-wrapper.h" +#include "celluloid-mpv-private.h" + +gint +celluloid_mpv_command(CelluloidMpv *mpv, const gchar **cmd) +{ + CelluloidMpvPrivate *priv = get_private(mpv); + gint rc = MPV_ERROR_UNINITIALIZED; + + if(priv->mpv_ctx) + { + rc = mpv_command(priv->mpv_ctx, cmd); + } + + if(rc < 0) + { + gchar *cmd_str = g_strjoinv(" ", (gchar **)cmd); + + g_warning( "Failed to run mpv command \"%s\". Reason: %s.", + cmd_str, + mpv_error_string(rc) ); + + g_free(cmd_str); + } + + return rc; +} + +gint +celluloid_mpv_command_async(CelluloidMpv *mpv, const gchar **cmd) +{ + CelluloidMpvPrivate *priv = get_private(mpv); + gint rc = MPV_ERROR_UNINITIALIZED; + + if(priv->mpv_ctx) + { + rc = mpv_command_async(priv->mpv_ctx, 0, cmd); + } + + if(rc < 0) + { + gchar *cmd_str = g_strjoinv(" ", (gchar **)cmd); + + g_warning( "Failed to dispatch async mpv command \"%s\". " + "Reason: %s.", + cmd_str, + mpv_error_string(rc) ); + + g_free(cmd_str); + } + + return rc; +} + +gint +celluloid_mpv_command_string(CelluloidMpv *mpv, const gchar *cmd) +{ + CelluloidMpvPrivate *priv = get_private(mpv); + gint rc = MPV_ERROR_UNINITIALIZED; + + if(priv->mpv_ctx) + { + rc = mpv_command_string(priv->mpv_ctx, cmd); + } + + if(rc < 0) + { + g_warning( "Failed to run mpv command string \"%s\". " + "Reason: %s.", + cmd, + mpv_error_string(rc) ); + } + + return rc; +} + +gint +celluloid_mpv_set_option_string( CelluloidMpv *mpv, + const gchar *name, + const gchar *value ) +{ + return mpv_set_option_string(get_private(mpv)->mpv_ctx, name, value); +} + +gint +celluloid_mpv_get_property( CelluloidMpv *mpv, + const gchar *name, + mpv_format format, + void *data ) +{ + CelluloidMpvPrivate *priv = get_private(mpv); + gint rc = MPV_ERROR_UNINITIALIZED; + + if(priv->mpv_ctx) + { + rc = mpv_get_property(priv->mpv_ctx, name, format, data); + } + + if(rc < 0) + { + g_info( "Failed to retrieve property \"%s\" " + "using mpv format %d. Reason: %s.", + name, + format, + mpv_error_string(rc) ); + } + + return rc; +} + +gchar * +celluloid_mpv_get_property_string(CelluloidMpv *mpv, const gchar *name) +{ + CelluloidMpvPrivate *priv = get_private(mpv); + gchar *value = NULL; + + if(priv->mpv_ctx) + { + value = mpv_get_property_string(priv->mpv_ctx, name); + } + + if(!value) + { + g_info("Failed to retrieve property \"%s\" as string.", name); + } + + return value; +} + +gboolean +celluloid_mpv_get_property_flag(CelluloidMpv *mpv, const gchar *name) +{ + CelluloidMpvPrivate *priv = get_private(mpv); + gboolean value = FALSE; + gint rc = MPV_ERROR_UNINITIALIZED; + + if(priv->mpv_ctx) + { + rc = mpv_get_property + (priv->mpv_ctx, name, MPV_FORMAT_FLAG, &value); + } + + if(rc < 0) + { + g_info( "Failed to retrieve property \"%s\" as flag. " + "Reason: %s.", + name, + mpv_error_string(rc) ); + } + + return value; +} + +gint +celluloid_mpv_set_property( CelluloidMpv *mpv, + const gchar *name, + mpv_format format, + void *data ) +{ + CelluloidMpvPrivate *priv = get_private(mpv); + gint rc = MPV_ERROR_UNINITIALIZED; + + if(priv->mpv_ctx) + { + rc = mpv_set_property(priv->mpv_ctx, name, format, data); + } + + if(rc < 0) + { + g_info( "Failed to set property \"%s\" using mpv format %d. " + "Reason: %s.", + name, + format, + mpv_error_string(rc) ); + } + + return rc; +} + +gint +celluloid_mpv_set_property_string( CelluloidMpv *mpv, + const gchar *name, + const char *data ) +{ + CelluloidMpvPrivate *priv = get_private(mpv); + gint rc = MPV_ERROR_UNINITIALIZED; + + if(priv->mpv_ctx) + { + rc = mpv_set_property_string(priv->mpv_ctx, name, data); + } + + if(rc < 0) + { + g_info( "Failed to set property \"%s\" as string. Reason: %s.", + name, + mpv_error_string(rc) ); + } + + return rc; +} + +gint +celluloid_mpv_set_property_flag( CelluloidMpv *mpv, + const gchar *name, + gboolean value ) +{ + CelluloidMpvPrivate *priv = get_private(mpv); + gint rc = MPV_ERROR_UNINITIALIZED; + + if(priv->mpv_ctx) + { + rc = mpv_set_property + (priv->mpv_ctx, name, MPV_FORMAT_FLAG, &value); + } + + if(rc < 0) + { + g_info( "Failed to set property \"%s\" as flag. Reason: %s.", + name, + mpv_error_string(rc) ); + } + + return rc; +} + +void +celluloid_mpv_set_render_update_callback( CelluloidMpv *mpv, + mpv_render_update_fn func, + void *data ) +{ + CelluloidMpvPrivate *priv = get_private(mpv); + + priv->render_update_callback = func; + priv->render_update_callback_data = data; + + if(priv->render_ctx) + { + mpv_render_context_set_update_callback + (priv->render_ctx, func, data); + } +} + +guint64 +celluloid_mpv_render_context_update(CelluloidMpv *mpv) +{ + return mpv_render_context_update(get_private(mpv)->render_ctx); +} + +gint +celluloid_mpv_load_config_file(CelluloidMpv *mpv, const gchar *filename) +{ + return mpv_load_config_file(get_private(mpv)->mpv_ctx, filename); +} + +gint +celluloid_mpv_observe_property( CelluloidMpv *mpv, + guint64 reply_userdata, + const gchar *name, + mpv_format format ) +{ + return mpv_observe_property( get_private(mpv)->mpv_ctx, + reply_userdata, + name, + format ); +} + +gint +celluloid_mpv_request_log_messages(CelluloidMpv *mpv, const gchar *min_level) +{ + return mpv_request_log_messages(get_private(mpv)->mpv_ctx, min_level); +} diff --git a/src/celluloid-mpv-wrapper.h b/src/celluloid-mpv-wrapper.h new file mode 100644 index 0000000..dd68aba --- /dev/null +++ b/src/celluloid-mpv-wrapper.h @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2016-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef MPV_WRAPPER_H +#define MPV_WRAPPER_H + +#include +#include +#include + +#include "celluloid-mpv.h" + +gint +celluloid_mpv_command(CelluloidMpv *mpv, const gchar **cmd); + +gint +celluloid_mpv_command_async(CelluloidMpv *mpv, const gchar **cmd); + +gint +celluloid_mpv_command_string(CelluloidMpv *mpv, const gchar *cmd); + +gint +celluloid_mpv_set_option_string( CelluloidMpv *mpv, + const gchar *name, + const gchar *value ); + +gint +celluloid_mpv_get_property( CelluloidMpv *mpv, + const gchar *name, + mpv_format format, + void *data ); + +gchar * +celluloid_mpv_get_property_string(CelluloidMpv *mpv, const gchar *name); + +gboolean +celluloid_mpv_get_property_flag(CelluloidMpv *mpv, const gchar *name); + +gint +celluloid_mpv_set_property( CelluloidMpv *mpv, + const gchar *name, + mpv_format format, + void *data ); + +gint +celluloid_mpv_set_property_flag( CelluloidMpv *mpv, + const gchar *name, + gboolean value); + +gint +celluloid_mpv_set_property_string( CelluloidMpv *mpv, + const gchar *name, + const char *data ); + +void +celluloid_mpv_set_event_callback( CelluloidMpv *mpv, + void (*func)(mpv_event *, void *), + void *data ); + +void +celluloid_mpv_set_render_update_callback( CelluloidMpv *mpv, + mpv_render_update_fn func, + void *data ); + +guint64 +celluloid_mpv_render_context_update(CelluloidMpv *mpv); + +gint +celluloid_mpv_load_config_file(CelluloidMpv *mpv, const gchar *filename); + +gint +celluloid_mpv_observe_property( CelluloidMpv *mpv, + guint64 reply_userdata, + const gchar *name, + mpv_format format ); + +gint +celluloid_mpv_request_log_messages(CelluloidMpv *mpv, const gchar *min_level); + +#endif diff --git a/src/celluloid-mpv.c b/src/celluloid-mpv.c new file mode 100644 index 0000000..3c7ecb7 --- /dev/null +++ b/src/celluloid-mpv.c @@ -0,0 +1,780 @@ +/* + * Copyright (c) 2014-2020 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#ifdef GDK_WINDOWING_X11 +#include +#include +#endif +#ifdef GDK_WINDOWING_WAYLAND +#include +#include +#endif +#ifdef GDK_WINDOWING_WIN32 +#include +#include +#endif + +#include "celluloid-mpv.h" +#include "celluloid-mpv-private.h" +#include "celluloid-mpv-wrapper.h" +#include "celluloid-common.h" +#include "celluloid-def.h" +#include "celluloid-marshal.h" + +static void * +get_proc_address(void *fn_ctx, const gchar *name); + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ); + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ); + +static +void dispose(GObject *object); + +static +void finalize(GObject *object); + +static +void wakeup_callback(void *data); + +static void +mpv_property_changed(CelluloidMpv *mpv, const gchar *name, gpointer value); + +static void +mpv_log_message( CelluloidMpv *mpv, + mpv_log_level log_level, + const gchar *prefix, + const gchar *text ); + +static void +mpv_event_notify(CelluloidMpv *mpv, gint event_id, gpointer event_data); + +static gboolean +process_mpv_events(gpointer data); + +static gboolean +check_mpv_version(const gchar *version); + +static gpointer +get_wl_display(void); + +static gpointer +get_x11_display(void); + +static void +initialize(CelluloidMpv *mpv); + +static void +load_file(CelluloidMpv *mpv, const gchar *uri, gboolean append); + +static void +reset(CelluloidMpv *mpv); + +G_DEFINE_TYPE_WITH_PRIVATE(CelluloidMpv, celluloid_mpv, G_TYPE_OBJECT) + +static void * +get_proc_address(void *fn_ctx, const gchar *name) +{ + GdkDisplay *display = gdk_display_get_default(); + +#ifdef GDK_WINDOWING_WAYLAND + if (GDK_IS_WAYLAND_DISPLAY(display)) + return eglGetProcAddress(name); +#endif +#ifdef GDK_WINDOWING_X11 + if (GDK_IS_X11_DISPLAY(display)) + return (void *)(intptr_t) + glXGetProcAddressARB((const GLubyte *)name); +#endif +#ifdef GDK_WINDOWING_WIN32 + if (GDK_IS_WIN32_DISPLAY(display)) + return wglGetProcAddress(name); +#endif + g_assert_not_reached(); + return NULL; +} + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ) +{ + CelluloidMpvPrivate *priv = get_private(CELLULOID_MPV(object)); + + if(property_id == PROP_WID) + { + priv->wid = g_value_get_int64(value); + } + else if(property_id == PROP_READY) + { + priv->ready = g_value_get_boolean(value); + } + else + { + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + } +} + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ) +{ + CelluloidMpvPrivate *priv = get_private(CELLULOID_MPV(object)); + + if(property_id == PROP_WID) + { + g_value_set_int64(value, priv->wid); + } + else if(property_id == PROP_READY) + { + g_value_set_boolean(value, priv->ready); + } + else + { + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + } +} + +static void +dispose(GObject *object) +{ + CelluloidMpv *mpv = CELLULOID_MPV(object); + + if(get_private(mpv)->mpv_ctx) + { + celluloid_mpv_quit(mpv); + while(g_source_remove_by_user_data(object)); + } + + G_OBJECT_CLASS(celluloid_mpv_parent_class)->dispose(object); +} + +static void +finalize(GObject *object) +{ + G_OBJECT_CLASS(celluloid_mpv_parent_class)->finalize(object); +} + +static void +wakeup_callback(void *data) +{ + g_idle_add_full(G_PRIORITY_HIGH_IDLE, process_mpv_events, data, NULL); +} + +static void +mpv_property_changed(CelluloidMpv *mpv, const gchar *name, gpointer value) +{ + g_debug("Received mpv property change event for \"%s\"", name); +} + +static void +mpv_event_notify(CelluloidMpv *mpv, gint event_id, gpointer event_data) +{ + if(event_id == MPV_EVENT_PROPERTY_CHANGE) + { + mpv_event_property *prop = event_data; + + g_signal_emit_by_name( mpv, + "mpv-property-changed", + prop->name, + prop->data ); + } + else if(event_id == MPV_EVENT_IDLE) + { + celluloid_mpv_set_property_flag(mpv, "pause", TRUE); + } + else if(event_id == MPV_EVENT_END_FILE) + { + GSettings *settings = g_settings_new(CONFIG_ROOT); + const gchar *ignore_key = "ignore-playback-errors"; + + mpv_event_end_file *ef_event = event_data; + + if( !g_settings_get_boolean(settings, ignore_key) && + ef_event->reason == MPV_END_FILE_REASON_ERROR ) + { + const gchar *err; + gchar *msg; + + err = mpv_error_string(ef_event->error); + msg = g_strdup_printf + ( _("Playback was terminated " + "abnormally. Reason: %s."), + err ); + + celluloid_mpv_set_property_flag(mpv, "pause", TRUE); + g_signal_emit_by_name(mpv, "error", msg); + + g_free(msg); + } + + g_object_unref(settings); + } + else if(event_id == MPV_EVENT_LOG_MESSAGE) + { + mpv_event_log_message* message = event_data; + + g_signal_emit_by_name( mpv, + "mpv-log-message", + message->log_level, + message->prefix, + message->text ); + } + else if(event_id == MPV_EVENT_CLIENT_MESSAGE) + { + mpv_event_client_message *event_cmsg = event_data; + gchar* msg = strnjoinv( " ", + event_cmsg->args, + (gsize)event_cmsg->num_args ); + + g_signal_emit_by_name(mpv, "message", msg); + g_free(msg); + } + else if(event_id == MPV_EVENT_SHUTDOWN) + { + g_signal_emit_by_name(mpv, "shutdown"); + } +} + +static gboolean +process_mpv_events(gpointer data) +{ + CelluloidMpv *mpv = data; + CelluloidMpvPrivate *priv = get_private(mpv); + gboolean done = !mpv; + + while(!done) + { + mpv_event *event = priv->mpv_ctx? + mpv_wait_event(priv->mpv_ctx, 0): + NULL; + + if(event) + { + if( !priv->mpv_ctx || + event->event_id == MPV_EVENT_SHUTDOWN || + event->event_id == MPV_EVENT_NONE ) + { + done = TRUE; + } + + g_signal_emit_by_name( mpv, + "mpv-event-notify", + event->event_id, + event->data ); + } + else + { + done = TRUE; + } + } + + return FALSE; +} + +static gboolean +check_mpv_version(const gchar *version) +{ + guint64 min_version[] = {MIN_MPV_MAJOR, MIN_MPV_MINOR, MIN_MPV_PATCH}; + const guint min_version_length = G_N_ELEMENTS(min_version); + gchar **tokens = NULL; + gboolean done = FALSE; + gboolean result = TRUE; + + /* Skip to the version number */ + if(strncmp(version, "mpv ", 4) == 0) + { + tokens = g_strsplit(version+4, ".", (gint)min_version_length); + } + + done = !tokens || g_strv_length(tokens) != min_version_length; + result = !done; + + for(guint i = 0; i < min_version_length && !done && result; i++) + { + gchar *endptr = NULL; + guint64 token = g_ascii_strtoull(tokens[i], &endptr, 10); + + /* If the token is equal to the minimum, continue checking the + * rest of the tokens. If it is greater, just skip them. + */ + result &= !(*endptr) && (token >= min_version[i]); + done = result && (token >= min_version[i]); + } + + g_strfreev(tokens); + + return result; +} + +static gpointer +get_wl_display(void) +{ + gpointer wl_display = NULL; + +#ifdef GDK_WINDOWING_WAYLAND + GdkDisplay *display = gdk_display_get_default(); + + if(GDK_IS_WAYLAND_DISPLAY(display)) + { + wl_display = gdk_wayland_display_get_wl_display(display); + } +#endif + + return wl_display; +} + +static gpointer +get_x11_display(void) +{ + gpointer x11_display = NULL; + +#ifdef GDK_WINDOWING_X11 + GdkDisplay *display = gdk_display_get_default(); + + if(GDK_IS_X11_DISPLAY(display)) + { + x11_display = gdk_x11_display_get_xdisplay(display); + } +#endif + + return x11_display; +} + +static void +initialize(CelluloidMpv *mpv) +{ + CelluloidMpvPrivate *priv = get_private(mpv); + gchar *current_vo = NULL; + gchar *mpv_version = NULL; + + if(priv->wid < 0) + { + g_info("Forcing --vo=libmpv"); + mpv_set_option_string(priv->mpv_ctx, "vo", "libmpv"); + } + else if(priv->wid == 0) + { + g_info("Forcing --vo=null"); + mpv_set_option_string(priv->mpv_ctx, "vo", "null"); + } + else + { + g_debug("Attaching mpv window to wid %#x", (guint)priv->wid); + mpv_set_option(priv->mpv_ctx, "wid", MPV_FORMAT_INT64, &priv->wid); + } + + mpv_set_wakeup_callback(priv->mpv_ctx, wakeup_callback, mpv); + mpv_initialize(priv->mpv_ctx); + + mpv_version = celluloid_mpv_get_property_string(mpv, "mpv-version"); + current_vo = celluloid_mpv_get_property_string(mpv, "current-vo"); + priv->use_opengl = (!current_vo && priv->wid != 0); + + g_info("Using %s", mpv_version); + + if(!check_mpv_version(mpv_version)) + { + g_warning( "Minimum mpv version requirement (%d.%d.%d) not met", + MIN_MPV_MAJOR, + MIN_MPV_MINOR, + MIN_MPV_PATCH ); + } + + priv->ready = TRUE; + g_object_notify(G_OBJECT(mpv), "ready"); + + mpv_free(current_vo); + mpv_free(mpv_version); +} + +static void +load_file(CelluloidMpv *mpv, const gchar *uri, gboolean append) +{ + CelluloidMpvPrivate *priv = get_private(mpv); + gchar *path = get_path_from_uri(uri); + const gchar *load_cmd[] = {"loadfile", path, NULL, NULL}; + gint64 playlist_count = 0; + + g_assert(uri); + g_info( "Loading file (append=%s): %s", append?"TRUE":"FALSE", uri); + + mpv_get_property( priv->mpv_ctx, + "playlist-count", + MPV_FORMAT_INT64, + &playlist_count ); + + load_cmd[2] = (append && playlist_count > 0)?"append":"replace"; + + if(!append) + { + celluloid_mpv_set_property_flag(mpv, "pause", FALSE); + } + + g_assert(priv->mpv_ctx); + mpv_request_event(priv->mpv_ctx, MPV_EVENT_END_FILE, 0); + mpv_command(priv->mpv_ctx, load_cmd); + mpv_request_event(priv->mpv_ctx, MPV_EVENT_END_FILE, 1); + + g_free(path); +} + +static void +reset(CelluloidMpv *mpv) +{ + CelluloidMpvPrivate *priv = get_private(mpv); + gchar *loop_file_str; + gchar *loop_playlist_str; + gboolean loop_file; + gboolean loop_playlist; + + loop_file_str = celluloid_mpv_get_property_string + (mpv, "loop-file"); + loop_playlist_str = celluloid_mpv_get_property_string + (mpv, "loop-playlist"); + loop_file = (g_strcmp0(loop_file_str, "inf") == 0); + loop_playlist = (g_strcmp0(loop_playlist_str, "inf") == 0); + + mpv_free(loop_file_str); + mpv_free(loop_playlist_str); + + /* Reset priv->mpv_ctx */ + priv->ready = FALSE; + g_object_notify(G_OBJECT(mpv), "ready"); + + celluloid_mpv_command_string(mpv, "write-watch-later-config"); + celluloid_mpv_quit(mpv); + + priv->mpv_ctx = mpv_create(); + celluloid_mpv_initialize(mpv); + + celluloid_mpv_set_render_update_callback + ( mpv, + priv->render_update_callback, + priv->render_update_callback_data ); + + celluloid_mpv_set_property_string + (mpv, "loop-file", loop_file?"inf":"no"); + celluloid_mpv_set_property_string + (mpv, "loop-playlist", loop_playlist?"inf":"no"); +} + +static void +mpv_log_message( CelluloidMpv *mpv, + mpv_log_level log_level, + const gchar *prefix, + const gchar *text ) +{ +} + +static void +celluloid_mpv_class_init(CelluloidMpvClass* klass) +{ + GObjectClass *obj_class = G_OBJECT_CLASS(klass); + GParamSpec *pspec = NULL; + + klass->mpv_event_notify = mpv_event_notify; + klass->mpv_log_message = mpv_log_message; + klass->mpv_property_changed = mpv_property_changed; + klass->initialize = initialize; + klass->load_file = load_file; + klass->reset = reset; + obj_class->set_property = set_property; + obj_class->get_property = get_property; + obj_class->dispose = dispose; + obj_class->finalize = finalize; + + pspec = g_param_spec_int64 + ( "wid", + "WID", + "The ID of the window to attach to", + G_MININT64, + G_MAXINT64, + -1, + G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); + g_object_class_install_property(obj_class, PROP_WID, pspec); + + pspec = g_param_spec_boolean + ( "ready", + "Ready", + "Whether mpv is initialized and ready to receive commands", + FALSE, + G_PARAM_READABLE ); + g_object_class_install_property(obj_class, PROP_READY, pspec); + + g_signal_new( "error", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, + 1, + G_TYPE_STRING ); + g_signal_new( "mpv-event-notify", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET(CelluloidMpvClass, mpv_event_notify), + NULL, + NULL, + g_cclosure_gen_marshal_VOID__INT_POINTER, + G_TYPE_NONE, + 2, + G_TYPE_INT, + G_TYPE_POINTER ); + g_signal_new( "mpv-log-message", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET(CelluloidMpvClass, mpv_log_message), + NULL, + NULL, + g_cclosure_gen_marshal_VOID__INT_STRING_STRING, + G_TYPE_NONE, + 3, + G_TYPE_INT, + G_TYPE_STRING, + G_TYPE_STRING ); + g_signal_new( "mpv-property-changed", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET(CelluloidMpvClass, mpv_property_changed), + NULL, + NULL, + g_cclosure_gen_marshal_VOID__STRING_POINTER, + G_TYPE_NONE, + 2, + G_TYPE_STRING, + G_TYPE_POINTER ); + g_signal_new( "message", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, + 1, + G_TYPE_STRING ); + g_signal_new( "window-resize", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_gen_marshal_VOID__INT64_INT64, + G_TYPE_NONE, + 2, + G_TYPE_INT64, + G_TYPE_INT64 ); + g_signal_new( "window-move", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_gen_marshal_VOID__BOOLEAN_BOOLEAN_POINTER_POINTER, + G_TYPE_NONE, + 4, + G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, + G_TYPE_POINTER, + G_TYPE_POINTER ); + g_signal_new( "shutdown", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0 ); +} + +static void +celluloid_mpv_init(CelluloidMpv *mpv) +{ + CelluloidMpvPrivate *priv = get_private(mpv); + + setlocale(LC_NUMERIC, "C"); + + priv->mpv_ctx = mpv_create(); + priv->render_ctx = NULL; + priv->ready = FALSE; + priv->init_vo_config = TRUE; + priv->use_opengl = FALSE; + priv->wid = -1; + priv->render_update_callback_data = NULL; + priv->render_update_callback = NULL; +} + +CelluloidMpv * +celluloid_mpv_new(gint64 wid) +{ + return CELLULOID_MPV(g_object_new(celluloid_mpv_get_type(), "wid", wid, NULL)); +} + +inline mpv_render_context * +celluloid_mpv_get_render_context(CelluloidMpv *mpv) +{ + return get_private(mpv)->render_ctx; +} + +inline gboolean +celluloid_mpv_get_use_opengl_cb(CelluloidMpv *mpv) +{ + return get_private(mpv)->use_opengl; +} + +void +celluloid_mpv_initialize(CelluloidMpv *mpv) +{ + CELLULOID_MPV_GET_CLASS(mpv)->initialize(mpv); +} + +void +celluloid_mpv_init_gl(CelluloidMpv *mpv) +{ + CelluloidMpvPrivate *priv = get_private(mpv); + mpv_opengl_init_params init_params = + {.get_proc_address = get_proc_address}; + mpv_render_param params[] = + { {MPV_RENDER_PARAM_API_TYPE, MPV_RENDER_API_TYPE_OPENGL}, + {MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &init_params}, + {MPV_RENDER_PARAM_WL_DISPLAY, get_wl_display()}, + {MPV_RENDER_PARAM_X11_DISPLAY, get_x11_display()}, + {0, NULL} }; + gint rc = mpv_render_context_create( &priv->render_ctx, + priv->mpv_ctx, + params ); + + if(rc >= 0) + { + g_debug("Initialized render context"); + } + else + { + g_critical("Failed to initialize render context"); + } +} + +void +celluloid_mpv_reset(CelluloidMpv *mpv) +{ + CELLULOID_MPV_GET_CLASS(mpv)->reset(mpv); +} + +void +celluloid_mpv_quit(CelluloidMpv *mpv) +{ + CelluloidMpvPrivate *priv = get_private(mpv); + + g_info("Terminating mpv"); + celluloid_mpv_command_string(mpv, "quit"); + + if(priv->render_ctx) + { + g_debug("Uninitializing render context"); + mpv_render_context_free(priv->render_ctx); + + priv->render_ctx = NULL; + } + + g_assert(priv->mpv_ctx); + mpv_terminate_destroy(priv->mpv_ctx); + + priv->mpv_ctx = NULL; +} + +void +celluloid_mpv_load_track(CelluloidMpv *mpv, const gchar *uri, TrackType type) +{ + const gchar *cmd[3] = {NULL}; + gchar *path = g_filename_from_uri(uri, NULL, NULL); + + switch(type) + { + case TRACK_TYPE_AUDIO: + cmd[0] = "audio-add"; + break; + + case TRACK_TYPE_VIDEO: + cmd[0] = "video-add"; + break; + + case TRACK_TYPE_SUBTITLE: + cmd[0] = "sub-add"; + break; + + default: + g_assert_not_reached(); + break; + } + + cmd[1] = path?:uri; + + g_debug("Loading external track %s with type %d", cmd[1], type); + celluloid_mpv_command(mpv, cmd); + + g_free(path); +} + +void +celluloid_mpv_load_file(CelluloidMpv *mpv, const gchar *uri, gboolean append) +{ + CELLULOID_MPV_GET_CLASS(mpv)->load_file(mpv, uri, append); +} + +void +celluloid_mpv_load(CelluloidMpv *mpv, const gchar *uri, gboolean append) +{ + const gchar *subtitle_exts[] = SUBTITLE_EXTS; + + if(extension_matches(uri, subtitle_exts)) + { + celluloid_mpv_load_track(mpv, uri, TRACK_TYPE_SUBTITLE); + } + else + { + celluloid_mpv_load_file(mpv, uri, append); + } +} diff --git a/src/celluloid-mpv.h b/src/celluloid-mpv.h new file mode 100644 index 0000000..d338d7e --- /dev/null +++ b/src/celluloid-mpv.h @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2014-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef MPV_H +#define MPV_H + +#include +#include +#include +#include + +#include "celluloid-common.h" + +G_BEGIN_DECLS + +#define CELLULOID_TYPE_MPV (celluloid_mpv_get_type()) + +G_DECLARE_DERIVABLE_TYPE(CelluloidMpv, celluloid_mpv, CELLULOID, MPV, GObject) + +struct _CelluloidMpvClass +{ + GObjectClass parent_class; + void (*mpv_event_notify)( CelluloidMpv *mpv, + gint event_id, + gpointer event_data ); + void (*mpv_log_message)( CelluloidMpv *mpv, + mpv_log_level log_level, + const gchar *prefix, + const gchar *text ); + void (*mpv_property_changed)( CelluloidMpv *mpv, + const gchar *name, + gpointer value ); + void (*initialize)(CelluloidMpv *mpv); + void (*load_file)(CelluloidMpv *mpv, const gchar *uri, gboolean append); + void (*reset)(CelluloidMpv *mpv); +}; + +CelluloidMpv * +celluloid_mpv_new(gint64 wid); + +mpv_render_context * +celluloid_mpv_get_render_context(CelluloidMpv *mpv); + +gboolean +celluloid_mpv_get_use_opengl_cb(CelluloidMpv *mpv); + +void +celluloid_mpv_initialize(CelluloidMpv *mpv); + +void +celluloid_mpv_init_gl(CelluloidMpv *mpv); + +void +celluloid_mpv_reset(CelluloidMpv *mpv); + +void +celluloid_mpv_quit(CelluloidMpv *mpv); + +void +celluloid_mpv_load_track(CelluloidMpv *mpv, const gchar *uri, TrackType type); + +void +celluloid_mpv_load_file(CelluloidMpv *mpv, const gchar *uri, gboolean append); + +void +celluloid_mpv_load(CelluloidMpv *mpv, const gchar *uri, gboolean append); + +G_END_DECLS + +#endif diff --git a/src/celluloid-open-location-dialog.c b/src/celluloid-open-location-dialog.c new file mode 100644 index 0000000..e9ac94c --- /dev/null +++ b/src/celluloid-open-location-dialog.c @@ -0,0 +1,230 @@ +/* + * Copyright (c) 2014-2020 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include +#include + +#include "celluloid-open-location-dialog.h" +#include "celluloid-main-window.h" + +struct _CelluloidOpenLocationDialog +{ + GtkDialog parent_instance; + GtkWidget *content_area; + GtkWidget *content_box; + GtkWidget *loc_label; + GtkWidget *loc_entry; +}; + +struct _CelluloidOpenLocationDialogClass +{ + GtkDialogClass parent_class; +}; + +G_DEFINE_TYPE(CelluloidOpenLocationDialog, celluloid_open_location_dialog, GTK_TYPE_DIALOG) + +static gboolean +key_press_handler (GtkWidget *widget, GdkEventKey *event) +{ + guint keyval = event->keyval; + guint state = event->state; + + const guint mod_mask = GDK_MODIFIER_MASK + &~(GDK_SHIFT_MASK + |GDK_LOCK_MASK + |GDK_MOD2_MASK + |GDK_MOD3_MASK + |GDK_MOD4_MASK + |GDK_MOD5_MASK); + + if((state&mod_mask) == 0 && keyval == GDK_KEY_Return) + { + gtk_dialog_response(GTK_DIALOG(widget), GTK_RESPONSE_ACCEPT); + } + + return GTK_WIDGET_CLASS(celluloid_open_location_dialog_parent_class) + ->key_press_event (widget, event); +} + +static GtkClipboard * +get_clipboard(CelluloidOpenLocationDialog *dlg) +{ + const gchar *const clipboard_names[] = {"CLIPBOARD", "PRIMARY", NULL}; + GtkClipboard *clipboard = NULL; + + for(gint i = 0; clipboard_names[i] && !clipboard; i++) + { + GdkAtom atom = gdk_atom_intern(clipboard_names[i], FALSE); + + clipboard = gtk_clipboard_get(atom); + + if(!gtk_clipboard_wait_is_text_available(clipboard)) + { + clipboard = NULL; + } + } + + return clipboard; +} + +static void +clipboard_text_received_handler( GtkClipboard *clipboard, + const gchar *text, + gpointer data ) +{ + CelluloidOpenLocationDialog *dlg = data; + + if(text && *text && (g_path_is_absolute(text) || strstr(text, "://") != NULL)) + { + gtk_entry_set_text(GTK_ENTRY(dlg->loc_entry), text); + gtk_editable_select_region(GTK_EDITABLE(dlg->loc_entry), 0, -1); + } + + g_object_unref(dlg); +} + +static void +load_text_from_clipboard(CelluloidOpenLocationDialog *dlg) +{ + g_object_ref(dlg); + + gtk_clipboard_request_text( get_clipboard(dlg), + clipboard_text_received_handler, + dlg ); +} + +static void +celluloid_open_location_dialog_class_init(CelluloidOpenLocationDialogClass *klass) +{ + GtkWidgetClass *wid_class = GTK_WIDGET_CLASS(klass); + + wid_class->key_press_event = key_press_handler; +} + +static void +celluloid_open_location_dialog_init(CelluloidOpenLocationDialog *dlg) +{ + GdkGeometry geom; + gboolean use_header_bar = TRUE; + + geom.max_width = G_MAXINT; + geom.max_height = 0; + dlg->content_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6); + dlg->content_area = gtk_dialog_get_content_area(GTK_DIALOG(dlg)); + dlg->loc_label = gtk_label_new(_("Location:")); + dlg->loc_entry = gtk_entry_new(); + + g_object_get(G_OBJECT(dlg), "use-header-bar", &use_header_bar, NULL); + + gtk_dialog_add_buttons( GTK_DIALOG(dlg), + _("_Cancel"), + GTK_RESPONSE_REJECT, + _("_Open"), + GTK_RESPONSE_ACCEPT, + NULL ); + + gtk_window_set_geometry_hints( GTK_WINDOW(dlg), + GTK_WIDGET(dlg), + &geom, + GDK_HINT_MAX_SIZE ); + + gtk_window_set_modal(GTK_WINDOW(dlg), 1); + gtk_container_set_border_width(GTK_CONTAINER(dlg->content_area), 12); + + if(use_header_bar) + { + gtk_widget_set_margin_bottom(dlg->content_box, 12); + } + + gtk_window_set_geometry_hints( GTK_WINDOW(dlg), + GTK_WIDGET(dlg), + &geom, + GDK_HINT_MAX_SIZE ); + + gtk_container_add(GTK_CONTAINER(dlg->content_area), dlg->content_box); + + gtk_box_pack_start( GTK_BOX(dlg->content_box), + dlg->loc_label, + FALSE, + FALSE, + 0 ); + + gtk_box_pack_start( GTK_BOX(dlg->content_box), + dlg->loc_entry, + TRUE, + TRUE, + 0 ); + + gtk_window_set_default_size(GTK_WINDOW(dlg), 350, -1); + gtk_dialog_set_default_response (GTK_DIALOG(dlg), GTK_RESPONSE_ACCEPT); +} + +GtkWidget * +celluloid_open_location_dialog_new(GtkWindow *parent, const gchar *title) +{ + GtkWidget *dlg; + GtkWidget *header_bar; + gboolean csd_enabled; + + csd_enabled = celluloid_main_window_get_csd_enabled + (CELLULOID_MAIN_WINDOW(parent)); + + dlg = g_object_new( celluloid_open_location_dialog_get_type(), + "use-header-bar", csd_enabled, + "title", title, + NULL ); + + header_bar = gtk_dialog_get_header_bar(GTK_DIALOG(dlg)); + + if(header_bar) + { + GtkWidget *cancel_btn = gtk_dialog_get_widget_for_response + (GTK_DIALOG(dlg), GTK_RESPONSE_REJECT); + + gtk_container_child_set( GTK_CONTAINER(header_bar), + cancel_btn, + "pack-type", + GTK_PACK_START, + NULL ); + + gtk_header_bar_set_show_close_button + (GTK_HEADER_BAR(header_bar), FALSE); + + } + + load_text_from_clipboard(CELLULOID_OPEN_LOCATION_DIALOG(dlg)); + + gtk_widget_hide_on_delete(dlg); + gtk_window_set_transient_for(GTK_WINDOW(dlg), parent); + gtk_widget_show_all(dlg); + + return dlg; +} + +const gchar * +celluloid_open_location_dialog_get_string(CelluloidOpenLocationDialog *dlg) +{ + return gtk_entry_get_text(GTK_ENTRY(dlg->loc_entry)); +} + +guint64 +celluloid_open_location_dialog_get_string_length(CelluloidOpenLocationDialog *dlg) +{ + return gtk_entry_get_text_length(GTK_ENTRY(dlg->loc_entry)); +} diff --git a/src/celluloid-open-location-dialog.h b/src/celluloid-open-location-dialog.h new file mode 100644 index 0000000..c1bf23a --- /dev/null +++ b/src/celluloid-open-location-dialog.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2014-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef OPEN_LOCATION_DIALOG_H +#define OPEN_LOCATION_DIALOG_H + +#include +#include +#include + +G_BEGIN_DECLS + +#define CELLULOID_TYPE_OPEN_LOC_DIALOG (celluloid_open_location_dialog_get_type ()) + +G_DECLARE_FINAL_TYPE(CelluloidOpenLocationDialog, celluloid_open_location_dialog, CELLULOID, OPEN_LOCATION_DIALOG, GtkDialog) + +GtkWidget * +celluloid_open_location_dialog_new(GtkWindow *parent, const gchar *title); + +const gchar * +celluloid_open_location_dialog_get_string(CelluloidOpenLocationDialog *dlg); + +guint64 +celluloid_open_location_dialog_get_string_length(CelluloidOpenLocationDialog *dlg); + +G_END_DECLS + +#endif diff --git a/src/celluloid-option-parser.c b/src/celluloid-option-parser.c new file mode 100644 index 0000000..0226f35 --- /dev/null +++ b/src/celluloid-option-parser.c @@ -0,0 +1,189 @@ +/* + * Copyright (c) 2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include + +#include "celluloid-option-parser.h" + +static gboolean +eval_match(const GMatchInfo *match_info, GString *result, gpointer data); + +static gchar * +unescape(const gchar *str); + +static const gchar * +parse_key(const gchar *str, gchar **option); + +static const gchar * +parse_value(const gchar *str, gchar **value); + +static gboolean +eval_match(const GMatchInfo *match_info, GString *result, gpointer data) +{ + gchar *match = g_match_info_fetch(match_info, 0); + gchar converted = '\0'; + + g_assert(match && match[0] && match[1] && !match[2]); + + switch(match[1]) + { + case 'a': + converted = '\a'; + break; + + case 'b': + converted = '\b'; + break; + + case 'f': + converted = '\f'; + break; + + case 'n': + converted = '\n'; + break; + + case 'r': + converted = '\r'; + break; + + case 't': + converted = '\t'; + break; + + case 'v': + converted = '\v'; + break; + + case '\\': + case '\'': + case '"': + case '?': + converted = match[1]; + break; + + + default: + g_assert_not_reached(); + break; + } + + g_string_append_c(result, converted); + g_free(match); + + return FALSE; +} + +static gchar * +unescape(const gchar *str) +{ + GRegex *regex = g_regex_new("\\\\.", 0, 0, NULL); + gssize len = (gssize)strlen(str); + gchar *result = g_regex_replace_eval + (regex, str, len, 0, 0, eval_match, NULL, NULL); + + g_regex_unref(regex); + + return result; +} + +static const gchar * +parse_key(const gchar *str, gchar **option) +{ + if(str) + { + const gchar *token_start = str; + + if(strncmp(str, "--", 2) == 0) + { + str += 2; + } + + token_start = str; + + while(g_ascii_isalnum(*str) || *str == '-' || *str == '_') + { + str++; + } + + *option = g_strndup(token_start, (gsize)(str - token_start)); + } + + return str; +} + +static const gchar * +parse_value(const gchar *str, gchar **value) +{ + if(str) + { + gchar *buf = NULL; + gsize buf_len = 0; + const gchar *token_start = str; + gboolean escaping = FALSE; + gchar quote = '\0'; + + if(*str == '"' || *str == '\'') + { + quote = *str++; + } + + token_start = str; + + while( *str && + (escaping || quote != *str) && + (quote != '\0' || !g_ascii_isspace(*str)) ) + { + escaping = (*str == '\\'); + + str++; + } + + if(quote != '\0') + { + str++; + } + + buf_len = (gsize)(str - token_start - (quote != '\0')); + buf = g_strndup(token_start, buf_len); + *value = unescape(buf); + + g_free(buf); + } + + return str; +} + +const gchar * +parse_option(const gchar *str, gchar **option, gchar **value) +{ + while(str && g_ascii_isspace(*str)) + { + str++; + } + + str = parse_key(str, option); + + if(str && *str == '=') + { + str = parse_value(++str, value); + } + + return str; +} diff --git a/src/celluloid-option-parser.h b/src/celluloid-option-parser.h new file mode 100644 index 0000000..3766a01 --- /dev/null +++ b/src/celluloid-option-parser.h @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef OPTION_PARSER_H +#define OPTION_PARSER_H + +G_BEGIN_DECLS + +const gchar * +parse_option(const gchar *str, gchar **option, gchar **value); + +G_END_DECLS + +#endif diff --git a/src/celluloid-player-options.c b/src/celluloid-player-options.c new file mode 100644 index 0000000..8c4ba2f --- /dev/null +++ b/src/celluloid-player-options.c @@ -0,0 +1,481 @@ +/* + * Copyright (c) 2016-2020 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include +#include +#include +#include +#include + +#include "celluloid-player-options.h" +#include "celluloid-mpv.h" +#include "celluloid-mpv-private.h" +#include "celluloid-mpv-wrapper.h" +#include "celluloid-def.h" + +static GdkRectangle +get_monitor_geometry(CelluloidMainWindow *window); + +static gboolean +parse_geom_token(const gchar **iter, GValue *value); + +static gboolean +parse_dim_string( const gchar *geom_str, + GdkRectangle monitor_geom, + gint64 dim[2] ); + +static gboolean +parse_pos_token_prefix(const gchar **iter, gchar **prefix); + +static gboolean +parse_pos_token(const gchar **iter, GValue *value, gboolean *flip); + +static gboolean +parse_pos_string(const gchar *geom_str, gboolean flip[2], GValue pos[2]); + +static void +parse_geom_string( const gchar *geom_str, + GdkRectangle monitor_geom, + gboolean flip[2], + GValue pos[2], + gint64 dim[2] ); + +static gboolean +get_video_dimensions(CelluloidMpv *mpv, gint64 dim[2]); + +static gboolean +handle_window_scale(CelluloidMpv *mpv, gint64 dim[2]); + +static gboolean +handle_autofit(CelluloidMpv *mpv, gint64 dim[2], GdkRectangle monitor_geom); + +static void +handle_geometry(CelluloidPlayer *player, GdkRectangle monitor_geom); + +static void +handle_msg_level(CelluloidPlayer *player); + +static void +ready_handler(GObject *object, GParamSpec *pspec, gpointer data); + +static void +autofit_handler(CelluloidMpv *mpv, gpointer data); + +static GdkRectangle +get_monitor_geometry(CelluloidMainWindow *window) +{ + GdkRectangle result; + GdkWindow *gdkwindow = gtk_widget_get_window(GTK_WIDGET(window)); + gint scale_factor = gdk_window_get_scale_factor(gdkwindow); + GdkDisplay *display = gdk_window_get_display(gdkwindow); + GdkMonitor *monitor = gdk_display_get_monitor_at_window + (display, gdkwindow); + + gdk_monitor_get_geometry(monitor, &result); + + result.width /= scale_factor; + result.height /= scale_factor; + + return result; +} + +static gboolean +parse_geom_token(const gchar **iter, GValue *value) +{ + gchar *end = NULL; + gint64 token_value = g_ascii_strtoll(*iter, &end, 10); + gboolean rc = FALSE; + + if(end) + { + if(*end == '%') + { + g_value_init(value, G_TYPE_DOUBLE); + g_value_set_double(value, (gdouble)token_value/100.0); + + end++; + } + else + { + g_value_init(value, G_TYPE_INT64); + g_value_set_int64(value, token_value); + } + + rc = !!end && *iter != end; + *iter = end; + } + + return rc; +} + +static gboolean +parse_dim_string( const gchar *geom_str, + GdkRectangle monitor_geom, + gint64 dim[2] ) +{ + gint screen_dim[2] = {0, 0}; + gdouble multiplier[2] = {-1, -1}; + gchar **tokens = g_strsplit(geom_str, "x", 2); + gint i = -1; + + dim[0] = -1; + dim[1] = -1; + screen_dim[0] = monitor_geom.width; + screen_dim[1] = monitor_geom.height; + + while(tokens && tokens[++i] && i < 3) + { + gint value = (gint)g_ascii_strtoll(tokens[i], NULL, 0); + + if((i == 0 && value > 0) || i == 1) + { + if(tokens[i][strnlen(tokens[i], 256)-1] == '%') + { + multiplier[i] = value/100.0; + } + else if(i == 1 && multiplier[0] != -1) + { + multiplier[i] = multiplier[0]; + } + + if(multiplier[i] == -1) + { + dim[i] = value; + } + else + { + dim[i] = (gint)(multiplier[i]*screen_dim[i]); + } + } + } + + g_strfreev(tokens); + + return (dim[0] > 0 && dim[1] > 0); +} + +static gboolean +parse_pos_token_prefix(const gchar **iter, gchar **prefix) +{ + const gchar *start = *iter; + const gchar *end = *iter; + gboolean rc = FALSE; + + while(*end && (*end == '+' || *end == '-')) + { + end++; + } + + rc = (end-start <= 2); + + if(rc) + { + if(end-start == 2) + { + end--; + } + + *prefix = g_strndup(start, (gsize)(end-start)); + *iter = end; + } + + return rc; +} + +static gboolean +parse_pos_token(const gchar **iter, GValue *value, gboolean *flip) +{ + gchar *prefix = NULL; + gboolean rc = TRUE; + + rc = rc && parse_pos_token_prefix(iter, &prefix); + rc = rc && parse_geom_token(iter, value); + *flip = (prefix && *prefix == '-'); + + g_free(prefix); + + return rc; +} + +static gboolean +parse_pos_string(const gchar *geom_str, gboolean flip[2], GValue pos[2]) +{ + gboolean rc = TRUE; + + rc = rc && parse_pos_token(&geom_str, &pos[0], &flip[0]); + rc = rc && parse_pos_token(&geom_str, &pos[1], &flip[1]); + + return rc; +} + +static void +parse_geom_string( const gchar *geom_str, + GdkRectangle monitor_geom, + gboolean flip[2], + GValue pos[2], + gint64 dim[2] ) +{ + if(!!geom_str) + { + if(geom_str[0] != '+' && geom_str[0] != '-') + { + parse_dim_string(geom_str, monitor_geom, dim); + } + + /* Move the beginning of the string to the 'position' section */ + while(*geom_str && *geom_str != '+' && *geom_str != '-') + { + geom_str++; + } + + parse_pos_string(geom_str, flip, pos); + } +} + +static gboolean +get_video_dimensions(CelluloidMpv *mpv, gint64 dim[2]) +{ + CelluloidMpvPrivate *priv = get_private(mpv); + gint rc = 0; + + rc |= mpv_get_property(priv->mpv_ctx, "dwidth", MPV_FORMAT_INT64, &dim[0]); + rc |= mpv_get_property(priv->mpv_ctx, "dheight", MPV_FORMAT_INT64, &dim[1]); + + return (rc >= 0); +} + +static void +ready_handler(GObject *object, GParamSpec *pspec, gpointer data) +{ + CelluloidPlayer *player = CELLULOID_PLAYER(object); + GdkRectangle monitor_geom = get_monitor_geometry(data); + + handle_geometry(player, monitor_geom); + handle_msg_level(player); +} + +static void +autofit_handler(CelluloidMpv *mpv, gpointer data) +{ + GSettings *settings = g_settings_new(CONFIG_ROOT); + gint64 dim[2] = {0, 0}; + GdkRectangle monitor_geom = get_monitor_geometry(data); + + if( g_settings_get_boolean(settings, "autofit-enable") && + get_video_dimensions(mpv, dim) ) + { + handle_window_scale(mpv, dim); + handle_autofit(mpv, dim, monitor_geom); + } + + if(dim[0] > 0 && dim[1] > 0) + { + g_info( "Resizing window to %"G_GINT64_FORMAT"x%"G_GINT64_FORMAT, + dim[0], + dim[1] ); + g_signal_emit_by_name(mpv, "window-resize", dim[0], dim[1]); + } + + g_object_unref(settings); +} + +static gboolean +handle_window_scale(CelluloidMpv *mpv, gint64 dim[2]) +{ + gchar *scale_str; + gboolean scale_set; + + scale_str = mpv_get_property_string + (get_private(mpv)->mpv_ctx, "options/window-scale"); + scale_set = scale_str && *scale_str; + + if(scale_set) + { + gdouble scale; + + g_debug("Retrieved option --window-scale=%s", scale_str); + + /* This should never fail since mpv_set_option() will + * refuse to set invalid values. + */ + scale = g_ascii_strtod(scale_str, NULL); + dim[0] = (gint64)(scale*(gdouble)dim[0]); + dim[1] = (gint64)(scale*(gdouble)dim[1]); + } + + mpv_free(scale_str); + + return scale_set; +} + +static gboolean +handle_autofit(CelluloidMpv *mpv, gint64 dim[2], GdkRectangle monitor_geom) +{ + CelluloidMpvPrivate *priv = get_private(mpv); + gint64 autofit_dim[2] = {0, 0}; + gint64 larger_dim[2] = {G_MAXINT64, G_MAXINT64}; + gint64 smaller_dim[2] = {0, 0}; + gchar *autofit_str = NULL; + gchar *larger_str = NULL; + gchar *smaller_str = NULL; + gboolean autofit_set = FALSE; + gboolean larger_set = FALSE; + gboolean smaller_set = FALSE; + gboolean updated = FALSE; + + autofit_str = mpv_get_property_string + (priv->mpv_ctx, "options/autofit"); + larger_str = mpv_get_property_string + (priv->mpv_ctx, "options/autofit-larger"); + smaller_str = mpv_get_property_string + (priv->mpv_ctx, "options/autofit-smaller"); + + autofit_set = autofit_str && *autofit_str; + larger_set = larger_str && *larger_str; + smaller_set = smaller_str && *smaller_str; + updated = (autofit_set || larger_set || smaller_set); + + if(autofit_set) + { + g_debug("Retrieved option --autofit=%s", autofit_str); + parse_dim_string(autofit_str, monitor_geom, autofit_dim); + } + + if(larger_set) + { + g_debug("Retrieved option --autofit-larger=%s", larger_str); + parse_dim_string(larger_str, monitor_geom, larger_dim); + } + + if(smaller_set) + { + g_debug("Retrieved option --autofit-smaller=%s", smaller_str); + parse_dim_string(smaller_str, monitor_geom, smaller_dim); + } + + if(updated) + { + gint64 orig_dim[2] = {0, 0}; + gdouble ratio = 1.0; + + memcpy(orig_dim, dim, 2*sizeof(gint64)); + + autofit_dim[0] = CLAMP( autofit_dim[0], + smaller_dim[0], + larger_dim[0] ); + autofit_dim[1] = CLAMP( autofit_dim[1], + smaller_dim[1], + larger_dim[1] ); + dim[0] = CLAMP(orig_dim[0], autofit_dim[0], larger_dim[0]); + dim[1] = CLAMP(orig_dim[1], autofit_dim[1], larger_dim[1]); + + ratio = MIN( (gdouble)dim[0]/(gdouble)orig_dim[0], + (gdouble)dim[1]/(gdouble)orig_dim[1] ); + dim[0] = (gint64)(ratio*(gdouble)orig_dim[0]); + dim[1] = (gint64)(ratio*(gdouble)orig_dim[1]); + } + + mpv_free(autofit_str); + mpv_free(larger_str); + mpv_free(smaller_str); + + return updated; +} + +static void +handle_geometry(CelluloidPlayer *player, GdkRectangle monitor_geom) +{ + gchar *geometry_str = celluloid_mpv_get_property_string + (CELLULOID_MPV(player), "options/geometry"); + + if(geometry_str) + { + gint64 dim[2] = {0, 0}; + GValue pos[2] = {G_VALUE_INIT, G_VALUE_INIT}; + gboolean flip[2] = {FALSE, FALSE}; + + parse_geom_string + (geometry_str, monitor_geom, flip, pos, dim); + + if(G_IS_VALUE(&pos[0]) && G_IS_VALUE(&pos[1])) + { + g_signal_emit_by_name( player, + "window-move", + flip[0], flip[1], + &pos[0], &pos[1] ); + } + + if(dim[0] > 0 && dim[1] > 0) + { + g_signal_emit_by_name( player, + "window-resize", + dim[0], dim[1] ); + } + } + + mpv_free(geometry_str); +} + +static void +handle_msg_level(CelluloidPlayer *player) +{ + CelluloidMpv *mpv = CELLULOID_MPV(player); + gchar *optbuf = NULL; + gchar **tokens = NULL; + gint i; + + optbuf = celluloid_mpv_get_property_string(mpv, "options/msg-level"); + + if(optbuf) + { + tokens = g_strsplit(optbuf, ",", 0); + } + + for(i = 0; tokens && tokens[i]; i++) + { + gchar **pair = g_strsplit(tokens[i], "=", 2); + + celluloid_player_set_log_level(player, pair[0], pair[1]); + g_strfreev(pair); + } + + mpv_free(optbuf); + g_strfreev(tokens); +} + +void +module_log_level_free(module_log_level *level) +{ + g_free(level->prefix); + g_free(level); +} + +void +celluloid_player_options_init( CelluloidPlayer *player, + CelluloidMainWindow *window ) +{ + g_signal_connect( player, + "notify::ready", + G_CALLBACK(ready_handler), + window ); + g_signal_connect( player, + "autofit", + G_CALLBACK(autofit_handler), + window ); +} diff --git a/src/celluloid-player-options.h b/src/celluloid-player-options.h new file mode 100644 index 0000000..68d9c4e --- /dev/null +++ b/src/celluloid-player-options.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2016-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef PLAYER_OPTIONS_H +#define PLAYER_OPTIONS_H + +#include +#include + +#include "celluloid-player.h" +#include "celluloid-main-window.h" + +G_BEGIN_DECLS + +typedef struct module_log_level module_log_level; + +struct module_log_level +{ + gchar *prefix; + mpv_log_level level; +}; + +void +module_log_level_free(module_log_level *level); + +void +celluloid_player_options_init( CelluloidPlayer *player, + CelluloidMainWindow *window ); + +G_END_DECLS + +#endif diff --git a/src/celluloid-player-private.h b/src/celluloid-player-private.h new file mode 100644 index 0000000..5feac1e --- /dev/null +++ b/src/celluloid-player-private.h @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef PLAYER_PRIVATE_H +#define PLAYER_PRIVATE_H + +#include + +#include "celluloid-metadata-cache.h" + +G_BEGIN_DECLS + +typedef struct _CelluloidPlayerPrivate CelluloidPlayerPrivate; + +enum +{ + PROP_0, + PROP_PLAYLIST, + PROP_METADATA, + PROP_TRACK_LIST, + PROP_DISC_LIST, + PROP_EXTRA_OPTIONS, + N_PROPERTIES +}; + +struct _CelluloidPlayerPrivate +{ + CelluloidMpv parent; + CelluloidMetadataCache *cache; + GVolumeMonitor *monitor; + GPtrArray *playlist; + GPtrArray *metadata; + GPtrArray *track_list; + GPtrArray *disc_list; + GHashTable *log_levels; + gboolean loaded; + gboolean new_file; + gboolean init_vo_config; + gchar *tmp_input_config; + gchar *extra_options; +}; + +#define get_private(player) \ + G_TYPE_INSTANCE_GET_PRIVATE(player, CELLULOID_TYPE_PLAYER, CelluloidPlayerPrivate) + +G_END_DECLS + +#endif + diff --git a/src/celluloid-player.c b/src/celluloid-player.c new file mode 100644 index 0000000..0ccddca --- /dev/null +++ b/src/celluloid-player.c @@ -0,0 +1,1429 @@ +/* + * Copyright (c) 2017-2021 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include +#include +#include + +#include "celluloid-option-parser.h" +#include "celluloid-player.h" +#include "celluloid-player-private.h" +#include "celluloid-player-options.h" +#include "celluloid-marshal.h" +#include "celluloid-metadata-cache.h" +#include "celluloid-mpv-wrapper.h" +#include "celluloid-def.h" + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ); + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ); + +static void +dispose(GObject *object); + +static void +finalize(GObject *object); + +static void +autofit(CelluloidPlayer *player); + +static void +metadata_update(CelluloidPlayer *player, gint64 pos); + +static void +mpv_event_notify(CelluloidMpv *mpv, gint event_id, gpointer event_data); + +static void +mpv_log_message( CelluloidMpv *mpv, + mpv_log_level log_level, + const gchar *prefix, + const gchar *text ); + +static void +mpv_property_changed(CelluloidMpv *mpv, const gchar *name, gpointer value); + +static void +observe_properties(CelluloidMpv *mpv); + +static void +apply_default_options(CelluloidMpv *mpv); + +static void +initialize(CelluloidMpv *mpv); + +static gint +apply_options_array_string(CelluloidMpv *mpv, const gchar *args); + +static void +apply_extra_options(CelluloidPlayer *player); + +static void +load_file(CelluloidMpv *mpv, const gchar *uri, gboolean append); + +static void +reset(CelluloidMpv *mpv); + +static void +load_input_conf(CelluloidPlayer *player, const gchar *input_conf); + +static void +load_config_file(CelluloidMpv *mpv); + +static void +load_input_config_file(CelluloidPlayer *player); + +static void +load_scripts(CelluloidPlayer *player); + +static CelluloidTrack * +parse_track_entry(mpv_node_list *node); + +static void +add_file_to_playlist(CelluloidPlayer *player, const gchar *uri); + +static void +load_from_playlist(CelluloidPlayer *player); + +static CelluloidPlaylistEntry * +parse_playlist_entry(mpv_node_list *node); + +static void +update_playlist(CelluloidPlayer *player); + +static void +update_metadata(CelluloidPlayer *player); + +static void +update_track_list(CelluloidPlayer *player); + +static void +cache_update_handler( CelluloidMetadataCache *cache, + const gchar *uri, + gpointer data ); + +static void +mount_added_handler(GVolumeMonitor *monitor, GMount *mount, gpointer data); + +static void +volume_removed_handler(GVolumeMonitor *monitor, GVolume *volume, gpointer data); + +static void +guess_content_handler(GMount *mount, GAsyncResult *res, gpointer data); + +G_DEFINE_TYPE_WITH_PRIVATE(CelluloidPlayer, celluloid_player, CELLULOID_TYPE_MPV) + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ) +{ + CelluloidPlayerPrivate *priv = get_private(object); + + switch(property_id) + { + case PROP_PLAYLIST: + case PROP_METADATA: + case PROP_TRACK_LIST: + case PROP_DISC_LIST: + g_critical("Attempted to set read-only property"); + break; + + case PROP_EXTRA_OPTIONS: + g_free(priv->extra_options); + priv->extra_options = g_value_dup_string(value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ) +{ + CelluloidPlayerPrivate *priv = get_private(object); + + switch(property_id) + { + case PROP_PLAYLIST: + g_value_set_pointer(value, priv->playlist); + break; + + case PROP_METADATA: + g_value_set_pointer(value, priv->metadata); + break; + + case PROP_TRACK_LIST: + g_value_set_pointer(value, priv->track_list); + break; + + case PROP_DISC_LIST: + g_value_set_pointer(value, priv->disc_list); + break; + + case PROP_EXTRA_OPTIONS: + g_value_set_string(value, priv->extra_options); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static void +dispose(GObject *object) +{ + CelluloidPlayerPrivate *priv = get_private(object); + + g_clear_object(&priv->cache); + g_clear_object(&priv->monitor); + + G_OBJECT_CLASS(celluloid_player_parent_class)->dispose(object); +} + +static void +finalize(GObject *object) +{ + CelluloidPlayerPrivate *priv = get_private(object); + + if(priv->tmp_input_config) + { + g_unlink(priv->tmp_input_config); + } + + g_free(priv->tmp_input_config); + g_free(priv->extra_options); + g_ptr_array_free(priv->playlist, TRUE); + g_ptr_array_free(priv->metadata, TRUE); + g_ptr_array_free(priv->track_list, TRUE); + g_ptr_array_free(priv->disc_list, TRUE); + + G_OBJECT_CLASS(celluloid_player_parent_class)->finalize(object); +} + +static void +autofit(CelluloidPlayer *player) +{ +} + +static void +metadata_update(CelluloidPlayer *player, gint64 pos) +{ +} + +static void +mpv_event_notify(CelluloidMpv *mpv, gint event_id, gpointer event_data) +{ + CelluloidPlayerPrivate *priv = get_private(mpv); + + if(event_id == MPV_EVENT_START_FILE) + { + gboolean vo_configured = FALSE; + + celluloid_mpv_get_property( mpv, + "vo-configured", + MPV_FORMAT_FLAG, + &vo_configured ); + + /* If the vo is not configured yet, save the content of mpv's + * playlist. This will be loaded again when the vo is + * configured. + */ + if(!vo_configured) + { + update_playlist(CELLULOID_PLAYER(mpv)); + } + } + else if(event_id == MPV_EVENT_END_FILE) + { + if(priv->loaded) + { + priv->new_file = FALSE; + } + } + else if(event_id == MPV_EVENT_IDLE) + { + priv->loaded = FALSE; + } + else if(event_id == MPV_EVENT_FILE_LOADED) + { + priv->loaded = TRUE; + } + else if(event_id == MPV_EVENT_VIDEO_RECONFIG) + { + if(priv->new_file) + { + g_signal_emit_by_name(CELLULOID_PLAYER(mpv), "autofit"); + } + } + + CELLULOID_MPV_CLASS(celluloid_player_parent_class) + ->mpv_event_notify(mpv, event_id, event_data); +} + +static void +mpv_log_message( CelluloidMpv *mpv, + mpv_log_level log_level, + const gchar *prefix, + const gchar *text ) +{ + CelluloidPlayerPrivate *priv = get_private(mpv); + gsize prefix_len = strlen(prefix); + gboolean found = FALSE; + const gchar *iter_prefix; + gpointer iter_level; + GHashTableIter iter; + + g_hash_table_iter_init(&iter, priv->log_levels); + + while( !found && + g_hash_table_iter_next( &iter, + (gpointer *)&iter_prefix, + &iter_level) ) + { + gsize iter_prefix_len = strlen(iter_prefix); + gint cmp = strncmp( iter_prefix, + prefix, + (prefix_len < iter_prefix_len)? + prefix_len:iter_prefix_len ); + + /* Allow both exact match and prefix match */ + if(cmp == 0 + && (iter_prefix_len == prefix_len + || (iter_prefix_len < prefix_len + && prefix[iter_prefix_len] == '/'))) + { + found = TRUE; + } + } + + if(!found || (gint)log_level <= GPOINTER_TO_INT(iter_level)) + { + gchar *buf = g_strdup(text); + gsize len = strlen(buf); + + if(len > 1) + { + /* g_message() automatically adds a newline + * character when using the default log handler, + * but log messages from mpv already come + * terminated with a newline character so we + * need to take it out. + */ + if(buf[len-1] == '\n') + { + buf[len-1] = '\0'; + } + + g_message("[%s] %s", prefix, buf); + } + + g_free(buf); + } + + CELLULOID_MPV_CLASS(celluloid_player_parent_class) + ->mpv_log_message(mpv, log_level, prefix, text); +} + +static void +mpv_property_changed(CelluloidMpv *mpv, const gchar *name, gpointer value) +{ + CelluloidPlayer *player = CELLULOID_PLAYER(mpv); + CelluloidPlayerPrivate *priv = get_private(mpv); + + if(g_strcmp0(name, "pause") == 0) + { + gboolean idle_active = FALSE; + gboolean pause = value?*((int *)value):TRUE; + + celluloid_mpv_get_property + (mpv, "idle-active", MPV_FORMAT_FLAG, &idle_active); + + if(idle_active && !pause && !priv->init_vo_config) + { + load_from_playlist(player); + } + } + else if(g_strcmp0(name, "playlist") == 0) + { + gboolean idle_active = FALSE; + gboolean was_empty = FALSE; + + celluloid_mpv_get_property + (mpv, "idle-active", MPV_FORMAT_FLAG, &idle_active); + + was_empty = priv->init_vo_config || + priv->playlist->len == 0; + + if(!idle_active && !priv->init_vo_config) + { + update_playlist(player); + } + + /* Check if we're transitioning from empty playlist to non-empty + * playlist. + */ + if(was_empty && priv->playlist->len > 0) + { + celluloid_mpv_set_property_flag(mpv, "pause", FALSE); + } + } + else if(g_strcmp0(name, "metadata") == 0) + { + update_metadata(player); + } + else if(g_strcmp0(name, "track-list") == 0) + { + update_track_list(player); + } + else if(g_strcmp0(name, "vo-configured") == 0) + { + if(priv->init_vo_config) + { + priv->init_vo_config = FALSE; + load_scripts(player); + load_from_playlist(player); + } + } + + CELLULOID_MPV_CLASS(celluloid_player_parent_class) + ->mpv_property_changed(mpv, name, value); +} + +static void +observe_properties(CelluloidMpv *mpv) +{ + celluloid_mpv_observe_property(mpv, 0, "aid", MPV_FORMAT_STRING); + celluloid_mpv_observe_property(mpv, 0, "vid", MPV_FORMAT_STRING); + celluloid_mpv_observe_property(mpv, 0, "sid", MPV_FORMAT_STRING); + celluloid_mpv_observe_property(mpv, 0, "chapters", MPV_FORMAT_INT64); + celluloid_mpv_observe_property(mpv, 0, "core-idle", MPV_FORMAT_FLAG); + celluloid_mpv_observe_property(mpv, 0, "idle-active", MPV_FORMAT_FLAG); + celluloid_mpv_observe_property(mpv, 0, "border", MPV_FORMAT_FLAG); + celluloid_mpv_observe_property(mpv, 0, "fullscreen", MPV_FORMAT_FLAG); + celluloid_mpv_observe_property(mpv, 0, "pause", MPV_FORMAT_FLAG); + celluloid_mpv_observe_property(mpv, 0, "loop", MPV_FORMAT_STRING); + celluloid_mpv_observe_property(mpv, 0, "duration", MPV_FORMAT_DOUBLE); + celluloid_mpv_observe_property(mpv, 0, "media-title", MPV_FORMAT_STRING); + celluloid_mpv_observe_property(mpv, 0, "metadata", MPV_FORMAT_NODE); + celluloid_mpv_observe_property(mpv, 0, "playlist", MPV_FORMAT_NODE); + celluloid_mpv_observe_property(mpv, 0, "playlist-count", MPV_FORMAT_INT64); + celluloid_mpv_observe_property(mpv, 0, "playlist-pos", MPV_FORMAT_INT64); + celluloid_mpv_observe_property(mpv, 0, "speed", MPV_FORMAT_DOUBLE); + celluloid_mpv_observe_property(mpv, 0, "track-list", MPV_FORMAT_NODE); + celluloid_mpv_observe_property(mpv, 0, "vo-configured", MPV_FORMAT_FLAG); + celluloid_mpv_observe_property(mpv, 0, "volume", MPV_FORMAT_DOUBLE); + celluloid_mpv_observe_property(mpv, 0, "volume-max", MPV_FORMAT_DOUBLE); + celluloid_mpv_observe_property(mpv, 0, "window-maximized", MPV_FORMAT_FLAG); + celluloid_mpv_observe_property(mpv, 0, "window-scale", MPV_FORMAT_DOUBLE); +} + +static void +apply_default_options(CelluloidMpv *mpv) +{ + gchar *config_dir = get_config_dir_path(); + gchar *watch_dir = get_watch_dir_path(); + const gchar *screenshot_dir = g_get_user_special_dir + (G_USER_DIRECTORY_PICTURES); + + const struct + { + const gchar *name; + const gchar *value; + } + options[] = { {"vo", "opengl,vdpau,vaapi,xv,x11,libmpv,"}, + {"osd-level", "1"}, + {"softvol", "yes"}, + {"force-window", "immediate"}, + {"input-default-bindings", "yes"}, + {"audio-client-name", ICON_NAME}, + {"title", "${media-title}"}, + {"autofit-larger", "75%"}, + {"window-scale", "1"}, + {"pause", "yes"}, + {"ytdl", "yes"}, + {"ytdl-raw-options", "yes-playlist="}, + {"load-scripts", "no"}, + {"osd-bar", "no"}, + {"input-cursor", "no"}, + {"cursor-autohide", "no"}, + {"softvol-max", "100"}, + {"config-dir", config_dir}, + {"watch-later-directory", watch_dir}, + {"screenshot-directory", screenshot_dir}, + {"screenshot-template", "celluloid-shot%n"}, + {NULL, NULL} }; + + for(gint i = 0; options[i].name; i++) + { + g_debug( "Applying default option --%s=%s", + options[i].name, + options[i].value ); + + celluloid_mpv_set_option_string + (mpv, options[i].name, options[i].value); + } + + g_free(config_dir); + g_free(watch_dir); +} + +static void +initialize(CelluloidMpv *mpv) +{ + CelluloidPlayer *player = CELLULOID_PLAYER(mpv); + + apply_default_options(mpv); + load_config_file(mpv); + load_input_config_file(player); + apply_extra_options(player); + observe_properties(mpv); + + CELLULOID_MPV_CLASS(celluloid_player_parent_class)->initialize(mpv); +} + +static gint +apply_options_array_string(CelluloidMpv *mpv, const gchar *args) +{ + gint fail_count = 0; + + while(args && *args) + { + gchar *key = NULL; + gchar *value = NULL; + + args = parse_option(args, &key, &value); + + if(key && *key) + { + g_debug("Applying option: --%s=%s", key, value); + + if(celluloid_mpv_set_option_string(mpv, key, value) < 0) + { + fail_count++; + + g_warning( "Failed to apply option: --%s=%s\n", + key, + value ); + } + } + else + { + g_warning("Failed to parse options"); + + args = NULL; + fail_count++; + } + + g_free(key); + g_free(value); + } + + return fail_count*(-1); +} + +static void +apply_extra_options(CelluloidPlayer *player) +{ + CelluloidPlayerPrivate *priv = get_private(player); + CelluloidMpv *mpv = CELLULOID_MPV(player); + gchar *extra_options = priv->extra_options; + + g_debug("Applying extra mpv options: %s", extra_options); + + /* Apply extra options */ + if(extra_options && apply_options_array_string(mpv, extra_options) < 0) + { + const gchar *msg = _("Failed to apply one or more MPV options."); + g_signal_emit_by_name(mpv, "error", msg); + } +} + +static void +load_file(CelluloidMpv *mpv, const gchar *uri, gboolean append) +{ + CelluloidPlayer *player = CELLULOID_PLAYER(mpv); + CelluloidPlayerPrivate *priv = get_private(mpv); + gboolean ready = FALSE; + gboolean idle_active = FALSE; + + g_object_get(mpv, "ready", &ready, NULL); + + celluloid_mpv_get_property + (mpv, "idle-active", MPV_FORMAT_FLAG, &idle_active); + + if(idle_active || !ready) + { + if(!append) + { + priv->new_file = TRUE; + g_ptr_array_set_size(priv->playlist, 0); + } + + add_file_to_playlist(player, uri); + } + else + { + if(!append) + { + priv->new_file = TRUE; + priv->loaded = FALSE; + } + + CELLULOID_MPV_CLASS(celluloid_player_parent_class) + ->load_file(mpv, uri, append); + } + + /* Playlist items added when mpv is idle doesn't get added directly to + * its internal playlist, so the property change signal won't be fired. + * We need to emit notify signal here manually to ensure that the + * playlist widget gets updated. + */ + if(idle_active) + { + g_object_notify(G_OBJECT(player), "playlist"); + } +} + +static void +reset(CelluloidMpv *mpv) +{ + gboolean idle_active = FALSE; + gint64 playlist_pos = 0; + gdouble volume = 0; + + celluloid_mpv_get_property + (mpv, "idle-active", MPV_FORMAT_FLAG, &idle_active); + celluloid_mpv_get_property + (mpv, "playlist-pos", MPV_FORMAT_INT64, &playlist_pos); + celluloid_mpv_get_property + (mpv, "volume", MPV_FORMAT_DOUBLE, &volume); + + CELLULOID_MPV_CLASS(celluloid_player_parent_class)->reset(mpv); + + load_scripts(CELLULOID_PLAYER(mpv)); + + if(!idle_active) + { + load_from_playlist(CELLULOID_PLAYER(mpv)); + } + + if(playlist_pos > 0) + { + celluloid_mpv_set_property + (mpv, "playlist-pos", MPV_FORMAT_INT64, &playlist_pos); + } + + celluloid_mpv_set_property(mpv, "volume", MPV_FORMAT_DOUBLE, &volume); +} + +static void +load_input_conf(CelluloidPlayer *player, const gchar *input_conf) +{ + CelluloidPlayerPrivate *priv = get_private(player); + const gchar *default_keybinds[] = DEFAULT_KEYBINDS; + gchar *tmp_path; + FILE *tmp_file; + gint tmp_fd; + + if(priv->tmp_input_config) + { + g_unlink(priv->tmp_input_config); + g_free(priv->tmp_input_config); + } + + tmp_fd = g_file_open_tmp("."BIN_NAME"-XXXXXX", &tmp_path, NULL); + tmp_file = fdopen(tmp_fd, "w"); + priv->tmp_input_config = tmp_path; + + if(!tmp_file) + { + g_error("Failed to open temporary input config file"); + } + + for(gint i = 0; default_keybinds[i]; i++) + { + const gsize len = strlen(default_keybinds[i]); + gsize write_size = fwrite(default_keybinds[i], len, 1, tmp_file); + gint rc = fputc('\n', tmp_file); + + if(write_size != 1 || rc != '\n') + { + g_error( "Error writing default keybindings to " + "temporary input config file" ); + } + } + + g_debug("Using temporary input config file: %s", tmp_path); + + celluloid_mpv_set_option_string + (CELLULOID_MPV(player), "input-conf", tmp_path); + + if(input_conf && strlen(input_conf) > 0) + { + const gsize buf_size = 65536; + void *buf = g_malloc(buf_size); + FILE *src_file = g_fopen(input_conf, "r"); + gsize read_size = buf_size; + + if(!src_file) + { + g_warning( "Cannot open input config file: %s", + input_conf ); + } + + while(src_file && read_size == buf_size) + { + read_size = fread(buf, 1, buf_size, src_file); + + if(read_size != fwrite(buf, 1, read_size, tmp_file)) + { + g_error( "Error writing requested input " + "config file to temporary " + "input config file" ); + } + } + + g_info("Loaded input config file: %s", input_conf); + + g_free(buf); + } + + fclose(tmp_file); +} + +static void +load_config_file(CelluloidMpv *mpv) +{ + GSettings *settings = g_settings_new(CONFIG_ROOT); + + if(g_settings_get_boolean(settings, "mpv-config-enable")) + { + gchar *mpv_conf = g_settings_get_string + (settings, "mpv-config-file"); + + g_info("Loading config file: %s", mpv_conf); + celluloid_mpv_load_config_file(mpv, mpv_conf); + + g_free(mpv_conf); + } + + g_object_unref(settings); +} + +static void +load_input_config_file(CelluloidPlayer *player) +{ + GSettings *settings = g_settings_new(CONFIG_ROOT); + gchar *input_conf = NULL; + + if(g_settings_get_boolean(settings, "mpv-input-config-enable")) + { + input_conf = g_settings_get_string + (settings, "mpv-input-config-file"); + + g_info("Loading input config file: %s", input_conf); + } + + load_input_conf(player, input_conf); + + g_free(input_conf); + g_object_unref(settings); +} + +static void +load_scripts(CelluloidPlayer *player) +{ + gchar *path = get_scripts_dir_path(); + GDir *dir = g_dir_open(path, 0, NULL); + + if(dir) + { + const gchar *name; + + do + { + gchar *full_path; + + name = g_dir_read_name(dir); + full_path = g_build_filename(path, name, NULL); + + if(g_file_test(full_path, G_FILE_TEST_IS_REGULAR)) + { + const gchar *cmd[] + = {"load-script", full_path, NULL}; + + g_info("Loading script: %s", full_path); + celluloid_mpv_command + (CELLULOID_MPV(player), cmd); + } + + g_free(full_path); + } + while(name); + + g_dir_close(dir); + } + else + { + g_warning("Failed to open scripts directory: %s", path); + } + + g_free(path); +} + +static CelluloidTrack * +parse_track_entry(mpv_node_list *node) +{ + CelluloidTrack *entry = celluloid_track_new(); + + for(gint i = 0; i < node->num; i++) + { + if(g_strcmp0(node->keys[i], "type") == 0) + { + const gchar *type = node->values[i].u.string; + + if(g_strcmp0(type, "audio") == 0) + { + entry->type = TRACK_TYPE_AUDIO; + } + else if(g_strcmp0(type, "video") == 0) + { + entry->type = TRACK_TYPE_VIDEO; + } + else if(g_strcmp0(type, "sub") == 0) + { + entry->type = TRACK_TYPE_SUBTITLE; + } + } + else if(g_strcmp0(node->keys[i], "title") == 0) + { + entry->title = g_strdup(node->values[i].u.string); + } + else if(g_strcmp0(node->keys[i], "lang") == 0) + { + entry->lang = g_strdup(node->values[i].u.string); + } + else if(g_strcmp0(node->keys[i], "id") == 0) + { + entry->id = node->values[i].u.int64; + } + } + + return entry; +} + +static void +add_file_to_playlist(CelluloidPlayer *player, const gchar *uri) +{ + CelluloidPlaylistEntry *entry = celluloid_playlist_entry_new(uri, NULL); + + g_ptr_array_add(get_private(player)->playlist, entry); +} + +static void load_from_playlist(CelluloidPlayer *player) +{ + CelluloidMpv *mpv = CELLULOID_MPV(player); + GPtrArray *playlist = get_private(player)->playlist; + + for(guint i = 0; playlist && i < playlist->len; i++) + { + CelluloidPlaylistEntry *entry = g_ptr_array_index(playlist, i); + + /* Do not append on first iteration */ + CELLULOID_MPV_CLASS(celluloid_player_parent_class) + ->load_file(mpv, entry->filename, i != 0); + } +} + +static CelluloidPlaylistEntry * +parse_playlist_entry(mpv_node_list *node) +{ + const gchar *filename = NULL; + const gchar *title = NULL; + + for(gint i = 0; i < node->num; i++) + { + if(g_strcmp0(node->keys[i], "filename") == 0) + { + filename = node->values[i].u.string; + } + else if(g_strcmp0(node->keys[i], "title") == 0) + { + title = node->values[i].u.string; + } + } + + return celluloid_playlist_entry_new(filename, title); +} + +static void +update_playlist(CelluloidPlayer *player) +{ + CelluloidPlayerPrivate *priv; + GSettings *settings; + gboolean prefetch_metadata; + const mpv_node_list *org_list; + mpv_node playlist; + + priv = get_private(player); + settings = g_settings_new(CONFIG_ROOT); + prefetch_metadata = g_settings_get_boolean(settings, "prefetch-metadata"); + + g_ptr_array_set_size(priv->playlist, 0); + + celluloid_mpv_get_property + (CELLULOID_MPV(player), "playlist", MPV_FORMAT_NODE, &playlist); + + org_list = playlist.u.list; + + if(playlist.format == MPV_FORMAT_NODE_ARRAY) + { + for(gint i = 0; i < org_list->num; i++) + { + CelluloidPlaylistEntry *entry; + + entry = parse_playlist_entry(org_list->values[i].u.list); + + if(!entry->title && prefetch_metadata) + { + CelluloidMetadataCacheEntry *cache_entry; + + cache_entry = celluloid_metadata_cache_lookup + (priv->cache, entry->filename); + entry->title = g_strdup(cache_entry->title); + } + + g_ptr_array_add(priv->playlist, entry); + } + + mpv_free_node_contents(&playlist); + g_object_notify(G_OBJECT(player), "playlist"); + } + + + if(prefetch_metadata) + { + celluloid_metadata_cache_load_playlist + (priv->cache, priv->playlist); + } + + g_object_unref(settings); +} + +static void +update_metadata(CelluloidPlayer *player) +{ + CelluloidPlayerPrivate *priv = get_private(player); + mpv_node_list *org_list = NULL; + mpv_node metadata; + + g_ptr_array_set_size(priv->metadata, 0); + + celluloid_mpv_get_property + (CELLULOID_MPV(player), "metadata", MPV_FORMAT_NODE, &metadata); + + org_list = metadata.u.list; + + if(metadata.format == MPV_FORMAT_NODE_MAP && org_list->num > 0) + { + for(gint i = 0; i < org_list->num; i++) + { + const gchar *key; + mpv_node value; + + key = org_list->keys[i]; + value = org_list->values[i]; + + if(value.format == MPV_FORMAT_STRING) + { + CelluloidMetadataEntry *entry; + + entry = celluloid_metadata_entry_new + (key, value.u.string); + + g_ptr_array_add(priv->metadata, entry); + } + else + { + g_warning( "Ignored metadata field %s " + "with unexpected format %d", + key, + value.format ); + } + } + + mpv_free_node_contents(&metadata); + g_object_notify(G_OBJECT(player), "metadata"); + } +} + +static void +update_track_list(CelluloidPlayer *player) +{ + CelluloidPlayerPrivate *priv = get_private(player); + mpv_node_list *org_list = NULL; + mpv_node track_list; + + g_ptr_array_set_size(priv->track_list, 0); + celluloid_mpv_get_property( CELLULOID_MPV(player), + "track-list", + MPV_FORMAT_NODE, + &track_list ); + + org_list = track_list.u.list; + + if(track_list.format == MPV_FORMAT_NODE_ARRAY) + { + for(gint i = 0; i < org_list->num; i++) + { + CelluloidTrack *entry = parse_track_entry + (org_list->values[i].u.list); + + g_ptr_array_add(priv->track_list, entry); + } + + mpv_free_node_contents(&track_list); + g_object_notify(G_OBJECT(player), "track-list"); + } +} + +static void +cache_update_handler( CelluloidMetadataCache *cache, + const gchar *uri, + gpointer data ) +{ + CelluloidPlayerPrivate *priv = get_private(data); + + for(guint i = 0; i < priv->playlist->len; i++) + { + CelluloidPlaylistEntry *entry = + g_ptr_array_index(priv->playlist, i); + + if(g_strcmp0(entry->filename, uri) == 0) + { + CelluloidMetadataCacheEntry *cache_entry = + celluloid_metadata_cache_lookup(cache, uri); + + g_free(entry->title); + entry->title = g_strdup(cache_entry->title); + + g_signal_emit_by_name + (data, "metadata-update", (gint64)i); + } + } +} + +static void +mount_added_handler(GVolumeMonitor *monitor, GMount *mount, gpointer data) +{ + GAsyncReadyCallback callback + = (GAsyncReadyCallback)guess_content_handler; + gchar *name = g_mount_get_name(mount); + + g_debug("Mount %s added", name); + g_mount_guess_content_type(mount, FALSE, NULL, callback, data); + + g_free(name); +} + +static void +volume_removed_handler(GVolumeMonitor *monitor, GVolume *volume, gpointer data) +{ + GPtrArray *disc_list = get_private(data)->disc_list; + gboolean found = FALSE; + gchar *path = g_volume_get_identifier(volume, "unix-device"); + + for(guint i = 0; !found && path && i < disc_list->len; i++) + { + CelluloidDisc *disc = g_ptr_array_index(disc_list, i); + + if(g_str_has_suffix(disc->uri, path)) + { + g_ptr_array_remove_index(disc_list, i); + + found = TRUE; + } + } + + g_object_notify(G_OBJECT(data), "disc-list"); +} + +static void +guess_content_handler(GMount *mount, GAsyncResult *res, gpointer data) +{ + GError *error = NULL; + gchar **types = g_mount_guess_content_type_finish(mount, res, &error); + + if(error) + { + gchar *name = g_mount_get_name(mount); + + g_warning( "Failed to guess content type for mount %s: %s", + name, + error->message ); + + g_free(name); + } + else + { + CelluloidPlayer *player = data; + const gchar *protocol = NULL; + GVolume *volume = g_mount_get_volume(mount); + gchar *path = volume ? + g_volume_get_identifier(volume, "unix-device") : + NULL; + + for(gint i = 0; path && !protocol && types && types[i]; i++) + { + if(g_strcmp0(types[i], "x-content/video-blueray") == 0) + { + protocol = "bd"; + } + else if(g_strcmp0(types[i], "x-content/video-dvd") == 0) + { + protocol = "dvd"; + } + else if(g_strcmp0(types[i], "x-content/audio-cdda") == 0) + { + protocol = "cdda"; + } + } + + if(path && protocol) + { + CelluloidDisc *disc = celluloid_disc_new(); + + disc->uri = g_strdup_printf("%s:///%s", protocol, path); + disc->label = g_mount_get_name(mount); + + g_ptr_array_add(get_private(player)->disc_list, disc); + g_object_notify(G_OBJECT(player), "disc-list"); + } + + g_free(path); + g_clear_object(&volume); + } + + g_strfreev(types); +} + +static void +celluloid_player_class_init(CelluloidPlayerClass *klass) +{ + CelluloidMpvClass *mpv_class = CELLULOID_MPV_CLASS(klass); + GObjectClass *obj_class = G_OBJECT_CLASS(klass); + GParamSpec *pspec = NULL; + + klass->autofit = autofit; + klass->metadata_update = metadata_update; + mpv_class->mpv_event_notify = mpv_event_notify; + mpv_class->mpv_log_message = mpv_log_message; + mpv_class->mpv_property_changed = mpv_property_changed; + mpv_class->initialize = initialize; + mpv_class->load_file = load_file; + mpv_class->reset = reset; + obj_class->set_property = set_property; + obj_class->get_property = get_property; + obj_class->dispose = dispose; + obj_class->finalize = finalize; + + pspec = g_param_spec_pointer + ( "playlist", + "Playlist", + "The playlist", + G_PARAM_READABLE ); + g_object_class_install_property(obj_class, PROP_PLAYLIST, pspec); + + pspec = g_param_spec_pointer + ( "metadata", + "Metadata", + "The metadata tags of the current file", + G_PARAM_READABLE ); + g_object_class_install_property(obj_class, PROP_METADATA, pspec); + + pspec = g_param_spec_pointer + ( "track-list", + "Track list", + "Audio, video, and subtitle tracks of the current file", + G_PARAM_READABLE ); + g_object_class_install_property(obj_class, PROP_TRACK_LIST, pspec); + + pspec = g_param_spec_pointer + ( "disc-list", + "Disc list", + "List of mounted discs", + G_PARAM_READABLE ); + g_object_class_install_property(obj_class, PROP_DISC_LIST, pspec); + + pspec = g_param_spec_string + ( "extra-options", + "Extra options", + "Extra options to pass to mpv", + NULL, + G_PARAM_READWRITE ); + g_object_class_install_property(obj_class, PROP_EXTRA_OPTIONS, pspec); + + g_signal_new( "autofit", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0 ); + g_signal_new( "metadata-update", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_gen_marshal_VOID__INT64, + G_TYPE_NONE, + 1, + G_TYPE_INT64 ); +} + +static void +celluloid_player_init(CelluloidPlayer *player) +{ + CelluloidPlayerPrivate *priv = get_private(player); + + priv->cache = celluloid_metadata_cache_new(); + priv->monitor = g_volume_monitor_get(); + priv->playlist = g_ptr_array_new_with_free_func + ((GDestroyNotify)celluloid_playlist_entry_free); + priv->metadata = g_ptr_array_new_with_free_func + ((GDestroyNotify)celluloid_metadata_entry_free); + priv->track_list = g_ptr_array_new_with_free_func + ((GDestroyNotify)celluloid_track_free); + priv->disc_list = g_ptr_array_new_with_free_func + ((GDestroyNotify)celluloid_disc_free); + priv->log_levels = g_hash_table_new_full + (g_str_hash, g_str_equal, g_free, NULL); + + priv->loaded = FALSE; + priv->new_file = TRUE; + priv->init_vo_config = TRUE; + priv->tmp_input_config = NULL; + priv->extra_options = NULL; + + g_signal_connect( priv->cache, + "update", + G_CALLBACK(cache_update_handler), + player ); + g_signal_connect( priv->monitor, + "mount-added", + G_CALLBACK(mount_added_handler), + player ); + + // We need to connect to volume-removed instead of mount-removed because + // we need to use the path of the volume to figure out which entry in + // disc_list to remove. However, by the time mount-removed fires, the + // mount would no longer be associated with its volume. This works fine + // since we only add mounts with associated volumes to disc_list. + g_signal_connect( priv->monitor, + "volume-removed", + G_CALLBACK(volume_removed_handler), + player ); + + // Emit mount-added to fill disc_list using mounts that already exist. + GList *mount_list = g_volume_monitor_get_mounts(priv->monitor); + + for(GList *cur = mount_list; cur; cur = g_list_next(cur)) + { + g_signal_emit_by_name(priv->monitor, "mount-added", cur->data); + } + + g_list_free_full(mount_list, g_object_unref); +} + +CelluloidPlayer * +celluloid_player_new(gint64 wid) +{ + return CELLULOID_PLAYER(g_object_new( celluloid_player_get_type(), + "wid", wid, + NULL )); +} + +void +celluloid_player_set_playlist_position(CelluloidPlayer *player, gint64 position) +{ + CelluloidMpv *mpv = CELLULOID_MPV(player); + gint64 playlist_pos = 0; + + celluloid_mpv_get_property + (mpv, "playlist-pos", MPV_FORMAT_INT64, &playlist_pos); + + if(position != playlist_pos) + { + celluloid_mpv_set_property + (mpv, "playlist-pos", MPV_FORMAT_INT64, &position); + } +} + +void +celluloid_player_remove_playlist_entry(CelluloidPlayer *player, gint64 position) +{ + CelluloidMpv *mpv = CELLULOID_MPV(player); + gboolean idle_active = celluloid_mpv_get_property_flag + (mpv, "idle-active"); + gint64 playlist_count = 0; + + celluloid_mpv_get_property + (mpv, "playlist-count", MPV_FORMAT_INT64, &playlist_count); + + /* mpv doesn't send playlist change signal before going idle when the + * last playlist entry is removed, so the internal playlist needs to be + * directly updated. + */ + if(idle_active || playlist_count == 1) + { + g_ptr_array_remove_index( get_private(player)->playlist, + (guint)position ); + g_object_notify(G_OBJECT(player), "playlist"); + } + + if(!idle_active) + { + const gchar *cmd[] = {"playlist_remove", NULL, NULL}; + gchar *index_str = g_strdup_printf + ("%" G_GINT64_FORMAT, position); + + cmd[1] = index_str; + + celluloid_mpv_command(CELLULOID_MPV(player), cmd); + g_free(index_str); + } +} + +void +celluloid_player_move_playlist_entry( CelluloidPlayer *player, + gint64 src, + gint64 dst ) +{ + CelluloidMpv *mpv = CELLULOID_MPV(player); + gboolean idle_active = celluloid_mpv_get_property_flag + (mpv, "idle-active"); + + if(idle_active) + { + GPtrArray *playlist; + CelluloidPlaylistEntry **entry; + + playlist = get_private(player)->playlist; + entry = (CelluloidPlaylistEntry **) + &g_ptr_array_index(playlist, src); + + g_ptr_array_insert(playlist, (gint)dst, *entry); + + /* Prevent the entry from being freed */ + *entry = NULL; + g_ptr_array_remove_index(playlist, (guint)((src > dst)?--src:src)); + } + else + { + const gchar *cmd[] = {"playlist_move", NULL, NULL, NULL}; + gchar *src_str = g_strdup_printf + ("%" G_GINT64_FORMAT, (src > dst)?--src:src); + gchar *dst_str = g_strdup_printf + ("%" G_GINT64_FORMAT, dst); + + cmd[1] = src_str; + cmd[2] = dst_str; + + celluloid_mpv_command(CELLULOID_MPV(player), cmd); + + g_free(src_str); + g_free(dst_str); + } +} + +void +celluloid_player_set_log_level( CelluloidPlayer *player, + const gchar *prefix, + const gchar *level ) +{ + const struct + { + gchar *name; + mpv_log_level level; + } + level_map[] = { {"no", MPV_LOG_LEVEL_NONE}, + {"fatal", MPV_LOG_LEVEL_FATAL}, + {"error", MPV_LOG_LEVEL_ERROR}, + {"warn", MPV_LOG_LEVEL_WARN}, + {"info", MPV_LOG_LEVEL_INFO}, + {"v", MPV_LOG_LEVEL_V}, + {"debug", MPV_LOG_LEVEL_DEBUG}, + {"trace", MPV_LOG_LEVEL_TRACE}, + {NULL, MPV_LOG_LEVEL_NONE} }; + + GHashTableIter iter; + gpointer iter_level = GINT_TO_POINTER(DEFAULT_LOG_LEVEL); + CelluloidPlayerPrivate *priv = get_private(player); + mpv_log_level max_level = DEFAULT_LOG_LEVEL; + gboolean found = FALSE; + gint i = 0; + + do + { + found = (g_strcmp0(level, level_map[i].name) == 0); + } + while(!found && level_map[++i].name); + + if(found && g_strcmp0(prefix, "all") != 0) + { + g_hash_table_replace( priv->log_levels, + g_strdup(prefix), + GINT_TO_POINTER(level_map[i].level) ); + } + + max_level = level_map[i].level; + + g_hash_table_iter_init(&iter, priv->log_levels); + + while(g_hash_table_iter_next(&iter, NULL, &iter_level)) + { + if(GPOINTER_TO_INT(iter_level) > (gint)max_level) + { + max_level = GPOINTER_TO_INT(iter_level); + } + } + + for(i = 0; level_map[i].level != max_level; i++); + + celluloid_mpv_request_log_messages + (CELLULOID_MPV(player), level_map[i].name); +} diff --git a/src/celluloid-player.h b/src/celluloid-player.h new file mode 100644 index 0000000..1299894 --- /dev/null +++ b/src/celluloid-player.h @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2017-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef PLAYER_H +#define PLAYER_H + +#include + +#include "celluloid-mpv.h" + +G_BEGIN_DECLS + +#define CELLULOID_TYPE_PLAYER (celluloid_player_get_type()) + +G_DECLARE_DERIVABLE_TYPE(CelluloidPlayer, celluloid_player, CELLULOID, PLAYER, CelluloidMpv) + +struct _CelluloidPlayerClass +{ + CelluloidMpvClass parent_class; + void (*autofit)(CelluloidPlayer *player); + void (*metadata_update)(CelluloidPlayer *player, gint64 pos); +}; + +CelluloidPlayer * +celluloid_player_new(gint64 wid); + +void +celluloid_player_set_playlist_position(CelluloidPlayer *player, gint64 position); + +void +celluloid_player_remove_playlist_entry(CelluloidPlayer *player, gint64 position); + +void +celluloid_player_move_playlist_entry( CelluloidPlayer *player, + gint64 src, + gint64 dst ); + +void +celluloid_player_set_log_level( CelluloidPlayer *player, + const gchar *prefix, + const gchar *level ); + +G_END_DECLS + +#endif diff --git a/src/celluloid-playlist-widget.c b/src/celluloid-playlist-widget.c new file mode 100644 index 0000000..c9612bf --- /dev/null +++ b/src/celluloid-playlist-widget.c @@ -0,0 +1,1213 @@ +/* + * Copyright (c) 2014-2020 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include +#include +#include +#include +#include +#include + +#include "celluloid-playlist-widget.h" +#include "celluloid-metadata-cache.h" +#include "celluloid-marshal.h" +#include "celluloid-common.h" +#include "celluloid-menu.h" +#include "celluloid-def.h" + +enum +{ + PROP_0, + PROP_PLAYLIST_COUNT, + PROP_SEARCHING, + N_PROPERTIES +}; + +enum PlaylistColumn +{ + PLAYLIST_NAME_COLUMN, + PLAYLIST_URI_COLUMN, + PLAYLIST_WEIGHT_COLUMN, + PLAYLIST_N_COLUMNS +}; + +struct _CelluloidPlaylistWidget +{ + GtkBox parent_instance; + gint64 playlist_count; + gboolean searching; + GtkListStore *store; + GtkWidget *scrolled_window; + GtkWidget *tree_view; + GtkTreeViewColumn *title_column; + GtkCellRenderer *title_renderer; + GtkWidget *search_bar; + GtkWidget *search_entry; + GtkWidget *placeholder; + GtkWidget *overlay; + gint last_x; + gint last_y; + gboolean dnd_delete; +}; + +struct _CelluloidPlaylistWidgetClass +{ + GtkBoxClass parent_class; +}; + +static gboolean +gtk_tree_model_get_iter_last(GtkTreeModel *tree_model, GtkTreeIter *iter); + +static void +find_match( CelluloidPlaylistWidget *wgt, + gboolean match_current, + gboolean reverse ); + +static void +constructed(GObject *object); + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ); + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ); + +static gboolean +is_zero(GBinding *binding, const GValue *from, GValue *to, gpointer data); + +static void +drag_begin_handler(GtkWidget *widget, GdkDragContext *context, gpointer data); + +static void +drag_data_get_handler( GtkWidget *widget, + GdkDragContext *context, + GtkSelectionData *sel_data, + guint info, + guint time, + gpointer data ); + +static void +drag_data_received_handler( GtkWidget *widget, + GdkDragContext *context, + gint x, + gint y, + GtkSelectionData *sel_data, + guint info, + guint time, + gpointer data ); + +static void +drag_data_delete_handler( GtkWidget *widget, + GdkDragContext *context, + gpointer data ); + +static void +row_activated_handler( GtkTreeView *tree_view, + GtkTreePath *path, + GtkTreeViewColumn *column, + gpointer data ); + +static void +row_inserted_handler( GtkTreeModel *tree_model, + GtkTreePath *path, + GtkTreeIter *iter, + gpointer data ); + +static void +row_deleted_handler(GtkTreeModel *tree_model, GtkTreePath *path, gpointer data); + +static void +next_match_handler(GtkSearchEntry *entry, gpointer data); + +static void +previous_match_handler(GtkSearchEntry *entry, gpointer data); + +static void +search_changed_handler(GtkSearchEntry *entry, gpointer data); + +static void +stop_search_handler(GtkSearchEntry *entry, gpointer data); + +static gboolean +mouse_press_handler(GtkWidget *widget, GdkEventButton *event, gpointer data); + +static gchar * +get_uri_selected(CelluloidPlaylistWidget *wgt); + +G_DEFINE_TYPE(CelluloidPlaylistWidget, celluloid_playlist_widget, GTK_TYPE_BOX) + +static gboolean +gtk_tree_model_get_iter_last(GtkTreeModel *tree_model, GtkTreeIter *iter) +{ + GtkTreeIter prev_iter; + gboolean rc = gtk_tree_model_get_iter_first(tree_model, iter); + + if(rc) + { + // Keep iterating until we reach the end, keeping one extra + // iterator pointing to the row before the current one. + do + { + prev_iter = *iter; + } + while(gtk_tree_model_iter_next(tree_model, iter)); + + // Once we reach the end iter will be invalid so we need to + // restore the last valid value from prev_iter, which will be + // pointing to the last row. + *iter = prev_iter; + } + + return rc; +} + + +static void +find_match( CelluloidPlaylistWidget *wgt, + gboolean match_current, + gboolean reverse ) +{ + GtkTreeView *tree_view = GTK_TREE_VIEW(wgt->tree_view); + GtkTreeModel *tree_model = GTK_TREE_MODEL(wgt->store); + const gchar *term = gtk_entry_get_text(GTK_ENTRY(wgt->search_entry)); + GtkTreeIter iter; + GtkTreePath *initial_path = NULL; + gboolean found = FALSE; + gboolean rc = FALSE; + + gboolean (*advance)(GtkTreeModel *, GtkTreeIter *) = + reverse ? + gtk_tree_model_iter_previous : + gtk_tree_model_iter_next; + gboolean (*reset)(GtkTreeModel *, GtkTreeIter *) = + reverse ? + gtk_tree_model_get_iter_last : + gtk_tree_model_get_iter_first; + + gtk_tree_view_get_cursor(tree_view, &initial_path, NULL); + + rc = initial_path && + gtk_tree_model_get_iter(tree_model, &iter, initial_path); + + while(rc && !found) + { + // Advance the iterator. If no next row exists, reset the + // iterator so that it points to either the first or the last + // row depending on the direction of the search. + if(!match_current && !advance(tree_model, &iter)) + { + rc = reset(tree_model, &iter); + } + + if(rc) + { + gchar *name = NULL; + GtkTreePath *path = NULL; + + gtk_tree_model_get( tree_model, + &iter, + PLAYLIST_NAME_COLUMN, &name, + -1 ); + + // Check if the iterator is pointing at the initial + // position. If it does, that means the search term does + // not match any row. If that's the case, set rc to + // FALSE so that the loop exits. + path = gtk_tree_model_get_path(tree_model, &iter); + rc = match_current || + gtk_tree_path_compare(initial_path, path) != 0; + + found = g_str_match_string(term, name, TRUE); + + gtk_tree_path_free(path); + g_free(name); + } + + match_current = FALSE; + } + + if(found) + { + GtkTreePath *path = gtk_tree_model_get_path(tree_model, &iter); + + gtk_tree_view_set_cursor(tree_view, path, NULL, FALSE); + gtk_tree_path_free(path); + } + + gtk_tree_path_free(initial_path); +} + +static void +constructed(GObject *object) +{ + CelluloidPlaylistWidget *self = CELLULOID_PLAYLIST_WIDGET(object); + GtkTargetEntry targets[] = DND_TARGETS; + + self->store = gtk_list_store_new( 3, + G_TYPE_STRING, + G_TYPE_STRING, + G_TYPE_INT ); + self->tree_view = gtk_tree_view_new_with_model + (GTK_TREE_MODEL(self->store)); + + g_signal_connect( self->tree_view, + "button-press-event", + G_CALLBACK(mouse_press_handler), + self ); + g_signal_connect( self->tree_view, + "popup-menu", + G_CALLBACK(mouse_press_handler), + self ); + g_signal_connect_after( self->tree_view, + "drag-begin", + G_CALLBACK(drag_begin_handler), + self ); + g_signal_connect( self->tree_view, + "drag-data-get", + G_CALLBACK(drag_data_get_handler), + self ); + g_signal_connect( self->tree_view, + "drag-data-received", + G_CALLBACK(drag_data_received_handler), + self ); + g_signal_connect( self->tree_view, + "drag-data-delete", + G_CALLBACK(drag_data_delete_handler), + self ); + g_signal_connect_after( self->placeholder, + "drag-begin", + G_CALLBACK(drag_begin_handler), + self ); + g_signal_connect( self->placeholder, + "drag-data-get", + G_CALLBACK(drag_data_get_handler), + self ); + g_signal_connect( self->placeholder, + "drag-data-received", + G_CALLBACK(drag_data_received_handler), + self ); + g_signal_connect( self->placeholder, + "drag-data-delete", + G_CALLBACK(drag_data_delete_handler), + self ); + g_signal_connect( self->tree_view, + "row-activated", + G_CALLBACK(row_activated_handler), + self ); + g_signal_connect( self->store, + "row-inserted", + G_CALLBACK(row_inserted_handler), + self ); + g_signal_connect( self->store, + "row-deleted", + G_CALLBACK(row_deleted_handler), + self ); + g_signal_connect( self->search_entry, + "next-match", + G_CALLBACK(next_match_handler), + self ); + g_signal_connect( self->search_entry, + "previous-match", + G_CALLBACK(previous_match_handler), + self ); + g_signal_connect( self->search_entry, + "search-changed", + G_CALLBACK(search_changed_handler), + self ); + g_signal_connect( self->search_entry, + "stop-search", + G_CALLBACK(stop_search_handler), + self ); + + g_object_bind_property( self, "searching", + self->search_bar, "search-mode-enabled", + G_BINDING_BIDIRECTIONAL ); + g_object_bind_property_full( self, "playlist-count", + self->placeholder, "visible", + G_BINDING_DEFAULT, + is_zero, + NULL, + NULL, + NULL ); + + gtk_tree_view_enable_model_drag_source( GTK_TREE_VIEW(self->tree_view), + GDK_BUTTON1_MASK, + targets, + G_N_ELEMENTS(targets), + GDK_ACTION_COPY| + GDK_ACTION_LINK| + GDK_ACTION_MOVE ); + + gtk_tree_view_enable_model_drag_dest( GTK_TREE_VIEW(self->tree_view), + targets, + G_N_ELEMENTS(targets), + GDK_ACTION_MOVE ); + + gtk_drag_dest_set( self->placeholder, + GTK_DEST_DEFAULT_ALL, + targets, + G_N_ELEMENTS(targets), + GDK_ACTION_MOVE ); + + gtk_widget_set_can_focus(self->tree_view, FALSE); + gtk_tree_view_set_reorderable(GTK_TREE_VIEW(self->tree_view), FALSE); + gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(self->tree_view), FALSE); + + gtk_tree_view_append_column + (GTK_TREE_VIEW(self->tree_view), self->title_column); + + gtk_overlay_add_overlay(GTK_OVERLAY(self->overlay), self->placeholder); + gtk_overlay_set_overlay_pass_through + (GTK_OVERLAY(self->overlay), self->placeholder, TRUE); + + gtk_container_add(GTK_CONTAINER(self->overlay), self->tree_view); + gtk_container_add(GTK_CONTAINER(self->scrolled_window), self->overlay); + gtk_box_pack_end(GTK_BOX(self), self->scrolled_window, TRUE, TRUE, 0); + + gtk_container_add(GTK_CONTAINER(self->search_bar), self->search_entry); + gtk_box_pack_start(GTK_BOX(self), self->search_bar, FALSE, TRUE, 0); + + G_OBJECT_CLASS(celluloid_playlist_widget_parent_class)->constructed(object); +} + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ) +{ + CelluloidPlaylistWidget *self = CELLULOID_PLAYLIST_WIDGET(object); + + if(property_id == PROP_PLAYLIST_COUNT) + { + self->playlist_count = g_value_get_int64(value); + } + else if(property_id == PROP_SEARCHING) + { + self->searching = g_value_get_boolean(value); + + if(self->searching) + { + gtk_widget_grab_focus(self->search_entry); + } + } + else + { + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + } +} + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ) +{ + CelluloidPlaylistWidget *self = CELLULOID_PLAYLIST_WIDGET(object); + + if(property_id == PROP_PLAYLIST_COUNT) + { + g_value_set_int64(value, self->playlist_count); + } + else if(property_id == PROP_SEARCHING) + { + g_value_set_boolean(value, self->searching); + } + else + { + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + } +} + +static gboolean +is_zero(GBinding *binding, const GValue *from, GValue *to, gpointer data) +{ + g_value_set_boolean(to, g_value_get_int64(from) == 0); + + return TRUE; +} + +static void +drag_begin_handler(GtkWidget *widget, GdkDragContext *context, gpointer data) +{ + const gint padding = 6; + const gint border_width = 1; + CelluloidPlaylistWidget *wgt = data; + GtkTreeView *tree_view = GTK_TREE_VIEW(widget); + GtkStyleContext *style = gtk_widget_get_style_context(widget); + GtkTreeModel *model = gtk_tree_view_get_model(tree_view); + GtkTreePath *path = NULL; + GtkTreeIter iter; + GdkWindow *window = gtk_widget_get_window(widget); + PangoContext *pango_ctx = gtk_widget_get_pango_context(widget); + PangoLayout *layout = pango_layout_new(pango_ctx); + gint width = 0, height = 0; + gint text_width = 0, text_height = 0; + gint cell_x = 0, cell_y = 0; + gchar *name = NULL; + GdkRGBA *border_color = NULL; + GdkRGBA *fg_color = NULL; + cairo_surface_t *surface = NULL; + cairo_t *cr = NULL; + + gtk_tree_view_get_path_at_pos( tree_view, + wgt->last_x, wgt->last_y, + NULL, + NULL, + &cell_x, &cell_y ); + + gtk_tree_view_get_cursor(tree_view, &path, NULL); + gtk_tree_model_get_iter(model, &iter, path); + gtk_tree_model_get(model, &iter, PLAYLIST_NAME_COLUMN, &name, -1); + pango_layout_set_text(layout, name, (gint)strlen(name)); + pango_layout_get_pixel_size(layout, &text_width, &text_height); + + gtk_cell_renderer_get_preferred_height( wgt->title_renderer, + widget, + NULL, + &height ); + + width = text_width+2*(padding+border_width); + height += 2*border_width; + + surface = gdk_window_create_similar_surface + (window, CAIRO_CONTENT_COLOR, width, height); + cr = cairo_create(surface); + + gtk_style_context_get( style, + GTK_STATE_FLAG_NORMAL, + GTK_STYLE_PROPERTY_COLOR, &fg_color, + GTK_STYLE_PROPERTY_BORDER_COLOR, &border_color, + NULL); + + gtk_render_background(style, cr, 0, 0, width, height); + + /* Draw border */ + gdk_cairo_set_source_rgba(cr, border_color); + cairo_set_line_width(cr, border_width); + cairo_rectangle( cr, + border_width/2.0, border_width/2.0, + width-border_width, height-border_width ); + cairo_stroke(cr); + + /* Draw text */ + gdk_cairo_set_source_rgba(cr, fg_color); + cairo_translate(cr, padding, (height-text_height)/2.0); + pango_cairo_show_layout(cr, layout); + + cairo_surface_set_device_offset + ( surface, + (-1)*(MIN(cell_x+border_width, width-border_width)), + (-1)*(cell_y+border_width) ); + gtk_drag_set_icon_surface(context, surface); + + gdk_rgba_free(fg_color); + gdk_rgba_free(border_color); + cairo_destroy(cr); + g_object_unref(layout); +} + +static void +drag_data_get_handler( GtkWidget *widget, + GdkDragContext *context, + GtkSelectionData *sel_data, + guint info, + guint time, + gpointer data ) +{ + gchar *type = gdk_atom_name(gtk_selection_data_get_target(sel_data)); + gchar *text = get_uri_selected(data); + + if(g_strcmp0(type, "PLAYLIST_PATH") == 0) + { + CelluloidPlaylistWidget *wgt = data; + GtkTreePath *path = NULL; + gchar *path_str = NULL; + GdkAtom atom = gdk_atom_intern_static_string("PLAYLIST_PATH"); + + gtk_tree_view_get_cursor + (GTK_TREE_VIEW(wgt->tree_view), &path, NULL); + + path_str = gtk_tree_path_to_string(path); + + gtk_selection_data_set( sel_data, + atom, + 8, + (const guchar *)path_str, + (gint)strlen(path_str) ); + + g_free(path_str); + } + else if(g_strcmp0(type, "text/uri-list") == 0) + { + /* Only one URI can be selected at a time */ + gchar *uris[] = {text, NULL}; + + gtk_selection_data_set_uris(sel_data, uris); + } + else + { + gtk_selection_data_set_text(sel_data, text, -1); + } + + g_free(type); + g_free(text); +} + +static void +drag_data_received_handler( GtkWidget *widget, + GdkDragContext *context, + gint x, + gint y, + GtkSelectionData *sel_data, + guint info, + guint time, + gpointer data) +{ + CelluloidPlaylistWidget *wgt = data; + gboolean reorder = (widget == gtk_drag_get_source_widget(context)); +#ifndef G_DISABLE_ASSERT /* Only used in an assertion below */ + gchar *type = gdk_atom_name(gtk_selection_data_get_target(sel_data)); +#endif + + if(reorder) + { + GtkListStore *store; + const guchar *raw_data; + gint src_index, dest_index; + GtkTreeIter src_iter, dest_iter; + GtkTreePath *src_path, *dest_path; + GtkTreeViewDropPosition before_mask; + GtkTreeViewDropPosition drop_pos; + gboolean insert_before; + gboolean dest_row_exist; + + store = wgt->store; + raw_data = gtk_selection_data_get_data(sel_data); + src_path = gtk_tree_path_new_from_string + ((const gchar *)raw_data); + src_index = gtk_tree_path_get_indices(src_path)[0]; + before_mask = GTK_TREE_VIEW_DROP_BEFORE| + GTK_TREE_VIEW_DROP_INTO_OR_BEFORE; + dest_row_exist = gtk_tree_view_get_dest_row_at_pos + ( GTK_TREE_VIEW(widget), + x, y, + &dest_path, + &drop_pos ); + + wgt->dnd_delete = FALSE; + + g_assert(g_strcmp0(type, "PLAYLIST_PATH") == 0); + g_assert(src_path); + + gtk_tree_model_get_iter( GTK_TREE_MODEL(store), + &src_iter, + src_path ); + + if(dest_row_exist) + { + g_assert(dest_path); + + dest_index = gtk_tree_path_get_indices(dest_path)[0]; + + gtk_tree_model_get_iter( GTK_TREE_MODEL(store), + &dest_iter, + dest_path ); + } + else + { + /* Set dest_iter to the last child */ + GtkTreeIter iter; + gboolean has_next; + + drop_pos = GTK_TREE_VIEW_DROP_AFTER; + dest_index = -1; + + gtk_tree_model_get_iter_first + (GTK_TREE_MODEL(store), &iter); + + do + { + dest_iter = iter; + has_next = gtk_tree_model_iter_next + (GTK_TREE_MODEL(store), &iter); + + dest_index++; + } + while(has_next); + } + + insert_before = (drop_pos&before_mask || drop_pos == 0); + + if(insert_before) + { + gtk_list_store_move_before(store, &src_iter, &dest_iter); + } + else + { + gtk_list_store_move_after(store, &src_iter, &dest_iter); + } + + g_signal_emit_by_name( wgt, + "rows-reordered", + src_index+(src_index>dest_index), + dest_index+!insert_before ); + + gtk_tree_path_free(src_path); + gtk_tree_path_free(dest_path); + } + else + { + g_signal_emit_by_name( wgt, + "drag-data-received", + context, + x, y, + sel_data, + info, + time, + data ); + } +} + +static void +drag_data_delete_handler( GtkWidget *widget, + GdkDragContext *context, + gpointer data ) +{ + CelluloidPlaylistWidget *wgt = data; + + /* Prevent default handler from deleting the source row when reordering. + * When reordering, dnd_delete will be set to FALSE in + * drag_data_received_handler(). + */ + if(!wgt->dnd_delete) + { + g_signal_stop_emission_by_name(widget, "drag-data-delete"); + } + + wgt->dnd_delete = TRUE; +} + +static void +row_activated_handler( GtkTreeView *tree_view, + GtkTreePath *path, + GtkTreeViewColumn *column, + gpointer data ) +{ + gint *indices = gtk_tree_path_get_indices(path); + gint64 index = indices?indices[0]:-1; + + g_signal_emit_by_name(data, "row-activated", index); +} + +static void +row_inserted_handler( GtkTreeModel *tree_model, + GtkTreePath *path, + GtkTreeIter *iter, + gpointer data ) +{ + const gint pos = gtk_tree_path_get_indices(path)[0]; + + CELLULOID_PLAYLIST_WIDGET(data)->playlist_count++; + g_signal_emit_by_name(data, "row-inserted", pos); + g_object_notify(data, "playlist-count"); +} + +static void +row_deleted_handler(GtkTreeModel *tree_model, GtkTreePath *path, gpointer data) +{ + const gint pos = gtk_tree_path_get_indices(path)[0]; + + CELLULOID_PLAYLIST_WIDGET(data)->playlist_count--; + g_signal_emit_by_name(data, "row-deleted", pos); + g_object_notify(data, "playlist-count"); +} + +static void +next_match_handler(GtkSearchEntry *entry, gpointer data) +{ + find_match(data, FALSE, FALSE); +} + +static void +previous_match_handler(GtkSearchEntry *entry, gpointer data) +{ + find_match(data, FALSE, TRUE); +} + +static void +search_changed_handler(GtkSearchEntry *entry, gpointer data) +{ + find_match(data, TRUE, FALSE); +} + +static void +stop_search_handler(GtkSearchEntry *entry, gpointer data) +{ + g_object_set(data, "searching", FALSE, NULL); +} + +static gboolean +mouse_press_handler(GtkWidget *widget, GdkEventButton *event, gpointer data) +{ + CelluloidPlaylistWidget *wgt = data; + GdkEventButton *btn_event = (GdkEventButton *)event; + + wgt->last_x = (gint)btn_event->x; + wgt->last_y = (gint)btn_event->y; + + if( btn_event->type == GDK_BUTTON_PRESS && + btn_event->button == 3 ) + { + const CelluloidMenuEntry entries[] + = { CELLULOID_MENU_SEPARATOR, + CELLULOID_MENU_ITEM(_("_Copy Location"), "win.copy-selected-playlist-item"), + CELLULOID_MENU_ITEM(_("_Remove"), "win.remove-selected-playlist-item"), + CELLULOID_MENU_SEPARATOR, + CELLULOID_MENU_ITEM(_("_Add…"), "win.show-open-dialog((false, true))"), + CELLULOID_MENU_ITEM(_("Add _Folder…"), "win.show-open-dialog((true, true))"), + CELLULOID_MENU_ITEM(_("Add _Location…"), "win.show-open-location-dialog(true)"), + CELLULOID_MENU_ITEM(_("_Shuffle"), "win.toggle-shuffle-playlist"), + CELLULOID_MENU_ITEM(_("Loop _File"), "win.toggle-loop-file"), + CELLULOID_MENU_ITEM(_("Loop _Playlist"), "win.toggle-loop-playlist"), + CELLULOID_MENU_END }; + + gsize entries_offset = 0; + GMenu *menu = g_menu_new(); + GtkWidget *ctx_menu = NULL; + + if(!gtk_tree_view_get_path_at_pos( GTK_TREE_VIEW(widget), + (gint)event->x, + (gint)event->y, + NULL, + NULL, + NULL, + NULL )) + { + /* Skip the first section which only contains item-level + * actions + */ + while(entries[++entries_offset].title); + } + + celluloid_menu_build_menu(menu, entries+entries_offset, TRUE); + g_menu_freeze(menu); + + ctx_menu = gtk_menu_new_from_model(G_MENU_MODEL(menu)); + gtk_menu_attach_to_widget(GTK_MENU(ctx_menu), widget, NULL); + gtk_widget_show_all(ctx_menu); + gtk_menu_popup_at_pointer(GTK_MENU(ctx_menu), (GdkEvent *)event); + } + + return FALSE; +} + +static gchar * +get_uri_selected(CelluloidPlaylistWidget *wgt) +{ + GtkTreeIter iter; + GtkTreePath *path = NULL; + gchar *result = NULL; + gboolean rc = FALSE; + + gtk_tree_view_get_cursor(GTK_TREE_VIEW(wgt->tree_view), &path, NULL); + + if(path) + { + rc = gtk_tree_model_get_iter + (GTK_TREE_MODEL(wgt->store), &iter, path); + } + + if(rc) + { + gtk_tree_model_get( GTK_TREE_MODEL(wgt->store), + &iter, + PLAYLIST_URI_COLUMN, &result, + -1 ); + } + + return result; +} + +static void +celluloid_playlist_widget_class_init(CelluloidPlaylistWidgetClass *klass) +{ + GObjectClass *obj_class = G_OBJECT_CLASS(klass); + GParamSpec *pspec = NULL; + + obj_class->constructed = constructed; + obj_class->set_property = set_property; + obj_class->get_property = get_property; + + pspec = g_param_spec_int64 + ( "playlist-count", + "Playlist count", + "The number of items in the playlist", + 0, + G_MAXINT64, + 0, + G_PARAM_READABLE ); + g_object_class_install_property(obj_class, PROP_PLAYLIST_COUNT, pspec); + + pspec = g_param_spec_boolean + ( "searching", + "Searching", + "Whether or not the user is searching the playlist", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property(obj_class, PROP_SEARCHING, pspec); + + g_signal_new( "row-activated", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_gen_marshal_VOID__INT64, + G_TYPE_NONE, + 1, + G_TYPE_INT ); + g_signal_new( "row-inserted", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__INT, + G_TYPE_NONE, + 1, + G_TYPE_INT ); + g_signal_new( "row-deleted", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__INT, + G_TYPE_NONE, + 1, + G_TYPE_INT ); + g_signal_new( "rows-reordered", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_gen_marshal_VOID__INT_INT, + G_TYPE_NONE, + 2, + G_TYPE_INT, + G_TYPE_INT ); +} + +static void +celluloid_playlist_widget_init(CelluloidPlaylistWidget *wgt) +{ + GtkStyleContext *style = NULL; + + wgt->playlist_count = 0; + wgt->searching = FALSE; + wgt->title_renderer = gtk_cell_renderer_text_new(); + wgt->title_column + = gtk_tree_view_column_new_with_attributes + ( _("Playlist"), + wgt->title_renderer, + "text", PLAYLIST_NAME_COLUMN, + "weight", PLAYLIST_WEIGHT_COLUMN, + NULL ); + wgt->scrolled_window = gtk_scrolled_window_new(NULL, NULL); + wgt->search_bar = gtk_search_bar_new(); + wgt->search_entry = gtk_search_entry_new(); + wgt->placeholder = gtk_label_new(_("Playlist is empty")); + wgt->overlay = gtk_overlay_new(); + wgt->dnd_delete = TRUE; + + style = gtk_widget_get_style_context(wgt->placeholder); + gtk_style_context_add_class(style, "dim-label"); + + gtk_orientable_set_orientation + (GTK_ORIENTABLE(wgt), GTK_ORIENTATION_VERTICAL); + gtk_widget_set_size_request + (GTK_WIDGET(wgt), PLAYLIST_MIN_WIDTH, -1); + gtk_tree_view_column_set_sizing + (wgt->title_column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); +} + +GtkWidget * +celluloid_playlist_widget_new() +{ + return GTK_WIDGET(g_object_new(celluloid_playlist_widget_get_type(), NULL)); +} + +gboolean +celluloid_playlist_widget_empty(CelluloidPlaylistWidget *wgt) +{ + GtkTreeIter iter; + + return !gtk_tree_model_get_iter_first(GTK_TREE_MODEL(wgt->store), &iter); +} + +void +celluloid_playlist_widget_set_indicator_pos( CelluloidPlaylistWidget *wgt, + gint pos ) +{ + GtkTreeIter iter; + gboolean rc; + + rc = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(wgt->store), &iter); + + while(rc) + { + const PangoWeight weight = (pos-- == 0)? + PANGO_WEIGHT_BOLD: + PANGO_WEIGHT_NORMAL; + + gtk_list_store_set( wgt->store, + &iter, + PLAYLIST_WEIGHT_COLUMN, weight, + -1 ); + + rc = gtk_tree_model_iter_next(GTK_TREE_MODEL(wgt->store), &iter); + } +} + +void +celluloid_playlist_widget_copy_selected(CelluloidPlaylistWidget *wgt) +{ + GtkTreePath *path = NULL; + + gtk_tree_view_get_cursor + ( GTK_TREE_VIEW(wgt->tree_view), + &path, + NULL ); + + if(path) + { + GtkTreeIter iter; + GtkTreeModel *model = GTK_TREE_MODEL(wgt->store); + GValue value = G_VALUE_INIT; + + if(gtk_tree_model_get_iter(model, &iter, path)) + { + const gchar *uri; + + gtk_tree_model_get_value + (model, &iter, PLAYLIST_URI_COLUMN, &value); + + uri = g_value_get_string(&value); + + if(uri) + { + GdkDisplay *display; + GtkClipboard *clipboard; + + display = gdk_display_get_default(); + clipboard = gtk_clipboard_get_default(display); + + gtk_clipboard_set_text + (clipboard, uri, (gint)strlen(uri)); + } + } + } +} + +void +celluloid_playlist_widget_remove_selected(CelluloidPlaylistWidget *wgt) +{ + GtkTreePath *path = NULL; + + gtk_tree_view_get_cursor + ( GTK_TREE_VIEW(wgt->tree_view), + &path, + NULL ); + + if(path) + { + GtkTreeIter iter; + GtkTreeModel *model; + + model = GTK_TREE_MODEL(wgt->store); + + if(gtk_tree_model_get_iter(model, &iter, path)) + { + gtk_list_store_remove(wgt->store, &iter); + } + } +} + +void +celluloid_playlist_widget_queue_draw(CelluloidPlaylistWidget *wgt) +{ + gtk_widget_queue_draw(GTK_WIDGET(wgt)); + gtk_widget_queue_draw(wgt->tree_view); +} + +void +celluloid_playlist_widget_update_contents( CelluloidPlaylistWidget *wgt, + GPtrArray* playlist ) +{ + GtkListStore *store = wgt->store; + gboolean iter_end = FALSE; + gint64 old_playlist_count = wgt->playlist_count; + GtkTreeIter iter; + + g_assert(playlist); + + g_signal_handlers_block_by_func(wgt->store, row_inserted_handler, wgt); + g_signal_handlers_block_by_func(wgt->store, row_deleted_handler, wgt); + + iter_end = !gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter); + + for(guint i = 0; i < playlist->len; i++) + { + CelluloidPlaylistEntry *entry= g_ptr_array_index(playlist, i); + gchar *uri = entry->filename; + gchar *title = entry->title; + gchar *name = title?g_strdup(title):get_name_from_path(uri); + + /* Overwrite current entry if it doesn't match the new value */ + if(!iter_end) + { + gchar *old_name = NULL; + gchar *old_uri = NULL; + gboolean name_update = FALSE; + gboolean uri_update = FALSE; + + gtk_tree_model_get( GTK_TREE_MODEL(store), + &iter, + PLAYLIST_NAME_COLUMN, &old_name, + PLAYLIST_URI_COLUMN, &old_uri, + -1 ); + + name_update = (g_strcmp0(name, old_name) != 0); + uri_update = (g_strcmp0(uri, old_uri) != 0); + + /* Only set the name if either the title can be + * retrieved or the name is unset. This preserves the + * correct title if it becomes unavailable later such as + * when restarting mpv. + */ + if(name_update && (!old_name || title || uri_update)) + { + gtk_list_store_set( store, + &iter, + PLAYLIST_NAME_COLUMN, + name, + -1 ); + } + + if(uri_update) + { + gtk_list_store_set( store, + &iter, + PLAYLIST_URI_COLUMN, + uri, + -1 ); + } + + iter_end = !gtk_tree_model_iter_next + (GTK_TREE_MODEL(store), &iter); + + g_free(old_name); + g_free(old_uri); + } + /* Append entries to the playlist if there are fewer entries in + * the playlist widget than given playlist. + */ + else + { + gtk_list_store_append(store, &iter); + gtk_list_store_set( store, + &iter, + PLAYLIST_NAME_COLUMN, + name, + -1 ); + gtk_list_store_set( store, + &iter, + PLAYLIST_URI_COLUMN, + uri, + -1 ); + + wgt->playlist_count++; + } + + g_free(name); + } + + /* If there are more entries in the playlist widget than given playlist, + * remove the excess entries from the playlist widget. + */ + if(!iter_end) + { + while(gtk_list_store_remove(store, &iter)) + { + wgt->playlist_count--; + } + } + + if(!old_playlist_count && wgt->playlist_count) + { + GtkTreePath *path = gtk_tree_path_new_first(); + + gtk_tree_view_set_cursor + (GTK_TREE_VIEW(wgt->tree_view), path, NULL, FALSE); + gtk_tree_path_free(path); + } + + g_signal_handlers_unblock_by_func(wgt->store, row_inserted_handler, wgt); + g_signal_handlers_unblock_by_func(wgt->store, row_deleted_handler, wgt); + g_object_notify(G_OBJECT(wgt), "playlist-count"); +} + +GPtrArray * +celluloid_playlist_widget_get_contents(CelluloidPlaylistWidget *wgt) +{ + gboolean rc = TRUE; + GtkTreeModel *model = GTK_TREE_MODEL(wgt->store); + GtkTreeIter iter; + GPtrArray *result = NULL; + + rc = gtk_tree_model_get_iter_first(model, &iter); + result = g_ptr_array_new_full( 1, + (GDestroyNotify) + celluloid_playlist_entry_free ); + + while(rc) + { + gchar *uri = NULL; + gchar *name = NULL; + + gtk_tree_model_get( model, &iter, + PLAYLIST_URI_COLUMN, &uri, + PLAYLIST_NAME_COLUMN, &name, + -1 ); + + g_ptr_array_add(result, celluloid_playlist_entry_new(uri, name)); + + rc = gtk_tree_model_iter_next(model, &iter); + } + + return result; +} diff --git a/src/celluloid-playlist-widget.h b/src/celluloid-playlist-widget.h new file mode 100644 index 0000000..7d2d0b2 --- /dev/null +++ b/src/celluloid-playlist-widget.h @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2014-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef PLAYLIST_WIDGET_H +#define PLAYLIST_WIDGET_H + +#include +#include +#include + +#include "celluloid-metadata-cache.h" + +G_BEGIN_DECLS + +#define CELLULOID_TYPE_PLAYLIST_WIDGET (celluloid_playlist_widget_get_type ()) + +G_DECLARE_FINAL_TYPE(CelluloidPlaylistWidget, celluloid_playlist_widget, CELLULOID, PLAYLIST_WIDGET, GtkBox) + +GtkWidget * +celluloid_playlist_widget_new(void); + +gboolean +celluloid_playlist_widget_empty(CelluloidPlaylistWidget *wgt); + +void +celluloid_playlist_widget_set_indicator_pos( CelluloidPlaylistWidget *wgt, + gint pos ); + +void +celluloid_playlist_widget_copy_selected(CelluloidPlaylistWidget *wgt); + +void +celluloid_playlist_widget_remove_selected(CelluloidPlaylistWidget *wgt); + +void +celluloid_playlist_widget_queue_draw(CelluloidPlaylistWidget *wgt); + +void +celluloid_playlist_widget_update_contents( CelluloidPlaylistWidget *wgt, + GPtrArray* playlist ); + +GPtrArray * +celluloid_playlist_widget_get_contents(CelluloidPlaylistWidget *wgt); + +G_END_DECLS + +#endif diff --git a/src/celluloid-plugins-manager-item.c b/src/celluloid-plugins-manager-item.c new file mode 100644 index 0000000..c6b64cb --- /dev/null +++ b/src/celluloid-plugins-manager-item.c @@ -0,0 +1,268 @@ +/* + * Copyright (c) 2016-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include +#include +#include +#include +#include + +#include "celluloid-plugins-manager-item.h" + +enum +{ + PROP_0, + PROP_PARENT, + PROP_TITLE, + PROP_PATH, + N_PROPERTIES +}; + +struct _CelluloidPluginsManagerItem +{ + GtkListBoxRow parent; + GtkWindow *parent_window; + gchar *title; + gchar *path; +}; + +struct _CelluloidPluginsManagerItemClass +{ + GtkListBoxRowClass parent_class; +}; + +G_DEFINE_TYPE(CelluloidPluginsManagerItem, celluloid_plugins_manager_item, GTK_TYPE_LIST_BOX_ROW) + +static void +celluloid_plugins_manager_item_constructed(GObject *object); + +static void +celluloid_plugins_manager_item_finalize(GObject *object); + +static void +celluloid_plugins_manager_item_set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ); + +static void +celluloid_plugins_manager_item_get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ); + +static void +remove_handler(GtkButton *button, gpointer data); + +static void +celluloid_plugins_manager_item_constructed(GObject *object) +{ + CelluloidPluginsManagerItem *self = CELLULOID_PLUGINS_MANAGER_ITEM(object); + GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); + GtkWidget *title_label = gtk_label_new(self->title); + GtkWidget *remove_button = gtk_button_new_with_label(_("Remove")); + + g_signal_connect( remove_button, + "clicked", + G_CALLBACK(remove_handler), + self ); + + gtk_widget_set_halign(title_label, GTK_ALIGN_START); + gtk_label_set_ellipsize(GTK_LABEL(title_label), PANGO_ELLIPSIZE_END); + gtk_list_box_row_set_selectable(GTK_LIST_BOX_ROW(self), FALSE); + + gtk_box_pack_start(GTK_BOX(box), title_label, TRUE, TRUE, 6); + gtk_box_pack_end(GTK_BOX(box), remove_button, FALSE, FALSE, 0); + gtk_container_add(GTK_CONTAINER(self), box); + + G_OBJECT_CLASS(celluloid_plugins_manager_item_parent_class) + ->constructed(object); +} + +static void +celluloid_plugins_manager_item_finalize(GObject *object) +{ + CelluloidPluginsManagerItem *self = CELLULOID_PLUGINS_MANAGER_ITEM(object); + + g_free(self->title); + g_free(self->path); + + G_OBJECT_CLASS(celluloid_plugins_manager_item_parent_class) + ->finalize(object); +} + +static void +celluloid_plugins_manager_item_set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ) +{ + CelluloidPluginsManagerItem *self = CELLULOID_PLUGINS_MANAGER_ITEM(object); + + if(property_id == PROP_PARENT) + { + self->parent_window = g_value_get_pointer(value); + } + else if(property_id == PROP_TITLE) + { + g_free(self->title); + + self->title = g_value_dup_string(value); + } + else if(property_id == PROP_PATH) + { + g_free(self->path); + + self->path = g_value_dup_string(value); + } + else + { + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + } +} + +static void +celluloid_plugins_manager_item_get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ) +{ + CelluloidPluginsManagerItem *self = CELLULOID_PLUGINS_MANAGER_ITEM(object); + + if(property_id == PROP_PARENT) + { + g_value_set_pointer(value, self->parent_window); + } + else if(property_id == PROP_TITLE) + { + g_value_set_string(value, self->title); + } + else if(property_id == PROP_PATH) + { + g_value_set_string(value, self->path); + } + else + { + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + } +} + +static void +remove_handler(GtkButton *button, gpointer data) +{ + CelluloidPluginsManagerItem *item = data; + GFile *file = g_file_new_for_path(item->path); + GError *error = NULL; + GtkWidget *confirm_dialog = gtk_message_dialog_new + ( item->parent_window, + GTK_DIALOG_MODAL| + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_QUESTION, + GTK_BUTTONS_YES_NO, + _("Are you sure you want to " + "remove this script? This " + "action cannot be undone.")); + + if(gtk_dialog_run(GTK_DIALOG(confirm_dialog)) == GTK_RESPONSE_YES) + { + g_file_delete(file, NULL, &error); + } + + gtk_widget_destroy(confirm_dialog); + + if(error) + { + GtkWidget *error_dialog; + + error_dialog = gtk_message_dialog_new + ( item->parent_window, + GTK_DIALOG_MODAL| + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_OK, + _("Failed to delete file '%s'. " + "Reason: %s"), + g_file_get_uri(file), + error->message ); + + g_warning( "Failed to delete file '%s'. Reason: %s", + g_file_get_uri(file), + error->message ); + + gtk_dialog_run(GTK_DIALOG(error_dialog)); + + gtk_widget_destroy(error_dialog); + g_error_free(error); + } +} + +static void +celluloid_plugins_manager_item_class_init(CelluloidPluginsManagerItemClass *klass) +{ + GObjectClass *obj_class = G_OBJECT_CLASS(klass); + GParamSpec *pspec = NULL; + + obj_class->constructed = celluloid_plugins_manager_item_constructed; + obj_class->finalize = celluloid_plugins_manager_item_finalize; + obj_class->set_property = celluloid_plugins_manager_item_set_property; + obj_class->get_property = celluloid_plugins_manager_item_get_property; + + pspec = g_param_spec_pointer + ( "parent", + "Parent", + "Parent window for the dialogs", + G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); + g_object_class_install_property(obj_class, PROP_PARENT, pspec); + + pspec = g_param_spec_string + ( "title", + "Title", + "The string to display as the title of the item", + "", + G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); + g_object_class_install_property(obj_class, PROP_TITLE, pspec); + + pspec = g_param_spec_string + ( "path", + "Path", + "The path to the file that this item references", + "", + G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); + g_object_class_install_property(obj_class, PROP_PATH, pspec); +} + +static void +celluloid_plugins_manager_item_init(CelluloidPluginsManagerItem *item) +{ + item->parent_window = NULL; + item->title = NULL; + item->path = NULL; +} + +GtkWidget * +celluloid_plugins_manager_item_new( GtkWindow *parent, + const gchar *title, + const gchar *path ) +{ + return GTK_WIDGET(g_object_new( celluloid_plugins_manager_item_get_type(), + "parent", parent, + "title", title, + "path", path, + NULL)); +} diff --git a/src/celluloid-plugins-manager-item.h b/src/celluloid-plugins-manager-item.h new file mode 100644 index 0000000..0119995 --- /dev/null +++ b/src/celluloid-plugins-manager-item.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2016-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef PLUGINS_MANAGER_ITEM_H +#define PLUGINS_MANAGER_ITEM_H + +#include +#include +#include + +G_BEGIN_DECLS + +#define CELLULOID_TYPE_PLUGINS_MANAGER_ITEM (celluloid_plugins_manager_item_get_type ()) + +G_DECLARE_FINAL_TYPE(CelluloidPluginsManagerItem, celluloid_plugins_manager_item, CELLULOID, PLUGINS_MANAGER_ITEM, GtkListBoxRow) + +GtkWidget * +celluloid_plugins_manager_item_new( GtkWindow *parent, + const gchar *title, + const gchar *path ); + +G_END_DECLS + +#endif diff --git a/src/celluloid-plugins-manager.c b/src/celluloid-plugins-manager.c new file mode 100644 index 0000000..0caeefd --- /dev/null +++ b/src/celluloid-plugins-manager.c @@ -0,0 +1,470 @@ +/* + * Copyright (c) 2016-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include + +#include "celluloid-plugins-manager.h" +#include "celluloid-plugins-manager-item.h" +#include "celluloid-file-chooser.h" +#include "celluloid-common.h" + +enum +{ + PROP_0, + PROP_PARENT, + N_PROPERTIES +}; + +struct _CelluloidPluginsManager +{ + GtkGrid parent; + GtkWindow *parent_window; + GtkWidget *list_box; + GtkWidget *placeholder_label; + GFileMonitor *monitor; + gchar *directory; +}; + +struct _CelluloidPluginsManagerClass +{ + GtkGridClass parent_class; +}; + +G_DEFINE_TYPE(CelluloidPluginsManager, celluloid_plugins_manager, GTK_TYPE_GRID) + +static void +celluloid_plugins_manager_constructed(GObject *object); + +static void +celluloid_plugins_manager_finalize(GObject *object); + +static void +celluloid_plugins_manager_set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ); + +static void +celluloid_plugins_manager_get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ); + +static void +add_handler(GtkButton *button, gpointer data); + +static void +drag_data_handler( GtkWidget *widget, + GdkDragContext *context, + gint x, + gint y, + GtkSelectionData *sel_data, + guint info, + guint time, + gpointer data); + +static void +changed_handler( GFileMonitor *monitor, + GFile *file, + GFile *other_file, + GFileMonitorEvent event_type, + gpointer data ); + +static void +copy_file_to_directory(CelluloidPluginsManager *pmgr, GFile *src); + +static void +celluloid_plugins_manager_constructed(GObject *object) +{ + CelluloidPluginsManager *self = CELLULOID_PLUGINS_MANAGER(object); + gchar *scripts_dir = get_scripts_dir_path(); + + celluloid_plugins_manager_set_directory(self, scripts_dir); + + g_free(scripts_dir); + + G_OBJECT_CLASS(celluloid_plugins_manager_parent_class) + ->constructed(object); +} + +static void +celluloid_plugins_manager_finalize(GObject *object) +{ + CelluloidPluginsManager *pmgr = CELLULOID_PLUGINS_MANAGER(object); + + g_clear_object(&pmgr->monitor); + g_free(pmgr->directory); + + G_OBJECT_CLASS(celluloid_plugins_manager_parent_class) + ->finalize(object); +} + +static void +celluloid_plugins_manager_set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ) +{ + CelluloidPluginsManager *self = CELLULOID_PLUGINS_MANAGER(object); + + if(property_id == PROP_PARENT) + { + self->parent_window = g_value_get_pointer(value); + } + else + { + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + } +} + +static void +celluloid_plugins_manager_get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ) +{ + CelluloidPluginsManager *self = CELLULOID_PLUGINS_MANAGER(object); + + if(property_id == PROP_PARENT) + { + g_value_set_pointer(value, self->parent_window); + } + else + { + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + } +} + +static void +add_handler(GtkButton *button, gpointer data) +{ + CelluloidPluginsManager *pmgr = data; + CelluloidFileChooser *dialog = NULL; + GtkFileFilter *filter; + GtkFileChooser *chooser; + GFile *src = NULL; + + dialog = celluloid_file_chooser_new( _("Add Plugin"), + pmgr->parent_window, + GTK_FILE_CHOOSER_ACTION_OPEN ); + filter = NULL; + chooser = GTK_FILE_CHOOSER(dialog); + + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, _("All Files")); + gtk_file_filter_add_pattern(filter, "*"); + gtk_file_chooser_add_filter(chooser, filter); + + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, _("Lua Plugins")); + gtk_file_filter_add_mime_type(filter, "text/x-lua"); + gtk_file_chooser_add_filter(chooser, filter); + gtk_file_chooser_set_filter(chooser, filter); + + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, _("JavaScript Plugins")); + gtk_file_filter_add_mime_type(filter, "application/javascript"); + gtk_file_chooser_add_filter(chooser, filter); + + filter = gtk_file_filter_new(); + gtk_file_filter_set_name(filter, _("C Plugins")); + gtk_file_filter_add_mime_type(filter, "application/x-sharedlib"); + gtk_file_chooser_add_filter(chooser, filter); + + if(celluloid_file_chooser_run(dialog) == GTK_RESPONSE_ACCEPT) + { + src = gtk_file_chooser_get_file(chooser); + } + + celluloid_file_chooser_destroy(dialog); + + copy_file_to_directory(pmgr, src); + + g_clear_object(&src); +} + +static void +drag_data_handler( GtkWidget *widget, + GdkDragContext *context, + gint x, + gint y, + GtkSelectionData *sel_data, + guint info, + guint time, + gpointer data) +{ + gchar **uri_list = gtk_selection_data_get_uris(sel_data); + + g_assert(uri_list); + + for(gint i = 0; uri_list[i]; i++) + { + GFile *file = g_file_new_for_uri(uri_list[i]); + + copy_file_to_directory(data, file); + + g_clear_object(&file); + } + + g_strfreev(uri_list); +} + +static void +changed_handler( GFileMonitor *monitor, + GFile *file, + GFile *other_file, + GFileMonitorEvent event_type, + gpointer data ) +{ + CelluloidPluginsManager *pmgr = data; + GDir *dir = NULL; + const gchar *filename = NULL; + gboolean empty = TRUE; + const GFileMonitorEvent mask = G_FILE_MONITOR_EVENT_CREATED| + G_FILE_MONITOR_EVENT_DELETED| + G_FILE_MONITOR_EVENT_UNMOUNTED; + + if(event_type&mask) + { + g_assert(pmgr->directory); + + dir = g_dir_open(pmgr->directory, 0, NULL); + } + + if(dir) + { + GtkContainer *list_box; + GList *iter; + + list_box = GTK_CONTAINER(pmgr->list_box); + iter = gtk_container_get_children(list_box); + + while(iter) + { + gtk_widget_destroy(iter->data); + + iter = g_list_next(iter); + } + + do + { + gchar *full_path; + + filename = g_dir_read_name(dir); + full_path = g_build_filename + (pmgr->directory, filename, NULL); + + if(g_file_test(full_path, G_FILE_TEST_IS_REGULAR)) + { + GtkWidget *item; + + item = celluloid_plugins_manager_item_new + ( pmgr->parent_window, + filename, + full_path ); + gtk_container_add + (GTK_CONTAINER(pmgr->list_box), item); + + empty = FALSE; + } + + g_free(full_path); + } + while(filename); + + gtk_widget_show_all(pmgr->list_box); + gtk_widget_set_visible(pmgr->placeholder_label, empty); + + g_dir_close(dir); + } +} + +static void +copy_file_to_directory(CelluloidPluginsManager *pmgr, GFile *src) +{ + gchar *dest_path = NULL; + GFile *dest = NULL; + GError *error = NULL; + + if(src) + { + g_assert(pmgr->directory); + + dest_path = g_build_filename( pmgr->directory, + g_file_get_basename(src), + NULL ); + dest = g_file_new_for_path(dest_path); + + g_file_copy( src, + dest, + G_FILE_COPY_NONE, + NULL, NULL, NULL, + &error ); + } + + if(error) + { + GtkWidget *error_dialog = NULL; + gchar *src_path = NULL; + + src_path = g_file_get_path(src)?:g_file_get_uri(src); + + error_dialog = gtk_message_dialog_new + ( pmgr->parent_window, + GTK_DIALOG_MODAL| + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_OK, + _("Failed to copy file from '%s' " + "to '%s'. Reason: %s"), + src_path, + dest_path, + error->message ); + + g_warning( "Failed to copy file from '%s' to '%s'. " + "Reason: %s", + src_path, + dest_path, + error->message ); + + gtk_dialog_run(GTK_DIALOG(error_dialog)); + + gtk_widget_destroy(error_dialog); + g_error_free(error); + g_free(src_path); + } + + g_clear_object(&dest); + g_free(dest_path); +} + +static void +celluloid_plugins_manager_class_init(CelluloidPluginsManagerClass *klass) +{ + GObjectClass *obj_class = G_OBJECT_CLASS(klass); + GParamSpec *pspec = NULL; + + obj_class->constructed = celluloid_plugins_manager_constructed; + obj_class->finalize = celluloid_plugins_manager_finalize; + obj_class->set_property = celluloid_plugins_manager_set_property; + obj_class->get_property = celluloid_plugins_manager_get_property; + + pspec = g_param_spec_pointer + ( "parent", + "Parent", + "Parent window for the dialogs", + G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); + + g_object_class_install_property(obj_class, PROP_PARENT, pspec); +} + +static void +celluloid_plugins_manager_init(CelluloidPluginsManager *pmgr) +{ + GtkWidget *scrolled_window = gtk_scrolled_window_new(NULL, NULL); + GtkWidget *overlay = gtk_overlay_new(); + GtkWidget *add_button = gtk_button_new_with_label("+"); + + pmgr->list_box = gtk_list_box_new(); + pmgr->placeholder_label = gtk_label_new(_("No plugins found")); + pmgr->parent_window = NULL; + pmgr->monitor = NULL; + pmgr->directory = NULL; + + g_signal_connect( add_button, + "clicked", + G_CALLBACK(add_handler), + pmgr ); + g_signal_connect( pmgr->list_box, + "drag-data-received", + G_CALLBACK(drag_data_handler), + pmgr ); + + gtk_drag_dest_set( pmgr->list_box, + GTK_DEST_DEFAULT_ALL, + NULL, + 0, + GDK_ACTION_LINK ); + gtk_drag_dest_add_uri_targets(pmgr->list_box); + + gtk_widget_set_hexpand(GTK_WIDGET(scrolled_window), TRUE); + gtk_widget_set_vexpand(GTK_WIDGET(scrolled_window), TRUE); + + gtk_widget_set_tooltip_text(add_button, _("Add Plugin")); + gtk_widget_set_sensitive(pmgr->placeholder_label, FALSE); + gtk_widget_set_no_show_all(pmgr->placeholder_label, TRUE); + gtk_widget_show(pmgr->placeholder_label); + + gtk_container_add(GTK_CONTAINER(overlay), scrolled_window); + gtk_overlay_add_overlay(GTK_OVERLAY(overlay), pmgr->placeholder_label); + gtk_overlay_set_overlay_pass_through( GTK_OVERLAY(overlay), + pmgr->placeholder_label, + TRUE ); + + gtk_grid_attach( GTK_GRID(pmgr), + overlay, + 0, 0, 1, 1 ); + gtk_grid_attach( GTK_GRID(pmgr), + add_button, + 0, 1, 1, 1 ); + + gtk_container_add(GTK_CONTAINER(scrolled_window), pmgr->list_box); +} + +GtkWidget * +celluloid_plugins_manager_new(GtkWindow *parent) +{ + return g_object_new( celluloid_plugins_manager_get_type(), + "parent", parent, + NULL); +} + +void +celluloid_plugins_manager_set_directory( CelluloidPluginsManager *pmgr, + const gchar *path ) +{ + GFile *directory = g_file_new_for_path(path); + + g_clear_object(&pmgr->monitor); + g_free(pmgr->directory); + + pmgr->monitor = g_file_monitor_directory( directory, + G_FILE_MONITOR_NONE, + NULL, + NULL ); + pmgr->directory = g_strdup(path); + + if(pmgr->monitor) + { + g_signal_connect( pmgr->monitor, + "changed", + G_CALLBACK(changed_handler), + pmgr ); + + changed_handler( pmgr->monitor, NULL, NULL, + G_FILE_MONITOR_EVENT_CREATED, + pmgr ); + } + else + { + g_warning("Failed to monitor directory %s", path); + } + + g_object_unref(directory); +} diff --git a/src/celluloid-plugins-manager.h b/src/celluloid-plugins-manager.h new file mode 100644 index 0000000..28372de --- /dev/null +++ b/src/celluloid-plugins-manager.h @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2016-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef PLUGINS_MANAGER_H +#define PLUGINS_MANAGER_H + +#include +#include +#include + +G_BEGIN_DECLS + +#define CELLULOID_TYPE_PLUGINS_MANAGER (celluloid_plugins_manager_get_type ()) + +G_DECLARE_FINAL_TYPE(CelluloidPluginsManager, celluloid_plugins_manager, CELLULOID, PLUGINS_MANAGER, GtkGrid) + +GtkWidget * +celluloid_plugins_manager_new(GtkWindow *parent); + +void +celluloid_plugins_manager_set_directory( CelluloidPluginsManager *pmgr, + const gchar *path ); + +G_END_DECLS + +#endif diff --git a/src/celluloid-preferences-dialog.c b/src/celluloid-preferences-dialog.c new file mode 100644 index 0000000..0097070 --- /dev/null +++ b/src/celluloid-preferences-dialog.c @@ -0,0 +1,464 @@ +/* + * Copyright (c) 2014-2020 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include +#include +#include +#include +#include + +#include "celluloid-preferences-dialog.h" +#include "celluloid-plugins-manager.h" +#include "celluloid-main-window.h" +#include "celluloid-def.h" + +typedef struct PreferencesDialogItem PreferencesDialogItem; +typedef enum PreferencesDialogItemType PreferencesDialogItemType; + +struct _CelluloidPreferencesDialog +{ + GtkDialog parent_instance; + GSettings *settings; + GtkWidget *notebook; +}; + +struct _CelluloidPreferencesDialogClass +{ + GtkDialogClass parent_class; +}; + +enum PreferencesDialogItemType +{ + ITEM_TYPE_INVALID, + ITEM_TYPE_GROUP, + ITEM_TYPE_CHECK_BOX, + ITEM_TYPE_FILE_CHOOSER, + ITEM_TYPE_LABEL, + ITEM_TYPE_TEXT_BOX +}; + +struct PreferencesDialogItem +{ + const gchar *label; + const gchar *key; + PreferencesDialogItemType type; +}; + +G_DEFINE_TYPE(CelluloidPreferencesDialog, celluloid_preferences_dialog, GTK_TYPE_DIALOG) + +static void +file_set_handler(GtkFileChooserButton *widget, gpointer data) +{ + GtkWidget *toplevel = gtk_widget_get_toplevel(GTK_WIDGET(widget)); + CelluloidPreferencesDialog *dlg = CELLULOID_PREFERENCES_DIALOG(toplevel); + GtkFileChooser *chooser = GTK_FILE_CHOOSER(widget); + const gchar *key = data; + gchar *filename = gtk_file_chooser_get_filename(chooser)?:g_strdup(""); + + g_settings_set_string(dlg->settings, key, filename); + + g_free(filename); +} + +static void +response_handler(GtkDialog *dialog, gint response_id) +{ + CelluloidPreferencesDialog *dlg = CELLULOID_PREFERENCES_DIALOG(dialog); + + if(response_id == GTK_RESPONSE_ACCEPT) + { + g_settings_apply(dlg->settings); + } + else + { + g_settings_revert(dlg->settings); + } + + g_object_unref(dlg->settings); +} + +static gboolean +key_press_handler(GtkWidget *widget, GdkEventKey *event) +{ + guint keyval = event->keyval; + guint state = event->state; + + const guint mod_mask = GDK_MODIFIER_MASK + &~(GDK_SHIFT_MASK + |GDK_LOCK_MASK + |GDK_MOD2_MASK + |GDK_MOD3_MASK + |GDK_MOD4_MASK + |GDK_MOD5_MASK); + + if((state&mod_mask) == 0 && keyval == GDK_KEY_Return) + { + gtk_dialog_response(GTK_DIALOG(widget), GTK_RESPONSE_ACCEPT); + } + + return GTK_WIDGET_CLASS(celluloid_preferences_dialog_parent_class) + ->key_press_event(widget, event); +} + +static void +free_signal_data(gpointer data, GClosure *closure) +{ + g_free(data); +} + +static GtkWidget * +build_page(const PreferencesDialogItem *items, GSettings *settings) +{ + GtkWidget *grid = gtk_grid_new(); + GSettingsSchema *schema = NULL; + + gtk_container_set_border_width(GTK_CONTAINER(grid), 12); + gtk_grid_set_row_spacing(GTK_GRID(grid), 6); + gtk_grid_set_column_spacing(GTK_GRID(grid), 12); + + g_object_get(settings, "settings-schema", &schema, NULL); + + for(gint i = 0; items[i].type != ITEM_TYPE_INVALID; i++) + { + const gchar *key = items[i].key; + GSettingsSchemaKey *schema_key = + key ? + g_settings_schema_get_key(schema, key) : + NULL; + const gchar *summary = + schema_key ? + g_settings_schema_key_get_summary(schema_key) : + NULL; + const gchar *label = items[i].label ?: summary; + const PreferencesDialogItemType type = items[i].type; + GtkWidget *widget = NULL; + gboolean separate_label = FALSE; + gint width = 1; + gint xpos = 0; + + if(type == ITEM_TYPE_GROUP) + { + widget = gtk_label_new(label); + width = 2; + + gtk_label_set_use_markup(GTK_LABEL(widget), TRUE); + gtk_widget_set_halign(widget, GTK_ALIGN_START); + gtk_widget_set_margin_top(widget, 12); + } + else if(type == ITEM_TYPE_CHECK_BOX) + { + widget = gtk_check_button_new_with_label(label); + width = 2; + + g_settings_bind( settings, + key, + widget, + "active", + G_SETTINGS_BIND_DEFAULT ); + } + else if(type == ITEM_TYPE_FILE_CHOOSER) + { + GtkFileChooser *chooser; + GtkFileFilter *filter; + gchar *filename; + + widget = gtk_file_chooser_button_new + (label, GTK_FILE_CHOOSER_ACTION_OPEN); + chooser = GTK_FILE_CHOOSER(widget); + filter = gtk_file_filter_new(); + filename = g_settings_get_string(settings, key); + separate_label = TRUE; + xpos = 1; + + gtk_file_filter_add_mime_type(filter, "text/plain"); + gtk_file_chooser_set_filter(chooser, filter); + + gtk_widget_set_hexpand(widget, TRUE); + gtk_widget_set_size_request(widget, 100, -1); + gtk_file_chooser_set_filename(chooser, filename); + + /* For simplicity, changes made to the GSettings + * database externally won't be reflected immediately + * for this type of widget. + */ + g_signal_connect_data( widget, + "file-set", + G_CALLBACK(file_set_handler), + g_strdup(key), + free_signal_data, + 0 ); + + g_free(filename); + } + else if(type == ITEM_TYPE_TEXT_BOX) + { + widget = gtk_entry_new(); + separate_label = TRUE; + xpos = 1; + + gtk_widget_set_hexpand(widget, TRUE); + + g_settings_bind( settings, + key, + widget, + "text", + G_SETTINGS_BIND_DEFAULT ); + } + else if(type == ITEM_TYPE_LABEL) + { + widget = gtk_label_new(label); + + gtk_widget_set_halign(widget, GTK_ALIGN_START); + } + + g_assert(widget); + g_assert(xpos == 0 || xpos == 1); + + if(i == 0) + { + gtk_widget_set_margin_top(widget, 0); + } + + if(type != ITEM_TYPE_GROUP) + { + gtk_widget_set_margin_start(widget, 12); + } + + /* Expand the widget to fill both columns if it usually needs a + * separate label but none is provided. + */ + if(separate_label && label && !label[0]) + { + width = 2; + xpos = 0; + } + + gtk_grid_attach(GTK_GRID(grid), widget, xpos, i, width, 1); + + if(separate_label && label && label[0]) + { + GtkWidget *label_widget = gtk_label_new(label); + + /* The grid should only have 2 columns, so the previous + * widget connot be wider than 1 column if it needs a + * separate label. + */ + g_assert(width == 1); + + gtk_grid_attach( GTK_GRID(grid), + label_widget, + 1-xpos, i, 1, 1 ); + + gtk_widget_set_halign(label_widget, GTK_ALIGN_START); + gtk_widget_set_hexpand(label_widget, FALSE); + gtk_widget_set_margin_start(label_widget, 12); + } + } + + return grid; +} + +static void +preferences_dialog_constructed(GObject *obj) +{ + gboolean csd_enabled; + + g_object_get(obj, "use-header-bar", &csd_enabled, NULL); + + if(!csd_enabled) + { + GtkWidget *content_area; + GtkWidget *notebook; + + content_area = gtk_dialog_get_content_area(GTK_DIALOG(obj)); + notebook = CELLULOID_PREFERENCES_DIALOG(obj)->notebook; + + gtk_widget_set_margin_bottom(content_area, 12); + gtk_widget_set_margin_bottom(notebook, 12); + } + + G_OBJECT_CLASS(celluloid_preferences_dialog_parent_class)->constructed(obj); +} + +static void +celluloid_preferences_dialog_class_init(CelluloidPreferencesDialogClass *klass) +{ + GtkWidgetClass *wid_class = GTK_WIDGET_CLASS(klass); + + wid_class->key_press_event = key_press_handler; + GTK_DIALOG_CLASS(klass)->response = response_handler; + G_OBJECT_CLASS(klass)->constructed = preferences_dialog_constructed; + + gtk_widget_class_set_css_name(wid_class, "celluloid-preferences-dialog"); +} + +static void +celluloid_preferences_dialog_init(CelluloidPreferencesDialog *dlg) +{ + const PreferencesDialogItem interface_items[] + = { {NULL, + "autofit-enable", + ITEM_TYPE_CHECK_BOX}, + {NULL, + "csd-enable", + ITEM_TYPE_CHECK_BOX}, + {NULL, + "dark-theme-enable", + ITEM_TYPE_CHECK_BOX}, + {NULL, + "always-use-floating-controls", + ITEM_TYPE_CHECK_BOX}, + {NULL, + "always-autohide-cursor", + ITEM_TYPE_CHECK_BOX}, + {NULL, + "use-skip-buttons-for-playlist", + ITEM_TYPE_CHECK_BOX}, + {NULL, + "last-folder-enable", + ITEM_TYPE_CHECK_BOX}, + {NULL, NULL, ITEM_TYPE_INVALID} }; + const PreferencesDialogItem config_items[] + = { {NULL, + "mpv-config-enable", + ITEM_TYPE_CHECK_BOX}, + {_("mpv configuration file:"), + "mpv-config-file", + ITEM_TYPE_FILE_CHOOSER}, + {NULL, + "mpv-input-config-enable", + ITEM_TYPE_CHECK_BOX}, + {_("mpv input configuration file:"), + "mpv-input-config-file", + ITEM_TYPE_FILE_CHOOSER}, + {NULL, NULL, ITEM_TYPE_INVALID} }; + const PreferencesDialogItem misc_items[] + = { {NULL, + "always-open-new-window", + ITEM_TYPE_CHECK_BOX}, + {NULL, + "always-append-to-playlist", + ITEM_TYPE_CHECK_BOX}, + {NULL, + "ignore-playback-errors", + ITEM_TYPE_CHECK_BOX}, + {NULL, + "prefetch-metadata", + ITEM_TYPE_CHECK_BOX}, + {NULL, + "mpris-enable", + ITEM_TYPE_CHECK_BOX}, + {NULL, + "media-keys-enable", + ITEM_TYPE_CHECK_BOX}, + {_("Extra mpv options:"), + NULL, + ITEM_TYPE_LABEL}, + {"", + "mpv-options", + ITEM_TYPE_TEXT_BOX}, + {NULL, NULL, ITEM_TYPE_INVALID} }; + + GtkWidget *content_area; + GdkGeometry geom; + + /* This 'locks' the height of the dialog while allowing the width to be + * freely adjusted. + */ + geom.max_width = G_MAXINT; + geom.max_height = 0; + + dlg->settings = g_settings_new(CONFIG_ROOT); + dlg->notebook = gtk_notebook_new(); + content_area = gtk_dialog_get_content_area(GTK_DIALOG(dlg)); + + g_settings_delay(dlg->settings); + + gtk_window_set_geometry_hints( GTK_WINDOW(dlg), + GTK_WIDGET(dlg), + &geom, + GDK_HINT_MAX_SIZE ); + + gtk_container_set_border_width(GTK_CONTAINER(content_area), 0); + gtk_container_add(GTK_CONTAINER(content_area), dlg->notebook); + + gtk_notebook_append_page( GTK_NOTEBOOK(dlg->notebook), + build_page(interface_items, dlg->settings), + gtk_label_new(_("Interface")) ); + gtk_notebook_append_page( GTK_NOTEBOOK(dlg->notebook), + build_page(config_items, dlg->settings), + gtk_label_new(_("Config Files")) ); + gtk_notebook_append_page( GTK_NOTEBOOK(dlg->notebook), + build_page(misc_items, dlg->settings), + gtk_label_new(_("Miscellaneous")) ); + gtk_notebook_append_page( GTK_NOTEBOOK(dlg->notebook), + celluloid_plugins_manager_new(GTK_WINDOW(dlg)), + gtk_label_new(_("Plugins")) ); + + gtk_dialog_add_buttons( GTK_DIALOG(dlg), + _("_Cancel"), + GTK_RESPONSE_REJECT, + _("_Save"), + GTK_RESPONSE_ACCEPT, + NULL ); + + gtk_dialog_set_default_response(GTK_DIALOG(dlg), GTK_RESPONSE_ACCEPT); + +} + +GtkWidget * +celluloid_preferences_dialog_new(GtkWindow *parent) +{ + GtkWidget *dlg; + GtkWidget *header_bar; + gboolean csd_enabled; + + csd_enabled = celluloid_main_window_get_csd_enabled(CELLULOID_MAIN_WINDOW(parent)); + + dlg = g_object_new( celluloid_preferences_dialog_get_type(), + "title", _("Preferences"), + "modal", TRUE, + "transient-for", parent, + "use-header-bar", csd_enabled, + NULL ); + + header_bar = gtk_dialog_get_header_bar(GTK_DIALOG(dlg)); + + if(header_bar) + { + /* The defaults use PACK_END which is ugly with multiple buttons + */ + GtkWidget *cancel_btn = gtk_dialog_get_widget_for_response + (GTK_DIALOG(dlg), GTK_RESPONSE_REJECT); + + gtk_container_child_set( GTK_CONTAINER(header_bar), + cancel_btn, + "pack-type", + GTK_PACK_START, + NULL ); + + gtk_header_bar_set_show_close_button + (GTK_HEADER_BAR(header_bar), FALSE); + } + + gtk_widget_hide_on_delete(dlg); + gtk_widget_show_all(dlg); + + return dlg; +} diff --git a/src/celluloid-preferences-dialog.h b/src/celluloid-preferences-dialog.h new file mode 100644 index 0000000..7fb9ef7 --- /dev/null +++ b/src/celluloid-preferences-dialog.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2014-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef PREFERENCES_DIALOG_H +#define PREFERENCES_DIALOG_H + +#include +#include +#include + +G_BEGIN_DECLS + +#define CELLULOID_TYPE_PREFERENCES_DIALOG (celluloid_preferences_dialog_get_type ()) + +G_DECLARE_FINAL_TYPE(CelluloidPreferencesDialog, celluloid_preferences_dialog, CELLULOID, PREFERENCES_DIALOG, GtkDialog) + +GtkWidget * +celluloid_preferences_dialog_new(GtkWindow *parent); + +G_END_DECLS + +#endif diff --git a/src/celluloid-seek-bar.c b/src/celluloid-seek-bar.c new file mode 100644 index 0000000..527b57a --- /dev/null +++ b/src/celluloid-seek-bar.c @@ -0,0 +1,272 @@ +/* + * Copyright (c) 2016-2020 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include +#include +#include + +#include "celluloid-seek-bar.h" +#include "celluloid-time-label.h" +#include "celluloid-common.h" + +struct _CelluloidSeekBar +{ + GtkBox parent_instance; + GtkWidget *seek_bar; + GtkWidget *label; + GtkWidget *popover; + GtkWidget *popover_label; + gdouble pos; + gdouble duration; + gboolean popover_visible; + guint popover_timeout_id; +}; + +struct _CelluloidSeekBarClass +{ + GtkBoxClass parent_class; +}; + +static void +dispose(GObject *object); + +static void +change_value_handler( GtkWidget *widget, + GtkScrollType scroll, + gdouble value, + gpointer data ); + +static gboolean +enter_handler(GtkWidget *widget, GdkEventCrossing *event, gpointer data); + +static gboolean +leave_handler(GtkWidget *widget, GdkEventCrossing *event, gpointer data); + +static gboolean +motion_handler(GtkWidget *widget, GdkEventMotion *event, gpointer data); + +static gboolean +update_popover_visibility(CelluloidSeekBar *bar); + +G_DEFINE_TYPE(CelluloidSeekBar, celluloid_seek_bar, GTK_TYPE_BOX) + +static void +dispose(GObject *object) +{ + g_clear_object(&CELLULOID_SEEK_BAR(object)->popover); + + G_OBJECT_CLASS(celluloid_seek_bar_parent_class)->dispose(object); +} + +static void +change_value_handler( GtkWidget *widget, + GtkScrollType scroll, + gdouble value, + gpointer data ) +{ + CelluloidSeekBar *bar = data; + + if(bar->duration > 0) + { + g_object_set( bar->label, + "time", (gint)bar->pos, + "duration", (gint)bar->duration, + NULL ); + g_signal_emit_by_name(data, "seek", value); + } +} + +static gboolean +enter_handler(GtkWidget *widget, GdkEventCrossing *event, gpointer data) +{ + CelluloidSeekBar *bar = data; + + if(bar->popover_timeout_id > 0) + { + g_source_remove(bar->popover_timeout_id); + } + + /* Don't show popover if duration is unknown */ + if(bar->duration > 0) + { + bar->popover_visible = TRUE; + bar->popover_timeout_id = + g_timeout_add( 100, + (GSourceFunc)update_popover_visibility, + bar ); + } + + return FALSE; +} + +static gboolean +leave_handler(GtkWidget *widget, GdkEventCrossing *event, gpointer data) +{ + CelluloidSeekBar *bar = data; + + if(bar->popover_timeout_id > 0) + { + g_source_remove(bar->popover_timeout_id); + } + + bar->popover_visible = FALSE; + bar->popover_timeout_id = + g_timeout_add(100, (GSourceFunc)update_popover_visibility, bar); + + return FALSE; +} + +static gboolean +motion_handler(GtkWidget *widget, GdkEventMotion *event, gpointer data) +{ + CelluloidSeekBar *bar = data; + GdkRectangle rect = { .x = (gint)event->x, + .y = 0, + .width = 0, + .height = 0 }; + GdkRectangle range_rect; + gdouble progress = 0; + gchar *text = NULL; + + gtk_range_get_range_rect(GTK_RANGE(bar->seek_bar), &range_rect); + rect.x = CLAMP(rect.x, range_rect.x, range_rect.x + range_rect.width); + + gtk_popover_set_pointing_to(GTK_POPOVER(bar->popover), &rect); + + progress = rect.x / (gdouble)(range_rect.x + range_rect.width); + text = format_time( (gint)(progress * bar->duration), + bar->duration >= 3600 ); + gtk_label_set_text(GTK_LABEL(bar->popover_label), text); + + g_free(text); + + return FALSE; +} + +static gboolean +update_popover_visibility(CelluloidSeekBar *bar) +{ + if(bar->popover_visible) + { + gtk_popover_popup(GTK_POPOVER(bar->popover)); + } + else + { + gtk_popover_popdown(GTK_POPOVER(bar->popover)); + } + + bar->popover_timeout_id = 0; + + return G_SOURCE_REMOVE; +} + +static void +celluloid_seek_bar_class_init(CelluloidSeekBarClass *klass) +{ + G_OBJECT_CLASS(klass)->dispose = dispose; + + g_signal_new( "seek", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__DOUBLE, + G_TYPE_NONE, + 1, + G_TYPE_DOUBLE ); +} + +static void +celluloid_seek_bar_init(CelluloidSeekBar *bar) +{ + bar->seek_bar = gtk_scale_new(GTK_ORIENTATION_HORIZONTAL, NULL); + bar->label = celluloid_time_label_new(); + bar->popover = g_object_ref_sink(gtk_popover_new(bar->seek_bar)); + bar->popover_label = gtk_label_new(NULL); + bar->duration = 0; + bar->pos = 0; + bar->popover_visible = FALSE; + bar->popover_timeout_id = 0; + + g_object_set( bar->label, + "time", (gint)bar->pos, + "duration", (gint)bar->duration, + NULL ); + gtk_popover_set_modal(GTK_POPOVER(bar->popover), FALSE); + + gtk_scale_set_draw_value(GTK_SCALE(bar->seek_bar), FALSE); + gtk_range_set_increments(GTK_RANGE(bar->seek_bar), 10, 10); + gtk_widget_set_can_focus(bar->seek_bar, FALSE); + gtk_widget_add_events(bar->seek_bar, GDK_POINTER_MOTION_MASK); + + gtk_container_add(GTK_CONTAINER(bar->popover), bar->popover_label); + gtk_container_set_border_width(GTK_CONTAINER(bar->popover), 6); + gtk_widget_show(bar->popover_label); + + g_signal_connect( bar->seek_bar, + "change-value", + G_CALLBACK(change_value_handler), + bar ); + g_signal_connect( bar->seek_bar, + "enter-notify-event", + G_CALLBACK(enter_handler), + bar ); + g_signal_connect( bar->seek_bar, + "leave-notify-event", + G_CALLBACK(leave_handler), + bar ); + g_signal_connect( bar->seek_bar, + "motion-notify-event", + G_CALLBACK(motion_handler), + bar ); + + gtk_box_pack_start(GTK_BOX(bar), bar->seek_bar, TRUE, TRUE, 0); + gtk_box_pack_end(GTK_BOX(bar), bar->label, FALSE, FALSE, 0); +} + +GtkWidget * +celluloid_seek_bar_new() +{ + return GTK_WIDGET(g_object_new(celluloid_seek_bar_get_type(), NULL)); +} + +void +celluloid_seek_bar_set_duration(CelluloidSeekBar *bar, gdouble duration) +{ + bar->duration = duration; + + g_object_set(bar->label, "duration", (gint)duration, NULL); + gtk_range_set_range(GTK_RANGE(bar->seek_bar), 0, duration); +} + +void +celluloid_seek_bar_set_pos(CelluloidSeekBar *bar, gdouble pos) +{ + gdouble old_pos = bar->pos; + + bar->pos = pos; + + gtk_range_set_value(GTK_RANGE(bar->seek_bar), pos); + + if((gint)old_pos != (gint)pos) + { + g_object_set(bar->label, "time", (gint)pos, NULL); + } +} diff --git a/src/celluloid-seek-bar.h b/src/celluloid-seek-bar.h new file mode 100644 index 0000000..ef3461b --- /dev/null +++ b/src/celluloid-seek-bar.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2016-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef SEEK_BAR_H +#define SEEK_BAR_H + +#include +#include +#include + +G_BEGIN_DECLS + +#define CELLULOID_TYPE_SEEK_BAR (celluloid_seek_bar_get_type()) + +G_DECLARE_FINAL_TYPE(CelluloidSeekBar, celluloid_seek_bar, CELLULOID, SEEK_BAR, GtkBox) + +GtkWidget * +celluloid_seek_bar_new(void); + +void +celluloid_seek_bar_set_duration(CelluloidSeekBar *bar, gdouble duration); + +void +celluloid_seek_bar_set_pos(CelluloidSeekBar *bar, gdouble pos); + +G_END_DECLS + +#endif diff --git a/src/celluloid-shortcuts-window.c b/src/celluloid-shortcuts-window.c new file mode 100644 index 0000000..848adaf --- /dev/null +++ b/src/celluloid-shortcuts-window.c @@ -0,0 +1,183 @@ +/* + * Copyright (c) 2016-2020 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include +#include +#include + +#include "celluloid-shortcuts-window.h" + +struct _CelluloidShortcutsWindow +{ + GtkShortcutsWindow parent; +}; + +struct _CelluloidShortcutsWindowClass +{ + GtkShortcutsWindowClass parent_class; +}; + +struct ShortcutEntry +{ + const gchar *accel; + const gchar *title; +}; + +struct ShortcutGroup +{ + const gchar *title; + const struct ShortcutEntry *entries; +}; + +typedef struct ShortcutEntry ShortcutEntry; +typedef struct ShortcutGroup ShortcutGroup; + +G_DEFINE_TYPE(CelluloidShortcutsWindow, celluloid_shortcuts_window, GTK_TYPE_SHORTCUTS_WINDOW) + +static void +celluloid_shortcuts_window_init(CelluloidShortcutsWindow *wnd) +{ + const ShortcutEntry general[] + = { {"o", _("Open file")}, + {"l", _("Open location")}, + {"o", _("Add file to playlist")}, + {"l", _("Add location to playlist")}, + {"p", _("Show preferences dialog")}, + {"h", _("Toggle controls")}, + {"F9", _("Toggle playlist")}, + {"F11 f", _("Toggle fullscreen mode")}, + {"Escape", _("Leave fullscreen mode")}, + {"o", _("Toggle OSD states between normal and playback time/duration")}, + {"i", _("Show filename on the OSD")}, + {"o p", _("Show progress, elapsed time, and duration on the OSD")}, + {NULL, NULL} }; + const ShortcutEntry seeking[] + = { {"leftarrow rightarrow", _("Seek backward/forward 5 seconds")}, + {"leftarrow rightarrow", _("Exact seek backward/forward 1 second")}, + {"downarrow uparrow", _("Seek backward/forward 1 minute")}, + {"downarrow uparrow", _("Exact seek backward/forward 5 seconds")}, + {"leftarrow rightarrow", _("Seek to previous/next subtitle")}, + {"comma period", _("Step backward/forward a single frame")}, + {"Page_Up Page_Down", _("Seek to the beginning of the previous/next chapter")}, + {NULL, NULL} }; + const ShortcutEntry playback[] + = { {"bracketleft bracketright", _("Decrease/increase playback speed by 10%")}, + {"braceleft braceright", _("Halve/double current playback speed")}, + {"BackSpace", _("Reset playback speed to normal")}, + {"less greater", _("Go backward/forward in the playlist")}, + {"Delete", _("Remove selected playlist item")}, + {"s", _("Save playlist")}, + {"l", _("Set/clear A-B loop points")}, + {"l", _("Toggle infinite looping")}, + {"p space", _("Pause or unpause")}, + {"q q", _("Quit")}, + {"q", _("Save current playback position and quit")}, + {NULL, NULL} }; + const ShortcutEntry playlist[] + = { {"f", _("Enter search mode")}, + {"g", _("Jump to next match")}, + {"g", _("Jump to previous match")}, + {"Escape", _("Exit search mode")}, + {NULL, NULL} }; + const ShortcutEntry audio[] + = { {"numbersign", _("Cycle through audio tracks")}, + {"slash asterisk", _("Decrease/increase volume")}, + {"9 0", _("Decrease/increase volume")}, + {"m", _("Mute or unmute")}, + {"plus minus", _("Adjust audio delay by +/- 0.1 seconds")}, + {NULL, NULL} }; + const ShortcutEntry subtitle[] + = { {"v", _("Toggle subtitle visibility")}, + {"j j", _("Cycle through available subtitles")}, + {"z z", _("Adjust subtitle delay by +/- 0.1 seconds")}, + {"u", _("Toggle SSA/ASS subtitles style override")}, + {"r r", _("Move subtitles up/down")}, + {"v", _("Toggle VSFilter aspect compatibility mode")}, + {NULL, NULL} }; + const ShortcutEntry video[] + = { {"underscore", _("Cycle through video tracks")}, + {"w w", _("Decrease/increase pan-and-scan range")}, + {"s", _("Take a screenshot")}, + {"s", _("Take a screenshot, without subtitles")}, + {"s", _("Take a screenshot, as the window shows it")}, + {"0", _("Resize video to half its original size")}, + {"1", _("Resize video to its original size")}, + {"2", _("Resize video to double its original size")}, + {"1 2", _("Adjust contrast")}, + {"3 4", _("Adjust brightness")}, + {"5 6", _("Adjust gamma")}, + {"7 8", _("Adjust saturation")}, + {"d", _("Activate or deactivate deinterlacer")}, + {"a", _("Cycle aspect ratio override")}, + {NULL, NULL} }; + const ShortcutGroup groups[] + = { {_("User Interface"), general}, + {_("Video"), video}, + {_("Audio"), audio}, + {_("Subtitle"), subtitle}, + {_("Playback"), playback}, + {_("Seeking"), seeking}, + {_("Playlist"), playlist}, + {NULL, NULL} }; + GtkWidget *section = g_object_new + ( gtk_shortcuts_section_get_type(), + "section-name", "shortcuts", + "visible", TRUE, + NULL ); + + for(gint i = 0; groups[i].title; i++) + { + const ShortcutEntry *entries = groups[i].entries; + GtkWidget *group = g_object_new + ( gtk_shortcuts_group_get_type(), + "title", groups[i].title, + NULL ); + + for(gint j = 0; entries[j].accel; j++) + { + GtkWidget *entry; + + entry = g_object_new + ( gtk_shortcuts_shortcut_get_type(), + "accelerator", entries[j].accel, + "title", entries[j].title, + NULL ); + + gtk_container_add(GTK_CONTAINER(group), entry); + } + + gtk_container_add(GTK_CONTAINER(section), group); + } + + gtk_container_add(GTK_CONTAINER(wnd), section); +} + +static void +celluloid_shortcuts_window_class_init(CelluloidShortcutsWindowClass *klass) +{ +} + +GtkWidget * +celluloid_shortcuts_window_new(GtkWindow *parent) +{ + return GTK_WIDGET(g_object_new( celluloid_shortcuts_window_get_type(), + "transient-for", parent, + "modal", TRUE, + NULL)); +} diff --git a/src/celluloid-shortcuts-window.h b/src/celluloid-shortcuts-window.h new file mode 100644 index 0000000..885920b --- /dev/null +++ b/src/celluloid-shortcuts-window.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2016-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef SHORTCUTS_WINDOW_H +#define SHORTCUTS_WINDOW_H + +#include +#include +#include + +G_BEGIN_DECLS + +#define CELLULOID_TYPE_SHORTCUTS_WINDOW (celluloid_shortcuts_window_get_type ()) + +G_DECLARE_FINAL_TYPE(CelluloidShortcutsWindow, celluloid_shortcuts_window, CELLULOID, SHORTCUTS_WINDOW, GtkShortcutsWindow) + +GtkWidget * +celluloid_shortcuts_window_new(GtkWindow *parent); + +G_END_DECLS + +#endif diff --git a/src/celluloid-time-label.c b/src/celluloid-time-label.c new file mode 100644 index 0000000..b2b4f8e --- /dev/null +++ b/src/celluloid-time-label.c @@ -0,0 +1,295 @@ +/* + * Copyright (c) 2020 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include + +#include "celluloid-common.h" +#include "celluloid-time-label.h" + +enum +{ + PROP_INVALID, + PROP_DURATION, + PROP_TIME +}; + +struct _CelluloidTimeLabel +{ + GtkLabel parent; + gint duration; + gint time; +}; + +struct _CelluloidTimeLabelClass +{ + GtkLabelClass parent_class; +}; + +G_DEFINE_TYPE(CelluloidTimeLabel, celluloid_time_label, GTK_TYPE_LABEL) + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ); + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ); + +static void +get_max_pixel_size(GtkLabel *label, gint length, gint *width, gint *height); + +static void +update_size(CelluloidTimeLabel *label); + +static void +update_label(CelluloidTimeLabel *label); + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ) +{ + CelluloidTimeLabel *self = CELLULOID_TIME_LABEL(object); + + switch(property_id) + { + case PROP_DURATION: + { + gint old_duration = self->duration; + + self->duration = g_value_get_int(value); + + // Only update size if we are transitioning from having + // duration to not having one and vice versa, or if the + // number of digits in the hours part of the duration + // changed. + if( (old_duration <= 0) != + (self->duration <= 0) || + (gint)log10(old_duration / 3600) != + (gint)log10(self->duration / 3600) ) + { + update_size(self); + } + + update_label(self); + } + break; + + case PROP_TIME: + { + gint old_time = self->time; + + self->time = g_value_get_int(value); + + // Only update size if we don't have a duration, and the + // number of digits in the hour part of the time + // changed. We don't need to update the size if we have + // duration since the size would have been already + // updated when the duration was set, and the + // resulting size will have enough space to accomodate + // all possible time values. + if( self->duration <= 0 && + (gint)log10(old_time / 3600) != + (gint)log10(self->time / 3600) ) + { + update_size(self); + } + + update_label(self); + } + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ) +{ + CelluloidTimeLabel *self = CELLULOID_TIME_LABEL(object); + + switch(property_id) + { + case PROP_DURATION: + g_value_set_int(value, self->duration); + break; + + case PROP_TIME: + g_value_set_int(value, self->time); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static void +get_max_pixel_size(GtkLabel *label, gint duration, gint *width, gint *height) +{ + PangoLayout *layout = pango_layout_copy(gtk_label_get_layout(label)); + + // Find a number in which all digits are 1s, with the same number of + // digits as the hour part of the duration. This will be used to + // generate other numbers which will then be used to generate test + // strings. + const gint hour_digits = (gint)log10(duration/3600) + 1; + const gint ones = ((gint)pow(10, hour_digits) - 1) / 9; + + for(gint i = 0; i < 10; i++) + { + gint test_width = 0; + gint test_height = 0; + + // Numbers with repeated digits to be used to generate test + // strings. + const gint hour = ones * i; + const gint min_sec = 11 * i; + + gchar *time_str = + duration < 3600 ? + g_strdup_printf("%02d:%02d", min_sec, min_sec) : + g_strdup_printf( "%0*d:%02d:%02d", + hour_digits, + hour, + min_sec, + min_sec ); + gchar *test_str = + duration <= 0 ? + g_strdup(time_str) : + g_strdup_printf("%s/%s", time_str, time_str); + + pango_layout_set_text + (layout, test_str, -1); + pango_layout_get_pixel_size + (layout, &test_width, &test_height); + + // Keep maximum width and height. + if(width) + { + *width = *width < test_width ? test_width : *width; + } + + if(height) + { + *height = *height < test_height ? test_height : *height; + } + + g_free(time_str); + g_free(test_str); + } + + g_object_unref(layout); +} + +static void +update_size(CelluloidTimeLabel *label) +{ + gint width = 0; + + get_max_pixel_size( GTK_LABEL(label), + label->duration, + &width, + NULL ); + gtk_widget_set_size_request + (GTK_WIDGET(label), width, -1); +} + +static void +update_label(CelluloidTimeLabel *label) +{ + gint sec = (gint)label->time; + gint duration = (gint)label->duration; + gchar *text; + + if(duration > 0) + { + gchar *sec_str = format_time(sec, duration >= 3600); + gchar *duration_str = format_time(duration, duration >= 3600); + + text = g_strdup_printf("%s/%s", sec_str, duration_str); + + g_free(sec_str); + g_free(duration_str); + } + else + { + text = g_strdup_printf("%02d:%02d", (sec%3600)/60, sec%60); + } + + gtk_label_set_text(GTK_LABEL(label), text); +} + +static void +celluloid_time_label_init(CelluloidTimeLabel *label) +{ + label->duration = 0; + label->time = 0; + + update_size(label); +} + +static void +celluloid_time_label_class_init(CelluloidTimeLabelClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS(klass); + GParamSpec *pspec = NULL; + + object_class->set_property = set_property; + object_class->get_property = get_property; + + pspec = g_param_spec_int + ( "duration", + "Duration", + "The full duration of the media being played", + 0, + G_MAXINT, + 0, + G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_DURATION, pspec); + + pspec = g_param_spec_int + ( "time", + "Time", + "Timestamp of the current position", + 0, + G_MAXINT, + 0, + G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_TIME, pspec); +} + +GtkWidget * +celluloid_time_label_new() +{ + GObject *object = g_object_new(celluloid_time_label_get_type(), NULL); + + return GTK_WIDGET(object); +} + diff --git a/src/celluloid-time-label.h b/src/celluloid-time-label.h new file mode 100644 index 0000000..8c18aa0 --- /dev/null +++ b/src/celluloid-time-label.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2020 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef TIME_LABEL_H +#define TIME_LABEL_H + +#include + +G_BEGIN_DECLS + +#define CELLULOID_TYPE_TIME_LABEL (celluloid_time_label_get_type()) + +G_DECLARE_FINAL_TYPE(CelluloidTimeLabel, celluloid_time_label, CELLULOID, TIME_LABEL, GtkLabel) + +GtkWidget * +celluloid_time_label_new(void); + +G_END_DECLS + +#endif diff --git a/src/celluloid-video-area.c b/src/celluloid-video-area.c new file mode 100644 index 0000000..f9c9b82 --- /dev/null +++ b/src/celluloid-video-area.c @@ -0,0 +1,580 @@ +/* + * Copyright (c) 2016-2021 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include "celluloid-video-area.h" +#include "celluloid-control-box.h" +#include "celluloid-common.h" +#include "celluloid-def.h" + +#include +#include +#include +#include + +#ifdef GDK_WINDOWING_X11 +#include +#endif + +enum +{ + PROP_0, + PROP_TITLE, + N_PROPERTIES +}; + +struct _CelluloidVideoArea +{ + GtkOverlay parent_instance; + GtkWidget *stack; + GtkWidget *draw_area; + GtkWidget *gl_area; + GtkWidget *control_box; + GtkWidget *header_bar; + GtkWidget *control_box_revealer; + GtkWidget *header_bar_revealer; + guint32 last_motion_time; + gdouble last_motion_x; + gdouble last_motion_y; + guint timeout_tag; + gboolean fullscreen; + gboolean fs_control_hover; +}; + +struct _CelluloidVideoAreaClass +{ + GtkOverlayClass parent_class; +}; + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ); + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ); + +static +void destroy(GtkWidget *widget); + +static +void set_cursor_visible(CelluloidVideoArea *area, gboolean visible); + +static +gboolean timeout_handler(gpointer data); + +static +gboolean motion_notify_event(GtkWidget *widget, GdkEventMotion *event); + +static gboolean +fs_control_crossing_handler( GtkWidget *widget, + GdkEventCrossing *event, + gpointer data ); + +G_DEFINE_TYPE(CelluloidVideoArea, celluloid_video_area, GTK_TYPE_OVERLAY) + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ) +{ + CelluloidVideoArea *self = CELLULOID_VIDEO_AREA(object); + + switch(property_id) + { + case PROP_TITLE: + g_object_set_property( G_OBJECT(self->header_bar), + pspec->name, + value ); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ) +{ + CelluloidVideoArea *self = CELLULOID_VIDEO_AREA(object); + + switch(property_id) + { + case PROP_TITLE: + g_object_get_property( G_OBJECT(self->header_bar), + pspec->name, + value ); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static void +destroy(GtkWidget *widget) +{ + g_source_clear(&CELLULOID_VIDEO_AREA(widget)->timeout_tag); +} + +static void +set_cursor_visible(CelluloidVideoArea *area, gboolean visible) +{ + GdkWindow *window; + GdkCursor *cursor; + + window = gtk_widget_get_window(GTK_WIDGET(area)); + + if(visible) + { + cursor = gdk_cursor_new_from_name + (gdk_display_get_default(), "default"); + } + else + { + cursor = gdk_cursor_new_for_display + (gdk_display_get_default(), GDK_BLANK_CURSOR); + } + + gdk_window_set_cursor(window, cursor); + g_object_unref(cursor); +} + +static gboolean +timeout_handler(gpointer data) +{ + CelluloidVideoArea *area = data; + CelluloidControlBox *control_box = CELLULOID_CONTROL_BOX(area->control_box); + CelluloidHeaderBar *header_bar = CELLULOID_HEADER_BAR(area->header_bar); + gboolean open_button_active = FALSE; + gboolean menu_button_active = FALSE; + + g_object_get( header_bar, + "open-button-active", &open_button_active, + "menu-button-active", &menu_button_active, + NULL ); + + if(control_box + && !area->fs_control_hover + && !celluloid_control_box_get_volume_popup_visible(control_box) + && !open_button_active + && !menu_button_active) + { + GSettings *settings; + gboolean always_autohide; + + settings = g_settings_new(CONFIG_ROOT); + always_autohide = g_settings_get_boolean + (settings, "always-autohide-cursor"); + + gtk_revealer_set_reveal_child + (GTK_REVEALER(area->control_box_revealer), FALSE); + gtk_revealer_set_reveal_child + (GTK_REVEALER(area->header_bar_revealer), FALSE); + + set_cursor_visible(area, !(always_autohide || area->fullscreen)); + area->timeout_tag = 0; + + g_object_unref(settings); + } + else if(!control_box) + { + area->timeout_tag = 0; + } + + /* Try again later if timeout_tag has not been cleared. This means that + * either one of the popups is visible or the cursor is hovering over + * the control box, preventing it from being hidden. + */ + return (area->timeout_tag != 0); +} + +static gboolean +motion_notify_event(GtkWidget *widget, GdkEventMotion *event) +{ + GSettings *settings = g_settings_new(CONFIG_ROOT); + CelluloidVideoArea *area = CELLULOID_VIDEO_AREA(widget); + const gint height = gtk_widget_get_allocated_height(widget); + + const gdouble unhide_speed = + g_settings_get_double(settings, "controls-unhide-cursor-speed"); + const gdouble dead_zone = + g_settings_get_double(settings, "controls-dead-zone-size"); + + const gdouble dist = sqrt( pow(event->x - area->last_motion_x, 2) + + pow(event->y - area->last_motion_y, 2) ); + const gdouble speed = dist / (event->time - area->last_motion_time); + + area->last_motion_time = event->time; + area->last_motion_x = event->x; + area->last_motion_y = event->y; + + if(speed >= unhide_speed) + { + GdkCursor *cursor = gdk_cursor_new_from_name + ( gdk_display_get_default(), + "default" ); + + gdk_window_set_cursor(gtk_widget_get_window(widget), cursor); + + if( area->control_box && + ABS((2 * event->y - height) / height) > dead_zone ) + { + gtk_revealer_set_reveal_child + ( GTK_REVEALER(area->control_box_revealer), + TRUE ); + gtk_revealer_set_reveal_child + ( GTK_REVEALER(area->header_bar_revealer), + area->fullscreen ); + } + + g_source_clear(&area->timeout_tag); + area->timeout_tag = g_timeout_add_seconds + ( FS_CONTROL_HIDE_DELAY, + timeout_handler, + area ); + } + + g_object_unref(settings); + + return GTK_WIDGET_CLASS(celluloid_video_area_parent_class) + ->motion_notify_event(widget, event); +} + +static gboolean +render_handler(GtkGLArea *gl_area, GdkGLContext *context, gpointer data) +{ + g_signal_emit_by_name(data, "render"); + + return TRUE; +} + +static void +popover_notify_handler(GObject *gobject, GParamSpec *pspec, gpointer data) +{ + gboolean value = FALSE; + + g_object_get(gobject, pspec->name, &value, NULL); + + if(value) + { + set_cursor_visible(CELLULOID_VIDEO_AREA(data), TRUE); + } +} + +static void +reveal_notify_handler(GObject *gobject, GParamSpec *pspec, gpointer data) +{ + /* Due to a GTK+ bug, the header bar isn't hidden completely if hidden + * by a GtkRevealer. Workaround this by manually hiding the revealer + * along with the header bar when the revealer completes its transition + * to hidden state. + */ + CelluloidVideoArea *area = data; + gboolean reveal_child = TRUE; + gboolean child_revealed = TRUE; + + g_object_get( gobject, + "reveal-child", &reveal_child, + "child-revealed", &child_revealed, + NULL ); + + gtk_widget_set_visible( GTK_WIDGET(area->header_bar_revealer), + area->fullscreen && + (reveal_child || child_revealed) ); +} + +static gboolean +fs_control_crossing_handler( GtkWidget *widget, + GdkEventCrossing *event, + gpointer data ) +{ + CELLULOID_VIDEO_AREA(data)->fs_control_hover = + (event->type == GDK_ENTER_NOTIFY); + + return FALSE; +} + +static void +celluloid_video_area_class_init(CelluloidVideoAreaClass *klass) +{ + GObjectClass *obj_class = G_OBJECT_CLASS(klass); + GtkWidgetClass *wgt_class = GTK_WIDGET_CLASS(klass); + GParamSpec *pspec = NULL; + + obj_class->set_property = set_property; + obj_class->get_property = get_property; + wgt_class->destroy = destroy; + wgt_class->motion_notify_event = motion_notify_event; + + gtk_widget_class_set_css_name(wgt_class, "celluloid-video-area"); + + g_signal_new( "render", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0 ); + + pspec = g_param_spec_string + ( "title", + "Title", + "The title of the header bar", + NULL, + G_PARAM_READWRITE ); + g_object_class_install_property(obj_class, PROP_TITLE, pspec); +} + +static void +celluloid_video_area_init(CelluloidVideoArea *area) +{ + GtkTargetEntry targets[] = DND_TARGETS; + + /* GDK_BUTTON_RELEASE_MASK is needed so that GtkMenuButtons can + * hide their menus when vid_area is clicked. + */ + const gint extra_events = GDK_BUTTON_PRESS_MASK| + GDK_BUTTON_RELEASE_MASK| + GDK_POINTER_MOTION_MASK| + GDK_SMOOTH_SCROLL_MASK| + GDK_SCROLL_MASK; + + area->stack = gtk_stack_new(); + area->draw_area = gtk_drawing_area_new(); + area->gl_area = gtk_gl_area_new(); + area->control_box = celluloid_control_box_new(); + area->header_bar = celluloid_header_bar_new(); + area->control_box_revealer = gtk_revealer_new(); + area->header_bar_revealer = gtk_revealer_new(); + area->last_motion_time = 0; + area->last_motion_x = -1; + area->last_motion_y = -1; + area->timeout_tag = 0; + area->fullscreen = FALSE; + area->fs_control_hover = FALSE; + + gtk_drag_dest_set( GTK_WIDGET(area), + GTK_DEST_DEFAULT_ALL, + targets, + G_N_ELEMENTS(targets), + GDK_ACTION_COPY ); + + gtk_widget_add_events(area->draw_area, extra_events); + gtk_widget_add_events(area->gl_area, extra_events); + + gtk_widget_set_valign(area->control_box_revealer, GTK_ALIGN_END); + gtk_revealer_set_transition_type + (GTK_REVEALER(area->control_box_revealer), + GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP); + gtk_revealer_set_reveal_child + (GTK_REVEALER(area->control_box_revealer), FALSE); + + gtk_widget_set_valign(area->header_bar_revealer, GTK_ALIGN_START); + gtk_revealer_set_reveal_child + (GTK_REVEALER(area->header_bar_revealer), FALSE); + + gtk_widget_show_all(area->control_box); + gtk_widget_hide(area->control_box_revealer); + gtk_widget_set_no_show_all(area->control_box_revealer, TRUE); + + gtk_widget_show_all(area->header_bar); + gtk_widget_hide(area->header_bar_revealer); + gtk_widget_set_no_show_all(area->header_bar_revealer, TRUE); + + g_signal_connect( area->gl_area, + "render", + G_CALLBACK(render_handler), + area ); + g_signal_connect( area->control_box, + "notify::volume-popup-visible", + G_CALLBACK(popover_notify_handler), + area ); + g_signal_connect( area->header_bar, + "notify::open-button-active", + G_CALLBACK(popover_notify_handler), + area ); + g_signal_connect( area->header_bar, + "notify::menu-button-active", + G_CALLBACK(popover_notify_handler), + area ); + g_signal_connect( area->header_bar_revealer, + "notify::reveal-child", + G_CALLBACK(reveal_notify_handler), + area ); + g_signal_connect( area->header_bar_revealer, + "notify::child-revealed", + G_CALLBACK(reveal_notify_handler), + area ); + g_signal_connect( area, + "enter-notify-event", + G_CALLBACK(fs_control_crossing_handler), + area ); + g_signal_connect( area, + "leave-notify-event", + G_CALLBACK(fs_control_crossing_handler), + area ); + + gtk_stack_add_named(GTK_STACK(area->stack), area->draw_area, "draw"); + gtk_stack_add_named(GTK_STACK(area->stack), area->gl_area, "gl"); + gtk_stack_set_visible_child(GTK_STACK(area->stack), area->draw_area); + + gtk_container_add( GTK_CONTAINER(area->header_bar_revealer), + area->header_bar ); + gtk_container_add( GTK_CONTAINER(area->control_box_revealer), + area->control_box ); + + gtk_overlay_add_overlay(GTK_OVERLAY(area), area->control_box_revealer); + gtk_overlay_add_overlay(GTK_OVERLAY(area), area->header_bar_revealer); + gtk_container_add(GTK_CONTAINER(area), area->stack); +} + +GtkWidget * +celluloid_video_area_new() +{ + return GTK_WIDGET(g_object_new(celluloid_video_area_get_type(), NULL)); +} + +void +celluloid_video_area_update_track_list( CelluloidVideoArea *area, + const GPtrArray *track_list ) +{ + celluloid_header_bar_update_track_list + (CELLULOID_HEADER_BAR(area->header_bar), track_list); +} + +void +celluloid_video_area_update_disc_list( CelluloidVideoArea *area, + const GPtrArray *disc_list ) +{ + celluloid_header_bar_update_disc_list + (CELLULOID_HEADER_BAR(area->header_bar), disc_list); +} + +void +celluloid_video_area_set_fullscreen_state( CelluloidVideoArea *area, + gboolean fullscreen ) +{ + if(area->fullscreen != fullscreen) + { + area->fullscreen = fullscreen; + + gtk_widget_hide(area->header_bar_revealer); + set_cursor_visible(area, !fullscreen); + + gtk_revealer_set_reveal_child + (GTK_REVEALER(area->control_box_revealer), FALSE); + gtk_revealer_set_reveal_child + (GTK_REVEALER(area->header_bar_revealer), FALSE); + + celluloid_header_bar_set_fullscreen_state + (CELLULOID_HEADER_BAR(area->header_bar), fullscreen); + + if(area->control_box) + { + celluloid_control_box_set_fullscreen_state + (CELLULOID_CONTROL_BOX(area->control_box), fullscreen); + } + } +} + +void +celluloid_video_area_set_control_box_visible( CelluloidVideoArea *area, + gboolean visible ) +{ + gtk_widget_set_visible(area->control_box_revealer, visible); +} + +void +celluloid_video_area_set_use_opengl( CelluloidVideoArea *area, + gboolean use_opengl ) +{ + gtk_stack_set_visible_child + ( GTK_STACK(area->stack), + use_opengl?area->gl_area:area->draw_area ); +} + +void +celluloid_video_area_queue_render(CelluloidVideoArea *area) +{ + gtk_gl_area_queue_render(GTK_GL_AREA(area->gl_area)); +} + +GtkDrawingArea * +celluloid_video_area_get_draw_area(CelluloidVideoArea *area) +{ + return GTK_DRAWING_AREA(area->draw_area); +} + +GtkGLArea * +celluloid_video_area_get_gl_area(CelluloidVideoArea *area) +{ + return GTK_GL_AREA(area->gl_area); +} + +CelluloidHeaderBar * +celluloid_video_area_get_header_bar(CelluloidVideoArea *area) +{ + return CELLULOID_HEADER_BAR(area->header_bar); +} + +CelluloidControlBox * +celluloid_video_area_get_control_box(CelluloidVideoArea *area) +{ + return CELLULOID_CONTROL_BOX(area->control_box); +} + +gint64 +celluloid_video_area_get_xid(CelluloidVideoArea *area) +{ +#ifdef GDK_WINDOWING_X11 + if(GDK_IS_X11_DISPLAY(gdk_display_get_default())) + { + GtkWidget *parent = gtk_widget_get_parent(GTK_WIDGET(area)); + GdkWindow *window = NULL; + + if(parent && !gtk_widget_get_realized(area->draw_area)) + { + gtk_widget_realize(area->draw_area); + } + + window = gtk_widget_get_window(area->draw_area); + + if(!window) + { + g_critical("Failed to get XID of video area"); + } + + return window?(gint64)gdk_x11_window_get_xid(window):-1; + } +#endif + + return -1; +} diff --git a/src/celluloid-video-area.h b/src/celluloid-video-area.h new file mode 100644 index 0000000..69d9a84 --- /dev/null +++ b/src/celluloid-video-area.h @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2016-2020 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef VIDEO_AREA_H +#define VIDEO_AREA_H + +#include +#include +#include + +#include "celluloid-control-box.h" +#include "celluloid-header-bar.h" + +#define CELLULOID_TYPE_VIDEO_AREA (celluloid_video_area_get_type ()) + +G_DECLARE_FINAL_TYPE(CelluloidVideoArea, celluloid_video_area, CELLULOID, VIDEO_AREA, GtkOverlay) + +GtkWidget * +celluloid_video_area_new(void); + +void +celluloid_video_area_update_track_list( CelluloidVideoArea *hdr, + const GPtrArray *track_list ); + +void +celluloid_video_area_update_disc_list( CelluloidVideoArea *hdr, + const GPtrArray *disc_list ); + +void +celluloid_video_area_set_fullscreen_state( CelluloidVideoArea *area, + gboolean fullscreen ); + +void +celluloid_video_area_set_control_box_visible( CelluloidVideoArea *area, + gboolean visible ); + +void +celluloid_video_area_set_use_opengl( CelluloidVideoArea *area, + gboolean use_opengl ); + +void +celluloid_video_area_queue_render(CelluloidVideoArea *area); + +GtkDrawingArea * +celluloid_video_area_get_draw_area(CelluloidVideoArea *area); + +GtkGLArea * +celluloid_video_area_get_gl_area(CelluloidVideoArea *area); + +CelluloidHeaderBar * +celluloid_video_area_get_header_bar(CelluloidVideoArea *area); + +CelluloidControlBox * +celluloid_video_area_get_control_box(CelluloidVideoArea *area); + +gint64 +celluloid_video_area_get_xid(CelluloidVideoArea *area); + +#endif diff --git a/src/celluloid-view.c b/src/celluloid-view.c new file mode 100644 index 0000000..85ab788 --- /dev/null +++ b/src/celluloid-view.c @@ -0,0 +1,1869 @@ +/* + * Copyright (c) 2017-2021 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include + +#include "celluloid-view.h" +#include "celluloid-file-chooser.h" +#include "celluloid-open-location-dialog.h" +#include "celluloid-preferences-dialog.h" +#include "celluloid-shortcuts-window.h" +#include "celluloid-authors.h" +#include "celluloid-marshal.h" +#include "celluloid-menu.h" +#include "celluloid-common.h" +#include "celluloid-def.h" + +enum +{ + PROP_0, + PROP_PLAYLIST_COUNT, + PROP_PAUSE, + PROP_VOLUME, + PROP_VOLUME_MAX, + PROP_DURATION, + PROP_PLAYLIST_POS, + PROP_TRACK_LIST, + PROP_DISC_LIST, + PROP_SKIP_ENABLED, + PROP_LOOP, + PROP_SHUFFLE, + PROP_BORDER, + PROP_FULLSCREEN, + PROP_MAXIMIZED, + PROP_DISPLAY_FPS, + PROP_SEARCHING, + N_PROPERTIES +}; + +struct _CelluloidView +{ + CelluloidMainWindow parent; + gboolean disposed; + gboolean has_dialog; + + /* Properties */ + gint playlist_count; + gboolean pause; + gdouble volume; + gdouble volume_max; + gdouble duration; + gint playlist_pos; + GPtrArray *track_list; + GPtrArray *disc_list; + gboolean skip_enabled; + gboolean control_box_enabled; + gboolean loop; + gboolean shuffle; + gboolean border; + gboolean fullscreen; + gboolean maximized; + gdouble display_fps; + gboolean searching; +}; + +struct _CelluloidViewClass +{ + CelluloidMainWindowClass parent_class; +}; + +G_DEFINE_TYPE(CelluloidView, celluloid_view, CELLULOID_TYPE_MAIN_WINDOW) + +static void +constructed(GObject *object); + +static void +dispose(GObject *object); + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ); + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ); + +static void +load_css(CelluloidView *view); + +static void +load_settings(CelluloidView *view); + +static void +save_playlist(CelluloidView *view, GFile *file, GError **error); + +static void +show_message_dialog( CelluloidView *view, + GtkMessageType type, + const gchar *title, + const gchar *prefix, + const gchar *msg ); + +static void +update_display_fps(CelluloidView *view); + +static void +show_open_track_dialog(CelluloidView *view, TrackType type); + +/* Dialog responses */ +static void +message_dialog_response_handler( GtkDialog *dialog, + gint response_id, + gpointer data); + +static void +open_dialog_response_handler(GtkDialog *dialog, gint response_id, gpointer data); + +static void +open_location_dialog_response_handler( GtkDialog *dialog, + gint response_id, + gpointer data ); + +static void +open_track_dialog_response_handler( GtkDialog *dialog, + gint response_id, + gpointer data ); + +static void +preferences_dialog_response_handler( GtkDialog *dialog, + gint response_id, + gpointer data ); + +static void +realize_handler(GtkWidget *widget, gpointer data); + +static void +size_allocate_handler( GtkWidget *widget, + GdkRectangle *allocation, + gpointer data ); + +static void +render_handler(CelluloidVideoArea *area, gpointer data); + +static gboolean +draw_handler(GtkWidget *widget, cairo_t *cr, gpointer data); + +static void +drag_data_handler( GtkWidget *widget, + GdkDragContext *context, + gint x, + gint y, + GtkSelectionData *sel_data, + guint info, + guint time, + gpointer data ); + +static gboolean +window_state_handler(GtkWidget *widget, GdkEvent *event, gpointer data); + +static void +screen_changed_handler( GtkWidget *wnd, + GdkScreen *previous_screen, + gpointer data ); + +static gboolean +delete_handler(GtkWidget *widget, GdkEvent *event, gpointer data); + +static void +playlist_row_activated_handler( CelluloidPlaylistWidget *playlist, + gint64 pos, + gpointer data ); + +static void +playlist_row_inserted_handler( CelluloidPlaylistWidget *widget, + gint pos, + gpointer data ); + +static void +playlist_row_deleted_handler( CelluloidPlaylistWidget *widget, + gint pos, + gpointer data ); + +static void +playlist_row_reordered_handler( CelluloidPlaylistWidget *widget, + gint src, + gint dest, + gpointer data ); + +static void +constructed(GObject *object) +{ + G_OBJECT_CLASS(celluloid_view_parent_class)->constructed(object); + + CelluloidView *view = + CELLULOID_VIEW(object); + CelluloidMainWindow *wnd = + CELLULOID_MAIN_WINDOW(view); + CelluloidVideoArea *video_area = + celluloid_main_window_get_video_area(wnd); + CelluloidPlaylistWidget *playlist = + celluloid_main_window_get_playlist(wnd); + CelluloidControlBox *control_box = + celluloid_main_window_get_control_box(wnd); + + g_object_bind_property( view, "duration", + control_box, "duration", + G_BINDING_DEFAULT ); + g_object_bind_property( wnd, "is-maximized", + view, "maximized", + G_BINDING_DEFAULT ); + g_object_bind_property( view, "pause", + control_box, "pause", + G_BINDING_DEFAULT ); + g_object_bind_property( view, "skip-enabled", + control_box, "skip-enabled", + G_BINDING_DEFAULT ); + g_object_bind_property( view, "loop", + control_box, "loop", + G_BINDING_BIDIRECTIONAL ); + g_object_bind_property( view, "shuffle", + control_box, "shuffle", + G_BINDING_BIDIRECTIONAL ); + g_object_bind_property( view, "volume", + control_box, "volume", + G_BINDING_BIDIRECTIONAL ); + g_object_bind_property( view, "volume-max", + control_box, "volume-max", + G_BINDING_DEFAULT ); + g_object_bind_property( playlist, "playlist-count", + view, "playlist-count", + G_BINDING_DEFAULT ); + g_object_bind_property( playlist, "searching", + view, "searching", + G_BINDING_BIDIRECTIONAL ); + + celluloid_main_window_load_state(wnd); + load_css(view); + load_settings(view); + + g_signal_connect( video_area, + "size-allocate", + G_CALLBACK(size_allocate_handler), + view ); + g_signal_connect( video_area, + "render", + G_CALLBACK(render_handler), + view ); + g_signal_connect( video_area, + "drag-data-received", + G_CALLBACK(drag_data_handler), + view ); + g_signal_connect( playlist, + "drag-data-received", + G_CALLBACK(drag_data_handler), + view ); + g_signal_connect( wnd, + "window-state-event", + G_CALLBACK(window_state_handler), + view ); + g_signal_connect( wnd, + "screen-changed", + G_CALLBACK(screen_changed_handler), + view ); + g_signal_connect( wnd, + "delete-event", + G_CALLBACK(delete_handler), + view ); + g_signal_connect( playlist, + "row-activated", + G_CALLBACK(playlist_row_activated_handler), + view ); + g_signal_connect( playlist, + "row-inserted", + G_CALLBACK(playlist_row_inserted_handler), + view ); + g_signal_connect( playlist, + "row-deleted", + G_CALLBACK(playlist_row_deleted_handler), + view ); + g_signal_connect( playlist, + "rows-reordered", + G_CALLBACK(playlist_row_reordered_handler), + view ); +} + +static void +dispose(GObject *object) +{ + CelluloidView *view = CELLULOID_VIEW(object); + + if(!view->disposed) + { + celluloid_main_window_save_state(CELLULOID_MAIN_WINDOW(object)); + view->disposed = TRUE; + } + + G_OBJECT_CLASS(celluloid_view_parent_class)->dispose(object); +} + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ) +{ + CelluloidView *self = + CELLULOID_VIEW(object); + CelluloidMainWindow *wnd = + CELLULOID_MAIN_WINDOW(self); + CelluloidControlBox* control_box = + celluloid_main_window_get_control_box(wnd); + + switch(property_id) + { + case PROP_PLAYLIST_COUNT: + self->playlist_count = g_value_get_int(value); + + g_object_set( control_box, + "enabled", + self->playlist_count > 0, + NULL ); + + if(self->playlist_count <= 0) + { + celluloid_view_reset(self); + } + break; + + case PROP_PAUSE: + self->pause = g_value_get_boolean(value); + break; + + case PROP_VOLUME: + self->volume = g_value_get_double(value); + break; + + case PROP_VOLUME_MAX: + self->volume_max = g_value_get_double(value); + break; + + case PROP_DURATION: + self->duration = g_value_get_double(value); + break; + + case PROP_PLAYLIST_POS: + self->playlist_pos = g_value_get_int(value); + + CelluloidPlaylistWidget *playlist = + celluloid_main_window_get_playlist(wnd); + + celluloid_playlist_widget_set_indicator_pos + (playlist, self->playlist_pos); + break; + + case PROP_TRACK_LIST: + self->track_list = g_value_get_pointer(value); + celluloid_main_window_update_track_list(wnd, self->track_list); + break; + + case PROP_DISC_LIST: + self->disc_list = g_value_get_pointer(value); + celluloid_main_window_update_disc_list(wnd, self->disc_list); + break; + + case PROP_SKIP_ENABLED: + self->skip_enabled = g_value_get_boolean(value); + break; + + case PROP_LOOP: + self->loop = g_value_get_boolean(value); + break; + + case PROP_SHUFFLE: + self->shuffle = g_value_get_boolean(value); + break; + + case PROP_BORDER: + self->border = g_value_get_boolean(value); + { + GtkWidget *titlebar = + gtk_window_get_titlebar(GTK_WINDOW(wnd)); + + if(titlebar) + { + gtk_widget_set_visible(titlebar, self->border); + } + + gtk_window_set_decorated(GTK_WINDOW(wnd), self->border); + } + break; + + case PROP_FULLSCREEN: + self->fullscreen = g_value_get_boolean(value); + celluloid_main_window_set_fullscreen(wnd, self->fullscreen); + break; + + case PROP_MAXIMIZED: + self->maximized = g_value_get_boolean(value); + + if(self->maximized) + { + gtk_window_maximize(GTK_WINDOW(wnd)); + } + else + { + gtk_window_unmaximize(GTK_WINDOW(wnd)); + } + break; + + case PROP_DISPLAY_FPS: + self->display_fps = g_value_get_double(value); + break; + + case PROP_SEARCHING: + // We do not display playlist in fullscreen mode so refuse to + // enter search mode here if we're in fullscreen mode. + self->searching = !self->fullscreen && + g_value_get_boolean(value); + + // Show playlist if we're about to enter search mode and it + // isn't already visible. + if(self->searching && !celluloid_view_get_playlist_visible(self)) + { + celluloid_view_set_playlist_visible(self, TRUE); + } + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ) +{ + CelluloidView *self = CELLULOID_VIEW(object); + + switch(property_id) + { + case PROP_PLAYLIST_COUNT: + g_value_set_int(value, self->playlist_count); + break; + + case PROP_PAUSE: + g_value_set_boolean(value, self->pause); + break; + + case PROP_VOLUME: + g_value_set_double(value, self->volume); + break; + + case PROP_VOLUME_MAX: + g_value_set_double(value, self->volume_max); + break; + + case PROP_DURATION: + g_value_set_double(value, self->duration); + break; + + case PROP_PLAYLIST_POS: + g_value_set_int(value, self->playlist_pos); + break; + + case PROP_TRACK_LIST: + g_value_set_pointer(value, self->track_list); + break; + + case PROP_DISC_LIST: + g_value_set_pointer(value, self->disc_list); + break; + + case PROP_SKIP_ENABLED: + g_value_set_boolean(value, self->skip_enabled); + break; + + case PROP_LOOP: + g_value_set_boolean(value, self->loop); + break; + + case PROP_SHUFFLE: + g_value_set_boolean(value, self->shuffle); + break; + + case PROP_BORDER: + g_value_set_boolean(value, self->border); + break; + + case PROP_FULLSCREEN: + g_value_set_boolean(value, self->fullscreen); + break; + + case PROP_MAXIMIZED: + g_value_set_boolean(value, self->maximized); + break; + + case PROP_DISPLAY_FPS: + g_value_set_double(value, self->display_fps); + break; + + case PROP_SEARCHING: + g_value_set_boolean(value, self->searching); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static void +load_css(CelluloidView *view) +{ + const gchar *style; + GtkCssProvider *style_provider; + gboolean css_loaded; + + style = "celluloid-video-area{background-color: black}" + "celluloid-preferences-dialog .dialog-action-box{margin-right: 12px}"; + style_provider = gtk_css_provider_new(); + css_loaded = gtk_css_provider_load_from_data + (style_provider, style, -1, NULL); + + if(!css_loaded) + { + g_warning ("Failed to apply background color css"); + } + + gtk_style_context_add_provider_for_screen + ( gtk_window_get_screen(GTK_WINDOW(view)), + GTK_STYLE_PROVIDER(style_provider), + GTK_STYLE_PROVIDER_PRIORITY_APPLICATION ); + + g_object_unref(style_provider); +} + +static void +load_settings(CelluloidView *view) +{ + GSettings *settings = + g_settings_new(CONFIG_ROOT); + CelluloidMainWindow *wnd = + CELLULOID_MAIN_WINDOW(view); + CelluloidControlBox *control_box = + celluloid_main_window_get_control_box(wnd); + + gboolean csd_enable; + gboolean dark_theme_enable; + + csd_enable = g_settings_get_boolean + (settings, "csd-enable"); + dark_theme_enable = g_settings_get_boolean + (settings, "dark-theme-enable"); + + g_object_set( control_box, + "show-fullscreen-button", !csd_enable, + "skip-enabled", FALSE, + NULL ); + g_object_set( gtk_settings_get_default(), + "gtk-application-prefer-dark-theme", dark_theme_enable, + NULL ); + + g_object_unref(settings); +} + +static void +save_playlist(CelluloidView *view, GFile *file, GError **error) +{ + CelluloidMainWindow *wnd = CELLULOID_MAIN_WINDOW(view); + CelluloidPlaylistWidget *wgt = celluloid_main_window_get_playlist(wnd); + GPtrArray *playlist = celluloid_playlist_widget_get_contents(wgt); + gboolean rc = TRUE; + GOutputStream *dest_stream = NULL; + + if(file) + { + GFileOutputStream *file_stream; + + file_stream = g_file_replace( file, + NULL, + FALSE, + G_FILE_CREATE_NONE, + NULL, + error ); + dest_stream = G_OUTPUT_STREAM(file_stream); + rc = !!dest_stream; + } + + for(guint i = 0; rc && i < playlist->len; i++) + { + gsize written; + + CelluloidPlaylistEntry *entry = g_ptr_array_index(playlist, i); + + rc = g_output_stream_printf( dest_stream, + &written, + NULL, + NULL, + "%s\n", + entry->filename); + } + + if(dest_stream) + { + g_output_stream_close(dest_stream, NULL, error); + } + + g_ptr_array_free(playlist, TRUE); +} + +void +show_message_dialog( CelluloidView *view, + GtkMessageType type, + const gchar *title, + const gchar *prefix, + const gchar *msg ) +{ + GtkWidget *dialog = NULL; + GtkWidget *msg_area = NULL; + GList *children = NULL; + + if(view->has_dialog) + { + g_info("Error dialog suppressed because one is already being shown"); + + if(prefix) + { + g_info("Content: *%s* [%s] %s", title, prefix, msg); + } + else + { + g_info("Content: *%s* %s", title, msg); + } + } + else if(prefix) + { + gchar *prefix_escaped = g_markup_printf_escaped("%s", prefix); + gchar *msg_escaped = g_markup_printf_escaped("%s", msg); + + dialog = gtk_message_dialog_new_with_markup + ( GTK_WINDOW(view), + GTK_DIALOG_DESTROY_WITH_PARENT, + type, + GTK_BUTTONS_OK, + "[%s] %s", + prefix_escaped, + msg_escaped ); + + g_free(prefix_escaped); + g_free(msg_escaped); + } + else + { + dialog = gtk_message_dialog_new + ( GTK_WINDOW(view), + GTK_DIALOG_DESTROY_WITH_PARENT, + type, + GTK_BUTTONS_OK, + "%s", + msg ); + } + + if(dialog) + { + view->has_dialog = TRUE; + msg_area = gtk_message_dialog_get_message_area + (GTK_MESSAGE_DIALOG(dialog)); + children = gtk_container_get_children(GTK_CONTAINER(msg_area)); + + for(GList *iter = children; iter; iter = g_list_next(iter)) + { + if(GTK_IS_LABEL(iter->data)) + { + gtk_label_set_line_wrap_mode + ( GTK_LABEL(iter->data), + PANGO_WRAP_WORD_CHAR ); + } + } + + g_list_free(children); + + g_signal_connect + ( dialog, + "response", + G_CALLBACK(message_dialog_response_handler), + view ); + + gtk_window_set_title(GTK_WINDOW(dialog), title); + gtk_window_set_modal(GTK_WINDOW(dialog), TRUE); + gtk_widget_show_all(dialog); + } +} + +static void +update_display_fps(CelluloidView *view) +{ + GtkWidget *wnd = GTK_WIDGET(view); + GdkWindow *gdkwindow = gtk_widget_get_window(wnd); + GdkScreen *screen = gtk_window_get_screen(GTK_WINDOW(wnd)); + GdkDisplay *display = gdk_screen_get_display(screen); + GdkMonitor *monitor = gdk_display_get_monitor_at_window + (display, gdkwindow); + + view->display_fps = gdk_monitor_get_refresh_rate(monitor)/1000.0; + g_object_notify(G_OBJECT(view), "display-fps"); +} + +static void +show_open_track_dialog(CelluloidView *view, TrackType type) +{ + const gchar *title = NULL; + + switch(type) + { + case TRACK_TYPE_AUDIO: + title = _("Load Audio Track…"); + break; + + case TRACK_TYPE_VIDEO: + title = _("Load Video Track…"); + break; + + case TRACK_TYPE_SUBTITLE: + title = _("Load Subtitle Track…"); + break; + + default: + g_assert_not_reached(); + break; + } + + CelluloidFileChooser *chooser = celluloid_file_chooser_new + ( title, + GTK_WINDOW(view), + GTK_FILE_CHOOSER_ACTION_OPEN ); + + g_object_set_data( G_OBJECT(chooser), + "track-type", + (gpointer)type ); + + g_signal_connect( chooser, + "response", + G_CALLBACK(open_track_dialog_response_handler), + view ); + + celluloid_file_chooser_set_default_filters + ( chooser, + type == TRACK_TYPE_AUDIO, + type == TRACK_TYPE_VIDEO, + FALSE, + type == TRACK_TYPE_SUBTITLE ); + + celluloid_file_chooser_show(chooser); +} + +static void +message_dialog_response_handler( GtkDialog *dialog, + gint response_id, + gpointer data) +{ + CELLULOID_VIEW(data)->has_dialog = FALSE; + + gtk_widget_destroy(GTK_WIDGET(dialog)); +} + +static void +open_dialog_response_handler(GtkDialog *dialog, gint response_id, gpointer data) +{ + GPtrArray *args = data; + CelluloidView *view = g_ptr_array_index(args, 0); + gboolean *append = g_ptr_array_index(args, 1); + + if(response_id == GTK_RESPONSE_ACCEPT) + { + GtkFileChooser *chooser = GTK_FILE_CHOOSER(dialog); + GSList *uri_slist = gtk_file_chooser_get_filenames(chooser); + + if(uri_slist) + { + const gchar **uris = gslist_to_array(uri_slist); + + g_signal_emit_by_name(view, "file-open", uris, *append); + g_free(uris); + } + + g_slist_free_full(uri_slist, g_free); + } + + celluloid_file_chooser_destroy(dialog); + + g_free(append); + g_ptr_array_free(args, TRUE); +} + +static void +open_location_dialog_response_handler( GtkDialog *dialog, + gint response_id, + gpointer data ) +{ + GPtrArray *args = data; + CelluloidView *view = g_ptr_array_index(args, 0); + gboolean *append = g_ptr_array_index(args, 1); + + if(response_id == GTK_RESPONSE_ACCEPT) + { + CelluloidOpenLocationDialog *location_dialog; + const gchar *uris[2]; + + location_dialog = CELLULOID_OPEN_LOCATION_DIALOG(dialog); + uris[0] = celluloid_open_location_dialog_get_string + (location_dialog); + uris[1] = NULL; + + g_signal_emit_by_name(view, "file-open", uris, *append); + } + + gtk_widget_destroy(GTK_WIDGET(dialog)); + + g_free(append); + g_ptr_array_free(args, TRUE); +} + +static void +open_track_dialog_response_handler( GtkDialog *dialog, + gint response_id, + gpointer data ) +{ + if(response_id == GTK_RESPONSE_ACCEPT) + { + GtkFileChooser *chooser = GTK_FILE_CHOOSER(dialog); + GSList *uri_list = gtk_file_chooser_get_filenames(chooser); + const gchar *name = NULL; + + TrackType type = + (TrackType) + g_object_get_data(G_OBJECT(dialog), "track-type"); + + switch(type) + { + case TRACK_TYPE_AUDIO: + name = "audio-track-load"; + break; + + case TRACK_TYPE_VIDEO: + name = "video-track-load"; + break; + + case TRACK_TYPE_SUBTITLE: + name = "subtitle-track-load"; + break; + + default: + g_assert_not_reached(); + break; + } + + for(GSList *iter = uri_list; iter; iter = g_slist_next(iter)) + { + g_signal_emit_by_name(data, name, *iter); + } + + g_slist_free_full(uri_list, g_free); + } + + celluloid_file_chooser_destroy(CELLULOID_FILE_CHOOSER(dialog)); +} + +static void +preferences_dialog_response_handler( GtkDialog *dialog, + gint response_id, + gpointer data ) +{ + if(response_id == GTK_RESPONSE_ACCEPT) + { + CelluloidMainWindow *wnd; + GSettings *settings; + gboolean csd_enable; + + wnd = CELLULOID_MAIN_WINDOW(data); + settings = g_settings_new(CONFIG_ROOT); + csd_enable = g_settings_get_boolean(settings, "csd-enable"); + + if(celluloid_main_window_get_csd_enabled(wnd) != csd_enable) + { + show_message_dialog( CELLULOID_VIEW(data), + GTK_MESSAGE_INFO, + g_get_application_name(), + NULL, + _("Enabling or disabling " + "client-side decorations " + "requires restarting to " + "take effect.") ); + } + + gtk_widget_queue_draw(GTK_WIDGET(wnd)); + g_signal_emit_by_name(data, "preferences-updated"); + + g_object_unref(settings); + } + + gtk_widget_destroy(GTK_WIDGET(dialog)); +} + +static void +realize_handler(GtkWidget *widget, gpointer data) +{ + update_display_fps(CELLULOID_VIEW(widget)); +} + +static void +size_allocate_handler( GtkWidget *widget, + GdkRectangle *allocation, + gpointer data ) +{ + g_signal_emit_by_name( data, + "video-area-resize", + allocation->width, + allocation->height ); +} + +static void +render_handler(CelluloidVideoArea *area, gpointer data) +{ + g_signal_emit_by_name(data, "render"); +} + +static gboolean +draw_handler(GtkWidget *widget, cairo_t *cr, gpointer data) +{ + CelluloidView *view = + CELLULOID_VIEW(widget); + CelluloidMainWindow *wnd = + CELLULOID_MAIN_WINDOW(view); + CelluloidPlaylistWidget *playlist = + celluloid_main_window_get_playlist(wnd); + const GSignalMatchType match = + G_SIGNAL_MATCH_ID|G_SIGNAL_MATCH_DATA; + const guint signal_id = + g_signal_lookup("draw", CELLULOID_TYPE_VIEW); + + g_signal_handlers_disconnect_matched + (view, match, signal_id, 0, 0, NULL, NULL); + + if(celluloid_playlist_widget_empty(playlist)) + { + CelluloidControlBox *control_box; + + control_box = celluloid_main_window_get_control_box(wnd); + g_object_set(control_box, "enabled", FALSE, NULL); + } + + g_signal_emit_by_name(view, "ready"); + + return FALSE; +} + +static void +drag_data_handler( GtkWidget *widget, + GdkDragContext *context, + gint x, + gint y, + GtkSelectionData *sel_data, + guint info, + guint time, + gpointer data ) +{ + CelluloidView *view = data; + gchar *type = gdk_atom_name(gtk_selection_data_get_target(sel_data)); + const guchar *raw_data = gtk_selection_data_get_data(sel_data); + gchar **uri_list = gtk_selection_data_get_uris(sel_data); + GdkDragAction action = gdk_drag_context_get_selected_action(context); + + // When shift is held, action will be set to GDK_ACTION_MOVE + gboolean append = CELLULOID_IS_PLAYLIST_WIDGET(widget) || + action == GDK_ACTION_MOVE; + + if(g_strcmp0(type, "PLAYLIST_PATH") == 0) + { + GtkTreePath *path = gtk_tree_path_new_from_string + ((const gchar *)raw_data); + gint pos = gtk_tree_path_get_indices(path)[0]; + + g_assert(path); + + g_signal_emit_by_name(view, "playlist-item-activated", pos); + + gtk_tree_path_free(path); + } + else + { + if(!uri_list) + { + uri_list = g_malloc(2*sizeof(gchar *)); + uri_list[0] = g_strdup((gchar *)raw_data); + uri_list[1] = NULL; + } + + g_signal_emit_by_name(view, "file-open", uri_list, append); + } + + g_strfreev(uri_list); + g_free(type); +} + +static gboolean +window_state_handler(GtkWidget *widget, GdkEvent *event, gpointer data) +{ + CelluloidView *view = data; + GdkEventWindowState *state = (GdkEventWindowState *)event; + + if(state->changed_mask&GDK_WINDOW_STATE_FULLSCREEN) + { + view->fullscreen = state->new_window_state& + GDK_WINDOW_STATE_FULLSCREEN; + + g_object_notify(data, "fullscreen"); + } + + return FALSE; +} + +static void +screen_changed_handler( GtkWidget *wnd, + GdkScreen *previous_screen, + gpointer data ) +{ + update_display_fps(data); +} + +static gboolean +delete_handler(GtkWidget *widget, GdkEvent *event, gpointer data) +{ + if(!celluloid_main_window_get_fullscreen(CELLULOID_MAIN_WINDOW(widget))) + { + celluloid_main_window_save_state(CELLULOID_MAIN_WINDOW(widget)); + } + + return FALSE; +} + +static void +playlist_row_activated_handler( CelluloidPlaylistWidget *playlist, + gint64 pos, + gpointer data ) +{ + g_signal_emit_by_name(data, "playlist-item-activated", pos); +} + +static void +playlist_row_inserted_handler( CelluloidPlaylistWidget *widget, + gint pos, + gpointer data ) +{ + g_signal_emit_by_name(data, "playlist-item-inserted", pos); +} + +static void +playlist_row_deleted_handler( CelluloidPlaylistWidget *widget, + gint pos, + gpointer data ) +{ + if(celluloid_playlist_widget_empty(widget)) + { + celluloid_view_reset(data); + } + + g_signal_emit_by_name(data, "playlist-item-deleted", pos); +} + +static void +playlist_row_reordered_handler( CelluloidPlaylistWidget *widget, + gint src, + gint dest, + gpointer data ) +{ + g_signal_emit_by_name(data, "playlist-reordered", src, dest); +} + +static void +celluloid_view_class_init(CelluloidViewClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS(klass); + GParamSpec *pspec = NULL; + + object_class->constructed = constructed; + object_class->dispose = dispose; + object_class->set_property = set_property; + object_class->get_property = get_property; + + pspec = g_param_spec_int + ( "playlist-count", + "Playlist count", + "The number of items in playlist", + 0, + G_MAXINT, + 0, + G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_PLAYLIST_COUNT, pspec); + + pspec = g_param_spec_boolean + ( "pause", + "Pause", + "Whether or not the player is paused", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_PAUSE, pspec); + + pspec = g_param_spec_double + ( "volume", + "Volume", + "The volume the volume button is set to", + 0.0, + G_MAXDOUBLE, + 0.0, + G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_VOLUME, pspec); + + pspec = g_param_spec_double + ( "volume-max", + "Volume Max", + "The maximum amplification level", + 0.0, + G_MAXDOUBLE, + 100.0, + G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_VOLUME_MAX, pspec); + + pspec = g_param_spec_double + ( "duration", + "Duration", + "The duration the seek bar is using", + 0.0, + G_MAXDOUBLE, + 0.0, + G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_DURATION, pspec); + + pspec = g_param_spec_int + ( "playlist-pos", + "Playlist position", + "The position of the current item in playlist", + -1, + G_MAXINT, + -1, + G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_PLAYLIST_POS, pspec); + + pspec = g_param_spec_pointer + ( "track-list", + "Track list", + "The list of tracks in the playing file", + G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_TRACK_LIST, pspec); + + pspec = g_param_spec_pointer + ( "disc-list", + "Disc list", + "The list of mounted discs", + G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_DISC_LIST, pspec); + + pspec = g_param_spec_boolean + ( "skip-enabled", + "Skip enabled", + "Whether or not skip buttons are shown", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_SKIP_ENABLED, pspec); + + pspec = g_param_spec_boolean + ( "loop", + "Loop", + "Whether or not the the loop button is active", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_LOOP, pspec); + + pspec = g_param_spec_boolean + ( "shuffle", + "Shuffle", + "Whether or not the the shuffle button is active", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_SHUFFLE, pspec); + + pspec = g_param_spec_boolean + ( "border", + "Border", + "Whether or not the main window should have decorations", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_BORDER, pspec); + + pspec = g_param_spec_boolean + ( "fullscreen", + "Fullscreen", + "Whether or not the player is current in fullscreen mode", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_FULLSCREEN, pspec); + + pspec = g_param_spec_boolean + ( "maximized", + "Maximized", + "Whether or not the main window is maximized", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_MAXIMIZED, pspec); + + pspec = g_param_spec_double + ( "display-fps", + "Display FPS", + "The display rate of the monitor the window is on", + 0.0, + G_MAXDOUBLE, + 0.0, + G_PARAM_READABLE ); + g_object_class_install_property(object_class, PROP_DISPLAY_FPS, pspec); + + pspec = g_param_spec_boolean + ( "searching", + "Searching", + "Whether or not the user is searching the playlist", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_SEARCHING, pspec); + + g_signal_new( "video-area-resize", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST|G_SIGNAL_DETAILED, + 0, + NULL, + NULL, + g_cclosure_gen_marshal_VOID__INT_INT, + G_TYPE_NONE, + 2, + G_TYPE_INT, + G_TYPE_INT ); + + /* Controls-related signals */ + g_signal_new( "volume-changed", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__DOUBLE, + G_TYPE_NONE, + 1, + G_TYPE_DOUBLE ); + g_signal_new( "ready", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0 ); + g_signal_new( "render", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0 ); + g_signal_new( "preferences-updated", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0 ); + g_signal_new( "audio-track-load", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, + 1, + G_TYPE_STRING ); + g_signal_new( "video-track-load", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, + 1, + G_TYPE_STRING ); + g_signal_new( "subtitle-track-load", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, + 1, + G_TYPE_STRING ); + g_signal_new( "file-open", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_gen_marshal_VOID__POINTER_BOOLEAN, + G_TYPE_NONE, + 2, + G_TYPE_POINTER, + G_TYPE_BOOLEAN ); + g_signal_new( "playlist-item-activated", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__INT, + G_TYPE_NONE, + 1, + G_TYPE_INT ); + g_signal_new( "playlist-item-inserted", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__INT, + G_TYPE_NONE, + 1, + G_TYPE_INT ); + g_signal_new( "playlist-item-deleted", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__INT, + G_TYPE_NONE, + 1, + G_TYPE_INT ); + g_signal_new( "playlist-reordered", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_gen_marshal_VOID__INT_INT, + G_TYPE_NONE, + 2, + G_TYPE_INT, + G_TYPE_INT ); +} + +static void +celluloid_view_init(CelluloidView *view) +{ + view->disposed = FALSE; + view->has_dialog = FALSE; + view->playlist_count = 0; + view->pause = FALSE; + view->volume = 0.0; + view->volume_max = 100.0; + view->duration = 0.0; + view->playlist_pos = 0; + view->disc_list = NULL; + view->skip_enabled = FALSE; + view->loop = FALSE; + view->shuffle = FALSE; + view->border = FALSE; + view->fullscreen = FALSE; + view->maximized = FALSE; + view->display_fps = 0; + view->searching = FALSE; + + g_signal_connect(view, "realize", G_CALLBACK(realize_handler), NULL); + g_signal_connect_after(view, "draw", G_CALLBACK(draw_handler), NULL); +} + +CelluloidView * +celluloid_view_new(CelluloidApplication *app, gboolean always_floating) +{ + GObject *obj = g_object_new( celluloid_view_get_type(), + "application", + app, + "always-use-floating-controls", + always_floating, + NULL ); + CelluloidView *view = CELLULOID_VIEW(obj); + GtkApplication *gtk_app = GTK_APPLICATION(app); + GSettings *settings = g_settings_new(CONFIG_ROOT); + + if(g_settings_get_boolean(settings, "csd-enable")) + { + celluloid_main_window_enable_csd(CELLULOID_MAIN_WINDOW(view)); + } + else + { + GMenu *full_menu = g_menu_new(); + + celluloid_menu_build_full(full_menu, NULL, NULL); + gtk_application_set_menubar(gtk_app, G_MENU_MODEL(full_menu)); + } + + g_object_unref(settings); + + return view; +} + +CelluloidMainWindow * +celluloid_view_get_main_window(CelluloidView *view) +{ + return CELLULOID_MAIN_WINDOW(view); +} + +void +celluloid_view_show_open_dialog( CelluloidView *view, + gboolean folder, + gboolean append ) +{ + CelluloidFileChooser *chooser; + GPtrArray *args; + const gchar *title; + GtkFileChooserAction action; + gboolean *append_buf; + + if(folder) + { + title = append ? _("Add Folder to Playlist") : _("Open Folder"); + action = GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER; + } + else + { + title = append ? _("Add File to Playlist") : _("Open File"); + action = GTK_FILE_CHOOSER_ACTION_OPEN; + } + + chooser = celluloid_file_chooser_new(title, GTK_WINDOW(view), action); + args = g_ptr_array_new(); + append_buf = g_malloc(sizeof(gboolean)); + *append_buf = append; + + g_ptr_array_add(args, view); + g_ptr_array_add(args, append_buf); + + g_signal_connect( chooser, + "response", + G_CALLBACK(open_dialog_response_handler), + args ); + + if(!folder) + { + celluloid_file_chooser_set_default_filters + (chooser, TRUE, TRUE, TRUE, TRUE); + } + + celluloid_file_chooser_show(chooser); +} + +void +celluloid_view_show_open_location_dialog(CelluloidView *view, gboolean append) +{ + GtkWidget *dlg; + GPtrArray *args; + gboolean *append_buf; + + dlg = celluloid_open_location_dialog_new + ( GTK_WINDOW(view), + append? + _("Add Location to Playlist"): + _("Open Location") ); + args = g_ptr_array_sized_new(2); + append_buf = g_malloc(sizeof(gboolean)); + + *append_buf = append; + + g_ptr_array_add(args, view); + g_ptr_array_add(args, append_buf); + + g_signal_connect + ( dlg, + "response", + G_CALLBACK(open_location_dialog_response_handler), + args ); + + gtk_widget_show_all(dlg); +} + +void +celluloid_view_show_open_audio_track_dialog(CelluloidView *view) +{ + show_open_track_dialog(view, TRACK_TYPE_AUDIO); +} + +void +celluloid_view_show_open_video_track_dialog(CelluloidView *view) +{ + show_open_track_dialog(view, TRACK_TYPE_VIDEO); +} + +void +celluloid_view_show_open_subtitle_track_dialog(CelluloidView *view) +{ + show_open_track_dialog(view, TRACK_TYPE_SUBTITLE); +} + +void +celluloid_view_show_save_playlist_dialog(CelluloidView *view) +{ + GFile *dest_file; + CelluloidFileChooser *file_chooser; + GtkFileChooser *gtk_chooser; + GError *error; + + dest_file = NULL; + file_chooser = celluloid_file_chooser_new + ( _("Save Playlist"), + GTK_WINDOW(view), + GTK_FILE_CHOOSER_ACTION_SAVE ); + gtk_chooser = GTK_FILE_CHOOSER(file_chooser); + error = NULL; + + gtk_file_chooser_set_current_name(gtk_chooser, "playlist.m3u"); + + if(celluloid_file_chooser_run(file_chooser) == GTK_RESPONSE_ACCEPT) + { + /* There should be only one file selected. */ + dest_file = gtk_file_chooser_get_file(gtk_chooser); + } + + celluloid_file_chooser_destroy(file_chooser); + + if(dest_file) + { + save_playlist(view, dest_file, &error); + g_object_unref(dest_file); + } + + if(error) + { + show_message_dialog( view, + GTK_MESSAGE_ERROR, + _("Error"), + NULL, + error->message ); + + g_error_free(error); + } +} + +void +celluloid_view_show_preferences_dialog(CelluloidView *view) +{ + GtkWidget *dialog = celluloid_preferences_dialog_new(GTK_WINDOW(view)); + + g_signal_connect_after( dialog, + "response", + G_CALLBACK(preferences_dialog_response_handler), + view ); + + gtk_widget_show_all(dialog); +} + +void +celluloid_view_show_shortcuts_dialog(CelluloidView *view) +{ + GtkWidget *wnd = celluloid_shortcuts_window_new(GTK_WINDOW(view)); + + gtk_widget_show_all(wnd); +} + +void +celluloid_view_show_about_dialog(CelluloidView *view) +{ + const gchar *const authors[] = AUTHORS; + + gtk_show_about_dialog( GTK_WINDOW(view), + "logo-icon-name", + ICON_NAME, + "version", + VERSION, + "comments", + _("A GTK frontend for MPV"), + "website", + "https://github.com/celluloid-player/celluloid", + "license-type", + GTK_LICENSE_GPL_3_0, + "copyright", + "\u00A9 2014-2020 The Celluloid authors", + "authors", + authors, + "translator-credits", + _("translator-credits"), + NULL ); +} + +void +celluloid_view_show_message_dialog( CelluloidView *view, + GtkMessageType type, + const gchar *title, + const gchar *prefix, + const gchar *msg ) +{ + show_message_dialog(view, type, title, prefix, msg); +} + +void +celluloid_view_present(CelluloidView *view) +{ + gtk_window_present(GTK_WINDOW(view)); +} + +void +celluloid_view_quit(CelluloidView *view) +{ + gtk_window_close(GTK_WINDOW(view)); +} + +void +celluloid_view_reset(CelluloidView *view) +{ + celluloid_main_window_reset(CELLULOID_MAIN_WINDOW(view)); +} + +void +celluloid_view_queue_render(CelluloidView *view) +{ + CelluloidMainWindow *wnd = CELLULOID_MAIN_WINDOW(view); + CelluloidVideoArea *area = celluloid_main_window_get_video_area(wnd); + + celluloid_video_area_queue_render(area); +} + +void +celluloid_view_make_gl_context_current(CelluloidView *view) +{ + CelluloidMainWindow *wnd = + CELLULOID_MAIN_WINDOW(view); + CelluloidVideoArea *video_area = + celluloid_main_window_get_video_area(wnd); + GtkGLArea *gl_area = + celluloid_video_area_get_gl_area(video_area); + + gtk_widget_realize(GTK_WIDGET(gl_area)); + gtk_gl_area_make_current(gl_area); +} + +void +celluloid_view_set_use_opengl_cb(CelluloidView *view, gboolean use_opengl_cb) +{ + CelluloidMainWindow *wnd = CELLULOID_MAIN_WINDOW(view); + CelluloidVideoArea *area = celluloid_main_window_get_video_area(wnd); + + celluloid_video_area_set_use_opengl(area, use_opengl_cb); +} + +gint +celluloid_view_get_scale_factor(CelluloidView *view) +{ + GdkWindow *gdk_window = gtk_widget_get_window(GTK_WIDGET(view)); + + return gdk_window_get_scale_factor(gdk_window); +} + +void +celluloid_view_get_video_area_geometry( CelluloidView *view, + gint *width, + gint *height ) +{ + CelluloidMainWindow *wnd = CELLULOID_MAIN_WINDOW(view); + CelluloidVideoArea *area = celluloid_main_window_get_video_area(wnd); + GtkAllocation allocation; + + gtk_widget_get_allocation(GTK_WIDGET(area), &allocation); + + *width = allocation.width; + *height = allocation.height; +} + +void +celluloid_view_move( CelluloidView *view, + gboolean flip_x, + gboolean flip_y, + GValue *x, + GValue *y ) +{ + GtkWindow *window = GTK_WINDOW(view); + GdkWindow *gdk_window = gtk_widget_get_window(GTK_WIDGET(window)); + GdkDisplay *display = gdk_display_get_default(); + GdkMonitor *monitor = gdk_display_get_monitor_at_window + (display, gdk_window); + GdkRectangle monitor_geom = {0}; + gint64 x_pos = -1; + gint64 y_pos = -1; + gint window_width = 0; + gint window_height = 0; + gint space_x = 0; + gint space_y = 0; + + gtk_window_get_size(window, &window_width, &window_height); + gdk_monitor_get_geometry(monitor, &monitor_geom); + space_x = monitor_geom.width-window_width; + space_y = monitor_geom.height-window_height; + + if(G_VALUE_HOLDS_DOUBLE(x)) + { + x_pos = (gint64)(g_value_get_double(x)*space_x); + } + else + { + x_pos = flip_x?space_x-g_value_get_int64(x):g_value_get_int64(x); + } + + if(G_VALUE_HOLDS_DOUBLE(y)) + { + y_pos = (gint64)(g_value_get_double(y)*space_y); + } + else + { + y_pos = flip_y?space_y-g_value_get_int64(y):g_value_get_int64(y); + } + + gtk_window_move(window, (gint)x_pos, (gint)y_pos); +} + +void +celluloid_view_resize_video_area(CelluloidView *view, gint width, gint height) +{ + celluloid_main_window_resize_video_area + (CELLULOID_MAIN_WINDOW(view), width, height); +} + +void +celluloid_view_set_fullscreen(CelluloidView *view, gboolean fullscreen) +{ + g_object_set(view, "fullscreen", fullscreen, NULL); + celluloid_main_window_set_fullscreen + (CELLULOID_MAIN_WINDOW(view), fullscreen); +} + +void +celluloid_view_set_time_position(CelluloidView *view, gdouble position) +{ + CelluloidControlBox *control_box; + + control_box = celluloid_main_window_get_control_box + (CELLULOID_MAIN_WINDOW(view)); + g_object_set(control_box, "time-position", position, NULL); +} + +void +celluloid_view_update_playlist(CelluloidView *view, GPtrArray *playlist) +{ + CelluloidMainWindow *wnd = CELLULOID_MAIN_WINDOW(view); + CelluloidPlaylistWidget *wgt = celluloid_main_window_get_playlist(wnd); + + celluloid_playlist_widget_update_contents(wgt, playlist); +} + +void +celluloid_view_set_playlist_pos(CelluloidView *view, gint64 pos) +{ + g_object_set(view, "playlist-pos", pos, NULL); +} + +void +celluloid_view_set_playlist_visible(CelluloidView *view, gboolean visible) +{ + celluloid_main_window_set_playlist_visible + (CELLULOID_MAIN_WINDOW(view), visible); +} + +gboolean +celluloid_view_get_playlist_visible(CelluloidView *view) +{ + return celluloid_main_window_get_playlist_visible + (CELLULOID_MAIN_WINDOW(view)); +} + +void +celluloid_view_set_controls_visible(CelluloidView *view, gboolean visible) +{ + celluloid_main_window_set_controls_visible + (CELLULOID_MAIN_WINDOW(view), visible); +} + +gboolean +celluloid_view_get_controls_visible(CelluloidView *view) +{ + return celluloid_main_window_get_controls_visible + (CELLULOID_MAIN_WINDOW(view)); +} + +void +celluloid_view_set_main_menu_visible(CelluloidView *view, gboolean visible) +{ + gboolean csd = + celluloid_main_window_get_csd_enabled + (CELLULOID_MAIN_WINDOW(view)); + + if(csd) + { + GtkWidget *header_bar = gtk_window_get_titlebar(GTK_WINDOW(view)); + + celluloid_header_bar_set_menu_button_popup_visible + (CELLULOID_HEADER_BAR(header_bar), visible); + } + else + { + gtk_application_window_set_show_menubar + (GTK_APPLICATION_WINDOW(view), visible); + } +} + +gboolean +celluloid_view_get_main_menu_visible(CelluloidView *view) +{ + gboolean csd = + celluloid_main_window_get_csd_enabled + (CELLULOID_MAIN_WINDOW(view)); + + gboolean result = FALSE; + + if(csd) + { + GtkWidget *header_bar = gtk_window_get_titlebar(GTK_WINDOW(view)); + + result = + celluloid_header_bar_get_menu_button_popup_visible + (CELLULOID_HEADER_BAR(header_bar)); + } + else + { + result = + gtk_application_window_get_show_menubar + (GTK_APPLICATION_WINDOW(view)); + } + + return result; +} diff --git a/src/celluloid-view.h b/src/celluloid-view.h new file mode 100644 index 0000000..963e432 --- /dev/null +++ b/src/celluloid-view.h @@ -0,0 +1,143 @@ +/* + * Copyright (c) 2017-2020 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef VIEW_H +#define VIEW_H + +#include + +#include "celluloid-application.h" + +G_BEGIN_DECLS + +#define CELLULOID_TYPE_VIEW (celluloid_view_get_type()) + +G_DECLARE_FINAL_TYPE(CelluloidView, celluloid_view, CELLULOID, VIEW, CelluloidMainWindow) + +CelluloidView * +celluloid_view_new(CelluloidApplication *app, gboolean always_floating); + +CelluloidMainWindow * +celluloid_view_get_main_window(CelluloidView *view); + +void +celluloid_view_show_open_dialog( CelluloidView *view, + gboolean folder, + gboolean append ); + +void +celluloid_view_show_open_location_dialog(CelluloidView *view, gboolean append); + +void +celluloid_view_show_open_audio_track_dialog(CelluloidView *view); + +void +celluloid_view_show_open_video_track_dialog(CelluloidView *view); + +void +celluloid_view_show_open_subtitle_track_dialog(CelluloidView *view); + +void +celluloid_view_show_save_playlist_dialog(CelluloidView *view); + +void +celluloid_view_show_preferences_dialog(CelluloidView *view); + +void +celluloid_view_show_shortcuts_dialog(CelluloidView *view); + +void +celluloid_view_show_about_dialog(CelluloidView *view); + +void +celluloid_view_show_message_dialog( CelluloidView *view, + GtkMessageType type, + const gchar *title, + const gchar *prefix, + const gchar *msg ); + +void +celluloid_view_present(CelluloidView *view); + +void +celluloid_view_quit(CelluloidView *view); + +void +celluloid_view_reset(CelluloidView *view); + +void +celluloid_view_queue_render(CelluloidView *view); + +void +celluloid_view_make_gl_context_current(CelluloidView *view); + +void +celluloid_view_set_use_opengl_cb(CelluloidView *view, gboolean use_opengl_cb); + +gint +celluloid_view_get_scale_factor(CelluloidView *view); + +void +celluloid_view_get_video_area_geometry( CelluloidView *view, + gint *width, + gint *height ); + +void +celluloid_view_move( CelluloidView *view, + gboolean flip_x, + gboolean flip_y, + GValue *x, + GValue *y ); + +void +celluloid_view_resize_video_area(CelluloidView *view, gint width, gint height); + +void +celluloid_view_set_fullscreen(CelluloidView *view, gboolean fullscreen); + +void +celluloid_view_set_time_position(CelluloidView *view, gdouble position); + +void +celluloid_view_update_playlist(CelluloidView *view, GPtrArray *playlist); + +void +celluloid_view_set_playlist_pos(CelluloidView *view, gint64 pos); + +void +celluloid_view_set_playlist_visible(CelluloidView *view, gboolean visible); + +gboolean +celluloid_view_get_playlist_visible(CelluloidView *view); + +void +celluloid_view_set_controls_visible(CelluloidView *view, gboolean visible); + +gboolean +celluloid_view_get_controls_visible(CelluloidView *view); + +void +celluloid_view_set_main_menu_visible(CelluloidView *view, gboolean visible); + +gboolean +celluloid_view_get_main_menu_visible(CelluloidView *view); + +G_END_DECLS + +#endif diff --git a/src/generate-authors.py b/src/generate-authors.py new file mode 100755 index 0000000..fb3f1f6 --- /dev/null +++ b/src/generate-authors.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python3 + +import sys + +in_file = sys.argv[1] +out_file = sys.argv[2] + +with open(in_file) as i, open(out_file, 'w') as o: + o.write('#pragma once\n\n') + o.write('#define AUTHORS {\\\n') + + for author in i: + if not author.startswith('#'): + o.write('"{}",\\\n'.format(author.rstrip())) + + o.write('NULL}\n') + diff --git a/src/media-keys/celluloid-media-keys.c b/src/media-keys/celluloid-media-keys.c new file mode 100644 index 0000000..76b561b --- /dev/null +++ b/src/media-keys/celluloid-media-keys.c @@ -0,0 +1,329 @@ +/* + * Copyright (c) 2015-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include "celluloid-media-keys.h" +#include "celluloid-def.h" + +#include + +enum +{ + PROP_0, + PROP_CONTROLLER, + N_PROPERTIES +}; + +struct _CelluloidMediaKeys +{ + GObject parent; + CelluloidController *controller; + gulong focus_sig_id; + GDBusProxy *proxy; + GDBusConnection *session_bus_conn; +}; + +struct _CelluloidMediaKeysClass +{ + GObjectClass parent_class; +}; + +G_DEFINE_TYPE(CelluloidMediaKeys, celluloid_media_keys, G_TYPE_OBJECT) + +static void +constructed(GObject *object); + +static void +dispose(GObject *object); + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ); + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ); + +static gboolean +window_state_handler( GtkWidget *widget, + GdkEventWindowState *event, + gpointer data ); + +static void +g_signal_handler( GDBusProxy *proxy, + gchar *sender_name, + gchar *signal_name, + GVariant *parameters, + gpointer data ); + +static void +proxy_ready_handler( GObject *source_object, + GAsyncResult *res, + gpointer data ); + +static void +session_ready_handler( GObject *source_object, + GAsyncResult *res, + gpointer data ); + +static void +constructed(GObject *object) +{ + CelluloidMediaKeys *self = CELLULOID_MEDIA_KEYS(object); + CelluloidView *view = celluloid_controller_get_view(self->controller); + + self->focus_sig_id = g_signal_connect + ( celluloid_view_get_main_window(view), + "window-state-event", + G_CALLBACK(window_state_handler), + self ); + + g_bus_get(G_BUS_TYPE_SESSION, NULL, session_ready_handler, self); +} + +static void +dispose(GObject *object) +{ + CelluloidMediaKeys *self = CELLULOID_MEDIA_KEYS(object); + CelluloidView *view = celluloid_controller_get_view(self->controller); + CelluloidMainWindow *window = celluloid_view_get_main_window(view); + + if(self->focus_sig_id > 0) + { + g_signal_handler_disconnect(window, self->focus_sig_id); + self->focus_sig_id = 0; + } + + g_clear_object(&self->proxy); + g_clear_object(&self->session_bus_conn); + + G_OBJECT_CLASS(celluloid_media_keys_parent_class)->dispose(object); +} + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ) +{ + CelluloidMediaKeys *self = CELLULOID_MEDIA_KEYS(object); + + switch(property_id) + { + case PROP_CONTROLLER: + self->controller = g_value_get_pointer(value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } + + G_OBJECT_CLASS(celluloid_media_keys_parent_class)->constructed(object); +} + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ) +{ + CelluloidMediaKeys *self = CELLULOID_MEDIA_KEYS(object); + + switch(property_id) + { + case PROP_CONTROLLER: + g_value_set_pointer(value, self->controller); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static gboolean +window_state_handler( GtkWidget *widget, + GdkEventWindowState *event, + gpointer data ) +{ + CelluloidMediaKeys *self = data; + + if (event->changed_mask & GDK_WINDOW_STATE_FOCUSED + && event->new_window_state & GDK_WINDOW_STATE_FOCUSED + && self->proxy != NULL) + { + g_dbus_proxy_call( self->proxy, + "GrabMediaPlayerKeys", + g_variant_new("(su)", APP_ID, 0), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + NULL, + self ); + } + + return FALSE; +} + +static void +g_signal_handler( GDBusProxy *proxy, + gchar *sender_name, + gchar *signal_name, + GVariant *parameters, + gpointer data ) +{ + CelluloidMediaKeys *self = data; + gchar *celluloid_application = NULL; + gchar *key = NULL; + + if(g_strcmp0(signal_name, "MediaPlayerKeyPressed") == 0) + { + g_variant_get + (parameters, "(&s&s)", &celluloid_application, &key); + } + + if(g_strcmp0(celluloid_application, APP_ID) == 0) + { + const struct + { + const char *gsd_key; + const char *mpv_key; + } + dict[] = { {"Next", "NEXT"}, + {"Previous", "PREV"}, + {"Pause", "PAUSE"}, + {"Stop", "STOP"}, + {"Play", "PLAY"}, + {"FastForward","FORWARD"}, + {"Rewind", "REWIND"}, + {NULL, NULL} }; + + CelluloidModel *model = celluloid_controller_get_model + (self->controller); + bool done = false; + + for(int i = 0; !done && dict[i].gsd_key; i++) + { + if(g_strcmp0(dict[i].gsd_key, key) == 0) + { + celluloid_model_key_press(model, dict[i].mpv_key); + done = true; + } + } + } +} + +static void +proxy_ready_handler( GObject *source_object, + GAsyncResult *res, + gpointer data ) +{ + CelluloidMediaKeys *self = data; + GError *error = NULL; + + self->proxy = g_dbus_proxy_new_finish(res, &error); + + if(self->proxy) + { + g_signal_connect( self->proxy, + "g-signal", + G_CALLBACK(g_signal_handler), + self ); + g_dbus_proxy_call( self->proxy, + "GrabMediaPlayerKeys", + g_variant_new("(su)", APP_ID, 0), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + NULL, + NULL ); + } + else + { + g_error("Failed to create GDBus proxy for media keys"); + } + + if(error) + { + g_error("%s", error->message); + g_error_free(error); + } +} + +static void +session_ready_handler( GObject *source_object, + GAsyncResult *res, + gpointer data ) +{ + CelluloidMediaKeys *self = data; + + self->session_bus_conn = g_bus_get_finish(res, NULL); + + g_dbus_proxy_new( self->session_bus_conn, + G_DBUS_PROXY_FLAGS_NONE, + NULL, + "org.gnome.SettingsDaemon.MediaKeys", + "/org/gnome/SettingsDaemon/MediaKeys", + "org.gnome.SettingsDaemon.MediaKeys", + NULL, + proxy_ready_handler, + self ); +} + +static void +celluloid_media_keys_init(CelluloidMediaKeys *self) +{ + self->controller = NULL; + self->focus_sig_id = 0; + self->proxy = NULL; + self->session_bus_conn = NULL; +} + +static void +celluloid_media_keys_class_init(CelluloidMediaKeysClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS(klass); + GParamSpec *pspec = NULL; + + object_class->constructed = constructed; + object_class->set_property = set_property; + object_class->get_property = get_property; + object_class->dispose = dispose; + + pspec = g_param_spec_pointer + ( "controller", + "Controller", + "The CelluloidController to use", + G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_CONTROLLER, pspec); +} + +CelluloidMediaKeys * +celluloid_media_keys_new(CelluloidController *controller) +{ + GType type = celluloid_media_keys_get_type(); + + return CELLULOID_MEDIA_KEYS(g_object_new( type, + "controller", controller, + NULL )); +} diff --git a/src/media-keys/celluloid-media-keys.h b/src/media-keys/celluloid-media-keys.h new file mode 100644 index 0000000..0878dd4 --- /dev/null +++ b/src/media-keys/celluloid-media-keys.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2015-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef MEDIA_KEYS_H +#define MEDIA_KEYS_H + +#include "celluloid-controller.h" + +G_BEGIN_DECLS + +#define CELLULOID_TYPE_MEDIA_KEYS (celluloid_media_keys_get_type ()) + +G_DECLARE_FINAL_TYPE(CelluloidMediaKeys, celluloid_media_keys, CELLULOID, MEDIA_KEYS, GObject) + +CelluloidMediaKeys * +celluloid_media_keys_new(CelluloidController *controller); + +G_END_DECLS + +#endif diff --git a/src/meson.build b/src/meson.build new file mode 100644 index 0000000..8c62266 --- /dev/null +++ b/src/meson.build @@ -0,0 +1,138 @@ +gnome = import('gnome') + +sources = [ + 'celluloid-application.c', + 'celluloid-common.c', + 'celluloid-control-box.c', + 'celluloid-controller.c', + 'celluloid-controller-actions.c', + 'celluloid-controller-input.c', + 'celluloid-file-chooser.c', + 'celluloid-header-bar.c', + 'celluloid-main.c', + 'celluloid-main-window.c', + 'celluloid-menu.c', + 'celluloid-metadata-cache.c', + 'celluloid-model.c', + 'celluloid-mpv.c', + 'celluloid-mpv-wrapper.c', + 'celluloid-open-location-dialog.c', + 'celluloid-option-parser.c', + 'celluloid-player.c', + 'celluloid-player-options.c', + 'celluloid-playlist-widget.c', + 'celluloid-plugins-manager.c', + 'celluloid-plugins-manager-item.c', + 'celluloid-preferences-dialog.c', + 'celluloid-seek-bar.c', + 'celluloid-shortcuts-window.c', + 'celluloid-time-label.c', + 'celluloid-video-area.c', + 'celluloid-view.c', + + 'media-keys/celluloid-media-keys.c', + + 'mpris/celluloid-mpris.c', + 'mpris/celluloid-mpris-module.c', + 'mpris/celluloid-mpris-base.c', + 'mpris/celluloid-mpris-player.c', + 'mpris/celluloid-mpris-track-list.c' +] + +sources += custom_target('authors', + input: '../AUTHORS', + output: 'celluloid-authors.h', + command: [ + find_program('generate-authors.py'), + '@INPUT@', '@OUTPUT@' + ] +) + +libgtk = dependency('gtk+-3.0', version: '>= 3.22.23') +localedir = join_paths(get_option('prefix'), get_option('localedir')) +cflags = [ + '-DG_SETTINGS_ENABLE_BACKEND', + '-DPACKAGE_LOCALEDIR="@0@"'.format(localedir), + '-DVERSION="@0@"'.format(meson.project_version()), + '-DGETTEXT_PACKAGE="@0@"'.format(meson.project_name()), + '-DG_LOG_DOMAIN="@0@"'.format(meson.project_name()), + '-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_44', + '-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_44', + '-DGDK_VERSION_MIN_REQUIRED=GDK_VERSION_3_22', + '-DGDK_VERSION_MAX_ALLOWED=GDK_VERSION_3_22' +] + +if get_option('buildtype') == 'release' + cflags += [ + '-DG_DISABLE_ASSERT=1', + '-DG_DISABLE_CHECKS=1', + '-DG_DISABLE_CAST_CHECKS=1' + ] +endif + +if target_machine.system() == 'windows' + libgio = dependency('gio-2.0', version: '>= 2.44') +else + libgio = dependency('gio-unix-2.0', version: '>= 2.44') +endif + +generated_gdbus_sources = gnome.gdbus_codegen( + 'celluloid-mpris-gdbus', + '../data/celluloid-mpris-gdbus.xml', + namespace: 'celluloid_mpris' +) + +generated_marshal_sources = gnome.genmarshal('celluloid-marshal', + sources: '../data/celluloid-marshal.lst', + prefix: 'g_cclosure_gen_marshal', +) + +# NOTE: All of these are fixed in GLib 2.54 and Meson 0.42.0 and can be +# removed once version requirements are bumped +includes = [] +extra_libs = [] +if libgio.version().version_compare('< 2.52.0') + # We want to be warning free on old versions: + # https://bugzilla.gnome.org/show_bug.cgi?id=778581 + extra_libs += static_library('mpris-gdbus', + generated_gdbus_sources, + c_args: cflags + ['-Wno-conversion'], + dependencies: libgio, + include_directories: include_directories('..'), + ) + # Created includes of `src/...`: + # https://bugzilla.gnome.org/show_bug.cgi?id=778801 + includes = include_directories('..') +elif meson.version().version_compare('== 0.46.0') + # https://github.com/mesonbuild/meson/issues/3488 + includes = include_directories('..') + sources += generated_gdbus_sources +else + sources += generated_gdbus_sources +endif + +if libgio.version().version_compare('< 2.54.0') + # Silence warning about missing prototypes in genmarshal-generated files + extra_libs += static_library('marshal', + generated_marshal_sources, + c_args: cflags + ['-Wno-missing-prototypes'], + dependencies: libgio, + include_directories: include_directories('..') + ) +else + sources += generated_marshal_sources +endif + +executable('celluloid', sources, + dependencies: [ + libgtk, + libgio, + meson.get_compiler('c').find_library('m', required: false), + dependency('mpv', version: '>= 1.107'), + dependency('epoxy') + ], + link_with: extra_libs, + include_directories: includes, + c_args: cflags, + install: true +) diff --git a/src/mpris/celluloid-mpris-base.c b/src/mpris/celluloid-mpris-base.c new file mode 100644 index 0000000..223f571 --- /dev/null +++ b/src/mpris/celluloid-mpris-base.c @@ -0,0 +1,382 @@ +/* + * Copyright (c) 2015-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include +#include +#include +#include +#include + +#include "celluloid-view.h" +#include "celluloid-mpris.h" +#include "celluloid-mpris-module.h" +#include "celluloid-mpris-base.h" +#include "celluloid-mpris-gdbus.h" +#include "celluloid-def.h" + +enum +{ + PROP_0, + PROP_CONTROLLER, + N_PROPERTIES +}; + + +struct _CelluloidMprisBase +{ + CelluloidMprisModule parent; + CelluloidController *controller; + guint reg_id; +}; + +struct _CelluloidMprisBaseClass +{ + CelluloidMprisModuleClass parent_class; +}; + +static void +register_interface(CelluloidMprisModule *module); + +static void +unregister_interface(CelluloidMprisModule *module); + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ); + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ); + +static void +method_handler( GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *method_name, + GVariant *parameters, + GDBusMethodInvocation *invocation, + gpointer data ); + +static GVariant * +get_prop_handler( GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GError **error, + gpointer data ); + +static gboolean +set_prop_handler( GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GVariant *value, + GError **error, + gpointer data ); + +static void +fullscreen_handler( GObject *object, + GParamSpec *pspec, + gpointer data ); + +static void +update_fullscreen(CelluloidMprisBase *base); + +static GVariant * +get_supported_uri_schemes(void); + +static GVariant * +get_supported_mime_types(void); + +static void +celluloid_mpris_base_class_init(CelluloidMprisBaseClass *klass); + +static void +celluloid_mpris_base_init(CelluloidMprisBase *base); + +G_DEFINE_TYPE(CelluloidMprisBase, celluloid_mpris_base, CELLULOID_TYPE_MPRIS_MODULE); + +static void +register_interface(CelluloidMprisModule *module) +{ + CelluloidMprisBase *base; + CelluloidView *view; + GDBusInterfaceVTable vtable; + GDBusInterfaceInfo *iface; + GDBusConnection *conn; + + base = CELLULOID_MPRIS_BASE(module); + view = celluloid_controller_get_view(base->controller); + + g_object_get(module, "conn", &conn, "iface", &iface, NULL); + + celluloid_mpris_module_connect_signal + ( module, + view, + "notify::fullscreen", + G_CALLBACK(fullscreen_handler), + module ); + + celluloid_mpris_module_set_properties + ( module, + "CanQuit", g_variant_new_boolean(TRUE), + "CanSetFullscreen", g_variant_new_boolean(TRUE), + "CanRaise", g_variant_new_boolean(TRUE), + "Fullscreen", g_variant_new_boolean(FALSE), + "HasTrackList", g_variant_new_boolean(TRUE), + "Identity", g_variant_new_string(g_get_application_name()), + "DesktopEntry", g_variant_new_string(APP_ID), + "SupportedUriSchemes", get_supported_uri_schemes(), + "SupportedMimeTypes", get_supported_mime_types(), + NULL ); + + vtable.method_call = (GDBusInterfaceMethodCallFunc)method_handler; + vtable.get_property = (GDBusInterfaceGetPropertyFunc)get_prop_handler; + vtable.set_property = (GDBusInterfaceSetPropertyFunc)set_prop_handler; + + base->reg_id = g_dbus_connection_register_object + ( conn, + MPRIS_OBJ_ROOT_PATH, + iface, + &vtable, + module, + NULL, + NULL ); + + update_fullscreen(CELLULOID_MPRIS_BASE(module)); +} + +static void +unregister_interface(CelluloidMprisModule *module) +{ + CelluloidMprisBase *base = CELLULOID_MPRIS_BASE(module); + GDBusConnection *conn = NULL; + + g_object_get(module, "conn", &conn, NULL); + g_dbus_connection_unregister_object(conn, base->reg_id); +} + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ) +{ + CelluloidMprisBase *self = CELLULOID_MPRIS_BASE(object); + + switch(property_id) + { + case PROP_CONTROLLER: + self->controller = g_value_get_pointer(value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ) +{ + CelluloidMprisBase *self = CELLULOID_MPRIS_BASE(object); + + switch(property_id) + { + case PROP_CONTROLLER: + g_value_set_pointer(value, self->controller); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static void +method_handler( GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *method_name, + GVariant *parameters, + GDBusMethodInvocation *invocation, + gpointer data ) +{ + CelluloidMprisBase *base = data; + + if(g_strcmp0(method_name, "Raise") == 0) + { + celluloid_view_present + (celluloid_controller_get_view(base->controller)); + } + else if(g_strcmp0(method_name, "Quit") == 0) + { + celluloid_controller_quit(base->controller); + } + + g_dbus_method_invocation_return_value + (invocation, g_variant_new("()", NULL)); +} + +static GVariant * +get_prop_handler( GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GError **error, + gpointer data ) +{ + GVariant *value = NULL; + + celluloid_mpris_module_get_properties(data, property_name, &value, NULL); + + return value?g_variant_ref(value):NULL; +} + +static gboolean +set_prop_handler( GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GVariant *value, + GError **error, + gpointer data ) +{ + CelluloidMprisBase *base = data; + + if(g_strcmp0(property_name, "Fullscreen") == 0) + { + CelluloidView *view = celluloid_controller_get_view(base->controller); + + celluloid_view_set_fullscreen(view, g_variant_get_boolean(value)); + } + else + { + celluloid_mpris_module_set_properties( data, + property_name, value, + NULL ); + } + + return TRUE; /* This function should always succeed */ +} + +static void +fullscreen_handler( GObject *object, + GParamSpec *pspec, + gpointer data ) +{ + update_fullscreen(data); +} + +static void +update_fullscreen(CelluloidMprisBase *base) +{ + CelluloidMprisModule *module = CELLULOID_MPRIS_MODULE(base); + CelluloidModel *model = celluloid_controller_get_model(base->controller); + GVariant *old_value = NULL; + gboolean fullscreen = FALSE; + + celluloid_mpris_module_get_properties + (module, "Fullscreen", &old_value, NULL); + + g_object_get(G_OBJECT(model), "fullscreen", &fullscreen, NULL); + + if(g_variant_get_boolean(old_value) != fullscreen) + { + celluloid_mpris_module_set_properties + ( module, + "Fullscreen", g_variant_new_boolean(fullscreen), + NULL ); + } +} + +static GVariant * +get_supported_uri_schemes(void) +{ + const gchar *protocols[] = SUPPORTED_PROTOCOLS; + + return celluloid_mpris_build_g_variant_string_array(protocols); +} + +static GVariant * +get_supported_mime_types(void) +{ + const gchar *mime_types[] = SUPPORTED_MIME_TYPES; + + return celluloid_mpris_build_g_variant_string_array(mime_types); +} + +static void +celluloid_mpris_base_class_init(CelluloidMprisBaseClass *klass) +{ + CelluloidMprisModuleClass *module_class = + CELLULOID_MPRIS_MODULE_CLASS(klass); + + GObjectClass *object_class = G_OBJECT_CLASS(klass); + GParamSpec *pspec = NULL; + + module_class->register_interface = register_interface; + module_class->unregister_interface = unregister_interface; + object_class->set_property = set_property; + object_class->get_property = get_property; + + pspec = g_param_spec_pointer + ( "controller", + "Controller", + "The CelluloidController to use", + G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_CONTROLLER, pspec); +} + +static void +celluloid_mpris_base_init(CelluloidMprisBase *base) +{ + base->controller = NULL; + base->reg_id = 0; +} + +CelluloidMprisModule * +celluloid_mpris_base_new(CelluloidController *controller, GDBusConnection *conn) +{ + GType type; + GDBusInterfaceInfo *iface; + + type = celluloid_mpris_base_get_type(); + iface = celluloid_mpris_org_mpris_media_player2_interface_info(); + + return CELLULOID_MPRIS_MODULE(g_object_new( type, + "controller", controller, + "conn", conn, + "iface", iface, + NULL )); +} + diff --git a/src/mpris/celluloid-mpris-base.h b/src/mpris/celluloid-mpris-base.h new file mode 100644 index 0000000..ef817b1 --- /dev/null +++ b/src/mpris/celluloid-mpris-base.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2015-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef MPRIS_BASE_H +#define MPRIS_BASE_H + +#include "celluloid-mpris.h" +#include "celluloid-mpris-module.h" +#include "celluloid-controller.h" + +G_BEGIN_DECLS + +#define CELLULOID_TYPE_MPRIS_BASE (celluloid_mpris_base_get_type()) +G_DECLARE_FINAL_TYPE(CelluloidMprisBase, celluloid_mpris_base, CELLULOID, MPRIS_BASE, CelluloidMprisModule) + +CelluloidMprisModule * +celluloid_mpris_base_new( CelluloidController *controller, + GDBusConnection *conn ); + +G_END_DECLS + +#endif diff --git a/src/mpris/celluloid-mpris-module.c b/src/mpris/celluloid-mpris-module.c new file mode 100644 index 0000000..677c8a0 --- /dev/null +++ b/src/mpris/celluloid-mpris-module.c @@ -0,0 +1,344 @@ +/* + * Copyright (c) 2017-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include "celluloid-mpris-module.h" +#include "celluloid-application.h" +#include "celluloid-def.h" + +typedef struct _CelluloidSignalHandlerInfo CelluloidSignalHandlerInfo; +typedef struct _CelluloidMprisModulePrivate CelluloidMprisModulePrivate; + +enum +{ + PROP_0, + PROP_CONN, + PROP_IFACE, + N_PROPERTIES +}; + +struct _CelluloidSignalHandlerInfo +{ + gpointer instance; + gulong id; +}; + +struct _CelluloidMprisModulePrivate +{ + GDBusConnection *conn; + GDBusInterfaceInfo *iface; + GSList *signal_ids; + GHashTable *prop_table; +}; + +G_DEFINE_TYPE_WITH_PRIVATE(CelluloidMprisModule, celluloid_mpris_module, G_TYPE_OBJECT) + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ); + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ); + +static void +dispose(GObject *object); + +static void +finalize(GObject *object); + +static void +disconnect_signal(CelluloidSignalHandlerInfo *info, gpointer data); + +static void +celluloid_mpris_module_class_init(CelluloidMprisModuleClass *klass); + +static void +celluloid_mpris_module_init(CelluloidMprisModule *module); + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ) +{ + CelluloidMprisModulePrivate *priv; + + priv = G_TYPE_INSTANCE_GET_PRIVATE( object, + CELLULOID_TYPE_MPRIS_MODULE, + CelluloidMprisModulePrivate ); + + switch(property_id) + { + case PROP_CONN: + priv->conn = g_value_get_pointer(value); + break; + + case PROP_IFACE: + priv->iface = g_value_get_pointer(value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ) +{ + CelluloidMprisModulePrivate *priv; + + priv = G_TYPE_INSTANCE_GET_PRIVATE( object, + CELLULOID_TYPE_MPRIS_MODULE, + CelluloidMprisModulePrivate ); + + switch(property_id) + { + case PROP_CONN: + g_value_set_pointer(value, priv->conn); + break; + + case PROP_IFACE: + g_value_set_pointer(value, priv->iface); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static void +dispose(GObject *object) +{ + CelluloidMprisModulePrivate *priv; + + priv = G_TYPE_INSTANCE_GET_PRIVATE( object, + CELLULOID_TYPE_MPRIS_MODULE, + CelluloidMprisModulePrivate ); + + g_hash_table_unref(priv->prop_table); + + G_OBJECT_CLASS(celluloid_mpris_module_parent_class)->dispose(object); +} + +static void +finalize(GObject *object) +{ + CelluloidMprisModulePrivate *priv; + + priv = G_TYPE_INSTANCE_GET_PRIVATE( object, + CELLULOID_TYPE_MPRIS_MODULE, + CelluloidMprisModulePrivate ); + + g_slist_foreach(priv->signal_ids, (GFunc)disconnect_signal, NULL); + g_slist_free_full(priv->signal_ids, g_free); + + G_OBJECT_CLASS(celluloid_mpris_module_parent_class)->finalize(object); +} + +static void +disconnect_signal(CelluloidSignalHandlerInfo *info, gpointer data) +{ + g_signal_handler_disconnect(info->instance, info->id); +} + +static void +celluloid_mpris_module_class_init(CelluloidMprisModuleClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS(klass); + GParamSpec *pspec = NULL; + + object_class->set_property = set_property; + object_class->get_property = get_property; + object_class->dispose = dispose; + object_class->finalize = finalize; + + pspec = g_param_spec_pointer + ( "conn", + "Connection", + "Connection to the session bus", + G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_CONN, pspec); + + pspec = g_param_spec_pointer + ( "iface", + "Interface", + "The GDBusInterfaceInfo of the interface", + G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_IFACE, pspec); +} + +static void +celluloid_mpris_module_init(CelluloidMprisModule *module) +{ + CelluloidMprisModulePrivate *priv; + + priv = G_TYPE_INSTANCE_GET_PRIVATE( module, + CELLULOID_TYPE_MPRIS_MODULE, + CelluloidMprisModulePrivate ); + + priv->conn = NULL; + priv->iface = NULL; + priv->signal_ids = NULL; + priv->prop_table = g_hash_table_new_full + ( g_str_hash, + g_str_equal, + g_free, + (GDestroyNotify) + g_variant_unref ); +} + +void +celluloid_mpris_module_connect_signal( CelluloidMprisModule *module, + gpointer instance, + const gchar *detailed_signal, + GCallback handler, + gpointer data ) +{ + CelluloidMprisModulePrivate *priv; + CelluloidSignalHandlerInfo *info; + + priv = G_TYPE_INSTANCE_GET_PRIVATE( module, + CELLULOID_TYPE_MPRIS_MODULE, + CelluloidMprisModulePrivate ); + info = g_malloc(sizeof(CelluloidSignalHandlerInfo)); + + info->instance = instance; + info->id = g_signal_connect(instance, detailed_signal, handler, data); + + priv->signal_ids = g_slist_prepend(priv->signal_ids, info); +} + +void +celluloid_mpris_module_get_properties(CelluloidMprisModule *module, ...) +{ + CelluloidMprisModulePrivate *priv; + va_list arg; + gchar *name; + GVariant **value_ptr; + + priv = G_TYPE_INSTANCE_GET_PRIVATE( module, + CELLULOID_TYPE_MPRIS_MODULE, + CelluloidMprisModulePrivate ); + + va_start(arg, module); + + for( name = va_arg(arg, gchar *), + value_ptr = va_arg(arg, GVariant **); + name && value_ptr; + name = va_arg(arg, gchar *), + value_ptr = va_arg(arg, GVariant **) ) + { + *value_ptr = g_hash_table_lookup(priv->prop_table, name); + } +} + +void +celluloid_mpris_module_set_properties_full( CelluloidMprisModule *module, + gboolean send_new_value, + ... ) +{ + CelluloidMprisModulePrivate *priv; + GVariantBuilder builder; + va_list arg; + gchar *name; + GVariant *value; + const gchar *builder_type_string; + const gchar *elem_type_string; + GVariant *sig_args; + + priv = G_TYPE_INSTANCE_GET_PRIVATE( module, + CELLULOID_TYPE_MPRIS_MODULE, + CelluloidMprisModulePrivate ); + builder_type_string = send_new_value?"a{sv}":"as"; + elem_type_string = builder_type_string+1; + + g_debug("Preparing property change event"); + g_variant_builder_init(&builder, G_VARIANT_TYPE(builder_type_string)); + + va_start(arg, send_new_value); + + for( name = va_arg(arg, gchar *), + value = va_arg(arg, GVariant *); + name && value; + name = va_arg(arg, gchar *), + value = va_arg(arg, GVariant *) ) + { + g_hash_table_replace( priv->prop_table, + g_strdup(name), + g_variant_ref_sink(value) ); + + g_debug("Adding property \"%s\"", name); + g_variant_builder_add(&builder, elem_type_string, name, value); + } + + sig_args = g_variant_new( "(sa{sv}as)", + priv->iface->name, + send_new_value?&builder:NULL, + send_new_value?NULL:&builder ); + + g_debug( "Emitting property change event on interface %s", + priv->iface->name ); + g_dbus_connection_emit_signal + ( priv->conn, + NULL, + MPRIS_OBJ_ROOT_PATH, + "org.freedesktop.DBus.Properties", + "PropertiesChanged", + sig_args, + NULL ); +} + +void +celluloid_mpris_module_register(CelluloidMprisModule *module) +{ + if(module) + { + CelluloidMprisModuleClass *klass; + + g_return_if_fail(CELLULOID_IS_MPRIS_MODULE(module)); + klass = CELLULOID_MPRIS_MODULE_GET_CLASS(module); + + g_return_if_fail(klass->register_interface); + klass->register_interface(module); + } +} + +void +celluloid_mpris_module_unregister(CelluloidMprisModule *module) +{ + if(module) + { + CelluloidMprisModuleClass *klass; + + g_return_if_fail(CELLULOID_IS_MPRIS_MODULE(module)); + klass = CELLULOID_MPRIS_MODULE_GET_CLASS(module); + + g_return_if_fail(klass->unregister_interface); + klass->unregister_interface(module); + } +} diff --git a/src/mpris/celluloid-mpris-module.h b/src/mpris/celluloid-mpris-module.h new file mode 100644 index 0000000..144ec1f --- /dev/null +++ b/src/mpris/celluloid-mpris-module.h @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2017-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef MPRIS_MODULE_H +#define MPRIS_MODULE_H + +#include +#include + +G_BEGIN_DECLS + +#define CELLULOID_TYPE_MPRIS_MODULE celluloid_mpris_module_get_type() +G_DECLARE_DERIVABLE_TYPE(CelluloidMprisModule, celluloid_mpris_module, CELLULOID, MPRIS_MODULE, GObject) + +struct _CelluloidMprisModuleClass +{ + GObjectClass parent_interface; + void (*register_interface)(CelluloidMprisModule *module); + void (*unregister_interface)(CelluloidMprisModule *module); +}; + +void +celluloid_mpris_module_connect_signal( CelluloidMprisModule *module, + gpointer instance, + const gchar *detailed_signal, + GCallback handler, + gpointer data ); + +#define celluloid_mpris_module_set_properties(module, ...)\ + celluloid_mpris_module_set_properties_full(module, TRUE, __VA_ARGS__) + +void +celluloid_mpris_module_get_properties(CelluloidMprisModule *module, ...); + +void +celluloid_mpris_module_set_properties_full( CelluloidMprisModule *module, + gboolean send_new_value, + ... ); +void +celluloid_mpris_module_register(CelluloidMprisModule *module); + +void +celluloid_mpris_module_unregister(CelluloidMprisModule *module); + +G_END_DECLS + +#endif diff --git a/src/mpris/celluloid-mpris-player.c b/src/mpris/celluloid-mpris-player.c new file mode 100644 index 0000000..cd276d0 --- /dev/null +++ b/src/mpris/celluloid-mpris-player.c @@ -0,0 +1,862 @@ +/* + * Copyright (c) 2015-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include +#include +#include +#include +#include + +#include "celluloid-mpris-player.h" +#include "celluloid-common.h" +#include "celluloid-main-window.h" +#include "celluloid-mpris.h" +#include "celluloid-mpris-player.h" +#include "celluloid-mpris-gdbus.h" +#include "celluloid-def.h" + +enum +{ + PROP_0, + PROP_CONTROLLER, + N_PROPERTIES +}; + +struct _CelluloidMprisPlayer +{ + CelluloidMprisModule parent; + CelluloidController *controller; + guint reg_id; +}; + +struct _CelluloidMprisPlayerClass +{ + CelluloidMprisModuleClass parent_class; +}; + +static void +register_interface(CelluloidMprisModule *module); + +static void +unregister_interface(CelluloidMprisModule *module); + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ); + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ); + +static void +append_metadata_tags(GVariantBuilder *builder, GPtrArray *list); + +static void +method_handler( GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *method_name, + GVariant *parameters, + GDBusMethodInvocation *invocation, + gpointer data ); + +static GVariant * +get_prop_handler( GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GError **error, + gpointer data ); + +static gboolean +set_prop_handler( GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GVariant *value, + GError **error, + gpointer data ); + +static void +update_playback_status(CelluloidMprisPlayer *player); + +static void +update_playlist_state(CelluloidMprisPlayer *player); + +static void +update_speed(CelluloidMprisPlayer *player); + +static void +update_loop(CelluloidMprisPlayer *player); + +static void +update_metadata(CelluloidMprisPlayer *player); + +static void +update_volume(CelluloidMprisPlayer *player); + +static void +idle_active_handler( GObject *object, + GParamSpec *pspec, + gpointer data ); + +static void +core_idle_handler( GObject *object, + GParamSpec *pspec, + gpointer data ); + +static void +playlist_pos_handler( GObject *object, + GParamSpec *pspec, + gpointer data ); + +static void +playlist_count_handler( GObject *object, + GParamSpec *pspec, + gpointer data ); +static void +speed_handler( GObject *object, + GParamSpec *pspec, + gpointer data ); + +static void +loop_handler( GObject *object, + GParamSpec *pspec, + gpointer data ); + +static void +metadata_handler( GObject *object, + GParamSpec *pspec, + gpointer data ); + +static void +volume_handler( GObject *object, + GParamSpec *pspec, + gpointer data ); + +static void +playback_restart_handler(CelluloidModel *model, gpointer data); + +static void +celluloid_mpris_player_class_init(CelluloidMprisPlayerClass *klass); + +static void +celluloid_mpris_player_init(CelluloidMprisPlayer *player); + +G_DEFINE_TYPE(CelluloidMprisPlayer, celluloid_mpris_player, CELLULOID_TYPE_MPRIS_MODULE); + +static void +register_interface(CelluloidMprisModule *module) +{ + CelluloidMprisPlayer *player = CELLULOID_MPRIS_PLAYER(module); + CelluloidModel *model = celluloid_controller_get_model + (player->controller); + + GDBusConnection *conn; + GDBusInterfaceInfo *iface; + GDBusInterfaceVTable vtable; + + g_object_get(module, "conn", &conn, "iface", &iface, NULL); + + celluloid_mpris_module_connect_signal + ( module, + model, + "notify::core-idle", + G_CALLBACK(core_idle_handler), + player ); + celluloid_mpris_module_connect_signal + ( module, + model, + "notify::idle-active", + G_CALLBACK(idle_active_handler), + player ); + celluloid_mpris_module_connect_signal + ( module, + model, + "notify::playlist-pos", + G_CALLBACK(playlist_pos_handler), + player ); + celluloid_mpris_module_connect_signal + ( module, + model, + "notify::playlist-count", + G_CALLBACK(playlist_count_handler), + player ); + celluloid_mpris_module_connect_signal + ( module, + model, + "notify::speed", + G_CALLBACK(speed_handler), + player ); + celluloid_mpris_module_connect_signal + ( module, + model, + "notify::loop-file", + G_CALLBACK(loop_handler), + player ); + celluloid_mpris_module_connect_signal + ( module, + model, + "notify::loop-playlist", + G_CALLBACK(loop_handler), + player ); + celluloid_mpris_module_connect_signal + ( module, + model, + "notify::metadata", + G_CALLBACK(metadata_handler), + player ); + celluloid_mpris_module_connect_signal + ( module, + model, + "notify::volume", + G_CALLBACK(volume_handler), + player ); + celluloid_mpris_module_connect_signal + ( module, + model, + "playback-restart", + G_CALLBACK(playback_restart_handler), + player ); + + celluloid_mpris_module_set_properties + ( module, + "PlaybackStatus", g_variant_new_string("Stopped"), + "LoopStatus", g_variant_new_string("None"), + "Rate", g_variant_new_double(1.0), + "Metadata", g_variant_new("a{sv}", NULL), + "Volume", g_variant_new_double(1.0), + "MinimumRate", g_variant_new_double(0.01), + "MaximumRate", g_variant_new_double(100.0), + "CanGoNext", g_variant_new_boolean(FALSE), + "CanGoPrevious", g_variant_new_boolean(FALSE), + "CanPlay", g_variant_new_boolean(TRUE), + "CanPause", g_variant_new_boolean(TRUE), + "CanSeek", g_variant_new_boolean(FALSE), + "CanControl", g_variant_new_boolean(TRUE), + NULL ); + + vtable.method_call = (GDBusInterfaceMethodCallFunc)method_handler; + vtable.get_property = (GDBusInterfaceGetPropertyFunc)get_prop_handler; + vtable.set_property = (GDBusInterfaceSetPropertyFunc)set_prop_handler; + + player->reg_id = g_dbus_connection_register_object + ( conn, + MPRIS_OBJ_ROOT_PATH, + iface, + &vtable, + player, + NULL, + NULL ); + + update_playback_status(player); + update_playlist_state(player); + update_speed(player); + update_metadata(player); + update_volume(player); +} + +static void +unregister_interface(CelluloidMprisModule *module) +{ + CelluloidMprisPlayer *player = CELLULOID_MPRIS_PLAYER(module); + GDBusConnection *conn = NULL; + + g_object_get(module, "conn", &conn, NULL); + g_dbus_connection_unregister_object(conn, player->reg_id); +} + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ) +{ + CelluloidMprisPlayer *self = CELLULOID_MPRIS_PLAYER(object); + + switch(property_id) + { + case PROP_CONTROLLER: + self->controller = g_value_get_pointer(value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ) +{ + CelluloidMprisPlayer *self = CELLULOID_MPRIS_PLAYER(object); + + switch(property_id) + { + case PROP_CONTROLLER: + g_value_set_pointer(value, self->controller); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static void +append_metadata_tags(GVariantBuilder *builder, GPtrArray *list) +{ + const struct + { + const gchar *mpv_name; + const gchar *tag_name; + const gboolean is_array; + } + tag_map[] = { {"Album", "xesam:album", FALSE}, + {"Album_Artist", "xesam:albumArtist", TRUE}, + {"Artist", "xesam:artist", TRUE}, + {"Comment", "xesam:comment", TRUE}, + {"Composer", "xesam:composer", FALSE}, + {"Genre", "xesam:genre", TRUE}, + {"Title", "xesam:title", FALSE}, + {NULL, NULL, FALSE} }; + + const guint list_len = list?list->len:0; + + for(guint i = 0; i < list_len; i++) + { + const gchar *tag_name; + GVariant *tag_value; + CelluloidMetadataEntry *entry = g_ptr_array_index(list, i); + gboolean is_array = TRUE; + gint j = -1; + + /* Translate applicable mpv tag names to MPRIS2-compatible tag + * names. + */ + while( tag_map[++j].mpv_name && + g_ascii_strcasecmp(entry->key, tag_map[j].mpv_name) != 0 ); + tag_name = tag_map[j].mpv_name?tag_map[j].tag_name:entry->key; + is_array = tag_map[j].mpv_name?tag_map[j].is_array:FALSE; + + if(is_array) + { + GVariantBuilder tag_builder; + GVariant *elem_value; + + elem_value = g_variant_new_string(entry->value); + + g_variant_builder_init + (&tag_builder, G_VARIANT_TYPE("as")); + g_variant_builder_add_value + (&tag_builder, elem_value); + + tag_value = g_variant_new("as", &tag_builder); + } + else + { + tag_value = g_variant_new_string(entry->value); + } + + g_debug("Adding metadata tag \"%s\"", tag_name); + g_variant_builder_add(builder, "{sv}", tag_name, tag_value); + } +} + +static void +method_handler( GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *method_name, + GVariant *parameters, + GDBusMethodInvocation *invocation, + gpointer data ) +{ + CelluloidMprisPlayer *player = data; + CelluloidModel *model = celluloid_controller_get_model + (player->controller); + + if(g_strcmp0(method_name, "Next") == 0) + { + celluloid_model_key_press(model, "NEXT"); + } + else if(g_strcmp0(method_name, "Previous") == 0) + { + celluloid_model_key_press(model, "PREV"); + } + else if(g_strcmp0(method_name, "Pause") == 0) + { + celluloid_model_key_press(model, "PAUSE"); + } + else if(g_strcmp0(method_name, "PlayPause") == 0) + { + celluloid_model_key_press(model, "PLAYPAUSE"); + } + else if(g_strcmp0(method_name, "Stop") == 0) + { + celluloid_model_key_press(model, "STOP"); + } + else if(g_strcmp0(method_name, "Play") == 0) + { + celluloid_model_key_press(model, "PLAY"); + } + else if(g_strcmp0(method_name, "Seek") == 0) + { + gint64 offset_us; + + g_variant_get(parameters, "(x)", &offset_us); + celluloid_model_seek_offset(model, (gdouble)offset_us/1.0e6); + } + else if(g_strcmp0(method_name, "SetPosition") == 0) + { + const gchar *prefix = MPRIS_TRACK_ID_PREFIX; + const gsize prefix_len = strlen(prefix); + gint64 time_us = -1; + const gchar *track_id = NULL; + + g_variant_get(parameters, "(&ox)", &track_id, &time_us); + + if(strncmp(track_id, prefix, prefix_len) == 0) + { + gint64 index = g_ascii_strtoll + (track_id+prefix_len, NULL, 0); + + celluloid_model_set_playlist_position(model, index); + celluloid_model_seek(model, (gdouble)time_us/1.0e6); + } + } + else if(g_strcmp0(method_name, "OpenUri") == 0) + { + const gchar *uri; + + g_variant_get(parameters, "(&s)", &uri); + celluloid_model_load_file(model, uri, FALSE); + } + + g_dbus_method_invocation_return_value + (invocation, g_variant_new("()", NULL)); +} + +static GVariant * +get_prop_handler( GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GError **error, + gpointer data ) +{ + CelluloidMprisPlayer *player = data; + GVariant *value; + + if(g_strcmp0(property_name, "Position") == 0) + { + CelluloidModel *model; + gdouble position; + + model = celluloid_controller_get_model(player->controller); + position = celluloid_model_get_time_position(model); + value = g_variant_new_int64((gint64)(position*1e6)); + } + else + { + celluloid_mpris_module_get_properties + ( CELLULOID_MPRIS_MODULE(data), + property_name, &value, + NULL ); + } + + return value?g_variant_ref(value):NULL; +} + +static gboolean +set_prop_handler( GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GVariant *value, + GError **error, + gpointer data ) +{ + CelluloidMprisPlayer *player = data; + CelluloidModel *model = celluloid_controller_get_model + (player->controller); + + if(g_strcmp0(property_name, "LoopStatus") == 0) + { + const gchar *loop = g_variant_get_string(value, NULL); + const gchar *loop_file = g_strcmp0(loop, "Track") == 0 ? + "inf":"no"; + const gchar *loop_playlist = g_strcmp0(loop, "Playlist") == 0 ? + "inf":"no"; + + g_object_set( G_OBJECT(model), + "loop-file", loop_file, + "loop-playlist", loop_playlist, + NULL ); + } + else if(g_strcmp0(property_name, "Rate") == 0) + { + g_object_set( G_OBJECT(model), + "speed", g_variant_get_double(value), + NULL ); + } + else if(g_strcmp0(property_name, "Volume") == 0) + { + g_object_set( G_OBJECT(model), + "volume", 100*g_variant_get_double(value), + NULL ); + } + + celluloid_mpris_module_set_properties( CELLULOID_MPRIS_MODULE(data), + property_name, value, + NULL ); + + return TRUE; /* This function should always succeed */ +} + +static void +update_playback_status(CelluloidMprisPlayer *player) +{ + CelluloidModel *model = celluloid_controller_get_model + (player->controller); + const gchar *state; + gint idle_active; + gint core_idle; + gboolean can_seek; + + g_object_get( G_OBJECT(model), + "idle-active", &idle_active, + "core-idle", &core_idle, + NULL ); + + if(!core_idle && !idle_active) + { + state = "Playing"; + can_seek = TRUE; + } + else if(core_idle && idle_active) + { + state = "Stopped"; + can_seek = FALSE; + } + else + { + state = "Paused"; + can_seek = TRUE; + } + + celluloid_mpris_module_set_properties( CELLULOID_MPRIS_MODULE(player), + "PlaybackStatus", + g_variant_new_string(state), + "CanSeek", + g_variant_new_boolean(can_seek), + NULL ); +} + +static void +update_playlist_state(CelluloidMprisPlayer *player) +{ + CelluloidModel *model = celluloid_controller_get_model + (player->controller); + gboolean can_prev; + gboolean can_next; + gint64 playlist_count; + gint64 playlist_pos; + gint rc = 0; + + g_object_get( G_OBJECT(model), + "playlist-count", &playlist_count, + "playlist-pos", &playlist_pos, + NULL ); + + can_prev = (rc >= 0 && playlist_pos > 0); + can_next = (rc >= 0 && playlist_pos < playlist_count-1); + + celluloid_mpris_module_set_properties( CELLULOID_MPRIS_MODULE(player), + "CanGoPrevious", + g_variant_new_boolean(can_prev), + "CanGoNext", + g_variant_new_boolean(can_next), + NULL ); +} + +static void +update_speed(CelluloidMprisPlayer *player) +{ + CelluloidModel *model = celluloid_controller_get_model + (player->controller); + gdouble speed = 1.0; + + g_object_get(G_OBJECT(model), "speed", &speed, NULL); + + celluloid_mpris_module_set_properties( CELLULOID_MPRIS_MODULE(player), + "Rate", + g_variant_new_double(speed), + NULL ); +} + +static void +update_loop(CelluloidMprisPlayer *player) +{ + CelluloidModel *model = celluloid_controller_get_model + (player->controller); + gchar *loop_file = NULL; + gchar *loop_playlist = NULL; + const gchar *loop = NULL; + + g_object_get( model, + "loop-file", &loop_file, + "loop-playlist", &loop_playlist, + NULL ); + + loop = g_strcmp0(loop_file, "inf") == 0 ? "Track" : + g_strcmp0(loop_playlist, "inf") == 0 ? "Playlist" : + "None"; + + celluloid_mpris_module_set_properties( CELLULOID_MPRIS_MODULE(player), + "LoopStatus", + g_variant_new_string(loop), + NULL ); + + g_free(loop_file); + g_free(loop_playlist); +} + +static void +update_metadata(CelluloidMprisPlayer *player) +{ + CelluloidModel *model = celluloid_controller_get_model + (player->controller); + GPtrArray *metadata = NULL; + GVariantBuilder builder; + gchar *path; + gchar *uri; + gchar *playlist_pos_str; + gchar *trackid; + gdouble duration = 0; + gint64 playlist_pos = 0; + + g_variant_builder_init(&builder, G_VARIANT_TYPE("a{sv}")); + path = celluloid_model_get_current_path(model)?:g_strdup(""); + uri = g_filename_to_uri(path, NULL, NULL)?:g_strdup(path); + + if(uri) + { + g_variant_builder_add( &builder, + "{sv}", + "xesam:url", + g_variant_new_string(uri) ); + + } + + g_object_get( model, + "duration", &duration, + "playlist-pos", &playlist_pos, + "metadata", &metadata, + NULL ); + + g_variant_builder_add( &builder, + "{sv}", + "mpris:length", + g_variant_new_int64 + ((gint64)(duration*1e6)) ); + + playlist_pos_str = g_strdup_printf("%" G_GINT64_FORMAT, playlist_pos); + trackid = g_strconcat( MPRIS_TRACK_ID_PREFIX, + playlist_pos_str, + NULL ); + g_variant_builder_add( &builder, + "{sv}", + "mpris:trackid", + g_variant_new_object_path(trackid) ); + + append_metadata_tags(&builder, metadata); + + celluloid_mpris_module_set_properties( CELLULOID_MPRIS_MODULE(player), + "Metadata", + g_variant_new("a{sv}", &builder), + NULL ); + + g_free(path); + g_free(uri); + g_free(playlist_pos_str); + g_free(trackid); +} + +static void +update_volume(CelluloidMprisPlayer *player) +{ + CelluloidModel *model = celluloid_controller_get_model + (player->controller); + gdouble volume = 0.0; + + g_object_get(G_OBJECT(model), "volume", &volume, NULL); + + celluloid_mpris_module_set_properties + ( CELLULOID_MPRIS_MODULE(player), + "Volume", + g_variant_new_double(volume/100.0), + NULL ); +} + +static void +idle_active_handler( GObject *object, + GParamSpec *pspec, + gpointer data ) +{ + update_playback_status(data); +} + +static void +core_idle_handler( GObject *object, + GParamSpec *pspec, + gpointer data ) +{ + update_playback_status(data); +} + +static void +playlist_pos_handler( GObject *object, + GParamSpec *pspec, + gpointer data ) +{ + update_playlist_state(data); +} + +static void +playlist_count_handler( GObject *object, + GParamSpec *pspec, + gpointer data ) +{ + update_playlist_state(data); +} + +static void +speed_handler( GObject *object, + GParamSpec *pspec, + gpointer data ) +{ + update_speed(data); +} + +static void +loop_handler( GObject *object, + GParamSpec *pspec, + gpointer data ) +{ + update_loop(data); +} + +static void +metadata_handler( GObject *object, + GParamSpec *pspec, + gpointer data ) +{ + update_metadata(data); +} + +static void +volume_handler( GObject *object, + GParamSpec *pspec, + gpointer data ) +{ + update_volume(data); +} + +static void +playback_restart_handler(CelluloidModel *model, gpointer data) +{ + GDBusConnection *conn; + GDBusInterfaceInfo *iface; + gdouble position; + + position = celluloid_model_get_time_position(model); + + g_object_get( CELLULOID_MPRIS_MODULE(data), + "conn", &conn, + "iface", &iface, + NULL ); + + g_dbus_connection_emit_signal + ( conn, + NULL, + MPRIS_OBJ_ROOT_PATH, + iface->name, + "Seeked", + g_variant_new("(x)", (gint64)(position*1e6)), + NULL ); +} + +static void +celluloid_mpris_player_class_init(CelluloidMprisPlayerClass *klass) +{ + CelluloidMprisModuleClass *module_class = + CELLULOID_MPRIS_MODULE_CLASS(klass); + GObjectClass *object_class = G_OBJECT_CLASS(klass); + GParamSpec *pspec = NULL; + + module_class->register_interface = register_interface; + module_class->unregister_interface = unregister_interface; + object_class->set_property = set_property; + object_class->get_property = get_property; + + pspec = g_param_spec_pointer + ( "controller", + "Controller", + "The CelluloidApplication to use", + G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_CONTROLLER, pspec); +} + +static void +celluloid_mpris_player_init(CelluloidMprisPlayer *player) +{ + player->controller = NULL; + player->reg_id = 0; +} + +CelluloidMprisModule * +celluloid_mpris_player_new( CelluloidController *controller, + GDBusConnection *conn ) +{ + GType type; + GDBusInterfaceInfo *iface; + + type = celluloid_mpris_player_get_type(); + iface = celluloid_mpris_org_mpris_media_player2_player_interface_info(); + + return CELLULOID_MPRIS_MODULE(g_object_new( type, + "controller", controller, + "conn", conn, + "iface", iface, + NULL )); +} diff --git a/src/mpris/celluloid-mpris-player.h b/src/mpris/celluloid-mpris-player.h new file mode 100644 index 0000000..7f7863a --- /dev/null +++ b/src/mpris/celluloid-mpris-player.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2015-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef MPRIS_PLAYER_H +#define MPRIS_PLAYER_H + +#include "celluloid-mpris.h" +#include "celluloid-mpris-module.h" +#include "celluloid-controller.h" + +G_BEGIN_DECLS + +#define CELLULOID_TYPE_MPRIS_PLAYER (celluloid_mpris_player_get_type()) +G_DECLARE_FINAL_TYPE(CelluloidMprisPlayer, celluloid_mpris_player, CELLULOID, MPRIS_PLAYER, CelluloidMprisModule) + +CelluloidMprisModule * +celluloid_mpris_player_new( CelluloidController *controller, + GDBusConnection *conn ); + +G_END_DECLS + +#endif diff --git a/src/mpris/celluloid-mpris-track-list.c b/src/mpris/celluloid-mpris-track-list.c new file mode 100644 index 0000000..7b5d8c5 --- /dev/null +++ b/src/mpris/celluloid-mpris-track-list.c @@ -0,0 +1,599 @@ +/* + * Copyright (c) 2017-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include "celluloid-mpris-track-list.h" +#include "celluloid-mpris-gdbus.h" +#include "celluloid-common.h" +#include "celluloid-def.h" + +#include + +enum +{ + PROP_0, + PROP_CONTROLLER, + N_PROPERTIES +}; + +struct _CelluloidMprisTrackList +{ + CelluloidMprisModule parent; + CelluloidController *controller; + guint reg_id; +}; + +struct _CelluloidMprisTrackListClass +{ + CelluloidMprisModuleClass parent_class; +}; + +static void +register_interface(CelluloidMprisModule *module); + +static void +unregister_interface(CelluloidMprisModule *module); + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ); + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ); + +static void +method_handler( GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *method_name, + GVariant *parameters, + GDBusMethodInvocation *invocation, + gpointer data ); + +static GVariant * +get_prop_handler( GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GError **error, + gpointer data ); + +static gboolean +set_prop_handler( GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GVariant *value, + GError **error, + gpointer data ); + +static void +playlist_handler( GObject *object, + GParamSpec *pspec, + gpointer data ); + +static void +metadata_update_handler(CelluloidModel *model, gint64 pos, gpointer data); + +static void +update_playlist(CelluloidMprisTrackList *track_list); + +static gint64 +track_id_to_index(const gchar *track_id); + +static GVariant * +playlist_entry_to_variant(CelluloidPlaylistEntry *entry, gint64 index); + +static GVariant * +get_tracks_metadata(GPtrArray *playlist, const gchar **track_ids); + +static void +celluloid_mpris_track_list_class_init(CelluloidMprisTrackListClass *klass); + +static void +celluloid_mpris_track_list_init(CelluloidMprisTrackList *track_list); + +G_DEFINE_TYPE(CelluloidMprisTrackList, celluloid_mpris_track_list, CELLULOID_TYPE_MPRIS_MODULE); + +static void +register_interface(CelluloidMprisModule *module) +{ + CelluloidMprisTrackList *track_list = CELLULOID_MPRIS_TRACK_LIST(module); + CelluloidModel *model = celluloid_controller_get_model + (track_list->controller); + GDBusConnection *conn; + GDBusInterfaceInfo *iface; + GDBusInterfaceVTable vtable; + + g_object_get(module, "conn", &conn, "iface", &iface, NULL); + + celluloid_mpris_module_connect_signal( module, + model, + "notify::playlist", + G_CALLBACK(playlist_handler), + module ); + celluloid_mpris_module_connect_signal( module, + model, + "metadata-update", + G_CALLBACK(metadata_update_handler), + module ); + + celluloid_mpris_module_set_properties + ( module, + "Tracks", g_variant_new("ao", NULL), + "CanEditTracks", g_variant_new_boolean(FALSE), + NULL ); + + vtable.method_call = (GDBusInterfaceMethodCallFunc)method_handler; + vtable.get_property = (GDBusInterfaceGetPropertyFunc)get_prop_handler; + vtable.set_property = (GDBusInterfaceSetPropertyFunc)set_prop_handler; + + track_list->reg_id = g_dbus_connection_register_object + ( conn, + MPRIS_OBJ_ROOT_PATH, + iface, + &vtable, + module, + NULL, + NULL ); + + update_playlist(CELLULOID_MPRIS_TRACK_LIST(module)); +} + +static void +unregister_interface(CelluloidMprisModule *module) +{ + CelluloidMprisTrackList *track_list = CELLULOID_MPRIS_TRACK_LIST(module); + GDBusConnection *conn = NULL; + + g_object_get(module, "conn", &conn, NULL); + g_dbus_connection_unregister_object(conn, track_list->reg_id); +} + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ) +{ + CelluloidMprisTrackList *self = CELLULOID_MPRIS_TRACK_LIST(object); + + switch(property_id) + { + case PROP_CONTROLLER: + self->controller = g_value_get_pointer(value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ) +{ + CelluloidMprisTrackList *self = CELLULOID_MPRIS_TRACK_LIST(object); + + switch(property_id) + { + case PROP_CONTROLLER: + g_value_set_pointer(value, self->controller); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static void +method_handler( GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *method_name, + GVariant *parameters, + GDBusMethodInvocation *invocation, + gpointer data ) +{ + CelluloidMprisTrackList *track_list = data; + CelluloidModel *model = celluloid_controller_get_model + (track_list->controller); + GVariant *return_value = NULL; + + if(g_strcmp0(method_name, "GetTracksMetadata") == 0) + { + GPtrArray *playlist = NULL; + const gchar **track_ids = NULL; + + g_object_get(model, "playlist", &playlist, NULL); + g_variant_get(parameters, "(^a&o)", &track_ids); + + return_value = get_tracks_metadata(playlist, track_ids); + + g_free(track_ids); + } + else if(g_strcmp0(method_name, "GoTo") == 0) + { + const gchar *track_id; + + g_variant_get(parameters, "(o)", &track_id, NULL); + + if(g_str_has_prefix(track_id, MPRIS_TRACK_ID_PREFIX)) + { + const gsize prefix_len = sizeof(MPRIS_TRACK_ID_PREFIX)-1; + gint64 playlist_pos = g_ascii_strtoll + (track_id+prefix_len, NULL, 10); + + g_object_set(model, "playlist-pos", playlist_pos, NULL); + } + else + { + g_warning( "The GoTo MPRIS method was called with " + "invalid track ID: %s", + track_id ); + } + + return_value = g_variant_new("()", NULL); + } + else if(g_strcmp0(method_name, "AddTrack") == 0) + { + /* Not implemented */ + g_warning( "The %s MPRIS method was called even though " + "CanEditTracks property is FALSE", + method_name ); + + return_value = g_variant_new("()", NULL); + } + else if(g_strcmp0(method_name, "RemoveTrack") == 0) + { + /* Not implemented */ + g_warning( "The %s MPRIS method was called even though " + "CanEditTracks property is FALSE", + method_name ); + + return_value = g_variant_new("()", NULL); + } + else + { + g_critical("Attempted to call unknown method: %s", method_name); + + return_value = g_variant_new("()", NULL); + } + + g_dbus_method_invocation_return_value(invocation, return_value); +} + +static GVariant * +get_prop_handler( GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GError **error, + gpointer data ) +{ + GVariant *value = NULL; + + celluloid_mpris_module_get_properties( CELLULOID_MPRIS_MODULE(data), + property_name, &value, + NULL ); + + /* Call g_variant_ref() to prevent the value of the property in the + * properties table from being freed. + */ + return value?g_variant_ref(value):NULL; +} + +static gboolean +set_prop_handler( GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GVariant *value, + GError **error, + gpointer data ) +{ + g_warning( "Attempted to set property %s in " + "org.mpris.MediaPlayer2.TrackList, but the interface " + "only has read-only properties.", + property_name ); + + /* Always fail since the interface only has read-only properties */ + return FALSE; +} + +static void +playlist_handler( GObject *object, + GParamSpec *pspec, + gpointer data ) +{ + update_playlist(data); +} + +static void +metadata_update_handler(CelluloidModel *model, gint64 pos, gpointer data) +{ + GDBusConnection *conn = NULL; + GDBusInterfaceInfo *iface = NULL; + gchar *track_id = NULL; + GVariant *signal_params = NULL; + GVariant *metadata = NULL; + GPtrArray *playlist = NULL; + + g_object_get( G_OBJECT(data), + "conn", &conn, + "iface", &iface, + NULL ); + g_object_get(model, "playlist", &playlist, NULL); + + track_id = g_strdup_printf( MPRIS_TRACK_ID_PREFIX + "%" G_GINT64_FORMAT, + pos ); + metadata = playlist_entry_to_variant( g_ptr_array_index(playlist, pos), + pos ); + signal_params = g_variant_new("(o@a{sv})", track_id, metadata); + + g_dbus_connection_emit_signal + ( conn, + NULL, + MPRIS_OBJ_ROOT_PATH, + iface->name, + "TrackMetadataChanged", + signal_params, + NULL ); + + g_free(track_id); +} + +static void +update_playlist(CelluloidMprisTrackList *track_list) +{ + CelluloidModel *model = celluloid_controller_get_model + (track_list->controller); + gint64 playlist_pos = -1; + guint playlist_count = 0; + GPtrArray *playlist = NULL; + GDBusConnection *conn = NULL; + GDBusInterfaceInfo *iface = NULL; + gchar *current_track = NULL; + GVariant *tracks = NULL; + GVariant *signal_params = NULL; + GVariantBuilder builder; + + g_object_get( G_OBJECT(model), + "playlist-pos", &playlist_pos, + "playlist", &playlist, + NULL ); + g_object_get( G_OBJECT(track_list), + "conn", &conn, + "iface", &iface, + NULL ); + + playlist_count = playlist?playlist->len:0; + + g_variant_builder_init(&builder, G_VARIANT_TYPE("ao")); + + if(playlist_count <= 0 + || playlist_pos < 0 + || playlist_pos > playlist_count-1) + { + current_track = g_strdup(MPRIS_TRACK_ID_NO_TRACK); + } + + for( gint64 i = MAX(0, playlist_pos-MPRIS_TRACK_LIST_BEFORE); + i < MIN(playlist_count, playlist_pos+MPRIS_TRACK_LIST_AFTER); + i++ ) + { + gchar *path = g_strdup_printf( MPRIS_TRACK_ID_PREFIX + "%" G_GINT64_FORMAT, + i ); + + if(i == playlist_pos) + { + current_track = g_strdup(path); + } + + g_variant_builder_add_value + (&builder, g_variant_new_object_path(path)); + + g_free(path); + } + + tracks = g_variant_new("ao", (playlist_count > 0)?&builder:NULL); + signal_params = g_variant_new("(@aoo)", tracks, current_track); + + celluloid_mpris_module_set_properties_full + ( CELLULOID_MPRIS_MODULE(track_list), + FALSE, + "Tracks", tracks, + NULL ); + + /* Only emit TrackListReplaced signal. TrackAdded, TrackRemoved, and + * TrackMetadataChanged are currently unused. + */ + g_dbus_connection_emit_signal + ( conn, + NULL, + MPRIS_OBJ_ROOT_PATH, + iface->name, + "TrackListReplaced", + signal_params, + NULL ); + + g_free(current_track); +} + +static gint64 +track_id_to_index(const gchar *track_id) +{ + gint64 index = -1; + gchar *endptr = NULL; + + if(g_str_has_prefix(track_id, MPRIS_TRACK_ID_PREFIX)) + { + const gsize prefix_len = sizeof(MPRIS_TRACK_ID_PREFIX)-1; + + index = g_ascii_strtoll(track_id+prefix_len, &endptr, 10); + } + + if(endptr && *endptr) + { + g_warning("Failed to parse track ID: %s", track_id); + } + + return index; +} + +static GVariant * +playlist_entry_to_variant(CelluloidPlaylistEntry *entry, gint64 index) +{ + GVariantBuilder builder; + gchar *track_id = NULL; + gchar *title = NULL; + gchar *uri = NULL; + GVariant *elem_value = NULL; + + g_variant_builder_init(&builder, G_VARIANT_TYPE("a{sv}")); + + track_id = g_strdup_printf( "%s%" G_GINT64_FORMAT, + MPRIS_TRACK_ID_PREFIX, + index ); + elem_value = g_variant_new + ( "{sv}", + "mpris:trackid", + g_variant_new_string(track_id) ); + g_variant_builder_add_value(&builder, elem_value); + + title = entry->title? + g_strdup(entry->title): + get_name_from_path(entry->filename); + elem_value = g_variant_new + ( "{sv}", + "xesam:title", + g_variant_new_string(title) ); + g_variant_builder_add_value(&builder, elem_value); + + uri = g_filename_to_uri(entry->filename, NULL, NULL)?: + g_strdup(entry->filename); + elem_value = g_variant_new + ( "{sv}", + "xesam:uri", + g_variant_new_string(uri) ); + g_variant_builder_add_value(&builder, elem_value); + + g_free(track_id); + g_free(title); + g_free(uri); + + return g_variant_new("a{sv}", &builder); +} + +static GVariant * +get_tracks_metadata(GPtrArray *playlist, const gchar **track_ids) +{ + GVariantBuilder builder; + + g_assert(playlist); + g_assert(track_ids); + + g_variant_builder_init(&builder, G_VARIANT_TYPE("aa{sv}")); + + for(const gchar **iter = track_ids; *iter; iter++) + { + gint64 index = track_id_to_index(*iter); + + if(index >= 0 && index < playlist->len) + { + CelluloidPlaylistEntry *entry; + GVariant *elem; + + entry = g_ptr_array_index(playlist, index); + elem = playlist_entry_to_variant(entry, index); + + g_variant_builder_add_value(&builder, elem); + } + else + { + g_warning( "Attempted to retrieve metadata of " + "non-existent track ID: %s", + *iter ); + } + } + + return g_variant_new("(aa{sv})", &builder); +} + +static void +celluloid_mpris_track_list_class_init(CelluloidMprisTrackListClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS(klass); + CelluloidMprisModuleClass *module_class = + CELLULOID_MPRIS_MODULE_CLASS(klass); + GParamSpec *pspec = NULL; + + object_class->set_property = set_property; + object_class->get_property = get_property; + module_class->register_interface = register_interface; + module_class->unregister_interface = unregister_interface; + + pspec = g_param_spec_pointer + ( "controller", + "Controller", + "The CelluloidController to use", + G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_CONTROLLER, pspec); +} + +static void +celluloid_mpris_track_list_init(CelluloidMprisTrackList *track_list) +{ + track_list->controller = NULL; + track_list->reg_id = 0; +} + +CelluloidMprisModule * +celluloid_mpris_track_list_new( CelluloidController *controller, + GDBusConnection *conn ) +{ + GDBusInterfaceInfo *iface; + GObject *object; + + iface = celluloid_mpris_org_mpris_media_player2_track_list_interface_info(); + object = g_object_new( celluloid_mpris_track_list_get_type(), + "controller", controller, + "conn", conn, + "iface", iface, + NULL ); + + return CELLULOID_MPRIS_MODULE(object); +} + diff --git a/src/mpris/celluloid-mpris-track-list.h b/src/mpris/celluloid-mpris-track-list.h new file mode 100644 index 0000000..f285033 --- /dev/null +++ b/src/mpris/celluloid-mpris-track-list.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2017-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + + +#ifndef MPRIS_TRACK_LIST_H +#define MPRIS_TRACK_LIST_H + +#include "celluloid-mpris-module.h" +#include "celluloid-controller.h" + +#include + +G_BEGIN_DECLS + +#define CELLULOID_TYPE_MPRIS_TRACK_LIST (celluloid_mpris_track_list_get_type()) +G_DECLARE_FINAL_TYPE(CelluloidMprisTrackList, celluloid_mpris_track_list, CELLULOID, MPRIS_TRACK_LIST, CelluloidMprisModule) + +CelluloidMprisModule * +celluloid_mpris_track_list_new( CelluloidController *controller, + GDBusConnection *conn ); + +G_END_DECLS + +#endif diff --git a/src/mpris/celluloid-mpris.c b/src/mpris/celluloid-mpris.c new file mode 100644 index 0000000..053aa4c --- /dev/null +++ b/src/mpris/celluloid-mpris.c @@ -0,0 +1,288 @@ +/* + * Copyright (c) 2015-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#include +#include +#include +#include +#include +#include + +#include "celluloid-mpris.h" +#include "celluloid-mpris-base.h" +#include "celluloid-mpris-player.h" +#include "celluloid-mpris-track-list.h" +#include "celluloid-def.h" + +enum +{ + PROP_0, + PROP_CONTROLLER, + N_PROPERTIES +}; + +struct _CelluloidMpris +{ + GObject parent; + CelluloidController *controller; + CelluloidMprisModule *base; + CelluloidMprisModule *player; + CelluloidMprisModule *track_list; + guint name_id; + GDBusConnection *session_bus_conn; +}; + +struct _CelluloidMprisClass +{ + GObjectClass parent_class; +}; + +G_DEFINE_TYPE(CelluloidMpris, celluloid_mpris, G_TYPE_OBJECT) + +static void +constructed(GObject *object); + +static void +dispose(GObject *object); + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ); + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ); + +static void +name_acquired_handler( GDBusConnection *connection, + const gchar *name, + gpointer data ); + +static void +name_lost_handler( GDBusConnection *connection, + const gchar *name, + gpointer data ); + +static void +unregister(CelluloidMpris *mpris); + +static void +constructed(GObject *object) +{ + CelluloidMpris *self = CELLULOID_MPRIS(object); + gchar *address = NULL; + GDBusConnection *conn = NULL; + + address = g_dbus_address_get_for_bus_sync + (G_BUS_TYPE_SESSION, NULL, NULL); + + if(address) + { + const GDBusConnectionFlags flags = + G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT| + G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION; + + conn = g_dbus_connection_new_for_address_sync + (address, flags, NULL, NULL, NULL); + + g_free(address); + } + + if(conn) + { + CelluloidView *view = celluloid_controller_get_view + (self->controller); + CelluloidMainWindow *window = celluloid_view_get_main_window + (view); + guint window_id = gtk_application_window_get_id + (GTK_APPLICATION_WINDOW(window)); + gchar *name = g_strdup_printf + (MPRIS_BUS_NAME ".instance-%u", window_id); + + self->name_id = g_bus_own_name_on_connection + ( conn, + name, + G_BUS_NAME_OWNER_FLAGS_NONE, + (GBusNameAcquiredCallback) + name_acquired_handler, + (GBusNameLostCallback) + name_lost_handler, + self, + NULL ); + + g_free(name); + } + else + { + g_warning( "Failed to create DBus connection; " + "MPRIS will be unavailable" ); + } + + G_OBJECT_CLASS(celluloid_mpris_parent_class)->constructed(object); +} + +static void +dispose(GObject *object) +{ + CelluloidMpris *self = CELLULOID_MPRIS(object); + + unregister(self); + g_clear_object(&self->base); + g_clear_object(&self->player); + g_clear_object(&self->track_list); + g_bus_unown_name(self->name_id); + + G_OBJECT_CLASS(celluloid_mpris_parent_class)->dispose(object); +} + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ) +{ + CelluloidMpris *self = CELLULOID_MPRIS(object); + + switch(property_id) + { + case PROP_CONTROLLER: + self->controller = g_value_get_pointer(value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } + +} + +static void +get_property( GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec ) +{ + CelluloidMpris *self = CELLULOID_MPRIS(object); + + switch(property_id) + { + case PROP_CONTROLLER: + g_value_set_pointer(value, self->controller); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } + +} + +static void +name_acquired_handler( GDBusConnection *connection, + const gchar *name, + gpointer data ) +{ + CelluloidMpris *self = data; + + self->session_bus_conn = connection; + self->base = celluloid_mpris_base_new + (self->controller, connection); + self->player = celluloid_mpris_player_new + (self->controller, connection); + self->track_list = celluloid_mpris_track_list_new + (self->controller, connection); + + celluloid_mpris_module_register(self->base); + celluloid_mpris_module_register(self->player); + celluloid_mpris_module_register(self->track_list); +} + +static void +name_lost_handler( GDBusConnection *connection, + const gchar *name, + gpointer data ) +{ + unregister(data); +} + +static void +unregister(CelluloidMpris *mpris) +{ + celluloid_mpris_module_unregister(mpris->base); + celluloid_mpris_module_unregister(mpris->player); + celluloid_mpris_module_unregister(mpris->track_list); +} + +static void +celluloid_mpris_init(CelluloidMpris *mpris) +{ + mpris->controller = NULL; + mpris->base = NULL; + mpris->player = NULL; + mpris->track_list = NULL; + mpris->name_id = 0; + mpris->session_bus_conn = NULL; +} + +static void +celluloid_mpris_class_init(CelluloidMprisClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS(klass); + GParamSpec *pspec = NULL; + + object_class->constructed = constructed; + object_class->set_property = set_property; + object_class->get_property = get_property; + object_class->dispose = dispose; + + pspec = g_param_spec_pointer + ( "controller", + "Controller", + "The CelluloidController to use", + G_PARAM_CONSTRUCT_ONLY|G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_CONTROLLER, pspec); +} + +GVariant * +celluloid_mpris_build_g_variant_string_array(const gchar** list) +{ + GVariantBuilder builder; + gint i; + + g_variant_builder_init(&builder, G_VARIANT_TYPE("as")); + + for(i = 0; list[i]; i++) + { + g_variant_builder_add(&builder, "s", list[i]); + } + + return g_variant_new("as", &builder); +} + +CelluloidMpris * +celluloid_mpris_new(CelluloidController *controller) +{ + return CELLULOID_MPRIS(g_object_new( celluloid_mpris_get_type(), + "controller", controller, + NULL )); +} diff --git a/src/mpris/celluloid-mpris.h b/src/mpris/celluloid-mpris.h new file mode 100644 index 0000000..3ac9d57 --- /dev/null +++ b/src/mpris/celluloid-mpris.h @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2015-2019 gnome-mpv + * + * This file is part of Celluloid. + * + * Celluloid 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. + * + * Celluloid 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 Celluloid. If not, see . + */ + +#ifndef MPRIS_H +#define MPRIS_H + +#include +#include + +#include "celluloid-controller.h" + +G_BEGIN_DECLS + +#define CELLULOID_TYPE_MPRIS (celluloid_mpris_get_type ()) + +G_DECLARE_FINAL_TYPE(CelluloidMpris, celluloid_mpris, CELLULOID, MPRIS, GObject) + +GVariant * +celluloid_mpris_build_g_variant_string_array(const gchar** list); + +CelluloidMpris * +celluloid_mpris_new(CelluloidController *controller); + +G_END_DECLS + +#endif diff --git a/test/meson.build b/test/meson.build new file mode 100644 index 0000000..f2e340b --- /dev/null +++ b/test/meson.build @@ -0,0 +1,8 @@ +exe = executable( + 'test-option-parser', + ['..' / 'src' / 'celluloid-option-parser.c', 'test-option-parser.c'], + include_directories: include_directories('..' / 'src'), + dependencies: libgtk +) + +test('test-option-parser', exe) diff --git a/test/test-option-parser.c b/test/test-option-parser.c new file mode 100644 index 0000000..a128566 --- /dev/null +++ b/test/test-option-parser.c @@ -0,0 +1,170 @@ +#include + +#include "celluloid-option-parser.h" + +static void +test_option_with_no_value(void) +{ + const gchar *str = "--foo"; + gchar *key = NULL; + gchar *val = NULL; + + str = parse_option(str, &key, &val); + g_assert_true(str && !*str); + g_assert_true(g_strcmp0(key, "foo") == 0); + g_assert_true(!val); + g_free(key); + g_free(val); +} + +static void +test_option_with_value(void) +{ + const gchar *str = "--foo=bar"; + gchar *key = NULL; + gchar *val = NULL; + + str = parse_option(str, &key, &val); + g_assert_true(str && !*str); + g_assert_true(g_strcmp0(key, "foo") == 0); + g_assert_true(g_strcmp0(val, "bar") == 0); + g_free(key); + g_free(val); +} + +static void +test_option_with_hyphen(void) +{ + const gchar *str = "--foo-bar=baz"; + gchar *key = NULL; + gchar *val = NULL; + + str = parse_option(str, &key, &val); + g_assert_true(str && !*str); + g_assert_true(g_strcmp0(key, "foo-bar") == 0); + g_assert_true(g_strcmp0(val, "baz") == 0); + g_free(key); + g_free(val); +} + +static void +test_option_with_underscore(void) +{ + const gchar *str = "--foo_bar=baz"; + gchar *key = NULL; + gchar *val = NULL; + + str = parse_option(str, &key, &val); + g_assert_true(str && !*str); + g_assert_true(g_strcmp0(key, "foo_bar") == 0); + g_assert_true(g_strcmp0(val, "baz") == 0); + g_free(key); + g_free(val); +} + +static void +test_multiple_options(void) +{ + const gchar *str = "--foo --foo-bar=baz --bar --baz=foo"; + gchar *key = NULL; + gchar *val = NULL; + + str = parse_option(str, &key, &val); + g_assert_true(str); + g_assert_true(g_strcmp0(key, "foo") == 0); + g_assert_true(!val); + g_clear_pointer(&key, g_free); + g_clear_pointer(&val, g_free); + + str = parse_option(str, &key, &val); + g_assert_true(str); + g_assert_true(g_strcmp0(key, "foo-bar") == 0); + g_assert_true(g_strcmp0(val, "baz") == 0); + g_clear_pointer(&key, g_free); + g_clear_pointer(&val, g_free); + + str = parse_option(str, &key, &val); + g_assert_true(str); + g_assert_true(g_strcmp0(key, "bar") == 0); + g_assert_true(!val); + g_clear_pointer(&key, g_free); + g_clear_pointer(&val, g_free); + + str = parse_option(str, &key, &val); + g_assert_true(str && !*str); + g_assert_true(g_strcmp0(key, "baz") == 0); + g_assert_true(g_strcmp0(val, "foo") == 0); + g_clear_pointer(&key, g_free); + g_clear_pointer(&val, g_free); +} + +static void +test_option_with_no_prefix(void) +{ + const gchar *str = "foo=bar"; + gchar *key = NULL; + gchar *val = NULL; + + str = parse_option(str, &key, &val); + g_assert_true(str && !*str); + g_assert_true(g_strcmp0(key, "foo") == 0); + g_assert_true(g_strcmp0(val, "bar") == 0); + g_free(key); + g_free(val); +} + +static void +test_quoted_value(void) +{ + const gchar *str = "--foo='bar baz'"; + gchar *key = NULL; + gchar *val = NULL; + + str = parse_option(str, &key, &val); + g_assert_true(str && !*str); + g_assert_true(g_strcmp0(key, "foo") == 0); + g_assert_true(g_strcmp0(val, "bar baz") == 0); + g_free(key); + g_free(val); +} + +static void +test_double_quoted_value(void) +{ + const gchar *str = "--foo=\"bar baz\""; + gchar *key = NULL; + gchar *val = NULL; + + str = parse_option(str, &key, &val); + g_assert_true(str && !*str); + g_assert_true(g_strcmp0(key, "foo") == 0); + g_assert_true(g_strcmp0(val, "bar baz") == 0); + g_free(key); + g_free(val); +} + +int +main(gint argc, gchar **argv) +{ + g_test_init(&argc, &argv, NULL); + g_test_set_nonfatal_assertions(); + + g_test_add_func("/test-option-with-no-value", + test_option_with_no_value ); + g_test_add_func("/test-option-with-value", + test_option_with_value ); + g_test_add_func("/test-option-with-hyphen", + test_option_with_hyphen ); + g_test_add_func("/test-option-with-underscore", + test_option_with_underscore ); + g_test_add_func("/test-multiple-options", + test_multiple_options ); + g_test_add_func("/test-option-with-no-prefix", + test_option_with_no_prefix ); + g_test_add_func("/test-quoted-value", + test_quoted_value ); + g_test_add_func("/test-double-quoted-value", + test_double_quoted_value ); + + return g_test_run(); +} diff --git a/zanata.xml b/zanata.xml new file mode 100644 index 0000000..0553cb4 --- /dev/null +++ b/zanata.xml @@ -0,0 +1,9 @@ + + + https://translate.zanata.org/ + celluloid + master + gettext + po + po +