Repository: johnfactotum/foliate Branch: gtk4 Commit: ac005e93afab Files: 119 Total size: 1.4 MB Directory structure: gitextract_nqltqwj6/ ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── feature_request.md │ │ └── question.md │ └── workflows/ │ ├── deb.yml │ ├── eslint.yml │ └── snap.yml ├── .gitignore ├── .gitmodules ├── COPYING ├── README.md ├── com.github.johnfactotum.Foliate.json ├── data/ │ ├── com.github.johnfactotum.Foliate.desktop.in │ ├── com.github.johnfactotum.Foliate.gschema.xml │ ├── com.github.johnfactotum.Foliate.metainfo.xml.in │ ├── gschemas.compiled │ └── meson.build ├── debian/ │ ├── changelog │ ├── control │ ├── copyright │ ├── lintian-override │ ├── rules │ ├── source/ │ │ └── format │ ├── upstream/ │ │ └── metadata │ └── watch ├── docs/ │ ├── faq.md │ └── troubleshooting.md ├── eslint.config.js ├── meson.build ├── meson_options.txt ├── package.json ├── po/ │ ├── LINGUAS │ ├── POTFILES │ ├── ar.po │ ├── be.po │ ├── com.github.johnfactotum.Foliate.pot │ ├── cs.po │ ├── de.po │ ├── el.po │ ├── es.po │ ├── eu.po │ ├── fa.po │ ├── fr.po │ ├── ga.po │ ├── gl.po │ ├── he.po │ ├── hi.po │ ├── hr.po │ ├── hu.po │ ├── id.po │ ├── ie.po │ ├── it.po │ ├── ja.po │ ├── ka.po │ ├── ko.po │ ├── meson.build │ ├── nb.po │ ├── nl.po │ ├── nn.po │ ├── oc.po │ ├── pt_BR.po │ ├── ru.po │ ├── sr.po │ ├── sv.po │ ├── tr.po │ ├── uk.po │ ├── vi.po │ ├── zh_CN.po │ └── zh_TW.po ├── snapcraft.yaml └── src/ ├── annotations.js ├── app.js ├── book-info.js ├── book-viewer.js ├── common/ │ └── widgets.js ├── data.js ├── format.js ├── generate-gresource.js ├── gresource.xml ├── image-viewer.js ├── library.js ├── main.js ├── meson.build ├── navbar.js ├── opds/ │ ├── main.html │ └── main.js ├── reader/ │ ├── markup.js │ ├── reader.html │ └── reader.js ├── search.js ├── selection-tools/ │ ├── common.css │ ├── translate.html │ ├── wikipedia.html │ └── wiktionary.html ├── selection-tools.js ├── speech.js ├── themes.js ├── toc.js ├── tts.js ├── ui/ │ ├── annotation-popover.ui │ ├── annotation-row.ui │ ├── book-image.ui │ ├── book-item.ui │ ├── book-row.ui │ ├── book-viewer.ui │ ├── bookmark-row.ui │ ├── export-dialog.ui │ ├── help-overlay.ui │ ├── image-viewer.ui │ ├── import-dialog.ui │ ├── library-view.ui │ ├── library.ui │ ├── media-overlay-box.ui │ ├── navbar.ui │ ├── selection-popover.ui │ ├── tts-box.ui │ └── view-preferences-window.ui ├── utils.js └── webview.js ================================================ FILE CONTENTS ================================================ ================================================ FILE: .github/FUNDING.yml ================================================ buy_me_a_coffee: johnfactotum ================================================ FILE: .github/ISSUE_TEMPLATE/bug_report.md ================================================ --- name: Bug report about: Create a report to help us improve title: '' labels: bug assignees: '' --- **Describe the bug** A clear and concise description of what the bug is. **To Reproduce** Steps to reproduce the behavior: 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' 4. See error **Expected behavior** A clear and concise description of what you expected to happen. **Screenshots** If applicable, add screenshots to help explain your problem. **Version:** - Foliate version: - OS/Distribution and version: [e.g. Ubuntu 18.04] - Desktop environment: [e.g. GNOME 3.36] - Installation method: [e.g. Flatpak] **Additional context** Add any other context about the problem here. ================================================ FILE: .github/ISSUE_TEMPLATE/feature_request.md ================================================ --- name: Feature request about: Suggest an idea for this project title: '' labels: enhancement assignees: '' --- **Is your feature request related to a problem? Please describe.** A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] **Describe the solution you'd like** A clear and concise description of what you want to happen. **Describe alternatives you've considered** A clear and concise description of any alternative solutions or features you've considered. **Additional context** Add any other context or screenshots about the feature request here. ================================================ FILE: .github/ISSUE_TEMPLATE/question.md ================================================ --- name: Question about: Ask a question title: '' labels: question assignees: '' --- **Question:** A clear and concise statement of your question. **Version:** - Foliate version: - OS/Distribution and version: [e.g. Ubuntu 18.04] - Desktop environment: [e.g. GNOME 3.36] - Installation method: [e.g. Flatpak] ================================================ FILE: .github/workflows/deb.yml ================================================ # This is a basic workflow to help you get started with Actions name: Build Debian Package # Controls when the action will run. on: # Triggers the workflow on push or pull request events but only for the master branch push: branches: [ gtk4 ] pull_request: branches: [ gtk4 ] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" build: # The type of runner that the job will run on runs-on: ubuntu-24.04 # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v2 with: submodules: 'true' - run: sudo apt-get update - run: sudo apt-get install build-essential debhelper meson gettext pkg-config libglib2.0-dev gjs appstream libgjs-dev desktop-file-utils - run: dpkg-buildpackage -us -uc -nc - run: mv ../*.deb . - uses: actions/upload-artifact@v4 with: name: Debian Package path: "*.deb" ================================================ FILE: .github/workflows/eslint.yml ================================================ # This workflow uses actions that are not certified by GitHub. # They are provided by a third-party and are governed by # separate terms of service, privacy policy, and support # documentation. # ESLint is a tool for identifying and reporting on patterns # found in ECMAScript/JavaScript code. # More details at https://github.com/eslint/eslint # and https://eslint.org name: ESLint on: push: branches: [ "gtk4" ] pull_request: # The branches below must be a subset of the branches above branches: [ "gtk4" ] schedule: - cron: '38 14 * * 6' jobs: eslint: name: Run eslint scanning runs-on: ubuntu-latest permissions: contents: read security-events: write actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status steps: - name: Checkout code uses: actions/checkout@v3 - name: Install ESLint run: | npm install npm install @microsoft/eslint-formatter-sarif@3.0.0 - name: Run ESLint run: npx eslint . --format @microsoft/eslint-formatter-sarif --output-file eslint-results.sarif continue-on-error: true - name: Upload analysis results to GitHub uses: github/codeql-action/upload-sarif@v2 with: sarif_file: eslint-results.sarif wait-for-processing: true ================================================ FILE: .github/workflows/snap.yml ================================================ name: Build test Foliate Snap on: push: branches: - gtk4 workflow_dispatch: jobs: snap: name: Build snap runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Change Source run: yq 'del(.parts.foliate.source-tag) | .parts.foliate.source = "."' snapcraft.yaml - uses: canonical/action-build@v1 id: snapcraft - uses: actions/upload-artifact@v4 if: ${{ github.event_name == 'release' }} #uploads the snap only if it's a release with: name: amber-snap path: ${{ steps.snapcraft.outputs.snap }} ================================================ FILE: .gitignore ================================================ _build/ build/ .flatpak-builder/ .mo __pycache__/ node_modules/ #snapcraft specific ignores /parts/ /stage/ /prime/ *.snap .snapcraft __pycache__ *.pyc *_source.tar.bz2 snap/.snapcraft ================================================ FILE: .gitmodules ================================================ [submodule "src/foliate-js"] path = src/foliate-js url = https://github.com/johnfactotum/foliate-js ================================================ FILE: COPYING ================================================ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . ================================================ FILE: README.md ================================================

# Foliate Read books in style. ![Screenshot](data/screenshots/screenshot.png) ## Installation ### Run Time Dependencies - `gjs` (>= 1.82) - `gtk4` (>= 4.12) - `libadwaita` (>= 1.8; `gir1.2-adw-1` in Debian-based distros) - `webkitgtk-6.0` (`webkitgtk6.0` in Fedora; `gir1.2-webkit-6.0` in Debian-based distros) #### Optional Dependencies To enable auto-hyphenation, you will need to install hyphenation rules, e.g., `hyphen-en` for English, `hyphen-fr` for French, etc. (which strictly speaking are optional dependencies for WebkitGTK, not Foliate itself). For text-to-speech support, install `speech-dispatcher` and output modules such as `espeak-ng`. If installed, `tracker` (>= 3; `gir1.2-tracker-3.0` in Debian-based distros) and `tracker-miners` can be used to track the locations of files. ### Obtaining the Source The repo uses git submodules. Before running or installing, make sure you clone the whole thing with `--recurse-submodules`: ``` git clone --recurse-submodules https://github.com/johnfactotum/foliate.git ``` Or download the tarball (the `.tar.xz` file) from the [Releases](https://github.com/johnfactotum/foliate/releases) page. ### Run without Building or Installing It's possible to run directly from the source tree without building or installing. Simply run ``` gjs -m src/main.js ``` This can be useful if you just want to quickly try out Foliate or test a change. But note that this will run it without using GSettings, so settings will not be saved. To solve this, you can compile the schema by running ``` glib-compile-schemas data ``` Then you can set the schema directory when running the app: ``` GSETTINGS_SCHEMA_DIR=data gjs -m src/main.js ``` ### Building and Installing from Source The following dependencies are required for building: - `meson` (>= 0.59) - `pkg-config` - `gettext` To install, run the following commands: ``` meson setup build sudo ninja -C build install ``` To uninstall, run ``` sudo ninja -C build uninstall ``` #### Installing to a Local Directory By default Meson installs to `/usr/local`. You can install without root permissions by choosing a local prefix, such as `$PWD/run`: ``` meson setup build --prefix $PWD/run ninja -C build install ``` You can then run it with ``` GSETTINGS_SCHEMA_DIR=run/share/glib-2.0/schemas ./run/bin/foliate ``` ### Flatpak Foliate is available on [Flathub](https://flathub.org/apps/details/com.github.johnfactotum.Foliate). For developement with Flatpak, use [GNOME Builder](https://wiki.gnome.org/Apps/Builder) to open and run the project. ### Snap Foliate is available on the [Snap Store](https://snapcraft.io/foliate). To install: ``` sudo snap install foliate ``` ## Screenshots ![Dark mode](data/screenshots/dark.png) ![Wikipedia lookup](data/screenshots/lookup.png) ![Book metadata](data/screenshots/about.png) ![Annotations](data/screenshots/annotations.png) ![Popup footnote](data/screenshots/footnote.png) ![Vertical writing](data/screenshots/vertical.png) ## License This program is free software: you can redistribute it and/or modify it under the terms of the [GNU General Public License](https://www.gnu.org/licenses/gpl.html) as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. The following JavaScript libraries are bundled in this software: - [foliate-js](https://github.com/johnfactotum/foliate-js), which is MIT licensed. - [zip.js](https://github.com/gildas-lormeau/zip.js), which is licensed under the BSD-3-Clause license. - [fflate](https://github.com/101arrowz/fflate), which is MIT licensed. - [PDF.js](https://github.com/mozilla/pdf.js), which is licensed under Apache License 2.0. --- Buy Me A Coffee ================================================ FILE: com.github.johnfactotum.Foliate.json ================================================ { "app-id" : "com.github.johnfactotum.Foliate", "runtime" : "org.gnome.Sdk", "runtime-version" : "49", "sdk" : "org.gnome.Sdk", "command" : "foliate", "finish-args" : [ "--share=network", "--share=ipc", "--socket=fallback-x11", "--device=dri", "--socket=wayland", "--filesystem=xdg-run/speech-dispatcher:ro", "--add-policy=Tracker3.dbus:org.freedesktop.Tracker3.Miner.Files=tracker:Documents" ], "modules" : [ { "name" : "foliate", "buildsystem" : "meson", "sources" : [ { "type" : "git", "branch": "gtk4", "url": "https://github.com/johnfactotum/foliate.git" } ] } ] } ================================================ FILE: data/com.github.johnfactotum.Foliate.desktop.in ================================================ [Desktop Entry] # Translators: Do NOT translate! The is the application name! Name=Foliate GenericName=E-Book Viewer Comment=Read e-books in style Categories=Office;Viewer; MimeType=application/epub+zip;application/x-mobipocket-ebook;application/vnd.amazon.mobi8-ebook;application/x-fictionbook+xml;application/x-zip-compressed-fb2;application/vnd.comicbook+zip;x-scheme-handler/opds; Exec=foliate %U Icon=com.github.johnfactotum.Foliate Terminal=false Type=Application # Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! Keywords=Ebook;Book;EPUB;Viewer;Reader; # Translators: Do NOT translate or transliterate this text (these are enum types)! X-Purism-FormFactor=Workstation;Mobile; StartupNotify=true ================================================ FILE: data/com.github.johnfactotum.Foliate.gschema.xml ================================================ 0 1200 750 false false 'grid' true 256 false 'yellow' '' 1 1.5 true true 0.06 720 1440 2 false true false 'default' false false 'Serif' 'Sans' 'Monospace' 0 16 0 ================================================ FILE: data/com.github.johnfactotum.Foliate.metainfo.xml.in ================================================ com.github.johnfactotum.Foliate CC0-1.0 GPL-3.0-or-later Foliate Read e-books in style com.github.johnfactotum.Foliate

Discover a new chapter in reading with Foliate, the modern e-book reader tailored for GNOME. Immerse yourself in a distraction-free interface, with customization features designed to match your unique preferences.

Features include:

  • Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files
  • Paginated mode and scrolled mode
  • Customize font and line-spacing
  • Light, sepia, dark, and invert mode
  • Reading progress slider with chapter marks
  • Bookmarks and annotations
  • Find in book
  • Quick dictionary lookup
John Factotum John Factotum com.github.johnfactotum.Foliate.desktop https://johnfactotum.github.io/foliate/ https://github.com/johnfactotum/foliate https://github.com/johnfactotum/foliate/issues https://github.com/johnfactotum/foliate/tree/gtk4/po https://github.com/johnfactotum/foliate/blob/gtk4/docs/faq.md https://www.buymeacoffee.com/johnfactotum https://raw.githubusercontent.com/johnfactotum/foliate/gtk4/data/screenshots/screenshot.png https://raw.githubusercontent.com/johnfactotum/foliate/gtk4/data/screenshots/dark.png https://raw.githubusercontent.com/johnfactotum/foliate/gtk4/data/screenshots/lookup.png https://raw.githubusercontent.com/johnfactotum/foliate/gtk4/data/screenshots/annotations.png https://raw.githubusercontent.com/johnfactotum/foliate/gtk4/data/screenshots/vertical.png https://github.com/johnfactotum/foliate/releases/tag/3.3.0
  • Updated for GNOME 48
  • Added support for mouse forward/backward buttons
  • Improved text wrapping in headings
  • Improved default link style
https://github.com/johnfactotum/foliate/releases/tag/3.2.1
  • Fixed tables not displayed in FB2 books
  • Updated translations
https://github.com/johnfactotum/foliate/releases/tag/3.2.0

Various improvments and fixes, including a revamped translation tool, better focus handling, and better PDF rendering, now faster and no longer blurry.

https://github.com/johnfactotum/foliate/releases/tag/3.1.1
  • Fixed end of chapter cut off when chapter starts with page break
  • Fixed incorrect text wrapping in tables
  • Fixed a performance issue with OPDS catalogs
https://github.com/johnfactotum/foliate/releases/tag/3.1.0
  • Added support for OPDS catalogs, now with support for OPDS 2.0
  • Added option to override publisher font
  • Added option to reduce animation
  • Added support for JPEG XL in CBZ
  • Fixed getting file from Tracker in Flatpak
  • Fixed parsing of non-year-only first-century and BCE dates
https://github.com/johnfactotum/foliate/releases/tag/3.0.1 https://github.com/johnfactotum/foliate/releases/tag/3.0.0

Foliate has been rewritten from scratch with a new e-book rendering library and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI and improved performance.

mobile #7bf1d9 #0b6275
================================================ FILE: data/meson.build ================================================ desktop_file = i18n.merge_file( input: 'com.github.johnfactotum.Foliate.desktop.in', output: 'com.github.johnfactotum.Foliate.desktop', type: 'desktop', po_dir: '../po', install: true, install_dir: join_paths(get_option('datadir'), 'applications') ) desktop_utils = find_program('desktop-file-validate', required: false) if desktop_utils.found() test('Validate desktop file', desktop_utils, args: [desktop_file] ) endif appstream_file = i18n.merge_file( input: 'com.github.johnfactotum.Foliate.metainfo.xml.in', output: 'com.github.johnfactotum.Foliate.metainfo.xml', po_dir: '../po', install: true, install_dir: join_paths(get_option('datadir'), 'metainfo') ) appstreamcli = find_program('appstreamcli', required: false) if appstreamcli.found() test('Validate appstream file', appstreamcli, args: ['validate', '--no-net', appstream_file] ) endif install_data('com.github.johnfactotum.Foliate.gschema.xml', install_dir: join_paths(get_option('datadir'), 'glib-2.0/schemas') ) compile_schemas = find_program('glib-compile-schemas', required: false) if compile_schemas.found() test('Validate schema file', compile_schemas, args: ['--strict', '--dry-run', meson.current_source_dir()] ) endif install_data('com.github.johnfactotum.Foliate.svg', install_dir: join_paths(get_option('datadir'), 'icons/hicolor/scalable/apps') ) install_data('com.github.johnfactotum.Foliate-symbolic.svg', install_dir: join_paths(get_option('datadir'), 'icons/hicolor/symbolic/apps') ) ================================================ FILE: debian/changelog ================================================ foliate (3.3.0) bionic; urgency=medium * New version -- John Factotum <50942278+johnfactotum@users.noreply.github.com> Sun, 30 Jul 2023 08:08:08 +0800 ================================================ FILE: debian/control ================================================ Source: foliate Section: gnome Priority: optional Maintainer: John Factotum <50942278+johnfactotum@users.noreply.github.com> Build-Depends: debhelper-compat(=13), gettext, meson (>= 0.59), pkg-config, libglib2.0-dev (>= 2.54), libgjs-dev, desktop-file-utils, appstream Standards-Version: 4.5.0 Rules-Requires-Root: no Homepage: https://johnfactotum.github.io/foliate/ Vcs-Browser: https://github.com/johnfactotum/foliate Vcs-Git: https://github.com/johnfactotum/foliate.git Package: foliate Architecture: all Depends: ${misc:Depends}, gjs (>= 1.82), gir1.2-gtk-4.0 (>= 4.12), gir1.2-adw-1 (>= 1.8), gir1.2-webkit-6.0 Suggests: gir1.2-tracker-3.0 Description: Read e-books in style Supported formats: EPUB (.epub) Kindle (.azw, .azw3) and Mobipocket (.mobi) FictionBook 2 (.fb2, .fb2.zip) Comic Book Archive (.cbz) ================================================ FILE: debian/copyright ================================================ Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: foliate Upstream-Contact: John Factotum <50942278+johnfactotum@users.noreply.github.com> Source: https://github.com/johnfactotum/foliate Files: * Copyright: John Factotum License: GPL-3.0+ Files: src/foliate-js/* Copyright: John Factotum License: Expat Files: src/foliate-js/fflate.js Copyright: 2020 Arjun Barrett License: Expat Files: src/foliate-js/zip.js Copyright: Gildas Lormeau License: BSD-3-clause License: GPL-3.0+ 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". License: Expat Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: . The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. . THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: debian/lintian-override ================================================ foliate: no-manual-page ================================================ FILE: debian/rules ================================================ #!/usr/bin/make -f export DEB_BUILD_MAINT_OPTIONS = hardening=+all %: dh $@ override_dh_auto_configure: dh_auto_configure -- -Dcheck_runtime_deps=false override_dh_auto_install: dh_auto_install find ./debian -type f -name "LICENSE" -delete ================================================ FILE: debian/source/format ================================================ 3.0 (quilt) ================================================ FILE: debian/upstream/metadata ================================================ Bug-Database: https://github.com/johnfactotum/foliate/issues Bug-Submit: https://github.com/johnfactotum/foliate/issues/new Repository: https://github.com/johnfactotum/foliate.git Repository-Browse: https://github.com/johnfactotum/foliate Security-Contact: 50942278+johnfactotum@users.noreply.github.com ================================================ FILE: debian/watch ================================================ version=4 opts=filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/foliate-$1\.tar\.gz/ \ https://github.com/johnfactotum/foliate/tags .*/?(\d\.\d.\d)\.tar\.gz ================================================ FILE: docs/faq.md ================================================ # FAQ ## General ### Something isn't working! What can I do? See [troubleshooting](troubleshooting.md). ## Reading ### What are "locations"? In Foliate, a book is divided into locations. Each location is 1500 bytes long. This gives you a rough "page count" that is (mostly) independent from the size of the viewport. Locations are not exact. If you want to reference locations in a book, you should use the *identifiers* provided by Foliate, which are standard [EPUB Canonical Fragment Identifiers (CFI)](https://w3c.github.io/epub-specs/epub33/epubcfi/). In 1.x and 2.x versions of Foliate, locations were calculated with a entirely different (slower but more precise) method and they are not compatible with the current version. ### How are reading time estimates calculated? Currently, it simply uses the number of locations — basically, a character count — as a rough estimate. It isn't based on your page turning speed. ### How to use text-to-speech? Foliate supports text-to-speech with speech-dispatcher, so make sure `speech-dispatcher` and output modules such as `espeak-ng` are installed on your system. To use it, click on the Narration button (the one with a headphones icon) on the navbar (which is available by hovering or tapping on the footer area). Note that if the book has embedded audio ([EPUB Media Overlays](https://www.w3.org/TR/epub/#sec-media-overlays)), the Narration button would show controls for the embedded media, and TTS would not be available in that case. Alternatively you can select some text and choose Speak from Here from the selection menu. Though you still need to use the Narration button if you want to stop the speech output. The default voice may sound somewhat robotic. You can use [Pied](https://pied.mikeasoft.com/) (a frontend for configuring [Piper](https://github.com/rhasspy/piper)) to change that to a more natural sounding voice. See [this](https://askubuntu.com/a/1526192/124466) for more details. ### How to use custom themes? Themes are defined as JSON files. Here is an example theme: ```json { "label": "Ghostly Mist", "light": { "fg": "#999999", "bg": "#cccccc", "link": "#666666" }, "dark": { "fg": "#666666", "bg": "#333333", "link": "#777777" } } ``` To install themes, you need to put them in `~/.config/com.github.johnfactotum.Foliate/themes/`. When using Flatpak, the files should be placed in `~/.var/app/com.github.johnfactotum.Foliate/config/com.github.johnfactotum.Foliate/themes/`. When using Snap, the files should be placed in `~/snap/foliate/current/.config/com.github.johnfactotum.Foliate/themes/`. ### Can I set my own custom CSS styles? You can create a user stylesheet file at `~/.config/com.github.johnfactotum.Foliate/user-stylesheet.css`. If you're using Flatpak, the location should be `~/.var/app/com.github.johnfactotum.Foliate/config/com.github.johnfactotum.Foliate/user-stylesheet.css`. Note that Foliate needs to be restarted for changes to take effect. Tip: you can use the [`:lang()`](https://developer.mozilla.org/en-US/docs/Web/CSS/:lang) selector to apply different styles for books in different languages. ## Bookmarks & Annotations ### How are notes and bookmarks stored? Your reading progress, bookmarks, and annotations are saved in `~/.local/share/com.github.johnfactotum.Foliate`. When using Flatpak, they are placed in `~/.var/app/com.github.johnfactotum.Foliate/data/com.github.johnfactotum.Foliate`. When using Snap, they are placed in `~/snap/foliate/current/.local/share/com.github.johnfactotum.Foliate`. The data for each book is stored in a JSON file named after the book's identifier. If you'd like to sync or backup your progress and notes, simply copy these files and everything should just work™. Inside the JSON file, the structure looks like this: ```javascript { "lastLocation": "epubcfi(/6/12!/4/2/2/2/1:0)", // your reading progress "annotations": [ { // EPUB CFI of the highlighted text "value": "epubcfi(/6/12!/4/2/2/2,/1:0,/1:286)", // highlight color "color": "aqua", // the highlighted text "text": "Good sense is, of all things among men, the most equally distributed; for every one thinks himself so abundantly provided with it, that those even who are the most difficult to satisfy in everything else, do not usually desire a larger measure of this quality than they already possess.", // ... and your note "note": "Very droll, René." }, // ... ], "bookmarks": [ /* bookmarks are stored here */ ], "metadata": { /* the book's metadata */ } } ``` The `epubcfi(...)` parts are [EPUB Canonical Fragment Identifiers (CFI)](https://w3c.github.io/epub-specs/epub33/epubcfi/), which is the "standardized method for referencing arbitrary content within an EPUB® Publication." ### How are identifiers generated? For formats or books without unique identifiers, Foliate will generate one with the prefix `foliate:`, plus the MD5 hash of the file. To speed things up, it only uses up to the first 10000000 bytes of the file. You can run `head -c 10000000 $YOUR_FILE_HERE | md5sum` to get the same hash. ## Security ### Is Foliate secure? EPUB files are HTML files packaged in a Zip file. They can contain JavaScript and other potentially unsafe content. Currently, JavaScript and external resources are blocked in Foliate. For additional safeguard against potential vulnerabilities it is recommended to run Foliate in a sandboxed environment, for example, by using the Flatpak package. In 1.x and 2.x versions of Foliate, JavaScript could be optionally enabled. Do NOT do this if you're using these versions as it is highly insecure. ### Why does it require these Flatpak permissions? - It requires network access (`--share=network`) for online dictionary, encyclopedia, and translation tools. - It requires `--filesystem=xdg-run/speech-dispatcher:ro` in order to connect to the speech-dispatcher server on the host. - It requires `--add-policy=Tracker3.dbus:org.freedesktop.Tracker3.Miner.Files=tracker:Documents` in order to access the [Tracker](https://tracker.gnome.org/) database on the host. This allows Foliate to get the locations of files when opening books from the library view. The permissions listed above are all optional. If you don't need the functionalities provided by these permissions, you should consider overriding them with the `flatpak` command or with tools like [Flatseal](https://github.com/tchx84/flatseal). ## For Publishers and Developers ### Developer Tools WeKit's Developer Tools can be accessed by going to the primary menu > Inspector, or by pressing F12. It's recommended that you detach the Developer Tools panel to a separate window; otherwise shortcuts set on the viewer window will interfere with key presses in Developer Tools. ================================================ FILE: docs/troubleshooting.md ================================================ # Troubleshooting ## I changed the font, color, and spacing settings, but it's not working for some books Foliate tries to respect the publisher's stylesheet. It's hard to strike a balance between user control and publisher control, and overriding the book's styles can result in unexpted breakages. Ultimately, it is up to the publishers to not hardcode styles unecessarily. To work around this issue, you can [add your own custom styles](https://github.com/johnfactotum/foliate/blob/gtk4/docs/faq.md#can-i-set-my-own-custom-css-styles). ## The dictionary/Wikipedia/translation tool doesn't work - These tools require network access to online third party services. - The language metadata needs to be correctly marked up in the book. - Dictionary and Wikipedia lookup rely on Wikimedia's REST APIs and they often have trouble extracting content from wikitext (a notoriously difficult task). ## Text-to-speech doesn't work You need to install `speech-dispatcher` and output modules such as `espeak-ng`. To test your Speech Dispatcher configuration, use the `spd-say` command. If you're using Flatpak or Snap, you need to have Speech Dispatcher >= 0.11.4 installed on the host system, and it must be configured with socket activation support . To check this, make sure the file `/usr/lib/systemd/user/speech-dispatcher.socket` exists. Contact the maintainers of your distro if `speech-dispatcher` doesn't support socket activation on your system. To work around the issue when Speech Dispatcher doesn't support socket activation, you can have the command `speech-dispatcher --timeout 0` run on startup. This will keep Speech Dispatcher running at all times. ## I deleted a book on my disk, but it's still showing up in Foliate's library Foliate doesn't keep track of your files. So it can't know whether they are deleted or not. For now, you have to manually remove the book in Foliate after deleting the file. Conversely, removing a book in Foliate will not delete the file. ## It can't open books. It hangs/crashes/shows a blank page... ### ... and I'm using Nvidia GPU WebKitGTK, the library Foliate uses to render books is known to have problems with Nvidia. To fix this: 1. Make sure to your system is up-to-date. 2. Try setting the environment variable `WEBKIT_DISABLE_DMABUF_RENDERER=1`. This will temporarily fix [bug 261874](https://bugs.webkit.org/show_bug.cgi?id=261874). If you're using Flatpak, you can add environment variables with [Flatseal](https://flathub.org/apps/com.github.tchx84.Flatseal). ### ... and I'm using Flatpak The issue could be mixed locales, which Flatpak can't handle. To fix this, set the environment variable `LC_ALL=en_US.UTF-8`. You can add environment variables with [Flatseal](https://flathub.org/apps/com.github.tchx84.Flatseal). ### ... and I'm using Snap The issue could be [#1102](https://github.com/johnfactotum/foliate/issues/1102). To fix this, run the following command: ```sh sudo /usr/lib/snapd/snap-discard-ns foliate ``` ## I'm still having issues Please [file a bug report](https://github.com/johnfactotum/foliate/issues/new/choose). Don't be concerned about whether your issue is already reported or not. It's better to have duplicate reports of the same bug than having different bugs in the same issue thread. ================================================ FILE: eslint.config.js ================================================ import js from '@eslint/js' import globals from 'globals' export default [js.configs.recommended, { ignores: ['src/foliate-js'] }, { languageOptions: { globals: { ...globals.browser, imports: 'readonly', pkg: 'readonly', }, }, linterOptions: { reportUnusedDisableDirectives: true, }, rules: { semi: ['error', 'never'], indent: ['warn', 4, { flatTernaryExpressions: true, SwitchCase: 1 }], quotes: ['warn', 'single', { avoidEscape: true }], 'comma-dangle': ['warn', 'always-multiline'], 'no-trailing-spaces': 'warn', 'no-unused-vars': 'warn', 'no-console': ['warn', { allow: ['debug', 'warn', 'error', 'assert'] }], 'no-constant-condition': ['error', { checkLoops: false }], 'no-empty': ['error', { allowEmptyCatch: true }], }, }] ================================================ FILE: meson.build ================================================ project('com.github.johnfactotum.Foliate', version: '3.3.0', meson_version: '>= 0.59.0', ) gnome = import('gnome') i18n = import('i18n') gjs = dependency('gjs-1.0') if get_option('check_runtime_deps') dependency('gjs-1.0', version: '>= 1.82') dependency('gtk4', version: '>= 4.12') dependency('libadwaita-1', version: '>= 1.8') dependency('webkitgtk-6.0', version: '>= 2.40.1') endif subdir('data') subdir('src') subdir('po') gnome.post_install( glib_compile_schemas: true, gtk_update_icon_cache: true, update_desktop_database: true, ) ================================================ FILE: meson_options.txt ================================================ option('check_runtime_deps', type: 'boolean', description: 'Check run-time dependencies') ================================================ FILE: package.json ================================================ { "name": "foliate", "version": "3.1.1", "description": "Read e-books in style", "repository": { "type": "git", "url": "git+https://github.com/johnfactotum/foliate.git" }, "author": "John Factotum", "license": "GPL-3.0-or-later", "bugs": { "url": "https://github.com/johnfactotum/foliate/issues" }, "homepage": "https://johnfactotum.github.io/foliate/", "type": "module", "devDependencies": { "@eslint/js": "^9.9.1", "globals": "^15.9.0" } } ================================================ FILE: po/LINGUAS ================================================ ar be cs de el es eu fa fr ga gl he hi hr hu id ie it ja ka ko nb nl nn oc pt_BR ru sr sv tr uk zh_CN zh_TW vi ================================================ FILE: po/POTFILES ================================================ src/annotations.js src/app.js src/book-info.js src/book-viewer.js src/format.js src/library.js src/main.js src/navbar.js src/selection-tools.js src/themes.js src/tts.js src/utils.js src/ui/annotation-popover.ui src/ui/annotation-row.ui src/ui/book-image.ui src/ui/book-item.ui src/ui/book-row.ui src/ui/book-viewer.ui src/ui/bookmark-row.ui src/ui/export-dialog.ui src/ui/help-overlay.ui src/ui/image-viewer.ui src/ui/import-dialog.ui src/ui/library.ui src/ui/library-view.ui src/ui/navbar.ui src/ui/selection-popover.ui src/ui/tts-box.ui src/ui/view-preferences-window.ui data/com.github.johnfactotum.Foliate.desktop.in data/com.github.johnfactotum.Foliate.metainfo.xml.in ================================================ FILE: po/ar.po ================================================ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Pierre Moussa, Giorgos Mousa \n" "Language-Team: Arabic \n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "تم حذف الBookmark" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "إبطال" #: src/annotations.js:437 msgid "Underline" msgstr "تحته خط" #: src/annotations.js:438 msgid "Squiggly" msgstr "خط متعرج" #: src/annotations.js:439 msgid "Strikethrough" msgstr "يتوسطه خط" #: src/annotations.js:440 msgid "Yellow" msgstr "أصفر" #: src/annotations.js:441 msgid "Orange" msgstr "برتقالي" #: src/annotations.js:442 msgid "Red" msgstr "أحمر" #: src/annotations.js:443 msgid "Magenta" msgstr "أرجواني" #: src/annotations.js:444 msgid "Aqua" msgstr "لازوردي" #: src/annotations.js:445 msgid "Lime" msgstr "أخضر" #: src/annotations.js:446 msgid "Custom Color…" msgstr "…إختيار أللون" #: src/annotations.js:498 msgid "Custom" msgstr "إختيار" #: src/annotations.js:592 #, fuzzy msgid "JSON Files" msgstr "كل الملفات" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "كل الملفات" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "لا مقاطع مختارة" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "" #: src/annotations.js:625 #, fuzzy msgid "Cannot Import Annotations" msgstr "استيراد المقاطع المختارة…" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "حدث خطأ" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "ليس لديك أية مقاطع مختارة لهذا الكتاب" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "المقاطع المختارة ل“%s”" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d مقطع مختار" msgstr[1] "%d مقاطع مختارة" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "إغلاق" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "إلغاء" #: src/app.js:136 msgid "E-Book Files" msgstr "ملفات الكتاب الإلكتروني" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "اقرأ الكتب الإلكترونية بأسلوب أنيق" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "بيار موسى, جورج موسى" #: src/app.js:414 msgid "Source Code" msgstr "مصدر الرمز" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "الناشر" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "نشرت في" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "حدثّت في" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "اللغة" #: src/book-info.js:139 #, fuzzy msgid "Translated by" msgstr "ترجم" #: src/book-info.js:140 msgid "Edited by" msgstr "" #: src/book-info.js:141 msgid "Narrated by" msgstr "" #: src/book-info.js:142 msgid "Illustrated by" msgstr "" #: src/book-info.js:143 msgid "Produced by" msgstr "" #: src/book-info.js:144 msgid "Artwork by" msgstr "" #: src/book-info.js:145 #, fuzzy msgid "Color by" msgstr "اللون" #: src/book-info.js:146 #, fuzzy msgid "Contributors" msgstr "محتويات" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "معرّف" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "حول هذا الكتاب" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "" #: src/book-viewer.js:29 #, fuzzy, javascript-format msgid "Page %s" msgstr "صفحة" #: src/book-viewer.js:32 msgid "Footnote" msgstr "الملحوظة السفلية" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "انتقل إلى الملحوظة السفلية" #: src/book-viewer.js:34 msgid "Endnote" msgstr "" #: src/book-viewer.js:35 #, fuzzy msgid "Go to Endnote" msgstr "انتقل إلى الملحوظة السفلية" #: src/book-viewer.js:36 msgid "Note" msgstr "" #: src/book-viewer.js:37 #, fuzzy msgid "Go to Note" msgstr "انتقل إلى الملحوظة السفلية" #: src/book-viewer.js:38 #, fuzzy msgid "Definition" msgstr "لم يتم العثور على تعريفات" #: src/book-viewer.js:39 #, fuzzy msgid "Go to Definition" msgstr "لم يتم العثور على تعريفات" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "حذف الBookmark" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "اضافة Bookmark" #: src/book-viewer.js:714 msgid "File not found" msgstr "لم يتم العثور على الملف" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "نوع الملف غير مدعوم." #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "تم حذف المقطع المختار" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "صورة من “%s”" #: src/book-viewer.js:904 msgid "Image" msgstr "صورة" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "من %d" #: src/library.js:47 msgid "Loading" msgstr "" #: src/library.js:48 #, fuzzy msgid "Failed to Load" msgstr "تم النسخ إلى الحافظة" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "إعادة تحميل" #: src/library.js:51 msgid "See All" msgstr "" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "إبحث" #: src/library.js:53 msgid "Filter" msgstr "" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "" #: src/library.js:56 msgid "Buy" msgstr "" #: src/library.js:58 #, fuzzy msgid "Preview" msgstr "السابق" #: src/library.js:59 msgid "Sample" msgstr "" #: src/library.js:60 msgid "Borrow" msgstr "" #: src/library.js:61 msgid "Subscribe" msgstr "" #: src/library.js:63 msgid "Free" msgstr "" #: src/library.js:65 msgid "First" msgstr "" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "السابق" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "التالي" #: src/library.js:68 msgid "Last" msgstr "" #: src/library.js:70 #, fuzzy msgid "Search Terms" msgstr "إبحث" #: src/library.js:72 msgid "Title" msgstr "" #: src/library.js:73 msgid "Author" msgstr "" #: src/library.js:74 #, fuzzy msgid "Contributor" msgstr "محتويات" #: src/library.js:438 msgid "Remove Book?" msgstr "إزالة الكتاب؟" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "سيتم فقدان التقدم في القراءة والشروح والإشارات المرجعية بشكل دائم" #: src/library.js:441 msgid "_Cancel" msgstr "_إلغاء" #: src/library.js:442 msgid "_Remove" msgstr "_إزالة" #: src/library.js:472 #, fuzzy msgid "Failed to Open" msgstr "تم النسخ إلى الحافظة" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "" #: src/library.js:644 msgid "Download Failed" msgstr "" #: src/library.js:698 msgid "Rename…" msgstr "" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "إزالة" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "" #: src/library.js:725 msgid "Name" msgstr "" #: src/library.js:740 #, fuzzy msgid "All Books" msgstr "قائمة الكتاب" #: src/library.js:746 #, fuzzy msgid "Add Catalog…" msgstr "اضف ملاحظة…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "المكتبة" #: src/library.js:821 msgid "Catalogs" msgstr "" #: src/library.js:864 msgid "Catalog removed" msgstr "" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "" #: src/library.js:952 msgid "Add" msgstr "" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" #: src/library.js:961 msgid "URL" msgstr "" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "قاموس" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "لم يتم العثور على تعريفات" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "ابحث في ويكاموس" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "ويكيبيديا" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "ابحث في ويكيبيديا" #: src/selection-tools.js:59 msgid "Translate" msgstr "ترجم" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "الترجمة عن طريق ترجمة Google" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "يتعذر استرداد الترجمة" #: src/selection-tools.js:67 #, fuzzy msgid "Search…" msgstr "إبحث" #: src/themes.js:8 msgid "Default" msgstr "الأساسي" #: src/themes.js:13 msgid "Gray" msgstr "رمادي" #: src/themes.js:18 msgid "Sepia" msgstr "سيبيا" #: src/themes.js:23 msgid "Grass" msgstr "عشبي" #: src/themes.js:28 msgid "Cherry" msgstr "كرزي" #: src/themes.js:33 msgid "Sky" msgstr "سماوي" #: src/themes.js:38 msgid "Solarized" msgstr "مشمس" #: src/themes.js:43 msgid "Gruvbox" msgstr "جروفبوكس" #: src/themes.js:48 msgid "Nord" msgstr "نورد" #: src/tts.js:117 #, fuzzy msgid "Text-to-Speech Error" msgstr "تحويل النص إلى كلام" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "تم النسخ إلى الحافظة" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "إختر الأسلوب" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "حذف" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "القائمة" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "اضف ملاحظة…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "افتح في نافذة جديدة" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "تصدير المقاطع المختارة…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "نافذة جديدة" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "افتح نسخة" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "استيراد المقاطع المختارة…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "حول Foliate" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "جميع الأقسام" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "القسم الحالي" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "مطابقة الكلمات الكاملة فقط" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "مطابقة الاحرف" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "مطابقة علامات التشكيل" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "إعدادات الخط والتنسيق" #: src/ui/book-viewer.ui:89 #, fuzzy msgid "Scrolled Mode" msgstr "تمرير النص" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "عكس الألوان في الوضع الداكن" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "طباعة…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "المفتش" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "لا يمكن فتح الكتاب" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "تفاصيل" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "" #: src/ui/book-viewer.ui:245 #, fuzzy msgid "Pin Sidebar" msgstr "الشريط الجانبي" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "قائمة الكتاب" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "إبحث" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "إبحث في الكتاب…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "محتويات" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "المقاطع المختارة" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "مرشح المقاطع المختارة" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "" #: src/ui/book-viewer.ui:458 #, fuzzy msgid "No Bookmarks" msgstr "حذف الBookmark" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "لم يتم العثور على نتائج" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "حاول إجراء بحث مختلف" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "الشريط الجانبي" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "عرض القائمة" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "تصغير" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "إعادة ضبط التكبير" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "تكبير" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "اتبع نمط النظام" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "تصدير المقاطع المختارة" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "تصدير" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "نوع الملف" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "" "اختر “JSON” إذا كنت تخطط لاستيراد المقاطع المختارة مرة أخرى إلى Foliate" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "إنسخ" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "حفظ بإسم…" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "تدوير 90° عكس عقارب الساعة" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "تدوير 90° في اتجاه عقارب الساعة" #: src/ui/import-dialog.ui:7 #, fuzzy msgid "Import Annotations" msgstr "استيراد المقاطع المختارة…" #: src/ui/import-dialog.ui:21 #, fuzzy msgid "Import" msgstr "تصدير" #: src/ui/import-dialog.ui:33 #, fuzzy msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "ليس لديك أية مقاطع مختارة لهذا الكتاب" #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "" #: src/ui/library.ui:6 msgid "List View" msgstr "عرض القائمة" #: src/ui/library.ui:11 msgid "Grid View" msgstr "عرض الشبكة" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "إفتح…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "القائمة الرئيسية" #: src/ui/library.ui:110 #, fuzzy msgid "Open" msgstr "إفتح…" #: src/ui/library.ui:117 #, fuzzy msgid "Library Menu" msgstr "المكتبة" #: src/ui/library.ui:134 msgid "Search library…" msgstr "ابحث في المكتبة…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "عودة" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "إلى الأمام" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "لا يوجد كتب حتى الآن" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "افتح كتابًا لبدء القراءة" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "الموقع" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "الوقت المتبقي في القسم" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "الوقت المتبقي في الكتاب" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "صفحة" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "الصق وانتقل" #: src/ui/navbar.ui:322 msgid "Section" msgstr "قسم" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "القسم الأول" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "القسم السابق" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "إنتقل الى" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "القسم التالي" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "القسم الأخير" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "إختار" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "تحدث من هنا" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "" #: src/ui/selection-popover.ui:40 #, fuzzy msgid "Copy Identifier" msgstr "معرّف" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "طباعة ما هو محدد…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "السرعة" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "درجة الصوت" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "الخط" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "حجم الخط" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "حجم الخط الأساسي" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "أصغر حجم خط" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "عائلة الخط" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "الخط الأساسي" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "خط Serif" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "خط Sans-Serif" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "خط Monospace" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "التخطيط" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "فقرة" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "ارتفاع خط" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "نص مضبوط بالكامل" #: src/ui/view-preferences-window.ui:146 #, fuzzy msgid "Hyphenation" msgstr "واصلة تلقائية" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "الهوامش" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "الحد الأقصى لعدد الأعمدة" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "المقاس الأكبر للنص" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "" "الحد الأقصى لعرض العمود (الكتابة الأفقية) أو الارتفاع (الكتابة العمودية)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "الحد الأقصى لحجم كتلة النص" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "الحد الأقصى للارتفاع (الكتابة الأفقية) أو العرض (الكتابة العمودية)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "اللون" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "" #: src/ui/view-preferences-window.ui:246 #, fuzzy msgid "Reduce Animation" msgstr "%d مقطع مختار" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "عارض الكتب الإلكترونية" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "Ebook;كتاب;EPUB;عارض;قارئ;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 #, fuzzy msgid "Bookmarks and annotations" msgstr "لا مقاطع مختارة" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 #, fuzzy msgid "Find in book" msgstr "إبحث في الكتاب…" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 msgid "Added option to override publisher font" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" #, fuzzy #~ msgid "Book" #~ msgstr "قائمة الكتاب" #, fuzzy #~ msgid "Viewer" #~ msgstr "عرض القائمة" #, fuzzy #~ msgid "Reference" #~ msgstr "التفضيلات" #, fuzzy #~ msgid "Go to Reference" #~ msgstr "التفضيلات" #~ msgid "Keyboard Shortcuts" #~ msgstr "اختصارات لوحة المفاتيح" #~ msgid "Preferences" #~ msgstr "التفضيلات" #~ msgid "Speak" #~ msgstr "تحدث" #~ msgid "Fold Sidebar" #~ msgstr "إخفاء الشريط الجانبي" #~ msgid "OK" #~ msgstr "حسناً" #~ msgid "Voice" #~ msgstr "صوت" #~ msgid "Start Speaking" #~ msgstr "ابدأ بالتحدث" #~ msgid "Stop Speaking" #~ msgstr "توقف عن التحدث" ================================================ FILE: po/be.po ================================================ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # Hiera Žyhadła, 2025. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-12-19 04:33+0000\n" "PO-Revision-Date: 2024-12-06 05:57+0300\n" "Last-Translator: \n" "Language-Team: \n" "Language: be\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<12 || n%100>14) ? 1 : 2);\n" "X-Generator: Poedit 3.4.4\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "Закладка выдалена" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "Адрабіць" #: src/annotations.js:437 msgid "Underline" msgstr "Падкрэслены" #: src/annotations.js:438 msgid "Squiggly" msgstr "Курсіўны" #: src/annotations.js:439 msgid "Strikethrough" msgstr "Закрэслены" #: src/annotations.js:440 msgid "Yellow" msgstr "Жоўты" #: src/annotations.js:441 msgid "Orange" msgstr "Аранжавы" #: src/annotations.js:442 msgid "Red" msgstr "Чырвоны" #: src/annotations.js:443 msgid "Magenta" msgstr "Пурпурны" #: src/annotations.js:444 msgid "Aqua" msgstr "Марской хвалі" #: src/annotations.js:445 msgid "Lime" msgstr "Лаймавы" #: src/annotations.js:446 msgid "Custom Color…" msgstr "Уласны колер…" #: src/annotations.js:498 msgid "Custom" msgstr "Уласны" #: src/annotations.js:592 msgid "JSON Files" msgstr "JSON файл" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "Усе файлы" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "Няма каментароў" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "Імпартаваны файл не мае каментароў" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "Не атрымліваецца імпартаваць каментары" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "Здарылася памылка" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "У гэтай кніжцы няма каментароў" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "Каментары ў “%s”" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "Каментар %d" msgstr[1] "каментары %d" msgstr[2] "%d каментароў" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "Закрыць" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "Скасаваць" #: src/app.js:136 msgid "E-Book Files" msgstr "Файлы эл-кніжак" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "Чытаць эл-кніжку ў стылі" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "Hiera Žyhadła, 2025" #: src/app.js:414 msgid "Source Code" msgstr "Зыходны код" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Выдавец" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "Выдадзена" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "Абноўлена" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Мова" #: src/book-info.js:139 msgid "Translated by" msgstr "Пераклад" #: src/book-info.js:140 msgid "Edited by" msgstr "Пад рэдакцыяй" #: src/book-info.js:141 msgid "Narrated by" msgstr "Агучка" #: src/book-info.js:142 msgid "Illustrated by" msgstr "Ілюстраванне" #: src/book-info.js:143 msgid "Produced by" msgstr "Прадзюсар" #: src/book-info.js:144 msgid "Artwork by" msgstr "Вокладка" #: src/book-info.js:145 msgid "Color by" msgstr "Колеры" #: src/book-info.js:146 msgid "Contributors" msgstr "Супрацоўнікі" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "Ідэнтыфікатар" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "Пра кніжку" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "Месца %s з %s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "Старонка %s з %s" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "Старонка %s" #: src/book-viewer.js:32 msgid "Footnote" msgstr "Зноска" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "Да зноскі" #: src/book-viewer.js:34 msgid "Endnote" msgstr "Затэкставая зноска" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "Да затэкставай зноскі" #: src/book-viewer.js:36 msgid "Note" msgstr "Нататка" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "Да нататкі" #: src/book-viewer.js:38 msgid "Definition" msgstr "Азначэнне" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "Да азначэння" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "Бібліяграфія" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "Да бібіляграфіі" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "Выдаліць закладку" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "Дадаць закладку" #: src/book-viewer.js:714 msgid "File not found" msgstr "Файл не знойдзены" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "Тып файлу не падтрымліваецца" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "Каментар выдалены" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" "‘%s’\n" "—%s, «%s», с. %s" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" "‘%s’\n" "—«%s», с. %s" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "‘%s’ (с. %s)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" "‘%s’\n" "—%s, «%s»" #: src/book-viewer.js:884 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" "‘%s’\n" "—«%s»" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "‘%s’" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "Выява з “%s”" #: src/book-viewer.js:904 msgid "Image" msgstr "Выява" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "з %d" #: src/library.js:47 msgid "Loading" msgstr "Загрузка" #: src/library.js:48 msgid "Failed to Load" msgstr "Не ўдалося загрузіць" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "Перазагрузіць" #: src/library.js:51 msgid "See All" msgstr "Праглядзець усе" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "Шукаць" #: src/library.js:53 msgid "Filter" msgstr "Фільтраваць" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "Спампаваць" #: src/library.js:56 msgid "Buy" msgstr "Купіць" #: src/library.js:58 msgid "Preview" msgstr "Папярэдні прагляд" #: src/library.js:59 msgid "Sample" msgstr "Пробны ўрывак" #: src/library.js:60 msgid "Borrow" msgstr "Пазычыць" #: src/library.js:61 msgid "Subscribe" msgstr "Падпісацца" #: src/library.js:63 msgid "Free" msgstr "Бясплатна" #: src/library.js:65 msgid "First" msgstr "Першая" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "Папярэдняя" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "Наступная" #: src/library.js:68 msgid "Last" msgstr "Апошняя" #: src/library.js:70 msgid "Search Terms" msgstr "Пошук" #: src/library.js:72 msgid "Title" msgstr "Назва" #: src/library.js:73 msgid "Author" msgstr "Аўтар" #: src/library.js:74 msgid "Contributor" msgstr "Саўдзельнік" #: src/library.js:438 msgid "Remove Book?" msgstr "Выдаліць кніжку?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "Прагрэс чытання, каментары і закладкі будуць страчаны незваротна" #: src/library.js:441 msgid "_Cancel" msgstr "_Скасаваць" #: src/library.js:442 msgid "_Remove" msgstr "_Выдаліць" #: src/library.js:472 msgid "Failed to Open" msgstr "Не ўдалося адкрыць" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "Не атрымалася адкрыць файл выбранай праграмай" #: src/library.js:644 msgid "Download Failed" msgstr "Не ўдалося спампаваць" #: src/library.js:698 msgid "Rename…" msgstr "Перайменаваць…" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "Выдаліць" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "Перайменаваць" #: src/library.js:725 msgid "Name" msgstr "Назва" #: src/library.js:740 msgid "All Books" msgstr "Усе кніжкі" #: src/library.js:746 msgid "Add Catalog…" msgstr "Дадаць каталог…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "Бібліятэка" #: src/library.js:821 msgid "Catalogs" msgstr "Каталогі" #: src/library.js:864 msgid "Catalog removed" msgstr "Каталог выдалены" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "Дадаць каталог" #: src/library.js:952 msgid "Add" msgstr "Дадаць" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "Можна праглядаць і спампоўваць кніжкі з каталога OPDS Падрабязней…" #: src/library.js:961 msgid "URL" msgstr "URL" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "Слоўнік" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "З Вікіслоўніку, апублікавана на ўмовах ліцензіі CC BY-SA." #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "Няма азначэнняў" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "Шукаць у Вікіслоўніку" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Вікіпедыя" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "З Вікіпедыі, апублікавана на ўмовах ліцензіі CC BY-SA." #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "Шукаць у Вікіпедыі" #: src/selection-tools.js:59 msgid "Translate" msgstr "Перакласці" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "Перакладзена праз Google Перакладчык" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "Не атрымліваецца перакласці" #: src/selection-tools.js:67 msgid "Search…" msgstr "Пошук…" #: src/themes.js:8 msgid "Default" msgstr "Па змаўчанні" #: src/themes.js:13 msgid "Gray" msgstr "Шэры" #: src/themes.js:18 msgid "Sepia" msgstr "Сепія" #: src/themes.js:23 msgid "Grass" msgstr "Салатавы" #: src/themes.js:28 msgid "Cherry" msgstr "Вішнёвы" #: src/themes.js:33 msgid "Sky" msgstr "Блакітны" #: src/themes.js:38 msgid "Solarized" msgstr "Solarized" #: src/themes.js:43 msgid "Gruvbox" msgstr "Gruvbox" #: src/themes.js:48 msgid "Nord" msgstr "Nord" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "Памылка сінтэзу маўлення" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "Пераканайцеся, што Speech Dispatcher усталяваны і добра працуе" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "Скапіявана ў буфер" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "Стыль вылучэння" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "Выдаліць" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "Меню" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "Дадаць нататку…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "Адкрыць у новым акне" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "Адкрыць у знешняй праграме" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "Экспартаваць каментары…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "Новае акно" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "Адкрыць копію" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "Імпартаваць каментары…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "Пра Foliate" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "Усе раздзелы" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "Бягучы раздзел" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "Словы цалкам" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "Адрозніваць маленькія/вялікія літары" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "З улікам дыякрытык" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "Налады шрыфту і макета" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "Рэжым прагорткі" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "Інвертаваць колеры ў цёмным рэжыме" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "Аўтаматычна хаваць курсор" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "Друкаваць…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "Інспектар" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "Няможна адкрыць кніжку" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "Падрабязнасці" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "Адкрыць іншы файл…" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "Замацаваць бакавую панэль" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "Меню кніжкі" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "Знайсці" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "Знайсці ў кніжцы…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "Змест" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Каментары" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "Вылучыце тэкст каб дадаць каментар" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "Фільтраваць каментары…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Закладкі" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "Няма закладак" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "Дадайце закладкі каб убачыць іх тут" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "Нічога не знойдзена" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "Паспабуйце іншы запыт" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "Бакавая панэль" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "Меню прагляда" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "Павялічыць" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "Адрабіць змены" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "Паменьшыць" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "Як у сістэме" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "Светлая тэма" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "Цёмная тэма" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Паўнаэкранны рэжым" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "Экспартаваць каментары" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "Экспартаваць" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "Фармаціраваць" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "Выберыць “JSON” калі збіраецеся потым імпартаваць каментары ў Foliate" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "Markdown" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "Org Mode" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Капіяваць" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "Захаваць як…" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "Павярнуць па сонцу" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "Павярнуць супраць сонца" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "Імпартаваць каментары" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "Імпартаваць" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "" "Ідэнтыфікатар не супадае. Магчыма, каментары не для гэтай кніжцы." #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "Усё роўна імпартаваць" #: src/ui/library.ui:6 msgid "List View" msgstr "Спісам" #: src/ui/library.ui:11 msgid "Grid View" msgstr "Сеткай" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Адкрыць…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "Галоўнае меню" #: src/ui/library.ui:110 msgid "Open" msgstr "Адкрыць" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "Меню біблятэкі" #: src/ui/library.ui:134 msgid "Search library…" msgstr "Шукаць у бібліятэцы…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "Назад" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "Уперад" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "Пакуль няма кніжак" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "Адкрыйце кніжку каб пачаць чытаць" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "Старонка" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "Чытаць услых" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "Засталося чытаць раздзел" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "Засталося чытаць кніжку" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "Старонка" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "Уставіць і перайсці" #: src/ui/navbar.ui:322 msgid "Section" msgstr "Раздзел" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "Першы раздзел" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "Мінулы раздзел" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "Перайсці да…" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "Наступны раздзел" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "Апошні раздзел" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Вылучыць" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "Чытаць услых адсюль" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "Скапіяваць са спасылкай на крыніцу" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "Скапіяваць ідэнтыфікатар" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "Друкаваць вылучанае…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "Хуткасць" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "Гучнасць" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "Чытаць/паўза" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "Спыніць" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "Шрыфт" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "Памер шрыфту" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "Памер шрыфту па змаўчанні" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "Найменьшы памер шрыфту" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "Сямейства шрыфтоў" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "Шрыфт па змаўчанні" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "З засечкамі" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "Без засечак" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "Выбраць шрыфт замест прадвызначанага" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "Шрыфт з засечкамі" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "Шрыфт без засечак" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "Монашырынны" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "Макет" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "Абзац" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "Вышыня радка" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "Раўнаванне ўшыркі" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "Перанос слоў" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Палі" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "Найбольшая колькасці слупкоў" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "Найменьшы памер элемента" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "Найбольшая шырыня слупка (гарызантальнае пісьменства) ці вышыня" "(вертыкальнае пісьменства)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "Найбольшы памер блока" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "Найбольшая вышыня (гарызантальнае пісьменства) ці шырыня" "(вертыкальнае пісьменства)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "Колер" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "Паводзіны" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "Адлучыць анімацыю" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "Праглядальнік эл-кніжак" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "Ebook;Book;EPUB;Viewer;Reader;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "Адкрыйце для сябе новую главу чытання з Foliate — сучаснай праграмай для чытання " "эл-кніжак, распрацаванай спецыяльна для GNOME. Пагрузісяце ў інтэрфейс, " "які можна наладзіць, каб ён пасаваў менавіта Вам." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "Магчымасці:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "Падтрымка EPUB, Mobipocket, Kindle, FB2, CBZ і PDF файлаў" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "Пастаронкавы рэжым і гартанне" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "Можна наладзіць шрыфт і паміжрадковага інтэрвалу" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "Светлая, сепія, цёмная і інвертыраваная тэмы" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "Паўзунок прагрэсу чытання з падзяленнем на главы" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "Закладкі і каментары" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "Пошук у кніжцы" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "Хуткі пошук у слоўніку" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "" "Выпраўлена перарыванне главы, калі наступнае пачынаецца з разрыву старонкі" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "Выпраўлены неправільны перанос тэксту ў аркушах" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "Выпраўлена загана з прадукцыйнасцю OPDS каталогаў" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "Дададзена падтрымка OPDS каталогаў, цяпер для OPDS 2.0" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 msgid "Added option to override publisher font" msgstr "Дададзена магчымасць" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "Дададзена магчымасць адлучыць анімацыю" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "Дададзена падтрымка JPEG XL у CBZ" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "Выпраўлена загрузка файла з трэкера у Flatpak" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "Выпраўлены парсінг «non-year-only first-century» дат і дат да нашай " "эры" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "Foliate перапісаны з нуля з выкарыстаннем новай бібліятэкі для рэндэрынгу эл-кніжак," "а таксама актуальных бібліятэк платформы — GTK 4 і Libadwaita, з абноўленым інтэрфейсам" "і палепшанай прадукцыйнасцю." ================================================ FILE: po/com.github.johnfactotum.Foliate.pot ================================================ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "" #: src/annotations.js:437 msgid "Underline" msgstr "" #: src/annotations.js:438 msgid "Squiggly" msgstr "" #: src/annotations.js:439 msgid "Strikethrough" msgstr "" #: src/annotations.js:440 msgid "Yellow" msgstr "" #: src/annotations.js:441 msgid "Orange" msgstr "" #: src/annotations.js:442 msgid "Red" msgstr "" #: src/annotations.js:443 msgid "Magenta" msgstr "" #: src/annotations.js:444 msgid "Aqua" msgstr "" #: src/annotations.js:445 msgid "Lime" msgstr "" #: src/annotations.js:446 msgid "Custom Color…" msgstr "" #: src/annotations.js:498 msgid "Custom" msgstr "" #: src/annotations.js:592 msgid "JSON Files" msgstr "" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "" msgstr[1] "" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "" #: src/app.js:136 msgid "E-Book Files" msgstr "" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "" #: src/app.js:414 msgid "Source Code" msgstr "" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "" #: src/book-info.js:139 msgid "Translated by" msgstr "" #: src/book-info.js:140 msgid "Edited by" msgstr "" #: src/book-info.js:141 msgid "Narrated by" msgstr "" #: src/book-info.js:142 msgid "Illustrated by" msgstr "" #: src/book-info.js:143 msgid "Produced by" msgstr "" #: src/book-info.js:144 msgid "Artwork by" msgstr "" #: src/book-info.js:145 msgid "Color by" msgstr "" #: src/book-info.js:146 msgid "Contributors" msgstr "" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "" #: src/book-viewer.js:32 msgid "Footnote" msgstr "" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "" #: src/book-viewer.js:34 msgid "Endnote" msgstr "" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "" #: src/book-viewer.js:36 msgid "Note" msgstr "" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "" #: src/book-viewer.js:38 msgid "Definition" msgstr "" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "" #: src/book-viewer.js:714 msgid "File not found" msgstr "" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "" #: src/book-viewer.js:904 msgid "Image" msgstr "" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "" #: src/library.js:47 msgid "Loading" msgstr "" #: src/library.js:48 msgid "Failed to Load" msgstr "" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "" #: src/library.js:51 msgid "See All" msgstr "" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "" #: src/library.js:53 msgid "Filter" msgstr "" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "" #: src/library.js:56 msgid "Buy" msgstr "" #: src/library.js:58 msgid "Preview" msgstr "" #: src/library.js:59 msgid "Sample" msgstr "" #: src/library.js:60 msgid "Borrow" msgstr "" #: src/library.js:61 msgid "Subscribe" msgstr "" #: src/library.js:63 msgid "Free" msgstr "" #: src/library.js:65 msgid "First" msgstr "" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "" #: src/library.js:68 msgid "Last" msgstr "" #: src/library.js:70 msgid "Search Terms" msgstr "" #: src/library.js:72 msgid "Title" msgstr "" #: src/library.js:73 msgid "Author" msgstr "" #: src/library.js:74 msgid "Contributor" msgstr "" #: src/library.js:438 msgid "Remove Book?" msgstr "" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "" #: src/library.js:441 msgid "_Cancel" msgstr "" #: src/library.js:442 msgid "_Remove" msgstr "" #: src/library.js:472 msgid "Failed to Open" msgstr "" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "" #: src/library.js:644 msgid "Download Failed" msgstr "" #: src/library.js:698 msgid "Rename…" msgstr "" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "" #: src/library.js:725 msgid "Name" msgstr "" #: src/library.js:740 msgid "All Books" msgstr "" #: src/library.js:746 msgid "Add Catalog…" msgstr "" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "" #: src/library.js:821 msgid "Catalogs" msgstr "" #: src/library.js:864 msgid "Catalog removed" msgstr "" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "" #: src/library.js:952 msgid "Add" msgstr "" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" #: src/library.js:961 msgid "URL" msgstr "" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "" #: src/selection-tools.js:59 msgid "Translate" msgstr "" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "" #: src/selection-tools.js:67 msgid "Search…" msgstr "" #: src/themes.js:8 msgid "Default" msgstr "" #: src/themes.js:13 msgid "Gray" msgstr "" #: src/themes.js:18 msgid "Sepia" msgstr "" #: src/themes.js:23 msgid "Grass" msgstr "" #: src/themes.js:28 msgid "Cherry" msgstr "" #: src/themes.js:33 msgid "Sky" msgstr "" #: src/themes.js:38 msgid "Solarized" msgstr "" #: src/themes.js:43 msgid "Gruvbox" msgstr "" #: src/themes.js:48 msgid "Nord" msgstr "" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "" #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "" #: src/ui/library.ui:6 msgid "List View" msgstr "" #: src/ui/library.ui:11 msgid "Grid View" msgstr "" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "" #: src/ui/library.ui:110 msgid "Open" msgstr "" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "" #: src/ui/library.ui:134 msgid "Search library…" msgstr "" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "" #: src/ui/navbar.ui:322 msgid "Section" msgstr "" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 msgid "Added option to override publisher font" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" ================================================ FILE: po/cs.po ================================================ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # # Pavel Fric , 2019, 2020, 2021, 2024, 2025. msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2025-02-17 20:00+0100\n" "Last-Translator: Pavel Fric \n" "Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Generator: Lokalize 23.04.3\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "Záložka smazána" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "Zpět" #: src/annotations.js:437 msgid "Underline" msgstr "Podtržení" #: src/annotations.js:438 msgid "Squiggly" msgstr "Klikaté" #: src/annotations.js:439 msgid "Strikethrough" msgstr "Přeškrtnutí" #: src/annotations.js:440 msgid "Yellow" msgstr "Žlutý" #: src/annotations.js:441 msgid "Orange" msgstr "Oranžový" #: src/annotations.js:442 msgid "Red" msgstr "Červený" #: src/annotations.js:443 msgid "Magenta" msgstr "Červenorudý" #: src/annotations.js:444 msgid "Aqua" msgstr "Akvamarínový" #: src/annotations.js:445 msgid "Lime" msgstr "Citrónový" #: src/annotations.js:446 msgid "Custom Color…" msgstr "Vlastní barva..." #: src/annotations.js:498 msgid "Custom" msgstr "Vlastní" #: src/annotations.js:592 msgid "JSON Files" msgstr "Soubory JSON" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "Všechny soubory" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "Žádné poznámky" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "Zavedený soubor nemá žádné poznámky" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "Nelze zavést poznámky" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "Vyskytla se chyba" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "K této knize nemáte žádné poznámky." #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "Poznámky pro “%s”" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d poznámka" msgstr[1] "%d poznámky" msgstr[2] "%d poznámek" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "Zavřít" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "Zrušit" #: src/app.js:136 msgid "E-Book Files" msgstr "Soubory elektronických knih" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "Stylové čtení elektronických knih" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "Pavel Fric" #: src/app.js:414 msgid "Source Code" msgstr "Zdrojový kód" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Vydavatel" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "Zveřejněno" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "Aktualizováno" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Jazyk" #: src/book-info.js:139 msgid "Translated by" msgstr "Přeložil" #: src/book-info.js:140 msgid "Edited by" msgstr "Upravil" #: src/book-info.js:141 msgid "Narrated by" msgstr "Vyprávěl" #: src/book-info.js:142 msgid "Illustrated by" msgstr "Obrázky nakreslil" #: src/book-info.js:143 msgid "Produced by" msgstr "Vyrobil" #: src/book-info.js:144 msgid "Artwork by" msgstr "Výtvarná stránka" #: src/book-info.js:145 msgid "Color by" msgstr "Barevné provedení podle" #: src/book-info.js:146 msgid "Contributors" msgstr "Přispěvatelé" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "Identifikátor" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "O knize" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "Místo %s z %s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "Strana %s z %s" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "Strana %s" #: src/book-viewer.js:32 msgid "Footnote" msgstr "Poznámka pod čarou" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "Jít na poznámku pod čarou" #: src/book-viewer.js:34 msgid "Endnote" msgstr "Poznámka na konci" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "Jít na poznámku na konci" #: src/book-viewer.js:36 msgid "Note" msgstr "Poznámka" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "Jít na poznámku" #: src/book-viewer.js:38 msgid "Definition" msgstr "Vymezení" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "Jít na vymezení" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "Seznam použité literatury" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "Jít na seznam použité literatury" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "Odstranit záložku" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "Přidat záložku" #: src/book-viewer.js:714 msgid "File not found" msgstr "Soubor nenalezen" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "Typ souboru nepodporován" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "Poznámka smazána" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" "‘%s’\n" "—%s, “%s”, s. %s" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" "‘%s’\n" "—“%s”, s. %s" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "‘%s’ (s. %s)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" "‘%s’\n" "—%s, “%s”" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" "‘%s’\n" "—“%s”" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "‘%s’" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "Obrázek z “%s”" #: src/book-viewer.js:904 msgid "Image" msgstr "Obrázek" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "z %d" #: src/library.js:47 msgid "Loading" msgstr "Nahrává se" #: src/library.js:48 msgid "Failed to Load" msgstr "Nepodařilo se nahrát" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "Nahrát znovu" #: src/library.js:51 msgid "See All" msgstr "Zobrazit vše" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "Hledat" #: src/library.js:53 msgid "Filter" msgstr "Filtr" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "Stáhnout" #: src/library.js:56 msgid "Buy" msgstr "Koupit" #: src/library.js:58 msgid "Preview" msgstr "Náhled" #: src/library.js:59 msgid "Sample" msgstr "Ukázka" #: src/library.js:60 msgid "Borrow" msgstr "Půjčit" #: src/library.js:61 msgid "Subscribe" msgstr "Odebírat" #: src/library.js:63 msgid "Free" msgstr "Zdarma" #: src/library.js:65 msgid "First" msgstr "První" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "Předchozí" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "Další" #: src/library.js:68 msgid "Last" msgstr "Poslední" #: src/library.js:70 msgid "Search Terms" msgstr "Vyhledávací podmínky" #: src/library.js:72 msgid "Title" msgstr "Název" #: src/library.js:73 msgid "Author" msgstr "Spisovatel" #: src/library.js:74 msgid "Contributor" msgstr "Přispěvatel" #: src/library.js:438 msgid "Remove Book?" msgstr "Odstranit knihu?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "Postup čtení, poznámky a záložky budou trvale ztraceny" #: src/library.js:441 msgid "_Cancel" msgstr "_Zrušit" #: src/library.js:442 msgid "_Remove" msgstr "_Odstranit" #: src/library.js:472 msgid "Failed to Open" msgstr "Nepodařilo se otevřít" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "Soubor se pomocí vybrané aplikace nepodařilo otevřít" #: src/library.js:644 msgid "Download Failed" msgstr "Nepodařilo se stáhnout" #: src/library.js:698 msgid "Rename…" msgstr "_Přejmenovat" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "Odstranit" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "Přejmenovat" #: src/library.js:725 msgid "Name" msgstr "Název" #: src/library.js:740 msgid "All Books" msgstr "Všechny knihy" #: src/library.js:746 msgid "Add Catalog…" msgstr "Přidat seznam..." #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "Knihovna" #: src/library.js:821 msgid "Catalogs" msgstr "Seznamy" #: src/library.js:864 msgid "Catalog removed" msgstr "Seznam odstraněn" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "Přidat seznam" #: src/library.js:952 msgid "Add" msgstr "Přidat" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "Můžete si prohlížet a stahovat knihy ze seznamů OPDS. Learn More…" #: src/library.js:961 msgid "URL" msgstr "Adresa (URL)" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "Slovník" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "Z Wikislovníku, vydáno pod licencí CC BY-SA." #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "Nenalezena žádná vymezení" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "Hledat ve Wikislovníku" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Wikipedie" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "Z Wikipedie, vydáno pod licencí CC BY-SA." #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "Hledat ve Wikipedii" #: src/selection-tools.js:59 msgid "Translate" msgstr "Přeložit" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "Překlad pomocí služby Google Translate" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "Nelze získat překlad" #: src/selection-tools.js:67 msgid "Search…" msgstr "Hledat…" #: src/themes.js:8 msgid "Default" msgstr "Výchozí" #: src/themes.js:13 msgid "Gray" msgstr "Šedá" #: src/themes.js:18 msgid "Sepia" msgstr "Tmavohnědá" #: src/themes.js:23 msgid "Grass" msgstr "Tráva" #: src/themes.js:28 msgid "Cherry" msgstr "Třešeň" #: src/themes.js:33 msgid "Sky" msgstr "Obloha" #: src/themes.js:38 msgid "Solarized" msgstr "Sluneční paprsky" #: src/themes.js:43 msgid "Gruvbox" msgstr "Gruvbox" #: src/themes.js:48 msgid "Nord" msgstr "Sever" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "Chyba při převodu textu na řeč" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "" "Ověřte, že je v systému nainstalován a funguje program Speech Dispatcher." #: src/utils.js:168 msgid "Copied to clipboard" msgstr "Zkopírováno do schránky" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "Styl zvýraznění" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "Smazat" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "Nabídka" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "Přidat poznámku..." #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "Otevřít v novém okně" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "Otevřít pomocí vnějšího programu" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "Vyvést poznámky…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "Nové okno" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "Otevřít kopii" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "Zavést poznámky…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "O programu Foliate" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "Všechny oddíly" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "Nynější oddíl" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "Porovnat pouze celá slova" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "Porovnat velikost písmen" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "Porovnat diakritiku" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "Nastavení písma a rozvržení" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "Režim posouvání" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "Obrátit barvy v tmavém režimu" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "Automatické skrývání ukazovátka" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "Tisk…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "Správce" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "Knihu nelze otevřít" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "Podrobnosti" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "Otevřít další soubor…" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "Přišpendlit postranní pruh" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "Nabídka knihy" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "Najít" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "Najít v knize…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "Obsah" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Poznámky" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "Vyberte nějaký text pro přidání poznámek" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "Filtrovat poznámky…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Záložky" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "Žádné záložky" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "Přidejte několik záložek a podívejte se na ně zde" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "Nenalezeny žádné výsledky" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "Zkuste jiné hledání" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "Postranní pruh" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "Nabídka pro zobrazení" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "Oddálit" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "Obnovit výchozí zvětšení" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "Přiblížit" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "Držet se vzhledu systému" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "Světlý vzhled" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "Tmavý vzhled" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Celá obrazovka" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "Vyvést poznámky" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "Vyvést" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "Formát" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "" "Pokud máte v úmyslu zavést poznámky zpět do aplikace Foliate, vyberte " "možnost \"JSON\"." #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "Markdown" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "Organizační režim" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Kopírovat" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "Uložit jako…" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "Otočit o 90° zprava doleva" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "Otočit o 90° zleva doprava" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "Zavést poznámky" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "Zavést" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "Identifikátor se neshoduje. Tyto poznámky se nemusí týkat této knihy." #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "Přesto zavést" #: src/ui/library.ui:6 msgid "List View" msgstr "Zobrazení v seznamu" #: src/ui/library.ui:11 msgid "Grid View" msgstr "Zobrazení v mřížce" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Otevřít..." #: src/ui/library.ui:67 msgid "Main Menu" msgstr "Hlavní nabídka" #: src/ui/library.ui:110 msgid "Open" msgstr "Otevřít" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "Nabídka pro knihovnu" #: src/ui/library.ui:134 msgid "Search library…" msgstr "Hledat v knihovně..." #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "Zpět" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "Vpřed" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "Dosud žádné knihy" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "Otevřete knihu a začněte číst" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "Místo" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "Vyprávění" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "Zbývající čas v oddílu" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "Zbývající čas v knize" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "Strana" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "Vložit a spustit" #: src/ui/navbar.ui:322 msgid "Section" msgstr "Oddíl" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "První oddíl" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "Předchozí oddíl" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "Přejít na..." #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "Další oddíl" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "Poslední oddíl" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Zvýraznit" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "Číst nahlas odtud" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "Kopírovat s citací" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "Kopírovat identifikátor" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "Vytisknout výběr…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "Rychlost" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "Výška tónu" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "Přehrát/Pozastavit" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "Zastavit" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "Písmo" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "Velikost písma" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "Výchozí velikost písma" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "Nejmenší velikost písma" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "Rodina písma" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "Výchozí písmo" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "Patkové" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "Bezpatkové" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "Nebrat v úvahu písmo vydavatele" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "Patkové písmo" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "Bezpatkové písmo" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "Písmo se stejnou roztečí" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "Rozvržení" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "Odstavec" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "Výška řádku" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "Plné zarovnání" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "Dělení slov" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Okraje" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "Největší počet sloupců" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "Největší řádková velikost" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "Největší šířka sloupce (vodorovné psaní) nebo výška (svislé psaní)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "Největší bloková velikost" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "Největší výška sloupce (vodorovné psaní) nebo výška (svislé psaní)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "Barva" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "Chování" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "Zmenšit animaci" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "Prohlížeč elektronických knih" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "Elektronická kniha;Kniha;EPUB;Prohlížeč;Čtečka;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "Objevte novou kapitolu čtení s moderní čtečkou elektronických knih Foliate " "přizpůsobenou pro prostředí GNOME. Ponořte se do nerozptylujícího rozhraní s " "přizpůsobitelnými prvky navrženými na míru vašim jedinečným volbám." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "Vlastnosti zahrnují:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "Otevírání souborů EPUB, Mobipocket, Kindle, FB2, CBZ a PDF" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "Stránkovaný režim a režim posouvání" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "Přizpůsobení písma a řádkování" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "Světlý, tmavohnědý (sépiový), tmavý a obrácený režim" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "Posuvník postupu čtení se značkami kapitol" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "Záložky a poznámky" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "Najít v knize" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "Rychlé vyhledávání ve slovníku" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "" "Opraveno oříznutí konce kapitoly, když kapitola začíná zalomením stránky" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "Opraveno nesprávné obtékání textu v tabulkách" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "Opraven problém s výkonem katalogů OPDS" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "Přidána podpora pro katalogy OPDS, nyní s podporou OPDS 2.0" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 msgid "Added option to override publisher font" msgstr "Přidána volba pro přepsání písma vydavatele" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "Přidána volba pro zmenšení animace" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "Přidána podpora pro JPEG XL v CBZ" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "Opraveno získávání souboru ze služby Tracker v aplikaci Flatpak" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "" "Opravo zpracování dat z prvního století a před naším letopočtem, která se" " netýkají pouze roku" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "Foliate byl od základu přepsán s novou knihovnou pro vykreslování " "elektronických knih a nejnovějšími knihovnami platformy GTK 4 a Libadwaitas " "obnoveným uživatelským rozhraním a vylepšeným výkonem." #~ msgid "Book" #~ msgstr "Kniha" #~ msgid "EPUB" #~ msgstr "EPUB" #~ msgid "Ebook" #~ msgstr "Elektronická kniha" #~ msgid "Reader" #~ msgstr "Čtečka" #~ msgid "Viewer" #~ msgstr "Prohlížeč" #~ msgid "John Factotum" #~ msgstr "John Factotum" #, fuzzy #~ msgid "Reference" #~ msgstr "Nastavení" #, fuzzy #~ msgid "Go to Reference" #~ msgstr "Nastavení" #~ msgid "Keyboard Shortcuts" #~ msgstr "Klávesové zkratky" #~ msgid "Preferences" #~ msgstr "Nastavení" #~ msgid "Speak" #~ msgstr "Přečíst nahlas" #, fuzzy #~ msgid "Fold Sidebar" #~ msgstr "Ukázat postranní pruh" #, fuzzy #~ msgid "Voice" #~ msgstr "Hlasový herec" #~ msgid "Save File" #~ msgstr "Uložit soubor" #, fuzzy #~ msgid "Choose highlight style" #~ msgstr "Změnit barvu zvýraznění" #~ msgid "More" #~ msgstr "Více" #, fuzzy #~ msgid "About this book" #~ msgstr "O knize" #, fuzzy #~ msgid "Toggle sidebar" #~ msgstr "Použít postranní pruh" #~ msgid "Restore zoom" #~ msgstr "Obnovit zvětšení" #~ msgid "Go to previous page" #~ msgstr "Jít na předchozí stranu" #~ msgid "Go back to previous location" #~ msgstr "Jít zpět na předchozí místo" #, fuzzy #~ msgid "Go to next section" #~ msgstr "Jít na další stranu" #, fuzzy #~ msgid "Go to last section" #~ msgstr "Jít na místo" ================================================ FILE: po/de.po ================================================ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # FIRST AUTHOR , YEAR. # Jonas Harer , 2025. # msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2025-06-03 14:20+0200\n" "Last-Translator: Jonas Harer \n" "Language-Team: German\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Gtranslator 48.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/annotations.js:137 src/annotations.js:172 #, fuzzy msgid "Bookmark deleted" msgstr "Lesezeichen" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "Rückgängig" #: src/annotations.js:437 msgid "Underline" msgstr "Unterstrichen" #: src/annotations.js:438 msgid "Squiggly" msgstr "Wellig" #: src/annotations.js:439 msgid "Strikethrough" msgstr "Durchgestrichen" #: src/annotations.js:440 msgid "Yellow" msgstr "Gelb" #: src/annotations.js:441 #, fuzzy msgid "Orange" msgstr "Orange" #: src/annotations.js:442 msgid "Red" msgstr "Rot" #: src/annotations.js:443 msgid "Magenta" msgstr "Magenta" #: src/annotations.js:444 msgid "Aqua" msgstr "Aqua" #: src/annotations.js:445 msgid "Lime" msgstr "Limone" #: src/annotations.js:446 #, fuzzy msgid "Custom Color…" msgstr "Benutzerdefinierte Farbe…" #: src/annotations.js:498 #, fuzzy msgid "Custom" msgstr "Benutzerdefiniertes Thema" #: src/annotations.js:592 #, fuzzy msgid "JSON Files" msgstr "JSON-Dateien" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "Alle Dateien" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 #, fuzzy msgid "No Annotations" msgstr "Keine Anmerkungen" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "Die importierte Datei hat keine Anmerkungen" #: src/annotations.js:625 #, fuzzy msgid "Cannot Import Annotations" msgstr "Kann keine Anmerkungen importieren" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 #, fuzzy msgid "An error occurred" msgstr "Es ist ein Fehler aufgetreten." #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "Du hast keine Anmerkungen für dieses Buch" #: src/annotations.js:648 #, fuzzy, javascript-format msgid "Annotations for “%s”" msgstr "Anmerkungen für “%s”" #: src/annotations.js:649 #, fuzzy, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d Anmerkung" msgstr[1] "%d Anmerkungen" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "Schließen" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "Abbrechen" #: src/app.js:136 #, fuzzy msgid "E-Book Files" msgstr "E-Book Dateien" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "" "Christian Heitjan\n" "Finn Wiggers" #: src/app.js:414 #, fuzzy msgid "Source Code" msgstr "Quellcode: " #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Herausgeber" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 #, fuzzy msgid "Published" msgstr "Herausgegeben" #. Translators: this is the heading for the modified date #: src/book-info.js:137 #, fuzzy msgid "Updated" msgstr "Letzte Änderung" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Sprache" #: src/book-info.js:139 #, fuzzy msgid "Translated by" msgstr "Übersetzt von" #: src/book-info.js:140 msgid "Edited by" msgstr "Bearbeitet von" #: src/book-info.js:141 msgid "Narrated by" msgstr "Erzählt von" #: src/book-info.js:142 msgid "Illustrated by" msgstr "Illustriert von" #: src/book-info.js:143 msgid "Produced by" msgstr "Produziert von" #: src/book-info.js:144 msgid "Artwork by" msgstr "Grafik von" #: src/book-info.js:145 msgid "Color by" msgstr "Farbe von" #: src/book-info.js:146 #, fuzzy msgid "Contributors" msgstr "Mitwirkende" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "Kennung" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "Über dieses Buch" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "Pos. %s von %s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "Seite %s von %s" #: src/book-viewer.js:29 #, fuzzy, javascript-format msgid "Page %s" msgstr "Seite %s" #: src/book-viewer.js:32 #, fuzzy msgid "Footnote" msgstr "Fußnote" #: src/book-viewer.js:33 #, fuzzy msgid "Go to Footnote" msgstr "Zur Fußnote gehen" #: src/book-viewer.js:34 msgid "Endnote" msgstr "Schlussnote" #: src/book-viewer.js:35 #, fuzzy msgid "Go to Endnote" msgstr "Zur Schlussnote gehen" #: src/book-viewer.js:36 msgid "Note" msgstr "Notiz" #: src/book-viewer.js:37 #, fuzzy msgid "Go to Note" msgstr "Zur Notiz gehen" #: src/book-viewer.js:38 #, fuzzy msgid "Definition" msgstr "Definition" #: src/book-viewer.js:39 #, fuzzy msgid "Go to Definition" msgstr "Gehe zur Definition" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "Literaturverzeichnis" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "Zum Literaturverzeichnis gehen" #: src/book-viewer.js:622 #, fuzzy msgid "Remove bookmark" msgstr "Lesezeichen entfernen" #: src/book-viewer.js:623 #, fuzzy msgid "Add bookmark" msgstr "Lesezeichen hinzufügen" #: src/book-viewer.js:714 #, fuzzy msgid "File not found" msgstr "Datei nicht gefunden" #: src/book-viewer.js:715 #, fuzzy msgid "File type not supported" msgstr "Dateityp wird nicht unterstützt." #: src/book-viewer.js:804 #, fuzzy msgid "Annotation deleted" msgstr "Anmerkung gelöscht" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "Abbildung von „%s“" #: src/book-viewer.js:904 msgid "Image" msgstr "Bild" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "von %d" #: src/library.js:47 msgid "Loading" msgstr "Lädt" #: src/library.js:48 msgid "Failed to Load" msgstr "Laden fehlgeschlagen" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "Neu laden" #: src/library.js:51 msgid "See All" msgstr "Alle ansehen" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "Suchen" #: src/library.js:53 msgid "Filter" msgstr "Filter" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "Herunterladen" #: src/library.js:56 msgid "Buy" msgstr "Kaufen" #: src/library.js:58 msgid "Preview" msgstr "Vorschau" #: src/library.js:59 msgid "Sample" msgstr "" #: src/library.js:60 msgid "Borrow" msgstr "Ausleihen" #: src/library.js:61 msgid "Subscribe" msgstr "Abonnieren" #: src/library.js:63 msgid "Free" msgstr "Kostenlos" #: src/library.js:65 msgid "First" msgstr "" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "Vorheriges" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "Nächstes" #: src/library.js:68 msgid "Last" msgstr "Letztes" #: src/library.js:70 #, fuzzy msgid "Search Terms" msgstr "Suchbegriffe" #: src/library.js:72 msgid "Title" msgstr "Titel" #: src/library.js:73 msgid "Author" msgstr "Autor" #: src/library.js:74 #, fuzzy msgid "Contributor" msgstr "Mitwirkende" #: src/library.js:438 #, fuzzy msgid "Remove Book?" msgstr "Buch entfernen?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "" "Lesefortschritt, Anmerkungen, und Lesezeichen werden dauerhaft gelöscht" #: src/library.js:441 msgid "_Cancel" msgstr "_Abbrechen" #: src/library.js:442 msgid "_Remove" msgstr "_Entfernen" #: src/library.js:472 #, fuzzy msgid "Failed to Open" msgstr "Laden fehlgeschlagen" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "Die Datei konnte mit der ausgewählten Anwendung nicht geöffnet werden." #: src/library.js:644 msgid "Download Failed" msgstr "Herunterladen fehlgeschlagen" #: src/library.js:698 msgid "Rename…" msgstr "Umbenennen…" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "Entfernen" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "Umbenennen" #: src/library.js:725 msgid "Name" msgstr "Name" #: src/library.js:740 #, fuzzy msgid "All Books" msgstr "Alle Bücher" #: src/library.js:746 #, fuzzy msgid "Add Catalog…" msgstr "Katalog hinzufügen…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "Bibliothek" #: src/library.js:821 msgid "Catalogs" msgstr "Kataloge" #: src/library.js:864 msgid "Catalog removed" msgstr "Katalog entfernt" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "Katalog hinzufügen" #: src/library.js:952 msgid "Add" msgstr "Hinzufügen" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "Du kannst Bücher von OPDS-Katalogen durchstöbern und herunterladen. a " "href=\"https://opds.io\">Mehr anzeigen…" #: src/library.js:961 msgid "URL" msgstr "URL" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "Wörterbuch" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" #: src/selection-tools.js:38 src/selection-tools.js:51 #, fuzzy msgid "No Definitions Found" msgstr "Keine Ergebnisse gefunden" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "Auf Wiktionary suchen" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Wikipedia" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" #: src/selection-tools.js:52 #, fuzzy msgid "Search on Wikipedia" msgstr "Auf Wikipedia suchen" #: src/selection-tools.js:59 msgid "Translate" msgstr "Übersetzen" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "Übersetzung von Google Translate" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "Kann Übersetzung nicht abrufen" #: src/selection-tools.js:67 #, fuzzy msgid "Search…" msgstr "Suchen" #: src/themes.js:8 msgid "Default" msgstr "Standard" #: src/themes.js:13 msgid "Gray" msgstr "Grau" #: src/themes.js:18 msgid "Sepia" msgstr "Sepia" #: src/themes.js:23 msgid "Grass" msgstr "Gras" #: src/themes.js:28 msgid "Cherry" msgstr "Kirsche" #: src/themes.js:33 msgid "Sky" msgstr "Himmel" #: src/themes.js:38 msgid "Solarized" msgstr "" #: src/themes.js:43 msgid "Gruvbox" msgstr "" #: src/themes.js:48 msgid "Nord" msgstr "" #: src/tts.js:117 #, fuzzy msgid "Text-to-Speech Error" msgstr "Text-zu-Sprache" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "" "Stelle sicher, dass Speech Dispatcher auf Deinem System installiert und " "funktionsfähig ist" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "In die Zwischenablage kopiert" #: src/ui/annotation-popover.ui:13 #, fuzzy msgid "Highlight Style" msgstr "Stil der Hervorhebung" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "Löschen" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "Menü" #: src/ui/annotation-popover.ui:47 #, fuzzy msgid "Add Note…" msgstr "Notiz hinzufügen…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "In neuem Fenster öffnen" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "Mit externer Anwendung öffnen" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "Anmerkungen exportieren…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "Neues Fenster" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "Eine Kopie öffnen" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "Anmerkungen importieren…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "Über Foliate" #: src/ui/book-viewer.ui:45 #, fuzzy msgid "All Sections" msgstr "Alle Sammlungen" #: src/ui/book-viewer.ui:50 #, fuzzy msgid "Current Section" msgstr "Aktuelles Kapitel" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "Nur ganze Wörter" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "Auf Großschreibung achten" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "Ähnliche Zeichen" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "Schriftart & Layout" #: src/ui/book-viewer.ui:89 #, fuzzy msgid "Scrolled Mode" msgstr "Endloses Scrollen" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "Farben im dunklen Modus invertieren" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "Cursor automatisch verstecken" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "Drucken…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "Untersuchen" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "Buch kann nicht geöffnet werden" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "Details" #: src/ui/book-viewer.ui:193 #, fuzzy msgid "Open Another File…" msgstr "Eine andere Datei öffnen…" #: src/ui/book-viewer.ui:245 #, fuzzy msgid "Pin Sidebar" msgstr "Seitenleiste anzeigen" #: src/ui/book-viewer.ui:253 #, fuzzy msgid "Book Menu" msgstr "Menü" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "Suchen" #: src/ui/book-viewer.ui:276 #, fuzzy msgid "Find in book…" msgstr "Im Buch suchen…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "Inhalt" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Anmerkungen" #: src/ui/book-viewer.ui:403 #, fuzzy msgid "Select some text to add annotations" msgstr "Keine Anmerkungen" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "Anmerkungen filtern…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Lesezeichen" #: src/ui/book-viewer.ui:458 #, fuzzy msgid "No Bookmarks" msgstr "Lesezeichen" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "Neue Lesezeichen werden hier angezeigt" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 #, fuzzy msgid "No Results Found" msgstr "Keine Ergebnisse gefunden" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 #, fuzzy msgid "Try a different search" msgstr "Probiere eine andere Suche." #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 #, fuzzy msgid "Sidebar" msgstr "Seitenleiste" #: src/ui/book-viewer.ui:556 #, fuzzy msgid "View Menu" msgstr "Menü" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 #, fuzzy msgid "Zoom Out" msgstr "Verkleinern" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "Zoom zurücksetzen" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 #, fuzzy msgid "Zoom In" msgstr "Vergrößern" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "An System anpassen" #: src/ui/book-viewer.ui:611 #, fuzzy msgid "Light Style" msgstr "Hell" #: src/ui/book-viewer.ui:621 #, fuzzy msgid "Dark Style" msgstr "Dunkel" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Vollbild" #: src/ui/export-dialog.ui:5 #, fuzzy msgid "Export Annotations" msgstr "Anmerkungen exportieren" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "Exportieren" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "Formatieren" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "" "Wähle “JSON”, wenn Du Anmerkungen zurück zu Foliate importieren möchtest" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Kopieren" #: src/ui/image-viewer.ui:10 #, fuzzy msgid "Save As…" msgstr "Speichern unter…" #: src/ui/image-viewer.ui:25 #, fuzzy msgid "Rotate 90° Counter-Clockwise" msgstr "Um 90° gegen den Uhrzeigersinn drehen" #: src/ui/image-viewer.ui:32 #, fuzzy msgid "Rotate 90° Clockwise" msgstr "Um 90° im Uhrzeigersinn drehen" #: src/ui/import-dialog.ui:7 #, fuzzy msgid "Import Annotations" msgstr "Anmerkungen importieren" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "Importieren" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "" "Der Identifikator stimmt nicht überein. Diese Anmerkungen gehören " "wahrscheinlich nicht zu diesem Buch." #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "Trotzdem importieren" #: src/ui/library.ui:6 #, fuzzy msgid "List View" msgstr "Listenansicht" #: src/ui/library.ui:11 #, fuzzy msgid "Grid View" msgstr "Rasteransicht" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Öffnen…" #: src/ui/library.ui:67 #, fuzzy msgid "Main Menu" msgstr "Menü" #: src/ui/library.ui:110 #, fuzzy msgid "Open" msgstr "Öffnen" #: src/ui/library.ui:117 #, fuzzy msgid "Library Menu" msgstr "Bibliothek" #: src/ui/library.ui:134 #, fuzzy msgid "Search library…" msgstr "Bibliothek durchsuchen…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "Zurück" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "Vorwärts" #: src/ui/library-view.ui:21 #, fuzzy msgid "No Books Yet" msgstr "Noch keine Bücher vorhanden" #: src/ui/library-view.ui:22 #, fuzzy msgid "Open a book to start reading" msgstr "Öffne ein Buch, um mit dem Lesen zu beginnen." #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "Ort" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "Erzählung" #: src/ui/navbar.ui:162 #, fuzzy msgid "Time Left in Section" msgstr "Verbleibende Zeit im Kapitel" #: src/ui/navbar.ui:192 #, fuzzy msgid "Time Left in Book" msgstr "Verbleibende Zeit im Buch" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 #, fuzzy msgid "Page" msgstr "Seite" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "Einfügen und Los" #: src/ui/navbar.ui:322 msgid "Section" msgstr "Kapitel" #: src/ui/navbar.ui:388 #, fuzzy msgid "First Section" msgstr "Erstes Kapitel" #: src/ui/navbar.ui:397 #, fuzzy msgid "Previous Section" msgstr "Vorheriges Kapitel" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "Gehe zu…" #: src/ui/navbar.ui:414 #, fuzzy msgid "Next Section" msgstr "Nächstes Kapitel" #: src/ui/navbar.ui:423 #, fuzzy msgid "Last Section" msgstr "Vorheriges Kapitel" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Markieren" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "Ab hier vorlesen" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "Mit Zitat kopieren" #: src/ui/selection-popover.ui:40 #, fuzzy msgid "Copy Identifier" msgstr "Kennung" #: src/ui/selection-popover.ui:44 #, fuzzy msgid "Print Selection…" msgstr "Aktuelles Kapitel drucken…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "Geschwindigkeit" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "Wiedergabe/Pause" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "Stop" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "Schriftart" #: src/ui/view-preferences-window.ui:9 #, fuzzy msgid "Font Size" msgstr "Schriftgröße" #: src/ui/view-preferences-window.ui:12 #, fuzzy msgid "Default Font Size" msgstr "Standardschriftgröße" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "Minimale Schriftgröße" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "Schriftart" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "Standardschriftart" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "Herausgeberschriftart überschreiben" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "Serif-Schriftart" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "Sans-Serif-Schriftart" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "Monospace-Schriftart" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "" #: src/ui/view-preferences-window.ui:121 #, fuzzy msgid "Line Height" msgstr "Zeilenhöhe" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "Gesamte Breite" #: src/ui/view-preferences-window.ui:146 #, fuzzy msgid "Hyphenation" msgstr "Automatische Silbentrennung" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Ränder" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "Maximale Anzahl an Spalten" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "Maximale Zeilengröße" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "" "Maximale Spaltenbreite (horizontales Schreiben) oder Höhe (vertikales " "Schreiben)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "Maximale Blockgröße" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "" "Maximale Höhe (horizontales Schreiben) oder Breite (vertikales Schreiben)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "Farbe" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "Verhalten" #: src/ui/view-preferences-window.ui:246 #, fuzzy msgid "Reduce Animation" msgstr "Animationen reduzieren" #: data/com.github.johnfactotum.Foliate.desktop.in:5 #, fuzzy msgid "E-Book Viewer" msgstr "E-Book Reader" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "E-Book;Buch;EPUB;Betrachter;Reader;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "Entdecke ein neues Kapitel des Lesens mit Foliate, dem modernen E-Book-" "Reader, angepasst für GNOME. Tauche in eine ablenkungsfreie Oberfläche ein, " "mit Anpassungsmöglichkeiten, die Deinen individuellen Vorlieben entsprechen." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "Funktionen beinhalten:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "Öffne EPUB, Mobipocket, Kindle, FB2, CBZ und PDF-Dateien" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "Seitenmodus und Scrollmodus" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "Anpassbare Schriftarten und Zeilenabstände" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "Heller, sepia, dunkler und invertierter Modus" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "Lesefortschrittsanzeige mit Kapitelmarkierungen" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 #, fuzzy msgid "Bookmarks and annotations" msgstr "Lesezeichen und Anmerkungen" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 #, fuzzy msgid "Find in book" msgstr "Im Buch suchen" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "Schnelle Wörterbuchsuche" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 #, fuzzy msgid "Added option to override publisher font" msgstr "Herausgeberschriftart überschreiben" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" #, fuzzy #~ msgid "Book" #~ msgstr "Buch" #~ msgid "John Factotum" #~ msgstr "John Factotum" #, fuzzy #~ msgid "Reference" #~ msgstr "Verweis" #, fuzzy #~ msgid "Go to Reference" #~ msgstr "Zum Verweis gehen" #~ msgid "Keyboard Shortcuts" #~ msgstr "Tastaturkürzel" #~ msgid "Preferences" #~ msgstr "Einstellungen" #~ msgid "Speak" #~ msgstr "Vorlesen" #, fuzzy #~ msgid "Fold Sidebar" #~ msgstr "Seitenleiste anzeigen" #, fuzzy #~ msgid "Voice" #~ msgstr "Stimme" #, fuzzy #~ msgid "Save File" #~ msgstr "Datei speichern" #, fuzzy #~ msgid "Choose highlight style" #~ msgstr "Farbe der Markierung ändern" #~ msgid "More" #~ msgstr "Mehr" #, fuzzy #~ msgid "About this book" #~ msgstr "Über dieses Buch" #, fuzzy #~ msgid "Toggle sidebar" #~ msgstr "Seitenleiste verwenden" #~ msgid "Restore zoom" #~ msgstr "Ursprüngliche Zoomstufe" #~ msgid "Go to previous page" #~ msgstr "Zur vorherigen Seite gehen" #~ msgid "Go back to previous location" #~ msgstr "Zurück zum vorherigen Ort gehen" #, fuzzy #~ msgid "Go to next section" #~ msgstr "Zur nächsten Seite gehen" #, fuzzy #~ msgid "Go to last section" #~ msgstr "Gehe zum vorherigen Kapitel" ================================================ FILE: po/el.po ================================================ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2024-12-01 18:08+0200\n" "Last-Translator: Giorgos Mousa \n" "Language-Team: Greek \n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "Ο σελιδοδείκτης διαγράφηκε" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "Αναίρεση" #: src/annotations.js:437 msgid "Underline" msgstr "Υπογράμμιση" #: src/annotations.js:438 msgid "Squiggly" msgstr "Τεθλασμένη γραμμή" #: src/annotations.js:439 msgid "Strikethrough" msgstr "Διακριτική Διαγραφή" #: src/annotations.js:440 msgid "Yellow" msgstr "Κίτρινο" #: src/annotations.js:441 msgid "Orange" msgstr "Πορτοκαλί" #: src/annotations.js:442 msgid "Red" msgstr "Κόκκινο" #: src/annotations.js:443 msgid "Magenta" msgstr "Φούξια" #: src/annotations.js:444 msgid "Aqua" msgstr "Υδάτινο" #: src/annotations.js:445 msgid "Lime" msgstr "Λάιμ" #: src/annotations.js:446 msgid "Custom Color…" msgstr "Προσαρμοσμένο Χρώμα…" #: src/annotations.js:498 msgid "Custom" msgstr "Προσαρμοσμένο" #: src/annotations.js:592 msgid "JSON Files" msgstr "Αρχεία JSON" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "Όλα τα αρχεία" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "Καμία επισήμανση" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "Το εισαχθέν αρχείο δεν περιέχει επισημάνσεις" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "Αδυναμία Εισαγωγής Επισημάνσεων" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "Πρόκυψε κάποιο σφάλμα" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "Δεν έχετε επισημάνσεις για αυτό το βιβλίο" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "Επισημάνσεις για “%s”" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d Επισήμανση" msgstr[1] "%d Επισημάνσεις" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "Κλείσιμο" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "Ακύρωση" #: src/app.js:136 msgid "E-Book Files" msgstr "Αρχεία Ηλεκτρονικών Βιβλίων" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "Ανάγνωση ηλεκτρονικών βιβλίων με στυλ" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "Γιώργος Μούσα" #: src/app.js:414 msgid "Source Code" msgstr "Πηγαίος Κώδικας" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Εκδότης" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "Δημοσιεύθηκε" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "Ενημερώθηκε" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Γλώσσα" #: src/book-info.js:139 #, fuzzy msgid "Translated by" msgstr "Μετάφραση από" #: src/book-info.js:140 msgid "Edited by" msgstr "Επεξεργασία από" #: src/book-info.js:141 msgid "Narrated by" msgstr "Αφήγηση από" #: src/book-info.js:142 msgid "Illustrated by" msgstr "Εικονογράφηση από" #: src/book-info.js:143 msgid "Produced by" msgstr "Παραγωγή από" #: src/book-info.js:144 msgid "Artwork by" msgstr "Καλλιτεχνικό έργο από" #: src/book-info.js:145 msgid "Color by" msgstr "Χρώμα από" #: src/book-info.js:146 msgid "Contributors" msgstr "Συμβάλλοντες" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "Αναγνωριστικό" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "Περί του Βιβλίου" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "Τοπ. %s από %s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "Σελ. %s από %s" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "Σελίδα %s" #: src/book-viewer.js:32 msgid "Footnote" msgstr "Υποσημείωση" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "Πλοήγηση στην Υποσημείωση" #: src/book-viewer.js:34 msgid "Endnote" msgstr "Σημείωση τέλους" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "Πλοήγηση στη Σημείωση τέλους" #: src/book-viewer.js:36 msgid "Note" msgstr "Σημείωση" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "Πλοήγηση στη Σημείωση" #: src/book-viewer.js:38 msgid "Definition" msgstr "Ορισμός" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "Μετάβαση στον Ορισμό" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "Βιβλιογραφία" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "Μετάβαση στη Βιβλιογραφία" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "Αφαίρεση σελιδοδείκτη" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "Προσθήκη σελιδοδείκτη" #: src/book-viewer.js:714 msgid "File not found" msgstr "Το αρχείο δεν βρέθηκε" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "Ο τύπος του αρχείου δεν υποστηρίζεται" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "Η επισήμανση διαγράφηκε" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "Εικόνα από “%s”" #: src/book-viewer.js:904 msgid "Image" msgstr "Εικόνα" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "από %d" #: src/library.js:47 msgid "Loading" msgstr "Φόρτωση" #: src/library.js:48 msgid "Failed to Load" msgstr "Αδυναμία Φόρτωσης" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "Επαναφόρτωση" #: src/library.js:51 msgid "See All" msgstr "Προβολή Όλων" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "Αναζήτηση" #: src/library.js:53 msgid "Filter" msgstr "Φίλτρο" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "Κατέβασμα" #: src/library.js:56 msgid "Buy" msgstr "Αγορά" #: src/library.js:58 msgid "Preview" msgstr "Προεπισκόπηση" #: src/library.js:59 msgid "Sample" msgstr "Δείγμα" #: src/library.js:60 msgid "Borrow" msgstr "Δανεισμός" #: src/library.js:61 msgid "Subscribe" msgstr "Εγγραφή" #: src/library.js:63 msgid "Free" msgstr "Δωρεάν" #: src/library.js:65 msgid "First" msgstr "Πρώτο" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "Προηγούμενο" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "Επόμενο" #: src/library.js:68 msgid "Last" msgstr "Τελευταίο" #: src/library.js:70 msgid "Search Terms" msgstr "Αναζήτηση Όρων" #: src/library.js:72 msgid "Title" msgstr "Τίτλος" #: src/library.js:73 msgid "Author" msgstr "Συγγραφέας" #: src/library.js:74 msgid "Contributor" msgstr "Συμβάλλων" #: src/library.js:438 msgid "Remove Book?" msgstr "Αφαίρεση Βιβλίου;" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "" "Η πρόοδος ανάγνωσης, οι επισημάνσεις, και οι σελιδοδείκτες, θα χαθούν " "οριστικά" #: src/library.js:441 msgid "_Cancel" msgstr "_Ακύρωση" #: src/library.js:442 msgid "_Remove" msgstr "_Αφαίρεση" #: src/library.js:472 msgid "Failed to Open" msgstr "Το άνοιγμα απέτυχε" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "Αδυναμία ανοίγματος αρχείου με την επιλεγμένη εφαρμογή" #: src/library.js:644 msgid "Download Failed" msgstr "Το κατέβασμα απέτυχε" #: src/library.js:698 msgid "Rename…" msgstr "Μετονομασία…" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "Διαγραφή" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "Μετονομασία" #: src/library.js:725 msgid "Name" msgstr "Όνομα" #: src/library.js:740 msgid "All Books" msgstr "Όλα τα Βιβλία" #: src/library.js:746 msgid "Add Catalog…" msgstr "Προσθήκη Καταλόγου…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "Βιβλιοθήκη" #: src/library.js:821 msgid "Catalogs" msgstr "Κατάλογοι" #: src/library.js:864 msgid "Catalog removed" msgstr "Ο κατάλογος διαγράφηκε" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "Προσθήκη Καταλόγου" #: src/library.js:952 msgid "Add" msgstr "Προσθήκη" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "Μπορείτε να κατεβάσετε βιβλία από τους OPDS καταλόγους. Μάθετε περισσότερα…" #: src/library.js:961 msgid "URL" msgstr "" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Φυλλοειδές" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "Λεξικό" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "Από το Βικιλεξικό, δημοσιευμένο υπό την Άδεια CC BY-SA." #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "Δεν βρέθηκαν ορισμοί" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "Αναζήτηση στο Βικιλεξικό" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Βικιπαίδεια" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "Από την Βικιπαίδεια, δημοσιευμένο υπό την Άδεια CC BY-SA." #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "Αναζήτηση στη Βικιπαίδεια" #: src/selection-tools.js:59 msgid "Translate" msgstr "Μετάφραση" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "Μετάφραση από Google Μετάφραση" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "Αδυναμία ανάκτησης μετάφρασης" #: src/selection-tools.js:67 msgid "Search…" msgstr "Αναζήτηση…" #: src/themes.js:8 msgid "Default" msgstr "Προκαθορισμένο" #: src/themes.js:13 msgid "Gray" msgstr "Γκρι" #: src/themes.js:18 msgid "Sepia" msgstr "Σέπια" #: src/themes.js:23 msgid "Grass" msgstr "Γρασίδι" #: src/themes.js:28 msgid "Cherry" msgstr "Κεράσι" #: src/themes.js:33 msgid "Sky" msgstr "Ουρανός" #: src/themes.js:38 msgid "Solarized" msgstr "Λιασμένο" #: src/themes.js:43 msgid "Gruvbox" msgstr "" #: src/themes.js:48 msgid "Nord" msgstr "Βορινό" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "Σφάλμα λειτουργίας Κείμενο-σε-Ομιλία" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "" "Βεβαιωθείτε ότι το λογισμικό κειμένου-σε-ομιλία είναι εγκατεστημένο και " "λειτουργικό στο σύστημά σας" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "Αντιγράφηκε στο πρόχειρο" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "Τρόπος Επισήμανσης" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "Διαγραφή" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "Μενού" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "Προσθήκη Σημείωσης…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "Άνοιγμα σε Νέο Παράθυρο" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "Άνοιγμα σε Εξωτερική Εφαρμογή" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "Εξαγωγή Επισημάνσεων…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "Νέο Παράθυρο" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "Άνοιγμα ενός Αντιγράφου" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "Εισαγωγή Επισημάνσεων…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "Περί του Φυλλοειδούς" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "Όλες οι Ενότητες" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "Τρέχουσα Ενότητα" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "Αντιστοίχιση μόνο ολόκληρων λέξεων" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "Αντιστοίχιση Πεζών/Κεφαλαίων" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "Αντιστοίχιση Διακριτικών" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "Ρυθμίσεις Γραμματοσειράς & Διάταξης" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "Κυλιόμενη Διάταξη" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "Αντιστροφή Χρωμάτων στη Σκουρόχρωμη Λειτουργία" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "Αυτόματη Απόκρυψη Δείκτη Ποντικιού" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "Εκτύπωση…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "Επιθεωρητής" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "Αδυναμία Ανοίγματος Βιβλίου" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "Λεπτομέρειες" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "Άνοιγμα Άλλου Αρχείου…" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "Καρφίτσωμα Πλαϊνής Μπάρας" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "Κατάλογος Βιβλίων" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "Εύρεση" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "Εύρεση στο βιβλίο…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "Περιεχόμενα" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Επισημάνσεις" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "Επιλέξτε κάποιο κείμενο για να προσθέσετε επισημάνσεις" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "Φίλτρο επισημάνσεων…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Σελιδοδείκτες" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "Δεν υπάρχουν σελιδοδείκτες" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "Προσθέστε σελιδοδείκτες για να τους δείτε εδώ" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "Δεν Βρέθηκαν Αποτελέσματα" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "Επιχειρείστε μία διαφορετική αναζήτηση" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "Πλαϊνή μπάρα" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "Προβολή Μενού" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "Σμίκρυνση" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "Επαναφορά Επιπέδου Μεγέθυνσης" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "Μεγέθυνση" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "Συμφωνία με το Στυλ του Συστήματος" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "Ανοιχτόχρωμο Στυλ" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "Σκουρόχρωμο Στυλ" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Πλήρης Οθόνη" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "Εξαγωγή Επισημάνσεων" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "Εξαγωγή" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "Τύπος" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "" "Επιλέξτε “JSON” αν σκοπεύετε να εισαγάγετε τις επισημάνσεις ξανά στο " "Φυλλοειδές" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Αντιγραφή" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "Αποθήκευση ως…" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "Περιστροφή 90° Αριστερά" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "Περιστροφή 90° Δεξιά" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "Εισαγωγή Επισημάνσεων" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "Εισαγωγή" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "" "Το αναγνωριστικό δεν ταιριάζει. Αυτές οι επισημάνσεις πιθανώς δεν " "αναφέρονται σε αυτό το βιβλίο" #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "Εισαγωγή Παρόλα Αυτά" #: src/ui/library.ui:6 msgid "List View" msgstr "Όψη Λίστας" #: src/ui/library.ui:11 msgid "Grid View" msgstr "Όψη Πλέγματος" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Άνοιγμα…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "Κύριο Μενού" #: src/ui/library.ui:110 msgid "Open" msgstr "Άνοιγμα" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "Μενού Βιβλιοθήκης" #: src/ui/library.ui:134 msgid "Search library…" msgstr "Αναζήτηση στη βιβλιοθήκη…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "Πίσω" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "Εμπρός" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "Δεν υπάρχουν βιβλία ακόμα" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "Ανοίξτε ένα βιβλίο για να ξεκινήσετε την ανάγνωση" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "Τοποθεσία" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "Αφήγηση" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "Υπολειπόμενος Χρόνος στην Ενότητα" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "Υπολειπόμενος Χρόνος στο Βιβλίο" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "Σελίδα" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "Επικόλληση και Μετάβαση" #: src/ui/navbar.ui:322 msgid "Section" msgstr "Ενότητα" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "Πρώτη Ενότητα" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "Προηγούμενη Ενότητα" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "Μεταπήδηση Σε…" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "Επόμενη Ενότητα" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "Τελευταία Ενότητα" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Επισήμανση" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "Εκκίνηση Ομιλίας από Εδώ" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "Αντιγραφή με Αναφορά" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "Αντιγραφή Αναγνωριστικού" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "Εκτύπωση Επιλογής…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "Ταχύτητα" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "Τονικότητα" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "Εκκίνηση/Παύση" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "Διακοπή" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "Γραμματοσειρά" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "Μέγεθος Γραμματοσειράς" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "Προκαθορισμένο Μέγεθος Γραμματοσειράς" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "Ελάχιστο Μέγεθος Γραμματοσειράς" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "Οικογένεια Γραμματοσειρών" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "Προκαθορισμένη Γραμματοσειρά" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "Με Πατούρες" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "Χωρίς Πατούρες" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "Παράκαμψη Γραμματοσειράς Εκδότη" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "Γραμματοσειρά με Πατούρες" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "Γραμματοσειρά χωρίς Πατούρες" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "Ισοπαχής Γραμματοσειρά" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "Διάταξη" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "Παράγραφος" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "Ύψος γραμμής" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "Πλήρης Στοίχιση" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "Αυτόματος Συλλαβισμός" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Περιθώρια" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "Μέγιστος Αριθμός Στηλών" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "Μέγιστο Μέγεθος Εντός της Γραμμής" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "Μέγιστο πλάτος στήλης (οριζόντια γραφή) ή ύψος (κάθετη γραφή)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "Μέγιστο Μέγεθος Τμήματος" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "Μέγιστο ύψος (οριζόντια γραφή) ή μέγιστο πλάτος (κάθετη γραφή)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "Χρώμα" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "Συμπεριφορά" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "Μείωση κινούμενων στοιχείων" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "Αναγνώστης Ηλεκτρονικών Βιβλίων" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "Ηλεκτρονικό Βιβλίο;Βιβλίο;EPUB;Ανάγνωση;Διάβασμα;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "Ξεκινήστε ένα νέο κεφάλαιο στον τρόπο ανάγνωσης με το Φυλλοειδές, έναν " "μοντέρνο αναγνώστη ηλεκτρονικών βιβλίων σχεδιασμένο για το GNOME. Εισαχθείτε " "σε ένα περιβάλλον δίχως περισπασμούς, με πολλές επιλογές προσαρμογής " "σχεδιασμένες για να ικανοποιήσουν τις μοναδικές σας προτιμήσεις." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "Οι λειτουργίες του περιλαμβάνουν:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "Άνοιγμα αρχείων EPUB, Mobipocket, Kindle, FB2, CBZ, και PDF" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "Σελιδοποιημένη λειτουργία και κυλιόμενη λειτουργία" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "Επιλογή γραμματοσειράς και διάστιχου" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "Ανοιχτόχρωμη, σέπια, σκουρόχρωμη, κι ανεστραμμένη λειτουργία" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "Πρόοδος ανάγνωσης με δείκτες κεφαλαίων" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "Σελιδοδείκτες και επισημάνσεις" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "Εύρεση στο βιβλίο" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "Ταχεία αναζήτηση σε λεξικό" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "Διορθώθηκε η περικοπή στο τέλος κεφαλαίου όταν το κεφάλαιο εκκινεί με " "αλλαγή σελίδας" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "Διορθώθηκε η λανθασμένη αλλαγή γραμμών σε πίνακες" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "Διορθώθηκε ένα πρόβλημα επίδοσης με τους καταλόγους OPDS" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "Προστέθηκε υποστήριξη καταλόγων OPDS, τώρα με υποστήριξη OPDS 2.0" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 msgid "Added option to override publisher font" msgstr "Προστέθηκε επιλογή παράκαμψης γραμματοσειράς εκδότη" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "Προστέθηκε επιλογή μείωσης κινούμενων στοιχείων" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "Προστέθηκε υποστήριξη για JPEG XL εντός CBZ" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "Διορθώθηκε η ανάκτηση αρχείου από Ινχηλάτη στο Flatpak" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "Διορθώθηκε η προσπέλαση ημερομηνιών πρώτου αιώνα και π.Χ." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "Το Φυλλοειδές έχει επαναγραφεί από την αρχή με νέα βιβλιοθήκη προσπέλασης " "ηλεκτρονικών βιβλίων και τις τελευταίες βιβλιοθήκες πλατφόρμας, GTK 4 και " "Libadwaita, με ανανεωμένο UI και βελτιωμένη επίδοση." #, fuzzy #~ msgid "Book" #~ msgstr "Βιβλίο" #~ msgid "Ebook" #~ msgstr "Ηλεκτρονικό βιβλίο" #~ msgid "Reader" #~ msgstr "Αναγνώστης" #, fuzzy #~ msgid "Viewer" #~ msgstr "Προβολέας" #~ msgid "Foliate is modern e-book reader app designed for GNOME." #~ msgstr "" #~ "Το Φυλλοειδές είναι ένας μοντέρνος αναγνώστης ηλεκτρονικών βιβλίων " #~ "σχεδιασμένος για το GNOME." #, fuzzy #~ msgid "Reference" #~ msgstr "Αναφορά" #, fuzzy #~ msgid "Go to Reference" #~ msgstr "Μετάβαση στην Αναφορά" #~ msgid "Keyboard Shortcuts" #~ msgstr "Συντομεύσεις Πληκτρολογίου" #~ msgid "Preferences" #~ msgstr "Προτιμήσεις" #~ msgid "Speak" #~ msgstr "Εκκίνηση Ομιλίας" #~ msgid "Fold Sidebar" #~ msgstr "Αναδίπλωση Πλαϊνής Μπάρας" #~ msgid "OK" #~ msgstr "Εντάξει" #~ msgid "Voice" #~ msgstr "Φωνή" #~ msgid "Start Speaking" #~ msgstr "Εκκίνηση Ομιλίας" #~ msgid "Stop Speaking" #~ msgstr "Διακοπή Ομιλίας" ================================================ FILE: po/es.po ================================================ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # Óscar Fernández Díaz , 2023-2024. # msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2025-01-03 13:11-0300\n" "Last-Translator: Óscar Fernández Díaz \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: Poedit 3.4.4\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "Marcador borrado" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "Deshacer" #: src/annotations.js:437 msgid "Underline" msgstr "Subrayado" #: src/annotations.js:438 msgid "Squiggly" msgstr "Garabato" #: src/annotations.js:439 msgid "Strikethrough" msgstr "Tachado" #: src/annotations.js:440 msgid "Yellow" msgstr "Amarillo" #: src/annotations.js:441 msgid "Orange" msgstr "Naranja" #: src/annotations.js:442 msgid "Red" msgstr "Rojo" #: src/annotations.js:443 msgid "Magenta" msgstr "Magenta" #: src/annotations.js:444 msgid "Aqua" msgstr "Aqua" #: src/annotations.js:445 msgid "Lime" msgstr "Lima" #: src/annotations.js:446 msgid "Custom Color…" msgstr "Color personalizado…" #: src/annotations.js:498 msgid "Custom" msgstr "Personalizado" #: src/annotations.js:592 msgid "JSON Files" msgstr "Archivos JSON" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "Todos los archivos" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "No hay anotaciones" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "El archivo importado no tiene anotaciones" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "No se pueden importar anotaciones" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "Se ha producido un error" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "No tiene anotaciones para este libro" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "Anotaciones para “%s”" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d anotación" msgstr[1] "%d anotaciones" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "Cerrar" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "Cancelar" #: src/app.js:136 msgid "E-Book Files" msgstr "Archivos de libros electrónicos" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "Lea libros electrónicos con estilo" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "" "Juan Campos\n" "Blanc Chan\n" "micrococo\n" "Óscar Fernández Díaz" #: src/app.js:414 msgid "Source Code" msgstr "Código fuente" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Editor" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "Publicado" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "Actualizado" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Idioma" #: src/book-info.js:139 msgid "Translated by" msgstr "Traducido por" #: src/book-info.js:140 msgid "Edited by" msgstr "Editado por" #: src/book-info.js:141 msgid "Narrated by" msgstr "Narrado por" #: src/book-info.js:142 msgid "Illustrated by" msgstr "Ilustrado por" #: src/book-info.js:143 msgid "Produced by" msgstr "Producido por" #: src/book-info.js:144 msgid "Artwork by" msgstr "Arte por" #: src/book-info.js:145 msgid "Color by" msgstr "Color por" #: src/book-info.js:146 msgid "Contributors" msgstr "Colaboradores" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "Identificador" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "Acerca de este libro" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "Pos. %s de %s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "Página %s de %s" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "Página %s" #: src/book-viewer.js:32 msgid "Footnote" msgstr "Nota a pie de página" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "Ir a la nota a pie de página" #: src/book-viewer.js:34 msgid "Endnote" msgstr "Nota final" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "Ir a la nota final" #: src/book-viewer.js:36 msgid "Note" msgstr "Nota" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "Ir a la nota" #: src/book-viewer.js:38 msgid "Definition" msgstr "Definición" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "Ir a la definición" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "Bibliografía" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "Ir a la bibliografía" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "Eliminar marcador" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "Añadir marcador" #: src/book-viewer.js:714 msgid "File not found" msgstr "Archivo no encontrado" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "Tipo de archivo no soportado" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "Anotación eliminada" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" "‘%s’\n" "—%s, “%s”, p. %s" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" "‘%s’\n" "—“%s”, p. %s" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "‘%s’ (p. %s)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" "‘%s’\n" "—%s, “%s”" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" "‘%s’\n" "—“%s”" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "‘%s’" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "Imagen de “%s”" #: src/book-viewer.js:904 msgid "Image" msgstr "Imagen" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "de %d" #: src/library.js:47 msgid "Loading" msgstr "Cargando" #: src/library.js:48 msgid "Failed to Load" msgstr "Fallo al cargar" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "Recargar" #: src/library.js:51 msgid "See All" msgstr "Ver todos" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "Buscar" #: src/library.js:53 msgid "Filter" msgstr "Filtrar" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "Descargar" #: src/library.js:56 msgid "Buy" msgstr "Comprar" #: src/library.js:58 msgid "Preview" msgstr "Vista previa" #: src/library.js:59 msgid "Sample" msgstr "Muestra" #: src/library.js:60 msgid "Borrow" msgstr "Prestar" #: src/library.js:61 msgid "Subscribe" msgstr "Suscribirse" #: src/library.js:63 msgid "Free" msgstr "Gratis" #: src/library.js:65 msgid "First" msgstr "Primero" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "Anterior" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "Siguiente" #: src/library.js:68 msgid "Last" msgstr "Último" #: src/library.js:70 msgid "Search Terms" msgstr "Términos de búsqueda" #: src/library.js:72 msgid "Title" msgstr "Título" #: src/library.js:73 msgid "Author" msgstr "Autor" #: src/library.js:74 msgid "Contributor" msgstr "Colaborador" #: src/library.js:438 msgid "Remove Book?" msgstr "¿Eliminar libro?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "" "El progreso de lectura, las anotaciones y los marcadores se perderán " "permanentemente." #: src/library.js:441 msgid "_Cancel" msgstr "_Cancelar" #: src/library.js:442 msgid "_Remove" msgstr "_Eliminar" #: src/library.js:472 msgid "Failed to Open" msgstr "Error al abrir" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "No se ha podido abrir el archivo con la aplicación seleccionada" #: src/library.js:644 msgid "Download Failed" msgstr "Descarga fallida" #: src/library.js:698 msgid "Rename…" msgstr "Renombrar…" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "Eliminar" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "Renombrar" #: src/library.js:725 msgid "Name" msgstr "Nombre" #: src/library.js:740 msgid "All Books" msgstr "Todos los libros" #: src/library.js:746 msgid "Add Catalog…" msgstr "Añadir catálogo…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "Biblioteca" #: src/library.js:821 msgid "Catalogs" msgstr "Catálogos" #: src/library.js:864 msgid "Catalog removed" msgstr "Catálogo eliminado" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "Añadir catálogo" #: src/library.js:952 msgid "Add" msgstr "Añadir" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "Puede consultar y descargar libros de los catálogos OPDS. Saber más…" #: src/library.js:961 msgid "URL" msgstr "URL" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "Diccionario" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "De Wiktionary, publicado bajo la Licencia CC BY-SA." #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "No se han encontrado definiciones" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "Buscar en Wiktionary" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Wikipedia" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "De Wikipedia, publicado bajo la Licencia CC BY-SA." #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "Buscar en Wikipedia" #: src/selection-tools.js:59 msgid "Translate" msgstr "Traducir" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "Traducción por Traductor de Google" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "No se puede recuperar la traducción" #: src/selection-tools.js:67 msgid "Search…" msgstr "Buscar…" #: src/themes.js:8 msgid "Default" msgstr "Predeterminado" #: src/themes.js:13 msgid "Gray" msgstr "Gris" #: src/themes.js:18 msgid "Sepia" msgstr "Sepia" #: src/themes.js:23 msgid "Grass" msgstr "Césped" #: src/themes.js:28 msgid "Cherry" msgstr "Cereza" #: src/themes.js:33 msgid "Sky" msgstr "Cielo" #: src/themes.js:38 msgid "Solarized" msgstr "Solarizado" #: src/themes.js:43 msgid "Gruvbox" msgstr "Gruvbox" #: src/themes.js:48 msgid "Nord" msgstr "Nord" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "Error de texto a voz" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "" "Asegúrese de que Speech Dispatcher está instalado y funciona en su sistema" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "Copiado al portapapeles" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "Estilo de destacados" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "Eliminar" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "Menú" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "Añadir nota…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "Abrir en una ventana nueva" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "Abrir con una aplicación externa" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "Exportar anotaciones…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "Ventana nueva" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "Abrir una copia" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "Importar anotaciones…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "Acerca de Foliate" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "Todas las secciones" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "Sección actual" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "Coincidir solo con palabras completas" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "Coincidir en mayúsculas y minúsculas" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "Coincidir en diacríticos" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "Configuración de tipografía y diseño" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "Modo de desplazamiento" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "Invertir colores en modo oscuro" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "Ocultar cursor automáticamente" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "Imprimir…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "Inspector" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "No se puede abrir el libro" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "Detalles" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "Abrir otro archivo…" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "Fijar barra lateral" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "Menú del libro" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "Buscar" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "Buscar en el libro…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "Contenidos" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Anotaciones" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "Seleccione un texto para añadir anotaciones" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "Filtrar anotaciones…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Marcadores" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "No hay marcadores" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "Añada algunos marcadores para verlos aquí" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "No se han encontrado resultados" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "Intente una búsqueda diferente" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "Barra lateral" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "Menú de visualización" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "Reducir" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "Restablecer ampliación" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "Ampliar" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "Seguir el estilo del sistema" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "Estilo claro" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "Estilo oscuro" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Pantalla completa" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "Exportar anotaciones" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "Exportar" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "Formatear" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "Elija “JSON” si planea importar anotaciones a Foliate" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "Markdown" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "Org Mode" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Copiar" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "Guardar como…" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "Rotar 90° en sentido antihorario" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "Rotar 90° en sentido horario" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "Importar anotaciones" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "Importar" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "" "El identificador no coincide. Es posible que estas anotaciones no " "correspondan a este libro." #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "Importar igualmente" #: src/ui/library.ui:6 msgid "List View" msgstr "Vista de lista" #: src/ui/library.ui:11 msgid "Grid View" msgstr "Vista de cuadrícula" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Abrir…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "Menú principal" #: src/ui/library.ui:110 msgid "Open" msgstr "Abrir" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "Menú de la biblioteca" #: src/ui/library.ui:134 msgid "Search library…" msgstr "Buscar en la biblioteca…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "Atrás" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "Adelante" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "No hay libros todavía" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "Abra un libro para empezar a leer" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "Posición" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "Narración" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "Tiempo restante en la sección" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "Tiempo restante en el libro" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "Página" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "Pegar e ir" #: src/ui/navbar.ui:322 msgid "Section" msgstr "Sección" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "Primera sección" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "Sección anterior" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "Saltar a…" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "Siguiente sección" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "Última sección" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Destacados" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "Leer en voz alta desde aquí" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "Copiar con cita" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "Copiar identificador" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "Imprimir selección…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "Velocidad" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "Tono" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "Reproducir/Pausar" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "Detener" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "Tipografía" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "Tamaño de la tipografía" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "Tamaño de la tipografía predeterminado" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "Tamaño mínimo de la tipografía" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "Familia tipográfica" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "Tipografía predeterminada" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "Serif" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "Sans-serif" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "Sobrescribir tipografía del editor" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "Tipografía Serif" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "Tipografía Sans-Serif" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "Tipografía monoespaciada" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "Disposición" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "Párrafo" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "Altura de línea" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "Justificación completa" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "Separación silábica" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Márgenes" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "Número máximo de columnas" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "Tamaño máximo en línea" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "" "Anchura máxima de columna (escritura horizontal) o altura (escritura " "vertical)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "Tamaño máximo de bloque" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "Altura (escritura horizontal) o anchura (escritura vertical) máximas" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "Color" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "Comportamiento" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "Reducir animación" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "Visor de libros electrónicos" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "Ebook;Libro;EPUB;Visor;Lector;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "Descubra un capítulo nuevo en la lectura con Foliate, el moderno lector de " "libros electrónicos adaptado a GNOME. Sumérjase en una interfaz libre de " "distracciones, con características de personalización diseñadas para " "adaptarse a sus preferencias únicas." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "Características:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "Abrir archivos EPUB, Mobipocket, Kindle, FB2, CBZ y PDF" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "Modo paginado y modo desplazado" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "Personalizar la tipografía y el interlineado" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "Modo claro, sepia, oscuro e invertido" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "Deslizador del progreso de lectura con marcas de capítulo" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "Marcadores y anotaciones" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "Búsqueda en el libro" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "Búsqueda rápida en el diccionario" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "" "Se solucionó el corte del final del capítulo cuando éste comienza con un " "salto de página" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "Se corrigió el ajuste incorrecto del texto en las tablas" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "Se solucionó un problema de rendimiento con los catálogos OPDS" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "Añadido soporte para catálogos OPDS, ahora con soporte para OPDS 2.0" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 msgid "Added option to override publisher font" msgstr "Añadida la opción de sobrescribir la tipografía del editor" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "Añadida la opción de reducir la animación" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "Añadida compatibilidad con JPEG XL en CBZ" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "Corregida la obtención de archivos desde Tracker en Flatpak" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "" "Corregida la interpretación de fechas que no son solo del primer siglo o a.e." "c." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "Foliate se ha reescrito desde cero con una biblioteca de renderizado de " "libros electrónicos nueva y las bibliotecas de plataforma más recientes, GTK " "4 y Libadwaita, con una interfaz de usuario renovada y un rendimiento " "mejorado." #~ msgid "Book" #~ msgstr "Libro" #~ msgid "EPUB" #~ msgstr "EPUB" #~ msgid "Ebook" #~ msgstr "Libro electrónico" #~ msgid "Reader" #~ msgstr "Lector" #~ msgid "Viewer" #~ msgstr "Visor" #~ msgid "Volume" #~ msgstr "Volumen" #~ msgid "0.75" #~ msgstr "0,75" #~ msgid "1" #~ msgstr "1" #~ msgid "1.25" #~ msgstr "1,25" #~ msgid "1.5" #~ msgstr "1,5" #~ msgid "2" #~ msgstr "2" ================================================ FILE: po/eu.po ================================================ # BASQUE LANGUAGE FILE # Copyright (C) 2020 # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # Alexander Gabilondo , 2020. # msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2020-08-30 16:03+0200\n" "Last-Translator: micrococo\n" "Language-Team: \n" "Language: eu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 2.3\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/annotations.js:137 src/annotations.js:172 #, fuzzy msgid "Bookmark deleted" msgstr "Laster-marka ezabatua" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "Desegin" #: src/annotations.js:437 msgid "Underline" msgstr "Azpimarratu" #: src/annotations.js:438 msgid "Squiggly" msgstr "Ondulatua" #: src/annotations.js:439 msgid "Strikethrough" msgstr "Marratua" #: src/annotations.js:440 msgid "Yellow" msgstr "Amarillo" #: src/annotations.js:441 #, fuzzy msgid "Orange" msgstr "Laranja" #: src/annotations.js:442 msgid "Red" msgstr "Rojo" #: src/annotations.js:443 msgid "Magenta" msgstr "Magenta" #: src/annotations.js:444 msgid "Aqua" msgstr "Ura" #: src/annotations.js:445 msgid "Lime" msgstr "Lima" #: src/annotations.js:446 #, fuzzy msgid "Custom Color…" msgstr "Kolore pertsonalizatua…" #: src/annotations.js:498 #, fuzzy msgid "Custom" msgstr "Pertsonalizatu" #: src/annotations.js:592 #, fuzzy msgid "JSON Files" msgstr "JSON fitxategiak" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "Fitxategi guztiak" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 #, fuzzy msgid "No Annotations" msgstr "Oharrik ez" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "Inportatutako fitxategiak ez du oharrik" #: src/annotations.js:625 #, fuzzy msgid "Cannot Import Annotations" msgstr "Ezin dira inportatu oharrak" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 #, fuzzy msgid "An error occurred" msgstr "Errore bat gertatu da" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "Ez duzu oharrik liburu honetan" #: src/annotations.js:648 #, fuzzy, javascript-format msgid "Annotations for “%s”" msgstr "“%s”-ren oharrak" #: src/annotations.js:649 #, fuzzy, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "Ohar %d" msgstr[1] "%d ohar" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "Itxi" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "Utzi" #: src/app.js:136 #, fuzzy msgid "E-Book Files" msgstr "Liburu elektronikoen fitxategiak" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "Irakurri liburu elektronikoak estiloan" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "itzultzailea Alexander Gabilondo" #: src/app.js:414 #, fuzzy msgid "Source Code" msgstr "Iturburu kodea" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Argitaratzailea" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 #, fuzzy msgid "Published" msgstr "Argitaratua" #. Translators: this is the heading for the modified date #: src/book-info.js:137 #, fuzzy msgid "Updated" msgstr "Eguneratuta" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Hizkuntza" #: src/book-info.js:139 #, fuzzy msgid "Translated by" msgstr "Itzultzailea" #: src/book-info.js:140 msgid "Edited by" msgstr "Editorea" #: src/book-info.js:141 msgid "Narrated by" msgstr "Narratzailea" #: src/book-info.js:142 msgid "Illustrated by" msgstr "Ilustratzailea" #: src/book-info.js:143 msgid "Produced by" msgstr "Produktorea" #: src/book-info.js:144 msgid "Artwork by" msgstr "Artista" #: src/book-info.js:145 msgid "Color by" msgstr "Kolore arduraduna" #: src/book-info.js:146 #, fuzzy msgid "Contributors" msgstr "Laguntzaileak" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "Identifikatzailea" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "Liburu honi buruz" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "Lok. %s/%s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "Orria %s/%s" #: src/book-viewer.js:29 #, fuzzy, javascript-format msgid "Page %s" msgstr "%s orria" #: src/book-viewer.js:32 #, fuzzy msgid "Footnote" msgstr "Oin-oharra" #: src/book-viewer.js:33 #, fuzzy msgid "Go to Footnote" msgstr "Joan oin-oharretara" #: src/book-viewer.js:34 msgid "Endnote" msgstr "Amaiera-oharra" #: src/book-viewer.js:35 #, fuzzy msgid "Go to Endnote" msgstr "Joan amaiera-oharretara" #: src/book-viewer.js:36 msgid "Note" msgstr "Oharra" #: src/book-viewer.js:37 #, fuzzy msgid "Go to Note" msgstr "Joan oharretara" #: src/book-viewer.js:38 #, fuzzy msgid "Definition" msgstr "Definizioa" #: src/book-viewer.js:39 #, fuzzy msgid "Go to Definition" msgstr "Joan definiziora" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "Bibliografia" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "Joan bibiografiara" #: src/book-viewer.js:622 #, fuzzy msgid "Remove bookmark" msgstr "Kendu laster-marka" #: src/book-viewer.js:623 #, fuzzy msgid "Add bookmark" msgstr "Gehitu laster-marka" #: src/book-viewer.js:714 #, fuzzy msgid "File not found" msgstr "Fitxategia ez da aurkitu" #: src/book-viewer.js:715 #, fuzzy msgid "File type not supported" msgstr "Fitxatigi mota hau ez dago onartuta" #: src/book-viewer.js:804 #, fuzzy msgid "Annotation deleted" msgstr "Oharra ezabatua" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "%s’ (p. %s)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "“%s”-ren irudia" #: src/book-viewer.js:904 msgid "Image" msgstr "Irudia" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "%d-rena" #: src/library.js:47 msgid "Loading" msgstr "Kargatzen" #: src/library.js:48 msgid "Failed to Load" msgstr "Kargatzeak huts egin du" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "Birkargatu" #: src/library.js:51 msgid "See All" msgstr "Ikusi guztiak" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "Bilatu" #: src/library.js:53 msgid "Filter" msgstr "Iragazkia" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "Deskargatu" #: src/library.js:56 msgid "Buy" msgstr "Erosi" #: src/library.js:58 msgid "Preview" msgstr "Aurrebista" #: src/library.js:59 msgid "Sample" msgstr "Lagina" #: src/library.js:60 msgid "Borrow" msgstr "Maileguan" #: src/library.js:61 msgid "Subscribe" msgstr "Harpidetu" #: src/library.js:63 msgid "Free" msgstr "Doan" #: src/library.js:65 msgid "First" msgstr "Lehenengoa" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "Aurrekoa" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "Hurrengoa" #: src/library.js:68 msgid "Last" msgstr "Azkena" #: src/library.js:70 #, fuzzy msgid "Search Terms" msgstr "Bilatu baldintzak" #: src/library.js:72 msgid "Title" msgstr "Izenburua" #: src/library.js:73 msgid "Author" msgstr "Egilea" #: src/library.js:74 #, fuzzy msgid "Contributor" msgstr "Laguntzailea" #: src/library.js:438 #, fuzzy msgid "Remove Book?" msgstr "Kendu liburua?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "Irakurketa-puntua, oharrak eta laster-markak betiko galduko dira" #: src/library.js:441 msgid "_Cancel" msgstr "_Utzi" #: src/library.js:442 msgid "_Remove" msgstr "_Kendu" #: src/library.js:472 #, fuzzy msgid "Failed to Open" msgstr "Ezin izan da ireki" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "Ezin izan da fitxategia hautatutako aplikazioarekin ireki" #: src/library.js:644 msgid "Download Failed" msgstr "Deskargak huts egin du" #: src/library.js:698 msgid "Rename…" msgstr "Berrizendatu…" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "Kendu" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "Berrizendatu" #: src/library.js:725 msgid "Name" msgstr "Izena" #: src/library.js:740 #, fuzzy msgid "All Books" msgstr "Liburu guztiak" #: src/library.js:746 #, fuzzy msgid "Add Catalog…" msgstr "Gehitu katalogoa…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "Biblioteka" #: src/library.js:821 msgid "Catalogs" msgstr "Katalogoak" #: src/library.js:864 msgid "Catalog removed" msgstr "Katalogoa kendu da" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "Gehitu katalogoa" #: src/library.js:952 msgid "Add" msgstr "Gehitu" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "Liburuak arakatu eta deskarga ditzakezu OPDS katalogoetatik. Lortu informazio gehiago..." #: src/library.js:961 msgid "URL" msgstr "URLa" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "Hiztegia" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "Wiktionarytik, CC BY-SA lizentziapean argitaratua." #: src/selection-tools.js:38 src/selection-tools.js:51 #, fuzzy msgid "No Definitions Found" msgstr "Ez da definiziorik aurkitu" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "Bilatu Wiktionaryn" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Wikipedia" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "Wikipediatik, CC BY-SA Lizentzia." #: src/selection-tools.js:52 #, fuzzy msgid "Search on Wikipedia" msgstr "Bilatu Wikipedian" #: src/selection-tools.js:59 msgid "Translate" msgstr "Itzuli" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "Google Translatek itzulita" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "Ezin da itzulpena eskuratu" #: src/selection-tools.js:67 #, fuzzy msgid "Search…" msgstr "Bilatu…" #: src/themes.js:8 msgid "Default" msgstr "Lehenetsia" #: src/themes.js:13 msgid "Gray" msgstr "Grisa" #: src/themes.js:18 msgid "Sepia" msgstr "Sepia" #: src/themes.js:23 msgid "Grass" msgstr "Belarra" #: src/themes.js:28 msgid "Cherry" msgstr "Gerezia" #: src/themes.js:33 msgid "Sky" msgstr "Ortzia" #: src/themes.js:38 msgid "Solarized" msgstr "Solarizatua" #: src/themes.js:43 msgid "Gruvbox" msgstr "Gruvbox" #: src/themes.js:48 msgid "Nord" msgstr "Iparra" #: src/tts.js:117 #, fuzzy msgid "Text-to-Speech Error" msgstr "Testutik-hizketara errorea" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "Ziurtatu Speech Dispatcher sisteman instalatuta eta martxan dagoela" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "Arbelean kopiatuta" #: src/ui/annotation-popover.ui:13 #, fuzzy msgid "Highlight Style" msgstr "Estilo argia" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "Ezabatu" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "Menua" #: src/ui/annotation-popover.ui:47 #, fuzzy msgid "Add Note…" msgstr "Gehitu oharra…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "Ireki leiho berrian" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "Ireki kanpoko aplikazio batekin" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "Esportatu oharrak…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "Leiho berria" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "Ireki kopia bat" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "Inportatu oharrak…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "Foliate-ri buruz" #: src/ui/book-viewer.ui:45 #, fuzzy msgid "All Sections" msgstr "Atal guztiak" #: src/ui/book-viewer.ui:50 #, fuzzy msgid "Current Section" msgstr "Uneko atala" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "Bilatu hitz osoak soilik" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "Kontuan izan maiuskulak-minuskulak" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "Bilatu diakritikoak" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "Letra mota eta diseinu ezarpenak" #: src/ui/book-viewer.ui:89 #, fuzzy msgid "Scrolled Mode" msgstr "Korritzeko modua" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "Alderantzizkatu koloreak modu ilunean" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "Ezkutatu kurtsorea" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "Inprimatu…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "Ikuskaria" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "Liburua ezin da ireki" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "Zehaztasunak" #: src/ui/book-viewer.ui:193 #, fuzzy msgid "Open Another File…" msgstr "Ireki beste fitxategi bat…" #: src/ui/book-viewer.ui:245 #, fuzzy msgid "Pin Sidebar" msgstr "Finkatu alboko panela" #: src/ui/book-viewer.ui:253 #, fuzzy msgid "Book Menu" msgstr "Liburuaren menua" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "Bilatu" #: src/ui/book-viewer.ui:276 #, fuzzy msgid "Find in book…" msgstr "Bilatu liburuan…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "Edukiak" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Oharrak" #: src/ui/book-viewer.ui:403 #, fuzzy msgid "Select some text to add annotations" msgstr "Hautatu testu batzuk oharrak gehitzeko" #: src/ui/book-viewer.ui:433 #, fuzzy msgid "Filter annotations…" msgstr "Bilatu oharrak…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Laster-markak" #: src/ui/book-viewer.ui:458 #, fuzzy msgid "No Bookmarks" msgstr "Ez dago laster-markarik" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "Gehitu laster-marka batzuk hemen ikusteko" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 #, fuzzy msgid "No Results Found" msgstr "Ez da emaitzarik aurkitu" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 #, fuzzy msgid "Try a different search" msgstr "Saiatu beste bilaketa bat" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 #, fuzzy msgid "Sidebar" msgstr "Alboko panela" #: src/ui/book-viewer.ui:556 #, fuzzy msgid "View Menu" msgstr "Ikusi menua" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 #, fuzzy msgid "Zoom Out" msgstr "Txikiagotu" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "Berrezarri zooma" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 #, fuzzy msgid "Zoom In" msgstr "Handiagotu" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "Sistemaren estiloa errespetatu" #: src/ui/book-viewer.ui:611 #, fuzzy msgid "Light Style" msgstr "Estilo argia" #: src/ui/book-viewer.ui:621 #, fuzzy msgid "Dark Style" msgstr "Estilo iluna" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Pantaila osoa" #: src/ui/export-dialog.ui:5 #, fuzzy msgid "Export Annotations" msgstr "Esportatu oharrak" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "Esportatu" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "Formatua" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "Aukeratu “JSON” oharrak Foliate-ra berriro inportatzeko asmoa baduzu" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "Markdown" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "Org modua" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Kopiatu" #: src/ui/image-viewer.ui:10 #, fuzzy msgid "Save As…" msgstr "Gorde honela…" #: src/ui/image-viewer.ui:25 #, fuzzy msgid "Rotate 90° Counter-Clockwise" msgstr "Biratu 90° erlojuaren kontrako noranzkoan" #: src/ui/image-viewer.ui:32 #, fuzzy msgid "Rotate 90° Clockwise" msgstr "Biratu 90° erlujuaren noranzkoan" #: src/ui/import-dialog.ui:7 #, fuzzy msgid "Import Annotations" msgstr "Inportatu oharrak" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "Inportatu" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "" "Identifikatzailea ez dator bat. Baliteke ohar hauek ez izatea liburu honetakoak." #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "Inportatu edonola" #: src/ui/library.ui:6 #, fuzzy msgid "List View" msgstr "Zerrenda ikuspegia" #: src/ui/library.ui:11 #, fuzzy msgid "Grid View" msgstr "Sareta ikuspegia" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Ireki…" #: src/ui/library.ui:67 #, fuzzy msgid "Main Menu" msgstr "Menu nagusia" #: src/ui/library.ui:110 #, fuzzy msgid "Open" msgstr "Ireki" #: src/ui/library.ui:117 #, fuzzy msgid "Library Menu" msgstr "Bibliotekaren menua" #: src/ui/library.ui:134 #, fuzzy msgid "Search library…" msgstr "Bilatu biblioteka…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "Atzera" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "Aurrera" #: src/ui/library-view.ui:21 #, fuzzy msgid "No Books Yet" msgstr "Oraindik ez dago libururik" #: src/ui/library-view.ui:22 #, fuzzy msgid "Open a book to start reading" msgstr "Ireki liburu bat irakurtzen hasteko" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "Kokalekua" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "Narrazioa" #: src/ui/navbar.ui:162 #, fuzzy msgid "Time Left in Section" msgstr "Atala bukatzeko denbora" #: src/ui/navbar.ui:192 #, fuzzy msgid "Time Left in Book" msgstr "Liburua bukatzeko denbora" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 #, fuzzy msgid "Page" msgstr "Orria" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "Itsatsi eta joan" #: src/ui/navbar.ui:322 msgid "Section" msgstr "Atala" #: src/ui/navbar.ui:388 #, fuzzy msgid "First Section" msgstr "Lehenengo atala" #: src/ui/navbar.ui:397 #, fuzzy msgid "Previous Section" msgstr "Aurreko atala" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "Jauzi hona…" #: src/ui/navbar.ui:414 #, fuzzy msgid "Next Section" msgstr "Hurrengo atala" #: src/ui/navbar.ui:423 #, fuzzy msgid "Last Section" msgstr "Azken atala" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Nabarmendu" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "Irakurri hemendik" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "Kopiatu aipamen gisa" #: src/ui/selection-popover.ui:40 #, fuzzy msgid "Copy Identifier" msgstr "Kopiatu identifikatzailea" #: src/ui/selection-popover.ui:44 #, fuzzy msgid "Print Selection…" msgstr "Inprimatu hautapena…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "Abiadura" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "Tonua" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "Erreproduzitu/Pausatu" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "Gelditu" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "Letra-mota" #: src/ui/view-preferences-window.ui:9 #, fuzzy msgid "Font Size" msgstr "Letraren tamaina" #: src/ui/view-preferences-window.ui:12 #, fuzzy msgid "Default Font Size" msgstr "Letraren tamaina lehenetsia" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "Gutxieneko letraren tamaina" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "Letra-familia" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "Letra-mota lehenetsia" #: src/ui/view-preferences-window.ui:47 #, fuzzy msgid "Serif" msgstr "Serif" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "Sans-serif" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "Gainidatzi argitaletxearen letra-tipoa" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "Serif letra-mota" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "Sans-Serif letra-mota" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "Espazio bakarreko letra-mota" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "Diseinua" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "Paragrafoa" #: src/ui/view-preferences-window.ui:121 #, fuzzy msgid "Line Height" msgstr "Lerroaren altuera" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "Justifikazio osoa" #: src/ui/view-preferences-window.ui:146 #, fuzzy msgid "Hyphenation" msgstr "Hitzen zatiketa automatikoa" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Marjinak" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "Zutabeen gehienezko kopurua" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "Lerro arteko gehinezko tartea" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "Zutabearen gehieneko zabalera (idazkera horizontala) edo altuera (idazkera bertikala)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "Blokearen gehienezko tamaina" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "Gehienezko altuera (idazketa horizontala) edo zabalera (idazketa bertikala)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "Kolorea" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "Jokabidea" #: src/ui/view-preferences-window.ui:246 #, fuzzy msgid "Reduce Animation" msgstr "Murriztu animazioa" #: data/com.github.johnfactotum.Foliate.desktop.in:5 #, fuzzy msgid "E-Book Viewer" msgstr "Liburu elektronikoen ikustailea" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "Liburu elektronikoa;Liburua;EPUB;Ikustailea;Irakurgailua;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "Ezagutu irakurtzeko modu berri bat Foliate-rekin, GNOMErako egokitutako" "liburu elektronikoen irakurgailu modernoarekin. Murgil zaitez distrakziorik" "gabeko interfaze batean, zure hobespen bereziekin bat datozen pertsonalizazioekin." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "Hainbat funtzio:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "Ireki EPUB, Mobipocket, Kindle, FB2, CBZ, eta PDF fitxategiak" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "Orrialdea pasa eta korritze moduak" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "Pertsonalizatu letra-mota eta lerro-arteak" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "Modu argia, sepia, iluna eta alderantzizkoa" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "Irakurketa-puntua kapituluen markekin" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 #, fuzzy msgid "Bookmarks and annotations" msgstr "Laster-markak eta oharrak" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 #, fuzzy msgid "Find in book" msgstr "Bilatu liburuan" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "Hiztegi bilaketa bizkorra" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "Konpondu da kapituluaren amaiera kapitulua orrialde-jauziarekin hasten denean" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "Konpondu da okerreko testu-doikuntza tauletan" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "Konpondu da OPDS katalogoekin gertatzen zen okerreko konportamendua" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "OPDS katalogoetarako laguntza erantsia, orain OPDS 2.0rako laguntzarekin" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 #, fuzzy msgid "Added option to override publisher font" msgstr "Gehitu da argitaletxearen letra-tipoa gain-idazteko aukera" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "Gehitu da animazioa gutxitzeko aukera" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "Gehitu da JPEG XL soportea CBZn" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "Konpondu da Tracker-etid fitxategia eskuratzen Flatpak-en" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "Konpondu dira I. mendeko eta BCEko datak" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "Foliate hutsetik berridatzi da liburu elektronikoak errendatzeko liburutegi " "berri batekin eta plataformako azken liburutegiekin, GTK 4 eta Libadwaita, " "UI freskatuarekin eta errendimendu hobetuarekin." #, fuzzy #~ msgid "Book" #~ msgstr "Liburua" #~ msgid "EPUB" #~ msgstr "EPUB" #~ msgid "Ebook" #~ msgstr "Liburu elektronikoa" #~ msgid "Reader" #~ msgstr "Irakurgailua" #, fuzzy #~ msgid "Viewer" #~ msgstr "Ikusgaiua" #~ msgid "John Factotum" #~ msgstr "John Factotum" #, fuzzy #~ msgid "Reference" #~ msgstr "Erreferentzia" #, fuzzy #~ msgid "Go to Reference" #~ msgstr "Joan erreferentziara" #~ msgid "Keyboard Shortcuts" #~ msgstr "Laster-teklak" #~ msgid "Preferences" #~ msgstr "Hobespenak" #~ msgid "Speak" #~ msgstr "Ozen irakurri" #, fuzzy #~ msgid "Fold Sidebar" #~ msgstr "Tolestu alboko panela" #~ msgid "Save File" #~ msgstr "Gorde fitxategia" #, fuzzy #~ msgid "Choose highlight style" #~ msgstr "Aldatu nabarmentzeko kolorea" #~ msgid "More" #~ msgstr "Gehiago" #, fuzzy #~ msgid "About this book" #~ msgstr "Liburu honi buruz" #, fuzzy #~ msgid "Toggle sidebar" #~ msgstr "Zabaldu alboko panela" #~ msgid "Restore zoom" #~ msgstr "Leheneratu zooma" #~ msgid "Go to previous page" #~ msgstr "Joan aurreko orrira" #~ msgid "Go back to previous location" #~ msgstr "Joan aurreko kokalekura" #, fuzzy #~ msgid "Go to next section" #~ msgstr "Joan hurrengo atalera" #, fuzzy #~ msgid "Go to last section" #~ msgstr "Joan azken atalera" ================================================ FILE: po/fa.po ================================================ # Farsi translations for com.github.johnfactotum.Foliate package. # Copyright (C) 2020 THE com.github.johnfactotum.Foliate'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # Meysam Pour Ganji , 2023. # Danial Behzadi , 2024. # msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2024-12-28 13:22+0330\n" "Last-Translator: Danial Behzadi \n" "Language-Team: \n" "Language: fa_IR\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==0 || n==1);\n" "X-Generator: Poedit 3.5\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "نشانک حذف شد" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "واگرد" #: src/annotations.js:437 msgid "Underline" msgstr "زیرخط" #: src/annotations.js:438 msgid "Squiggly" msgstr "موج‌گون" #: src/annotations.js:439 msgid "Strikethrough" msgstr "خط‌درمیان" #: src/annotations.js:440 msgid "Yellow" msgstr "زرد" #: src/annotations.js:441 msgid "Orange" msgstr "نارنجی" #: src/annotations.js:442 msgid "Red" msgstr "قرمز" #: src/annotations.js:443 msgid "Magenta" msgstr "ارغوانی" #: src/annotations.js:444 msgid "Aqua" msgstr "سبزآبی" #: src/annotations.js:445 msgid "Lime" msgstr "سبزفسفری" #: src/annotations.js:446 msgid "Custom Color…" msgstr "رنگ سفارشی…" #: src/annotations.js:498 msgid "Custom" msgstr "سفارشی" #: src/annotations.js:592 msgid "JSON Files" msgstr "سندهای JSON" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "همهٔ سندها" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "بدون یادداشت" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "سند درون‌ریزی‌ شده بدون حاشیه است" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "عدم امکان درون‌ریزی یادداشت‌ها" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "خطایی رخ داد" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "شما هیچ یادداشتی بر این کتاب ننوشته‌اید" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "یادداشت‌های “%s”" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d یادداشت" msgstr[1] "%d یادداشت" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "بستن" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "لغو" #: src/app.js:136 msgid "E-Book Files" msgstr "سندهای رایاکتاب" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "خوانش رایاکتاب در سبک" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "" "میثم پورگنجی \n" "دانیال بهزادی " #: src/app.js:414 msgid "Source Code" msgstr "منبع کد" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "ناشر" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "انتشار" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "بروزرسانی" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "زبان" #: src/book-info.js:139 msgid "Translated by" msgstr "بازگردانی به دست" #: src/book-info.js:140 msgid "Edited by" msgstr "ویراسته به دشت" #: src/book-info.js:141 msgid "Narrated by" msgstr "روایت شده به دست" #: src/book-info.js:142 msgid "Illustrated by" msgstr "تصویرسازی شده به دست" #: src/book-info.js:143 msgid "Produced by" msgstr "تولید شده به دست" #: src/book-info.js:144 msgid "Artwork by" msgstr "کار هنری به دست" #: src/book-info.js:145 msgid "Color by" msgstr "رنگ به دست" #: src/book-info.js:146 msgid "Contributors" msgstr "مشارکت‌کنندگان" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "شناسه" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "دربارهٔ این کتاب" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "محل %s of %s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "صفحهٔ %s از %s" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "صفحهٔ %s" #: src/book-viewer.js:32 msgid "Footnote" msgstr "پانوشت" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "رفتن به پانوشت" #: src/book-viewer.js:34 msgid "Endnote" msgstr "ته‌نویس" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "رفتن به ته‌نویس" #: src/book-viewer.js:36 msgid "Note" msgstr "نکته" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "رفتن به نکته" #: src/book-viewer.js:38 msgid "Definition" msgstr "تعریف" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "رفتن به تعریف" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "کتاب‌شناسی" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "رفتن به کتاب‌شناسی" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "برداشتن نشانک" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "افزودن نشانک" #: src/book-viewer.js:714 msgid "File not found" msgstr "سند یافت نشد" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "نوع سند پشتیبانی نمی‌شود" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "یادداشت حذف شد" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" "‘%s’\n" "—%s, “%s”، ص. %s" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" "‘%s’\n" "—“%s”، ص. %s" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "‘%s’ (ص. %s)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" "«%s»\n" "— %s، «%s»" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" "«%s»\n" "— «%s»" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "«%s»" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "تصویر از “%s”" #: src/book-viewer.js:904 msgid "Image" msgstr "تصویر" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "از %d" #: src/library.js:47 msgid "Loading" msgstr "بار کردن" #: src/library.js:48 msgid "Failed to Load" msgstr "شکست در بار کردن" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "بازخوانی" #: src/library.js:51 msgid "See All" msgstr "دیدن همه" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "جست‌وجو" #: src/library.js:53 msgid "Filter" msgstr "پالایش" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "بارگیری" #: src/library.js:56 msgid "Buy" msgstr "خرید" #: src/library.js:58 msgid "Preview" msgstr "پیش‌نمایش" #: src/library.js:59 msgid "Sample" msgstr "نمونه" #: src/library.js:60 msgid "Borrow" msgstr "قرض" #: src/library.js:61 msgid "Subscribe" msgstr "اشتراک" #: src/library.js:63 msgid "Free" msgstr "رایگان" #: src/library.js:65 msgid "First" msgstr "نخستین" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "پیشین" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "بعدی" #: src/library.js:68 msgid "Last" msgstr "آخرین" #: src/library.js:70 msgid "Search Terms" msgstr "عبارت‌های جست‌وجو" #: src/library.js:72 msgid "Title" msgstr "عنوان" #: src/library.js:73 msgid "Author" msgstr "نگارنده" #: src/library.js:74 msgid "Contributor" msgstr "مشارکت‌کننده" #: src/library.js:438 msgid "Remove Book?" msgstr "حذف کتاب؟" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "پیشرفت خواندن، یادداشت‌ها و نشانک‌ها برای همیشه از دست خواهند رفت" #: src/library.js:441 msgid "_Cancel" msgstr "_لغو" #: src/library.js:442 msgid "_Remove" msgstr "_برداشتن" #: src/library.js:472 msgid "Failed to Open" msgstr "شکست در گشودن" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "نتوانست پرونده را با برنامهٔ گزیده بگشاید" #: src/library.js:644 msgid "Download Failed" msgstr "بارگیری شکست خورد" #: src/library.js:698 msgid "Rename…" msgstr "تغییر نام…" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "برداشتن" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "تغییر نام" #: src/library.js:725 msgid "Name" msgstr "نام" #: src/library.js:740 msgid "All Books" msgstr "همهٔ کتاب‌ها" #: src/library.js:746 msgid "Add Catalog…" msgstr "افزودن کالانما…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "کتابخانه" #: src/library.js:821 msgid "Catalogs" msgstr "کالانماها" #: src/library.js:864 msgid "Catalog removed" msgstr "کالانما برداشته شد" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "افزودن کالانما" #: src/library.js:952 msgid "Add" msgstr "افزودن" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "می‌توانید کتاب‌ها را از کالانماهای OPDS مرور و بارگیری کنید. دانستن بیش‌تر…" #: src/library.js:961 msgid "URL" msgstr "نشانی" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "برگه" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "واژه‌نامه" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "از ویکی‌واژه، انتشاریافته تحت CC BY-SA مجوز." #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "تعریفی یافت نشد" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "جست‌وجو در ویکی‌واژه" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "ویکی‌پدیا" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "از ویکی‌پدیا، انتشاریافته تحت CC BY-SA مجوز." #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "جست‌وجو در ویکی‌پدیا" #: src/selection-tools.js:59 msgid "Translate" msgstr "ترجمه" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "ترجمه با مترجم گوگل" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "ناتوانی در گرفتن ترجمه" #: src/selection-tools.js:67 msgid "Search…" msgstr "جست‌وجو…" #: src/themes.js:8 msgid "Default" msgstr "پیش‌گزیده" #: src/themes.js:13 msgid "Gray" msgstr "خاکستری" #: src/themes.js:18 msgid "Sepia" msgstr "قرمزقهوه‌ای" #: src/themes.js:23 msgid "Grass" msgstr "چمنی" #: src/themes.js:28 msgid "Cherry" msgstr "گیلاسی" #: src/themes.js:33 msgid "Sky" msgstr "آسمانی" #: src/themes.js:38 msgid "Solarized" msgstr "آقتاب‌زده" #: src/themes.js:43 msgid "Gruvbox" msgstr "معدن" #: src/themes.js:48 msgid "Nord" msgstr "نورد" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "خطای گفتاربه‌متن" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "اطمینان حاصل کنید که Speech Dispatcher بر روی سیستم شما نصب است و کار می‌کند" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "در کلیپ‌بورد کپی شد" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "سبک پررنگ‌سازی" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "حذف" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "فهرست" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "افزودن حاشیه…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "گشودن در پنجرهٔ جدید" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "گشودن با کارهٔ خارجی" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "برون‌ریزی یادداشت‌ها…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "پنجرهٔ جدید" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "گشودن یک رونوشت" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "درون‌ریزی یادداشت‌ها…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "دربارهٔ برگه" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "همهٔ بخش‌ها" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "بخش حاضر" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "فقط تطابق کامل کلمات" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "تطابق شکل" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "تطابق اعراب‌گذاری" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "تنظیمات قلم و چیدمان" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "حالت پیوسته" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "برعکس کردن رنگ‌ها در حالت تاریک" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "خودپنهانی مکان‌نما" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "چاپ…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "بازرس" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "کتاب گشوده نمی‌شود" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "جزییات" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "گشودن سندی دیگر…" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "سنجاق کردن نوار کناری" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "فهرست کتاب" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "جست‌وجو" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "جست‌وجو در کتاب…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "محتوا" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "یادداشت‌ها" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "گزینش متن برای افزودن یادداشت" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "پالودن یادداشت‌ها…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "نشانک‌ها" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "بدون نشانک" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "افزودن نشانک‌هایی برای دیدنشان در این‌جا" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "نتیجه‌ای حاصل نشد" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "تلاش برای جست‌وجویی دیگر" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "نوار کناری" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "دیدن فهرست" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "کوچک‌نمایی" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "بازنشانی زوم" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "بزرگ‌نمایی" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "طبعیت از سبک سیستم" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "سبک روشن" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "سبک تاریک" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "تمام‌صفحه" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "برون‌ریزی یادداشت‌ها" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "برون‌ریزی" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "قالب" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "" "اگر می‌خواهید یادداشت‌ها را در برگه درون‌ریزی کنید، گزینهٔ \"JSON\" را انتخاب کنید" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "مارک‌دون" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "حالت Org" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "رونوشت" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "ذخیره به عنوان…" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "چرخش ۹۰ درجه پادساعت‌گرد" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "چرخش ۹۰ درجه ساعت‌گرد" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "درون‌ریزی یادداشت‌ها" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "درون‌ریزی" #: src/ui/import-dialog.ui:33 msgid "The identifier doesn’t match. These annotations may not be for this book." msgstr "شناسه یافت نشد. شاید یادداشت‌ها برای این کتاب نیستند." #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "درون‌ریزی در هر حال" #: src/ui/library.ui:6 msgid "List View" msgstr "نمایش لیست‌وار" #: src/ui/library.ui:11 msgid "Grid View" msgstr "نمایش شبکه‌ای" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "گشودن…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "فهرست اصلی" #: src/ui/library.ui:110 msgid "Open" msgstr "گشودن" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "فهرست کتابخانه" #: src/ui/library.ui:134 msgid "Search library…" msgstr "جست‌وجوی کتابخانه…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "برگشت" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "پسین" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "هنوز بدون کتاب" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "کتابی را برای آغاز مطالعه باز کنید" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "مکان" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "روایت" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "زمان مانده از بخش" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "زمان مانده از کتاب" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "صفحه" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "بچسبان و برو" #: src/ui/navbar.ui:322 msgid "Section" msgstr "بخش" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "بخش اول" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "بخش قبلی" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "جهش به…" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "بخش بعدی" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "بخش آخر" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "پررنگ‌سازی" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "از اینجا بخوان" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "رونوشت با استناد" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "رونوشت شناسه" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "چاپ انتخاب‌شده…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "سرعت" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "گام" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "پخش/وقفه" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "توقف" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "قلم" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "اندازهٔ قلم" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "اندازهٔ پیش‌فرض قلم" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "کمترین اندازهٔ قلم" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "دستهٔ قلم‌ها" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "قلم پیش‌فرض" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "سرکش‌دار" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "بی‌سرکش" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "پایمالی قلم ناشر" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "قلم سرکش‌دار" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "قلم بی‌سرکش" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "قلم هم‌عرض" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "چیدمان" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "بند" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "ارتفاع خط" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "ترازبندی کامل" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "خط تیره‌ گذاری" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "حاشیه‌ها" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "بیشینهٔ تعداد ستون‌ها" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "بیشترین اندازهٔ هم‌خوان" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "بیشترین پهنای ستون (نوشتار افقی) یا ارتفاع (نوشتار عمودی)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "بیشترین اندازهٔ بلوک" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "بیشترین ارتفاع (نوشتار افقی) یا پهنا (نوشتار عمودی)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "رنگ" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "رفتار" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "پویانمایی کاسته" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "بیننده رایاکتاب" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "رایاکتاب;کتاب;EPUB;بیننده;خواننده;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader tailored " "for GNOME. Immerse yourself in a distraction-free interface, with customization " "features designed to match your unique preferences." msgstr "" "فصلی جدید در خواندن با با برگه، رایاکتاب‌خوان نوین ساخته شده برای گنوم کشف کنید. " "با ویژگی‌های سفارشی سازی طرّاحی شده برای تطبیق با ترجیحات منحصر به فردتان، خود را " "در میانایی بدون حواس‌پرتی غوطه‌ور کنید." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "ویژگی‌هایی همچون:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "گشودن سندهای EPUB، Mobipocket، Kindle، FB2، CBZ و PDF" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "حالت صفحهٔ و حالت پیوسته" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "سفارشی‌سازی قلم و فاصله‌گذاری خط" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "روشن، قرمزقهوه‌ای، تاریک و حالت برعکس" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "لغزندهٔ پیشرفت خواندن با نشانه‌های فصل" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "نشانک‌ها و یادداشت‌ها" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "یافتن در کتاب" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "جست‌وجوی سریع واژه‌نامه" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "درست کردن بریدن پایان فصل هنگام آغاز فصل با شکستن صفحه" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "درست کردن شکاندن نادرست متن در جدول‌ها" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "درست کردن مشکل کارایی کالانماهای OPDS" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "افزودن پشتیبانی از کالانماهای OPDS با نگارش ۲٫۰" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 msgid "Added option to override publisher font" msgstr "افزودن گزینه برای پایمالی قلم ناشر" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "افزودن گزینه برای کاستن پویانمایی" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "افزودن پشتیبانی JPEG XL در CBZ" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "درست کردن گرفتن پرونده از ردیاب در فلت‌پک" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "درست کردن تجزیهٔ تاریخ‌های BCE و non-year-only first-century" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library and " "the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI and " "improved performance." msgstr "" "برگه با یک کتابخانهٔ تفسیر رایاکتاب‌خوان و آخرین کتابخانه‌های سکو، GTK4 و Libadwaita " "به همراه یک رابط کاربری تازه و با کارایی بالاتر از ابتدا بازنویسی شده است." #~ msgid "Book" #~ msgstr "کتاب" #~ msgid "EPUB" #~ msgstr "EPUB" #~ msgid "Ebook" #~ msgstr "رایاکتاب" #~ msgid "Reader" #~ msgstr "خواننده" #~ msgid "Viewer" #~ msgstr "بیننده" #~ msgid "Foliate is modern e-book reader app designed for GNOME." #~ msgstr "برگه یک ابزار رایاکتاب‌خوان طراحی‌شده برای گنوم است." ================================================ FILE: po/fr.po ================================================ # French translations for com.github.johnfactotum.Foliate package. # Copyright (C) 2020 THE com.github.johnfactotum.Foliate'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # Julien Humbert , 2019-2020. # mathieu , 2022. # Irénée THIRION , 2023-2024. # msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2024-01-03 17:11+0100\n" "Last-Translator: Irénée THIRION \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Gtranslator 45.3\n" "Plural-Forms: nplurals=2; plural=(n > 1)\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "Marque-page supprimé" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "Annuler" #: src/annotations.js:437 msgid "Underline" msgstr "Surligner" #: src/annotations.js:438 msgid "Squiggly" msgstr "Ondulations" #: src/annotations.js:439 msgid "Strikethrough" msgstr "Barrer" #: src/annotations.js:440 msgid "Yellow" msgstr "Jaune" #: src/annotations.js:441 msgid "Orange" msgstr "Orange" #: src/annotations.js:442 msgid "Red" msgstr "Rouge" #: src/annotations.js:443 msgid "Magenta" msgstr "Magenta" #: src/annotations.js:444 msgid "Aqua" msgstr "Cyan" #: src/annotations.js:445 msgid "Lime" msgstr "Citron vert" #: src/annotations.js:446 msgid "Custom Color…" msgstr "Couleur personnalisée…" #: src/annotations.js:498 msgid "Custom" msgstr "Personnalisé" #: src/annotations.js:592 msgid "JSON Files" msgstr "Fichiers JSON" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "Tous les fichiers" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "Aucune annotation" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "Le fichier importé ne comporte pas d’annotations" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "Impossible d’importer les annotations" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "Une erreur s’est produite" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "Vous n’avez aucune annotation dans ce livre" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "Annotations pour « %s »" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d annotation" msgstr[1] "%d annotations" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "Fermer" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "Annuler" #: src/app.js:136 msgid "E-Book Files" msgstr "Fichiers E-Book" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "Lisez vos livres électroniques avec style" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "" "Julien Humbert , Mathieu Bousquet " #: src/app.js:414 msgid "Source Code" msgstr "Code source" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Éditeur" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "Publié" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "Mis à jour" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Langue" #: src/book-info.js:139 msgid "Translated by" msgstr "Traduit par" #: src/book-info.js:140 msgid "Edited by" msgstr "Édité par" #: src/book-info.js:141 msgid "Narrated by" msgstr "Conté par" #: src/book-info.js:142 msgid "Illustrated by" msgstr "Illustré par" #: src/book-info.js:143 msgid "Produced by" msgstr "Produit par" #: src/book-info.js:144 msgid "Artwork by" msgstr "Graphisme par" #: src/book-info.js:145 msgid "Color by" msgstr "Couleurs par" #: src/book-info.js:146 msgid "Contributors" msgstr "Contributeurs" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "Identifiant" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "À propos de ce livre" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "Loc. %s sur %s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "Page %s sur %s" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "Page %s" #: src/book-viewer.js:32 msgid "Footnote" msgstr "Note de bas de page" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "Aller à la note de bas de page" #: src/book-viewer.js:34 msgid "Endnote" msgstr "Note de fin" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "Aller à la note de fin" #: src/book-viewer.js:36 msgid "Note" msgstr "Note" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "Aller à la note" #: src/book-viewer.js:38 msgid "Definition" msgstr "Définition" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "Aller à la définition" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "Bibliographie" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "Aller à la bibliographie" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "Supprimer le marque-page" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "Ajouter un marque-page" #: src/book-viewer.js:714 msgid "File not found" msgstr "Fichier non trouvé" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "Type de fichier non pris en charge" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "Annotation supprimée" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" "‘%s’\n" "—%s, “%s”, p. %s" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" "‘%s’\n" "—“%s”, p. %s" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "‘%s’ (p. %s)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" "‘%s’\n" "—%s, “%s”" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" "‘%s’\n" "—“%s”" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "‘%s’" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "Image de « %s »" #: src/book-viewer.js:904 msgid "Image" msgstr "Image" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "sur %d" #: src/library.js:47 msgid "Loading" msgstr "Chargement" #: src/library.js:48 msgid "Failed to Load" msgstr "Chargement échoué" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "Recharger" #: src/library.js:51 msgid "See All" msgstr "Voir tout" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "Rechercher" #: src/library.js:53 msgid "Filter" msgstr "Filtrer" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "Télécharger" #: src/library.js:56 msgid "Buy" msgstr "Acheter" #: src/library.js:58 msgid "Preview" msgstr "Aperçu" #: src/library.js:59 msgid "Sample" msgstr "Échantillon" #: src/library.js:60 msgid "Borrow" msgstr "Emprunter" #: src/library.js:61 msgid "Subscribe" msgstr "Souscrire" #: src/library.js:63 msgid "Free" msgstr "Gratuit" #: src/library.js:65 msgid "First" msgstr "Premier" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "Précédent" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "Suivant" #: src/library.js:68 msgid "Last" msgstr "Dernier" #: src/library.js:70 msgid "Search Terms" msgstr "Termes recherchés" #: src/library.js:72 msgid "Title" msgstr "Titre" #: src/library.js:73 msgid "Author" msgstr "Auteur" #: src/library.js:74 msgid "Contributor" msgstr "Contributeur" #: src/library.js:438 msgid "Remove Book?" msgstr "Supprimer le livre ?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "" "La progression de la lecture, les annotations et les marque-pages seront " "définitivement perdus" #: src/library.js:441 msgid "_Cancel" msgstr "A_nnuler" #: src/library.js:442 msgid "_Remove" msgstr "_Supprimer" #: src/library.js:472 #, fuzzy msgid "Failed to Open" msgstr "Chargement échoué" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "" #: src/library.js:644 msgid "Download Failed" msgstr "Téléchargement échoué" #: src/library.js:698 msgid "Rename…" msgstr "Renommer…" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "Supprimer" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "Renommer" #: src/library.js:725 msgid "Name" msgstr "Nom" #: src/library.js:740 msgid "All Books" msgstr "Tous les livres" #: src/library.js:746 msgid "Add Catalog…" msgstr "Ajouter un catalogue…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "Bibliothèque" #: src/library.js:821 msgid "Catalogs" msgstr "Catalogues" #: src/library.js:864 msgid "Catalog removed" msgstr "Catalogue supprimé" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "Ajouter un catalogue" #: src/library.js:952 msgid "Add" msgstr "Ajouter" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "Vous pouvez parcourir et télécharger des livres depuis les catalogues OPDS. " "En savoir plus…" #: src/library.js:961 msgid "URL" msgstr "URL" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "Dictionnaire" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "De Wiktionary, distribué sous la Licence CC BY-SA." #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "Aucune définition trouvée" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "Rechercher sur Wiktionary" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Wikipédia" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "De Wikipédia, distribué sous la Licence CC BY-SA." #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "Rechercher sur Wikipédia" #: src/selection-tools.js:59 msgid "Translate" msgstr "Traduire" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "Traduction par Google Traduction" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "Impossible de récupérer la traduction" #: src/selection-tools.js:67 #, fuzzy msgid "Search…" msgstr "Rechercher" #: src/themes.js:8 msgid "Default" msgstr "Par défaut" #: src/themes.js:13 msgid "Gray" msgstr "Gris" #: src/themes.js:18 msgid "Sepia" msgstr "Sépia" #: src/themes.js:23 msgid "Grass" msgstr "Herbe" #: src/themes.js:28 msgid "Cherry" msgstr "Cerise" #: src/themes.js:33 msgid "Sky" msgstr "Ciel" #: src/themes.js:38 msgid "Solarized" msgstr "Solarisé" #: src/themes.js:43 msgid "Gruvbox" msgstr "Coffret" #: src/themes.js:48 msgid "Nord" msgstr "Nord" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "Erreur de synthèse vocale" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "" "Assurez que Speech Dispatcher est installé et fonctionnel sur votre système" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "Copié vers le presse-papiers" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "Style de surlignage" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "Supprimer" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "Menu" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "Ajouter une note…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "Ouvrir dans une nouvelle fenêtre" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "Exporter les annotations…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "Nouvelle fenêtre" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "Ouvrir une copie" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "Importer les annotations…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "À propos de Foliate" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "Tous les chapitres" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "Chapitre actuel" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "Mots entiers uniquement" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "Correspondre à la casse" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "Signes diacritiques" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "Paramètre de police et mise en page" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "Mode défilement" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "Inverser les couleurs en mode sombre" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "Masquer automatiquement le curseur" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "Imprimer…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "Inspecteur" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "Le livre ne peut être ouvert" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "Détails" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "Ouvrir un autre fichier…" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "Épingler la barre latérale" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "Menu du livre" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "Rechercher" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "Rechercher dans le livre…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "Contenu" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Annotations" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "Sélectionnez du texte pour ajouter des annotations" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "Filtrer les annotations…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Marque-pages" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "Aucun marque-page" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "Ajoutez des marque-pages pour les visualiser ici" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "Aucun résultat trouvé" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "Essayez une autre recherche" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "Barre latérale" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "Menu de visualisation" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "Rétrécir la vue" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "Réinitialiser le zoom" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "Agrandir" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "Suivre le thème système" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "Style clair" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "Style sombre" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Plein écran" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "Exporter les annotations" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "Exporter" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "Format" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "" "Choisissez « JSON » si vous comptez ré-importer vos annotations vers Foliate" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "Markdown" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "Org-mode" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Copier" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "Enregistrer sous…" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "Rotation de 90° en sens antihoraire" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "Rotation de 90° en sens horaire" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "Importer des annotations" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "Importer" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "" "L’identifiant ne correspond pas. Ces annotations peuvent être celles d’un " "autre livre." #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "Importer quand même" #: src/ui/library.ui:6 msgid "List View" msgstr "Vue en liste" #: src/ui/library.ui:11 msgid "Grid View" msgstr "Vue en grille" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Ouvrir…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "Menu principal" #: src/ui/library.ui:110 msgid "Open" msgstr "Ouvrir" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "Menu de la bibliothèque" #: src/ui/library.ui:134 msgid "Search library…" msgstr "Rechercher dans la bibliothèque" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "Retour" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "Rétablir" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "Aucun livre" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "Ouvrez un livre pour commencer à lire" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "Position" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "Narration" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "Temps restant pour le chapitre" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "Temps restant pour le livre" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "Page" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "Copier et aller" #: src/ui/navbar.ui:322 msgid "Section" msgstr "Chapitre" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "Premier chapitre" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "Chapitre précédent" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "Aller à…" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "Chapitre suivant" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "Dernier chapitre" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Surligner" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "Lire à partir d’ici" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "Copier avec Citation" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "Copier l’identifiant" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "Imprimer la sélection…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "Vitesse" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "Ton" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "Lecture/Pause" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "Arrêter" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "Police" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "Taille de police" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "Taille de police par défaut" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "Taille de police minimale" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "Famille de police" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "Police par défaut" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "Sérif" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "Sans-sérif" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "Outrepasser la police de l’éditeur" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "Police sérif" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "Police sans-sérif" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "Police monospace" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "Disposition" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "Paragraphe" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "Hauteur de ligne" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "Justifié" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "Césure automatique" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Marges" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "Nombre maximal de colonnes" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "Taille maximale de la ligne" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "" "Largeur (lecture horizontale) ou hauteur (lecture verticale) maximale de la " "colonne" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "Taille maximale des paragraphes" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "Hauteur (lecture horizontale) ou largeur (lecture verticale) maximale" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "Couleur" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "Comportement" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "Réduire les animations" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "Lecteur de livres électroniques" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "Ebook;Livre;EPUB;Liseuse;Lecteur;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "Ouvrez un nouveau chapitre dans vos lecture avec Foliate, le lecteur moderne " "de livres électroniques conçu pour GNOME. Immergez-vous dans une interface " "sans distractions, personnalisable pour correspondre à vos seules " "préférences." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "Fonctionnalités inclues :" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "Ouvrez des fichiers EPUB, Mobipocket, Kindle, FB2, CBZ, et PDF" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "Modes pagination et défilement" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "Personnaliser la police et l’espacement des lignes" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "Modes clair, sépia, sombre et inversé" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "Barre de progression de lecture avec marquage des chapitres" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "Marque-pages et annotations" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "Recherche dans le livre" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "Vérification dans le dictionnaire" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 #, fuzzy msgid "Added option to override publisher font" msgstr "Outrepasser la police de l’éditeur" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "Foliate a été entièrement réécri avec un nouveau moteur de rendu des livres " "et les dernières bibliothèques de la plateforme, GTK4 et Libadwaita, ainsi " "qu’une interface rafraîchie et des performances améliorées." #~ msgid "Book" #~ msgstr "Livre" #~ msgid "EPUB" #~ msgstr "EPUB" #~ msgid "Ebook" #~ msgstr "Ebook" #~ msgid "Reader" #~ msgstr "Lecteur" #~ msgid "Viewer" #~ msgstr "Visionneur" ================================================ FILE: po/ga.po ================================================ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2025-07-04 17:50+0100\n" "Last-Translator: Aindriú Mac Giolla Eoin \n" "Language-Team: \n" "Language: ga\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n>=3 && n<=6 ? 2 : " "n>=7 && n<=10 ? 3 : 4);\n" "X-Generator: Poedit 3.4.2\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "Scriosadh leabharmharc" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "Cealaigh" #: src/annotations.js:437 msgid "Underline" msgstr "Líne faoi" #: src/annotations.js:438 msgid "Squiggly" msgstr "Scriobláil" #: src/annotations.js:439 msgid "Strikethrough" msgstr "Stríoc tríd" #: src/annotations.js:440 msgid "Yellow" msgstr "Buí" #: src/annotations.js:441 msgid "Orange" msgstr "Oráiste" #: src/annotations.js:442 msgid "Red" msgstr "Dearg" #: src/annotations.js:443 msgid "Magenta" msgstr "Maigeanta" #: src/annotations.js:444 msgid "Aqua" msgstr "Muirghorm" #: src/annotations.js:445 msgid "Lime" msgstr "Líoma" #: src/annotations.js:446 msgid "Custom Color…" msgstr "Dath Saincheaptha…" #: src/annotations.js:498 msgid "Custom" msgstr "Saincheaptha" #: src/annotations.js:592 msgid "JSON Files" msgstr "Comhaid JSON" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "Gach Comhad" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "Gan aon nótaí" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "Níl aon nótaí sa chomhad allmhairithe" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "Ní féidir nótaí a allmhairiú" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "Tharla earráid" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "Níl aon nótaí agat don leabhar seo" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "Nótaí le haghaidh “%s”" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d Anótáil" msgstr[1] "%d Anótálacha" msgstr[2] "%d Anótálacha" msgstr[3] "%d Anótálacha" msgstr[4] "%d Anótálacha" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "Dún" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "Cealaigh" #: src/app.js:136 msgid "E-Book Files" msgstr "Comhaid Ríomhleabhar" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "Léigh ríomhleabhair i stíl" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "creidmheasanna-aistritheora" #: src/app.js:414 msgid "Source Code" msgstr "Cód Foinse" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Foilsitheoir" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "Foilsithe" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "Nuashonraithe" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Teanga" #: src/book-info.js:139 msgid "Translated by" msgstr "Aistrithe ag" #: src/book-info.js:140 msgid "Edited by" msgstr "Eagarthóireacht déanta ag" #: src/book-info.js:141 msgid "Narrated by" msgstr "Inste ag" #: src/book-info.js:142 msgid "Illustrated by" msgstr "Léirithe ag" #: src/book-info.js:143 msgid "Produced by" msgstr "Arna tháirgeadh ag" #: src/book-info.js:144 msgid "Artwork by" msgstr "Saothar ealaíne le" #: src/book-info.js:145 msgid "Color by" msgstr "Dath de réir" #: src/book-info.js:146 msgid "Contributors" msgstr "Rannpháirtithe" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "Aitheantóir" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "Maidir leis an Leabhar seo" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "Suíomh %s de %s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "Leathanach %s de %s" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "Leathanach %s" #: src/book-viewer.js:32 msgid "Footnote" msgstr "Fonóta" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "Téigh go dtí an Fonóta" #: src/book-viewer.js:34 msgid "Endnote" msgstr "Deireadh-Nóta" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "Téigh go dtí Deireadh-Nóta" #: src/book-viewer.js:36 msgid "Note" msgstr "Nóta" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "Téigh go dtí an Nóta" #: src/book-viewer.js:38 msgid "Definition" msgstr "Sainmhíniú" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "Téigh go dtí an Sainmhíniú" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "Leabharliosta" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "Téigh go dtí an Leabharliosta" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "Bain leabharmharc" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "Cuir leabharmharc leis" #: src/book-viewer.js:714 msgid "File not found" msgstr "Níor aimsíodh an comhad" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "Ní thacaítear le cineál comhaid" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "Scriosadh an nóta" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" "‘%s’\n" "—%s, “%s”, p. %s" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" "‘%s’\n" "—“%s”, p. %s" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "‘%s’ (p. %s)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" "‘%s’\n" "—%s, “%s”" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" "‘%s’\n" "—“%s”" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "‘%s’" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "Íomhá ó “%s”" #: src/book-viewer.js:904 msgid "Image" msgstr "Íomhá" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "de %d" #: src/library.js:47 msgid "Loading" msgstr "Ag luchtú" #: src/library.js:48 msgid "Failed to Load" msgstr "Theip ar an luchtú" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "Athlódáil" #: src/library.js:51 msgid "See All" msgstr "Féach ar Gach Rud" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "Cuardaigh" #: src/library.js:53 msgid "Filter" msgstr "Scagaire" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "Íoslódáil" #: src/library.js:56 msgid "Buy" msgstr "Ceannaigh" #: src/library.js:58 msgid "Preview" msgstr "Réamhamharc" #: src/library.js:59 msgid "Sample" msgstr "Sampla" #: src/library.js:60 msgid "Borrow" msgstr "Faigh ar iasacht" #: src/library.js:61 msgid "Subscribe" msgstr "Liostáil" #: src/library.js:63 msgid "Free" msgstr "Saor" #: src/library.js:65 msgid "First" msgstr "Ar dtús" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "Roimhe Seo" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "Ar Aghaidh" #: src/library.js:68 msgid "Last" msgstr "Deireanach" #: src/library.js:70 msgid "Search Terms" msgstr "Téarmaí Cuardaigh" #: src/library.js:72 msgid "Title" msgstr "Teideal" #: src/library.js:73 msgid "Author" msgstr "Údar" #: src/library.js:74 msgid "Contributor" msgstr "Rannpháirtí" #: src/library.js:438 msgid "Remove Book?" msgstr "Bain an leabhar?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "" "Caillfear dul chun cinn léitheoireachta, nótaí agus leabharmharcanna go buan" #: src/library.js:441 msgid "_Cancel" msgstr "_Cealaigh" #: src/library.js:442 msgid "_Remove" msgstr "_Bain" #: src/library.js:472 msgid "Failed to Open" msgstr "Theip ar oscailt" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "Níorbh fhéidir an comhad a oscailt leis an bhfeidhmchlár roghnaithe" #: src/library.js:644 msgid "Download Failed" msgstr "Theip ar an Íoslódáil" #: src/library.js:698 msgid "Rename…" msgstr "Athainmnigh…" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "Bain" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "Athainmnigh" #: src/library.js:725 msgid "Name" msgstr "Ainm" #: src/library.js:740 msgid "All Books" msgstr "Gach Leabhar" #: src/library.js:746 msgid "Add Catalog…" msgstr "Cuir Catalóg leis…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "Leabharlann" #: src/library.js:821 msgid "Catalogs" msgstr "Catalóga" #: src/library.js:864 msgid "Catalog removed" msgstr "Baineadh an catalóg" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "Cuir Catalóg leis" #: src/library.js:952 msgid "Add" msgstr "Cuir leis" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "Is féidir leat brabhsáil agus leabhair a íoslódáil ó chatalóga OPDS. Tuilleadh Eolais…" #: src/library.js:961 msgid "URL" msgstr "URL" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "Foclóir" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "Ó Vicífhoclóir, eisithe faoin gceadúnas CC BY-SA." #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "Níor aimsíodh aon sainmhínithe" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "Cuardaigh ar Vicífhoclóir" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Vicipéid" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "Ó Wikipedia, arna scaoileadh faoin Ceadúnas CC BY-SA." #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "Cuardaigh ar Vicipéid" #: src/selection-tools.js:59 msgid "Translate" msgstr "Aistrigh" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "Aistriúchán le Google Translate" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "Ní féidir aistriúchán a aisghabháil" #: src/selection-tools.js:67 msgid "Search…" msgstr "Cuardaigh…" #: src/themes.js:8 msgid "Default" msgstr "Réamhshocrú" #: src/themes.js:13 msgid "Gray" msgstr "Liath" #: src/themes.js:18 msgid "Sepia" msgstr "Séipia" #: src/themes.js:23 msgid "Grass" msgstr "Féar" #: src/themes.js:28 msgid "Cherry" msgstr "Silín" #: src/themes.js:33 msgid "Sky" msgstr "Spéir" #: src/themes.js:38 msgid "Solarized" msgstr "Solarized" #: src/themes.js:43 msgid "Gruvbox" msgstr "Gruvbox" #: src/themes.js:48 msgid "Nord" msgstr "Nord" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "Earráid Téacs-go-Caint" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "" "Cinntigh go bhfuil Speech Dispatcher suiteáilte agus ag obair ar do chóras" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "Cóipeáilte chuig an ghearrthaisce" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "Stíl Aibhsithe" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "Scrios" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "Roghchlár" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "Cuir Nóta leis…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "Oscail i bhFuinneog Nua" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "Oscail le hAip Sheachtrach" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "Easpórtáil Anótálacha…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "Fuinneog Nua" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "Oscail Cóip" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "Iompórtáil Nótaí…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "Maidir le Foliate" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "Gach Roinn" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "An Rannóg Reatha" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "Meaitseáil Focail Iomlána Amháin" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "Cás Meaitseála" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "Comhoiriúnú Diaicritic" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "Socruithe Cló agus Leagan Amach" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "Mód Scrollaithe" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "Inbhéartaigh Dathanna i Mód Dorcha" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "Cúrsóir Uathoibríoch" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "Priontáil…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "Cigire" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "Ní féidir an leabhar a oscailt" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "Sonraí" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "Oscail Comhad Eile…" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "Priontáil an barra taoibh" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "Roghchlár Leabhar" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "Aimsigh" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "Aimsigh sa leabhar…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "Ábhar" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Anótálacha" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "Roghnaigh roinnt téacs le hanótálacha a chur leis" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "Scag anótálacha…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Leabharmharcanna" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "Gan Leabharmharcanna" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "Cuir roinnt leabharmharcanna leis chun iad a fheiceáil anseo" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "Níor aimsíodh aon torthaí" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "Bain triail as cuardach difriúil" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "Barra taobh" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "Féach ar an Roghchlár" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "Zúmáil Amach" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "Athshocraigh Zúmáil" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "Zúmáil Isteach" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "Lean Stíl an Chórais" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "Stíl Éadrom" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "Stíl Dorcha" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Lánscáileán" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "Easpórtáil Anótálacha" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "Easpórtáil" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "Formáid" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "" "Roghnaigh “JSON” má tá sé ar intinn agat anótálacha a allmhairiú ar ais " "chuig Foliate" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "Markdown" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "Mód Eagraíochta" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Cóipeáil" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "Sábháil Mar…" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "Rothlaigh 90° Frith deiseal" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "Rothlaigh 90° deiseal" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "Iompórtáil Nótaí" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "Iompórtáil" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "" "Ní hionann an t-aitheantóir. B’fhéidir nach don leabhar seo atá na nótaí seo." #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "Iompórtáil Ar Aon Slí" #: src/ui/library.ui:6 msgid "List View" msgstr "Amharc Liosta" #: src/ui/library.ui:11 msgid "Grid View" msgstr "Radharc Eangaí" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Oscail…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "Príomh-Roghchlár" #: src/ui/library.ui:110 msgid "Open" msgstr "Oscail" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "Roghchlár na Leabharlainne" #: src/ui/library.ui:134 msgid "Search library…" msgstr "Cuardaigh an leabharlann…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "Ar ais" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "Ar Aghaidh" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "Gan aon leabhair fós" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "Oscail leabhar le tosú ag léamh" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "Suíomh" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "Insint" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "Am atá fágtha sa Rannóg" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "Am atá fágtha sa Leabhar" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "Leathanach" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "Greamaigh agus Téigh" #: src/ui/navbar.ui:322 msgid "Section" msgstr "Roinn" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "An Chéad Roinn" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "An Roinn Roimhe Seo" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "Léim go…" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "An Chéad Roinn Eile" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "An Roinn Deireanach" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Aibhsigh" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "Labhair as Anseo" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "Cóipeáil le Lua" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "Cóipeáil an Aitheantóir" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "Rogha Priontála…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "Luas" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "Páirc" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "Seinn/Sos" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "Stad" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "Cló" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "Méid Cló" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "Méid Cló Réamhshocraithe" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "Íosmhéid Cló" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "Teaghlach Clónna" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "Cló Réamhshocraithe" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "Serif" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "Sans-serif" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "Sáraigh Cló an Fhoilsitheora" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "Cló Serif" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "Cló Sans-Serif" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "Cló Aonspáis" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "Leagan Amach" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "Paragraf" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "Airde Líne" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "Fírinniú Iomlán" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "Fleiscín uathoibríoch" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Ciumhaiseanna" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "Uasmhéid na gColún" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "Uasmhéid Inlíne" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "" "Leithead uasta an cholúin (scríbhneoireacht chothrománach) nó airde " "(scríbhneoireacht ingearach)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "Uasmhéid Bloc" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "" "Airde uasta (scríbhneoireacht chothrománach) nó leithead (scríbhneoireacht " "ingearach)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "Dath" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "Iompar" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "Laghdaigh Beochan" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "Amharcóir Ríomhleabhar" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "Ríomhleabhar;Leabhar;EPUB;Amharcóir;Léitheoir;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "Faigh amach caibidil nua sa léitheoireacht le Foliate, an léitheoir " "ríomhleabhar nua-aimseartha atá saincheaptha do GNOME. Tum thú féin i " "gcomhéadan saor ó chur isteach, le gnéithe saincheaptha atá deartha chun " "freastal ar do chuid sainroghanna uathúla." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "Áirítear leis na gnéithe seo a leanas:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "Oscail comhaid EPUB, Mobipocket, Kindle, FB2, CBZ, agus PDF" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "Mód leathanaigh agus mód scrollaigh" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "Saincheap an cló agus an spásáil líne" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "Mód geal, seipia, dorcha, agus inbhéartaithe" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "Sleamhnán dul chun cinn léitheoireachta le marcanna caibidle" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "Leabharmharcanna agus nótaí" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "Aimsigh sa leabhar" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "Cuardach tapa foclóra" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "" "Socraíodh deireadh na caibidle a ghearradh nuair a thosaíonn an chaibidil le " "briseadh leathanaigh" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "Deisíodh fillteán téacs mícheart i dtáblaí" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "Deisíodh fadhb feidhmíochta le catalóga OPDS" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "" "Tacaíocht curtha leis do chatalóga OPDS, agus tacaíocht do OPDS 2.0 anois" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 msgid "Added option to override publisher font" msgstr "Rogha curtha leis chun cló an fhoilsitheora a shárú" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "Rogha curtha leis chun beochan a laghdú" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "Tacaíocht curtha leis do JPEG XL i CBZ" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "Socraíodh comhad a fháil ó Tracker i Flatpak" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "" "Parsáil shocraithe ar dhátaí nach bhfuil bliain amháin iontu ón gcéad aois " "agus ón Roimh Chomh-Ré (RCR)" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "Tá Foliate athscríofa ón tús le leabharlann rindreála ríomhleabhar nua agus " "na leabharlanna ardáin is déanaí, GTK 4 agus Libadwaita, le comhéadan " "úsáideora athnuaite agus feidhmíocht fheabhsaithe." ================================================ FILE: po/gl.po ================================================ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # # josé m. , 2024. msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2025-12-21 08:21+0200\n" "Last-Translator: josé m. \n" "Language-Team: Galician <>\n" "Language: gl_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: Lokalize 22.12.3\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "Marcador eliminado" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "Desfacer" #: src/annotations.js:437 msgid "Underline" msgstr "Subliñar" #: src/annotations.js:438 msgid "Squiggly" msgstr "Ondulado" #: src/annotations.js:439 msgid "Strikethrough" msgstr "Riscar" #: src/annotations.js:440 #, fuzzy msgid "Yellow" msgstr "Amarelo" #: src/annotations.js:441 msgid "Orange" msgstr "Laranxa" #: src/annotations.js:442 msgid "Red" msgstr "Vermello" #: src/annotations.js:443 msgid "Magenta" msgstr "Maxenta" #: src/annotations.js:444 msgid "Aqua" msgstr "Auga" #: src/annotations.js:445 msgid "Lime" msgstr "Lima" #: src/annotations.js:446 msgid "Custom Color…" msgstr "Cor personalizada" #: src/annotations.js:498 msgid "Custom" msgstr "Personalizar" #: src/annotations.js:592 msgid "JSON Files" msgstr "Ficheiros JSON" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "Todos os Ficheiros" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "Sen Notas" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "O ficheiro importado non contén notas" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "Non se puideron importar as Notas" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "Aconteceu un erro" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "Non tes notas para este libro" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "Notas para \"%s\"" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d Nota" msgstr[1] "%d Notas" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "Fechar" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "Desbotar" #: src/app.js:136 msgid "E-Book Files" msgstr "Ficheiros Libro-e" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "Ler libros-e con estilo" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "xmgz.eu" #: src/app.js:414 msgid "Source Code" msgstr "Código Fonte" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Editorial" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "Publicado" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "Actualizado" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Idioma" #: src/book-info.js:139 msgid "Translated by" msgstr "Traducido por" #: src/book-info.js:140 msgid "Edited by" msgstr "Editado por" #: src/book-info.js:141 msgid "Narrated by" msgstr "Narrado por" #: src/book-info.js:142 msgid "Illustrated by" msgstr "Ilustrado por" #: src/book-info.js:143 msgid "Produced by" msgstr "Producido por" #: src/book-info.js:144 msgid "Artwork by" msgstr "Arte gráfica por" #: src/book-info.js:145 msgid "Color by" msgstr "Cor por" #: src/book-info.js:146 msgid "Contributors" msgstr "Colaboracións" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "Identificador" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "Sobre este Libro" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "Loc. %s de %s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "Páxina %s de %s" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "Páxina %s" #: src/book-viewer.js:32 msgid "Footnote" msgstr "Nota ao pé" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "Ir á Nota ao pé" #: src/book-viewer.js:34 msgid "Endnote" msgstr "Nota final" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "Ir á Nota final" #: src/book-viewer.js:36 msgid "Note" msgstr "Nota" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "Ir á Nota" #: src/book-viewer.js:38 msgid "Definition" msgstr "Definición" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "Ir á definición" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "Bibliografía" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "Ir á Bibliografía" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "Retirar marcador" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "Engadir marcador" #: src/book-viewer.js:714 msgid "File not found" msgstr "Non se atopa o ficheiro" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "Sen soporte para o tipo de ficheiro" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "Eliminouse a Nota" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" "‘%s’\n" "—%s, “%s”, p. %s" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" "‘%s’\n" "—“%s”, p. %s" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "‘%s’ (p. %s)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" "‘%s’\n" "—%s, “%s”" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" "‘%s’\n" "—“%s”" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "‘%s’" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "Imaxe desde \"%s\"" #: src/book-viewer.js:904 msgid "Image" msgstr "Imaxe" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "de %d" #: src/library.js:47 msgid "Loading" msgstr "Cargando" #: src/library.js:48 msgid "Failed to Load" msgstr "Fallou a Carga" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "Recargar" #: src/library.js:51 msgid "See All" msgstr "Ver Todos" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "Buscar" #: src/library.js:53 msgid "Filter" msgstr "Filtrar" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "Descargar" #: src/library.js:56 msgid "Buy" msgstr "Mercar" #: src/library.js:58 msgid "Preview" msgstr "Vista Previa" #: src/library.js:59 msgid "Sample" msgstr "Mostra" #: src/library.js:60 msgid "Borrow" msgstr "Emprestar" #: src/library.js:61 msgid "Subscribe" msgstr "Subscribir" #: src/library.js:63 msgid "Free" msgstr "Gratuíto" #: src/library.js:65 msgid "First" msgstr "Primeira" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "Anterior" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "Seguinte" #: src/library.js:68 msgid "Last" msgstr "Última" #: src/library.js:70 msgid "Search Terms" msgstr "Termos a buscar" #: src/library.js:72 msgid "Title" msgstr "Título" #: src/library.js:73 msgid "Author" msgstr "Autoría" #: src/library.js:74 msgid "Contributor" msgstr "Colaboración" #: src/library.js:438 msgid "Remove Book?" msgstr "Retirar Libro?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "Perderás irremediablemente as notas, marcadores e progreso da lectura" #: src/library.js:441 msgid "_Cancel" msgstr "_Cancelar" #: src/library.js:442 msgid "_Remove" msgstr "_Retirar" #: src/library.js:472 #, fuzzy msgid "Failed to Open" msgstr "Fallo ao Abrir" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "Non se puido abrir o ficheiro coa aplicación seleccionada" #: src/library.js:644 msgid "Download Failed" msgstr "Fallou a descarga" #: src/library.js:698 msgid "Rename…" msgstr "Cambiar nome..." #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "Retirar" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "Cambar nome" #: src/library.js:725 msgid "Name" msgstr "Nome" #: src/library.js:740 msgid "All Books" msgstr "Todos os libros" #: src/library.js:746 msgid "Add Catalog…" msgstr "Engadir Catálogo…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "Biblioteca" #: src/library.js:821 msgid "Catalogs" msgstr "Catálogos" #: src/library.js:864 msgid "Catalog removed" msgstr "Retirouse o catálogo" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "Engadir catálogo" #: src/library.js:952 msgid "Add" msgstr "Engadir" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "Podes ollar e descargar libros de catálogos tipo OPDS. Saber Máis…" #: src/library.js:961 msgid "URL" msgstr "URL" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "Dicionario" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "Desde Wiktionary, publicado con licenza CC BY-SA License." #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "Non se atopan definicións" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "Buscar en Wiktionary" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Wikipedia" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "Desde Wikipedia, publicado con licenza CC BY-SA License." #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "Buscar na Wikipedia" #: src/selection-tools.js:59 msgid "Translate" msgstr "Traducir" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "Traducido por Google Translate" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "Non se obtivo unha tradución" #: src/selection-tools.js:67 #, fuzzy msgid "Search…" msgstr "Buscar…" #: src/themes.js:8 msgid "Default" msgstr "Por defecto" #: src/themes.js:13 msgid "Gray" msgstr "Gris" #: src/themes.js:18 msgid "Sepia" msgstr "Sepia" #: src/themes.js:23 msgid "Grass" msgstr "Herba" #: src/themes.js:28 msgid "Cherry" msgstr "Cereixa" #: src/themes.js:33 msgid "Sky" msgstr "Ceo" #: src/themes.js:38 msgid "Solarized" msgstr "Solarizado" #: src/themes.js:43 msgid "Gruvbox" msgstr "Gruvbox" #: src/themes.js:48 msgid "Nord" msgstr "Nord" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "Erro no Texto-a-Fala" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "Comproba que Speech Dispatcher está instalada e activa no teu sistema" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "Copiado ao portapapeis" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "Estilo ao Resaltar" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "Eliminar" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "Menú" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "Engadir Nota…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "Abrir en Nova xanela" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "Abrir con App Externa" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "Exportar Notas…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "Nova xanela" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "Abrir unha copia" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "Importar Notas…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "Sobre Foliate" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "Todas as Seccións" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "Sección actual" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "Só concordancias completas" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "Distingue Maiús/Min" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "Distingue Diacríticas" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "Axustes de Letra e Disposición" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "Modo de desprazamento" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "Inverter Cores no Modo Escuro" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "Agochar cursor automaticamente" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "Imprimir…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "Inspector" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "Non se puido abrir o libro" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "Detalles" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "Abrir outro ficheiro…" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "Fixar Panel lateral" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "Menú do Libro" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "Atopar" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "Atopar no libro…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "Contidos" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Notas" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "Selecciona texto para engadir notas" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "Filtrar notas…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Marcadores" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "Sen Marcadores" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "Engade algúns Marcadores e veralos aquí" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "Non hai resultados" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "Intenta outra busca" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "Panel lateral" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "Ver Menú" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "Afastar" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "Restablecer Zoom" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "Achegar" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "Seguir Estilo do sistema" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "Estilo claro" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "Estilo escuro" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Pantalla completa" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "Exportar Notas" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "Exportar" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "Formato" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "Elixe “JSON” se pretendes volver a importar as notas en Foliate" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "Markdown" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "Org Mode" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Copiar" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "Gardar Como…" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "Rotar 90° sentido contrario reloxo" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "Rotar 90° sentido reloxo" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "Importar Notas" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "Importar" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "" "Non concorda o identificador. As notas poderían pertencer a outro libro." #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "Importar igualmente" #: src/ui/library.ui:6 msgid "List View" msgstr "Ver como lista" #: src/ui/library.ui:11 msgid "Grid View" msgstr "Ver como grella" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Abrir…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "Menú principal" #: src/ui/library.ui:110 msgid "Open" msgstr "Abrir" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "Menú da Biblioteca" #: src/ui/library.ui:134 msgid "Search library…" msgstr "Buscar na biblioteca…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "Volver" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "Avanzar" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "Aínda non hai libros" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "Abre un libro e comeza a ler" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "Localización" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "Narración" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "Tempo restante na Sección" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "Tempo para finalizar o Libro" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "Páxina" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "Pegar e Ir" #: src/ui/navbar.ui:322 msgid "Section" msgstr "Sección" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "Primeira Sección" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "Sección Anterior" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "Ir a…" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "Sección seguinte" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "Última sección" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Resaltar" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "En fala desde aquí" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "Copiar con Cita" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "Copiar Identificador" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "Imprimir Selección…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "Velocidade" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "Ton" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "Reproducir/Pausa" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "Deter" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "Tipografía" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "Tamaño da letra" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "Tamaño por defecto" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "Tamaño mínimo" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "Familia da letra" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "Letra por defecto" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "Serif" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "Sans-serif" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "Obviar letra da editorial" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "Letra Serif" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "Letra Sans-Serif" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "Letra Monoespazo" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "Disposición" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "Parágrafo" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "Altura da liña" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "Xustificación completa" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "Guións" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Marxes" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "Número máximo de Columnas" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "Tamaño máximo entre liñas" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "" "Anchura máxima da columna (escritura horizontal) ou altura (escritura " "vertical)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "Tamaño máximo do bloque" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "Máxima altura (escritura horizontal) ou anchura (escritura vertical)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "Cor" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "Comportamento" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "Reducir animacións" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "Lector de libros electrónicos" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "Ebook;Book;EPUB;Viewer;Reader;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "Desfruta de novos xeitos de lectura con Foliate, un lector moderno de libros " "electrónicos á medida de GNOME. Mergúllate na lectura grazas á interface " "libre de distraccións, cunha interface personalizable para adaptarse ás túas " "preferencias." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "Características:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "Abre EPUB, Mobipocket, Kindle, FB2, CBZ, e ficheiros PDF" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "Modos por Paxinación e Desprazamento" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "Tipo de letra e espazos de liña personalizados" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "Modos claro, escuro, sepia e invertido" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "Barra de progreso da lectura con marcas dos capítulos" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "Marcadores e notas" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "Buscar no libro" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "Ollada rápida ao dicionario" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "Arranxo do final do corte ao final do capítulo cando comeza cun salto de liña" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "Arranxo do problema cos textos nas táboas" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "Arranxo dos problemas de rendemento con catálogos OPDS" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "Engadida compatibilidade con catálogos OPDS, agora compatible con OPDS 2.0" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 #, fuzzy msgid "Added option to override publisher font" msgstr "Engadida a opción para obviar o tipo de letra da editorial" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "Engadida opción para reducir as animacións" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "Engadida compatibilidade con JPEG XL nos CBZ" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "Arranxo do problema ao obter o ficheiros de Tracker en Flatpak" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "Arranxo ao procesar datas do primeiro século e anteriores" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "Foliate foi recreado desde os cimentos cunha nova biblioteca para mostrar " "libros electrónicos e as últimas bibliotecas da plataforma, GTK 4 e " "Libadwaita, cunha interface anovada e melloras no rendemento." #~ msgid "Book" #~ msgstr "Libro" #~ msgid "EPUB" #~ msgstr "EPUB" #~ msgid "Ebook" #~ msgstr "Ebook" #~ msgid "Reader" #~ msgstr "Lector" #~ msgid "Viewer" #~ msgstr "Visualizador" ================================================ FILE: po/he.po ================================================ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # FIRST AUTHOR , YEAR. # Yosef Or Boczko , 2024. # msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2024-01-11 17:43+0200\n" "Last-Translator: Yosef Or Boczko \n" "Language-Team: Hebrew\n" "Language: he\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n==2 ? 1 : n>10 && n%10==0 ? " "2 : 3)\n" "X-Generator: Gtranslator 45.3\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "נמחקה סימנייה" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "ביטול" #: src/annotations.js:437 msgid "Underline" msgstr "קו תחתי" #: src/annotations.js:438 msgid "Squiggly" msgstr "קו תחתי משורבט" #: src/annotations.js:439 msgid "Strikethrough" msgstr "קו חוצה" #: src/annotations.js:440 msgid "Yellow" msgstr "צהוב" #: src/annotations.js:441 msgid "Orange" msgstr "כתום" #: src/annotations.js:442 msgid "Red" msgstr "אדום" #: src/annotations.js:443 msgid "Magenta" msgstr "מגנטה" #: src/annotations.js:444 msgid "Aqua" msgstr "מים" #: src/annotations.js:445 msgid "Lime" msgstr "ליים" #: src/annotations.js:446 msgid "Custom Color…" msgstr "בחירת צבע משלך…" #: src/annotations.js:498 msgid "Custom" msgstr "התאמה אישית" #: src/annotations.js:592 msgid "JSON Files" msgstr "קובצי JSON" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "כל הקבצים" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "אין הסברים" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "אין הסברים בקובץ המיובא" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "לא ניתן לייבא הסברים" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "אירעה שגיאה" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "אין הסברים כלל בספר זה" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "הסברים עבור „%s”" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "הסבר אחד" msgstr[1] "שני הסברים" msgstr[2] "%d הסברים" msgstr[3] "%d הסברים" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "סגירה" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "ביטול" #: src/app.js:136 msgid "E-Book Files" msgstr "קובצי ספרים אלקטרוניים" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "לקרוא ספרים אלקטרוניים בסטייל" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "" "ירון שהרבני \n" "יוסף אור בוצ׳קו " #: src/app.js:414 msgid "Source Code" msgstr "קוד מקור" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "הוצאה לאור" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "פורסם" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "עודכן" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "שפה" #: src/book-info.js:139 msgid "Translated by" msgstr "תורגם על ידי" #: src/book-info.js:140 msgid "Edited by" msgstr "נערך על ידי" #: src/book-info.js:141 msgid "Narrated by" msgstr "קריינות על ידי" #: src/book-info.js:142 msgid "Illustrated by" msgstr "איור על ידי" #: src/book-info.js:143 msgid "Produced by" msgstr "הופק על ידי" #: src/book-info.js:144 msgid "Artwork by" msgstr "אומנות על ידי" #: src/book-info.js:145 msgid "Color by" msgstr "צבע על ידי" #: src/book-info.js:146 msgid "Contributors" msgstr "תורמים" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "מזהה" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "על הספר הזה" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "מיקום %s מתוך %s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "עמוד %s מתוך %s" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "עמוד %s" #: src/book-viewer.js:32 msgid "Footnote" msgstr "הערת שוליים" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "מעבר להערת שוליים" #: src/book-viewer.js:34 msgid "Endnote" msgstr "הערם סיום" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "מעבר להערת סיום" #: src/book-viewer.js:36 msgid "Note" msgstr "הערה" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "מעבר להערה" #: src/book-viewer.js:38 msgid "Definition" msgstr "הגדרה" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "מעבר להגדרה" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "ביבליוגרפיה" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "מעבר לביבליוגרפיה" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "הסרת סימנייה" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "הוספת סימניה" #: src/book-viewer.js:714 msgid "File not found" msgstr "הקובץ לא נמצא" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "סוג הקובץ אינו נתמך" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "נמחק הסבר" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "תמונה מאת „%s”" #: src/book-viewer.js:904 msgid "Image" msgstr "תמונה" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "מתוך %d" #: src/library.js:47 msgid "Loading" msgstr "בטעינה" #: src/library.js:48 msgid "Failed to Load" msgstr "ארע כשל בטעינה" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "רענון" #: src/library.js:51 msgid "See All" msgstr "לראות הכל" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "חיפוש" #: src/library.js:53 msgid "Filter" msgstr "מסנן" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "הורדה" #: src/library.js:56 msgid "Buy" msgstr "קנייה" #: src/library.js:58 msgid "Preview" msgstr "תצוגה מקדימה" #: src/library.js:59 msgid "Sample" msgstr "דוגמה" #: src/library.js:60 msgid "Borrow" msgstr "שאילה" #: src/library.js:61 msgid "Subscribe" msgstr "הרשמה" #: src/library.js:63 msgid "Free" msgstr "חינם" #: src/library.js:65 msgid "First" msgstr "ראשון" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "הקודם" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "הבא" #: src/library.js:68 msgid "Last" msgstr "אחרון" #: src/library.js:70 msgid "Search Terms" msgstr "חיפוש מונחים" #: src/library.js:72 msgid "Title" msgstr "כותרת" #: src/library.js:73 msgid "Author" msgstr "מחבר" #: src/library.js:74 msgid "Contributor" msgstr "תורם" #: src/library.js:438 msgid "Remove Book?" msgstr "להסיר את הספר?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "שלב הקריאה, הסברים וסימניות יאבדו לצמיתות" #: src/library.js:441 msgid "_Cancel" msgstr "_ביטול" #: src/library.js:442 msgid "_Remove" msgstr "_הסרה" #: src/library.js:472 #, fuzzy msgid "Failed to Open" msgstr "ארע כשל בטעינה" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "" #: src/library.js:644 msgid "Download Failed" msgstr "אירע כשל בהורדה" #: src/library.js:698 msgid "Rename…" msgstr "שינוי שם…" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "הסרה" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "שינוי שם" #: src/library.js:725 msgid "Name" msgstr "שם" #: src/library.js:740 msgid "All Books" msgstr "כל הספרים" #: src/library.js:746 msgid "Add Catalog…" msgstr "הוספת קטלוג…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "ספרייה" #: src/library.js:821 msgid "Catalogs" msgstr "קטלוגים" #: src/library.js:864 msgid "Catalog removed" msgstr "הסרת קטלוג" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "הוספת קטלוג" #: src/library.js:952 msgid "Add" msgstr "הוספה" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "באפשרותך לסייר ולהוריד ספרים מקטלוגי OPDS. ‏ללמוד " "עוד…" #: src/library.js:961 msgid "URL" msgstr "כתובת" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "מילון" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "מויקימילון, משוחרר תחת הרישיון CC BY-SA‏, Creative Commons ייחוס-שיתוף זהה " "4.0." #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "לא נמצאו הגדרות" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "חיפוש בויקימילון" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "ויקיפדיה" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "מויקיפדיה, משוחרר תחת הרישיון CC BY-SA‏, Creative Commons " "ייחוס-שיתוף זהה 4.0." #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "חיפוש בויקיפדיה" #: src/selection-tools.js:59 msgid "Translate" msgstr "תרגום" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "‏מתורגם על ידי תרגום Google" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "לא ניתן לקבל תרגום" #: src/selection-tools.js:67 #, fuzzy msgid "Search…" msgstr "חיפוש" #: src/themes.js:8 msgid "Default" msgstr "ברירת מחדל" #: src/themes.js:13 msgid "Gray" msgstr "אפור" #: src/themes.js:18 msgid "Sepia" msgstr "חום מיושן" #: src/themes.js:23 msgid "Grass" msgstr "דשא" #: src/themes.js:28 msgid "Cherry" msgstr "דובדבן" #: src/themes.js:33 msgid "Sky" msgstr "שמים" #: src/themes.js:38 msgid "Solarized" msgstr "Solarized" #: src/themes.js:43 msgid "Gruvbox" msgstr "Gruvbox" #: src/themes.js:48 msgid "Nord" msgstr "Nord" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "שגיאה בהקראת טקסט" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "יש לוודא שמקריא קול מותקן ועובד במערכת שלך" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "הועתק ללוח הגזירים" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "סגנון הדגשה" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "מחיקה" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "תפריט" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "הוספת הערה…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "פתיחה בחלון חדש" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "ייצוא הסברים…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "חלון חדש" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "פתיחת עותק" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "ייבוא הסברים…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "על Foliate" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "כל הבחירה" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "הבחירה הנוכחית" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "התאמת מילים שלמות בלבד" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "התאמת רישיות" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "התאמה הֶבְחֵנִית (דיאקרטית)" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "הגדרות גופן ופריסה" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "מצב גלילה" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "היפוך צבעים במצב כהה" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "הסתרת סמן אוטומטית" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "הדפסה…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "מפקח" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "לא ניתן לפתוח את הספר" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "פרטים" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "פתיחת קובץ אחר…" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "קיבוע סרגל הצד" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "תפריט ספר" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "איתור" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "איתור בספר…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "תוכן" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "הסברים" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "יש לבחור טקסט כלשהו על מנת להוסיף הסברים" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "סינון הסברים…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "סימניות" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "אין סימניות" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "יש להוסיף סימניות על מנת לראות אותם כאן" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "לא נמצאו תוצאות" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "יש לנסות חיפוש שונה" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "סרגל צד" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "תפריט תצוגה" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "התרחקות" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "איפוס התקריב" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "התקרבות" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "שימוש בסגנון מערכת" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "סגנון בהיר" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "סגנון כהה" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "מסך מלא" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "ייצוא הסברים" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "ייצוא" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "תבנית" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "יש לבחור ב־„JSON” אם בכוונתך לייבא את ההסברים חזרה ל־Foliate" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "‫Markdown" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "מצב Org" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "העתקה" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "שמירה בשם..." #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "הטייה ב־90° נגד כיוון השעון" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "הטייה ב־90° עם כיוון השעון" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "ייבוא הסברים" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "ייבוא" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "המזהה לא מתאים. יתכן והסברים אלה לא מתאים לספר זה." #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "ייבוא בכל מקרה" #: src/ui/library.ui:6 msgid "List View" msgstr "תצוגת רשימה" #: src/ui/library.ui:11 msgid "Grid View" msgstr "תצוגת רשת" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "פתיחה…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "תפריט ראשי" #: src/ui/library.ui:110 msgid "Open" msgstr "פתיחה" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "תפריט ספרייה" #: src/ui/library.ui:134 msgid "Search library…" msgstr "חיפוש בספרייה…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "אחורה" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "קדימה" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "עדיין אין ספרים" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "יש לפתוח ספר כדי להתחיל לקרוא" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "מיקום" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "קריינות" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "הזמן שנשאר בפרק" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "הזמן שנשאר בספר" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "עמוד" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "להדביק ולעבור" #: src/ui/navbar.ui:322 msgid "Section" msgstr "פרק" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "פרק ראשון" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "פרק קודם" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "דילוג אל…" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "פרק הבא" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "פרק אחרון" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "הדגשה" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "להקריא מכאן ואילך" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "העתקה עם ציטוט" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "העתקת מזהה" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "הדפסת הבחיר" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "מהירות" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "גובה צליל" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "נגינה/השהיה" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "עצירה" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "גופן" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "גודלן גופן" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "גודל גופן ברירת מחדל" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "גודלן גופן מזערי" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "משפחת הגופנים" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "גופן ברירת מחדל" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "מעוטר" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "ללא עיטורים" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "דריסת גופן ההוצאה לאור" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "גופן מעוטר" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "גופן ללא עיטורים" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "גופן ברוחב קבוע" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "פריסה" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "פסקה" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "גובה שורה" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "יישור מלא" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "מיקוף" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "שוליים" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "מספר עמודות מרבי" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "אורך שורה מרבי" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "רוחב עמודות מרבי (כתיבה אופקית) או גובה (כתיבה אנכית)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "גודל בלוק מרבי" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "גובה מרבי (כתיבה אופקית) או רוחב (כתיבה אנכית)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "צבע" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "התנהגות" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "הפחתת הנפשות" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "מציג ספרים אלקטרוניים" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "ספר אלקטרוני;ספר;איבוק;איספר;איפאב;מציג;מקריא;קורא;ספרים אלקטרוניים;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "לגלות פרק חדש בקריאה עם Foliate, קורא הספרים האלקטרוני המודרני המותאם " "ל־GNOME. מאפשר לך לשקוע בממשק נטול הסחות דעת, מעוצב עם תכונות להתאמה אישית " "כך שתתאפשר לך התאמה להעדפות הייחודיות שלך." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "התכונות כוללות:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "פתיחת קובצי EPUB, Mobipocket, Kindle, FB2, CBZ ו־PDF." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "מצב ניווט לפי עמוד ומצב גלילה" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "התאמה אישית של הגופן וריווח השורות" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "בהיר, חום מיושן, כהה ומצב היפוך" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "מחוון התקדמות בקריאה עם סימוני פרקים" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "סימניות והסברים" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "איתור בספר" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "שליפה מהירה מהמילון" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 #, fuzzy msgid "Added option to override publisher font" msgstr "דריסת גופן ההוצאה לאור" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "‏Foliate נכתב מחדש מאפס עם ספריית עיבוד ספרים אלקטרוניים וספריות הפלטפורמה " "האחרונות, GTK 4 ו־Libadwaita, עם ממשק משתמש מעודכן וביצועים משופרים." #~ msgid "Book" #~ msgstr "ספר" #~ msgid "EPUB" #~ msgstr "EPUB" #~ msgid "Ebook" #~ msgstr "Ebook" #~ msgid "Reader" #~ msgstr "קורא" #~ msgid "Viewer" #~ msgstr "מציג" #~ msgid "John Factotum" #~ msgstr "ג׳ון פקטוטום" #, fuzzy #~ msgid "Reference" #~ msgstr "העדפות" #, fuzzy #~ msgid "Go to Reference" #~ msgstr "העדפות" #~ msgid "Keyboard Shortcuts" #~ msgstr "קיצורי מקלדת" #~ msgid "Preferences" #~ msgstr "העדפות" #~ msgid "Speak" #~ msgstr "הקראה" #, fuzzy #~ msgid "Fold Sidebar" #~ msgstr "הצגת סרגל צד" #~ msgid "Save File" #~ msgstr "שמירת קובץ" #, fuzzy #~ msgid "Choose highlight style" #~ msgstr "החלפת צבע ההדגשה" #~ msgid "More" #~ msgstr "עוד" #, fuzzy #~ msgid "About this book" #~ msgstr "על הספר הזה" #, fuzzy #~ msgid "Toggle sidebar" #~ msgstr "להשתמש בסרגל צד" #~ msgid "Restore zoom" #~ msgstr "שחזור תקריב" #~ msgid "Go to previous page" #~ msgstr "חזרה לעמוד הקודם" #~ msgid "Go back to previous location" #~ msgstr "חזרה למיקום הקודם" #, fuzzy #~ msgid "Go to next section" #~ msgstr "התקדמות לעמוד הבא" #, fuzzy #~ msgid "Go to last section" #~ msgstr "מעבר למיקום" ================================================ FILE: po/hi.po ================================================ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # Aman Rawat , 2023. # Scrambled777 , 2024. # msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2024-04-26 10:59+0530\n" "Last-Translator: Scrambled777 \n" "Language-Team: Hindi\n" "Language: hi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Gtranslator 46.1\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "पुस्तचिन्ह हटा दिया गया" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "पूर्ववत" #: src/annotations.js:437 msgid "Underline" msgstr "रेखांकित" #: src/annotations.js:438 msgid "Squiggly" msgstr "टेढ़ा-मेढ़ा" #: src/annotations.js:439 msgid "Strikethrough" msgstr "स्ट्राइकथ्रू" #: src/annotations.js:440 msgid "Yellow" msgstr "पीला" #: src/annotations.js:441 msgid "Orange" msgstr "नारंगी" #: src/annotations.js:442 msgid "Red" msgstr "लाल" #: src/annotations.js:443 msgid "Magenta" msgstr "मैजेंटा" #: src/annotations.js:444 msgid "Aqua" msgstr "एक्वा" #: src/annotations.js:445 msgid "Lime" msgstr "नीबू हरा" #: src/annotations.js:446 msgid "Custom Color…" msgstr "तदनुकूल रंग…" #: src/annotations.js:498 msgid "Custom" msgstr "तदनुकूल" #: src/annotations.js:592 msgid "JSON Files" msgstr "JSON फाइलें" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "सभी फाइलें" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "कोई एनोटेशन नहीं" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "आयातित फाइल में कोई एनोटेशन नहीं है" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "एनोटेशन आयात नहीं कर सकते" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "एक त्रुटि हुई" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "इस पुस्तक के लिए आपके पास कोई एनोटेशन नहीं है" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "“%s” के लिए एनोटेशन" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d एनोटेशन" msgstr[1] "%d एनोटेशन" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "बंद करें" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "रद्द करें" #: src/app.js:136 msgid "E-Book Files" msgstr "ई-पुस्तक फाइलें" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "अंदाज़ से ई-पुस्तकें पढ़ें" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "" "Aman Rawat\n" "Scrambled777 , 2024" #: src/app.js:414 msgid "Source Code" msgstr "स्रोत कोड" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "प्रकाशक" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "प्रकाशित" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "अपडेट किया गया" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "भाषा" #: src/book-info.js:139 msgid "Translated by" msgstr "इनके द्वारा अनुवादित" #: src/book-info.js:140 msgid "Edited by" msgstr "इनके द्वारा संपादित" #: src/book-info.js:141 msgid "Narrated by" msgstr "इनके द्वारा वर्णित" #: src/book-info.js:142 msgid "Illustrated by" msgstr "इनके द्वारा चित्रित" #: src/book-info.js:143 msgid "Produced by" msgstr "इनके द्वारा निर्मित" #: src/book-info.js:144 msgid "Artwork by" msgstr "इनके द्वारा कलाकृति" #: src/book-info.js:145 msgid "Color by" msgstr "इनके द्वारा रंग" #: src/book-info.js:146 msgid "Contributors" msgstr "योगदानकर्ता" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "पहचानकर्ता" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "इस पुस्तक के बारे में" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "स्थान %2$s में से %1$s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "%2$s में से पृष्ठ %1$s" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "पृष्ठ %s" #: src/book-viewer.js:32 msgid "Footnote" msgstr "पाद-लेख" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "पाद-लेख पर जाएं" #: src/book-viewer.js:34 msgid "Endnote" msgstr "समाप्ति-लेख" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "समाप्ति-लेख पर जाएं" #: src/book-viewer.js:36 msgid "Note" msgstr "टिप्पणी" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "टिप्पणी पर जाएं" #: src/book-viewer.js:38 msgid "Definition" msgstr "परिभाषा" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "परिभाषा पर जाएं" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "ग्रन्थसूची" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "ग्रंथसूची पर जाएं" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "बुकमार्क हटाएं" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "बुकमार्क जोड़ें" #: src/book-viewer.js:714 msgid "File not found" msgstr "फाइल प्राप्त नहीं हुई" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "फाइल प्रकार समर्थित नहीं है" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "एनोटेशन मिटाया गया" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" "‘%s’\n" "—%s, “%s”, p. %s" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" "‘%s’\n" "—“%s”, p. %s" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "‘%s’ (p. %s)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" "‘%s’\n" "—%s, “%s”" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" "‘%s’\n" "—“%s”" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "‘%s’" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "“%s” से छवि" #: src/book-viewer.js:904 msgid "Image" msgstr "छवि" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "%d का" #: src/library.js:47 msgid "Loading" msgstr "लोड हो रहा है" #: src/library.js:48 msgid "Failed to Load" msgstr "लोड करने में विफल" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "पुनः लोड करें" #: src/library.js:51 msgid "See All" msgstr "सभी देखें" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "खोजें" #: src/library.js:53 msgid "Filter" msgstr "फिल्टर" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "डाउनलोड" #: src/library.js:56 msgid "Buy" msgstr "खरीदें" #: src/library.js:58 msgid "Preview" msgstr "पूर्वावलोकन" #: src/library.js:59 msgid "Sample" msgstr "नमूना" #: src/library.js:60 msgid "Borrow" msgstr "उधार" #: src/library.js:61 msgid "Subscribe" msgstr "सदस्यता लें" #: src/library.js:63 msgid "Free" msgstr "मुफ़्त" #: src/library.js:65 msgid "First" msgstr "पहला" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "पिछला" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "अगला" #: src/library.js:68 msgid "Last" msgstr "अंतिम" #: src/library.js:70 msgid "Search Terms" msgstr "खोज शब्द" #: src/library.js:72 msgid "Title" msgstr "शीर्षक" #: src/library.js:73 msgid "Author" msgstr "लेखक" #: src/library.js:74 msgid "Contributor" msgstr "योगदानकर्ता" #: src/library.js:438 msgid "Remove Book?" msgstr "पुस्तक हटाएं?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "पढ़ने की प्रगति, एनोटेशन और बुकमार्क स्थायी रूप से खो जाएंगे" #: src/library.js:441 msgid "_Cancel" msgstr "रद्द (_C)" #: src/library.js:442 msgid "_Remove" msgstr "हटाएं (_R)" #: src/library.js:472 #, fuzzy msgid "Failed to Open" msgstr "लोड करने में विफल" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "" #: src/library.js:644 msgid "Download Failed" msgstr "डाउनलोड विफल" #: src/library.js:698 msgid "Rename…" msgstr "नाम बदलें…" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "हटाएं" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "नाम बदलें" #: src/library.js:725 msgid "Name" msgstr "नाम" #: src/library.js:740 msgid "All Books" msgstr "सभी पुस्तकें" #: src/library.js:746 msgid "Add Catalog…" msgstr "सूचीपत्र जोड़ें…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "पुस्तकालय" #: src/library.js:821 msgid "Catalogs" msgstr "सूचीपत्र" #: src/library.js:864 msgid "Catalog removed" msgstr "सूचीपत्र हटाया गया" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "सूचीपत्र जोड़ें" #: src/library.js:952 msgid "Add" msgstr "जोड़ें" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "आप OPDS सूचीपत्र से किताबें ब्राउज़ और डाउनलोड कर सकते हैं। और जानें…" #: src/library.js:961 msgid "URL" msgstr "URL" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "शब्दकोष" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "Wiktionary से, CC BY-SA लाइसेंस के तहत जारी किया गया।" #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "कोई परिभाषा नहीं मिली" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "Wiktionary पर खोजें" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Wikipedia" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "Wikipedia से, CC BY-SA लाइसेंस के तहत जारी किया गया।" #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "Wikipedia पर खोजें" #: src/selection-tools.js:59 msgid "Translate" msgstr "अनुवाद" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "Google Translate द्वारा अनुवाद" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "अनुवाद पुनर्प्राप्त नहीं किया जा सका" #: src/selection-tools.js:67 #, fuzzy msgid "Search…" msgstr "खोजें" #: src/themes.js:8 msgid "Default" msgstr "तयशुदा" #: src/themes.js:13 msgid "Gray" msgstr "स्लेटी" #: src/themes.js:18 msgid "Sepia" msgstr "सेपिया" #: src/themes.js:23 msgid "Grass" msgstr "घास" #: src/themes.js:28 msgid "Cherry" msgstr "चैरी" #: src/themes.js:33 msgid "Sky" msgstr "आकाश" #: src/themes.js:38 msgid "Solarized" msgstr "सौर्यकृत" #: src/themes.js:43 msgid "Gruvbox" msgstr "ग्रुवबॉक्स" #: src/themes.js:48 msgid "Nord" msgstr "नॉर्ड" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "पाठ-से-वाक् त्रुटि" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "सुनिश्चित करें कि स्पीच डिस्पैचर इंस्टॉल है और आपके सिस्टम पर काम कर रहा है" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "क्लिपबोर्ड पर कॉपी किया गया" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "चिन्हांकन शैली" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "मिटाएं" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "मेनू" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "टिप्पणी जोड़ें…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "नई विंडो में खोलें" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "एनोटेशन निर्यात करें…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "नई विंडो" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "एक प्रति खोलें" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "एनोटेशन आयात करें…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "Foliate के बारे में" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "सभी अनुभाग" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "वर्तमान अनुभाग" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "केवल संपूर्ण शब्दों का मिलान करें" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "वर्तनी मिलाएं" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "विशेषक मिलाएं" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "फॉन्ट और अभिन्यास सेटिंग्स" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "स्क्रॉल का मोड" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "गहरे मोड में रंगों को उल्टा करें" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "कर्सर को स्वतः छिपाएं" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "प्रिंट…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "निरीक्षक" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "पुस्तक खोली नहीं जा सकती" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "विवरण" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "कोई अन्य फाइल खोलें…" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "पार्श्वपट्टी पिन करें" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "पुस्तक मेनू" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "खोजें" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "पुस्तक में खोजें…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "अंतर्वस्तु" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "एनोटेशन" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "एनोटेशन जोड़ने के लिए कुछ पाठ चुनें" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "एनोटेशन फिल्टर करें…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "पुस्तचिह्न" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "कोई पुस्तचिह्न नहीं" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "यहां देखने के लिए कुछ पुस्तचिह्न जोड़ें" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "कोई परिणाम नहीं मिला" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "भिन्न खोज का प्रयास करें" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "पार्श्वपट्टी" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "मेनू देखें" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "ज़ूम आउट" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "ज़ूम रीसेट" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "ज़ूम इन" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "सिस्टम शैली का पालन" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "हल्की शैली" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "गहरी शैली" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "पूर्णस्क्रीन" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "एनोटेशन निर्यात करें" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "निर्यात" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "प्रारूप" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "" "यदि आप एनोटेशन को Foliate में वापस आयात करने की योजना बना रहे हैं तो “JSON” चुनें" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "मार्कडाउन" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "संगठन मोड" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "कॉपी" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "ऐसे सहेजें…" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "90° वामावर्त घुमाएं" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "90° दक्षिणावर्त घुमाएं" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "एनोटेशन आयात करें" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "आयात" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "पहचानकर्ता मेल नहीं खाता। ये टिप्पणियां इस पुस्तक के लिए नहीं हो सकती हैं।" #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "फिर भी आयात करें" #: src/ui/library.ui:6 msgid "List View" msgstr "सूची दृश्य" #: src/ui/library.ui:11 msgid "Grid View" msgstr "ग्रिड दृश्य" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "खोलें…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "मुख्य मेनू" #: src/ui/library.ui:110 msgid "Open" msgstr "खोलें" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "लाइब्रेरी मेनू" #: src/ui/library.ui:134 msgid "Search library…" msgstr "लाइब्रेरी खोजें…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "पीछे" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "आगे" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "अभी तक कोई पुस्तकें नहीं" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "पढ़ना शुरू करने के लिए एक पुस्तक खोलें" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "स्थान" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "वर्णन" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "अनुभाग में शेष समय" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "पुस्तक में बचा हुआ समय" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "पृष्ठ" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "पेस्ट करें और जाएं" #: src/ui/navbar.ui:322 msgid "Section" msgstr "अनुभाग" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "प्रथम अनुभाग" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "पिछला अनुभाग" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "यहाँ जाए…" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "अगला अनुभाग" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "अंतिम अनुभाग" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "चिन्हांकन" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "यहां से बोलो" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "उद्धरण सहित कॉपी करें" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "पहचानकर्ता कॉपी करें" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "चयन प्रिंट करें…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "गति" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "स्तर" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "चलाएं/रोकें" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "रोकें" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "फॉन्ट" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "फॉन्ट आकार" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "तयशुदा फॉन्ट आकार" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "न्यूनतम फॉन्ट आकार" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "फॉन्ट परिवार" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "तयशुदा फॉन्ट" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "सेरिफ़" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "सैन्स-सेरिफ़" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "प्रकाशक फॉन्ट ओवरराइड करें" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "सेरिफ़ फॉन्ट" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "सैन्स-सेरिफ़ फॉन्ट" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "मोनोस्पेस फॉन्ट" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "अभिन्यास" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "अनुच्छेद" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "रेखा की ऊंचाई" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "पूर्ण औचित्य" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "हायफ़नेशन" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "मार्जिन" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "कॉलमों की अधिकतम संख्या" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "अधिकतम इनलाइन आकार" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "अधिकतम स्तंभ चौड़ाई (क्षैतिज लेखन) या ऊंचाई (ऊर्ध्वाधर लेखन)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "अधिकतम ब्लॉक आकार" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "अधिकतम ऊंचाई (क्षैतिज लेखन) या चौड़ाई (ऊर्ध्वाधर लेखन)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "रंग" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "व्यवहार" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "सजीवता कम करें" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "ई-पुस्तक दर्शक" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "ईबुक;पुस्तक;दर्शक;पाठक;EPUB;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "GNOME के लिए तैयार किए गए आधुनिक ई-पुस्तक पाठक Foliate के साथ पढ़ने का एक नया अध्याय " "खोजें। आपकी विशिष्ट प्राथमिकताओं से मेल खाने के लिए डिज़ाइन की गई अनुकूलन सुविधाओं के साथ, " "अपने आप को एक व्याकुलता-मुक्त इंटरफ़ेस में डुबो दें।" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "शामिल विशेषताएं:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "EPUB, Mobipocket, Kindle, FB2, CBZ और PDF फाइलें खोलें" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "पृष्ठांकित मोड और स्क्रॉल मोड" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "फॉन्ट और पंक्ति-रिक्ति को अनुकूलित करें" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "हल्का, सेपिया, गहरा और उल्टा मोड" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "अध्याय चिह्नों के साथ पढ़ने की प्रगति स्लाइडर" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "पुस्तचिन्ह और एनोटेशन" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "पुस्तक में खोजें" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "त्वरित शब्दकोश खोज" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 #, fuzzy msgid "Added option to override publisher font" msgstr "प्रकाशक फॉन्ट ओवरराइड करें" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "Foliate को नई ई-पुस्तक प्रतिपादन लाइब्रेरी और नवीनतम प्लेटफॉर्म लाइब्रेरी, GTK 4 और " "Libadwaita के साथ ताज़ा UI और बेहतर प्रदर्शन के साथ फिर से लिखा गया है।" #~ msgid "Book" #~ msgstr "पुस्तक" #~ msgid "EPUB" #~ msgstr "EPUB" #~ msgid "Ebook" #~ msgstr "ई-पुस्तक" #~ msgid "Reader" #~ msgstr "पाठक" #~ msgid "Viewer" #~ msgstr "दर्शक" #~ msgid "John Factotum" #~ msgstr "जॉन फैक्टोटम" #, fuzzy #~ msgid "Reference" #~ msgstr "संदर्भ" #, fuzzy #~ msgid "Go to Reference" #~ msgstr "संदर्भ पर जाएँ" #~ msgid "Keyboard Shortcuts" #~ msgstr "कीबोर्ड शॉर्टकट" #~ msgid "Preferences" #~ msgstr "प्राथमिकताएँ" #~ msgid "Speak" #~ msgstr "बोलना" #, fuzzy #~ msgid "Fold Sidebar" #~ msgstr "साइडबार को मोड़ें" #~ msgid "Save File" #~ msgstr "फ़ाइल सहेजें" #, fuzzy #~ msgid "Choose highlight style" #~ msgstr "हाइलाइट शैली चुनें" #~ msgid "More" #~ msgstr "और" #, fuzzy #~ msgid "About this book" #~ msgstr "इस पुस्तक के बारे में" #, fuzzy #~ msgid "Toggle sidebar" #~ msgstr "साइडबार टॉगल करें" #~ msgid "Restore zoom" #~ msgstr "ज़ूम पुनर्स्थापित करें" #~ msgid "Go to previous page" #~ msgstr "पिछले पृष्ठ पर जाएं" #~ msgid "Go back to previous location" #~ msgstr "पिछले स्थान पर वापस जाएँ" #, fuzzy #~ msgid "Go to next section" #~ msgstr "अगले खंड पर जाएँ" #, fuzzy #~ msgid "Go to last section" #~ msgstr "अंतिम खंड पर जाएँ" ================================================ FILE: po/hr.po ================================================ # Croatian translations for com.github.johnfactotum.Foliate package # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # Milo Ivir , 2023. # msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2024-01-05 00:49+0100\n" "Last-Translator: Milo Ivir \n" "Language-Team: \n" "Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.0\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "Straničnik je izbrisan" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "Poništi" #: src/annotations.js:437 msgid "Underline" msgstr "Podcrtano" #: src/annotations.js:438 msgid "Squiggly" msgstr "Valovito" #: src/annotations.js:439 msgid "Strikethrough" msgstr "Precrtano" #: src/annotations.js:440 msgid "Yellow" msgstr "Žuta" #: src/annotations.js:441 msgid "Orange" msgstr "Narančasta" #: src/annotations.js:442 msgid "Red" msgstr "Crvena" #: src/annotations.js:443 msgid "Magenta" msgstr "Magenta" #: src/annotations.js:444 msgid "Aqua" msgstr "Akvamarin" #: src/annotations.js:445 msgid "Lime" msgstr "Limunasta" #: src/annotations.js:446 msgid "Custom Color…" msgstr "Prilagođena boja …" #: src/annotations.js:498 msgid "Custom" msgstr "Prilagođeno" #: src/annotations.js:592 msgid "JSON Files" msgstr "JSON datoteke" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "Sve datoteke" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "Bez pribilježaka" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "Uvezena datoteka nema pribilješke" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "Nije moguće učitati pribilješke" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "Došlo je do greške" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "Za ovu knjigu nemaš nijednu pribilješku" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "Pribilješke za „%s”" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d pribilješka" msgstr[1] "%d pribilješke" msgstr[2] "%d pribilježaka" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "Zatvori" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "Odustani" #: src/app.js:136 msgid "E-Book Files" msgstr "Datoteke e-knjiga" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "Čitaj e-knjige u stilu" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "Milo Ivir " #: src/app.js:414 msgid "Source Code" msgstr "Izvorni kod" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Izdavač" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "Objavljeno" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "Aktualizirano" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Jezik" #: src/book-info.js:139 msgid "Translated by" msgstr "Prevoditelj:" #: src/book-info.js:140 msgid "Edited by" msgstr "Urednik:" #: src/book-info.js:141 msgid "Narrated by" msgstr "Narator:" #: src/book-info.js:142 msgid "Illustrated by" msgstr "Ilustrator:" #: src/book-info.js:143 msgid "Produced by" msgstr "Producent:" #: src/book-info.js:144 msgid "Artwork by" msgstr "Umjetnik:" #: src/book-info.js:145 msgid "Color by" msgstr "Kolorist:" #: src/book-info.js:146 msgid "Contributors" msgstr "Doprinositelji" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "Identifikator" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "O ovoj knjizi" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "Mjesto %s od %s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "%s. stranica od %s" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "%s. stranica" #: src/book-viewer.js:32 msgid "Footnote" msgstr "Fusnota" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "Idi na fusnotu" #: src/book-viewer.js:34 msgid "Endnote" msgstr "Završna bilješka" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "Idi na završnu bilješku" #: src/book-viewer.js:36 msgid "Note" msgstr "Bilješka" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "Idi na bilješku" #: src/book-viewer.js:38 msgid "Definition" msgstr "Definicija" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "Idi na definiciju" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "Bibliografija" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "Idi na bibliografiju" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "Ukloni straničnik" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "Dodaj straničnik" #: src/book-viewer.js:714 msgid "File not found" msgstr "Datoteka nije pronađena" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "Vrsta dokumenta nije podržana" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "Pribilješka je izbrisana" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" "‘%s’\n" "– %s, „%s”, %s. stranica" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" "‘%s’\n" "– „%s”, %s. stranica" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "‘%s’ (%s. stranica)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" "‘%s’\n" "– %s, „%s”" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" "‘%s’\n" "– „%s”" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "‘%s’" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "Slika od „%s”" #: src/book-viewer.js:904 msgid "Image" msgstr "Slika" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "od %d" #: src/library.js:47 msgid "Loading" msgstr "Učitavanje" #: src/library.js:48 msgid "Failed to Load" msgstr "Neuspjelo učitavanje" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "Učitaj ponovo" #: src/library.js:51 msgid "See All" msgstr "Pogledaj sve" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "Pretraži" #: src/library.js:53 msgid "Filter" msgstr "Filtriraj" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "Preuzmi" #: src/library.js:56 msgid "Buy" msgstr "Kupi" #: src/library.js:58 msgid "Preview" msgstr "Pregled" #: src/library.js:59 msgid "Sample" msgstr "Uzorak" #: src/library.js:60 msgid "Borrow" msgstr "Posudi" #: src/library.js:61 msgid "Subscribe" msgstr "Pretplati se" #: src/library.js:63 msgid "Free" msgstr "Besplatno" #: src/library.js:65 msgid "First" msgstr "Prva" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "Prethodna" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "Sljedeća" #: src/library.js:68 msgid "Last" msgstr "Zadnja" #: src/library.js:70 msgid "Search Terms" msgstr "Traži pojmove" #: src/library.js:72 msgid "Title" msgstr "Naslov" #: src/library.js:73 msgid "Author" msgstr "Autor" #: src/library.js:74 msgid "Contributor" msgstr "Doprinositelj" #: src/library.js:438 msgid "Remove Book?" msgstr "Ukloniti knjigu?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "Napredak čitanja, pribilješke i straničnici će se zauvijek izgubiti" #: src/library.js:441 msgid "_Cancel" msgstr "_Odustani" #: src/library.js:442 msgid "_Remove" msgstr "_Ukloni" #: src/library.js:472 #, fuzzy msgid "Failed to Open" msgstr "Neuspjelo učitavanje" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "" #: src/library.js:644 msgid "Download Failed" msgstr "Preuzimanje nije uspjelo" #: src/library.js:698 msgid "Rename…" msgstr "Preimenuj …" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "Ukloni" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "Preimenuj" #: src/library.js:725 msgid "Name" msgstr "Ime" #: src/library.js:740 msgid "All Books" msgstr "Sve knjige" #: src/library.js:746 msgid "Add Catalog…" msgstr "Dodaj katalog …" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "Biblioteka" #: src/library.js:821 msgid "Catalogs" msgstr "Katalozi" #: src/library.js:864 msgid "Catalog removed" msgstr "Katalog je uklonjen" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "Dodaj katalog" #: src/library.js:952 msgid "Add" msgstr "Dodaj" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "Knjige se mogu pregledavati i preuzimati iz OPDS kataloga. Saznaj više …" #: src/library.js:961 msgid "URL" msgstr "URL" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "Rječnik" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "Od Wiktionary, objavljeno pod licensomCC BY-SA." #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "Nije pronđena nijedna definicija" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "Traži na Wiktionary" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Wikipedia" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "Od Wikipedia, objavljeno pod licensomCC BY-SA." #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "Traži na Wikipedia" #: src/selection-tools.js:59 msgid "Translate" msgstr "Prevedi" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "Prijevod: Google prevoditelj" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "Nije moguće pronaći prijevod" #: src/selection-tools.js:67 #, fuzzy msgid "Search…" msgstr "Pretraži" #: src/themes.js:8 msgid "Default" msgstr "Zadano" #: src/themes.js:13 msgid "Gray" msgstr "Siva" #: src/themes.js:18 msgid "Sepia" msgstr "Tamnosmeđa" #: src/themes.js:23 msgid "Grass" msgstr "Trava" #: src/themes.js:28 msgid "Cherry" msgstr "Trešnja" #: src/themes.js:33 msgid "Sky" msgstr "Nebo" #: src/themes.js:38 msgid "Solarized" msgstr "Solarno" #: src/themes.js:43 msgid "Gruvbox" msgstr "Gruvbox" #: src/themes.js:48 msgid "Nord" msgstr "Nord" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "Greška u pretvaranju teksta u govor" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "" "Provjeri je li Speech Dispatcher (sučelje za govornu jedinicu) instaliran i " "je li radi na tvom sustavu" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "Kopirano u međuspremnik" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "Stil za isticanje" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "Izbriši" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "Izbornik" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "Dodaj bilješku …" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "Otvori u novom prozoru" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "Izvezi pribilješke …" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "Novi prozor" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "Otvori kopiju" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "Uvezi pribilješke …" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "O programu Foliate" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "Svi odlomci" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "Aktualni odlomak" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "Usporedi samo cijele riječi" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "Usporedi veličinu slova" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "Usporedi dijakritičke znakove" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "Postavke fonta i rasporeda" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "Modus listanja" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "Invertiraj boje u tamnom modusu" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "Automatski sakrij kursor" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "Ispis …" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "Inspektor" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "Knjiga se ne može otvoriti" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "Pojediosti" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "Otvori jednu drugu datoteku …" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "Prikvači bočni stupac" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "Izbornik knjiga" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "Pronađi" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "Pronađi u knjizi …" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "Sadržaj" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Pribilješke" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "Odaberi neki tekst za dodavanje pribilježaka" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "Filtriraj pribilješke …" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Straničnici" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "Nema straničnika" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "Dodaj neke straničnike kako bi se ovdje prikazali" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "Nema rezultata" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "Pokušaj drugačiju pretragu" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "Bočni stupac" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "Izbornik prikaza" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "Smanji prikaz" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "Obnovi uvećanje prikaza" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "Uvećaj prikaz" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "Slijedi stil sustava" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "Svijetli stil" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "Tamni stil" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Cjeloekranski prikaz" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "Izvoz pribilježaka" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "Izvoz" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "Format" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "Odaberi „JSON” ako planiraš uvoziti pribilješke natrag u Foliate" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "Markdown" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "Org Mode" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Kopiraj" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "Spremi kao …" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "Okreni za 90 ° ulijevo" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "Okreni za 90 ° udesno" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "Uvoz pribilježaka" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "Uvoz" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "Identifikator se ne poklapa. Ove pribilješke možda nisu za ovu knjigu." #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "Svejedno uvezi" #: src/ui/library.ui:6 msgid "List View" msgstr "Prikaz popisa" #: src/ui/library.ui:11 msgid "Grid View" msgstr "Prikaz sličica" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Otvori …" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "Glavni izbornik" #: src/ui/library.ui:110 msgid "Open" msgstr "Otvori" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "Izbornik biblioteke" #: src/ui/library.ui:134 msgid "Search library…" msgstr "Pretraži biblioteku …" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "Natrag" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "Naprijed" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "Još nema knjiga" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "Otvori jednu knjigu i počni čitati" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "Mjesto" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "Naracija" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "Preostalo vrijeme u odlomku" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "Preostalo vrijeme u knjizi" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "Stranica" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "Umetni i idi" #: src/ui/navbar.ui:322 msgid "Section" msgstr "Odlomak" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "Prvi odlomak" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "Prethodni odlomak" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "Prijeđi na …" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "Sljedeći odlomak" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "Zadnji odlomak" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Istakni" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "Govori odavdje" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "Kopiraj s citatom" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "Kopiraj identifkatora" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "Ispiši odabir …" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "Brzina" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "Visina" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "Pokreni/Zaustavi" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "Prekini" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "Font" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "Veličina fonta" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "Standardna veličina fonta" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "Najmanja veličina fonta" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "Obitelj fontova" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "Standardni font" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "Serifni" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "Bezserifni" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "Zamijeni font izdavača" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "Serifni font" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "Bezserifni font" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "Jednometrični font" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "Raspored" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "Odlomak" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "Visina retka" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "Obostrano poravnanje" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "Rastavljanje riječi" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Margine" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "Maksimalni broj stupaca" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "Maksimalna veličina elementa" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "" "Maksimalna širina stupca (vodoravno pisanje) ili visina (okomito pisanje)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "Maksimalna veličina bloka" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "Maksimalna visina (vodoravno pisanje) ili širina (okomito pisanje)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "Boja" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "Ponašanje" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "Smanji animciju" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "Čitač e-knjiga" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "Ebook;e-knjiga;Book;knjiga;EPUB;Viewer;prikazivač;Reader;čitač;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "Otkrij novo poglavlje čitajući pomoću Foliatea, modernim čitačem e-knjiga " "prilagođenim za GNOME. Foliate pruža jednostavno sučelje s mogučnošću " "prilagođavanja raznih funkcija vlastitim željama." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "Funkcije uključuju:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "Otvori EPUB, Mobipocket, Kindle, FB2, CBZ i PDF datoteke" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "Modus paginacije i modus listanja" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "Prilagodi font i razmak između redaka" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "Svijetli, tamnosmeđi, tamni i invertirani modus" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "Klizač napretka čitanja s oznakama poglavlja" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "Straničnici i pribilješke" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "Pronađi u knjizi" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "Brzo pretraživanje rječnika" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 #, fuzzy msgid "Added option to override publisher font" msgstr "Zamijeni font izdavača" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "Foliate je potpuno novo programiran s novom bibliotekom za prikaz e-knjiga i " "najnovijim bibliotekama platforme, GTK 4 i Libadwaita, sa svježim " "korisničkim sučeljem i poboljšanom performancom." #~ msgid "Book" #~ msgstr "Knjiga" #~ msgid "EPUB" #~ msgstr "EPUB" #~ msgid "Ebook" #~ msgstr "Ebook" #~ msgid "Reader" #~ msgstr "Čitač" #~ msgid "Viewer" #~ msgstr "Prikazivač" ================================================ FILE: po/hu.po ================================================ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2024-11-30 18:00+0800\n" "Last-Translator: Ádám Szabó \n" "Language-Team: Hungarian \n" "Language: hu_HU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "Könyvjelző törölve" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "Visszavonás" #: src/annotations.js:437 msgid "Underline" msgstr "Aláhúzott" #: src/annotations.js:438 msgid "Squiggly" msgstr "Hullámos" #: src/annotations.js:439 msgid "Strikethrough" msgstr "Áthúzott" #: src/annotations.js:440 msgid "Yellow" msgstr "Citromsárga" #: src/annotations.js:441 msgid "Orange" msgstr "Narancssárga" #: src/annotations.js:442 msgid "Red" msgstr "Piros" #: src/annotations.js:443 msgid "Magenta" msgstr "Bíbor" #: src/annotations.js:444 msgid "Aqua" msgstr "Világoskék" #: src/annotations.js:445 msgid "Lime" msgstr "Világoszöld" #: src/annotations.js:446 msgid "Custom Color…" msgstr "Egyéni szín..." #: src/annotations.js:498 msgid "Custom" msgstr "Egyéni téma" #: src/annotations.js:592 msgid "JSON Files" msgstr "JSON fájlok" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "Összes fájl" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "Nincsenek feljegyzések" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "Az importált fájl nem tartalmaz feljegyzéseket" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "A feljegyzések importálása sikertelen" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "Hiba történt" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "Ehhez a könyvhöz nem tartoznak feljegyzések" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "Feljegyzések a “%s” " #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "Feljegyzés" msgstr[1] "Feljegyzések" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "Bezárás" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "Mégse" #: src/app.js:136 msgid "E-Book Files" msgstr "E-Book fájlok" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "Olvasson e-könyveket stílusosan" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "Szabó Ádám" #: src/app.js:414 msgid "Source Code" msgstr "Forráskód" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Kiadó" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "Kiadás dátuma" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "Frissítés dátuma" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Nyelv" #: src/book-info.js:139 msgid "Translated by" msgstr "Fordította" #: src/book-info.js:140 msgid "Edited by" msgstr "Szerkesztő" #: src/book-info.js:141 msgid "Narrated by" msgstr "Narrátor" #: src/book-info.js:142 msgid "Illustrated by" msgstr "Illusztrálta" #: src/book-info.js:143 msgid "Produced by" msgstr "Készítette" #: src/book-info.js:144 msgid "Artwork by" msgstr "Grafikus:" #: src/book-info.js:145 msgid "Color by" msgstr "Színezte" #: src/book-info.js:146 msgid "Contributors" msgstr "Közreműködők:" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "Azonosító" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "Könyvismertető" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "Poz. %s ból/ből %s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "Oldal %s ból/ből %s" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "Oldal %s" #: src/book-viewer.js:32 msgid "Footnote" msgstr "Lábjegyzet" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "Ugrás a lábjegyzetre" #: src/book-viewer.js:34 msgid "Endnote" msgstr "Végjegyzet" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "Ugrás a végjegyzetre" #: src/book-viewer.js:36 msgid "Note" msgstr "Megjegyzés" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "Ugrás a megjegyzésre" #: src/book-viewer.js:38 msgid "Definition" msgstr "Definíció" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "Ugrás a definícióra" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "Forrásjegyzék" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "Ugrás a forrásjegyzékre" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "Könyvjelző eltávolítása" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "Könyvjelző hozzáadása" #: src/book-viewer.js:714 msgid "File not found" msgstr "A fájl nem található" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "Ez a fájltípus nem támogatott" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "Feljegyzés törölve" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "‘%s’ (p. %s)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "‘%s’" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "Kép a ból/ből “%s”" #: src/book-viewer.js:904 msgid "Image" msgstr "Kép" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "nak/nek %d" #: src/library.js:47 msgid "Loading" msgstr "Betöltés" #: src/library.js:48 msgid "Failed to Load" msgstr "A betöltés sikertelen" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "Újratöltés" #: src/library.js:51 msgid "See All" msgstr "Összes mgtekintése" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "Keresés" #: src/library.js:53 msgid "Filter" msgstr "Szűrő" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "Letöltés" #: src/library.js:56 msgid "Buy" msgstr "Vásárlás" #: src/library.js:58 msgid "Preview" msgstr "Előnézet" #: src/library.js:59 msgid "Sample" msgstr "Minta" #: src/library.js:60 msgid "Borrow" msgstr "Kölcsönzés" #: src/library.js:61 msgid "Subscribe" msgstr "Előfizetés" #: src/library.js:63 msgid "Free" msgstr "Ingyenes" #: src/library.js:65 msgid "First" msgstr "Első" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "Előző" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "Következő" #: src/library.js:68 msgid "Last" msgstr "Utolsó" #: src/library.js:70 msgid "Search Terms" msgstr "Keresőkifejezés" #: src/library.js:72 msgid "Title" msgstr "Cím" #: src/library.js:73 msgid "Author" msgstr "Szerző" #: src/library.js:74 msgid "Contributor" msgstr "Közreműködő" #: src/library.js:438 msgid "Remove Book?" msgstr "Eltávolítja a könyvet?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "" "Az aktuális olvasási pozíció, a feljegyzések és a könyvjelzők végérvényesen " "elvesznek" #: src/library.js:441 msgid "_Cancel" msgstr "_Mégse" #: src/library.js:442 msgid "_Remove" msgstr "_Eltávolítás" #: src/library.js:472 #, fuzzy msgid "Failed to Open" msgstr "A betöltés sikertelen" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "A fájl megnyitása sikertelen volt a kiválasztott alkalmazással" #: src/library.js:644 msgid "Download Failed" msgstr "A letöltés sikertelen" #: src/library.js:698 msgid "Rename…" msgstr "Átnevezés..." #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "Eltávolítás" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "Átnevezés" #: src/library.js:725 msgid "Name" msgstr "Név" #: src/library.js:740 msgid "All Books" msgstr "Minden könyv" #: src/library.js:746 msgid "Add Catalog…" msgstr "Katalóus hozzáadása..." #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "Könyvtár" #: src/library.js:821 msgid "Catalogs" msgstr "Katalógusok" #: src/library.js:864 msgid "Catalog removed" msgstr "Katalógus törölve" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "Katalógus hozzáadása" #: src/library.js:952 msgid "Add" msgstr "Hozzáad" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "Böngészhet és letölthet könyveket nyilvános (OPDS) katalógusokból. További információ..." #: src/library.js:961 msgid "URL" msgstr "URL" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "Szótár" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "Nem található definíció" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "Keresés a Wikiszótárban" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Wikipédia" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "Keresés a Wikipédián" #: src/selection-tools.js:59 msgid "Translate" msgstr "Fordítás" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "Fordítás a Google Fordítóval" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "A fordítás sikertelen" #: src/selection-tools.js:67 #, fuzzy msgid "Search…" msgstr "Keresés" #: src/themes.js:8 msgid "Default" msgstr "Alapértelmezett" #: src/themes.js:13 msgid "Gray" msgstr "Szürke" #: src/themes.js:18 msgid "Sepia" msgstr "Szépia" #: src/themes.js:23 msgid "Grass" msgstr "Fűzöld" #: src/themes.js:28 msgid "Cherry" msgstr "Cseresznyepiros" #: src/themes.js:33 msgid "Sky" msgstr "Égkék" #: src/themes.js:38 msgid "Solarized" msgstr "Szolarizált" #: src/themes.js:43 msgid "Gruvbox" msgstr "Gruvbox" #: src/themes.js:48 msgid "Nord" msgstr "Észak" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "Hiba a felolvasáskor" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "" "Győződjön meg róla, hogy a beszédmotor telepítésre került-e és, hogy működik-" "e az Ön rendszerén" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "Vágólapra másolva" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "Kiemelés stílusa" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "Törlés" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "Menü" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "Megjegyzés hozzáadása..." #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "Megnyitás új ablakban" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "Megnyitás külső alkalmazásban" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "Feljegyzések exportálása..." #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "Új ablak" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "Másodpéldány megnyitása" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "Feljegyzések importálása..." #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "Névjegy" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "Összes szakasz" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "Aktuális szakasz" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "Csak teljes szavas egyezés" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "Kis - és nagybetűk egyezzenek" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "Diakrtikus jelek egyezzenek" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "Betűtípus és elrendezés" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "Folyamatos görgetés" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "Színek invertálása sötét módban" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "Kurzor automatikus elrejtése" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "Nyomtatás..." #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "Fejlesztői üzemmód" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "A könyv megnyitása sikertelen" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "Részletek" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "Másik fájl megnyitása..." #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "Kitűzés az oldalsávra" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "Műveleti menü" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "Keresés" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "Keresés a könyvben" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "Tartalomjegyzék" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Feljegyzések" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "Feljegyzések hozzáadásához jelöljön ki egy szövegrészt" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "Feljegyzések szűrése..." #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Könyvjelzők" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "Nincsenek könyvjelzők" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "Hozzon létre néhány könyvjelzőt, hogy itt megtalálhassa őket" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "Nincs találat" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "Próbálkozzon más keresőkifejezéssel" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "Oldalsáv" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "Nézet" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "Kicsinyítés" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "Eredeti méret visszaállítása" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "Nagyítás" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "Rendszertéma használata" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "Világos mód" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "Sötét mód" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Teljes képernyő" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "Feljegyzések exportálása" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "Exportálás" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "Formátum" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "" "Válassza a “JSON” opciót, ha a későbbiekben szeretné visszaimportálni a " "feljegyzéseket a programba" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "Markdown" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "Org Mode" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Másolás" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "Mentés másként..." #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "Elforgatás 90°-kal az óramutató járásával ellentétesen" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "Elforgatás 90°-kal az óramutató járásával megegyezően" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "Feljegyzések importálása" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "Importálás" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "" "Az azonosító nem egyezik. A feljegyzések feltehetően nem ehhez a könyvhöz " "tartoznak." #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "Importálás mindenképpen" #: src/ui/library.ui:6 msgid "List View" msgstr "Listanézet" #: src/ui/library.ui:11 msgid "Grid View" msgstr "Rácsnézet" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Megnyitás..." #: src/ui/library.ui:67 msgid "Main Menu" msgstr "Főmenü" #: src/ui/library.ui:110 msgid "Open" msgstr "Megnyitás" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "Könyvtár menü" #: src/ui/library.ui:134 msgid "Search library…" msgstr "Keresés a könyvtárban...." #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "Vissza" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "Előre" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "Még nem adott hozzá könyvet a könyvtárhoz" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "Nyisson meg egy könyvet az olvasáshoz" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "Pozíció" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "Felolvasás" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "A fejezetből hátralévő idő" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "A könyből hátralévő idő" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "Oldal" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "Beillesztés és ugrás" #: src/ui/navbar.ui:322 msgid "Section" msgstr "Szakasz" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "Első szakasz" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "Előző szakasz" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "Ugrás ide..." #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "Következő szakasz" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "Utolsó szakasz" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Kiemelés" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "Felolvasás innentől" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "Másolás idézőjelekben" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "Azonosító másolása" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "Kijelölés nyomtatása..." #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "Sebesség" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "Hangmagasság" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "Lejátszás/Szünet" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "Leállítás" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "Betűtípus" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "Betűméret" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "Alapértelmezett betűméret" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "Minimális betűméret" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "Betűtípus család" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "Alapértelmezett betűtípus" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "Talpas" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "Talpatlan" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "A beépített betűtípus felülírása" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "Talpas betűtípuscsalád" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "Talpatlan betűtípuscsalád" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "Állandó szélességű betűtípuscsalád" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "Elrendezés" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "Bekezdés" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "Sormagasság" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "Teljes sorkizárás" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "Elválasztás" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Margók" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "Oszlopok száma összesen" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "Maximális sorméret" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "" "Maximum oszlopszélesség (vízszintes írásnál) vagy magasság (függőleges " "írásnál)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "Maxmimális hasábméret" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "" "Maximális magasság (vízszintes írásnál) vagy szélesség (függőleges írásnál)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "Szín" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "Viselkedés" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "Animáció csökkentése" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "E-book olvasó" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "E-Book;Könyv;EPUB;Olvasó;Reader;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "Nyisson új fejezetet az olvasásban a Foliate segítségével, a modern e-" "book olvasóval, melyet a GNOME felülethez igazítottunk. Merüljön el az " "olvasásban egy letisztult és személyre szabható felület segítségével, amelyet " "úgy terveztek, hogy igazodjon az Ön egyéni igényeihez." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "Legfontosabb jellemzők:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "EPUB, Mobipocket, Kindle, FB2, CBZ és PDF formátumok megnyitása" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "Oldalankénti valamint folyamatos megjelenítési mód" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "Személyre szabható betű - és sorköz" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "Világos, szépia, sötét és invertált megjelenítési módok" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "Olvasási folyamatsáv, fejezetjelzőkkel" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "Könyjelzők és feljegyzések" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "Keresés a könyvben" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "Gyors keresés a szótárban" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "Javított fejezet megjelenítés abban az esetben, ha a fejezet sortöréssel kezdődik" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "Javított szövegelrendezés a táblázatokon belül" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "Javításra került az OPDS katalógusoknál fellépő teljesítményprobléma" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "OPDS katalógusok támogatása (mostantól az OPDS 2.0 is támogatott)" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 #, fuzzy msgid "Added option to override publisher font" msgstr "A beépített betűtípus felülírása" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "Csökkenthető programanimáció" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "A CBZ fájlokban elhelyezett JPEG XL elemek támogatása" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "A Trackerből történő fájl megnyitás javításra került a Flatpak csomagban" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "Dátumfeldolgozással kapcsolatos hibák javítása" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "A Foliate alapjaiban került újraírásra, az e-book feldolgozó motor " "megújításával,valamint a legfrissebb platform modulokkal (GTK 4 és " "Libadwita) továbbá egy felfrissített felhasználói felülettel,és jobb " "teljesítménnyel." #~ msgid "Book" #~ msgstr "Könyv" #~ msgid "EPUB" #~ msgstr "EPUB" #~ msgid "Ebook" #~ msgstr "Ebook" #~ msgid "Reader" #~ msgstr "Olvasó" #~ msgid "Viewer" #~ msgstr "Olvasó" ================================================ FILE: po/id.po ================================================ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # Muktazam Hasbi Ashidiqi , 2019. # msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2019-06-14 21:02+0700\n" "Last-Translator: \n" "Language-Team: \n" "Language: id_ID\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 2.2.1\n" #: src/annotations.js:137 src/annotations.js:172 #, fuzzy msgid "Bookmark deleted" msgstr "Penanda buku" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "" #: src/annotations.js:437 msgid "Underline" msgstr "" #: src/annotations.js:438 msgid "Squiggly" msgstr "" #: src/annotations.js:439 msgid "Strikethrough" msgstr "" #: src/annotations.js:440 msgid "Yellow" msgstr "Kuning" #: src/annotations.js:441 #, fuzzy msgid "Orange" msgstr "Oranye" #: src/annotations.js:442 msgid "Red" msgstr "Merah" #: src/annotations.js:443 msgid "Magenta" msgstr "Magenta" #: src/annotations.js:444 msgid "Aqua" msgstr "Aqua" #: src/annotations.js:445 msgid "Lime" msgstr "Limau" #: src/annotations.js:446 msgid "Custom Color…" msgstr "" #: src/annotations.js:498 msgid "Custom" msgstr "" #: src/annotations.js:592 #, fuzzy msgid "JSON Files" msgstr "Semua berkas" #: src/annotations.js:597 src/app.js:149 #, fuzzy msgid "All Files" msgstr "Semua berkas" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 #, fuzzy msgid "No Annotations" msgstr "Anotasi" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "" #: src/annotations.js:625 #, fuzzy msgid "Cannot Import Annotations" msgstr "Ekspor Anotasi…" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "" #: src/annotations.js:648 #, fuzzy, javascript-format msgid "Annotations for “%s”" msgstr "Anotasi" #: src/annotations.js:649 #, fuzzy, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "Anotasi" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "" #: src/app.js:136 #, fuzzy msgid "E-Book Files" msgstr "Berkas E-book" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "" #: src/app.js:414 msgid "Source Code" msgstr "" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Penerbit" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 #, fuzzy msgid "Published" msgstr "Penerbit" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Bahasa" #: src/book-info.js:139 #, fuzzy msgid "Translated by" msgstr "Terjemahkan" #: src/book-info.js:140 msgid "Edited by" msgstr "" #: src/book-info.js:141 msgid "Narrated by" msgstr "" #: src/book-info.js:142 msgid "Illustrated by" msgstr "" #: src/book-info.js:143 msgid "Produced by" msgstr "" #: src/book-info.js:144 msgid "Artwork by" msgstr "" #: src/book-info.js:145 msgid "Color by" msgstr "" #: src/book-info.js:146 #, fuzzy msgid "Contributors" msgstr "Tampilkan daftar isi" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "Pengidentifikasi" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "Tentang Buku Ini" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "" #: src/book-viewer.js:29 #, fuzzy, javascript-format msgid "Page %s" msgstr "Halaman berikutnya" #: src/book-viewer.js:32 #, fuzzy msgid "Footnote" msgstr "Pergi ke halaman berikutnya" #: src/book-viewer.js:33 #, fuzzy msgid "Go to Footnote" msgstr "Pergi ke halaman berikutnya" #: src/book-viewer.js:34 msgid "Endnote" msgstr "" #: src/book-viewer.js:35 #, fuzzy msgid "Go to Endnote" msgstr "Pergi ke halaman berikutnya" #: src/book-viewer.js:36 msgid "Note" msgstr "" #: src/book-viewer.js:37 #, fuzzy msgid "Go to Note" msgstr "Pergi ke halaman berikutnya" #: src/book-viewer.js:38 #, fuzzy msgid "Definition" msgstr "Tidak ada hasil" #: src/book-viewer.js:39 #, fuzzy msgid "Go to Definition" msgstr "Kembali ke lokasi sebelumnya" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "" #: src/book-viewer.js:622 #, fuzzy msgid "Remove bookmark" msgstr "Hapus" #: src/book-viewer.js:623 #, fuzzy msgid "Add bookmark" msgstr "Tidak ada penanda buku" #: src/book-viewer.js:714 #, fuzzy msgid "File not found" msgstr "Entri tidak ditemukan." #: src/book-viewer.js:715 msgid "File type not supported" msgstr "" #: src/book-viewer.js:804 #, fuzzy msgid "Annotation deleted" msgstr "Anotasi" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "" #: src/book-viewer.js:904 msgid "Image" msgstr "" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "dari %d" #: src/library.js:47 msgid "Loading" msgstr "" #: src/library.js:48 #, fuzzy msgid "Failed to Load" msgstr "Salin ke clipboard" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "" #: src/library.js:51 msgid "See All" msgstr "" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 #, fuzzy msgid "Search" msgstr "Mencari…" #: src/library.js:53 msgid "Filter" msgstr "" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "" #: src/library.js:56 msgid "Buy" msgstr "" #: src/library.js:58 msgid "Preview" msgstr "" #: src/library.js:59 msgid "Sample" msgstr "" #: src/library.js:60 msgid "Borrow" msgstr "" #: src/library.js:61 msgid "Subscribe" msgstr "" #: src/library.js:63 msgid "Free" msgstr "" #: src/library.js:65 msgid "First" msgstr "" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "" #: src/library.js:68 msgid "Last" msgstr "" #: src/library.js:70 #, fuzzy msgid "Search Terms" msgstr "Mencari…" #: src/library.js:72 msgid "Title" msgstr "" #: src/library.js:73 msgid "Author" msgstr "" #: src/library.js:74 #, fuzzy msgid "Contributor" msgstr "Tampilkan daftar isi" #: src/library.js:438 #, fuzzy msgid "Remove Book?" msgstr "Hapus" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "" #: src/library.js:441 msgid "_Cancel" msgstr "" #: src/library.js:442 msgid "_Remove" msgstr "" #: src/library.js:472 #, fuzzy msgid "Failed to Open" msgstr "Salin ke clipboard" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "" #: src/library.js:644 msgid "Download Failed" msgstr "" #: src/library.js:698 msgid "Rename…" msgstr "" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "" #: src/library.js:725 msgid "Name" msgstr "" #: src/library.js:740 #, fuzzy msgid "All Books" msgstr "Penanda buku" #: src/library.js:746 #, fuzzy msgid "Add Catalog…" msgstr "Buka Berkas…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "" #: src/library.js:821 msgid "Catalogs" msgstr "" #: src/library.js:864 msgid "Catalog removed" msgstr "" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "" #: src/library.js:952 msgid "Add" msgstr "" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" #: src/library.js:961 msgid "URL" msgstr "" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 #, fuzzy msgid "Dictionary" msgstr "Izinkan Kamus" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" #: src/selection-tools.js:38 src/selection-tools.js:51 #, fuzzy msgid "No Definitions Found" msgstr "Tidak ada hasil" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Wikipedia" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" #: src/selection-tools.js:52 #, fuzzy msgid "Search on Wikipedia" msgstr "Wikipedia" #: src/selection-tools.js:59 msgid "Translate" msgstr "Terjemahkan" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "" #: src/selection-tools.js:67 #, fuzzy msgid "Search…" msgstr "Mencari…" #: src/themes.js:8 msgid "Default" msgstr "" #: src/themes.js:13 msgid "Gray" msgstr "" #: src/themes.js:18 msgid "Sepia" msgstr "" #: src/themes.js:23 msgid "Grass" msgstr "" #: src/themes.js:28 msgid "Cherry" msgstr "" #: src/themes.js:33 msgid "Sky" msgstr "" #: src/themes.js:38 msgid "Solarized" msgstr "" #: src/themes.js:43 msgid "Gruvbox" msgstr "" #: src/themes.js:48 msgid "Nord" msgstr "" #: src/tts.js:117 #, fuzzy msgid "Text-to-Speech Error" msgstr "Text-to-speech" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "" #: src/utils.js:168 #, fuzzy msgid "Copied to clipboard" msgstr "Salin ke clipboard" #: src/ui/annotation-popover.ui:13 #, fuzzy msgid "Highlight Style" msgstr "Sorot" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "" #: src/ui/annotation-popover.ui:47 #, fuzzy msgid "Add Note…" msgstr "Buka Berkas…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 #, fuzzy msgid "Export Annotations…" msgstr "Ekspor Anotasi…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "" #: src/ui/book-viewer.ui:21 #, fuzzy msgid "Import Annotations…" msgstr "Ekspor Anotasi…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "Tentang Foliate" #: src/ui/book-viewer.ui:45 #, fuzzy msgid "All Sections" msgstr "Seluruh bagian" #: src/ui/book-viewer.ui:50 #, fuzzy msgid "Current Section" msgstr "Bagian saat ini" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "" #: src/ui/book-viewer.ui:89 #, fuzzy msgid "Scrolled Mode" msgstr "Gulir" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "" #: src/ui/book-viewer.ui:193 #, fuzzy msgid "Open Another File…" msgstr "Buka berkas" #: src/ui/book-viewer.ui:245 #, fuzzy msgid "Pin Sidebar" msgstr "Tampilkan penanda buku" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "" #: src/ui/book-viewer.ui:276 #, fuzzy msgid "Find in book…" msgstr "Temukan dalam buku" #: src/ui/book-viewer.ui:313 #, fuzzy msgid "Contents" msgstr "Tampilkan daftar isi" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Anotasi" #: src/ui/book-viewer.ui:403 #, fuzzy msgid "Select some text to add annotations" msgstr "Tidak ada anotasi" #: src/ui/book-viewer.ui:433 #, fuzzy msgid "Filter annotations…" msgstr "Tampilkan anotasi" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Penanda buku" #: src/ui/book-viewer.ui:458 #, fuzzy msgid "No Bookmarks" msgstr "Penanda buku" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 #, fuzzy msgid "No Results Found" msgstr "Tidak ada hasil" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 #, fuzzy msgid "Sidebar" msgstr "Tampilkan penanda buku" #: src/ui/book-viewer.ui:556 #, fuzzy msgid "View Menu" msgstr "Lihat" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 #, fuzzy msgid "Zoom Out" msgstr "Perkecil" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 #, fuzzy msgid "Zoom In" msgstr "Perbesar" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "" #: src/ui/book-viewer.ui:611 #, fuzzy msgid "Light Style" msgstr "Terang" #: src/ui/book-viewer.ui:621 #, fuzzy msgid "Dark Style" msgstr "Gunakan Mode Gelap" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Layar Penuh" #: src/ui/export-dialog.ui:5 #, fuzzy msgid "Export Annotations" msgstr "Ekspor Anotasi…" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Salin" #: src/ui/image-viewer.ui:10 #, fuzzy msgid "Save As…" msgstr "Simpan berkas" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "" #: src/ui/import-dialog.ui:7 #, fuzzy msgid "Import Annotations" msgstr "Ekspor Anotasi…" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "" #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "" #: src/ui/library.ui:6 #, fuzzy msgid "List View" msgstr "Lihat" #: src/ui/library.ui:11 #, fuzzy msgid "Grid View" msgstr "Lihat" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Buka…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "" #: src/ui/library.ui:110 #, fuzzy msgid "Open" msgstr "Buka…" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "" #: src/ui/library.ui:134 #, fuzzy msgid "Search library…" msgstr "Mencari…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "" #: src/ui/library-view.ui:21 #, fuzzy msgid "No Books Yet" msgstr "Tidak ada penanda buku" #: src/ui/library-view.ui:22 #, fuzzy msgid "Open a book to start reading" msgstr "Buka buku untuk memulai membaca" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 #, fuzzy msgid "Location" msgstr "Kembali ke lokasi sebelumnya" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "" #: src/ui/navbar.ui:162 #, fuzzy msgid "Time Left in Section" msgstr "%d menit lagi pada buku" #: src/ui/navbar.ui:192 #, fuzzy msgid "Time Left in Book" msgstr "%d menit lagi pada buku" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 #, fuzzy msgid "Page" msgstr "Halaman berikutnya" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "" #: src/ui/navbar.ui:322 #, fuzzy msgid "Section" msgstr "Seleksi" #: src/ui/navbar.ui:388 #, fuzzy msgid "First Section" msgstr "Bagian saat ini" #: src/ui/navbar.ui:397 #, fuzzy msgid "Previous Section" msgstr "Kembali ke lokasi sebelumnya" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "" #: src/ui/navbar.ui:414 #, fuzzy msgid "Next Section" msgstr "Bagian saat ini" #: src/ui/navbar.ui:423 #, fuzzy msgid "Last Section" msgstr "Seleksi" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Sorot" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "" #: src/ui/selection-popover.ui:40 #, fuzzy msgid "Copy Identifier" msgstr "Pengidentifikasi" #: src/ui/selection-popover.ui:44 #, fuzzy msgid "Print Selection…" msgstr "Bagian saat ini" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "" #: src/ui/view-preferences-window.ui:9 #, fuzzy msgid "Font Size" msgstr "Perkecil ukuran fonta" #: src/ui/view-preferences-window.ui:12 #, fuzzy msgid "Default Font Size" msgstr "Perkecil ukuran fonta" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "" #: src/ui/view-preferences-window.ui:121 #, fuzzy msgid "Line Height" msgstr "Terang" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "Rata Kanan-Kiri" #: src/ui/view-preferences-window.ui:146 #, fuzzy msgid "Hyphenation" msgstr "Tanda hubung otomatis" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Margin" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "" #: src/ui/view-preferences-window.ui:246 #, fuzzy msgid "Reduce Animation" msgstr "Anotasi" #: data/com.github.johnfactotum.Foliate.desktop.in:5 #, fuzzy msgid "E-Book Viewer" msgstr "Pemirsa eBook" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "Ebook,Buku,EPUB,Pemirsa,Pembaca;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 #, fuzzy msgid "Bookmarks and annotations" msgstr "Anotasi" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 #, fuzzy msgid "Find in book" msgstr "Temukan dalam buku" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 msgid "Added option to override publisher font" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" #, fuzzy #~ msgid "Book" #~ msgstr "Penanda buku" #, fuzzy #~ msgid "Viewer" #~ msgstr "Lihat" #~ msgid "John Factotum" #~ msgstr "John Factotum" #, fuzzy #~ msgid "Reference" #~ msgstr "Preferensi" #, fuzzy #~ msgid "Go to Reference" #~ msgstr "Preferensi" #~ msgid "Keyboard Shortcuts" #~ msgstr "Pintasan Keyboard" #~ msgid "Preferences" #~ msgstr "Preferensi" #, fuzzy #~ msgid "Fold Sidebar" #~ msgstr "Tampilkan penanda buku" #, fuzzy #~ msgid "Save File" #~ msgstr "Buka berkas" #, fuzzy #~ msgid "Choose highlight style" #~ msgstr "Berkas E-book" #, fuzzy #~ msgid "About this book" #~ msgstr "Tentang Buku Ini" #, fuzzy #~ msgid "Toggle sidebar" #~ msgstr "Tampilkan penanda buku" #, fuzzy #~ msgid "Go to previous page" #~ msgstr "Pergi ke halaman sebelumnya" #~ msgid "Go back to previous location" #~ msgstr "Kembali ke lokasi sebelumnya" #, fuzzy #~ msgid "Go to next section" #~ msgstr "Pergi ke halaman berikutnya" #, fuzzy #~ msgid "Go to last section" #~ msgstr "Kembali ke lokasi sebelumnya" ================================================ FILE: po/ie.po ================================================ # Interlingue translation of Foliate. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # OIS , 2020. # msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2020-07-06 13:17+0800\n" "Last-Translator: OIS \n" "Language-Team: \n" "Language: ie\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: Poedit 2.3\n" #: src/annotations.js:137 src/annotations.js:172 #, fuzzy msgid "Bookmark deleted" msgstr "Marca-págines" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "" #: src/annotations.js:437 msgid "Underline" msgstr "" #: src/annotations.js:438 msgid "Squiggly" msgstr "" #: src/annotations.js:439 msgid "Strikethrough" msgstr "" #: src/annotations.js:440 msgid "Yellow" msgstr "" #: src/annotations.js:441 #, fuzzy msgid "Orange" msgstr "Arangeator" #: src/annotations.js:442 #, fuzzy msgid "Red" msgstr "Recargar" #: src/annotations.js:443 msgid "Magenta" msgstr "" #: src/annotations.js:444 msgid "Aqua" msgstr "" #: src/annotations.js:445 msgid "Lime" msgstr "" #: src/annotations.js:446 #, fuzzy msgid "Custom Color…" msgstr "Selecter un color personalisat" #: src/annotations.js:498 #, fuzzy msgid "Custom" msgstr "Personal tema" #: src/annotations.js:592 #, fuzzy msgid "JSON Files" msgstr "Omni files" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "Omni files" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 #, fuzzy msgid "No Annotations" msgstr "Anotationes" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "" #: src/annotations.js:625 #, fuzzy msgid "Cannot Import Annotations" msgstr "Importar anotationes..." #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 #, fuzzy msgid "An error occurred" msgstr "Un errore evenit." #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "" #: src/annotations.js:648 #, fuzzy, javascript-format msgid "Annotations for “%s”" msgstr "Anotationes" #: src/annotations.js:649 #, fuzzy, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "Anotationes" msgstr[1] "Anotationes" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "" #: src/app.js:136 #, fuzzy msgid "E-Book Files" msgstr "Files de e-libres" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "OIS , 2020" #: src/app.js:414 #, fuzzy msgid "Source Code" msgstr "Orígine: " #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Publicator" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 #, fuzzy msgid "Published" msgstr "Publicator" #. Translators: this is the heading for the modified date #: src/book-info.js:137 #, fuzzy msgid "Updated" msgstr "Actualisar" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Lingue" #: src/book-info.js:139 #, fuzzy msgid "Translated by" msgstr "Traducter" #: src/book-info.js:140 msgid "Edited by" msgstr "" #: src/book-info.js:141 msgid "Narrated by" msgstr "" #: src/book-info.js:142 msgid "Illustrated by" msgstr "" #: src/book-info.js:143 msgid "Produced by" msgstr "" #: src/book-info.js:144 msgid "Artwork by" msgstr "" #: src/book-info.js:145 msgid "Color by" msgstr "" #: src/book-info.js:146 #, fuzzy msgid "Contributors" msgstr "Contenete" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "Identificator" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "Pri ti-ci libre" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "" #: src/book-viewer.js:29 #, fuzzy, javascript-format msgid "Page %s" msgstr "Sequent págine" #: src/book-viewer.js:32 #, fuzzy msgid "Footnote" msgstr "Ear al sequent págine" #: src/book-viewer.js:33 #, fuzzy msgid "Go to Footnote" msgstr "Ear al sequent págine" #: src/book-viewer.js:34 msgid "Endnote" msgstr "" #: src/book-viewer.js:35 #, fuzzy msgid "Go to Endnote" msgstr "Ear al sequent págine" #: src/book-viewer.js:36 msgid "Note" msgstr "" #: src/book-viewer.js:37 #, fuzzy msgid "Go to Note" msgstr "Ear al sequent págine" #: src/book-viewer.js:38 #, fuzzy msgid "Definition" msgstr "Null resultates trovat" #: src/book-viewer.js:39 #, fuzzy msgid "Go to Definition" msgstr "Ear a localisation" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "" #: src/book-viewer.js:622 #, fuzzy msgid "Remove bookmark" msgstr "Remover li libre" #: src/book-viewer.js:623 #, fuzzy msgid "Add bookmark" msgstr "Adjunter libres" #: src/book-viewer.js:714 #, fuzzy msgid "File not found" msgstr "File ne esset trovat." #: src/book-viewer.js:715 #, fuzzy msgid "File type not supported" msgstr "Tip de file ne es suportat." #: src/book-viewer.js:804 #, fuzzy msgid "Annotation deleted" msgstr "Anotation" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "Image ex «%s»" #: src/book-viewer.js:904 msgid "Image" msgstr "Image" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "ex %d" #: src/library.js:47 msgid "Loading" msgstr "" #: src/library.js:48 msgid "Failed to Load" msgstr "" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "Recargar" #: src/library.js:51 msgid "See All" msgstr "" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "Serchar" #: src/library.js:53 msgid "Filter" msgstr "" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "" #: src/library.js:56 msgid "Buy" msgstr "" #: src/library.js:58 msgid "Preview" msgstr "" #: src/library.js:59 msgid "Sample" msgstr "" #: src/library.js:60 msgid "Borrow" msgstr "" #: src/library.js:61 msgid "Subscribe" msgstr "" #: src/library.js:63 msgid "Free" msgstr "" #: src/library.js:65 msgid "First" msgstr "" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "" #: src/library.js:68 msgid "Last" msgstr "" #: src/library.js:70 #, fuzzy msgid "Search Terms" msgstr "Serchar" #: src/library.js:72 msgid "Title" msgstr "" #: src/library.js:73 msgid "Author" msgstr "" #: src/library.js:74 #, fuzzy msgid "Contributor" msgstr "Contenete" #: src/library.js:438 #, fuzzy msgid "Remove Book?" msgstr "Remover li libre" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "" #: src/library.js:441 msgid "_Cancel" msgstr "" #: src/library.js:442 msgid "_Remove" msgstr "" #: src/library.js:472 msgid "Failed to Open" msgstr "" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "" #: src/library.js:644 msgid "Download Failed" msgstr "" #: src/library.js:698 msgid "Rename…" msgstr "" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "" #: src/library.js:725 msgid "Name" msgstr "" #: src/library.js:740 #, fuzzy msgid "All Books" msgstr "Menú" #: src/library.js:746 #, fuzzy msgid "Add Catalog…" msgstr "Adjunter libres..." #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "Biblioteca" #: src/library.js:821 msgid "Catalogs" msgstr "" #: src/library.js:864 msgid "Catalog removed" msgstr "" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "" #: src/library.js:952 msgid "Add" msgstr "" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" #: src/library.js:961 msgid "URL" msgstr "" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "Dictionarium" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" #: src/selection-tools.js:38 src/selection-tools.js:51 #, fuzzy msgid "No Definitions Found" msgstr "Null resultates trovat" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Wikipedia" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" #: src/selection-tools.js:52 #, fuzzy msgid "Search on Wikipedia" msgstr "Wikipedia" #: src/selection-tools.js:59 msgid "Translate" msgstr "Traducter" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "" #: src/selection-tools.js:67 #, fuzzy msgid "Search…" msgstr "Serchar" #: src/themes.js:8 msgid "Default" msgstr "" #: src/themes.js:13 msgid "Gray" msgstr "" #: src/themes.js:18 msgid "Sepia" msgstr "" #: src/themes.js:23 msgid "Grass" msgstr "" #: src/themes.js:28 msgid "Cherry" msgstr "" #: src/themes.js:33 msgid "Sky" msgstr "" #: src/themes.js:38 msgid "Solarized" msgstr "" #: src/themes.js:43 msgid "Gruvbox" msgstr "" #: src/themes.js:48 msgid "Nord" msgstr "" #: src/tts.js:117 #, fuzzy msgid "Text-to-Speech Error" msgstr "Parlation" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "" #: src/ui/annotation-popover.ui:13 #, fuzzy msgid "Highlight Style" msgstr "Marcar" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "Remover" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "Menú" #: src/ui/annotation-popover.ui:47 #, fuzzy msgid "Add Note…" msgstr "Adjunter libres..." #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "Exportar anotationes..." #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "Aperter un copie" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "Importar anotationes..." #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "Pri Foliate" #: src/ui/book-viewer.ui:45 #, fuzzy msgid "All Sections" msgstr "Collectiones" #: src/ui/book-viewer.ui:50 #, fuzzy msgid "Current Section" msgstr "Li actual capitul" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "" #: src/ui/book-viewer.ui:89 #, fuzzy msgid "Scrolled Mode" msgstr "Rulat" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "Detallies" #: src/ui/book-viewer.ui:193 #, fuzzy msgid "Open Another File…" msgstr "Aperter un file" #: src/ui/book-viewer.ui:245 #, fuzzy msgid "Pin Sidebar" msgstr "Monstrar li panel láteral" #: src/ui/book-viewer.ui:253 #, fuzzy msgid "Book Menu" msgstr "Menú" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "Trovar" #: src/ui/book-viewer.ui:276 #, fuzzy msgid "Find in book…" msgstr "Trovar in li libre" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "Contenete" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Anotationes" #: src/ui/book-viewer.ui:403 #, fuzzy msgid "Select some text to add annotations" msgstr "Null anotationes" #: src/ui/book-viewer.ui:433 #, fuzzy msgid "Filter annotations…" msgstr "Serchar anotationes" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Marca-págines" #: src/ui/book-viewer.ui:458 #, fuzzy msgid "No Bookmarks" msgstr "Marca-págines" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 #, fuzzy msgid "No Results Found" msgstr "Null resultates trovat" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 #, fuzzy msgid "Try a different search" msgstr "Prova un altri sercha." #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 #, fuzzy msgid "Sidebar" msgstr "Monstrar li panel láteral" #: src/ui/book-viewer.ui:556 #, fuzzy msgid "View Menu" msgstr "Menú" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 #, fuzzy msgid "Zoom Out" msgstr "Diminuer" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 #, fuzzy msgid "Zoom In" msgstr "Agrandar" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "" #: src/ui/book-viewer.ui:611 #, fuzzy msgid "Light Style" msgstr "Lucid" #: src/ui/book-viewer.ui:621 #, fuzzy msgid "Dark Style" msgstr "Mode obscur" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Plen-ecran" #: src/ui/export-dialog.ui:5 #, fuzzy msgid "Export Annotations" msgstr "Exportar anotationes..." #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Copiar" #: src/ui/image-viewer.ui:10 #, fuzzy msgid "Save As…" msgstr "Gardar quam" #: src/ui/image-viewer.ui:25 #, fuzzy msgid "Rotate 90° Counter-Clockwise" msgstr "Rotar a levul por 90°" #: src/ui/image-viewer.ui:32 #, fuzzy msgid "Rotate 90° Clockwise" msgstr "Rotar a dextri por 90°" #: src/ui/import-dialog.ui:7 #, fuzzy msgid "Import Annotations" msgstr "Importar anotationes..." #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "" #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "" #: src/ui/library.ui:6 #, fuzzy msgid "List View" msgstr "Vise" #: src/ui/library.ui:11 #, fuzzy msgid "Grid View" msgstr "Vise" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Aperter..." #: src/ui/library.ui:67 #, fuzzy msgid "Main Menu" msgstr "Menú" #: src/ui/library.ui:110 #, fuzzy msgid "Open" msgstr "Aperter..." #: src/ui/library.ui:117 #, fuzzy msgid "Library Menu" msgstr "Biblioteca" #: src/ui/library.ui:134 #, fuzzy msgid "Search library…" msgstr "Sercha..." #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "" #: src/ui/library-view.ui:21 #, fuzzy msgid "No Books Yet" msgstr "Hay ancor null libres" #: src/ui/library-view.ui:22 #, fuzzy msgid "Open a book to start reading" msgstr "Aperte un libre por comensar letion." #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "Localisation" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "" #: src/ui/navbar.ui:162 #, fuzzy msgid "Time Left in Section" msgstr "Témpor restant in li libre" #: src/ui/navbar.ui:192 #, fuzzy msgid "Time Left in Book" msgstr "Témpor restant in li libre" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 #, fuzzy msgid "Page" msgstr "Sequent págine" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "" #: src/ui/navbar.ui:322 msgid "Section" msgstr "Section" #: src/ui/navbar.ui:388 #, fuzzy msgid "First Section" msgstr "Li actual capitul" #: src/ui/navbar.ui:397 #, fuzzy msgid "Previous Section" msgstr "Retornar al precedent localisation" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "" #: src/ui/navbar.ui:414 #, fuzzy msgid "Next Section" msgstr "Li actual capitul" #: src/ui/navbar.ui:423 #, fuzzy msgid "Last Section" msgstr "Section" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Marcar" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "Dir de ci" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "" #: src/ui/selection-popover.ui:40 #, fuzzy msgid "Copy Identifier" msgstr "Identificator" #: src/ui/selection-popover.ui:44 #, fuzzy msgid "Print Selection…" msgstr "Li actual capitul" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "" #: src/ui/view-preferences-window.ui:47 #, fuzzy msgid "Serif" msgstr "Serie" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "" #: src/ui/view-preferences-window.ui:121 #, fuzzy msgid "Line Height" msgstr "Altore de lineas" #: src/ui/view-preferences-window.ui:135 #, fuzzy msgid "Full Justification" msgstr "Alineament de subtitules" #: src/ui/view-preferences-window.ui:146 #, fuzzy msgid "Hyphenation" msgstr "Separation síllabic" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Márgines" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "" #: src/ui/view-preferences-window.ui:246 #, fuzzy msgid "Reduce Animation" msgstr "Anotationes" #: data/com.github.johnfactotum.Foliate.desktop.in:5 #, fuzzy msgid "E-Book Viewer" msgstr "Visor de eLibres" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "Ebook;Elibre;Libre;EPUB;Visor;Letor;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 #, fuzzy msgid "Bookmarks and annotations" msgstr "Anotationes" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 #, fuzzy msgid "Find in book" msgstr "Trovar in li libre" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 msgid "Added option to override publisher font" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" #, fuzzy #~ msgid "Book" #~ msgstr "Menú" #, fuzzy #~ msgid "Viewer" #~ msgstr "Menú" #~ msgid "John Factotum" #~ msgstr "John Factotum" #, fuzzy #~ msgid "Reference" #~ msgstr "Preferenties" #, fuzzy #~ msgid "Go to Reference" #~ msgstr "Preferenties" #~ msgid "Keyboard Shortcuts" #~ msgstr "Rapid-tastes" #~ msgid "Preferences" #~ msgstr "Preferenties" #~ msgid "Speak" #~ msgstr "Dir" #, fuzzy #~ msgid "Fold Sidebar" #~ msgstr "Monstrar li panel láteral" #, fuzzy #~ msgid "Voice" #~ msgstr "Actor" #~ msgid "Save File" #~ msgstr "Gardar li file" #, fuzzy #~ msgid "Choose highlight style" #~ msgstr "Color de marca" #~ msgid "More" #~ msgstr "Plu" #, fuzzy #~ msgid "About this book" #~ msgstr "Pri ti-ci libre" #, fuzzy #~ msgid "Toggle sidebar" #~ msgstr "Usar li panel láteral" #~ msgid "Restore zoom" #~ msgstr "Scale predefinit" #~ msgid "Go to previous page" #~ msgstr "Ear al precedent págine" #~ msgid "Go back to previous location" #~ msgstr "Retornar al precedent localisation" #, fuzzy #~ msgid "Go to next section" #~ msgstr "Ear al sequent págine" #, fuzzy #~ msgid "Go to last section" #~ msgstr "Ear a localisation" ================================================ FILE: po/it.po ================================================ # Italian translations for com.github.johnfactotum.Foliate package # Traduzioni italiane per il pacchetto com.github.johnfactotum.Foliate.. # Copyright (C) 2019 THE com.github.johnfactotum.Foliate'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # Shiba, 2019. # msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2024-02-23 21:43+0100\n" "Last-Translator: Albano Battistella \n" "Language-Team: Italian\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.4.1\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "Segnalibri cancellati" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "Annulla" #: src/annotations.js:437 msgid "Underline" msgstr "Sottolineare" #: src/annotations.js:438 msgid "Squiggly" msgstr "Ondulato" #: src/annotations.js:439 msgid "Strikethrough" msgstr "Barrato" #: src/annotations.js:440 msgid "Yellow" msgstr "Giallo" #: src/annotations.js:441 msgid "Orange" msgstr "Arancione" #: src/annotations.js:442 msgid "Red" msgstr "Rosso" #: src/annotations.js:443 msgid "Magenta" msgstr "Magenta" #: src/annotations.js:444 msgid "Aqua" msgstr "Aqua" #: src/annotations.js:445 msgid "Lime" msgstr "Lime" #: src/annotations.js:446 msgid "Custom Color…" msgstr "Colore personalizzato…" #: src/annotations.js:498 msgid "Custom" msgstr "Personalizzato" #: src/annotations.js:592 msgid "JSON Files" msgstr "File JSON" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "Tutti i File" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "Nessuna Annotazione" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "Il file importato non ha annotazioni" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "Impossibile importare annotazioni" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "Si è verificato un errore" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "Non hai annotazioni per questo libro" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "Annotazioni per “%s”" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d Annotazione" msgstr[1] "%d Annotazioni" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "Chiudi" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "Annulla" #: src/app.js:136 msgid "E-Book Files" msgstr "File E-Book" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "Leggi gli e-book con stile" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "Gianluca Boiano,Albano Battistella" #: src/app.js:414 msgid "Source Code" msgstr "Codice sorgente " #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Editore" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "Pubblicato" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "Aggiornato" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Lingua" #: src/book-info.js:139 msgid "Translated by" msgstr "Tradotto da" #: src/book-info.js:140 msgid "Edited by" msgstr "Modificato da" #: src/book-info.js:141 msgid "Narrated by" msgstr "Narrato da" #: src/book-info.js:142 msgid "Illustrated by" msgstr "Illustrato da" #: src/book-info.js:143 msgid "Produced by" msgstr "Prodotto da" #: src/book-info.js:144 msgid "Artwork by" msgstr "Opera di" #: src/book-info.js:145 msgid "Color by" msgstr "Colori di" #: src/book-info.js:146 msgid "Contributors" msgstr "Contributori" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "ID" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "Informazioni su questo libro" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "Loc. %s di %s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "Pagina %s di %s" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "Pagina %s" #: src/book-viewer.js:32 msgid "Footnote" msgstr "note a piè di pagina" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "Vai alla nota a piè di pagina" #: src/book-viewer.js:34 msgid "Endnote" msgstr "Nota finale" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "Vai alla nota finale" #: src/book-viewer.js:36 msgid "Note" msgstr "Nota" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "Vai alla nota" #: src/book-viewer.js:38 msgid "Definition" msgstr "Definizione" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "Vai alla definizione" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "Bibliografia" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "Vai alla bibliografia" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "Rimuovi segnalibroo" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "Aggiungi segnalibro" #: src/book-viewer.js:714 msgid "File not found" msgstr "File non trovato" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "Tipo di file non supportato" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "Annotazione cancellata" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "Immagine da \"%s\"" #: src/book-viewer.js:904 msgid "Image" msgstr "Immagine" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "di %d" #: src/library.js:47 msgid "Loading" msgstr "Caricamento" #: src/library.js:48 msgid "Failed to Load" msgstr "Caricamento fallito" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "Ricarica" #: src/library.js:51 msgid "See All" msgstr "Mostra tutto" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "Cerca" #: src/library.js:53 msgid "Filter" msgstr "Filtro" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "" #: src/library.js:56 msgid "Buy" msgstr "Acquista" #: src/library.js:58 msgid "Preview" msgstr "Anteprima" #: src/library.js:59 msgid "Sample" msgstr "Esempio" #: src/library.js:60 msgid "Borrow" msgstr "Prestito" #: src/library.js:61 msgid "Subscribe" msgstr "Iscriviti" #: src/library.js:63 msgid "Free" msgstr "Gratuito" #: src/library.js:65 msgid "First" msgstr "Primo" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "Precedente" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "Prossimo" #: src/library.js:68 msgid "Last" msgstr "Ultimo" #: src/library.js:70 msgid "Search Terms" msgstr "Cerca termini" #: src/library.js:72 msgid "Title" msgstr "Titolo" #: src/library.js:73 msgid "Author" msgstr "Autore" #: src/library.js:74 msgid "Contributor" msgstr "Contributore" #: src/library.js:438 msgid "Remove Book?" msgstr "Rimuovere il Libro?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "" "L'avanzamento della lettura, le annotazioni e i segnalibri andranno persi " "definitivamente" #: src/library.js:441 msgid "_Cancel" msgstr "_Annulla" #: src/library.js:442 msgid "_Remove" msgstr "_Rimuovi" #: src/library.js:472 #, fuzzy msgid "Failed to Open" msgstr "Caricamento fallito" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "" #: src/library.js:644 msgid "Download Failed" msgstr "Download non riuscito" #: src/library.js:698 msgid "Rename…" msgstr "Rinomina…" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "Rimuovi" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "Rinomina" #: src/library.js:725 msgid "Name" msgstr "Nome" #: src/library.js:740 msgid "All Books" msgstr "Tutti i libri" #: src/library.js:746 msgid "Add Catalog…" msgstr "Aggiungi catalogo…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "Libreria" #: src/library.js:821 msgid "Catalogs" msgstr "Cataloghi" #: src/library.js:864 msgid "Catalog removed" msgstr "Catalogo rimosso" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "Aggiungi catalogo" #: src/library.js:952 msgid "Add" msgstr "Aggiungi" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "Puoi sfogliare e scaricare libri dai cataloghi OPDS. Ulteriori informazioni…" #: src/library.js:961 msgid "URL" msgstr "" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "Dizionario" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "Da Wiktionary, pubblicato sotto Licenza CC BY-SA." #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "Nessuna definizione trovata" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "Cerca su Wiktionary" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Wikipedia" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "Da Wikipedia, pubblicato sotto Licenza CC BY-SA." #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "Cerca su Wikipedia" #: src/selection-tools.js:59 msgid "Translate" msgstr "Traduci" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "Tradotto da Google Translate" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "Impossibile recuperare la traduzione" #: src/selection-tools.js:67 #, fuzzy msgid "Search…" msgstr "Cerca" #: src/themes.js:8 msgid "Default" msgstr "Predefinito" #: src/themes.js:13 msgid "Gray" msgstr "Grigio" #: src/themes.js:18 msgid "Sepia" msgstr "Sepia" #: src/themes.js:23 msgid "Grass" msgstr "Erba" #: src/themes.js:28 msgid "Cherry" msgstr "Ciliegia" #: src/themes.js:33 msgid "Sky" msgstr "Cielo" #: src/themes.js:38 msgid "Solarized" msgstr "Solarizzato" #: src/themes.js:43 msgid "Gruvbox" msgstr "" #: src/themes.js:48 msgid "Nord" msgstr "" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "Errore della Sintesi Vocale" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "" "Assicurati che Speech Dispatcher sia installato e funzionante sul tuo sistema" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "Copiato negli appunti" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "Stile di evidenziazione" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "Elimina" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "Menu" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "Aggiungi nota…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "Apri in una nuova finestra" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "Esporta Annotazioni…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "Nuova finestra" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "Apri una Copia" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "Importa Annotazioni…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "Informazioni su Foliate" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "Tutte le sezioni" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "Sezione corrente" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "Trova la corrispondenza solo con parole intere" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "Caso di corrispondenza" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "Abbina i segni diacritici" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "Impostazioni del font e del layout" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "Modalità di scorrimento" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "Inverti i colori in modalità scura" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "Nascondi automaticamente il cursore" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "Stampa…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "Ispettore" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "Impossibile aprire il libro" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "Dettagli" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "Apri un altro file…" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "Blocca barra laterale" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "Menu libro" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "Cerca" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "Cerca nel libro…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "Contenuti" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Annotazioni" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "Seleziona del testo per aggiungere annotazioni" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "Filtra annotazioni…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Segnalibri" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "Nessun Segnalibro" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "Aggiungi alcuni segnalibri per vederli qui" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "Nessun risultato trovato" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "Prova una ricerca diversa" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "Barra laterale" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "Vista del Menu" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "Rimpicciolisci" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "Ripristina Zoom" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "Ingrandisci" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "Segui lo stile del sistema" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "Stile chiaro" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "Stile Scuro" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Schermo intero" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "Esporta Annotazioni" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "Esporta" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "Formato" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "" "Scegli \"JSON\" se prevedi di importare nuovamente le annotazioni in Foliate" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "Markdown" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "Modalità Org" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Copia" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "Salva come…" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "Ruota di 90° in senso antiorario" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "Ruota di 90° in senso orario" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "Importa Annotazioni" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "Importa" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "" "L'identificatore non corrisponde. Queste annotazioni potrebbero non " "riguardare questo libro." #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "Importa comunque" #: src/ui/library.ui:6 msgid "List View" msgstr "Vista ad elenco" #: src/ui/library.ui:11 msgid "Grid View" msgstr "Vista a grigia" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Apri…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "Menu principale" #: src/ui/library.ui:110 msgid "Open" msgstr "Apri" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "Menù libreria" #: src/ui/library.ui:134 msgid "Search library…" msgstr "Cerca libreria…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "Indietro" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "Avanti" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "Ancora nessun libro" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "Apri un libro per iniziare a leggere" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "Posizione" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "Narrazione" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "Tempo rimasto nella sezione" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "Tempo rimasto nel libro" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "Pagina" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "Incolla e vai" #: src/ui/navbar.ui:322 msgid "Section" msgstr "Sezione" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "Prima sezione" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "Precedente sezione" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "Salta a…" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "Prossima sezione" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "Ultima sezione" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Evidenzia" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "Leggi da Qui" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "Copia con citazione" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "Copia ID" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "Selezione di stampa…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "Velocità" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "Avvia/Pausa" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "Ferma" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "Font" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "Dimensione font" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "Dimensione font predefinito" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "Dimensione minima del font" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "Famiglia font" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "Font predefinito" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "Serif" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "Sans-serif" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "Sostituisci carattere editore" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "Font Serif" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "Font Sans-Serif" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "Font Monospace" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "Layout" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "Paragrafo" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "Altezza linea" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "Giustificato" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "Sillabazione" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Margini" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "Numero massimo di colonne" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "Dimensione massima in linea" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "" "Larghezza massima della colonna (scrittura orizzontale) o altezza (scrittura " "verticale)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "Dimensione massima del blocco" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "" "Altezza massima (scrittura orizzontale) o larghezza (scrittura verticale)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "Colore" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "Comportamento" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "Riduci l'animazione" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "Visualizzatore di E-Book" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "Ebook;Book;EPUB;Viewer;Reader;libri;visualizzatore;lettore;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "Scopri un nuovo capitolo della lettura con Foliate, il moderno lettore di e-" "book su misura per GNOME. Immergiti in un'interfaccia priva di distrazioni, " "con funzionalità di personalizzazione progettate per soddisfare le tue " "uniche preferenze." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "Le funzionalità includono:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "Apri file EPUB, Mobipocket, Kindle, FB2, CBZ e PDF" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "Modalità impaginata e modalità discorrimento" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "Personalizza il carattere e l'interlinea" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "Modalità chiara, seppia, scura e invertita" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "" "Dispositivo di scorrimento dell'avanzamento della lettura con contrassegni " "del capitolo" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "Segnalibri e annotazioni" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "Trova nel libro" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "Ricerca veloce nel dizionario" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 #, fuzzy msgid "Added option to override publisher font" msgstr "Sostituisci carattere editore" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "Foliate è stato riscritto da zero con una nuova libreria di rendering di e-" "book e le ultime librerie della piattaforma, GTK 4 e Libadwaita, con " "interfaccia utente aggiornata e prestazioni migliorate." #~ msgid "Book" #~ msgstr "Libro" #~ msgid "EPUB" #~ msgstr "EPUB" #~ msgid "Ebook" #~ msgstr "Ebook" #~ msgid "Reader" #~ msgstr "Lettore" #~ msgid "Viewer" #~ msgstr "Spettatore" #~ msgid "John Factotum" #~ msgstr "John Factotum" #~ msgid "Reference" #~ msgstr "Referenze" #~ msgid "Go to Reference" #~ msgstr "Vai alle referenze" #~ msgid "Keyboard Shortcuts" #~ msgstr "Scorciatoie da tastiera" #~ msgid "Preferences" #~ msgstr "Preferenze" #~ msgid "Speak" #~ msgstr "Leggi" #~ msgid "Fold Sidebar" #~ msgstr "Piega barra laterale" #~ msgid "Voice" #~ msgstr "Voce" #~ msgid "Save File" #~ msgstr "Salva File" #~ msgid "Choose highlight style" #~ msgstr "Cambia stile di evidenziazione" #~ msgid "More" #~ msgstr "Altro" #~ msgid "About this book" #~ msgstr "Informazioni su questo libro" #~ msgid "Toggle sidebar" #~ msgstr "Attiva/disattiva barra laterale" #~ msgid "Restore zoom" #~ msgstr "Ripristina ingrandimento" #~ msgid "Go to previous page" #~ msgstr "Vai alla pagina precedente" #~ msgid "Go back to previous location" #~ msgstr "Torna alla posizione precedente" #~ msgid "Go to next section" #~ msgstr "Vai alla pagina sezione" #~ msgid "Go to last section" #~ msgstr "Vai all'ultima sezione" ================================================ FILE: po/ja.po ================================================ # Japanese translations for Foliate. # Copyright (C) 2025 # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # kurome , 2025. # msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2025-02-07 16:34+0900\n" "Last-Translator: kurome \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: Gtranslator 42.0\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "ブックマークは削除されました" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "戻す" #: src/annotations.js:437 msgid "Underline" msgstr "下線" #: src/annotations.js:438 msgid "Squiggly" msgstr "波線" #: src/annotations.js:439 msgid "Strikethrough" msgstr "取り消し線" #: src/annotations.js:440 msgid "Yellow" msgstr "イエロー" #: src/annotations.js:441 msgid "Orange" msgstr "オレンジ" #: src/annotations.js:442 msgid "Red" msgstr "レッド" #: src/annotations.js:443 msgid "Magenta" msgstr "マゼンタ" #: src/annotations.js:444 msgid "Aqua" msgstr "アクア" #: src/annotations.js:445 msgid "Lime" msgstr "ライム" #: src/annotations.js:446 msgid "Custom Color…" msgstr "色を選択" #: src/annotations.js:498 msgid "Custom" msgstr "カスタム" #: src/annotations.js:592 msgid "JSON Files" msgstr "JSONファイル" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "すべてのファイル" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "注釈がありません" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "インポートされたファイルには注釈がありません" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "注釈がインポートできません" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "エラーが発生しました" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "この本には注釈がありません" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "“%s”の注釈" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d つの注釈" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "閉じる" # Notes: # Add Note # # Paths: # src/app.js:112 # src/library.js:50 # src/ui/export-dialog.ui:11 # src/ui/import-dialog.ui:15 #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "キャンセル" #: src/app.js:136 msgid "E-Book Files" msgstr "電子書籍ファイル" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "電子書籍をスタイリッシュに読む" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "kurome" #: src/app.js:414 msgid "Source Code" msgstr "ソースコード" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "出版社" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "出版日" # Notes: # Add Note # # Extracted comments: # Translators: this is the heading for the modified date # # # Paths: # src/book-info.js:137 #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "更新日" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "言語" #: src/book-info.js:139 msgid "Translated by" msgstr "翻訳" #: src/book-info.js:140 msgid "Edited by" msgstr "編集" #: src/book-info.js:141 msgid "Narrated by" msgstr "ナレーション" #: src/book-info.js:142 msgid "Illustrated by" msgstr "イラスト" #: src/book-info.js:143 msgid "Produced by" msgstr "プロデューサー" #: src/book-info.js:144 msgid "Artwork by" msgstr "絵" #: src/book-info.js:145 msgid "Color by" msgstr "カラリスト" #: src/book-info.js:146 msgid "Contributors" msgstr "寄稿者" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "識別子" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "この本について" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "位置 %s / %s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "ページ %s / %s" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "ページ %s" #: src/book-viewer.js:32 msgid "Footnote" msgstr "脚注" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "脚注へ" #: src/book-viewer.js:34 msgid "Endnote" msgstr "エンドノート" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "エンドノートへ" #: src/book-viewer.js:36 msgid "Note" msgstr "ノート" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "ノートへ" #: src/book-viewer.js:38 msgid "Definition" msgstr "定義" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "定義へ" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "参考文献" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "参考文献へ" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "ブックマークを削除" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "ブックマークを追加" #: src/book-viewer.js:714 msgid "File not found" msgstr "ファイルが見つかりません" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "サポートされていないファイル形式です" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "注釈は削除されました" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" "「%s」\n" "—%s『%s』 p. %s" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" "「%s」\n" "—『%s』 p. %s" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "「%s」 (p. %s)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" "「%s」\n" "—%s『%s』" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" "「%s」\n" "—『%s』" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "「%s」" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "『%s』からの画像" #: src/book-viewer.js:904 msgid "Image" msgstr "画像" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "/ %d" #: src/library.js:47 msgid "Loading" msgstr "読み込み中" #: src/library.js:48 msgid "Failed to Load" msgstr "読み込みに失敗しました" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "再読み込み" #: src/library.js:51 msgid "See All" msgstr "すべて見る" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "検索" #: src/library.js:53 msgid "Filter" msgstr "フィルター" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "ダウンロード" #: src/library.js:56 msgid "Buy" msgstr "購入" #: src/library.js:58 msgid "Preview" msgstr "プレビュー" #: src/library.js:59 msgid "Sample" msgstr "サンプル" #: src/library.js:60 msgid "Borrow" msgstr "借りる" #: src/library.js:61 msgid "Subscribe" msgstr "購買する" #: src/library.js:63 msgid "Free" msgstr "無料" #: src/library.js:65 msgid "First" msgstr "最初" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "前" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "次" #: src/library.js:68 msgid "Last" msgstr "最後" #: src/library.js:70 msgid "Search Terms" msgstr "検索する語" #: src/library.js:72 msgid "Title" msgstr "タイトル" #: src/library.js:73 msgid "Author" msgstr "著者" #: src/library.js:74 msgid "Contributor" msgstr "寄稿者" #: src/library.js:438 msgid "Remove Book?" msgstr "本を削除しますか?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "読書の進捗状況、注釈、ブックマークは永久に失われます" #: src/library.js:441 msgid "_Cancel" msgstr "_キャンセル" #: src/library.js:442 msgid "_Remove" msgstr "_削除" #: src/library.js:472 msgid "Failed to Open" msgstr "開けませんでした" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "選択したアプリケーションでファイルを開けませんでした" #: src/library.js:644 msgid "Download Failed" msgstr "ダウンロードに失敗しました" #: src/library.js:698 msgid "Rename…" msgstr "名前を変更" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "削除" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "名前の変更" #: src/library.js:725 msgid "Name" msgstr "名前" #: src/library.js:740 msgid "All Books" msgstr "すべての本" #: src/library.js:746 msgid "Add Catalog…" msgstr "カタログを追加する" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "ライブラリ" #: src/library.js:821 msgid "Catalogs" msgstr "カタログ" #: src/library.js:864 msgid "Catalog removed" msgstr "カタログは削除されました" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "カタログを追加" #: src/library.js:952 msgid "Add" msgstr "追加" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "OPDSカタログから書籍を閲覧およびダウンロードできます。詳細はこちら…" #: src/library.js:961 msgid "URL" msgstr "URL" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "辞書" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "ウィクショナリー より、CC BY-SA ライセンスの下で公開されています。" #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "定義が見つかりません" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "ウィクショナリーで検索" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "ウィキペディア" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "ウィキペディアより、CC BY-SA ライセンスの下で公開され" "ています。" #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "ウィキペディアで検索" #: src/selection-tools.js:59 msgid "Translate" msgstr "翻訳" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "Google翻訳による翻訳" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "翻訳を取得できません" #: src/selection-tools.js:67 msgid "Search…" msgstr "検索" #: src/themes.js:8 msgid "Default" msgstr "Default" #: src/themes.js:13 msgid "Gray" msgstr "Gray" #: src/themes.js:18 msgid "Sepia" msgstr "Sepia" #: src/themes.js:23 msgid "Grass" msgstr "Grass" #: src/themes.js:28 msgid "Cherry" msgstr "Cherry" #: src/themes.js:33 msgid "Sky" msgstr "Sky" #: src/themes.js:38 msgid "Solarized" msgstr "Solarized" #: src/themes.js:43 msgid "Gruvbox" msgstr "Gruvbox" #: src/themes.js:48 msgid "Nord" msgstr "Nord" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "テキスト読み上げエラー" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "" "Speech Dispatcherがシステムにインストールされ、動作していることを確認してくだ" "さい" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "クリップボードにコピーされました" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "ハイライトスタイル" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "削除" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "メニュー" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "ノートを追加" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "新しいウィンドウで開く" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "外部アプリで開く" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "注釈をエクスポート" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "新しいウィンドウ" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "コピーを開く" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "注釈をインポート" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "Foliateについて" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "すべてのセクション" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "現在のセクション" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "単語完全一致のみ" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "大文字と小文字を区別する" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "発音区別符号を区別する" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "フォントとレイアウトの設定" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "スクロールモード" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "ダークモードで色を反転する" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "カーソルを自動的に隠す" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "印刷" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "インスペクタ" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "本を開くことができません" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "詳細" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "別のファイルを開く" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "サイドバーをピン留め" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "本のメニュー" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "検索" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "本の中で検索…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "コンテンツ" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "注釈" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "テキストを選択して注釈を追加してください" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "注釈をフィルター" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "ブックマーク" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "ブックマークなし" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "ブックマークを追加するとここに表示されます" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "結果が見つかりませんでした" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "別の検索を試してください" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "サイドバー" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "ビューメニュー" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "ズームアウト" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "ズームをリセット" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "ズームイン" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "システムスタイルに従う" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "ライトスタイル" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "ダークスタイル" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "フルスクリーン" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "注釈をエクスポート" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "エクスポート" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "フォーマット" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "注釈をFoliateにインポートする場合は「JSON」を選択してください" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "Markdown" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "Org Mode" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "コピー" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "名前を付けて保存" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "反時計回りに90°回転" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "時計回りに90°回転" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "注釈をインポート" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "インポート" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "" "識別子が一致しません。これらの注釈はこの本のものではない可能性があります。" #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "インポートする" #: src/ui/library.ui:6 msgid "List View" msgstr "リストビュー" #: src/ui/library.ui:11 msgid "Grid View" msgstr "グリッドビュー" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "開く" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "メインメニュー" #: src/ui/library.ui:110 msgid "Open" msgstr "開く" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "ライブラリメニュー" #: src/ui/library.ui:134 msgid "Search library…" msgstr "ライブラリを検索" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "戻る" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "進む" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "まだ本がありません" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "本を開いて読み始めてください" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "位置" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "ナレーション" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "セクションを読み終えるまでの所要時間" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "本を読み終わるまでの所要時間" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "ページ" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "ペーストして移動" #: src/ui/navbar.ui:322 msgid "Section" msgstr "セクション" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "最初のセクション" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "前のセクション" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "ジャンプする" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "次のセクション" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "最後のセクション" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "ハイライト" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "ここから読み上げ" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "引用付きコピー" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "識別子をコピー" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "セクションを印刷" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "スピード" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "ピッチ" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "再生/一時停止" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "停止" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "フォント" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "フォントサイズ" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "デフォルトのフォントサイズ" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "最小フォントサイズ" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "フォントファミリー" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "デフォルトのフォント" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "セリフ" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "サンセリフ" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "出版社のフォントを上書きする" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "セリフフォント" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "サンセリフフォント" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "等幅フォント" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "レイアウト" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "段落" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "行の高さ" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "行の両端を揃える" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "ハイフネーション" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "余白" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "一画面の最大列数" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "最大インラインサイズ" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "最大列幅(横書きの場合)または最大高さ(縦書きの場合)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "最大ブロックサイズ" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "最大高さ(横書きの場合)または最大幅(縦書きの場合)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "カラー" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "動作" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "アニメーションを減らす" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "電子書籍ビューア" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "電子書籍;本;EPUB;ビューア;リーダー;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "GNOME向けにカスタマイズされた最新の電子書籍リーダー、Foliateで読書の新しい章" "を発見しましょう。独自の好みに合わせて設計されたカスタマイズ機能を備えた、気" "が散ることのないインターフェイスで読書に没頭しましょう。" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "機能は次のとおりです:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "EPUB、Mobipocket、Kindle、FB2、CBZ、PDFファイルを開く" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "ページモードとスクロールモード" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "フォントと行間隔をカスタマイズする" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "ライト、セピア、ダーク、反転モード" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "章マーク付きの読書進捗スライダー" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "ブックマークと注釈" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "本の中で検索" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "素早い辞書検索" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "章がページ区切りで始まる場合に章末が切り取られる問題を修正" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "表内のテキストの折り返しが正しく行われなかった問題を修正" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "OPDSカタログのパフォーマンス問題を修正" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "OPDSカタログのサポート追加、OPDS2.0もサポート" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 msgid "Added option to override publisher font" msgstr "出版社のフォントを上書きするオプションを追加" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "アニメーションを減らすオプションを追加" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "CBZ に JPEG XL のサポートを追加" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "Flatpak の Tracker からファイルを取得する問題を修正" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "年のみではない 1 世紀および紀元前の日付の解析を修正" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "Foliateは、新しい電子書籍レンダリングライブラリと最新のプラットフォームライブ" "ラリであるGTK4および Libadwaitaを使用してゼロから書き直され、UIが刷新され、パ" "フォーマンスが向上しました。" ================================================ FILE: po/ka.po ================================================ # Georgian translation for com.github.johnfactotum.Foliate. # Copyright (C) 2026 com.github.johnfactotum.Foliate's authors # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # Ekaterine Papava , 2026. # msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2026-01-20 18:41+0100\n" "Last-Translator: Ekaterine Papava \n" "Language-Team: Georgian <(nothing)>\n" "Language: ka\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: Poedit 3.8\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "სანიშნე წაიშალა" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "გაუქმება" #: src/annotations.js:437 msgid "Underline" msgstr "ხაზგასმული" #: src/annotations.js:438 msgid "Squiggly" msgstr "ტალღებიანი" #: src/annotations.js:439 msgid "Strikethrough" msgstr "გადახაზული" #: src/annotations.js:440 msgid "Yellow" msgstr "ყვითელი" #: src/annotations.js:441 msgid "Orange" msgstr "ნარინჯისფერი" #: src/annotations.js:442 msgid "Red" msgstr "წითელი" #: src/annotations.js:443 msgid "Magenta" msgstr "ალისფერი" #: src/annotations.js:444 msgid "Aqua" msgstr "წყლის ფერი" #: src/annotations.js:445 msgid "Lime" msgstr "ლიმნისფერი" #: src/annotations.js:446 msgid "Custom Color…" msgstr "მორგებული ფერი…" #: src/annotations.js:498 msgid "Custom" msgstr "ხელით" #: src/annotations.js:592 msgid "JSON Files" msgstr "JSON ფაილები" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "ყველა ფაილი" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "ანოტაციების გარეშე" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "შემოტანილ ფაილს ანოტაციები არ აქვს" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "ანოტაციების შემოტანა შეუძლებელია" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "აღმოჩენილია შეცდომა" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "ამ წიგნისთვის ანოტაციები არ გაქვთ" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "ანოტაციები “%s”-ისთვის" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d ანოტაცია" msgstr[1] "%d ანოტაცია" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "დახურვა" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "გაუქმება" #: src/app.js:136 msgid "E-Book Files" msgstr "ელწიგნის ფაილები" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "წაიკითხეთ ელწიგნები სტილით" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "ეკატერინე პაპავა" #: src/app.js:414 msgid "Source Code" msgstr "საწყისი კოდი" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "გამომცემელი" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "გამოქვეყნებულია" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "განახლებულია" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "ენა" #: src/book-info.js:139 msgid "Translated by" msgstr "თარგმნა" #: src/book-info.js:140 msgid "Edited by" msgstr "ჩასწორებულია" #: src/book-info.js:141 msgid "Narrated by" msgstr "მოთხრობილია" #: src/book-info.js:142 msgid "Illustrated by" msgstr "ილუსტრირებულია" #: src/book-info.js:143 msgid "Produced by" msgstr "გამოცემულია" #: src/book-info.js:144 msgid "Artwork by" msgstr "დიზაინის ავტორი" #: src/book-info.js:145 msgid "Color by" msgstr "ფერები არჩეულია" #: src/book-info.js:146 msgid "Contributors" msgstr "მოხალისეები" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "იდენტიფიკატორი" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "ამ წიგნის შესახებ" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "მდებ. %s %s-დან" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "გვერდი %s %s-დან" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "გვერდი: %s" #: src/book-viewer.js:32 msgid "Footnote" msgstr "სქოლიო" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "სქოლიოზე გადასვლა" #: src/book-viewer.js:34 msgid "Endnote" msgstr "ქვედა სქოლიო" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "გადასვლა განმარტებებზე და შენიშვნებზე" #: src/book-viewer.js:36 msgid "Note" msgstr "შენიშვნა" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "შენიშვნაზე გადასვლა" #: src/book-viewer.js:38 msgid "Definition" msgstr "აღწერა" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "აღწერაზე გადასვლა" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "ბიბლიოგრაფია" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "ბიბლიოგრაფიაზე გადასვლა" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "სანიშნეს წაშლა" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "სანიშნეს დამატება" #: src/book-viewer.js:714 msgid "File not found" msgstr "ფაილი ვერ მოიძებნა" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "ფაილის ტიპი მხარდაჭერილი არაა" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "ანოტაცია წაიშალა" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" "‘%s’\n" "—%s, “%s”, p. %s" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" "‘%s’\n" "—“%s”, p. %s" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "‘%s’ (p. %s)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" "‘%s’\n" "—%s, “%s”" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" "‘%s’\n" "—“%s”" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "‘%s’" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "გამოსახულება “%s”-დან" #: src/book-viewer.js:904 msgid "Image" msgstr "გამოსახულება" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "%d-დან" #: src/library.js:47 msgid "Loading" msgstr "იტვირთება" #: src/library.js:48 msgid "Failed to Load" msgstr "ჩატვირთვის შეცდომა" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "თავიდან ჩატვირთვა" #: src/library.js:51 msgid "See All" msgstr "ყველას ნახვა" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "ძებნა" #: src/library.js:53 msgid "Filter" msgstr "ფილტრი" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "გადმოწერა" #: src/library.js:56 msgid "Buy" msgstr "შეძენა" #: src/library.js:58 msgid "Preview" msgstr "მინიატურა" #: src/library.js:59 msgid "Sample" msgstr "სინჯი" #: src/library.js:60 msgid "Borrow" msgstr "თხოვება" #: src/library.js:61 msgid "Subscribe" msgstr "გამოწერა" #: src/library.js:63 msgid "Free" msgstr "უფასო" #: src/library.js:65 msgid "First" msgstr "პირველი" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "წინა" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "შემდეგი" #: src/library.js:68 msgid "Last" msgstr "ბოლო" #: src/library.js:70 msgid "Search Terms" msgstr "ძებნის პირობები" #: src/library.js:72 msgid "Title" msgstr "სათაური" #: src/library.js:73 msgid "Author" msgstr "ავტორი" #: src/library.js:74 msgid "Contributor" msgstr "მოხალისე" #: src/library.js:438 msgid "Remove Book?" msgstr "წავშალო წიგნი?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "კითხვის მიმდინარეობა, ანოტაციები და სანიშნეები სამუდამოდ დაიკარგება" #: src/library.js:441 msgid "_Cancel" msgstr "გაუ_ქმება" #: src/library.js:442 msgid "_Remove" msgstr "_წაშლა" #: src/library.js:472 msgid "Failed to Open" msgstr "გახსნის შეცდომა" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "ფაილი არჩეული აპლიკაციით ვერ გაიხსნა" #: src/library.js:644 msgid "Download Failed" msgstr "გადმოწერის შეცდომა" #: src/library.js:698 msgid "Rename…" msgstr "სახელის გადარქმევა…" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "წაშლა" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "სახელის გადარქმევა" #: src/library.js:725 msgid "Name" msgstr "სახელი" #: src/library.js:740 msgid "All Books" msgstr "ყველა წიგნი" #: src/library.js:746 msgid "Add Catalog…" msgstr "კატალოგის დამატება…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "ბიბლიოთეკა" #: src/library.js:821 msgid "Catalogs" msgstr "კატალოგები" #: src/library.js:864 msgid "Catalog removed" msgstr "კატალოგი წაიშალა" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "კატალოგის დამატება" #: src/library.js:952 msgid "Add" msgstr "დამატება" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "შეგიძლიათ, დაათვალიეროთ და გადმოწეროთ წიგნები OPDS კატალოგებიდან. გაიგეთ მეტი…" #: src/library.js:961 msgid "URL" msgstr "URL" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "ლექსიკონი" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "Wiktionary-დან. გამოქვეყნებულია ლიცენზიით CC BY-SA." #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "აღწერები აღმოჩენილი არაა" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "ძებნა Wiktionary-ზე" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Wikipedia" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "Wikipedia-დან. გამოქვეყნებულია ლიცენზიით CC BY-SA." #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "ძებნა Wikipedia-ზე" #: src/selection-tools.js:59 msgid "Translate" msgstr "თარგმნა" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "თარგმანი Google Translate-ით" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "თარგმანის მიღება შეუძლებელია" #: src/selection-tools.js:67 msgid "Search…" msgstr "ძებნა…" #: src/themes.js:8 msgid "Default" msgstr "ნაგულისხმევი" #: src/themes.js:13 msgid "Gray" msgstr "ნაცრისფერი" #: src/themes.js:18 msgid "Sepia" msgstr "სეპია" #: src/themes.js:23 msgid "Grass" msgstr "ბალახი" #: src/themes.js:28 msgid "Cherry" msgstr "ალუბალი" #: src/themes.js:33 msgid "Sky" msgstr "ცა" #: src/themes.js:38 msgid "Solarized" msgstr "სოლარიზება" #: src/themes.js:43 msgid "Gruvbox" msgstr "გრუვბოქსი" #: src/themes.js:48 msgid "Nord" msgstr "ნორი" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "ტექსტის წარმოთქმის შეცდომა" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "დარწმუნდით, რომ Speech Dispatcher დაყენებული გაქვთ და მუშაა" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "დაკოპირდა გაცვლის ბაფერში" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "გამოკვეთის სტილი" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "წაშლა" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "მენიუ" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "შენიშვნის დამატება…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "ახალ ფანჯარაში გახსნა" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "გარე აპში გახსნა" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "ანოტაციების გატანა…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "ახალი ფანჯარა" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "ასლის გახსნა" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "ანოტაციების შემოტანა…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "Foliate-ის შესახებ" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "ყველა სექცია" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "მიმდინარე სექცია" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "მხოლოდ მთელი სიტყვების დამთხვევა" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "რეგისტრის დამთხვევა" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "დიაკრიტიკების დამთხვევა" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "ფონტისა და განლაგების მორგება" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "გადახვევის რეჟიმი" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "ფერების ინვერსია მუქ რეჟიმში" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "კურსორის ავტოდამალვა" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "ბეჭდვა…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "ინსპექტორი" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "წიგნის გახსნა შეუძლებელია" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "დეტალები" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "სხვა ფაილის გახსნა…" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "გვერდითი პანელის მიმაგრება" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "წიგნის მენიუ" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "ძებნა" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "წიგნში ძებნა…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "შემცველობა" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "ანოტაციები" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "ანოტაციების დასამატებლად მონიშნეთ ტექსტი" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "ანოტაციების გაფილტვრა…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "სანიშნეები" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "სანიშნეების გარეშე" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "დაამატეთ სანიშნეები და მათ აქ დაინახავთ" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "შედეგების გარეშე" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "სცადეთ სხვა ძებნა" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "გვერდითი პანელი" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "ხედის მენიუ" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "დაპატარავება" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "გადიდების ჩამოყრა" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "გადიდება" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "სისტემის სტილის მიყოლა" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "ღია სტილი" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "მუქი სტილი" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "სრულ ეკრანზე" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "ანოტაციების გატანა" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "გატანა" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "ფორმატი" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "აირჩიეთ \"JSON\", თუ აპირებთ, ანოტაციები ისევ შემოიტანოთ Foliate-ში" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "Markdown" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "Org Mode" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "კოპირება" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "შენახვა, როგორც…" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "90°-ით ისრის საწ. მიმართულებით შებრუნება" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "90°-ით საათის მიმართულებით შებრუნება" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "ანოტაციების შემოტანა" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "შემოტანა" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "" "იდენტიფიკატორი არ ემთხვევა. შეიძლება, ეს ანოტაციები ამ წიგნისთვის არაა." #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "მაინც შემოტანა" #: src/ui/library.ui:6 msgid "List View" msgstr "სიის ხედი" #: src/ui/library.ui:11 msgid "Grid View" msgstr "ბადის ხედი" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "გახსნა…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "მთავარი მენიუ" #: src/ui/library.ui:110 msgid "Open" msgstr "გახსნა" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "ბიბლიოთეკის მენიუ" #: src/ui/library.ui:134 msgid "Search library…" msgstr "ბიბლიოთეკაში ძებნა…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "უკან" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "წინ" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "ჯერ წიგნები არაა" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "გახსენით წიგნი კითხვის დასაწყებად" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "მდებარეობა" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "თხრობა" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "სექციაში დარჩენილი დრო" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "წიგნში დარჩენილი დრო" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "გვერდი" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "ჩასმა და გადასვლა" #: src/ui/navbar.ui:322 msgid "Section" msgstr "განყოფილება" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "პირველი სექცია" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "წინა სექცია" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "გადასვლა სად…" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "შემდეგი სექცია" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "ბოლო სექცია" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "გამოკვეთა" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "წარმოთქმა აქედან" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "კოპირება ციტირებით" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "იდენტიფიკატორის კოპირება" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "მონიშნულის დაბეჭდვა…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "სიჩქარე" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "ხმის სიმაღლე" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "დაკვრა/პაუზა" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "გაჩერება" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "ფონტი" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "ფონტის ზომა" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "ნაგულისხმევი ფონტის ზომა" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "ფონტის მინიმალური ზომა" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "ფონტების ოჯახი" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "ნაგულისხმევი ფონტი" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "Serif" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "Sans-serif" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "გამომცემლის შრიფტის გადაფარვა" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "Serif ფონტი" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "ფონტი Sans-Serif" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "ერთსიგანიან ფონტი" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "განლაგება" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "პარაგრაფი" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "ხაზის სიმაღლე" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "სრული დასაბუთება" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "გადატანა" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "გვერდის ველები" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "სვეტების მაქსიმალური რაოდენობა" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "მაქსიმალური შიდა ზომა" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "" "მაქსიმალური სვეტის სიგანე (ჰორიზონტალური დამწერლობისთვის) ან სიმაღლე " "(ვერტიკალური დამწერლობისთვის)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "ბლოკის მაქსიმალური ზომა" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "" "მაქსიმალური სიმაღლე (ჰორიზონტალური დამწერლობისთვის) ან სიგანე (ვერტიკალური " "დამწერლობისთვის)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "ფერი" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "ქცევა" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "ანიმაციის შემცირება" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "ელწიგნის დამთვალიერებელი" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "Ebook;Book;EPUB;Viewer;Reader;ელწიგნი;წიგნი;წამკითხველი;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "აღმოაჩინეთ ახალი თავი წიგნების კითხვაში Foliate-ისთან, თანამედროვე " "ელწიგნების მკითხველთან ერთად, რომელიც GNOME-ის პაკეტში შედის. ჩაეფალით " "წიგნის კითხვაში ყველაფრის, რაც ყურადღებას გიფანტავთ, გარეშე, ფუნქციებით, " "რომლებსაც ინტერფეისის თქვენ უნიკალურ მოთხოვნებზე მორგება შეუძლიათ." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "ფუნქციები შეიცავს:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "გახსენით EPUB, Mobipocket, Kindle, FB2, CBZ და PDF ფაილები" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "გვერდებად წარმოდგენის რეჟიმი და გადახვევადი რეჟიმი" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "მოირგეთ ფონტი და ხაზებს შორის დაშორება" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "ღია, სეპია, მუქი და ინვერსიული რეჟიმები" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "კითხვის მიმდინარეობის ჩოჩია თავის ნიშნებით" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "სანიშნეები და ანოტაციები" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "წიგნში ძებნა" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "სწრაფი ძებნა ლექსიკონში" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "გასწორდა თავის ბოლოს წაკვეთა, როცა თავი გვერდის გადატანით იწყება" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "გასწორდა არასწორი ტექსტის გადატანა ცხრილებში" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "გასწორდა წარმადობის პრობლემა OPDS კატალოგებთან" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "დაემატა OPDS კატალოგების მხარდაჭერა. ახლა OPDS 2.0-ის მხარდაჭერით" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 msgid "Added option to override publisher font" msgstr "დაემატა გამომცემლის ფონტის გადაფარვა" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "დაემატა პარამეტრი ანიმაციების შესამცირებლად" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "დაემატა JPEG XL ფორმატის მხარდაჭერა CBZ-ში" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "გასწორდა ფაილის Tracker-ით მიღება Flatpak-ში" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "გასწორდა არაა-წელი-არამედ-ჯერ-საუკუნე და ქრისტეშობამდე თარიღები" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "Foliate თავიდან დაიწერა ახალი ელწიგნის რენდერის ბიბლიოთეკით და გადაიწერა GTK " "4-ზე და Libadwaita-ზე, რომლებიც პლატფორმის უახლეს ბიბლიოთეკებს წარმოადგენენ, " "განახლებული ინტერფეისით და გაუმჯობესებული წარმადობით." ================================================ FILE: po/ko.po ================================================ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # JungHee Lee , 2020, 2021, 2025 # msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2025-03-03 13:04+0900\n" "Last-Translator: Junghee Lee \n" "Language-Team: 이정희 \n" "Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Poedit 3.5\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "책갈피가 삭제되었습니다" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "실행 취소" #: src/annotations.js:437 msgid "Underline" msgstr "밑줄" #: src/annotations.js:438 msgid "Squiggly" msgstr "파선" #: src/annotations.js:439 msgid "Strikethrough" msgstr "취소선" #: src/annotations.js:440 msgid "Yellow" msgstr "노란색" #: src/annotations.js:441 msgid "Orange" msgstr "주황색" #: src/annotations.js:442 msgid "Red" msgstr "빨간색" #: src/annotations.js:443 msgid "Magenta" msgstr "주홍색" #: src/annotations.js:444 msgid "Aqua" msgstr "청록색" #: src/annotations.js:445 msgid "Lime" msgstr "라임색" #: src/annotations.js:446 msgid "Custom Color…" msgstr "사용자지정 색상…" #: src/annotations.js:498 msgid "Custom" msgstr "사용자지정" #: src/annotations.js:592 msgid "JSON Files" msgstr "JSON 파일" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "모든 파일" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "주석 없음" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "가져온 파일에 주석이 없습니다" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "주석을 가져올 수 없습니다" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "오류가 발생했습니다" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "이 책에 대한 주석이 없습니다" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "“%s”에 대한 주석" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d개 주석" msgstr[1] "%d개 주석" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "닫기" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "취소" #: src/app.js:136 msgid "E-Book Files" msgstr "전자책 파일" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "나만의 스타일로 전자책 읽기" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "이정희 " #: src/app.js:414 msgid "Source Code" msgstr "소스 코드" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "출판사" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "출판일자" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "개정일자" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "언어" #: src/book-info.js:139 msgid "Translated by" msgstr "번역자 -" #: src/book-info.js:140 msgid "Edited by" msgstr "편집자 -" #: src/book-info.js:141 msgid "Narrated by" msgstr "내레이션 -" #: src/book-info.js:142 msgid "Illustrated by" msgstr "일러스트 -" #: src/book-info.js:143 msgid "Produced by" msgstr "제작 책임자 -" #: src/book-info.js:144 msgid "Artwork by" msgstr "아트워크 -" #: src/book-info.js:145 msgid "Color by" msgstr "채색자 -" #: src/book-info.js:146 msgid "Contributors" msgstr "기여자" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "식별자" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "이 책에 대하여" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "%s/%s 위치" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "%s/%s 페이지" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "%s 페이지" #: src/book-viewer.js:32 msgid "Footnote" msgstr "각주" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "각주로 가기" #: src/book-viewer.js:34 msgid "Endnote" msgstr "미주" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "미주로 가기" #: src/book-viewer.js:36 msgid "Note" msgstr "메모" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "메모로 가기" #: src/book-viewer.js:38 msgid "Definition" msgstr "규정" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "규정으로 가기" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "참고문헌" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "참고문헌으로 가기" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "책갈피 제거하기" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "책갈피 추가하기" #: src/book-viewer.js:714 msgid "File not found" msgstr "파일을 찾을 수 없습니다" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "지원되지 않는 파일 형식입니다" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "주석이 삭제되었습니다" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" "‘%s’\n" "—%s, “%s”, p. %s" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" "‘%s’\n" "—“%s”, p. %s" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "‘%s’ (p. %s)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" "‘%s’\n" "—%s, “%s”" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" "‘%s’\n" "—“%s”" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "‘%s’" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "\"%s\"에서 가져온 이미지" #: src/book-viewer.js:904 msgid "Image" msgstr "이미지" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "/ %d" #: src/library.js:47 msgid "Loading" msgstr "불러오는 중" #: src/library.js:48 msgid "Failed to Load" msgstr "불러올 수 없습니다" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "다시 불러오기" #: src/library.js:51 msgid "See All" msgstr "모두 보기" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "검색" #: src/library.js:53 msgid "Filter" msgstr "필터" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "다운로드" #: src/library.js:56 msgid "Buy" msgstr "구매" #: src/library.js:58 msgid "Preview" msgstr "미리보기" #: src/library.js:59 msgid "Sample" msgstr "견본" #: src/library.js:60 msgid "Borrow" msgstr "대여하기" #: src/library.js:61 msgid "Subscribe" msgstr "구독하기" #: src/library.js:63 msgid "Free" msgstr "무료" #: src/library.js:65 msgid "First" msgstr "처음" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "이전" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "다음" #: src/library.js:68 msgid "Last" msgstr "마지막" #: src/library.js:70 msgid "Search Terms" msgstr "검색어" #: src/library.js:72 msgid "Title" msgstr "제목" #: src/library.js:73 msgid "Author" msgstr "저자" #: src/library.js:74 msgid "Contributor" msgstr "기고자" #: src/library.js:438 msgid "Remove Book?" msgstr "책을 제거하시겠습니까?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "읽기 진행 상황, 주석 및 북마크가 영구적으로 손실됩니다" #: src/library.js:441 msgid "_Cancel" msgstr "취소(_C)" #: src/library.js:442 msgid "_Remove" msgstr "제거(_R)" #: src/library.js:472 msgid "Failed to Open" msgstr "열지 못했습니다" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "선택한 응용 프로그램으로 파일을 열 수 없습니다" #: src/library.js:644 msgid "Download Failed" msgstr "다운로드하지 못했습니다" #: src/library.js:698 msgid "Rename…" msgstr "이름 바꾸기…" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "제거하기" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "이름 바꾸기" #: src/library.js:725 msgid "Name" msgstr "이름" #: src/library.js:740 msgid "All Books" msgstr "모든 책" #: src/library.js:746 msgid "Add Catalog…" msgstr "카탈로그 추가하기…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "라이브러리" #: src/library.js:821 msgid "Catalogs" msgstr "카탈로그" #: src/library.js:864 msgid "Catalog removed" msgstr "카탈로그가 제거되었습니다" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "카탈로그 추가하기" #: src/library.js:952 msgid "Add" msgstr "추가하기" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "OPDS 카탈로그에서 책을 찾아보고 다운로드할 수 있습니다. 자세한 내용 보기…" #: src/library.js:961 msgid "URL" msgstr "URL" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "사전" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "위키낱말사전(Wiktionary)에서 발췌하였으며, CC BY-SA 라이선스에 따라 공개되었습니다." #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "규정을 찾을 수 없습니다" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "위키백과에서 검색하기" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "위키백과(Wikipedia)" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "위키백과(Wikipedia)에서 발췌하였으며, CC BY-SA 라이선스에 따라 공개되었습니다." #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "위키백과(Wikipedia)에서 검색하기" #: src/selection-tools.js:59 msgid "Translate" msgstr "번역하기" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "구글 번역으로 번역하기" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "번역을 가져올 수 없습니다" #: src/selection-tools.js:67 msgid "Search…" msgstr "검색하기…" #: src/themes.js:8 msgid "Default" msgstr "기본값" #: src/themes.js:13 msgid "Gray" msgstr "회색" #: src/themes.js:18 msgid "Sepia" msgstr "적갈색" #: src/themes.js:23 msgid "Grass" msgstr "잔디색" #: src/themes.js:28 msgid "Cherry" msgstr "버찌색" #: src/themes.js:33 msgid "Sky" msgstr "하늘색" #: src/themes.js:38 msgid "Solarized" msgstr "Solarized" #: src/themes.js:43 msgid "Gruvbox" msgstr "Gruvbox" #: src/themes.js:48 msgid "Nord" msgstr "Nord" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "텍스트 음성 변환 오류" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "Speech Dispatcher가 시스템에 설치되어 작동 중인지 확인하세요" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "클립보드에 복사되었습니" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "강조 표시 스타일" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "삭제하기" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "메뉴" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "메모 추가하기…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "새 창에서 열기" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "외부 앱으로 열기" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "주석 내보내기…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "새 창" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "사본 열기" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "주석 가져오기…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "Foliate 소개" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "모든 섹션" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "현재 섹션" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "전체 단어만 일치" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "대/소문자 구분" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "발음 구별 기호 구분" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "글꼴 및 레이아웃 설정" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "스크롤 보기 모드" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "다크 모드에서 색상 반전" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "커서 자동 숨김" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "인쇄하기…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "검사기" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "책을 열 수 없습니다" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "상세정보" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "파일 열기다른 파일 열기…" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "사이드바 고정" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "책 메뉴" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "찾기" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "책에서 찾기…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "콘텐츠" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "주석" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "주석을 추가하려면 일부 텍스트를 선택하세요" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "주석 필터링…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "책갈피" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "책갈피 없음" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "여기에 표시하려면 몇 개의 북마크를 추가하세요" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "검색 결과가 없습니다" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "다른 검색을 시도하세요" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "사이드바" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "보기 메뉴" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "축소" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "확대/축소 재설정" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "확대" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "시스템 스타일 따르기" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "밝은 스타일" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "어두운 스타일" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "전체화면" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "주석 내보내기" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "내보내기" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "형식" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "Foliate로 주석을 다시 가져오려면 \"JSON\"을 선택하세요" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "마크다운" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "Org 모드" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "복사하기" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "다른 이름으로 저장…" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "시계 반대 방향으로 90° 회전하기" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "시계 방향으로 90° 회전하기" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "주석 가져오기" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "가져오기" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "" "식별자가 일치하지 않습니다. 이 주석은 이 책에 대한 것이 아닐 수 있습니다." #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "무시하고 가져오기" #: src/ui/library.ui:6 msgid "List View" msgstr "목록 보기" #: src/ui/library.ui:11 msgid "Grid View" msgstr "격자 보기" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "열기…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "기본 메뉴" #: src/ui/library.ui:110 msgid "Open" msgstr "열기" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "라이브러리 메뉴" #: src/ui/library.ui:134 msgid "Search library…" msgstr "라이브러리 검색하기…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "뒤로" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "앞으로" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "아직 책이 없습니다" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "책을 열어 읽기를 시작합니다" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "위치" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "내레이션" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "섹션에 남은 시간" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "책에 남은 시간" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "페이지" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "붙여넣고 가기" #: src/ui/navbar.ui:322 msgid "Section" msgstr "섹션" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "첫 번째 섹션" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "이전 섹션" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "건너뛰기…" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "다음 섹션" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "마지막 섹션" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "강조표시" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "여기에서 음성듣기" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "인용으로 복사하기" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "식별자 복사하기" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "선택항목 인쇄하기…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "속도" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "소리의 높낮이" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "재생/일시정지" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "중지하기" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "글꼴" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "글꼴 크기" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "기본 글꼴 크기" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "최소 글꼴 크기" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "글꼴 집합" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "기본 글꼴" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "세리프 서체" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "산세리프 서체" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "출판사 글꼴 재정의" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "세리프 글꼴" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "산세리프 글꼴" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "모노스페이스 글꼴" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "레이아웃" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "문단" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "줄 높이" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "전체 폭 맞춤" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "자동 줄 바꿈" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "여백" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "최대 열 수" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "최대 가로 크기" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "최대 열 너비(가로쓰기) 또는 높이(세로쓰기)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "최대 블록 크기" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "최대 높이(가로쓰기) 또는 최대 너비(세로쓰기)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "색상" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "동작" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "애니메이션 축소하기" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "전자책 뷰어" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "Ebook;Book;EPUB;Viewer;Reader;이북;도서;뷰어;리더;책;전자책;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "Foliate로 독서의 새로운 장을 열어보세요. GNOME 환경에 맞춰 제작된 현대적인 전" "자책 리더기입니다. 방해 요소 없는 인터페이스에 몰입하고, 당신의 개성에 맞춘 " "사용자 정의 기능들을 경험해 보세요." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "다음과 같은 기능이 있습니다:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "EPUB, Mobipocket, Kindle, FB2, CBZ, PDF 파일 열기" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "페이지 보기 모드와 스크롤 보기 모드" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "글꼴 및 줄 간격 사용자 정의" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "밝은 모드, 적갈색 모드, 어두운 모드, 색상 반전 모드" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "챕터 표시가 있는 읽기 진행률 슬라이더" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "책갈피 및 주석" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "책에서 찾기" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "빠른 사전 검색" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "페이지 나누기로 챕터가 시작될 때 챕터 끝이 잘리는 문제 수정됨" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "테이블에서 잘못된 텍스트 줄 바꿈 수정됨" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "OPDS 카탈로그의 성능 문제 수정됨" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "OPDS 카탈로그에 대한 지원이 추가되었으며 이제 OPDS 2.0도 지원합니다" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 msgid "Added option to override publisher font" msgstr "출판사 글꼴을 재정의하는 옵션 추가됨" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "애니메이션을 줄이는 옵션 추가됨" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "CBZ에서 JPEG XL에 대한 지원 추가됨" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "Flatpak의 Tracker에서 파일을 가져오는 기능 수정됨" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "" "1세기 및 기원전 날짜 중 연도만 포함하지 않는 날짜의 구문 분석 오류 수정됨" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "Foliate는 새로운 전자책 렌더링 라이브러리와 최신 플랫폼 라이브러리인 GTK 4 " "및 Libadwaita를 사용하여 처음부터 다시 작성되었고, UI가 새로워지고 성능이 개" "선되었습니다." #, fuzzy #~ msgid "Book" #~ msgstr "메뉴" #, fuzzy #~ msgid "Viewer" #~ msgstr "메뉴" #~ msgid "John Factotum" #~ msgstr "John Factotum" #, fuzzy #~ msgid "Reference" #~ msgstr "환경설정" #, fuzzy #~ msgid "Go to Reference" #~ msgstr "환경설정" #~ msgid "Keyboard Shortcuts" #~ msgstr "키보드 단축키" #~ msgid "Preferences" #~ msgstr "환경설정" #~ msgid "Speak" #~ msgstr "음성듣기" #, fuzzy #~ msgid "Fold Sidebar" #~ msgstr "사이드바 표시" #, fuzzy #~ msgid "Voice" #~ msgstr "성우" #~ msgid "Save File" #~ msgstr "파일 저장" #, fuzzy #~ msgid "Choose highlight style" #~ msgstr "강조표시 색상 변경" #~ msgid "More" #~ msgstr "자세히" #, fuzzy #~ msgid "About this book" #~ msgstr "이 책 소개" #, fuzzy #~ msgid "Toggle sidebar" #~ msgstr "사이드바 사용" #~ msgid "Restore zoom" #~ msgstr "확대/축소 복원" #~ msgid "Go to previous page" #~ msgstr "이전 페이지로 가기" #~ msgid "Go back to previous location" #~ msgstr "이전 위치로 돌아가기" ================================================ FILE: po/meson.build ================================================ i18n.gettext(meson.project_name(), preset: 'glib') ================================================ FILE: po/nb.po ================================================ # Norwegian (Bokmål) translations for Foliate # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # Kay Siver Bø <63042612+tupubozu@users.noreply.github.com>, 2020. # msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2020-08-29 19:59+0200\n" "Last-Translator: Kay Siver Bø <63042612+tupubozu@users.noreply.github.com>\n" "Language-Team: \n" "Language: nb\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: Poedit 2.4.1\n" #: src/annotations.js:137 src/annotations.js:172 #, fuzzy msgid "Bookmark deleted" msgstr "Bokmerker" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "" #: src/annotations.js:437 msgid "Underline" msgstr "" #: src/annotations.js:438 msgid "Squiggly" msgstr "" #: src/annotations.js:439 msgid "Strikethrough" msgstr "" #: src/annotations.js:440 msgid "Yellow" msgstr "" #: src/annotations.js:441 #, fuzzy msgid "Orange" msgstr "Andre endringer:" #: src/annotations.js:442 #, fuzzy msgid "Red" msgstr "Last opp på nytt" #: src/annotations.js:443 msgid "Magenta" msgstr "" #: src/annotations.js:444 msgid "Aqua" msgstr "" #: src/annotations.js:445 msgid "Lime" msgstr "" #: src/annotations.js:446 #, fuzzy msgid "Custom Color…" msgstr "Velg egendefinert farge" #: src/annotations.js:498 #, fuzzy msgid "Custom" msgstr "Egendefinert tema" #: src/annotations.js:592 #, fuzzy msgid "JSON Files" msgstr "Alle filer" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "Alle filer" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 #, fuzzy msgid "No Annotations" msgstr "Kommentarer" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "" #: src/annotations.js:625 #, fuzzy msgid "Cannot Import Annotations" msgstr "Importer kommentarer…" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 #, fuzzy msgid "An error occurred" msgstr "Et problem oppstod." #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "" #: src/annotations.js:648 #, fuzzy, javascript-format msgid "Annotations for “%s”" msgstr "Kommentarer" #: src/annotations.js:649 #, fuzzy, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "Kommentarer" msgstr[1] "Kommentarer" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "" #: src/app.js:136 #, fuzzy msgid "E-Book Files" msgstr "E-bok filer" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "Kay Siver Bø" #: src/app.js:414 #, fuzzy msgid "Source Code" msgstr "Kilde: " #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Utgiver" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 #, fuzzy msgid "Published" msgstr "Utgiver" #. Translators: this is the heading for the modified date #: src/book-info.js:137 #, fuzzy msgid "Updated" msgstr "Oppdater" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Språk" #: src/book-info.js:139 #, fuzzy msgid "Translated by" msgstr "Oversett" #: src/book-info.js:140 msgid "Edited by" msgstr "" #: src/book-info.js:141 msgid "Narrated by" msgstr "" #: src/book-info.js:142 msgid "Illustrated by" msgstr "" #: src/book-info.js:143 msgid "Produced by" msgstr "" #: src/book-info.js:144 msgid "Artwork by" msgstr "" #: src/book-info.js:145 msgid "Color by" msgstr "" #: src/book-info.js:146 #, fuzzy msgid "Contributors" msgstr "Innhold" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "Identifikator" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "Om denne boka" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "" #: src/book-viewer.js:29 #, fuzzy, javascript-format msgid "Page %s" msgstr "Neste side" #: src/book-viewer.js:32 #, fuzzy msgid "Footnote" msgstr "Gå til neste side" #: src/book-viewer.js:33 #, fuzzy msgid "Go to Footnote" msgstr "Gå til neste side" #: src/book-viewer.js:34 msgid "Endnote" msgstr "" #: src/book-viewer.js:35 #, fuzzy msgid "Go to Endnote" msgstr "Gå til neste side" #: src/book-viewer.js:36 msgid "Note" msgstr "" #: src/book-viewer.js:37 #, fuzzy msgid "Go to Note" msgstr "Gå til neste side" #: src/book-viewer.js:38 #, fuzzy msgid "Definition" msgstr "Ingen resultat funnet" #: src/book-viewer.js:39 #, fuzzy msgid "Go to Definition" msgstr "Gå til plassering" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "" #: src/book-viewer.js:622 #, fuzzy msgid "Remove bookmark" msgstr "Fjern bok" #: src/book-viewer.js:623 #, fuzzy msgid "Add bookmark" msgstr "Legg til bøker" #: src/book-viewer.js:714 #, fuzzy msgid "File not found" msgstr "Fil ikke funnet." #: src/book-viewer.js:715 #, fuzzy msgid "File type not supported" msgstr "Filtype ikke støttet." #: src/book-viewer.js:804 #, fuzzy msgid "Annotation deleted" msgstr "Kommentar" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "Bilde fra “%s”" #: src/book-viewer.js:904 msgid "Image" msgstr "Bilde" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "av %d" #: src/library.js:47 msgid "Loading" msgstr "" #: src/library.js:48 msgid "Failed to Load" msgstr "" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "Last opp på nytt" #: src/library.js:51 msgid "See All" msgstr "" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "Søk" #: src/library.js:53 msgid "Filter" msgstr "" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "" #: src/library.js:56 msgid "Buy" msgstr "" #: src/library.js:58 msgid "Preview" msgstr "" #: src/library.js:59 msgid "Sample" msgstr "" #: src/library.js:60 msgid "Borrow" msgstr "" #: src/library.js:61 msgid "Subscribe" msgstr "" #: src/library.js:63 msgid "Free" msgstr "" #: src/library.js:65 msgid "First" msgstr "" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "" #: src/library.js:68 msgid "Last" msgstr "" #: src/library.js:70 #, fuzzy msgid "Search Terms" msgstr "Søk" #: src/library.js:72 msgid "Title" msgstr "" #: src/library.js:73 msgid "Author" msgstr "" #: src/library.js:74 #, fuzzy msgid "Contributor" msgstr "Innhold" #: src/library.js:438 #, fuzzy msgid "Remove Book?" msgstr "Fjern bok" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "" #: src/library.js:441 msgid "_Cancel" msgstr "" #: src/library.js:442 msgid "_Remove" msgstr "" #: src/library.js:472 msgid "Failed to Open" msgstr "" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "" #: src/library.js:644 msgid "Download Failed" msgstr "" #: src/library.js:698 msgid "Rename…" msgstr "" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "" #: src/library.js:725 msgid "Name" msgstr "" #: src/library.js:740 #, fuzzy msgid "All Books" msgstr "Meny" #: src/library.js:746 #, fuzzy msgid "Add Catalog…" msgstr "Legg til bøker…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "Bibliotek" #: src/library.js:821 msgid "Catalogs" msgstr "" #: src/library.js:864 msgid "Catalog removed" msgstr "" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "" #: src/library.js:952 msgid "Add" msgstr "" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" #: src/library.js:961 msgid "URL" msgstr "" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" #: src/selection-tools.js:38 src/selection-tools.js:51 #, fuzzy msgid "No Definitions Found" msgstr "Ingen resultat funnet" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Wikipedia" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" #: src/selection-tools.js:52 #, fuzzy msgid "Search on Wikipedia" msgstr "Wikipedia" #: src/selection-tools.js:59 msgid "Translate" msgstr "Oversett" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "" #: src/selection-tools.js:67 #, fuzzy msgid "Search…" msgstr "Søk" #: src/themes.js:8 msgid "Default" msgstr "" #: src/themes.js:13 msgid "Gray" msgstr "" #: src/themes.js:18 msgid "Sepia" msgstr "" #: src/themes.js:23 msgid "Grass" msgstr "" #: src/themes.js:28 msgid "Cherry" msgstr "" #: src/themes.js:33 msgid "Sky" msgstr "" #: src/themes.js:38 msgid "Solarized" msgstr "" #: src/themes.js:43 msgid "Gruvbox" msgstr "" #: src/themes.js:48 msgid "Nord" msgstr "" #: src/tts.js:117 #, fuzzy msgid "Text-to-Speech Error" msgstr "Tekst-til-Tale" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "" #: src/ui/annotation-popover.ui:13 #, fuzzy msgid "Highlight Style" msgstr "Høydepunkt" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "Slett" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "Meny" #: src/ui/annotation-popover.ui:47 #, fuzzy msgid "Add Note…" msgstr "Legg til bøker…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "Eksporter kommentarer…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "Åpne kopi" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "Importer kommentarer…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "Om Foliate" #: src/ui/book-viewer.ui:45 #, fuzzy msgid "All Sections" msgstr "Samlinger" #: src/ui/book-viewer.ui:50 #, fuzzy msgid "Current Section" msgstr "Nåværende kapittel" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "" #: src/ui/book-viewer.ui:89 #, fuzzy msgid "Scrolled Mode" msgstr "Rullet" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "Detaljer" #: src/ui/book-viewer.ui:193 #, fuzzy msgid "Open Another File…" msgstr "Åpne fil" #: src/ui/book-viewer.ui:245 #, fuzzy msgid "Pin Sidebar" msgstr "Vis sidemeny" #: src/ui/book-viewer.ui:253 #, fuzzy msgid "Book Menu" msgstr "Meny" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "Søk" #: src/ui/book-viewer.ui:276 #, fuzzy msgid "Find in book…" msgstr "Finn i bok" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "Innhold" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Kommentarer" #: src/ui/book-viewer.ui:403 #, fuzzy msgid "Select some text to add annotations" msgstr "Ingen kommentarer" #: src/ui/book-viewer.ui:433 #, fuzzy msgid "Filter annotations…" msgstr "Søk i kommentarer" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Bokmerker" #: src/ui/book-viewer.ui:458 #, fuzzy msgid "No Bookmarks" msgstr "Bokmerker" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 #, fuzzy msgid "No Results Found" msgstr "Ingen resultat funnet" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 #, fuzzy msgid "Try a different search" msgstr "Prøv et annet søk." #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 #, fuzzy msgid "Sidebar" msgstr "Vis sidemeny" #: src/ui/book-viewer.ui:556 #, fuzzy msgid "View Menu" msgstr "Meny" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 #, fuzzy msgid "Zoom Out" msgstr "Zoom ut" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 #, fuzzy msgid "Zoom In" msgstr "Zoom inn" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "" #: src/ui/book-viewer.ui:611 #, fuzzy msgid "Light Style" msgstr "Lys" #: src/ui/book-viewer.ui:621 #, fuzzy msgid "Dark Style" msgstr "Mørk-modus" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Fullskjerm" #: src/ui/export-dialog.ui:5 #, fuzzy msgid "Export Annotations" msgstr "Eksporter kommentarer…" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Kopier" #: src/ui/image-viewer.ui:10 #, fuzzy msgid "Save As…" msgstr "Lagre som" #: src/ui/image-viewer.ui:25 #, fuzzy msgid "Rotate 90° Counter-Clockwise" msgstr "Roter 90° mot klokka" #: src/ui/image-viewer.ui:32 #, fuzzy msgid "Rotate 90° Clockwise" msgstr "Roter 90° med klokka" #: src/ui/import-dialog.ui:7 #, fuzzy msgid "Import Annotations" msgstr "Importer kommentarer…" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "" #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "" #: src/ui/library.ui:6 #, fuzzy msgid "List View" msgstr "Vis" #: src/ui/library.ui:11 #, fuzzy msgid "Grid View" msgstr "Vis" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Åpne…" #: src/ui/library.ui:67 #, fuzzy msgid "Main Menu" msgstr "Meny" #: src/ui/library.ui:110 #, fuzzy msgid "Open" msgstr "Åpne…" #: src/ui/library.ui:117 #, fuzzy msgid "Library Menu" msgstr "Bibliotek" #: src/ui/library.ui:134 #, fuzzy msgid "Search library…" msgstr "Søker…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "" #: src/ui/library-view.ui:21 #, fuzzy msgid "No Books Yet" msgstr "Ingen bøker enda" #: src/ui/library-view.ui:22 #, fuzzy msgid "Open a book to start reading" msgstr "Åpne ei bok for å starte lesingen." #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "Plassering" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "" #: src/ui/navbar.ui:162 #, fuzzy msgid "Time Left in Section" msgstr "Gjenstående tid i bok" #: src/ui/navbar.ui:192 #, fuzzy msgid "Time Left in Book" msgstr "Gjenstående tid i bok" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 #, fuzzy msgid "Page" msgstr "Neste side" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "" #: src/ui/navbar.ui:322 msgid "Section" msgstr "Seksjon" #: src/ui/navbar.ui:388 #, fuzzy msgid "First Section" msgstr "Nåværende kapittel" #: src/ui/navbar.ui:397 #, fuzzy msgid "Previous Section" msgstr "Gå tilbake til forrige plassering" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "" #: src/ui/navbar.ui:414 #, fuzzy msgid "Next Section" msgstr "Nåværende kapittel" #: src/ui/navbar.ui:423 #, fuzzy msgid "Last Section" msgstr "Seksjon" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Høydepunkt" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "Snakk fra her" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "" #: src/ui/selection-popover.ui:40 #, fuzzy msgid "Copy Identifier" msgstr "Identifikator" #: src/ui/selection-popover.ui:44 #, fuzzy msgid "Print Selection…" msgstr "Nåværende kapittel" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "" #: src/ui/view-preferences-window.ui:47 #, fuzzy msgid "Serif" msgstr "Serier" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "" #: src/ui/view-preferences-window.ui:121 #, fuzzy msgid "Line Height" msgstr "Lys" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "" #: src/ui/view-preferences-window.ui:146 #, fuzzy msgid "Hyphenation" msgstr "Auto-orddeling" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Marger" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "" #: src/ui/view-preferences-window.ui:246 #, fuzzy msgid "Reduce Animation" msgstr "Kommentarer" #: data/com.github.johnfactotum.Foliate.desktop.in:5 #, fuzzy msgid "E-Book Viewer" msgstr "E-bok Fremviser" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "E-bok;Bok;EPUB;Fremviser;Leser;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 #, fuzzy msgid "Bookmarks and annotations" msgstr "Kommentarer" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 #, fuzzy msgid "Find in book" msgstr "Finn i bok" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 msgid "Added option to override publisher font" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" #, fuzzy #~ msgid "Book" #~ msgstr "Meny" #, fuzzy #~ msgid "Viewer" #~ msgstr "Meny" #~ msgid "John Factotum" #~ msgstr "John Factotum" #, fuzzy #~ msgid "Reference" #~ msgstr "Innstillinger" #, fuzzy #~ msgid "Go to Reference" #~ msgstr "Innstillinger" #~ msgid "Keyboard Shortcuts" #~ msgstr "Tastatursnarveier" #~ msgid "Preferences" #~ msgstr "Innstillinger" #~ msgid "Speak" #~ msgstr "Snakk" #, fuzzy #~ msgid "Fold Sidebar" #~ msgstr "Vis sidemeny" #~ msgid "Save File" #~ msgstr "Lagre fil" #, fuzzy #~ msgid "Choose highlight style" #~ msgstr "Endre fremhevingsfarge" #~ msgid "More" #~ msgstr "Mer" #, fuzzy #~ msgid "About this book" #~ msgstr "Om denne boka" #, fuzzy #~ msgid "Toggle sidebar" #~ msgstr "Bruk sidemeny" #~ msgid "Restore zoom" #~ msgstr "Nullstill zoom" #~ msgid "Go to previous page" #~ msgstr "Gå til forrige side" #~ msgid "Go back to previous location" #~ msgstr "Gå tilbake til forrige plassering" #, fuzzy #~ msgid "Go to next section" #~ msgstr "Gå til neste side" #, fuzzy #~ msgid "Go to last section" #~ msgstr "Gå til plassering" ================================================ FILE: po/nl.po ================================================ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2024-11-30 14:02+0100\n" "Last-Translator: Heimen Stoffels \n" "Language-Team: Dutch \n" "Language: nl_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: Poedit 3.4.2\n" #: src/annotations.js:137 src/annotations.js:172 #, fuzzy msgid "Bookmark deleted" msgstr "Bladwijzers" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "" #: src/annotations.js:437 msgid "Underline" msgstr "" #: src/annotations.js:438 msgid "Squiggly" msgstr "" #: src/annotations.js:439 msgid "Strikethrough" msgstr "" #: src/annotations.js:440 msgid "Yellow" msgstr "Geel" #: src/annotations.js:441 #, fuzzy msgid "Orange" msgstr "Oranje" #: src/annotations.js:442 msgid "Red" msgstr "Rood" #: src/annotations.js:443 msgid "Magenta" msgstr "Magenta" #: src/annotations.js:444 msgid "Aqua" msgstr "Aqua" #: src/annotations.js:445 msgid "Lime" msgstr "Limoen" #: src/annotations.js:446 #, fuzzy msgid "Custom Color…" msgstr "Eigen kleur kiezen" #: src/annotations.js:498 #, fuzzy msgid "Custom" msgstr "Eigen thema" #: src/annotations.js:592 #, fuzzy msgid "JSON Files" msgstr "Alle bestanden" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "Alle bestanden" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 #, fuzzy msgid "No Annotations" msgstr "Aantekeningen" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "" #: src/annotations.js:625 #, fuzzy msgid "Cannot Import Annotations" msgstr "Aantekeningen importeren…" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 #, fuzzy msgid "An error occurred" msgstr "Er is een fout opgetreden." #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "" #: src/annotations.js:648 #, fuzzy, javascript-format msgid "Annotations for “%s”" msgstr "Aantekeningen" #: src/annotations.js:649 #, fuzzy, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "Aantekeningen" msgstr[1] "Aantekeningen" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "" #: src/app.js:136 #, fuzzy msgid "E-Book Files" msgstr "E-boekbestanden" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "Heimen Stoffels " #: src/app.js:414 msgid "Source Code" msgstr "Broncode" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Uitgever" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "Gepubliceerd op" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "Bijgewerkt op" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Taal" #: src/book-info.js:139 msgid "Translated by" msgstr "Vertaald door" #: src/book-info.js:140 msgid "Edited by" msgstr "Bewerkt door" #: src/book-info.js:141 msgid "Narrated by" msgstr "Ingesproken door" #: src/book-info.js:142 msgid "Illustrated by" msgstr "Geïllustreerd door" #: src/book-info.js:143 msgid "Produced by" msgstr "Samengesteld door" #: src/book-info.js:144 msgid "Artwork by" msgstr "Vormgegeven door" #: src/book-info.js:145 msgid "Color by" msgstr "Ingekleurd door" #: src/book-info.js:146 msgid "Contributors" msgstr "Bijdragers" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "Identificatie" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "Over dit boek" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "Loc. %s van %s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "Pag. %s van %s" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "Pagina %s" #: src/book-viewer.js:32 msgid "Footnote" msgstr "Voetnoot" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "Ga naar voetnoot" #: src/book-viewer.js:34 msgid "Endnote" msgstr "Eindnoot" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "Ga naar eindnoot" #: src/book-viewer.js:36 msgid "Note" msgstr "Noot" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "Ga naar noot" #: src/book-viewer.js:38 msgid "Definition" msgstr "Definitie" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "Ga naar definitie" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "Bibliografie" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "Ga naar bibliografie" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "Bladwijzer verwijderen" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "Bladwijzer toevoegen" #: src/book-viewer.js:714 msgid "File not found" msgstr "Bestand niet aangetroffen" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "Bestandstype niet ondersteund" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "Aantekening verwijderd" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" "‘%s’\n" "—%s, “%s”, p. %s" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" "‘%s’\n" "—“%s”, p. %s" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "‘%s’ (p. %s)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" "‘%s’\n" "—%s, “%s”" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" "‘%s’\n" "—“%s”" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "‘%s’" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "Afbeelding van ‘%s’" #: src/book-viewer.js:904 msgid "Image" msgstr "Afbeelding" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "van %d" #: src/library.js:47 msgid "Loading" msgstr "Bezig met laden…" #: src/library.js:48 msgid "Failed to Load" msgstr "Het laden is mislukt" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "Herladen" #: src/library.js:51 msgid "See All" msgstr "Alles bekijken" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "Zoeken" #: src/library.js:53 msgid "Filter" msgstr "Filteren" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "Downloaden" #: src/library.js:56 msgid "Buy" msgstr "Kopen" #: src/library.js:58 msgid "Preview" msgstr "Voorvertonen" #: src/library.js:59 msgid "Sample" msgstr "Inkijkexemplaar" #: src/library.js:60 msgid "Borrow" msgstr "Lenen" #: src/library.js:61 msgid "Subscribe" msgstr "Abonneren" #: src/library.js:63 msgid "Free" msgstr "Gratis" #: src/library.js:65 msgid "First" msgstr "Eerste" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "Vorige" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "Volgende" #: src/library.js:68 msgid "Last" msgstr "Laatste" #: src/library.js:70 msgid "Search Terms" msgstr "Zoekopdracht" #: src/library.js:72 msgid "Title" msgstr "Titel" #: src/library.js:73 msgid "Author" msgstr "Auteur" #: src/library.js:74 msgid "Contributor" msgstr "Bijdrager" #: src/library.js:438 msgid "Remove Book?" msgstr "Boek verwijderen?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "" "De leesvoortgang, aantekeningen en bladwijzers worden eveneens verwijderd" #: src/library.js:441 msgid "_Cancel" msgstr "_Annuleren" #: src/library.js:442 msgid "_Remove" msgstr "Ve_rwijderen" #: src/library.js:472 msgid "Failed to Open" msgstr "Het openen is mislukt" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "Het bestand kan niet worden geopend met de gekozen toepassing" #: src/library.js:644 msgid "Download Failed" msgstr "Het downloaden is mislukt" #: src/library.js:698 msgid "Rename…" msgstr "Naam wijzigen…" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "Verwijderen" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "Naam wijzigen" #: src/library.js:725 msgid "Name" msgstr "Naam" #: src/library.js:740 msgid "All Books" msgstr "Alle boeken" #: src/library.js:746 msgid "Add Catalog…" msgstr "Catalogus toevoegen…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "Bibliotheek" #: src/library.js:821 msgid "Catalogs" msgstr "Catalogi" #: src/library.js:864 msgid "Catalog removed" msgstr "De catalogus is verwijderd" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "Catalogus toevoegen" #: src/library.js:952 msgid "Add" msgstr "Toevoegen" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "U kunt boeken inkijken en downloaden uit OPDS-catalogi. Meer informatie…" #: src/library.js:961 msgid "URL" msgstr "Url" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "Woordenboek" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "Afkomstig van Wiktionary, uitgebracht onder de CC BY-SA-licentie." #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "Er zijn geen definities" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "Opzoeken op Wiktionary" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Wikipedia" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "Afkomstig van Wikipedia, uitgebracht onder de CC BY-SA-licentie." #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "Opzoeken op Wikipedia" #: src/selection-tools.js:59 msgid "Translate" msgstr "Vertalen" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "Vertaald door Google Translate" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "De vertaling kan niet worden opgehaald" #: src/selection-tools.js:67 msgid "Search…" msgstr "Zoeken…" #: src/themes.js:8 msgid "Default" msgstr "Standaard" #: src/themes.js:13 msgid "Gray" msgstr "Grijs" #: src/themes.js:18 msgid "Sepia" msgstr "Sepia" #: src/themes.js:23 msgid "Grass" msgstr "Grasgroen" #: src/themes.js:28 msgid "Cherry" msgstr "Kersenrood" #: src/themes.js:33 msgid "Sky" msgstr "Helderblauw" #: src/themes.js:38 msgid "Solarized" msgstr "Gesolariseerd" #: src/themes.js:43 msgid "Gruvbox" msgstr "Gruvbox" #: src/themes.js:48 msgid "Nord" msgstr "Nord" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "Voorleesfout" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "Zorg dat Speech Dispatcher geïnstalleerd en ingesteld is" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "Gekopieerd naar het klembord" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "Markeerstijl" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "Verwijderen" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "Menu" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "Aantekening maken…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "Openen in nieuw venster" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "Openen in andere toepassing" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "Aantekeningen exporteren…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "Nieuw venster" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "Kopie openen" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "Aantekeningen importeren…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "Over Foliate" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "Alle secties" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "Huidige sectie" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "Alleen gehele woorden" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "Hoofdlettergevoelig" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "Diakritische tekens" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "Lettertype- en indelingsvoorkeuren" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "Oneindige modus" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "Kleuren in donkere modus omdraaien" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "Cursor automatisch verbergen" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "Afdrukken…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "Inspectie" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "Het boek kan niet worden geopend" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "Details" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "Ander bestand openen…" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "Zijbalk vastmaken" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "Boekmenu" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "Zoeken" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "Boek doorzoeken…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "Inhoud" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Aantekeningen" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "Selecteer tekst om aantekeningen van te maken" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "Aantekeningen doorzoeken…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Bladwijzers" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "Er zijn geen bladwijzers" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "Voeg bladwijzers toe om ze hier te tonen" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "Er zijn geen zoekresultaten" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "Probeer een andere zoekopdracht" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "Zijbalk" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "Weergavemenu" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "Uitzoomen" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "Oorspronkelijk zoomniveau" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "Inzoomen" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "Systeemthema" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "Licht thema" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "Donker thema" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Schermvullend" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "Aantekeningen exporteren" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "Exporteren" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "Formaat" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "" "Kies json als u van plan bent om aantekeningen nogmaals met Foliate te " "importeren" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "Json" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "Html" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "Markdown" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "Org.modus" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Kopiëren" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "Opslaan als…" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "90° naar links draaien" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "90° naar rechts draaien" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "Aantekeningen importeren" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "Importeren" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "" "De identificatie komt niet overeen - mogelijk behoren de aantekeningen bij " "een ander boek." #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "Tóch importeren" #: src/ui/library.ui:6 msgid "List View" msgstr "Lijstweergave" #: src/ui/library.ui:11 msgid "Grid View" msgstr "Roosterweergave" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Openen…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "Hoofdmenu" #: src/ui/library.ui:110 msgid "Open" msgstr "Openen" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "Bibliotheekmenu" #: src/ui/library.ui:134 msgid "Search library…" msgstr "Bibliotheek doorzoeken…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "Terug" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "Vooruit" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "Er zijn nog geen boeken" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "Open een boek en begin met lezen" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "Locatie" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "Ingesproken door" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "Resterende leestijd van sectie" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "Resterende leestijd van boek" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "Pagina" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "Plakken en gaan" #: src/ui/navbar.ui:322 msgid "Section" msgstr "Sectie" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "Eerste sectie" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "Vorige sectie" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "Ga naar…" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "Volgende sectie" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "Laatste sectie" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Markeren" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "Vanaf hier voorlezen" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "Kopiëren met citaat" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "Identificatie kopiëren" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "Selectie afdrukken…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "Snelheid" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "Toonhoogte" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "Beluisteren/Pauzeren" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "Onderbreken" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "Lettertype" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "Tekstgrootte" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "Standaard tekstgrootte" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "Minimale tekstgrootte" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "Lettertype" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "Standaardlettertype" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "Met schreef" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "Schreefloos" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "Ander lettertype afdwingen" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "Lettertype met schreef" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "Schreefloos lettertype" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "Vastebreedtelettertype" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "Indeling" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "Alinea" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "Regelhoogte" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "Volledige breedte" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "Woordafbreking" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Marges" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "Maximaal aantal kolommen" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "Maximale inlinegrootte" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "" "Maximale kolombreedte (horizontaal schrift) of -hoogte (verticaal schrift)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "Maximale blokgrootte" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "Maximale hoogte (horizontaal schrift) of -breedte (verticaal schrift)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "Kleur" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "Gedrag" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "Bewegingen verminderen" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "E-boeklezer" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "E-boek;Boek;EPUB;Lezer;Bekijken;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "Ontdek een nieuwe manier van lezen met Foliate, dé moderne e-boeklezer voor " "GNOME. Er zijn geen afleidingen, maar wel een hoop instelmogelijkheden. Zo " "kunt u helemaal opgaan in het verhaal." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "Kenmerken:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "" "Ondersteuning voor epub-, mobipocket-, Kindle, fb2-, cbz- en pdf-bestanden" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "Pagina- en oneindige modi" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "Zet het lettertype en de regelhoogte naar eigen hand" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "Lichte, sepia, donkere en omgekeerdekleurenmodi" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "Leesvoortgangsbalk met hoofdstukmarkeringen" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "Bladwijzers en aantekeningen" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "Doorzoek boeken" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "Zoek woorden op in het woordenboek" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "" "Opgelost: einde van hoofdstuk werd afgebroken bij gebruik van pagina-eindes" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "Opgelost: onjuiste tekstafbreking in tabellen" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "Opgelost: prestatieproblemen met OPDS-catalogi" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "Nieuw: ondersteuning voor OPDS-catalogi vanaf OPDS 2.0" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 msgid "Added option to override publisher font" msgstr "Nieuw: optie om een eigen lettertype af te dwingen" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "Nieuw: optie om bewegingen te verminderen" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "Nieuw: ondersteuning voor JPEG XL in CBZ-bestanden" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "Opgelost: bestanden uit Flatpak ophalen met behulp van Tracker" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "Opgelost: verwerken van diverse datums" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "Nieuw: Foliate is volledig opnieuw ontworpen en maakt voortaan gebruik van " "een nieuwe e-boekbibliotheek, GTK4 en Libadwaita. Ook is de vormgeving " "opgepoetst en zijn de prestaties verbeterd." #, fuzzy #~ msgid "Book" #~ msgstr "Menu" #, fuzzy #~ msgid "Viewer" #~ msgstr "Menu" #~ msgid "John Factotum" #~ msgstr "John Factotum" #, fuzzy #~ msgid "Reference" #~ msgstr "Voorkeuren" #, fuzzy #~ msgid "Go to Reference" #~ msgstr "Voorkeuren" #~ msgid "Keyboard Shortcuts" #~ msgstr "Sneltoetsen" #~ msgid "Preferences" #~ msgstr "Voorkeuren" #~ msgid "Speak" #~ msgstr "Voorlezen" #, fuzzy #~ msgid "Fold Sidebar" #~ msgstr "Zijbalk tonen" #, fuzzy #~ msgid "Voice" #~ msgstr "Stemacteur" #~ msgid "Save File" #~ msgstr "Bestand opslaan" #, fuzzy #~ msgid "Choose highlight style" #~ msgstr "Markeerkleur wijzigen" #~ msgid "More" #~ msgstr "Meer" #, fuzzy #~ msgid "About this book" #~ msgstr "Over dit boek" #, fuzzy #~ msgid "Toggle sidebar" #~ msgstr "Zijbalk tonen" #~ msgid "Restore zoom" #~ msgstr "Oorspronkelijk zoomniveau" #~ msgid "Go to previous page" #~ msgstr "Ga naar de vorige pagina" #~ msgid "Go back to previous location" #~ msgstr "Ga terug naar de vorige locatie" #, fuzzy #~ msgid "Go to next section" #~ msgstr "Ga naar de volgende pagina" #, fuzzy #~ msgid "Go to last section" #~ msgstr "Ga naar locatie" ================================================ FILE: po/nn.po ================================================ # Norwegian (Nynorsk) translations for Foliate # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # Kay Siver Bø <63042612+tupubozu@users.noreply.github.com>, 2020. # msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2020-08-29 19:57+0200\n" "Last-Translator: Kay Siver Bø <63042612+tupubozu@users.noreply.github.com>\n" "Language-Team: \n" "Language: nn\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: Poedit 2.4.1\n" #: src/annotations.js:137 src/annotations.js:172 #, fuzzy msgid "Bookmark deleted" msgstr "Bokmerkjer" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "" #: src/annotations.js:437 msgid "Underline" msgstr "" #: src/annotations.js:438 msgid "Squiggly" msgstr "" #: src/annotations.js:439 msgid "Strikethrough" msgstr "" #: src/annotations.js:440 msgid "Yellow" msgstr "" #: src/annotations.js:441 #, fuzzy msgid "Orange" msgstr "Andre endringar:" #: src/annotations.js:442 #, fuzzy msgid "Red" msgstr "Last opp på nytt" #: src/annotations.js:443 msgid "Magenta" msgstr "" #: src/annotations.js:444 msgid "Aqua" msgstr "" #: src/annotations.js:445 msgid "Lime" msgstr "" #: src/annotations.js:446 #, fuzzy msgid "Custom Color…" msgstr "Vel eigendefinert farge" #: src/annotations.js:498 #, fuzzy msgid "Custom" msgstr "Egendefinert tema" #: src/annotations.js:592 #, fuzzy msgid "JSON Files" msgstr "Alle filer" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "Alle filer" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 #, fuzzy msgid "No Annotations" msgstr "Kommentarar" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "" #: src/annotations.js:625 #, fuzzy msgid "Cannot Import Annotations" msgstr "Importer kommentarar…" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 #, fuzzy msgid "An error occurred" msgstr "Eit problem oppstod." #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "" #: src/annotations.js:648 #, fuzzy, javascript-format msgid "Annotations for “%s”" msgstr "Kommentarar" #: src/annotations.js:649 #, fuzzy, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "Kommentarar" msgstr[1] "Kommentarar" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "" #: src/app.js:136 #, fuzzy msgid "E-Book Files" msgstr "E-bok filer" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "Kay Siver Bø" #: src/app.js:414 #, fuzzy msgid "Source Code" msgstr "Kjelde: " #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Utgivar" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 #, fuzzy msgid "Published" msgstr "Utgivar" #. Translators: this is the heading for the modified date #: src/book-info.js:137 #, fuzzy msgid "Updated" msgstr "Oppdater" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Språk" #: src/book-info.js:139 #, fuzzy msgid "Translated by" msgstr "Omsett" #: src/book-info.js:140 msgid "Edited by" msgstr "" #: src/book-info.js:141 msgid "Narrated by" msgstr "" #: src/book-info.js:142 msgid "Illustrated by" msgstr "" #: src/book-info.js:143 msgid "Produced by" msgstr "" #: src/book-info.js:144 msgid "Artwork by" msgstr "" #: src/book-info.js:145 msgid "Color by" msgstr "" #: src/book-info.js:146 #, fuzzy msgid "Contributors" msgstr "Innhald" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "Identifikator" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "Om denne boka" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "" #: src/book-viewer.js:29 #, fuzzy, javascript-format msgid "Page %s" msgstr "Neste side" #: src/book-viewer.js:32 #, fuzzy msgid "Footnote" msgstr "Gå til neste side" #: src/book-viewer.js:33 #, fuzzy msgid "Go to Footnote" msgstr "Gå til neste side" #: src/book-viewer.js:34 msgid "Endnote" msgstr "" #: src/book-viewer.js:35 #, fuzzy msgid "Go to Endnote" msgstr "Gå til neste side" #: src/book-viewer.js:36 msgid "Note" msgstr "" #: src/book-viewer.js:37 #, fuzzy msgid "Go to Note" msgstr "Gå til neste side" #: src/book-viewer.js:38 #, fuzzy msgid "Definition" msgstr "Ingen resultat funnet" #: src/book-viewer.js:39 #, fuzzy msgid "Go to Definition" msgstr "Gå til plassering" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "" #: src/book-viewer.js:622 #, fuzzy msgid "Remove bookmark" msgstr "Fjern bok" #: src/book-viewer.js:623 #, fuzzy msgid "Add bookmark" msgstr "Legg til bøker" #: src/book-viewer.js:714 #, fuzzy msgid "File not found" msgstr "Fant ikkje fil." #: src/book-viewer.js:715 #, fuzzy msgid "File type not supported" msgstr "Filtype ikkje støtta." #: src/book-viewer.js:804 #, fuzzy msgid "Annotation deleted" msgstr "Kommentar" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "Bilete frå “%s”" #: src/book-viewer.js:904 msgid "Image" msgstr "Bilete" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "av %d" #: src/library.js:47 msgid "Loading" msgstr "" #: src/library.js:48 msgid "Failed to Load" msgstr "" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "Last opp på nytt" #: src/library.js:51 msgid "See All" msgstr "" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "Søk" #: src/library.js:53 msgid "Filter" msgstr "" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "" #: src/library.js:56 msgid "Buy" msgstr "" #: src/library.js:58 msgid "Preview" msgstr "" #: src/library.js:59 msgid "Sample" msgstr "" #: src/library.js:60 msgid "Borrow" msgstr "" #: src/library.js:61 msgid "Subscribe" msgstr "" #: src/library.js:63 msgid "Free" msgstr "" #: src/library.js:65 msgid "First" msgstr "" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "" #: src/library.js:68 msgid "Last" msgstr "" #: src/library.js:70 #, fuzzy msgid "Search Terms" msgstr "Søk" #: src/library.js:72 msgid "Title" msgstr "" #: src/library.js:73 msgid "Author" msgstr "" #: src/library.js:74 #, fuzzy msgid "Contributor" msgstr "Innhald" #: src/library.js:438 #, fuzzy msgid "Remove Book?" msgstr "Fjern bok" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "" #: src/library.js:441 msgid "_Cancel" msgstr "" #: src/library.js:442 msgid "_Remove" msgstr "" #: src/library.js:472 msgid "Failed to Open" msgstr "" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "" #: src/library.js:644 msgid "Download Failed" msgstr "" #: src/library.js:698 msgid "Rename…" msgstr "" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "" #: src/library.js:725 msgid "Name" msgstr "" #: src/library.js:740 #, fuzzy msgid "All Books" msgstr "Meny" #: src/library.js:746 #, fuzzy msgid "Add Catalog…" msgstr "Legg til bøker…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "Bibliotek" #: src/library.js:821 msgid "Catalogs" msgstr "" #: src/library.js:864 msgid "Catalog removed" msgstr "" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "" #: src/library.js:952 msgid "Add" msgstr "" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" #: src/library.js:961 msgid "URL" msgstr "" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" #: src/selection-tools.js:38 src/selection-tools.js:51 #, fuzzy msgid "No Definitions Found" msgstr "Ingen resultat funnet" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Wikipedia" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" #: src/selection-tools.js:52 #, fuzzy msgid "Search on Wikipedia" msgstr "Wikipedia" #: src/selection-tools.js:59 msgid "Translate" msgstr "Omsett" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "" #: src/selection-tools.js:67 #, fuzzy msgid "Search…" msgstr "Søk" #: src/themes.js:8 msgid "Default" msgstr "" #: src/themes.js:13 msgid "Gray" msgstr "" #: src/themes.js:18 msgid "Sepia" msgstr "" #: src/themes.js:23 msgid "Grass" msgstr "" #: src/themes.js:28 msgid "Cherry" msgstr "" #: src/themes.js:33 msgid "Sky" msgstr "" #: src/themes.js:38 msgid "Solarized" msgstr "" #: src/themes.js:43 msgid "Gruvbox" msgstr "" #: src/themes.js:48 msgid "Nord" msgstr "" #: src/tts.js:117 #, fuzzy msgid "Text-to-Speech Error" msgstr "Tekst-til-Tale" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "" #: src/ui/annotation-popover.ui:13 #, fuzzy msgid "Highlight Style" msgstr "Høydepunkt" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "Slett" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "Meny" #: src/ui/annotation-popover.ui:47 #, fuzzy msgid "Add Note…" msgstr "Legg til bøker…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "Eksporter kommentarar…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "Opne kopi" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "Importer kommentarar…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "Om Foliate" #: src/ui/book-viewer.ui:45 #, fuzzy msgid "All Sections" msgstr "Samlingar" #: src/ui/book-viewer.ui:50 #, fuzzy msgid "Current Section" msgstr "Noverande kapittel" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "" #: src/ui/book-viewer.ui:89 #, fuzzy msgid "Scrolled Mode" msgstr "Rulla" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "Detaljer" #: src/ui/book-viewer.ui:193 #, fuzzy msgid "Open Another File…" msgstr "Opne fil" #: src/ui/book-viewer.ui:245 #, fuzzy msgid "Pin Sidebar" msgstr "Vis sidemeny" #: src/ui/book-viewer.ui:253 #, fuzzy msgid "Book Menu" msgstr "Meny" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "Søk" #: src/ui/book-viewer.ui:276 #, fuzzy msgid "Find in book…" msgstr "Finn i bok" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "Innhald" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Kommentarar" #: src/ui/book-viewer.ui:403 #, fuzzy msgid "Select some text to add annotations" msgstr "Ingen kommentarar" #: src/ui/book-viewer.ui:433 #, fuzzy msgid "Filter annotations…" msgstr "Søk i kommentarar" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Bokmerkjer" #: src/ui/book-viewer.ui:458 #, fuzzy msgid "No Bookmarks" msgstr "Bokmerkjer" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 #, fuzzy msgid "No Results Found" msgstr "Ingen resultat funnet" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 #, fuzzy msgid "Try a different search" msgstr "Prøv eit anna søk." #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 #, fuzzy msgid "Sidebar" msgstr "Vis sidemeny" #: src/ui/book-viewer.ui:556 #, fuzzy msgid "View Menu" msgstr "Meny" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 #, fuzzy msgid "Zoom Out" msgstr "Zoom ut" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 #, fuzzy msgid "Zoom In" msgstr "Zoom inn" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "" #: src/ui/book-viewer.ui:611 #, fuzzy msgid "Light Style" msgstr "Lys" #: src/ui/book-viewer.ui:621 #, fuzzy msgid "Dark Style" msgstr "Mørk-modus" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Fullskjerm" #: src/ui/export-dialog.ui:5 #, fuzzy msgid "Export Annotations" msgstr "Eksporter kommentarar…" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Kopier" #: src/ui/image-viewer.ui:10 #, fuzzy msgid "Save As…" msgstr "Lagra som" #: src/ui/image-viewer.ui:25 #, fuzzy msgid "Rotate 90° Counter-Clockwise" msgstr "Roter 90° mot klokka" #: src/ui/image-viewer.ui:32 #, fuzzy msgid "Rotate 90° Clockwise" msgstr "Roter 90° med klokka" #: src/ui/import-dialog.ui:7 #, fuzzy msgid "Import Annotations" msgstr "Importer kommentarar…" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "" #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "" #: src/ui/library.ui:6 #, fuzzy msgid "List View" msgstr "Vis" #: src/ui/library.ui:11 #, fuzzy msgid "Grid View" msgstr "Vis" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Opne…" #: src/ui/library.ui:67 #, fuzzy msgid "Main Menu" msgstr "Meny" #: src/ui/library.ui:110 #, fuzzy msgid "Open" msgstr "Opne…" #: src/ui/library.ui:117 #, fuzzy msgid "Library Menu" msgstr "Bibliotek" #: src/ui/library.ui:134 #, fuzzy msgid "Search library…" msgstr "Søkjer…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "" #: src/ui/library-view.ui:21 #, fuzzy msgid "No Books Yet" msgstr "Ingen bøker endå" #: src/ui/library-view.ui:22 #, fuzzy msgid "Open a book to start reading" msgstr "Opne ei bok for å starte lesinga." #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "Plassering" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "" #: src/ui/navbar.ui:162 #, fuzzy msgid "Time Left in Section" msgstr "Gjenståande tid i bok" #: src/ui/navbar.ui:192 #, fuzzy msgid "Time Left in Book" msgstr "Gjenståande tid i bok" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 #, fuzzy msgid "Page" msgstr "Neste side" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "" #: src/ui/navbar.ui:322 msgid "Section" msgstr "Seksjon" #: src/ui/navbar.ui:388 #, fuzzy msgid "First Section" msgstr "Noverande kapittel" #: src/ui/navbar.ui:397 #, fuzzy msgid "Previous Section" msgstr "Gå tilbake til forrige plassering" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "" #: src/ui/navbar.ui:414 #, fuzzy msgid "Next Section" msgstr "Noverande kapittel" #: src/ui/navbar.ui:423 #, fuzzy msgid "Last Section" msgstr "Seksjon" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Høydepunkt" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "Snakk frå her" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "" #: src/ui/selection-popover.ui:40 #, fuzzy msgid "Copy Identifier" msgstr "Identifikator" #: src/ui/selection-popover.ui:44 #, fuzzy msgid "Print Selection…" msgstr "Noverande kapittel" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "" #: src/ui/view-preferences-window.ui:47 #, fuzzy msgid "Serif" msgstr "Serier" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "" #: src/ui/view-preferences-window.ui:121 #, fuzzy msgid "Line Height" msgstr "Lys" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "Blokkjustert" #: src/ui/view-preferences-window.ui:146 #, fuzzy msgid "Hyphenation" msgstr "Auto-orddeling" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Margar" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "" #: src/ui/view-preferences-window.ui:246 #, fuzzy msgid "Reduce Animation" msgstr "Kommentarar" #: data/com.github.johnfactotum.Foliate.desktop.in:5 #, fuzzy msgid "E-Book Viewer" msgstr "E-bok Framsynar" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "E-bok;Bok;EPUB;Framsynar;Lesar;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 #, fuzzy msgid "Bookmarks and annotations" msgstr "Kommentarar" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 #, fuzzy msgid "Find in book" msgstr "Finn i bok" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 msgid "Added option to override publisher font" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" #, fuzzy #~ msgid "Book" #~ msgstr "Meny" #, fuzzy #~ msgid "Viewer" #~ msgstr "Meny" #~ msgid "John Factotum" #~ msgstr "John Factotum" #, fuzzy #~ msgid "Reference" #~ msgstr "Innstillingar" #, fuzzy #~ msgid "Go to Reference" #~ msgstr "Innstillingar" #~ msgid "Keyboard Shortcuts" #~ msgstr "Tastatursnarvegar" #~ msgid "Preferences" #~ msgstr "Innstillingar" #~ msgid "Speak" #~ msgstr "Snakk" #, fuzzy #~ msgid "Fold Sidebar" #~ msgstr "Vis sidemeny" #~ msgid "Save File" #~ msgstr "Lagra fil" #, fuzzy #~ msgid "Choose highlight style" #~ msgstr "Endre framhevingsfarge" #~ msgid "More" #~ msgstr "Mer" #, fuzzy #~ msgid "About this book" #~ msgstr "Om denne boka" #, fuzzy #~ msgid "Toggle sidebar" #~ msgstr "Bruk sidemeny" #~ msgid "Restore zoom" #~ msgstr "Nullstill zoom" #~ msgid "Go to previous page" #~ msgstr "Gå til forrige side" #~ msgid "Go back to previous location" #~ msgstr "Gå tilbake til forrige plassering" #, fuzzy #~ msgid "Go to next section" #~ msgstr "Gå til neste side" #, fuzzy #~ msgid "Go to last section" #~ msgstr "Gå til plassering" ================================================ FILE: po/oc.po ================================================ # Occitan translation file. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # Quentin PAGÈS, 2024. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2025-07-13 17:15+0200\n" "Last-Translator: Quentin PAGÈS\n" "Language-Team: \n" "Language: oc\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 3.6\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "Marcapagina suprimit" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "Desfar" #: src/annotations.js:437 msgid "Underline" msgstr "Soslinhar" #: src/annotations.js:438 msgid "Squiggly" msgstr "Desformat" #: src/annotations.js:439 msgid "Strikethrough" msgstr "Raiat" #: src/annotations.js:440 msgid "Yellow" msgstr "Jaune" #: src/annotations.js:441 msgid "Orange" msgstr "Irange" #: src/annotations.js:442 msgid "Red" msgstr "Roge" #: src/annotations.js:443 msgid "Magenta" msgstr "Magenta" #: src/annotations.js:444 msgid "Aqua" msgstr "Aiga" #: src/annotations.js:445 msgid "Lime" msgstr "Verd citron" #: src/annotations.js:446 msgid "Custom Color…" msgstr "Colors personalizadas…" #: src/annotations.js:498 msgid "Custom" msgstr "Personalizar" #: src/annotations.js:592 msgid "JSON Files" msgstr "Fichièrs JSON" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "Totes los fichièrs" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "Cap d’anotacion" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "Lo fichièr importat a pas cap d’anotacion" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "Importacion de las anotacions impossibla" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "Una error s'es producha" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "Avètz pas cap d’anotacion per aqueste libre" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "Anotacions per « %s »" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d anotacion" msgstr[1] "%d anotacions" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "Tampar" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "Anullar" #: src/app.js:136 msgid "E-Book Files" msgstr "Fichièrs E-Book" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "Legir d’e-books amb estil" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "Quentin PAGÈS" #: src/app.js:414 msgid "Source Code" msgstr "Còdi font" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Editor" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "Publicat" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "Mes a jorn" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Lenga" #: src/book-info.js:139 msgid "Translated by" msgstr "Traduch per" #: src/book-info.js:140 msgid "Edited by" msgstr "Editat per" #: src/book-info.js:141 msgid "Narrated by" msgstr "Narrat per" #: src/book-info.js:142 msgid "Illustrated by" msgstr "Illustrat per" #: src/book-info.js:143 msgid "Produced by" msgstr "Produch per" #: src/book-info.js:144 msgid "Artwork by" msgstr "Grafisme per" #: src/book-info.js:145 msgid "Color by" msgstr "Color per" #: src/book-info.js:146 msgid "Contributors" msgstr "Contributors" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "Identificator" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "A prepaus d’aqueste libre" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "Emp. %s de %s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "Pagina %s de %s" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "Pagina %s" #: src/book-viewer.js:32 msgid "Footnote" msgstr "Nòta de pè de pagina" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "Anar a la nòta de pè de pagina" #: src/book-viewer.js:34 msgid "Endnote" msgstr "Nòta de fin" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "Anar a la nòta de fin" #: src/book-viewer.js:36 msgid "Note" msgstr "Nòta" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "Anar a la nòta" #: src/book-viewer.js:38 msgid "Definition" msgstr "Definicion" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "Anar a la definicion" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "Bibliografia" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "Anar a la biografia" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "Suprimir lo marcapagina" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "Apondre un marcapagina" #: src/book-viewer.js:714 msgid "File not found" msgstr "Impossible de trobar lo fichièr" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "Tipe Mime pas pres en carga" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "Anotacion suprimida" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" "« %s »\n" "—%s, « %s », p. %s" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" "« %s »\n" "— « %s », p. %s" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "« %s » (p. %s)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" "« %s »\n" "—%s, « %s »" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" "« %s »\n" "— « %s »" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "« %s »" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "Imatge de « %s »" #: src/book-viewer.js:904 msgid "Image" msgstr "Imatge" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "de %d" #: src/library.js:47 msgid "Loading" msgstr "Cargament" #: src/library.js:48 msgid "Failed to Load" msgstr "Fracàs de cargament" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "Recargar" #: src/library.js:51 msgid "See All" msgstr "Tot veire" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "Recercar" #: src/library.js:53 msgid "Filter" msgstr "Filtre" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "Telecargar" #: src/library.js:56 msgid "Buy" msgstr "Crompar" #: src/library.js:58 msgid "Preview" msgstr "Apercebut" #: src/library.js:59 msgid "Sample" msgstr "Exemple" #: src/library.js:60 msgid "Borrow" msgstr "Manlevar" #: src/library.js:61 msgid "Subscribe" msgstr "S'abonar" #: src/library.js:63 msgid "Free" msgstr "Gratuit" #: src/library.js:65 msgid "First" msgstr "Primièr" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "Precedent" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "Seguent" #: src/library.js:68 msgid "Last" msgstr "Darrièr" #: src/library.js:70 msgid "Search Terms" msgstr "Tèrmes de recercar" #: src/library.js:72 msgid "Title" msgstr "Títol" #: src/library.js:73 msgid "Author" msgstr "Autor" #: src/library.js:74 msgid "Contributor" msgstr "Contributor" #: src/library.js:438 msgid "Remove Book?" msgstr "Suprimir lo libre ?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "" "La progression de la lectura, las anotacion e marcapaginas seràn perduts per " "totjorn" #: src/library.js:441 msgid "_Cancel" msgstr "_Anullar" #: src/library.js:442 msgid "_Remove" msgstr "_Suprimir" #: src/library.js:472 msgid "Failed to Open" msgstr "Impossible de dobrir" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "Impossible de dobrir lo fichièr amb l’aplicacion seleccionada" #: src/library.js:644 msgid "Download Failed" msgstr "Fracàs del telecargament" #: src/library.js:698 msgid "Rename…" msgstr "Renomenar…" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "Suprimir" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "Renomenar" #: src/library.js:725 msgid "Name" msgstr "Nom" #: src/library.js:740 msgid "All Books" msgstr "Totes los libres" #: src/library.js:746 msgid "Add Catalog…" msgstr "Apondre catalòg…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "Bibliotèca" #: src/library.js:821 msgid "Catalogs" msgstr "Catalògues" #: src/library.js:864 msgid "Catalog removed" msgstr "Catalòg suprimit" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "Apondre catalòg" #: src/library.js:952 msgid "Add" msgstr "Apondre" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "Podètz percórrer e telecargar de libres a partir del catalòg OPDS. Ne saber mai…" #: src/library.js:961 msgid "URL" msgstr "URL" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "Diccionari" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "De Wikiccionari, publicat sota la licéncia CC BY-SA." #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "Cap de definicion pas trobada" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "Cercar sul Wikiccionari" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Wikipèdia" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "De Wikipèdia, publicat sota la licéncia CC BY-SA." #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "Cercar sus Wikipèdia" #: src/selection-tools.js:59 msgid "Translate" msgstr "Traduire" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "Traduccion de Google Translate" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "Recuperacion impossibla de la traduccion" #: src/selection-tools.js:67 msgid "Search…" msgstr "Recercar…" #: src/themes.js:8 msgid "Default" msgstr "Per defaut" #: src/themes.js:13 msgid "Gray" msgstr "Gris" #: src/themes.js:18 msgid "Sepia" msgstr "Sèpia" #: src/themes.js:23 msgid "Grass" msgstr "Èrba" #: src/themes.js:28 msgid "Cherry" msgstr "Cerièra" #: src/themes.js:33 msgid "Sky" msgstr "Cèl" #: src/themes.js:38 msgid "Solarized" msgstr "Solarizat" #: src/themes.js:43 msgid "Gruvbox" msgstr "Aisinas" #: src/themes.js:48 msgid "Nord" msgstr "Nòrd" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "Error de sintèsi vocala" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "" "Asseguratz-vos que Speech Dispatcher es installat e fonciona sul sistèma" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "Copiat al quichapapièrs" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "Estil de mesa en evidéncia" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "Suprimir" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "Menú" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "Apondre una nòta…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "Dobrir dins una fenèstra novèla" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "Dobrir amb una aplicacion extèrna" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "Exportar las anotacions…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "Fenèstra novèla" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "Dobrir una còpia" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "Importar las anotacions…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "A prepaus de Foliate" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "Totas las seccions" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "Seccion actuala" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "Trapar los mots entièrs solament" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "Respectar la cassa" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "Correspondéncia d’accents grafics" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "Polissa e paramètres d’agençament" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "Mòde defilament" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "Intervertir las colors en mòde escur" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "Rescondre auto lo cursor" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "Imprimir…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "Inspector" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "Se pòt pas dobrir lo libre" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "Detalhs" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "Dobrir un autre fichièr…" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "Penjar lo panèl lateral" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "Menú libre" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "Cercar" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "Cercar dins lo libre…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "Contengut" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Anotacions" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "Seleccionar de tèxte per ajustar d’anotacions" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "Filtrar las anotacions…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Marcapaginas" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "Cap de marcapagina" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "Ajustatz-ne per los veire aicí" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "Cap de resultat pas trobat" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "Ensajatz una autra recèrca" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "Panèl lateral" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "Afichar lo menú" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "Zoom avant" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "Reïnicializar lo zoom" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "Zoom arrièr" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "Seguir lo tèma del sistèma" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "Estil clar" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "Estil escur" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Ecran complèt" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "Exportar las anotacions" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "Exportar" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "Format" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "" "Causissètz « JSON » s’avètz previst d’importar d’anotacion dins Foliate" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "Markdown" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "Org Mode" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Copiar" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "Enregistrar jos…" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "Rotacion 90° sens antiorari" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "Rotacion 90° sens orari" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "Importar las anotacions" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "Importar" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "" "L’identificant correspond pas. Aquestas anotacions son benlèu pas per " "aqueste libre." #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "Importar malgrat tot" #: src/ui/library.ui:6 msgid "List View" msgstr "Vista en lista" #: src/ui/library.ui:11 msgid "Grid View" msgstr "Vista en grasilha" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Dobrir…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "Menú principal" #: src/ui/library.ui:110 msgid "Open" msgstr "Dobrir" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "Menú bibliotèca" #: src/ui/library.ui:134 msgid "Search library…" msgstr "Cercar dins la bibliotèca…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "Retorn" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "En avant" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "Cap de libre pel moment" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "Dobrir un libre per començar de legir" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "Emplaçament" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "Narracion" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "Temps restant dins la seccion" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "Temps restant dins lo libre" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "Pagina" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "Pegar e anar" #: src/ui/navbar.ui:322 msgid "Section" msgstr "Seccion" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "Primièra seccion" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "Seccion precedenta" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "Anar a…" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "Seccion seguenta" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "Darrièra seccion" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Susbrilhança" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "Parlar d’aquí" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "Copiar amb citacion" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "Copiar l’identificant" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "Imprimir la seleccion…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "Velocitat" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "Ton" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "Lectura/Pausa" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "Arrestar" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "Polissa" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "Talha de polissa" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "Talha de polissa per defaut" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "Talha minimala de la polissa" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "Familha de polissa" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "Polissa per defaut" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "Serif" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "Sans-serif" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "Subrecargar la polissa de l’editor" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "Polissa serif" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "Polissa sans-serif" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "Polissa de chassa fixa" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "Agençament" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "Paragraf" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "Nautor de linha" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "Justificacion" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "Copadura dels mots" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Marges" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "Nombre maximum de colomnas" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "Talha maximala de linha" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "" "Largor maximala de colomna (escritura orizontala) o nautor (escritura " "verticala)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "Talah maximala dels paragrafes" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "Largor maximala (escritura orizontala) o nautor (escritura verticala)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "Color" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "Compòrtament" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "Redusir l’animacion" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "Visionadoira de libre electronic" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "" "Ebook;libre;EPUB;visualizaire;visualizaira;visionador;visionadoira;lector;" "legeire;legeira;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "Descobrissètz un capítol novèl en legissent amb Foliate, lo lector d’e-book " "modèrn fargat per GNOME. Immergissètz-vos dins una interfàcia sens cap de " "distraccion, amb de foncionalitats personalizablas concebudas per " "correspondre a vòstras preferéncias unicas." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "Foncionalitats inclusas :" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "Dobrir de fichièrs EPUB, Mobipocket, Kindle, FB2, CBZ, e PDF" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "Mòde paginat e defilament" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "Personalizar la polissa e la nautor de linha" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "Mòde clar, sepia, escur e intervertir" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "Barra de progression de la lectura amb marcadors pels capítols" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "Marcapaginas e anotacions" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "Cercar dins lo libre" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "Consulta rapida del diccionari" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "" "Correccion del problèma de la fin de capítol quand lo capítol comença amb " "una pagina de saut" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "Correccion de l'ensemble de tèxte dins los tablèus" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "Correccion de problèma de performança amb los catalògues OPDS" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "" "Apondon de la presa en carga dels catalògues OPDS, ara amb presa en carga " "per OPDS 2.0" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 msgid "Added option to override publisher font" msgstr "Opcion aponduda per subrecargar la polissa de l’editor" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "Apondon de l’opcion per reduire l’animacion" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "Apondon de la presa en carga per JPEG XL dins CBZ" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "Correccion de l’obtencion de fichièr de Tracker dins Flatpak" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "" "Analisi corregida de las datas del primièr sègle e abans lo Crist que son " "pas sonque d'annadas" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "Foliate foguèt reinscrich de zèro amb una bibliotèca d’e-book novèla e las " "darrièras bibliotècas de la platafòrma, GTK 4 e Libadwaita, amb un " "refrescament de l’interfàcia utilizaire e de melhoraments de las " "performanças." #~ msgid "Book" #~ msgstr "Libre" #~ msgid "EPUB" #~ msgstr "EPUB" #~ msgid "Ebook" #~ msgstr "Ebook" #~ msgid "Reader" #~ msgstr "Lector" #~ msgid "Viewer" #~ msgstr "Visionadoira" ================================================ FILE: po/pt_BR.po ================================================ # Brazilian Portuguese translation for com.github.johnfactotum.Foliate package. # Copyright (C) 2019 THE com.github.johnfactotum.Foliate # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # FIRST AUTHOR , YEAR. # Fábio Nogueira , 2019. # Marcelo dos Santos Mafra , 2020. # Fúlvio Alves , 2020, 2021, 2023. # Luan Henrique Oyera Chiacherini , 2025. msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2025-03-17 00:04-0300\n" "Last-Translator: Luan Henrique Oyera Chiacherini \n" "Language-Team: Fábio Nogueira ; Marcelo dos Santos " "Mafra \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: Poedit 3.4\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "Marcador excluído" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "Desfazer" #: src/annotations.js:437 msgid "Underline" msgstr "Sublinhado" #: src/annotations.js:438 msgid "Squiggly" msgstr "Ondulado" #: src/annotations.js:439 msgid "Strikethrough" msgstr "Tachado" #: src/annotations.js:440 msgid "Yellow" msgstr "Amarelo" #: src/annotations.js:441 msgid "Orange" msgstr "Laranja" #: src/annotations.js:442 msgid "Red" msgstr "Vermelho" #: src/annotations.js:443 msgid "Magenta" msgstr "Magenta" #: src/annotations.js:444 msgid "Aqua" msgstr "Aqua" #: src/annotations.js:445 msgid "Lime" msgstr "Lima" #: src/annotations.js:446 msgid "Custom Color…" msgstr "Cor personalizada…" #: src/annotations.js:498 msgid "Custom" msgstr "Personalizado" #: src/annotations.js:592 msgid "JSON Files" msgstr "Arquivos JSON" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "Todos os arquivos" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "Sem anotações" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "O arquivo importado não possui anotações" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "Não é possível importar anotações" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "Ocorreu um erro" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "Você não tem anotações parra este livro" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "Anotações para “%s”" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d anotação" msgstr[1] "%d anotações" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "Fechar" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "Cancelar" #: src/app.js:136 msgid "E-Book Files" msgstr "Arquivos de e-book" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "Leia e-books com estilo" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "" "Fábio Nogueira\n" "Marcelo dos Santos Mafra\n" "Fúlvio Alves\n" "Luan Henrique Oyera Chiacherini" #: src/app.js:414 msgid "Source Code" msgstr "Código fonte" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Editora" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "Publicado" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "Atualizado" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Idioma" #: src/book-info.js:139 msgid "Translated by" msgstr "Traduzido por" #: src/book-info.js:140 msgid "Edited by" msgstr "Editado por" #: src/book-info.js:141 msgid "Narrated by" msgstr "Narrado por" #: src/book-info.js:142 msgid "Illustrated by" msgstr "Ilustrado por" #: src/book-info.js:143 msgid "Produced by" msgstr "Produzido por" #: src/book-info.js:144 msgid "Artwork by" msgstr "Arte de" #: src/book-info.js:145 msgid "Color by" msgstr "Cor por" #: src/book-info.js:146 msgid "Contributors" msgstr "Contribuidores" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "Identificador" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "Sobre este livro" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "Loc. %s de %s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "Página %s de %s" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "Página %s" #: src/book-viewer.js:32 msgid "Footnote" msgstr "Nota de rodapé" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "Ir para a nota de rodapé" #: src/book-viewer.js:34 msgid "Endnote" msgstr "Nota de fim" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "Ir para a nota de fim" #: src/book-viewer.js:36 msgid "Note" msgstr "Nota" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "Ir para a nota" #: src/book-viewer.js:38 msgid "Definition" msgstr "Definição" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "Ir para a definição" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "Bibliografia" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "Ir para a Bibliografia" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "Remover marcador" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "Adicionar marcador" #: src/book-viewer.js:714 msgid "File not found" msgstr "Arquivo não encontrado" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "Tipo de arquivo não suportado" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "Anotação excluída" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" "‘%s’\n" "—%s, “%s”, p. %s" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" "‘%s’\n" "—“%s”, p. %s" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "‘%s’ (p. %s)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" "‘%s’\n" "—%s, “%s”" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" "‘%s’\n" "—“%s”" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "‘%s’" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "Imagem de “%s”" #: src/book-viewer.js:904 msgid "Image" msgstr "Imagem" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "de %d" #: src/library.js:47 msgid "Loading" msgstr "Carregando" #: src/library.js:48 #, fuzzy msgid "Failed to Load" msgstr "Copiado para a área de transferência" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "Recarregar" #: src/library.js:51 msgid "See All" msgstr "Ver Todos" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "Pesquisar" #: src/library.js:53 msgid "Filter" msgstr "Filtrar" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "Descarregar" #: src/library.js:56 msgid "Buy" msgstr "Comprar" #: src/library.js:58 #, fuzzy msgid "Preview" msgstr "Anterior" #: src/library.js:59 msgid "Sample" msgstr "Amostra" #: src/library.js:60 msgid "Borrow" msgstr "Emprestar" #: src/library.js:61 msgid "Subscribe" msgstr "Subscrever" #: src/library.js:63 msgid "Free" msgstr "Grátis" #: src/library.js:65 msgid "First" msgstr "Primeiro" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "Anterior" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "Próxima" #: src/library.js:68 msgid "Last" msgstr "Último" #: src/library.js:70 #, fuzzy msgid "Search Terms" msgstr "Pesquisar" #: src/library.js:72 msgid "Title" msgstr "Título" #: src/library.js:73 msgid "Author" msgstr "Autor" #: src/library.js:74 #, fuzzy msgid "Contributor" msgstr "Contribuidores" #: src/library.js:438 msgid "Remove Book?" msgstr "Remover livro?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "" "O progresso de leitura, as anotações e os marcadores serão perdidos " "permanentemente" #: src/library.js:441 msgid "_Cancel" msgstr "_Cancelar" #: src/library.js:442 msgid "_Remove" msgstr "_Remover" #: src/library.js:472 #, fuzzy msgid "Failed to Open" msgstr "Copiado para a área de transferência" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "Não foi possível abrir o arquivo com o aplicativo selecionado" #: src/library.js:644 msgid "Download Failed" msgstr "Descarregamento falhado" #: src/library.js:698 msgid "Rename…" msgstr "Renomear…" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "Remover" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "Renomear" #: src/library.js:725 msgid "Name" msgstr "Nome" #: src/library.js:740 msgid "All Books" msgstr "Todos os livros" #: src/library.js:746 msgid "Add Catalog…" msgstr "Adicionar catálogo…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "Biblioteca" #: src/library.js:821 msgid "Catalogs" msgstr "Catálogos" #: src/library.js:864 msgid "Catalog removed" msgstr "Catálogo removido" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "Adicionar Catálogo" #: src/library.js:952 msgid "Add" msgstr "Adicionar" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "Pode consultar e descarregar livros dos catálogos OPDS. Saiba mais…" #: src/library.js:961 msgid "URL" msgstr "URL" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "Dicionário" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "Do Wikcionário, disponibilizado sob a Licença CC BY-SA." #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "Nenhuma definição encontrada" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "Pesquisar no Wikcionário" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Wikipédia" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "Da Wikipédia, disponibilizada sob a Licença CC BY-SA." #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "Pesquisar na Wikipédia" #: src/selection-tools.js:59 msgid "Translate" msgstr "Traduzir" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "Tradução por Google Tradutor" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "Não é possível obter a tradução" #: src/selection-tools.js:67 #, fuzzy msgid "Search…" msgstr "Pesquisar" #: src/themes.js:8 msgid "Default" msgstr "Padrão" #: src/themes.js:13 msgid "Gray" msgstr "Cinza" #: src/themes.js:18 msgid "Sepia" msgstr "Sépia" #: src/themes.js:23 msgid "Grass" msgstr "Grama" #: src/themes.js:28 msgid "Cherry" msgstr "Cereja" #: src/themes.js:33 msgid "Sky" msgstr "Céu" #: src/themes.js:38 msgid "Solarized" msgstr "Solarizado" #: src/themes.js:43 msgid "Gruvbox" msgstr "Gruvbox" #: src/themes.js:48 msgid "Nord" msgstr "Nord" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "Erro de conversão de texto em fala" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "" "Certifique-se de que o Speech Dispatcher esteja instalado e funcionando em " "seu sistema" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "Copiado para a área de transferência" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "Estilo de realce" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "Excluir" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "Menu" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "Adicionar nota…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "Abrir em nova janela" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "Abrir com aplicativo externo" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "Exportar Anotações…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "Nova janela" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "Abrir uma Cópia" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "Importar Anotações…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "Sobre o Foliate" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "Todas as seções" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "Seção atual" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "Apenas palavras inteiras" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "Caso de compatibilidade" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "Diacríticos de correspondência" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "Configurações de fonte e layout" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "Modo de rolagem" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "Inverter cores no modo escuro" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "Ocultar cursor automaticamente" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "Imprimir…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "Inspetor" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "O livro não pode ser aberto" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "Detalhes" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "Abrir outro arquivo…" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "Fixar barra lateral" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "Menu do livro" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "Encontrar" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "Encontrar no livro…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "Conteúdo" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Anotações" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "Selecione algum texto para adicionar marcações" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "Filtrar anotações…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Marcadores" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "Sem marcadores" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "Adicione alguns marcadores para vê-los aqui" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "Sem resultados" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "Tente uma pesquisa diferente" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "Barra lateral" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "Menu de visualização" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "Reduzir o zoom" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "Redefinir zoom" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "Ampliar o zoom" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "Seguir o estilo do sistema" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "Estilo claro" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "Estilo escuro" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Tela cheia" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "Exportar anotações" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "Exportar" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "Formatar" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "" "Escolha “JSON” se você planeja importar anotações de volta para o Foliate" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "Markdown" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "Org Mode" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Copiar" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "Salvar como…" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "Girar 90° no sentido anti-horário" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "Girar 90° no sentido horário" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "Importar Anotações" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "Importar" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "" "O identificador não corresponde. Essas anotações podem não ser deste livro." #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "Importar mesmo assim" #: src/ui/library.ui:6 msgid "List View" msgstr "Visualização em lista" #: src/ui/library.ui:11 msgid "Grid View" msgstr "Visualização em grade" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Abrir…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "Menu principal" #: src/ui/library.ui:110 #, fuzzy msgid "Open" msgstr "Abrir…" #: src/ui/library.ui:117 #, fuzzy msgid "Library Menu" msgstr "Biblioteca" #: src/ui/library.ui:134 msgid "Search library…" msgstr "Pesquisar biblioteca…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "Voltar" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "Avançar" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "Ainda não há livros" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "Abra um livro para começar a ler" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "Localização" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "Narração" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "Tempo restante na seção" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "Tempo restante no livro" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "Página" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "Colar e ir" #: src/ui/navbar.ui:322 msgid "Section" msgstr "Seção" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "Primeira seção" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "Seção anterior" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "Pular para…" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "Próxima seção" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "Última seção" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Realçar" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "Falar à partir daqui" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "Copiar com citação" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "Copiar identificador" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "Imprimir seleção…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "Velocidade" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "Tom" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "Reproduzir/Pausar" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "Parar" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "Fonte" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "Tamanho da fonte" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "Tamanho de fonte padrão" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "Tamanho mínimo da fonte" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "Família de fonte" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "Fonte padrão" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "Serifada" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "Sem serifa" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "Sobrepor a Fonte do Publicador" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "Fonte serifada" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "Fonte sem serifa" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "Fonte monoespaçada" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "Layout" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "Parágrafo" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "Altura da linha" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "Justificação Completa" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "Hifenização" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Margens" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "Número máximo de colunas" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "Tamanho máximo em linha" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "" "Largura (escrita horizontal) ou altura (escrita vertical) máxima da coluna" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "Tamanho máximo do bloco" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "Altura (escrita horizontal) ou largura (escrita vertical) máxima" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "Cor" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "Comportamento" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "Reduzir animações" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "Visualizador de e-book" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "Ebook;Book;EPUB;Viewer;Reader;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "Descubra um novo capítulo na leitura com o Foliate, o moderno leitor de e-" "books feito sob medida para o GNOME. Mergulhe em uma interface livre de " "distrações, com recursos de personalização projetados para atender às suas " "preferências únicas." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "Entre as características, estão:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "Abrir arquivos EPUB, Mobipocket, Kindle, FB2, CBZ e PDF" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "Modo paginado e modo de rolagem" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "Personalização de fonte e de espaçamento entre linhas" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "Modo claro, sépia, escuro e invertido" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "Controle deslizante de progresso de leitura com marcação de capítulo" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "Marcadores e anotações" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "Localizar no livro" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "Pesquisa rápida de dicionário" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "Corrigido corte no final do capítulo quando o capítulo começa com quebra de página" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "Corrigido encaixe incorreto de texto em tabelas" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "Corrigido um problema de desempenho com catálogos OPDS" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "Adicionado suporte a catálogos OPDS, agora com suporte para OPDS 2.0" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 #, fuzzy msgid "Added option to override publisher font" msgstr "Adicionada opção para substituir a fonte do editor" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "Adicionada opção para reduzir animações" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "Adicionado suporte para JPEG XL em CBZ" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "Corrigido problema ao obter arquivo do Tracker no Flatpak" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "Corrigido o parsing de datas do primeiro século e antes de Cristo não exclusivamente com anos" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "O Foliate foi reescrito do zero com uma nova biblioteca de renderização de e-" "books e com as bibliotecas de plataforma mais recentes, GTK 4 e Libadwaita, " "com interface de usuário atualizada e desempenho aprimorado." #~ msgid "Book" #~ msgstr "Livro" #~ msgid "EPUB" #~ msgstr "EPUB" #~ msgid "Ebook" #~ msgstr "E-book" #~ msgid "Reader" #~ msgstr "Leitor" #~ msgid "Viewer" #~ msgstr "Visualizador" #~ msgid "John Factotum" #~ msgstr "John Factotum" #, fuzzy #~ msgid "Reference" #~ msgstr "Preferências" #, fuzzy #~ msgid "Go to Reference" #~ msgstr "Preferências" #~ msgid "Keyboard Shortcuts" #~ msgstr "Atalhos de teclado" #~ msgid "Preferences" #~ msgstr "Preferências" #~ msgid "Speak" #~ msgstr "Falar" #, fuzzy #~ msgid "Fold Sidebar" #~ msgstr "Mostrar barra lateral" #, fuzzy #~ msgid "Voice" #~ msgstr "Dublador" #~ msgid "Save File" #~ msgstr "Salvar Arquivo" #, fuzzy #~ msgid "Choose highlight style" #~ msgstr "Mudar cor de realce" #~ msgid "More" #~ msgstr "Mais" #, fuzzy #~ msgid "About this book" #~ msgstr "Sobre este livro" #, fuzzy #~ msgid "Toggle sidebar" #~ msgstr "Usar barra lateral" #~ msgid "Restore zoom" #~ msgstr "Restaurar zoom" #~ msgid "Go to previous page" #~ msgstr "Ir para a página anterior" #~ msgid "Go back to previous location" #~ msgstr "Voltar para a localização anterior" #, fuzzy #~ msgid "Go to next section" #~ msgstr "Ir para a próxima página" #, fuzzy #~ msgid "Go to last section" #~ msgstr "Ir para localização" ================================================ FILE: po/ru.po ================================================ # Russian translations for com.github.johnfactotum.Foliate package. # Copyright (C) 2022 THE com.github.johnfactotum.Foliate'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # Schwonder Reismus , 2019. # Artem Polishchuk , 2019. # Artemii Sudakov , 2020. # Alexandre Prokoudine , 2021. # ViktorOn https://github.com/viktoron 2022. # Ser82-png , 2023. # msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: \n" "Last-Translator: Ser82-png \n" "Language-Team: \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<12 || n%100>14) ? 1 : 2);\n" "X-Generator: Poedit 3.0.1\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "Закладка удалена" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "Отменить" #: src/annotations.js:437 msgid "Underline" msgstr "Подчеркнуть" #: src/annotations.js:438 msgid "Squiggly" msgstr "Подчеркнуть волнистой линией" #: src/annotations.js:439 msgid "Strikethrough" msgstr "Зачеркнуть" #: src/annotations.js:440 msgid "Yellow" msgstr "Жёлтый" #: src/annotations.js:441 msgid "Orange" msgstr "Оранжевый" #: src/annotations.js:442 msgid "Red" msgstr "Красный" #: src/annotations.js:443 msgid "Magenta" msgstr "Пурпурный" #: src/annotations.js:444 msgid "Aqua" msgstr "Аква" #: src/annotations.js:445 msgid "Lime" msgstr "Лайм" #: src/annotations.js:446 msgid "Custom Color…" msgstr "Выбрать свой цвет…" #: src/annotations.js:498 msgid "Custom" msgstr "Пользовательский" #: src/annotations.js:592 msgid "JSON Files" msgstr "Файлы JSON" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "Все файлы" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "Нет примечаний" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "Импортированный файл не содержит примечаний" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "Невозможно импортировать примечания" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "Произошла ошибка" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "У вас нет никаких аннотаций к этой книге" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "Примечания для «%s»" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d примечание" msgstr[1] "%d примечания" msgstr[2] "%d примечаний" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "Закрыть" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "Отменить" #: src/app.js:136 msgid "E-Book Files" msgstr "Файлы электронных книг" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "Читайте электронные книги стильно" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "" "Schwonder Reismus, 2019\n" "Artem Polishchuk, 2019\n" "Artemii Sudakov, 2020\n" "Alexandre Prokoudine, 2021\n" "ViktorOn, 2022\n" "Ser82-png , 2023" #: src/app.js:414 msgid "Source Code" msgstr "Исходный код" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Издатель" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "Опубликовано" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "Обновлено" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Язык" #: src/book-info.js:139 msgid "Translated by" msgstr "Переведено" #: src/book-info.js:140 msgid "Edited by" msgstr "Отредактировано" #: src/book-info.js:141 msgid "Narrated by" msgstr "Озвучено" #: src/book-info.js:142 msgid "Illustrated by" msgstr "Проиллюстрировано" #: src/book-info.js:143 msgid "Produced by" msgstr "Создано" #: src/book-info.js:144 msgid "Artwork by" msgstr "Художественное оформление" #: src/book-info.js:145 msgid "Color by" msgstr "Цвет" #: src/book-info.js:146 msgid "Contributors" msgstr "Участники" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "Идентификатор" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "Об этой книге" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "Расп. %s из %s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "Страница %s из %s" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "Страница %s" #: src/book-viewer.js:32 msgid "Footnote" msgstr "Сноска" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "Перейти к сноске" #: src/book-viewer.js:34 msgid "Endnote" msgstr "Концевая сноска" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "Перейти к концевой сноске" #: src/book-viewer.js:36 msgid "Note" msgstr "Заметка" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "Перейти к заметке" #: src/book-viewer.js:38 msgid "Definition" msgstr "Определение" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "Перейти к определению" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "Библиография" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "Перейти к библиографии" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "Удалить закладку" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "Добавить закладку" #: src/book-viewer.js:714 msgid "File not found" msgstr "Файл не найден" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "Тип файла не поддерживается" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "Примечание удалено" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" "‘%s’\n" "—%s, «%s», с. %s" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" "‘%s’\n" "—«%s», с. %s" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "‘%s’ (с. %s)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" "‘%s’\n" "—%s, «%s»" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" "‘%s’\n" "—«%s»" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "‘%s’" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "Изображение с «%s»" #: src/book-viewer.js:904 msgid "Image" msgstr "Изображение" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "из %d" #: src/library.js:47 msgid "Loading" msgstr "Загрузка" #: src/library.js:48 msgid "Failed to Load" msgstr "Не удалось загрузить" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "Перезагрузить" #: src/library.js:51 msgid "See All" msgstr "Показать все" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "Поиск" #: src/library.js:53 msgid "Filter" msgstr "Фильтр" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "Скачать" #: src/library.js:56 msgid "Buy" msgstr "Купить" #: src/library.js:58 msgid "Preview" msgstr "Просмотр" #: src/library.js:59 msgid "Sample" msgstr "Ознакомиться" #: src/library.js:60 msgid "Borrow" msgstr "Одолжить" #: src/library.js:61 msgid "Subscribe" msgstr "Подписаться" #: src/library.js:63 msgid "Free" msgstr "Бесплатно" #: src/library.js:65 msgid "First" msgstr "Первый" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "Предыдущий" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "Следующий" #: src/library.js:68 msgid "Last" msgstr "Последний" #: src/library.js:70 msgid "Search Terms" msgstr "Поисковый запрос" #: src/library.js:72 msgid "Title" msgstr "Название" #: src/library.js:73 msgid "Author" msgstr "Автор" #: src/library.js:74 msgid "Contributor" msgstr "Участник" #: src/library.js:438 msgid "Remove Book?" msgstr "Удалить книгу?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "Прогресс чтения, примечания и закладки будут безвозвратно потеряны" #: src/library.js:441 msgid "_Cancel" msgstr "_Отменить" #: src/library.js:442 msgid "_Remove" msgstr "_Удалить" #: src/library.js:472 msgid "Failed to Open" msgstr "Не удалось открыть" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "Не удалось открыть файл с помощью выбранного приложения" #: src/library.js:644 msgid "Download Failed" msgstr "Не удалось скачать" #: src/library.js:698 msgid "Rename…" msgstr "Переименовать…" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "Удалить" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "Переименовать" #: src/library.js:725 msgid "Name" msgstr "Название" #: src/library.js:740 msgid "All Books" msgstr "Все книги" #: src/library.js:746 msgid "Add Catalog…" msgstr "Добавить каталог…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "Библиотека" #: src/library.js:821 msgid "Catalogs" msgstr "Каталоги" #: src/library.js:864 msgid "Catalog removed" msgstr "Каталог удалён" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "Добавить каталог" #: src/library.js:952 msgid "Add" msgstr "Добавить" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "Вы можете просматривать и скачивать книги из каталогов OPDS. Узнать больше…" #: src/library.js:961 msgid "URL" msgstr "URL" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "Cловарь" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "Из Викисловаря, распространяемого под лицензией CC BY-SA." #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "Определений не найдено" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "Поиск в Викисловаре" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Википедия" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "Из Википедии, распространяемой под лицензией CC BY-SA." #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "Поиск по Википедии" #: src/selection-tools.js:59 msgid "Translate" msgstr "Перевести" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "Перевести с помощью Google Translate" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "Не удалось получить перевод" #: src/selection-tools.js:67 msgid "Search…" msgstr "Искать…" #: src/themes.js:8 msgid "Default" msgstr "По умолчанию" #: src/themes.js:13 msgid "Gray" msgstr "Серый" #: src/themes.js:18 msgid "Sepia" msgstr "Сепия" #: src/themes.js:23 msgid "Grass" msgstr "Трава" #: src/themes.js:28 msgid "Cherry" msgstr "Вишня" #: src/themes.js:33 msgid "Sky" msgstr "Небо" #: src/themes.js:38 msgid "Solarized" msgstr "Solarized" #: src/themes.js:43 msgid "Gruvbox" msgstr "Gruvbox" #: src/themes.js:48 msgid "Nord" msgstr "Север" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "Ошибка при озвучки текста" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "Убедитесь, что Speech Dispatcher установлен и работает в вашей системе" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "Скопировано в буфер обмена" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "Стиль выделения" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "Удалить" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "Меню" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "Добавить заметку…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "Открыть в новом окне" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "Открыть с помощью внешнего приложения" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "Экспортировать примечания…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "Новое окно" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "Открыть копию" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "Импортировать примечания…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "О Foliate" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "Все разделы" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "Текущий раздел" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "Только слова целиком" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "Учитывать регистр" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "Учитывать диакритические знаки" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "Шрифт и настройка макета" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "Режим прокрутки" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "Инвертировать цвета в тёмном режиме" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "Автоматически скрывать курсор" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "Печать…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "Инспектор" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "Книга не может быть открыта" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "Подробности" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "Открыть другой файл…" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "Закрепить боковую панель" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "Меню книги" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "Искать" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "Искать в книге…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "Оглавление" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Примечания" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "Выделите какой-нибудь текст, чтобы добавить примечание" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "Фильтр примечаний…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Закладки" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "Нет закладок" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "Добавьте какие-нибудь закладки, чтобы увидеть их здесь" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "Ничего не найдено" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "Попробуйте изменить поисковой запрос" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "Боковая панель" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "Меню просмотра" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "Уменьшить масштаб" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "Сбросить масштаб" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "Увеличить масштаб" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "Системный стиль" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "Светлый стиль" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "Тёмный стиль" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Во весь экран" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "Экспортировать примечания" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "Экспортировать" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "Формат" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "" "Выберите «JSON», если планируете повторно импортировать свои примечания в " "Foliate" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "Markdown" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "Org-режим" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Копировать" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "Сохранить как…" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "Повернуть на 90° против часовой стрелки" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "Повернуть на 90° по часовой стрелке" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "Импортировать примечания" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "Импортировать" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "" "Идентификатор не совпадает. Эти примечания могут быть для другой книги." #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "Всё равно импортировать" #: src/ui/library.ui:6 msgid "List View" msgstr "Вид списком" #: src/ui/library.ui:11 msgid "Grid View" msgstr "Вид сеткой" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Открыть…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "Главное меню" #: src/ui/library.ui:110 msgid "Open" msgstr "Открыть" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "Меню библиотеки" #: src/ui/library.ui:134 msgid "Search library…" msgstr "Поиск в библиотеке…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "Назад" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "Вперёд" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "Книг пока нет" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "Откройте книгу, чтобы приступить к чтению" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "Расположение" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "Озвучивание" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "Раздел осталось читать" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "Книгу осталось читать" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "Страница" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "Вставить и продолжить" #: src/ui/navbar.ui:322 msgid "Section" msgstr "Раздел" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "Первый раздел" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "Предыдущий раздел" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "Перейти к…" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "Следующий раздел" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "Последний раздел" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Выделить" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "Озвучить отсюда" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "Копировать с указанием источника" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "Копировать идентификатор" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "Печатать выделенное…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "Скорость" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "Питч" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "Запуск/Пауза" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "Остановить" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "Шрифт" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "Размер шрифта" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "Размер шрифта по умолчанию" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "Минимальный размер шрифта" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "Семейство шрифта" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "Шрифт по умолчанию" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "С засечками" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "Без засечек" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "Переопределить шрифт издателя" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "Шрифт с засечками" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "Шрифт без засечек" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "Моноширный шрифт" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "Макет" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "Абзац" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "Высота строки" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "Выравнивание по ширине" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "Автоматическая расстановка переносов" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Поля" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "Максимальное количество столбцов" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "Максимальный размер элемента" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "" "Максимальная ширина столбца (горизонтальное написание) или высота " "(вертикальное написание)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "Максимальный размер блока" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "" "Максимальная высота (горизонтальное написание) или ширина (вертикальное " "написание)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "Цвет" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "Поведение" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "Отключить анимацию" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "Читалка электронных книг" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "Книга;Книги;EPUB;Просмотрщик;Читалка;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "Откройте для себя новую главу в чтении с Foliate, современным приложением " "для чтения электронных книг, разработанным специально для GNOME. Погрузитесь " "в удобный интерфейс с функциями настройки, разработанными в соответствии с " "вашими уникальными предпочтениями." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "Включает следующие функции:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "Открытие файлов: EPUB, Mobipocket, Kindle, FB2, CBZ и PDF" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "Режим разбивки на страницы и режим прокрутки" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "Настройка шрифта и межстрочного интервала" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "Режимы: «Светлый», «Сепия», «Тёмный» и «Инвертированный»" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "Ползунок прогресса чтения с отметками глав" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "Закладки и примечания" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "Найти в книге" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "Быстрая проверка по словарю" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "" "Исправлено прерывание конца главы, когда глава начинается с разрыва страницы" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "Исправлен неправильный перенос текста в таблицах" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "Исправлена проблема с производительностью каталогов OPDS" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "Добавлена поддержка каталогов OPDS, теперь поддерживается OPDS 2.0" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 msgid "Added option to override publisher font" msgstr "Добавлена возможность переопределения шрифта издателя" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "Добавлена возможность отключения анимации" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "Добавлена поддержка формата JPEG XL в CBZ" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "Исправлено получение файла с трекера во Flatpak" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "" "Исправлен синтаксический анализ «non-year-only first-century» и дат до нашей " "эры" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "Приложение Foliate было переписано с нуля с использованием новой библиотеки " "рендеринга электронных книг и новейших библиотек (GTK 4 и Libadwaita) с " "обновлённым пользовательским интерфейсом и улучшенной производительностью." #~ msgid "Book" #~ msgstr "Книга" #~ msgid "EPUB" #~ msgstr "EPUB" #~ msgid "Ebook" #~ msgstr "E-book" #~ msgid "Reader" #~ msgstr "Читалка" #~ msgid "Viewer" #~ msgstr "Просмотрщик" ================================================ FILE: po/sr.po ================================================ # Serbian translations for com.github.johnfactotum.Foliate package. # Copyright (C) 2024 THE com.github.johnfactotum.Foliate'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # Tomica Korac , 2024. # msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: \n" "Last-Translator: Tomica Korac \n" "Language-Team: Open Serbian Foundation\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<12 || n%100>14) ? 1 : 2);\n" "X-Generator: Poedit 3.0.1\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "Одбирак је обрисан" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "Опозови" #: src/annotations.js:437 msgid "Underline" msgstr "Подвуци" #: src/annotations.js:438 msgid "Squiggly" msgstr "Таласасто" #: src/annotations.js:439 msgid "Strikethrough" msgstr "Прецртано" #: src/annotations.js:440 msgid "Yellow" msgstr "Жуто" #: src/annotations.js:441 msgid "Orange" msgstr "Наранџасто" #: src/annotations.js:442 msgid "Red" msgstr "Црвено" #: src/annotations.js:443 msgid "Magenta" msgstr "Магента" #: src/annotations.js:444 msgid "Aqua" msgstr "Аква" #: src/annotations.js:445 msgid "Lime" msgstr "Лимета" #: src/annotations.js:446 msgid "Custom Color…" msgstr "Подешена боја…" #: src/annotations.js:498 msgid "Custom" msgstr "Подешено" #: src/annotations.js:592 msgid "JSON Files" msgstr "Фајлови „JSON“" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "Сви фајлови" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "Нема белешки" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "Увезени фајл нема белешки" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "Није могуће увести белешке" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "Дошло је до грешке" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "Немате никакве белешке за ову књигу" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "Белешке за „%s“" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d белешка" msgstr[1] "%d белешке" msgstr[2] "%d белешки" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "Затвори" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "Откажи" #: src/app.js:136 msgid "E-Book Files" msgstr "Фајлови е-књига" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "Читај е-књиге у стилу" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "Томица Кораћ, 2024" #: src/app.js:414 msgid "Source Code" msgstr "Изворни код" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Издавач" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "Издато" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "Обновљено" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Језик" #: src/book-info.js:139 msgid "Translated by" msgstr "Превео/ла" #: src/book-info.js:140 msgid "Edited by" msgstr "Изменио/ла" #: src/book-info.js:141 msgid "Narrated by" msgstr "Испричао/ла" #: src/book-info.js:142 msgid "Illustrated by" msgstr "Илустровао/ла" #: src/book-info.js:143 msgid "Produced by" msgstr "Произвео/ла" #: src/book-info.js:144 msgid "Artwork by" msgstr "Украсио/ла" #: src/book-info.js:145 msgid "Color by" msgstr "Обојио/ла" #: src/book-info.js:146 msgid "Contributors" msgstr "Сарадници" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "Идентификатор" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "О овој књизи" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "Место %s од %s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "Страна %s од %s" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "Страна %s" #: src/book-viewer.js:32 msgid "Footnote" msgstr "Фуснота" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "Иди на фусноту" #: src/book-viewer.js:34 msgid "Endnote" msgstr "Енднота" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "Иди на ендноту" #: src/book-viewer.js:36 msgid "Note" msgstr "Примедба" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "Иди на примедбу" #: src/book-viewer.js:38 msgid "Definition" msgstr "Одредница" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "Иди на одредницу" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "Библиографија" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "Иди на библиографију" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "Уклони одбирак" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "Додај одбирак" #: src/book-viewer.js:714 msgid "File not found" msgstr "Фајл није нађен" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "Овај тип фајла није подржан" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "Белешка је обрисана" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" "‘%s’\n" "—%s, «%s», с. %s" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" "‘%s’\n" "—„%s“, с. %s" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "‘%s’ (с. %s)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" "‘%s’\n" "—%s, „%s“" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" "‘%s’\n" "—„%s“" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "‘%s’" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "Слика од “%s”" #: src/book-viewer.js:904 msgid "Image" msgstr "Слика" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "од %d" #: src/library.js:47 msgid "Loading" msgstr "Учитавање" #: src/library.js:48 msgid "Failed to Load" msgstr "Учитавање није успело" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "Освежи" #: src/library.js:51 msgid "See All" msgstr "Види све" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "Тражи" #: src/library.js:53 msgid "Filter" msgstr "Филтар" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "Преузми" #: src/library.js:56 msgid "Buy" msgstr "Купи" #: src/library.js:58 msgid "Preview" msgstr "Осмотри" #: src/library.js:59 msgid "Sample" msgstr "Узорак" #: src/library.js:60 msgid "Borrow" msgstr "Позајми" #: src/library.js:61 msgid "Subscribe" msgstr "Претплати се" #: src/library.js:63 msgid "Free" msgstr "Бесплатно" #: src/library.js:65 msgid "First" msgstr "Прво" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "Претходно" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "Следеће" #: src/library.js:68 msgid "Last" msgstr "Последње" #: src/library.js:70 msgid "Search Terms" msgstr "Тражи услове" #: src/library.js:72 msgid "Title" msgstr "Наслов" #: src/library.js:73 msgid "Author" msgstr "Творац" #: src/library.js:74 msgid "Contributor" msgstr "Сарадник" #: src/library.js:438 msgid "Remove Book?" msgstr "Уклонити књигу?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "Напредак читања, белешке и одабир ће бити трајно изгубљени" #: src/library.js:441 msgid "_Cancel" msgstr "_Откажи" #: src/library.js:442 msgid "_Remove" msgstr "_Уклони" #: src/library.js:472 #, fuzzy msgid "Failed to Open" msgstr "Учитавање није успело" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "" #: src/library.js:644 msgid "Download Failed" msgstr "Преузимање није успело" #: src/library.js:698 msgid "Rename…" msgstr "Преименуј…" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "Уклони" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "Уклони" #: src/library.js:725 msgid "Name" msgstr "Назив" #: src/library.js:740 msgid "All Books" msgstr "Све књиге" #: src/library.js:746 msgid "Add Catalog…" msgstr "Додај катало…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "Књижара" #: src/library.js:821 msgid "Catalogs" msgstr "Каталози" #: src/library.js:864 msgid "Catalog removed" msgstr "Каталог је уклоњен" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "Додај каталог" #: src/library.js:952 msgid "Add" msgstr "Додај" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "Можете да прегледате и преузимате књиге из „ОПДС“ каталога.Сазнајте више…" #: src/library.js:961 msgid "URL" msgstr "УРЛ" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "Речник" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "Са Викиречника, објабљено под лиценцом „CC BY-SA“." #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "Није нађена одредница" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "Тражи на Викиречнику" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Википедија" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "Са Википедије, објављено под лиценцом „CC BY-SA“." #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "Тражи на Википедији" #: src/selection-tools.js:59 msgid "Translate" msgstr "Преведи" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "Превод са Гугл Преводиоца" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "Није могуће прибавити превод" #: src/selection-tools.js:67 #, fuzzy msgid "Search…" msgstr "Тражи" #: src/themes.js:8 msgid "Default" msgstr "Задато" #: src/themes.js:13 msgid "Gray" msgstr "Сиво" #: src/themes.js:18 msgid "Sepia" msgstr "Сепија" #: src/themes.js:23 msgid "Grass" msgstr "Трава" #: src/themes.js:28 msgid "Cherry" msgstr "Вишња" #: src/themes.js:33 msgid "Sky" msgstr "Небо" #: src/themes.js:38 msgid "Solarized" msgstr "Осунчано" #: src/themes.js:43 msgid "Gruvbox" msgstr "Грувбокс" #: src/themes.js:48 msgid "Nord" msgstr "Север" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "Грешка при говору из текста" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "Проверите да ли је диспечер говора инсталиран и исправан у систему" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "Копирано у оставу" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "Стил означавања" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "Обриши" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "Мени" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "Додај примедбу…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "Отвори у новом прозору" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "Извези белешке…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "Нови прозор" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "Отвори копију" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "Увези белешке…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "О Фолијејту" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "Сви одељци" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "Тренутни одељак" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "Спој само целе речи" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "Спој величину" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "Спој дијакритике" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "Поставке фонта и распореда" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "Мод свитка" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "Обрни боје у тамном моду" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "Сакриј показивач" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "Штампај…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "Иследник" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "Књига не може да се отвори" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "Подробности" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "Отвори други…" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "Прикачи бочну траку" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "Мени књиге" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "Нађи" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "Нађи у књизи…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "Садржај" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Белешке" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "Изаберите неки текст да додате белешку" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "Филтрирај белешке…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Одабир" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "Нема одбирака" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "Додајте одбирке да бисте их видели овде" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "Нема резултата" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "Пробај другу претрагу" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "Бочна трака" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "Мени приказа" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "Умањи" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "Ресетуј увећање" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "Увећај" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "Прати системски стил" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "Светли стил" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "Тамни стил" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Цео екран" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "Извоз белешки" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "Извоз" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "Формат" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "Изаберите „ЏејСОН“ ако желите да увезете белешке назад у Фолијејт" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "ЏејСОН" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "ХТМЛ" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "Маркдаун" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "Орг мод" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Копирај" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "Сачувај као…" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "Заврти 90° супротно од казааљке" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "Заврти 90° у смеру казаљке" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "Увези белешке" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "Увоз" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "Идентификатор се не поклапа. Ове белешке можда нису за ову књигу." #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "Ипак увези" #: src/ui/library.ui:6 msgid "List View" msgstr "Приказ списком" #: src/ui/library.ui:11 msgid "Grid View" msgstr "Приказ мрежом" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Отвори…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "Главни мени" #: src/ui/library.ui:110 msgid "Open" msgstr "Отвори" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "Мени књижаре" #: src/ui/library.ui:134 msgid "Search library…" msgstr "Тражи у књижари…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "Назад" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "Напред" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "Још нема књига" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "Отворите књигу да почнете читање" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "Место" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "Приповедање" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "Преостало време у одељку" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "Преостало време у књизи" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "Страна" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "Налепи и иди" #: src/ui/navbar.ui:322 msgid "Section" msgstr "Одељак" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "Први одељак" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "Претходни одељак" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "Скочи на…" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "Следећи одељак" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "Последњи одељак" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Истакни" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "Причај одавде" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "Копирај са цитатом" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "Копирај идентификатор" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "Штампај избор…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "Брзина" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "Висина" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "Пусти/Заустави" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "Стани" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "Фонт" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "Величина фонта" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "Задата величина фонта" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "Најмања величина фонта" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "Породица фонтова" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "Задати фонт" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "Серифни" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "Безсерифни" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "Занемари фонт издавача" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "Серифни фонт" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "Безсерифни фонт" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "Једноредни фонт" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "Распоред" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "Пасус" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "Висина реда" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "Обострано поравнање" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "Прекид речи" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Маргине" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "Највећи број стубаца" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "Највећа величина у реду" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "" "Највећа ширина ступца (у водоравном писању) или висина (у усправном писању)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "Највећа величина блока" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "Највећа висина (у водоравном писању) или ширина (у усправном писању)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "Боја" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "Понашање" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "Смањи анимацију" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "Приказивач е-књига" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "Е-књига;Књига;ЕПУБ;Приказивач;Читач;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "Откријте ново поглавље у читању уз Фолијејт, савремени читач е-књига " "прилагођен за ГНОМ. Утоните у прочеље без икаквих ометања, уз могућности " "прилагођавања свим Вашим потребама." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "Неке могућности:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "Отвара ЕПУБ, Мобипокет, Киндл, ФБ2, ЦБЗ, и ПДФ фајлове" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "Читање по страницама или у свитку" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "Прилагодљив фонт и размаци" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "Светли, тамни, „сепија“ и обратни мод" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "Показивач напретка читања са ознакама поглавља" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "Одабир и белешке" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "Тражење у књизи" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "Претрага речника" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 #, fuzzy msgid "Added option to override publisher font" msgstr "Занемари фонт издавача" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "Фолијејт је прерађен од главе до пете и сада има нову библиотеку рендеровања " "и најновије библиотеке платформе, ГТК4 и Либадваита, са дорађеним прочељем и " "побољшаним радом." #~ msgid "Book" #~ msgstr "Књига" #~ msgid "EPUB" #~ msgstr "ЕПУБ" #~ msgid "Ebook" #~ msgstr "Е-књига" #~ msgid "Reader" #~ msgstr "Читач" #~ msgid "Viewer" #~ msgstr "Приказивач" ================================================ FILE: po/sv.po ================================================ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2025-03-15 07:31+0200\n" "Last-Translator: Jonatan Nyberg\n" "Language-Team: \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: Poedit 3.2.2\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "Bokmärke har tagits bort" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "Ångra" #: src/annotations.js:437 msgid "Underline" msgstr "Understrykning" #: src/annotations.js:438 msgid "Squiggly" msgstr "Snirklig" #: src/annotations.js:439 msgid "Strikethrough" msgstr "Genomstruken" #: src/annotations.js:440 msgid "Yellow" msgstr "Gul" #: src/annotations.js:441 msgid "Orange" msgstr "Orange" #: src/annotations.js:442 msgid "Red" msgstr "Röd" #: src/annotations.js:443 msgid "Magenta" msgstr "Magenta" #: src/annotations.js:444 msgid "Aqua" msgstr "Aqua" #: src/annotations.js:445 msgid "Lime" msgstr "Lime" #: src/annotations.js:446 msgid "Custom Color…" msgstr "Anpassad färg…" #: src/annotations.js:498 msgid "Custom" msgstr "Anpassad" #: src/annotations.js:592 msgid "JSON Files" msgstr "JSON-filer" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "Alla filer" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "Inga anteckningar" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "Den importerade filen har inga kommentarer" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "Kan inte importera kommentarer" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "Ett fel uppstod" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "Du har inga kommentarer till för den här boken" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "Anteckningar för “%s”" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d anteckningar" msgstr[1] "%d anteckningar" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "Stäng" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "Avbryt" #: src/app.js:136 msgid "E-Book Files" msgstr "E-bok filer" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "Läs e-böcker med stil" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "" "Jonatan Nyberg\n" "Luna Jernberg" #: src/app.js:414 msgid "Source Code" msgstr "Källkod" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Förlag" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "Publicerad" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "Uppdatera" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Språk" #: src/book-info.js:139 msgid "Translated by" msgstr "Översatt av" #: src/book-info.js:140 msgid "Edited by" msgstr "Redigerad av" #: src/book-info.js:141 msgid "Narrated by" msgstr "Berättad av" #: src/book-info.js:142 msgid "Illustrated by" msgstr "Illustrerad av" #: src/book-info.js:143 msgid "Produced by" msgstr "Producerad av" #: src/book-info.js:144 msgid "Artwork by" msgstr "Konstverk av" #: src/book-info.js:145 msgid "Color by" msgstr "Färg av" #: src/book-info.js:146 msgid "Contributors" msgstr "Bidragsgivare" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "Identifierare" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "Om denna bok" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "Lok. %s av %s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "Sida %s av %s" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "Sida %s" #: src/book-viewer.js:32 msgid "Footnote" msgstr "Fotnot" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "Gå till fotnot" #: src/book-viewer.js:34 msgid "Endnote" msgstr "Slutanteckning" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "Gå till ślutanteckning" #: src/book-viewer.js:36 msgid "Note" msgstr "Anteckning" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "Gå till anteckning" #: src/book-viewer.js:38 msgid "Definition" msgstr "Definition" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "Gå till definition" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "Bibliografi" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "Gå till Bibliografi" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "Ta bort bokmärke" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "Lägg till bokmärke" #: src/book-viewer.js:714 msgid "File not found" msgstr "Filen hittades inte" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "Filtyp stöds inte" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "Anteckning borttagen" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" "‘%s’\n" "—%s, “%s”, s. %s" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" "‘%s’\n" "—“%s”, p. %s" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "‘%s’ (s. %s)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" "‘%s’\n" "—%s, “%s”" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" "‘%s’\n" "—“%s”" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "‘%s’" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "Bild från \"%s\"" #: src/book-viewer.js:904 msgid "Image" msgstr "Bild" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "av %d" #: src/library.js:47 msgid "Loading" msgstr "Läser in" #: src/library.js:48 msgid "Failed to Load" msgstr "Det gick inte att läsa in" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "Uppdatera" #: src/library.js:51 msgid "See All" msgstr "Se alla" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "Sök" #: src/library.js:53 msgid "Filter" msgstr "Filtrera" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "Hämta" #: src/library.js:56 msgid "Buy" msgstr "Köp" #: src/library.js:58 msgid "Preview" msgstr "Förhandsvisning" #: src/library.js:59 msgid "Sample" msgstr "Prov" #: src/library.js:60 msgid "Borrow" msgstr "Låna" #: src/library.js:61 msgid "Subscribe" msgstr "Prenumerera" #: src/library.js:63 msgid "Free" msgstr "Gratis" #: src/library.js:65 msgid "First" msgstr "Första" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "Föregående" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "Nästa" #: src/library.js:68 msgid "Last" msgstr "Sista" #: src/library.js:70 msgid "Search Terms" msgstr "Söktermer" #: src/library.js:72 msgid "Title" msgstr "Titel" #: src/library.js:73 msgid "Author" msgstr "Författare" #: src/library.js:74 msgid "Contributor" msgstr "Bidragsgivare" #: src/library.js:438 msgid "Remove Book?" msgstr "Ta bort bok?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "" "Läsförlopp, anteckningar och bokmärken kommer att gå förlorade permanent" #: src/library.js:441 msgid "_Cancel" msgstr "_Avbryt" #: src/library.js:442 msgid "_Remove" msgstr "_Ta bort" #: src/library.js:472 msgid "Failed to Open" msgstr "Det gick inte att öppna" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "Det gick inte att öppna filen med det valda programmet" #: src/library.js:644 msgid "Download Failed" msgstr "Hämtningen misslyckades" #: src/library.js:698 msgid "Rename…" msgstr "Byt namn…" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "Ta bort" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "Byt namn" #: src/library.js:725 msgid "Name" msgstr "Namn" #: src/library.js:740 msgid "All Books" msgstr "Alla böcker" #: src/library.js:746 msgid "Add Catalog…" msgstr "Lägg till katalog…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "Bibliotek" #: src/library.js:821 msgid "Catalogs" msgstr "Kataloger" #: src/library.js:864 msgid "Catalog removed" msgstr "Katalog borttagen" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "Lägg till katalog" #: src/library.js:952 msgid "Add" msgstr "Lägg till" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "Du kan bläddra och hämta böcker från OPDS-kataloger. Läs mer…" #: src/library.js:961 msgid "URL" msgstr "URL" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "Ordbok" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "Från Wiktionary, släppt under CC BY-SA-licensen ." #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "Inga definitioner hittades" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "Sök på Wiktionary" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Wikipedia" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "Från Wikipedia, släppt under CC BY-SA-licensen< /a>." #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "Sök på Wikipedia" #: src/selection-tools.js:59 msgid "Translate" msgstr "Översätt" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "Översättning av Google Translate" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "Det går inte att hämta översättning" #: src/selection-tools.js:67 msgid "Search…" msgstr "Sök…" #: src/themes.js:8 msgid "Default" msgstr "Standard" #: src/themes.js:13 msgid "Gray" msgstr "Grå" #: src/themes.js:18 msgid "Sepia" msgstr "Sepia" #: src/themes.js:23 msgid "Grass" msgstr "Gräs" #: src/themes.js:28 msgid "Cherry" msgstr "Körsbär" #: src/themes.js:33 msgid "Sky" msgstr "Himmel" #: src/themes.js:38 msgid "Solarized" msgstr "Solariserad" #: src/themes.js:43 msgid "Gruvbox" msgstr "Gruvlåda" #: src/themes.js:48 msgid "Nord" msgstr "Nord" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "Text-till-tal-fel" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "" "Se till att Speech Dispatcher är installerad och fungerar på ditt system" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "Kopierade till urklipp" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "Markera stil" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "Ta bort" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "Meny" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "Lägg till anteckning…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "Öppna i nytt fönster" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "Öppna med extern app" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "Exportera anteckningar…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "Nytt fönster" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "Öppna en kopia" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "Importera anteckningar…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "Om Foliate" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "Alla sektioner" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "Nuvarande sektion" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "Matcha endast hela ord" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "Matcha skiftläge" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "Matcha Diakritiska tecken" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "Teckensnitt- & layoutinställningar" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "Rullat läge" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "Invertera färger i mörkt läge" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "Dölj markören automatiskt" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "Skriva ut…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "Inspektör" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "Boken kan inte öppnas" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "Detalj" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "Öppna en annan fil…" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "Fäst sidofält" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "Bok meny" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "Hitta" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "Hitta i bok…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "Innehåll" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Anteckningar" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "Markera en del text för att lägga till kommentarer" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "Filtrera kommentarer…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Bokmärken" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "Inga bokmärken" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "Lägg till några bokmärken för att se dem här" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "Inga resultat funna" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "Försök med en annan sökning" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "Sidofält" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "Visa meny" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "Zooma ut" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "Återställ zoom" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "Zooma in" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "Följ System stil" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "Ljus stil" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "Mörk stil" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Helskärmsläge" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "Exportera anteckningar" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "Exportera" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "Format" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "" "Välj \"JSON\" om du planerar att importera kommentarer tillbaka till Foliate" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "Markdown" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "Organisationsläge" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Kopiera" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "Spara som…" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "Rotera 90° moturs" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "Rotera 90° medurs" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "Importera anteckningar" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "Importera" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "" "Identifieraren matchar inte. Dessa kommentarer kanske inte är för den här " "boken." #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "Importera ändå" #: src/ui/library.ui:6 msgid "List View" msgstr "Listvy" #: src/ui/library.ui:11 msgid "Grid View" msgstr "Rutnätsvy" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Öppna…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "Huvudmeny" #: src/ui/library.ui:110 msgid "Open" msgstr "Öppna" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "Biblioteksmeny" #: src/ui/library.ui:134 msgid "Search library…" msgstr "Sök i biblioteket…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "Tillbaka" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "Framåt" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "Inga böcker än" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "Öppna en bok för att börja läsa" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "Plats" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "Berättande" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "Tid kvar i sektion" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "Tid kvar i bok" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "Sida" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "Klistra in och gå" #: src/ui/navbar.ui:322 msgid "Section" msgstr "Sektion" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "Första sektion" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "Föregående sektion" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "Hoppa till…" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "Nästa sektion" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "Sista sektion" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Markera" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "Tala härifrån" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "Kopiera med citat" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "Kopiera identifierare" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "Skriv ut urval…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "Hastighet" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "Tonhöjd" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "Spela/Pausa" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "Stopp" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "Typsnitt" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "Typsnitt storlek" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "Standard typsnitt storlek" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "Minsta typsnitt storlek" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "Typsnitt familj" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "Standard typsnitt" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "Serif" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "Sans-serif" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "Åsidosätt utgivarens teckensnitt" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "Serif typsnitt" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "Sans-Serif typsnitt" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "Monospace typsnitt" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "Layout" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "Paragraf" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "Linjehöjd" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "Fullständig justering" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "Avstavning" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Marginaler" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "Maximalt antal kolumner" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "Maximal inlinestorlek" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "Maximal kolumnbredd (horisontell skrift) eller höjd (vertikal skrift)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "Maximal blockstorlek" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "Maximal höjd (horisontell skrift) eller bredd (vertikal skrift)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "Färg" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "Beteende" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "Minska animering" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "E-bokvisare" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "E-bok;Bok;EPUB;Visare;Läsare;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "Upptäck ett nytt kapitel i läsning med Foliate, den moderna e-boksläsaren " "skräddarsydd för GNOME. Fördjupa dig i ett distraktionsfritt gränssnitt, med " "anpassningsfunktioner utformade för att matcha dina unika preferenser." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "Funktioner inkluderar:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "Öppna EPUB-, Mobipocket-, Kindle-, FB2-, CBZ- och PDF-filer" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "Paginerat läge och rullat läge" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "Anpassa teckensnitt och radavstånd" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "Ljus, sepia, mörkt och inverterat läge" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "Reglage för läsförlopp med kapitelmarkeringar" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "Bokmärken och anteckningar" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "Hitta i bok" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "Snabbt uppslag i ordbok" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "" "Åtgärdat att avslut på kapitel skärs av när kapitel börjar med sidbrytningar" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "Åtgärdat felaktig textbrytning i tabeller" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "Åtgärdat ett prestandaproblem med OPDS-kataloger" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "Tillagt stöd för OPDS-kataloger, nu med stöd för OPDS 2.0" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 msgid "Added option to override publisher font" msgstr "Tillagt alternativ för att åsidosätta utgivarens teckensnitt" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "Tillagt alternativ för att minska animering" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "Tillagt stöd för JPEG XL i CBZ" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "Åtgärdat hämtning av fil från Tracker i Flatpak" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "Åtgärdat analys av datum från första århundradet och f.Kr" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "Foliate har skrivits om från grunden med ett nytt e-boksrenderingsbibliotek " "och de senaste plattformsbiblioteken, GTK 4 och Libadwaita, med uppdaterat " "användargränssnitt och förbättrad prestanda." #~ msgid "Book" #~ msgstr "Bok" #~ msgid "EPUB" #~ msgstr "EPUB" #~ msgid "Ebook" #~ msgstr "E-bok" #~ msgid "Reader" #~ msgstr "Läsenhet" #~ msgid "Viewer" #~ msgstr "Visare" #~ msgid "John Factotum" #~ msgstr "John Factotum" #, fuzzy #~ msgid "Reference" #~ msgstr "Inställningar" #, fuzzy #~ msgid "Go to Reference" #~ msgstr "Inställningar" #~ msgid "Keyboard Shortcuts" #~ msgstr "Tangentbordsgenvägar" #~ msgid "Preferences" #~ msgstr "Inställningar" #~ msgid "Speak" #~ msgstr "Tala" #~ msgid "Fold Sidebar" #~ msgstr "Vik in sidofält" #~ msgid "OK" #~ msgstr "OK" #~ msgid "Voice" #~ msgstr "Röst" #~ msgid "Start Speaking" #~ msgstr "Börja prata" #~ msgid "Stop Speaking" #~ msgstr "Sluta prata" #~ msgid "Save File" #~ msgstr "Spara fil" #, fuzzy #~ msgid "Choose highlight style" #~ msgstr "Ändra markeringsfärg" #~ msgid "More" #~ msgstr "Mer" #, fuzzy #~ msgid "About this book" #~ msgstr "Om denna bok" #, fuzzy #~ msgid "Toggle sidebar" #~ msgstr "Använd sidofält" #~ msgid "Restore zoom" #~ msgstr "Återställ zoom" #~ msgid "Go to previous page" #~ msgstr "Gå till föregående sida" #~ msgid "Go back to previous location" #~ msgstr "Gå tillbaka till föregående plats" #, fuzzy #~ msgid "Go to next section" #~ msgstr "Gå till nästa sida" #, fuzzy #~ msgid "Go to last section" #~ msgstr "Gå till platsen" ================================================ FILE: po/tr.po ================================================ # Turkish translation of Foliate. # Copyright (C) 2020-2022 Foliate's COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # # Sabri Ünal , 2022. # Emin Tufan Çetin , 2020, 2025. # msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2025-03-12 08:00+0300\n" "Last-Translator: Sabri Ünal \n" "Language-Team: Türkçe \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=1; plural=0;\n" "X-Generator: Poedit 3.4.2\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "Yer imi silindi" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "Geri Al" #: src/annotations.js:437 msgid "Underline" msgstr "Altı Çizili" #: src/annotations.js:438 msgid "Squiggly" msgstr "Dalgalı" #: src/annotations.js:439 msgid "Strikethrough" msgstr "Üstü Çizili" #: src/annotations.js:440 msgid "Yellow" msgstr "Sarı" #: src/annotations.js:441 msgid "Orange" msgstr "Turuncu" #: src/annotations.js:442 msgid "Red" msgstr "Kırmızı" #: src/annotations.js:443 msgid "Magenta" msgstr "Macenta" #: src/annotations.js:444 msgid "Aqua" msgstr "Deniz Mavisi" #: src/annotations.js:445 msgid "Lime" msgstr "Limon" #: src/annotations.js:446 msgid "Custom Color…" msgstr "Özel Renk…" #: src/annotations.js:498 msgid "Custom" msgstr "Özel" #: src/annotations.js:592 msgid "JSON Files" msgstr "JSON Dosyaları" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "Tüm Dosyalar" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "Not Yok" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "İçe aktarılan dosyada not yok" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "Notlar İçe Aktarılamadı" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "Hata oluştu" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "Bu kitap için notunuz yok" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "“%s” notları" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d Not" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "Kapat" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "İptal" #: src/app.js:136 msgid "E-Book Files" msgstr "E-Kitap Dosyaları" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "E-kitapları şık biçimde okuyun" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "" "Emin Tufan Çetin \n" "Sabri Ünal " #: src/app.js:414 msgid "Source Code" msgstr "Kaynak Kodu" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Yayımcı" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "Yayın" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "Güncellenme" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Dil" #: src/book-info.js:139 msgid "Translated by" msgstr "Çeviren" #: src/book-info.js:140 msgid "Edited by" msgstr "Düzenleyen" #: src/book-info.js:141 msgid "Narrated by" msgstr "Anlatan" #: src/book-info.js:142 msgid "Illustrated by" msgstr "Resimleyen" #: src/book-info.js:143 msgid "Produced by" msgstr "Üreten" #: src/book-info.js:144 msgid "Artwork by" msgstr "Grafikler" #: src/book-info.js:145 msgid "Color by" msgstr "Renk" #: src/book-info.js:146 msgid "Contributors" msgstr "Katkıda Bulunanlar" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "Tanımlayıcı" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "Bu Kitap Hakkında" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "Konum %s / %s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "Sayfa %s / %s" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "Sayfa %s" #: src/book-viewer.js:32 msgid "Footnote" msgstr "Dipnot" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "Dipnota Git" #: src/book-viewer.js:34 msgid "Endnote" msgstr "Sonnot" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "Sonnota Git" #: src/book-viewer.js:36 msgid "Note" msgstr "Not" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "Nota Git" #: src/book-viewer.js:38 msgid "Definition" msgstr "Tanım" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "Tanıma Git" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "Kaynakça" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "Kaynakçaya Git" # Konumu gereği başlık düzeni tercih edildi. #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "Yer İmini Kaldır" # Konumu gereği başlık düzeni tercih edildi. #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "Yer İmi Ekle" #: src/book-viewer.js:714 msgid "File not found" msgstr "Dosya bulunamadı" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "Dosya türü desteklenmiyor" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "Not silindi" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" "‘%s’\n" "—%s, “%s”, s. %s" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" "‘%s’\n" "—“%s”, s. %s" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "‘%s’ (s. %s)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" "‘%s’\n" "—%s, “%s”" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" "‘%s’\n" "—“%s”" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "‘%s’" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "“%s” kaynağından resim" #: src/book-viewer.js:904 msgid "Image" msgstr "Resim" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "/ %d" #: src/library.js:47 msgid "Loading" msgstr "Yükleniyor" #: src/library.js:48 msgid "Failed to Load" msgstr "Yüklenemedi" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "Yeniden Yükle" #: src/library.js:51 msgid "See All" msgstr "Tümünü Gör" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "Ara" #: src/library.js:53 msgid "Filter" msgstr "Süz" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "İndir" #: src/library.js:56 msgid "Buy" msgstr "Satın Al" #: src/library.js:58 msgid "Preview" msgstr "Ön İzle" #: src/library.js:59 msgid "Sample" msgstr "Örnek" #: src/library.js:60 msgid "Borrow" msgstr "Ödünç Al" #: src/library.js:61 msgid "Subscribe" msgstr "Abone Al" #: src/library.js:63 msgid "Free" msgstr "Ücretsiz" #: src/library.js:65 msgid "First" msgstr "İlk" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "Önceki" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "Sonraki" #: src/library.js:68 msgid "Last" msgstr "En Son" #: src/library.js:70 msgid "Search Terms" msgstr "Arama Terimleri" #: src/library.js:72 msgid "Title" msgstr "Başlık" #: src/library.js:73 msgid "Author" msgstr "Yazar" #: src/library.js:74 msgid "Contributor" msgstr "Katkıda Bulunanlar" #: src/library.js:438 msgid "Remove Book?" msgstr "Kitap Kaldırılsın Mı?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "Okuma ilerlemesi, notlar ve yer imleri kalıcı olarak kaybedilecek" #: src/library.js:441 msgid "_Cancel" msgstr "İ_ptal" #: src/library.js:442 msgid "_Remove" msgstr "_Kaldır" #: src/library.js:472 msgid "Failed to Open" msgstr "Açılamadı" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "Seçili uygulamayla dosya açılamadı" #: src/library.js:644 msgid "Download Failed" msgstr "İndirilemedi" #: src/library.js:698 msgid "Rename…" msgstr "Yeniden Adlandır…" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "Kaldır" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "Yeniden Adlandır" #: src/library.js:725 msgid "Name" msgstr "Ad" #: src/library.js:740 msgid "All Books" msgstr "Tüm Kitaplar" #: src/library.js:746 msgid "Add Catalog…" msgstr "Katalog Ekle…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "Kitaplık" #: src/library.js:821 msgid "Catalogs" msgstr "Kataloglar" #: src/library.js:864 msgid "Catalog removed" msgstr "Katalog kaldırıldı" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "Katalog Ekle" #: src/library.js:952 msgid "Add" msgstr "Ekle" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "OPDS kataloglarından kitaplara göz atabilir ve indirebilirsiniz. Daha Fazla Bilgi…" #: src/library.js:961 msgid "URL" msgstr "URL" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "Sözlük" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "Vikisözlük’ten, CC BY-SA Lisansı ile yayınlanmıştır." #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "Tanım Bulunamadı" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "Vikisözlük’te Ara" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Vikipedi" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "Wikipedia tarafından CC BY-SA Lisansı altında " "yayınlanmıştır." #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "Wikipedia’da ara" #: src/selection-tools.js:59 msgid "Translate" msgstr "Çevir" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "Google Çeviri ile çevir" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "Çeviri alınamadı" #: src/selection-tools.js:67 msgid "Search…" msgstr "Ara…" #: src/themes.js:8 msgid "Default" msgstr "Öntanımlı" #: src/themes.js:13 msgid "Gray" msgstr "Gri" #: src/themes.js:18 msgid "Sepia" msgstr "Sepya" #: src/themes.js:23 msgid "Grass" msgstr "Çimen" #: src/themes.js:28 msgid "Cherry" msgstr "Kiraz" #: src/themes.js:33 msgid "Sky" msgstr "Gökyüzü" #: src/themes.js:38 msgid "Solarized" msgstr "Solarize" #: src/themes.js:43 msgid "Gruvbox" msgstr "Gruvbox" #: src/themes.js:48 msgid "Nord" msgstr "Nord" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "Metinden Sese Hatası" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "" "Speech Dispatcher’ın sisteminizde kurulu ve çalışır olduğundan emin olun" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "Panoya kopyalandı" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "Vurgulama Biçemi" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "Sil" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "Menü" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "Not Ekle…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "Yeni Pencerede Aç" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "Dış Uygulamayla Aç" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "Notları Dışa Aktar…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "Yeni Pencere" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "Kopya Aç" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "Notları İçe Aktar…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "Foliate Hakkında" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "Tüm Bölümler" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "Geçerli Bölüm" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "Sadece Tam Kelimeleri Eşleştir" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "Büyük Küçük Harf Eşleştir" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "Aksanları Eşleştir" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "Yazı Tipi ve Düzen Ayarları" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "Kaydırmalı Kip" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "Koyu Kipte Renkleri Ters Çevir" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "İmleci Kendiliğinden Gizle" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "Yazdır…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "İnceleyici" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "Kitap Açılamadı" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "Ayrıntılar" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "Başka Dosya Aç" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "Kenar Çubuğunu Sabitle" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "Kitap Menüsü" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "Bul" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "Kitapta bul…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "İçindekiler" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Notlar" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "Not eklemek için metin seçin" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "Notları süz…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Yer İmleri" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "Yer İmi Yok" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "Burada görünmeleri için yer imleri ekleyin" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "Sonuç Bulunamadı" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "Başka arama dene" # Konumu gereği başlık düzeni tercih edildi. #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "Kenar çubuğu" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "Menüyü Göster" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "Uzaklaştır" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "Yakınlaştırmayı Sıfırla" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "Yakınlaştır" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "Sistem Biçemini İzle" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "Açık Biçem" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "Koyu Biçem" # Konumu gereği başlık düzeni tercih edildi. #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Tam Ekran" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "Notları Dışa Aktar" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "Dışa Aktar" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "Biçim" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "Notları Foliate’e içe aktarmayı planlıyorsanız “JSON” biçimini seçin" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "Markdown" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "Organizasyon Kipi" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Kopyala" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "Farklı Kaydet…" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "90° Sola Döndür" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "90° Sağa Döndür" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "Notları İçe Aktar" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "İçe Aktar" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "Tanımlayıcı eşleşmiyor. Bu notlar bu kitap için olmayabilir." #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "Yine De İçe Aktar" #: src/ui/library.ui:6 msgid "List View" msgstr "Liste Görünümü" #: src/ui/library.ui:11 msgid "Grid View" msgstr "Izgara Görünümü" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Aç…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "Ana Menü" #: src/ui/library.ui:110 msgid "Open" msgstr "Aç" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "Kitaplık Menüsü" #: src/ui/library.ui:134 msgid "Search library…" msgstr "Kitaplıkta ara…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "Geri" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "İleri" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "Henüz Kitap Yok" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "Okumaya başlamak için kitap açın" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "Konum" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "Öyküleme" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "Bölümde Kalan Zaman" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "Kitapta Kalan Zaman" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "Sayfa" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "Yapıştır ve Git" #: src/ui/navbar.ui:322 msgid "Section" msgstr "Bölüm" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "İlk Bölüm" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "Önceki Bölüm" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "Git…" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "Sonraki Bölüm" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "Son Bölüm" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Vurgula" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "Buradan Konuş" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "Atıfla Kopyala" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "Tanımlayıcıyı Kopyala" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "Seçimi Yazdır…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "Hız" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "Ses Tonu" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "Oynat/Beklet" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "Durdur" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "Yazı Tipi" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "Yazı Tipi Boyutu" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "Öntanımlı Yazı Tipi Boyutu" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "Asgari Yazı Tipi Boyutu" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "Yazı Tipi Ailesi" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "Öntanımlı Yazı Tipi" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "Serif" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "Sans-serif" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "Yayıncı Yazı Tipini Geçersiz Kıl" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "Serif Yazı Tipi" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "Sans-Serif Yazı Tipi" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "Eşaralıklı Yazı Tipi" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "Düzen" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "Paragraf" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "Satır Yüksekliği" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "İki Yana Yasla" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "Tireleme" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Kenar Boşlukları" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "Azami Sütun Sayısı" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "Azami Satır Boyutu" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "Azami sütun genişliği (yatay yazı) ya da yükseklik (dikey yazı)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "Azami Blok Boyutu" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "Azami yükseklik (yatay yazı) ya da genişlik (dikey yazı)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "Renk" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "Davranış" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "Canlandırmayı Azalt" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "E-Kitap Görüntüleyici" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "Ekitap;Kitap;EPUB;Görüntüleyici;Okuyucu;E-kitap;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "GNOME için özel hazırlanmış modern e-kitap okuyucu Foliate ile okumada yeni " "bir sayfa açın. Özel tercihlerinize uyacak şekilde tasarlanmış özelleştirme " "özellikleriyle, dikkat dağıtmayan bir arayüze kendinizi kaptırın." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "Özellikleri şunlardır:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "EPUB, Mobipocket, Kindle, FB2, CBZ ve PDF dosyalarını açın" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "Sayfalandırılmış kip ve kaydırmalı kip" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "Yazı tipini ve satır aralığını özelleştirme" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "Açık, sepya, koyu ve ters çevirme kipleri" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "Bölüm imli okuma ilerleme kaydırıcısı" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "Yer imleri ve notlar" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "Kitapta bul" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "Hızlı sözlük araması" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "Bölüm sayfa sonuyla başladığında bölümün sonu kesimi sorunu giderildi" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "Tablolardaki geçersiz metin kaydırma sorunu giderildi" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "OPDS kataloglarındaki bir başarım sorunu giderildi" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "OPDS kataloglarına destek eklendi, şimdi OPDS 2.0 desteği ile" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 msgid "Added option to override publisher font" msgstr "Yayıncı yazı tipini geçersiz kılacak seçenek eklendi" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "Canlandırmaları azaltacak seçenek eklendi" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "CBZ içine JPEG XL desteği eklendi" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "Flatpak’te Tracker’dan dosya alma sorunu giderildi" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "İlk yüzyıl ve MÖ tarihlerin ayrıştırmasındaki sorun giderildi" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "Foliate, yeni bir e-kitap oluşturma kütüphanesi ve en son platform " "kütüphaneleri olan GTK 4 ve Libadwaita ile yenilenmiş kullanıcı arayüzü ve " "geliştirilmiş performans ile sıfırdan yeniden yazılmıştır." ================================================ FILE: po/uk.po ================================================ # Ukrainian translation for Foliate. # Copyright (C) 2020-2025 THE Foliate'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Danylo Korostil , 2020. # Anton Isachenko , 2020. # volkov , 2023. # freeducks-debug, 2025. # msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2025-07-05 11:23+0300\n" "Last-Translator: freeducks-debug <209897795+freeducks-" "debug@users.noreply.github.com>\n" "Language-Team: \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<12 || n%100>14) ? 1 : 2);\n" "X-Generator: Poedit 3.6\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "Закладка видалена" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "Скасувати" #: src/annotations.js:437 msgid "Underline" msgstr "Пікреслений" #: src/annotations.js:438 msgid "Squiggly" msgstr "Хвилястий" #: src/annotations.js:439 msgid "Strikethrough" msgstr "Закреслений" #: src/annotations.js:440 msgid "Yellow" msgstr "Жовтий" #: src/annotations.js:441 msgid "Orange" msgstr "Помаранчевий" #: src/annotations.js:442 msgid "Red" msgstr "Червоний" #: src/annotations.js:443 msgid "Magenta" msgstr "Пупурний" #: src/annotations.js:444 msgid "Aqua" msgstr "Аква" #: src/annotations.js:445 msgid "Lime" msgstr "Лаймовий" #: src/annotations.js:446 msgid "Custom Color…" msgstr "Власний колір…" #: src/annotations.js:498 msgid "Custom" msgstr "Власний" #: src/annotations.js:592 msgid "JSON Files" msgstr "JSON файли" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "Усі файли" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "Немає нотаток" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "Імпортований файл не містить нотаток" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "Не вдалося імпортувати нотатки" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "Сталася помилка" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "У вас немає жодних нотаток для цієї книги" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "Нотатки для \"%s\"" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d нотатка" msgstr[1] "%d нотатки" msgstr[2] "%d нотаток" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "Закрити" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "Скасувати" #: src/app.js:136 msgid "E-Book Files" msgstr "Файли електронних книг" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "Читайте електронні книги у стилі" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "" "Danylo Korostil \n" "Юрій Яновський \n" "volkov \n" "freeducks-debug" #: src/app.js:414 msgid "Source Code" msgstr "Джерельний код" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Видавець" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "Опубліковано" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "Оновлено" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Мова" #: src/book-info.js:139 msgid "Translated by" msgstr "Переклад" #: src/book-info.js:140 msgid "Edited by" msgstr "Редактор" #: src/book-info.js:141 msgid "Narrated by" msgstr "Озвучив" #: src/book-info.js:142 msgid "Illustrated by" msgstr "Ілюстрації" #: src/book-info.js:143 msgid "Produced by" msgstr "Вироблено" #: src/book-info.js:144 msgid "Artwork by" msgstr "Обкладинка" #: src/book-info.js:145 msgid "Color by" msgstr "Колір" #: src/book-info.js:146 msgid "Contributors" msgstr "Вкладачі" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "Ідентифікатор" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "Про цю книгу" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "Позиція %s із %s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "Сторінка %s із %s" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "Сторінка %s" #: src/book-viewer.js:32 msgid "Footnote" msgstr "Виноска" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "Перейти до виноски" #: src/book-viewer.js:34 msgid "Endnote" msgstr "Кінцева виноска" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "Перейти до кінцевої виноски" #: src/book-viewer.js:36 msgid "Note" msgstr "Нотатка" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "Перейти до примітки" #: src/book-viewer.js:38 msgid "Definition" msgstr "Визначення" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "Перейти до визначення" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "Бібліографія" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "Перейти у Бібліографію" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "Видалити закладку" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "Додати закладку" #: src/book-viewer.js:714 msgid "File not found" msgstr "Файл не знайдено" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "Тип файлу не підтримується" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "Нотатка видалена" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" "\"%s\"\n" "— %s, \"%s\", стр. %s" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" "\"%s\"\n" "—\"%s\", сторінка %s" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "\"%s\" (сторінка %s)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" "\"%s\"\n" "—%s, \"%s\"" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" "\"%s\"\n" "—\"%s\"" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "\"%s\"" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "Зображення з \"%s\"" #: src/book-viewer.js:904 msgid "Image" msgstr "Зображення" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "з %d" #: src/library.js:47 msgid "Loading" msgstr "Завантаження" #: src/library.js:48 msgid "Failed to Load" msgstr "Не вдалося завантажити" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "Перезавантажити" #: src/library.js:51 msgid "See All" msgstr "Побачити усі" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "Пошук" #: src/library.js:53 msgid "Filter" msgstr "Фільтр" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "Завантажити" #: src/library.js:56 msgid "Buy" msgstr "Купити" #: src/library.js:58 msgid "Preview" msgstr "Попередній перегляд" #: src/library.js:59 msgid "Sample" msgstr "Зразок" #: src/library.js:60 msgid "Borrow" msgstr "Позичити" #: src/library.js:61 msgid "Subscribe" msgstr "Підписатися" #: src/library.js:63 msgid "Free" msgstr "Безкоштовно" #: src/library.js:65 msgid "First" msgstr "Перше" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "Попереднє" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "Наступне" #: src/library.js:68 msgid "Last" msgstr "Останнє" #: src/library.js:70 msgid "Search Terms" msgstr "Терміни пошуку" #: src/library.js:72 msgid "Title" msgstr "Назва" #: src/library.js:73 msgid "Author" msgstr "Автор" #: src/library.js:74 msgid "Contributor" msgstr "Вкладач" #: src/library.js:438 msgid "Remove Book?" msgstr "Вилучити книгу?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "Прогрес читання, нотатки та закладки будуть назавжди втрачені" #: src/library.js:441 msgid "_Cancel" msgstr "_Скасувати" #: src/library.js:442 msgid "_Remove" msgstr "_Видалити" #: src/library.js:472 msgid "Failed to Open" msgstr "Не вдалося відкрити" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "Не вдалося відкрити файл обраним додатком" #: src/library.js:644 msgid "Download Failed" msgstr "Не вдалось завантажити" #: src/library.js:698 msgid "Rename…" msgstr "Перейменувати…" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "Видалити" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "Перейменувати" #: src/library.js:725 msgid "Name" msgstr "Назва" #: src/library.js:740 msgid "All Books" msgstr "Усі книги" #: src/library.js:746 msgid "Add Catalog…" msgstr "Додати каталог…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "Бібліотека" #: src/library.js:821 msgid "Catalogs" msgstr "Каталоги" #: src/library.js:864 msgid "Catalog removed" msgstr "Каталог видалено" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "Додати каталог" #: src/library.js:952 msgid "Add" msgstr "Додати" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "Ви можете переглядати та завантажувати книжки із OPDS каталогів. Дізнатися більше…" #: src/library.js:961 msgid "URL" msgstr "URL-адреса" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "Словник" # Одразу переадресовувати на українську версію статті. #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "Із Вікісловника, розповсюджується під CC BY-SA ліцензею." #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "Жодних визначень не було знайдено" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "Шукати на Вікісловник" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Вікіпедія" # Я би додав українську версію цієї сторінки, але нажаль такої не існує - ніхто не зробив. #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "Із Вікіпедії, розповсюджується під CC BY-SA ліцензею." #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "Шукати у Вікіпедії" #: src/selection-tools.js:59 msgid "Translate" msgstr "Переклад" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "Перекладено через Google перекладач" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "Не вдалося отримати переклад" #: src/selection-tools.js:67 msgid "Search…" msgstr "Пошук…" #: src/themes.js:8 msgid "Default" msgstr "Стандартний" #: src/themes.js:13 msgid "Gray" msgstr "Сірий" #: src/themes.js:18 msgid "Sepia" msgstr "Сепія" #: src/themes.js:23 msgid "Grass" msgstr "Трава" #: src/themes.js:28 msgid "Cherry" msgstr "Вишня" #: src/themes.js:33 msgid "Sky" msgstr "Небо" #: src/themes.js:38 msgid "Solarized" msgstr "Solarized" #: src/themes.js:43 msgid "Gruvbox" msgstr "Gruvbox" #: src/themes.js:48 msgid "Nord" msgstr "Nord" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "Помилка синтезу мовлення" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "" "Впевніться що Speech Dispatcher модуль встановлений і коректно працює на " "вашій системі" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "Скопійовано в буфер обміну" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "Стиль виділення" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "Вилучити" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "Меню" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "Додати нотатку…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "Відкрити в новому вікні" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "Відкрити у зовнішньому додатку" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "Експортувати нотатки…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "Нове вікно" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "Відкрити копію" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "Імпортувати нотатки…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "Про Foliate" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "Усі розділи" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "Поточний розділ" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "Шукати тільки цілі слова" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "Враховувати регістр" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "Враховувати діакритичні знаки" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "Налаштування шрифту та макету" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "Режим гортання" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "Інвертувати кольори у темному стилі" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "Автоматично ховати курсор" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "Друк…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "Інспектор" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "Неможливо відкрити книгу" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "Подробиці" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "Відкрити інший файл…" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "Закріпити бічну панель" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "Меню книги" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "Знайти" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "Пошук в книзі…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "Вміст" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Нотатки" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "Оберіть текст щоб додати його до нотаток" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "Фільтрувати нотатки…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Закладки" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "Немає закладок" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "Додайте закладки щоб побачити їх тут" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "Нічого не знайдено" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "Спробуйте інший пошуковий запит" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "Бічна панель" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "Меню перегляду" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "Зменшити" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "Скинути масштаб" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "Збільшити" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "Використовувати стиль системи" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "Світлий стиль" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "Темний стиль" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Повноекранний режим" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "Експортувати нотатки" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "Експортувати" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "Формат" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "Оберіть \"JSON\" якщо ви плануєте імпортувати нотатки назад у Foliate" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "Markdown" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "Org Mode" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Скопіювати" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "Зберегти як…" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "Повернути на 90° проти годинникової стрілки" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "Повернути на 90° за годинниковою стрілкою" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "Імпортувати нотатки" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "Імпортувати" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "Ідентифікатори не збігаються. Можливо, ці нотатки не для цієї книги." #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "Все рівно імпортувати" #: src/ui/library.ui:6 msgid "List View" msgstr "Перегляд списком" #: src/ui/library.ui:11 msgid "Grid View" msgstr "Перегляд ґраткою" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Відкрити…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "Головне меню" #: src/ui/library.ui:110 msgid "Open" msgstr "Відкрити" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "Меню бібліотеки" #: src/ui/library.ui:134 msgid "Search library…" msgstr "Пошук у бібліотеці…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "Назад" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "Вперед" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "Поки що книжок немає" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "Відкрийте книгу, щоб почати читати" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "Позиція" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "Озвучення" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "Залишилось часу в розділі" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "Залишилось часу в книзі" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "Сторінка" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "Скопіювати та перейти" #: src/ui/navbar.ui:322 msgid "Section" msgstr "Розділ" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "Перший розділ" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "Попередній розділ" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "Перестрибнути до…" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "Наступний розділ" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "Останній розділ" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Виділити" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "Промовити звідси" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "Копіювати з цитатою" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "Копіювати ідентифікатор" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "Друкувати обране…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "Швидкість" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "Гучність" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "Грати/Призупинити" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "Зупинити" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "Шрифт" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "Розмір шрифту" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "Стандартний розмір шрифту" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "Мінімальний розмір шрифту" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "Сімейство шрифту" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "Стандартний шрифт" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "Із засічками" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "Без засічок" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "Замінити шрифти видавця" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "Шрифт із засічками" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "Шрифт без засічок" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "Моноширинний шрифт" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "Макет" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "Параграф" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "Висота рядка" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "Повне вирівнювання" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "Перенесення слів" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Поля" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "Максимальна кількість стовпців" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "Максимальний вбудований розмір" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "" "Максимальна ширина стовпця (для горизонтального напису) або висота (для " "вертикального напису)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "Максимальний розмір блоку" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "" "Максимальна висота (для горизонтального напису) або ширина (для " "вертикального напису)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "Колір" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "Поведінка" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "Зменшити обсяг анімацій" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "Переглядач електронних книг" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "Ebook;Book;EPUB;Viewer;Reader;pdf;книга;переглядач;читач;документ;електронна;читалка;пдф;єпаб;епаб;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "Досліджуйте новий розділ читаючи з Foliate - сучасною читалкою електронних " "книг адаптованою для GNOME. Заглибтеся у читання з не відволікаючим " "інтерфейсом з налаштуваннями функцій під ваші особисті уподобання." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "Можливості:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "Вміє відкривати EPUB, Mobipocket, Kindle, FB2, CBZ, та PDF файли" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "Посторінковий і режим гортання" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "Налаштування шрифтів та міжстрочний інтервал" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "Світлий, сепія, темний та інвертовані стилі" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "Прогрес читання з підтримкою закладок" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "Примітки та нотатки" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "Пошук в книзі" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "Швидкий пошук у словнику" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "" "Виправлено помилку, коли коли остання частина розділу була відрізана, якщо " "розділ починається з розриву сторінки" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "Виправлена не коректний перенос тексту у таблицях" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "Виправлені проблеми з швидкодією OPDS каталогів" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "Додана підтримка OPDS каталогів, а також підтримка OPDS 2.0" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 msgid "Added option to override publisher font" msgstr "Додана опція, щоб замінити шрифти видавця" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "Додана опція для зменшення кількості анімацій" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "Додана підтримка JPEG XL зображень у CBZ архівах" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "Виправлено отримання файлів із трекеру у Flatpak версії додатку" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "Виправлені отримання дат із файлів" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "Foliate був переписаний з нуля з використанням нової бібліотеки рендеру " "електронних книг і найновіших бібліотек платформи, такі як GTK 4 та " "Libadwaita з оновленим інтерфейсом та покращеннями продуктивності." #~ msgid "Book" #~ msgstr "Книга" #~ msgid "EPUB" #~ msgstr "EPUB" #~ msgid "Ebook" #~ msgstr "Електронна книга" #~ msgid "Reader" #~ msgstr "Читач" #~ msgid "Viewer" #~ msgstr "Переглядач" #, fuzzy #~ msgid "Reference" #~ msgstr "Налаштування" #, fuzzy #~ msgid "Go to Reference" #~ msgstr "Налаштування" #~ msgid "Keyboard Shortcuts" #~ msgstr "Клавіатурні скорочення" #~ msgid "Preferences" #~ msgstr "Налаштування" #, fuzzy #~ msgid "Fold Sidebar" #~ msgstr "Показувати бічну панель" #~ msgid "Save File" #~ msgstr "Зберегти файл" #, fuzzy #~ msgid "Choose highlight style" #~ msgstr "Змінити колір виділення" #~ msgid "More" #~ msgstr "Більше" #, fuzzy #~ msgid "About this book" #~ msgstr "Про цю книгу" #, fuzzy #~ msgid "Toggle sidebar" #~ msgstr "Бічна панель" #~ msgid "Restore zoom" #~ msgstr "Відновити масштаб" #~ msgid "Go to previous page" #~ msgstr "Попередня сторінки" #~ msgid "Go back to previous location" #~ msgstr "Перейти до попереднього розташування" #, fuzzy #~ msgid "Go to next section" #~ msgstr "Наступна сторінка" #, fuzzy #~ msgid "Go to last section" #~ msgstr "Вилучити поточну позицію" ================================================ FILE: po/vi.po ================================================ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2025-11-24 06:52+0700\n" "Last-Translator: Loc Huynh \n" "Language-Team: \n" "Language: vi\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: Poedit 3.4.2\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "Đã xóa đánh dấu" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 src/library.js:865 msgid "Undo" msgstr "Hoàn tác" #: src/annotations.js:437 msgid "Underline" msgstr "Gạch chân" #: src/annotations.js:438 msgid "Squiggly" msgstr "Gạch lượn sóng" #: src/annotations.js:439 msgid "Strikethrough" msgstr "Gạch giữa" #: src/annotations.js:440 msgid "Yellow" msgstr "Vàng" #: src/annotations.js:441 msgid "Orange" msgstr "Cam" #: src/annotations.js:442 msgid "Red" msgstr "Đỏ" #: src/annotations.js:443 msgid "Magenta" msgstr "Hồng sẫm" #: src/annotations.js:444 msgid "Aqua" msgstr "Xanh lam" #: src/annotations.js:445 msgid "Lime" msgstr "Xanh lá mạ" #: src/annotations.js:446 msgid "Custom Color…" msgstr "Màu tùy chỉnh…" #: src/annotations.js:498 msgid "Custom" msgstr "Tùy Chỉnh" #: src/annotations.js:592 msgid "JSON Files" msgstr "Tệp JSON" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "Tất Cả Tệp" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "Không Có Chú Thích" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "Tệp đã nhập không có chú thích" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "Không Thể Nhập Chú Thích" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "Đã xảy ra lỗi" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "Bạn chưa có chú thích nào cho sách này" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "Chú thích cho “%s”" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d Chú Thích" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "Đóng" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "Hủy" #: src/app.js:136 msgid "E-Book Files" msgstr "Tệp E-Book" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "Đọc e-book một cách phong cách" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "Loc Huynh " #: src/app.js:414 msgid "Source Code" msgstr "Mã Nguồn" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "Nhà Xuất Bản" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "Phát Hành" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "Cập Nhật" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "Ngôn Ngữ" #: src/book-info.js:139 msgid "Translated by" msgstr "Dịch bởi" #: src/book-info.js:140 msgid "Edited by" msgstr "Biên tập bởI" #: src/book-info.js:141 msgid "Narrated by" msgstr "Kể chuyện bởI" #: src/book-info.js:142 msgid "Illustrated by" msgstr "Minh họa bởi" #: src/book-info.js:143 msgid "Produced by" msgstr "Sản xuất bởi" #: src/book-info.js:144 msgid "Artwork by" msgstr "Hình ảnh bởi" #: src/book-info.js:145 msgid "Color by" msgstr "Tô màu bởi" #: src/book-info.js:146 msgid "Contributors" msgstr "Người Đóng Góp" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "Định Danh" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "Giới Thiệu Sách Này" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "Vị trí %s/%s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "Trang %s/%s" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "Trang %s" #: src/book-viewer.js:32 msgid "Footnote" msgstr "Chú Thích Cuối Trang" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "Đi tới Chú Thích Cuối Trang" #: src/book-viewer.js:34 msgid "Endnote" msgstr "Chú Thích Cuối Sách" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "Đi tới Chú Thích Cuối Sách" #: src/book-viewer.js:36 msgid "Note" msgstr "Ghi Chú" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "Đi tới Ghi Chú" #: src/book-viewer.js:38 msgid "Definition" msgstr "Định Nghĩa" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "Đi tới Định Nghĩa" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "Tài Liệu Tham Khảo" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "Đi tới Tài Liệu Tham Khảo" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "Xóa đánh dấu" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "Thêm đánh dấu" #: src/book-viewer.js:714 msgid "File not found" msgstr "Không tìm thấy tệp" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "Loại tệp không được hỗ trợ" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "Đã xóa chú thích" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" "‘%s’\n" "—%s, “%s”, tr. %s" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" "‘%s’\n" "—“%s”, tr. %s" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "‘%s’ (tr. %s)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" "‘%s’\n" "—%s, “%s”" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" "‘%s’\n" "—“%s”" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "‘%s’" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "Hình ảnh từ “%s”" #: src/book-viewer.js:904 msgid "Image" msgstr "Hình ảnh" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "trong %d" #: src/library.js:47 msgid "Loading" msgstr "Đang tải" #: src/library.js:48 msgid "Failed to Load" msgstr "Tải Thất Bại" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "Tải Lại" #: src/library.js:51 msgid "See All" msgstr "Xem Tất Cả" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "Tìm Kiếm" #: src/library.js:53 msgid "Filter" msgstr "Lọc" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "Tải Xuống" #: src/library.js:56 msgid "Buy" msgstr "Mua" #: src/library.js:58 msgid "Preview" msgstr "Xem Trước" #: src/library.js:59 msgid "Sample" msgstr "Mẫu" #: src/library.js:60 msgid "Borrow" msgstr "Mượn" #: src/library.js:61 msgid "Subscribe" msgstr "Đăng Ký" #: src/library.js:63 msgid "Free" msgstr "Miễn Phí" #: src/library.js:65 msgid "First" msgstr "Đầu Tiên" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "Trước" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "Tiếp" #: src/library.js:68 msgid "Last" msgstr "Cuối Cùng" #: src/library.js:70 msgid "Search Terms" msgstr "Từ Khóa Tìm Kiếm" #: src/library.js:72 msgid "Title" msgstr "Tiêu Đề" #: src/library.js:73 msgid "Author" msgstr "Tác Giả" #: src/library.js:74 msgid "Contributor" msgstr "Người Đóng Góp" #: src/library.js:438 msgid "Remove Book?" msgstr "Xóa Sách?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "Tiến độ đọc, chú thích và đánh dấu sẽ bị mất vĩnh viễn" #: src/library.js:441 msgid "_Cancel" msgstr "_Hủy" #: src/library.js:442 msgid "_Remove" msgstr "_Xóa" #: src/library.js:472 msgid "Failed to Open" msgstr "Mở Thất Bại" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "Không thể mở tệp bằng ứng dụng đã chọn" #: src/library.js:644 msgid "Download Failed" msgstr "Tải Xuống Thất Bại" #: src/library.js:698 msgid "Rename…" msgstr "Đổi Tên…" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "Xóa" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "Đổi Tên" #: src/library.js:725 msgid "Name" msgstr "Tên" #: src/library.js:740 msgid "All Books" msgstr "Tất Cả Sách" #: src/library.js:746 msgid "Add Catalog…" msgstr "Thêm Danh Mục…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 src/ui/library.ui:93 msgid "Library" msgstr "Thư Viện" #: src/library.js:821 msgid "Catalogs" msgstr "Danh Mục" #: src/library.js:864 msgid "Catalog removed" msgstr "Đã xóa Danh Mục" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "Thêm Danh Mục" #: src/library.js:952 msgid "Add" msgstr "Thêm" #: src/library.js:957 msgid "You can browse and download books from OPDS catalogs. Learn More…" msgstr "Bạn có thể duyệt và tải sách từ các danh mục OPDS. Tìm hiểu thêm…" #: src/library.js:961 msgid "URL" msgstr "URL" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "Từ điển" #: src/selection-tools.js:37 msgid "From Wiktionary, released under the CC BY-SA License." msgstr "Từ Wiktionary, được phát hành theo giấy phép CC BY-SA." #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "Không Tìm Thấy Định Nghĩa" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "Tìm trên Wiktionary" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "Wikipedia" #: src/selection-tools.js:50 msgid "From Wikipedia, released under the CC BY-SA License." msgstr "Từ Wikipedia, được phát hành theo giấy phép CC BY-SA." #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "Tìm trên Wikipedia" #: src/selection-tools.js:59 msgid "Translate" msgstr "Dịch" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "Dịch bởi Google Translate" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "Không thể lấy bản dịch" #: src/selection-tools.js:67 msgid "Search…" msgstr "Tìm Kiếm…" #: src/themes.js:8 msgid "Default" msgstr "Mặc Định" #: src/themes.js:13 msgid "Gray" msgstr "Xám" #: src/themes.js:18 msgid "Sepia" msgstr "Sepia" #: src/themes.js:23 msgid "Grass" msgstr "Xanh Cỏ" #: src/themes.js:28 msgid "Cherry" msgstr "Hồng Anh Đào" #: src/themes.js:33 msgid "Sky" msgstr "Xanh Da Trời" #: src/themes.js:38 msgid "Solarized" msgstr "Solarized" #: src/themes.js:43 msgid "Gruvbox" msgstr "Gruvbox" #: src/themes.js:48 msgid "Nord" msgstr "Nord" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "Lỗi Chuyển Văn Bản Thành Giọng Nói" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "Hãy đảm bảo Speech Dispatcher đã được cài đặt và hoạt động trên hệ thống của bạn" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "Đã sao chép vào bộ nhớ tạm" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "Kiểu Highlight" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "Xóa" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 src/ui/image-viewer.ui:62 msgid "Menu" msgstr "Menu" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "Thêm Ghi Chú…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "Mở trong Cửa Sổ Mới" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "Mở bằng Ứng Dụng Bên Ngoài" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "Xuất Chú Thích…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "Cửa Sổ Mới" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "Mở Một Bản Sao" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "Nhập Chú Thích…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "Giới Thiệu Foliate" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "Tất Cả Chương" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "Chương Hiện Tại" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "Chỉ Khớp Từ Hoàn Chỉnh" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "Phân Biệt Chữ HOA/thường" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "Phân Biệt Dấu" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "Cài Đặt Phông Chữ & Bố Cục" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "Chế Độ Cuộn" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "Đảo Màu trong Chế Độ Tối" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "Tự Động Ẩn Con Trỏ" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "In…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "Trình Kiểm Tra" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "Không Thể Mở Sách" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "Chi tiết" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "Mở Tệp Khác…" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "Ghim Thanh Bên" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "Menu Sách" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "Tìm" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "Tìm trong sách…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "Nội Dung" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "Chú Thích" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "Chọn một đoạn văn bản để thêm chú thích" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "Lọc chú thích…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "Đánh Dấu" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "Không Có Đánh Dấu" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "Thêm một số đánh dấu để xem ở đây" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "Không Tìm Thấy Kết Quả" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "Thử tìm kiếm khác" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "Thanh Bên" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "Hiển Thị Menu" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "Thu Nhỏ" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "Đặt Lại Thu Phóng" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "Phóng To" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "Theo Kiểu Hệ Thống" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "Kiểu Sáng" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "Kiểu Tối" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "Toàn Màn Hình" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "Xuất Chú Thích" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "Xuất" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "Định Dạng" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "Chọn “JSON” nếu bạn định nhập lại chú thích vào Foliate" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "Markdown" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "Org Mode" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "Sao Chép" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "Lưu Dưới Dạng…" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "Xoay 90° ngược chiều kim đồng hồ" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "Xoay 90° theo chiều kim đồng hồ" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "Nhập Chú Thích" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "Nhập" #: src/ui/import-dialog.ui:33 msgid "The identifier doesn’t match. These annotations may not be for this book." msgstr "Định danh không khớp. Các chú thích này có thể không dành cho sách này." #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "Vẫn Nhập" #: src/ui/library.ui:6 msgid "List View" msgstr "Xem Dạng Danh Sách" #: src/ui/library.ui:11 msgid "Grid View" msgstr "Xem Dạng Lưới" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "Mở…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "Menu Chính" #: src/ui/library.ui:110 msgid "Open" msgstr "Mở" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "Trình đơn thư viện" #: src/ui/library.ui:134 msgid "Search library…" msgstr "Tìm trong thư viện…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "Quay Lại" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "Tiến Tới" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "Chưa Có Sách" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "Mở một cuốn sách để bắt đầu đọc" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "Vị Trí" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "Đọc To" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "Thời Gian Còn Lại trong Chương" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "Thời Gian Còn Lại trong Sách" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "Trang" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "Dán và Đi Tới" #: src/ui/navbar.ui:322 msgid "Section" msgstr "Chương" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "Chương Đầu" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "Chương Trước" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "Nhảy Tới…" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "Chương Tiếp" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "Chương Cuối" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "Highlight" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "Đọc to từ Đây" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "Sao Chép kèm Trích Dẫn" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "Sao Chép Định Danh" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "In Phần Đã Chọn…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "Tốc Độ" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "Âm Độ" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "Phát/Tạm Dừng" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "Dừng" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "Phông Chữ" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "Cỡ Chữ" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "Cỡ Chữ Mặc Định" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "Cỡ Chữ Tối Thiểu" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "Họ Phông Chữ" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "Phông Chữ Mặc Định" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "Có Chân" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "Không chân" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "Ghi Đè Phông Chữ Nhà Xuất Bản" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "Phông Chữ Có Chân" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "Phông chữ không chân" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "Phông chữ chiều rộng cố định" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "Bố cục" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "Đoạn văn" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "Chiều cao dòng" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "Căn đều hai bên" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "Ngắt từ" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "Lề" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "Số cột tối đa" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "Kích thước nội dòng tối đa" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "Chiều rộng cột tối đa (viết ngang) hoặc chiều cao (viết dọc)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "Kích thước khối tối đa" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "Chiều cao tối đa (viết ngang) hoặc chiều rộng (viết dọc)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "Màu sắc" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "Hành vi" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "Giảm hiệu ứng động" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "Trình xem e-book" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "Sách điện tử;Sách;EPUB;Trình xem;Trình đọc;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "Discover a new chapter in reading with Foliate, the modern e-book reader tailored for GNOME. Immerse yourself in a distraction-free interface, with customization features designed to match your unique preferences." msgstr "" "Khám phá một chương mới trong việc đọc sách với Foliate – trình đọc e-book hiện đại được thiết kế dành riêng cho GNOME. Đắm mình trong giao diện không phiền nhiễu với các tính năng tùy chỉnh phù hợp với sở thích riêng của bạn." #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "Các tính năng bao gồm:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "Mở các tệp EPUB, Mobipocket, Kindle, FB2, CBZ và PDF" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "Chế độ phân trang và chế độ cuộn" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "Tùy chỉnh phông chữ và khoảng cách dòng" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "Chế độ sáng, nâu sepia, tối và đảo màu" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "Thanh tiến độ đọc có đánh dấu chương" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "Đánh dấu và chú thích" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "Tìm trong sách" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "Tra từ điển nhanh" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "Sửa lỗi bị cắt nội dung cuối chương khi chương bắt đầu bằng ngắt trang" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "Sửa lỗi xuống dòng văn bản sai trong bảng" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "Sửa lỗi hiệu năng với danh mục OPDS" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "Thêm hỗ trợ danh mục OPDS, hiện hỗ trợ OPDS 2.0" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 msgid "Added option to override publisher font" msgstr "Thêm tùy chọn ghi đè phông chữ của nhà xuất bản" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "Thêm tùy chọn giảm hiệu ứng động" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "Thêm hỗ trợ JPEG XL trong CBZ" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "Sửa lỗi lấy tệp từ Tracker trong Flatpak" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "Sửa lỗi phân tích ngày chỉ có năm thuộc thế kỷ đầu và trước Công nguyên" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "Foliate has been rewritten from scratch with a new e-book rendering library and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI and improved performance." msgstr "Foliate đã được viết lại hoàn toàn từ đầu với thư viện hiển thị e-book mới cùng các thư viện nền tảng mới nhất – GTK 4 và Libadwaita – mang đến giao diện được làm mới và hiệu năng cải thiện đáng kể." ================================================ FILE: po/zh_CN.po ================================================ # Simplified Chinese translations for com.github.johnfactotum.Foliate package. # Copyright (C) 2019 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # 王滋涵 Zephyr Wang , 2020. # Tranquilo Chan , 2020-2021. # lumingzh , 2023-2025. # msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2025-04-04 10:17+0800\n" "Last-Translator: lumingzh \n" "Language-Team: Chinese (China) \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: Gtranslator 48.0\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "书签已删除" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "撤消" #: src/annotations.js:437 msgid "Underline" msgstr "下划线" #: src/annotations.js:438 msgid "Squiggly" msgstr "弯曲的" #: src/annotations.js:439 msgid "Strikethrough" msgstr "删除线" #: src/annotations.js:440 msgid "Yellow" msgstr "黄色" #: src/annotations.js:441 msgid "Orange" msgstr "橙色" #: src/annotations.js:442 msgid "Red" msgstr "红色" #: src/annotations.js:443 msgid "Magenta" msgstr "品红" #: src/annotations.js:444 msgid "Aqua" msgstr "湖绿" #: src/annotations.js:445 msgid "Lime" msgstr "青柠" #: src/annotations.js:446 msgid "Custom Color…" msgstr "自定义颜色…" #: src/annotations.js:498 msgid "Custom" msgstr "自定义" #: src/annotations.js:592 msgid "JSON Files" msgstr "JSON 文件" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "所有文件" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "无笔记" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "导入的文件没有笔记" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "无法导入笔记" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "发生了一个错误" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "您没有该书籍的任何笔记" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "“%s”的笔记" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d 条笔记" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "关闭" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "取消" #: src/app.js:136 msgid "E-Book Files" msgstr "电子书文件" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "别具风格地阅读电子书" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "" "Tranquilo Chan , 2020-2021.\n" "王滋涵 Zephyr Wang , 2020.\n" "lumingzh , 2023-2025." #: src/app.js:414 msgid "Source Code" msgstr "源代码" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "出版社" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "出版日期" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "更新日期" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "语言" #: src/book-info.js:139 msgid "Translated by" msgstr "翻译" #: src/book-info.js:140 msgid "Edited by" msgstr "编辑" #: src/book-info.js:141 msgid "Narrated by" msgstr "朗读" #: src/book-info.js:142 msgid "Illustrated by" msgstr "插图" #: src/book-info.js:143 msgid "Produced by" msgstr "制作" #: src/book-info.js:144 msgid "Artwork by" msgstr "美术" #: src/book-info.js:145 msgid "Color by" msgstr "上色" #: src/book-info.js:146 msgid "Contributors" msgstr "贡献者" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "标识符" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "关于此书" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "行 %s 共 %s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "页 %s 共 %s" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "第 %s 页" #: src/book-viewer.js:32 msgid "Footnote" msgstr "脚注" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "前往脚注" #: src/book-viewer.js:34 msgid "Endnote" msgstr "尾注" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "前往尾注" #: src/book-viewer.js:36 msgid "Note" msgstr "笔记" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "前往笔记" #: src/book-viewer.js:38 msgid "Definition" msgstr "定义" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "前往定义" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "参考文献" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "前往参考文献" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "移除书签" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "添加书签" #: src/book-viewer.js:714 msgid "File not found" msgstr "文件未找到" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "不支持的文件类型" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "笔记已删除" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" "‘%s’\n" "—%s, “%s”, p. %s" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" "‘%s’\n" "—“%s”, p. %s" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "‘%s’ (p. %s)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" "‘%s’\n" "—%s, “%s”" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" "‘%s’\n" "—“%s”" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "‘%s’" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "图片来自 “%s”" #: src/book-viewer.js:904 msgid "Image" msgstr "图片" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "共 %d" #: src/library.js:47 msgid "Loading" msgstr "加载中" #: src/library.js:48 msgid "Failed to Load" msgstr "加载失败" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "重新载入" #: src/library.js:51 msgid "See All" msgstr "查看全部" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "搜索" #: src/library.js:53 msgid "Filter" msgstr "筛选器" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "下载" #: src/library.js:56 msgid "Buy" msgstr "购买" #: src/library.js:58 msgid "Preview" msgstr "预览" #: src/library.js:59 msgid "Sample" msgstr "样品" #: src/library.js:60 msgid "Borrow" msgstr "借阅" #: src/library.js:61 msgid "Subscribe" msgstr "订阅" #: src/library.js:63 msgid "Free" msgstr "免费" #: src/library.js:65 msgid "First" msgstr "首页" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "上页" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "下页" #: src/library.js:68 msgid "Last" msgstr "尾页" #: src/library.js:70 msgid "Search Terms" msgstr "搜索方式" #: src/library.js:72 msgid "Title" msgstr "标题" #: src/library.js:73 msgid "Author" msgstr "作者" #: src/library.js:74 msgid "Contributor" msgstr "贡献者" #: src/library.js:438 msgid "Remove Book?" msgstr "删除书籍吗?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "阅读进度、笔记和书签将永远丢失" #: src/library.js:441 msgid "_Cancel" msgstr "取消(_C)" #: src/library.js:442 msgid "_Remove" msgstr "移除(_R)" #: src/library.js:472 msgid "Failed to Open" msgstr "打开失败" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "无法使用选择的应用程序打开该文件" #: src/library.js:644 msgid "Download Failed" msgstr "下载失败" #: src/library.js:698 msgid "Rename…" msgstr "重命名…" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "移除" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "重命名" #: src/library.js:725 msgid "Name" msgstr "名称" #: src/library.js:740 msgid "All Books" msgstr "所有书籍" #: src/library.js:746 msgid "Add Catalog…" msgstr "添加书目…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "书库" #: src/library.js:821 msgid "Catalogs" msgstr "书目" #: src/library.js:864 msgid "Catalog removed" msgstr "书目已移除" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "添加书目" #: src/library.js:952 msgid "Add" msgstr "添加" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "您可以从 OPDS 书目浏览和下载书籍。了解更多…" #: src/library.js:961 msgid "URL" msgstr "网址" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "词典" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "来自 Wiktionary,以 CC BY-SA 许可证发布。" #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "未找到定义" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "在 Wiktionary 上搜索" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "维基百科" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "来自 Wikipedia,以 CC BY-SA 许可证发布。" #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "在维基百科上搜索" #: src/selection-tools.js:59 msgid "Translate" msgstr "翻译" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "由 Google Translate 翻译" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "无法获取翻译" #: src/selection-tools.js:67 msgid "Search…" msgstr "搜索…" #: src/themes.js:8 msgid "Default" msgstr "默认" #: src/themes.js:13 msgid "Gray" msgstr "灰色" #: src/themes.js:18 msgid "Sepia" msgstr "褐色" #: src/themes.js:23 msgid "Grass" msgstr "青草" #: src/themes.js:28 msgid "Cherry" msgstr "樱桃" #: src/themes.js:33 msgid "Sky" msgstr "天空" #: src/themes.js:38 msgid "Solarized" msgstr "Solarized" #: src/themes.js:43 msgid "Gruvbox" msgstr "Gruvbox" #: src/themes.js:48 msgid "Nord" msgstr "Nord" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "文字转语音出错" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "请确保语音调度器已在您的系统上安装并工作正常" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "已复制到剪贴板" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "高亮样式" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "删除" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "菜单" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "添加笔记…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "在新窗口中打开" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "使用外部应用打开" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "导出笔记…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "新建窗口" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "打开副本" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "导入笔记…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "关于 Foliate" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "全部章节" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "当前章节" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "仅匹配整个词语" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "匹配大小写" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "匹配音符" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "字体和布局设置" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "滚动模式" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "暗色模式时反转颜色" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "自动隐藏指针" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "打印…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "检查器" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "书籍无法打开" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "详情" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "打开另一个文件…" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "固定侧边栏" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "书籍菜单" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "查找" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "在书籍中查找…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "目录" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "笔记" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "选择一些文字来添加笔记" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "筛选笔记…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "书签" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "无书签" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "添加一些书签来在这里查看它们" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "未找到结果" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "尝试不同的搜索" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "侧边栏" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "视图菜单" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "缩小" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "重置缩放" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "放大" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "跟随系统样式" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "亮色样式" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "暗色样式" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "全屏" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "导出笔记" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "导出" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "格式" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "如果您计划将笔记导回 Foliate 请选择“JSON”" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "Markdown" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "Org 模式" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "复制" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "另存为…" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "逆时针旋转 90°" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "顺时针旋转 90°" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "导入笔记" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "导入" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "标识符不匹配。这些笔记可能不是该书籍的。" #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "仍然导入" #: src/ui/library.ui:6 msgid "List View" msgstr "列表视图" #: src/ui/library.ui:11 msgid "Grid View" msgstr "网格视图" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "打开…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "主菜单" #: src/ui/library.ui:110 msgid "Open" msgstr "打开" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "书库菜单" #: src/ui/library.ui:134 msgid "Search library…" msgstr "搜索书库…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "返回" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "前进" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "尚无书籍" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "打开书籍开始阅读" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "位置" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "朗读" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "本章节剩余时间" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "本书籍剩余时间" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "页" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "粘贴并前往" #: src/ui/navbar.ui:322 msgid "Section" msgstr "章节" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "首个章节" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "上一章节" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "跳转至…" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "下一章节" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "最后章节" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "高亮" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "从此处开始朗读" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "带引文复制" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "复制标识符" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "打印选区…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "语速" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "音高" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "播放/暂停" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "停止" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "字体" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "字体大小" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "默认字体大小" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "最小字体大小" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "字体家族" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "默认字体" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "无衬线" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "衬线" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "覆盖出版商字体" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "无衬线字体" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "衬线字体" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "等宽字体" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "布局" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "段落" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "行高" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "两端对齐" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "连字符" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "边界" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "最大栏数" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "最大内联大小" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "最大栏宽(横向书写)或栏高(竖向书写)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "最大块大小" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "最大高度(横向书写)或宽度(竖向书写)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "颜色" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "行为" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "减少动画" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "电子书查看器" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "Ebook;Book;EPUB;Viewer;Reader;电子书;图书;书籍;查看器;阅读器;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "使用 Foliate 这一为 GNOME 量身定做的现代电子书阅读器在阅读中发现新的篇章。通" "过设计为匹配您独特首选项的自定义特性,将您自己沉浸在无干扰的界面中。" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "特性包括:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "打开 EPUB、Mobipocket、Kindle、FB2、CBZ 和 PDF 文件" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "分页模式和滚动模式" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "自定义字体和行间距" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "亮色、褐色、暗色和反转模式" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "带有章节标记的阅读进度滑动条" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "书签和笔记" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "书籍中查找" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "快速的词典查询" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "修复了章节以分页符起始时误判为章节末尾而截断内容的问题" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "修复了表格中文本未正确折行的问题" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "修复了 OPDS 书目的性能问题" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "添加了对 OPDS 2.0 与 OPDS 书目的支持" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 msgid "Added option to override publisher font" msgstr "添加了覆盖出版商字体的选项" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "添加了减少动画的选项" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "添加了对 CBZ 中 JPEG XL 的支持" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "修复了 Flatpak 中从 Tracker 获取文件的问题" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "修复了对非纯年份公元一世纪和公元前日期的解析问题" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "Foliate 已从零重写,拥有新的电子书渲染库和最新的平台库、GTK 4 和 Libadwaita," "带有重新设计的用户界面和性能提升。" #~ msgid "Book" #~ msgstr "书籍" #~ msgid "EPUB" #~ msgstr "EPUB" #~ msgid "Ebook" #~ msgstr "电子书" #~ msgid "Reader" #~ msgstr "阅读器" #~ msgid "Viewer" #~ msgstr "查看器" #~ msgid "John Factotum" #~ msgstr "John Factotum" #, fuzzy #~ msgid "Reference" #~ msgstr "偏好设置" #, fuzzy #~ msgid "Go to Reference" #~ msgstr "偏好设置" #~ msgid "Keyboard Shortcuts" #~ msgstr "快捷键" #~ msgid "Preferences" #~ msgstr "偏好设置" #~ msgid "Speak" #~ msgstr "朗读" #, fuzzy #~ msgid "Fold Sidebar" #~ msgstr "显示侧边栏" #, fuzzy #~ msgid "Voice" #~ msgstr "配音" #~ msgid "Save File" #~ msgstr "保存文件" #, fuzzy #~ msgid "Choose highlight style" #~ msgstr "更改高亮颜色" #~ msgid "More" #~ msgstr "更多" #, fuzzy #~ msgid "About this book" #~ msgstr "关于此书" #, fuzzy #~ msgid "Toggle sidebar" #~ msgstr "使用侧边栏" #~ msgid "Restore zoom" #~ msgstr "恢复默认缩放" #~ msgid "Go to previous page" #~ msgstr "上一页" #~ msgid "Go back to previous location" #~ msgstr "上一位置" #, fuzzy #~ msgid "Go to next section" #~ msgstr "下一页" #, fuzzy #~ msgid "Go to last section" #~ msgstr "转到位置" ================================================ FILE: po/zh_TW.po ================================================ # Traditional Chinese translations for com.github.johnfactotum.Foliate package. # Copyright (C) 2019 THE com.github.johnfactotum.Foliate'S COPYRIGHT HOLDER # This file is distributed under the same license as the com.github.johnfactotum.Foliate package. # Automatically generated, 2019. # msgid "" msgstr "" "Project-Id-Version: com.github.johnfactotum.Foliate\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-11-28 11:04+0800\n" "PO-Revision-Date: 2020-07-06 13:16+0800\n" "Last-Translator: Peter Dave Hello\n" "Language-Team: none\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: Poedit 2.3\n" #: src/annotations.js:137 src/annotations.js:172 msgid "Bookmark deleted" msgstr "書籤已刪除" #: src/annotations.js:138 src/annotations.js:173 src/book-viewer.js:805 #: src/library.js:865 msgid "Undo" msgstr "復原" #: src/annotations.js:437 msgid "Underline" msgstr "底線" #: src/annotations.js:438 msgid "Squiggly" msgstr "波浪線" #: src/annotations.js:439 msgid "Strikethrough" msgstr "刪除線" #: src/annotations.js:440 msgid "Yellow" msgstr "黃色" #: src/annotations.js:441 msgid "Orange" msgstr "橘色" #: src/annotations.js:442 msgid "Red" msgstr "紅色" #: src/annotations.js:443 msgid "Magenta" msgstr "洋紅色" #: src/annotations.js:444 msgid "Aqua" msgstr "水藍色" #: src/annotations.js:445 msgid "Lime" msgstr "萊姆綠" #: src/annotations.js:446 msgid "Custom Color…" msgstr "自訂顏色…" #: src/annotations.js:498 msgid "Custom" msgstr "自訂" #: src/annotations.js:592 msgid "JSON Files" msgstr "JSON 檔案" #: src/annotations.js:597 src/app.js:149 msgid "All Files" msgstr "所有檔案" #: src/annotations.js:606 src/annotations.js:634 src/ui/book-viewer.ui:402 msgid "No Annotations" msgstr "無註解" #: src/annotations.js:607 msgid "The imported file has no annotations" msgstr "匯入的檔案中沒有任何註解" #: src/annotations.js:625 msgid "Cannot Import Annotations" msgstr "無法匯入註解" #: src/annotations.js:626 src/book-viewer.js:716 src/library.js:644 msgid "An error occurred" msgstr "發生錯誤" #: src/annotations.js:635 msgid "You don’t have any annotations for this book" msgstr "您在這本書上沒有任何註解" #: src/annotations.js:648 #, javascript-format msgid "Annotations for “%s”" msgstr "「%s」的註解" #: src/annotations.js:649 #, javascript-format msgid "%d Annotation" msgid_plural "%d Annotations" msgstr[0] "%d 則註解" #: src/app.js:95 src/book-viewer.js:30 msgid "Close" msgstr "關閉" #: src/app.js:112 src/library.js:50 src/ui/export-dialog.ui:11 #: src/ui/import-dialog.ui:15 msgid "Cancel" msgstr "取消" #: src/app.js:136 msgid "E-Book Files" msgstr "電子書檔案" #: src/app.js:399 data/com.github.johnfactotum.Foliate.desktop.in:6 #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:7 msgid "Read e-books in style" msgstr "風格化的電子書閱讀" #. Translators: put your names here, one name per line #. they will be shown in the "About" dialog #: src/app.js:405 msgid "translator-credits" msgstr "" "Blan Chan\n" "John Factotum\n" "Peter Dave Hello" #: src/app.js:414 msgid "Source Code" msgstr "原始碼" #: src/book-info.js:133 src/library.js:75 msgid "Publisher" msgstr "出版" #. Translators: this is the heading for the publication date #: src/book-info.js:135 src/library.js:76 msgid "Published" msgstr "出版日期" #. Translators: this is the heading for the modified date #: src/book-info.js:137 msgid "Updated" msgstr "更新日期" #: src/book-info.js:138 src/library.js:77 msgid "Language" msgstr "語言" #: src/book-info.js:139 msgid "Translated by" msgstr "翻譯" #: src/book-info.js:140 msgid "Edited by" msgstr "編輯" #: src/book-info.js:141 msgid "Narrated by" msgstr "朗讀" #: src/book-info.js:142 msgid "Illustrated by" msgstr "插畫" #: src/book-info.js:143 msgid "Produced by" msgstr "製作" #: src/book-info.js:144 msgid "Artwork by" msgstr "美術" #: src/book-info.js:145 msgid "Color by" msgstr "上色" #: src/book-info.js:146 msgid "Contributors" msgstr "貢獻者" #: src/book-info.js:147 src/library.js:78 src/ui/navbar.ui:283 msgid "Identifier" msgstr "識別碼" #: src/book-info.js:179 src/ui/book-item.ui:15 src/ui/book-row.ui:15 #: src/ui/book-viewer.ui:368 msgid "About This Book" msgstr "關於此書" #: src/book-viewer.js:27 #, javascript-format msgid "Loc. %s of %s" msgstr "位置 %s / %s" #: src/book-viewer.js:28 #, javascript-format msgid "Page %s of %s" msgstr "第 %s 頁,共 %s 頁" #: src/book-viewer.js:29 #, javascript-format msgid "Page %s" msgstr "第 %s 頁" #: src/book-viewer.js:32 msgid "Footnote" msgstr "註腳" #: src/book-viewer.js:33 msgid "Go to Footnote" msgstr "前往註腳" #: src/book-viewer.js:34 msgid "Endnote" msgstr "章節附註" #: src/book-viewer.js:35 msgid "Go to Endnote" msgstr "前往章節附註" #: src/book-viewer.js:36 msgid "Note" msgstr "筆記" #: src/book-viewer.js:37 msgid "Go to Note" msgstr "前往筆記" #: src/book-viewer.js:38 msgid "Definition" msgstr "定義" #: src/book-viewer.js:39 msgid "Go to Definition" msgstr "前往定義" #: src/book-viewer.js:40 msgid "Bibliography" msgstr "參考書目" #: src/book-viewer.js:41 msgid "Go to Bibliography" msgstr "前往參考書目" #: src/book-viewer.js:622 msgid "Remove bookmark" msgstr "移除書籤" #: src/book-viewer.js:623 msgid "Add bookmark" msgstr "新增書籤" #: src/book-viewer.js:714 msgid "File not found" msgstr "找不到檔案" #: src/book-viewer.js:715 msgid "File type not supported" msgstr "不支援的檔案類型" #: src/book-viewer.js:804 msgid "Annotation deleted" msgstr "註解已刪除" #: src/book-viewer.js:877 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”, p. %s" msgstr "" "「%s」\n" "—%s,《%s》,第 %s 頁" #: src/book-viewer.js:879 #, javascript-format msgid "" "‘%s’\n" "—“%s”, p. %s" msgstr "" "「%s」\n" "—《%s》,第 %s 頁" #: src/book-viewer.js:880 #, javascript-format msgid "‘%s’ (p. %s)" msgstr "「%s」(第 %s 頁)" #: src/book-viewer.js:883 #, javascript-format msgid "" "‘%s’\n" "—%s, “%s”" msgstr "" "「%s」\n" "—%s,《%s》" #: src/book-viewer.js:885 #, javascript-format msgid "" "‘%s’\n" "—“%s”" msgstr "" "「%s」\n" "—《%s》" #: src/book-viewer.js:886 #, javascript-format msgid "‘%s’" msgstr "「%s」" #: src/book-viewer.js:904 #, javascript-format msgid "Image from “%s”" msgstr "來自《%s》的圖片" #: src/book-viewer.js:904 msgid "Image" msgstr "圖片" #: src/format.js:127 #, javascript-format msgid "of %d" msgstr "共 %d" #: src/library.js:47 msgid "Loading" msgstr "載入中" #: src/library.js:48 msgid "Failed to Load" msgstr "載入失敗" #: src/library.js:49 src/ui/book-viewer.ui:15 msgid "Reload" msgstr "重新載入" #: src/library.js:51 msgid "See All" msgstr "查看全部" #: src/library.js:52 src/ui/library.ui:124 src/ui/library.ui:182 msgid "Search" msgstr "搜尋" #: src/library.js:53 msgid "Filter" msgstr "篩選" #: src/library.js:55 src/library.js:57 msgid "Download" msgstr "下載" #: src/library.js:56 msgid "Buy" msgstr "購買" #: src/library.js:58 msgid "Preview" msgstr "預覽" #: src/library.js:59 msgid "Sample" msgstr "試讀" #: src/library.js:60 msgid "Borrow" msgstr "借閱" #: src/library.js:61 msgid "Subscribe" msgstr "訂閱" #: src/library.js:63 msgid "Free" msgstr "免費" #: src/library.js:65 msgid "First" msgstr "第一頁" #: src/library.js:66 src/ui/navbar.ui:8 src/ui/tts-box.ui:115 msgid "Previous" msgstr "上一頁" #: src/library.js:67 src/ui/navbar.ui:124 src/ui/tts-box.ui:132 msgid "Next" msgstr "下一頁" #: src/library.js:68 msgid "Last" msgstr "最後一頁" #: src/library.js:70 msgid "Search Terms" msgstr "搜尋詞彙" #: src/library.js:72 msgid "Title" msgstr "標題" #: src/library.js:73 msgid "Author" msgstr "作者" #: src/library.js:74 msgid "Contributor" msgstr "貢獻者" #: src/library.js:438 msgid "Remove Book?" msgstr "要移除書籍嗎?" #: src/library.js:439 msgid "Reading progress, annotations, and bookmarks will be permanently lost" msgstr "閱讀進度、註解和書籤將會永久被刪除" #: src/library.js:441 msgid "_Cancel" msgstr "取消(_C)" #: src/library.js:442 msgid "_Remove" msgstr "移除(_R)" #: src/library.js:472 msgid "Failed to Open" msgstr "開啟失敗" #: src/library.js:473 msgid "Could not open the file with the selected application" msgstr "無法使用所選擇的應用程式開啟檔案" #: src/library.js:644 msgid "Download Failed" msgstr "下載失敗" #: src/library.js:698 msgid "Rename…" msgstr "重新命名…" #: src/library.js:699 src/ui/book-item.ui:25 src/ui/book-row.ui:25 msgid "Remove" msgstr "移除" #: src/library.js:719 src/library.js:720 msgid "Rename" msgstr "重新命名" #: src/library.js:725 msgid "Name" msgstr "名稱" #: src/library.js:740 msgid "All Books" msgstr "所有書籍" #: src/library.js:746 msgid "Add Catalog…" msgstr "新增目錄…" #: src/library.js:813 src/ui/book-viewer.ui:130 src/ui/book-viewer.ui:239 #: src/ui/library.ui:93 msgid "Library" msgstr "書庫" #: src/library.js:821 msgid "Catalogs" msgstr "目錄" #: src/library.js:864 msgid "Catalog removed" msgstr "目錄已移除" #: src/library.js:951 src/library.js:956 msgid "Add Catalog" msgstr "新增目錄" #: src/library.js:952 msgid "Add" msgstr "新增" #: src/library.js:957 msgid "" "You can browse and download books from OPDS catalogs. Learn More…" msgstr "" "您可以從 OPDS 目錄瀏覽和下載書籍。了解更多…" #: src/library.js:961 msgid "URL" msgstr "網址" #. Translators: Do NOT translate! The is the application name! #: src/main.js:28 data/com.github.johnfactotum.Foliate.desktop.in:4 msgid "Foliate" msgstr "Foliate" #: src/selection-tools.js:33 msgid "Dictionary" msgstr "字典" #: src/selection-tools.js:37 msgid "" "From Wiktionary, released under the CC BY-SA License." msgstr "" "來自 維基詞典,以 CC BY-SA 授權條款釋出。" #: src/selection-tools.js:38 src/selection-tools.js:51 msgid "No Definitions Found" msgstr "找不到定義" #: src/selection-tools.js:39 msgid "Search on Wiktionary" msgstr "在維基詞典上搜尋" #: src/selection-tools.js:46 msgid "Wikipedia" msgstr "維基百科" #: src/selection-tools.js:50 msgid "" "From Wikipedia, released under the CC BY-SA License." msgstr "" "來自 維基百科,以 CC BY-SA 授權條款釋出。" #: src/selection-tools.js:52 msgid "Search on Wikipedia" msgstr "在維基百科上搜尋" #: src/selection-tools.js:59 msgid "Translate" msgstr "翻譯" #: src/selection-tools.js:65 msgid "Translation by Google Translate" msgstr "由 Google 翻譯提供翻譯" #: src/selection-tools.js:66 msgid "Cannot retrieve translation" msgstr "無法取得翻譯" #: src/selection-tools.js:67 msgid "Search…" msgstr "搜尋…" #: src/themes.js:8 msgid "Default" msgstr "預設" #: src/themes.js:13 msgid "Gray" msgstr "灰色" #: src/themes.js:18 msgid "Sepia" msgstr "棕褐色" #: src/themes.js:23 msgid "Grass" msgstr "草綠色" #: src/themes.js:28 msgid "Cherry" msgstr "櫻桃色" #: src/themes.js:33 msgid "Sky" msgstr "天藍色" #: src/themes.js:38 msgid "Solarized" msgstr "曬書紙" #: src/themes.js:43 msgid "Gruvbox" msgstr "復古盒" #: src/themes.js:48 msgid "Nord" msgstr "極光" #: src/tts.js:117 msgid "Text-to-Speech Error" msgstr "文字轉語音錯誤" #: src/tts.js:118 msgid "Make sure Speech Dispatcher is installed and working on your system" msgstr "請確認您的系統已安裝 Speech Dispatcher 且運作正常" #: src/utils.js:168 msgid "Copied to clipboard" msgstr "已複製到剪貼簿" #: src/ui/annotation-popover.ui:13 msgid "Highlight Style" msgstr "醒目顯示樣式" #: src/ui/annotation-popover.ui:20 src/ui/annotation-row.ui:63 #: src/ui/bookmark-row.ui:33 msgid "Delete" msgstr "刪除" #: src/ui/annotation-popover.ui:28 src/ui/book-item.ui:65 src/ui/book-row.ui:79 #: src/ui/image-viewer.ui:62 msgid "Menu" msgstr "選單" #: src/ui/annotation-popover.ui:47 msgid "Add Note…" msgstr "新增筆記…" #: src/ui/book-item.ui:5 src/ui/book-row.ui:5 msgid "Open in New Window" msgstr "在新視窗開啟" #: src/ui/book-item.ui:9 src/ui/book-row.ui:9 msgid "Open with External App" msgstr "使用外部應用程式開啟" #: src/ui/book-item.ui:19 src/ui/book-row.ui:19 src/ui/book-viewer.ui:25 msgid "Export Annotations…" msgstr "匯出註解…" #: src/ui/book-viewer.ui:5 msgid "New Window" msgstr "新視窗" #: src/ui/book-viewer.ui:11 msgid "Open a Copy" msgstr "開啟副本" #: src/ui/book-viewer.ui:21 msgid "Import Annotations…" msgstr "匯入註解…" #: src/ui/book-viewer.ui:37 src/ui/library.ui:42 msgid "About Foliate" msgstr "關於 Foliate" #: src/ui/book-viewer.ui:45 msgid "All Sections" msgstr "所有章節" #: src/ui/book-viewer.ui:50 msgid "Current Section" msgstr "目前章節" #: src/ui/book-viewer.ui:57 msgid "Match Whole Words Only" msgstr "只符合完整單字" #: src/ui/book-viewer.ui:61 msgid "Match Case" msgstr "區分大小寫" #: src/ui/book-viewer.ui:65 msgid "Match Diacritics" msgstr "符合變音符號" #: src/ui/book-viewer.ui:83 msgid "Font & Layout Settings" msgstr "字型與版面設定" #: src/ui/book-viewer.ui:89 msgid "Scrolled Mode" msgstr "捲動模式" #: src/ui/book-viewer.ui:93 msgid "Invert Colors in Dark Mode" msgstr "在深色模式反轉顏色" #: src/ui/book-viewer.ui:97 msgid "Autohide Cursor" msgstr "自動隱藏游標" #: src/ui/book-viewer.ui:103 msgid "Print…" msgstr "列印…" #: src/ui/book-viewer.ui:107 msgid "Inspector" msgstr "檢查器" #: src/ui/book-viewer.ui:167 msgid "Book Cannot Be Opened" msgstr "無法開啟書籍" #: src/ui/book-viewer.ui:177 msgid "Details" msgstr "詳細資訊" #: src/ui/book-viewer.ui:193 msgid "Open Another File…" msgstr "開啟其他檔案…" #: src/ui/book-viewer.ui:245 msgid "Pin Sidebar" msgstr "釘選側邊欄" #: src/ui/book-viewer.ui:253 msgid "Book Menu" msgstr "書籍選單" #: src/ui/book-viewer.ui:260 src/ui/selection-popover.ui:17 msgid "Find" msgstr "尋找" #: src/ui/book-viewer.ui:276 msgid "Find in book…" msgstr "在書中尋找…" #: src/ui/book-viewer.ui:313 msgid "Contents" msgstr "目錄" #: src/ui/book-viewer.ui:391 msgid "Annotations" msgstr "註解" #: src/ui/book-viewer.ui:403 msgid "Select some text to add annotations" msgstr "選取文字以新增註解" #: src/ui/book-viewer.ui:433 msgid "Filter annotations…" msgstr "篩選註解…" #: src/ui/book-viewer.ui:447 msgid "Bookmarks" msgstr "書籤" #: src/ui/book-viewer.ui:458 msgid "No Bookmarks" msgstr "無書籤" #: src/ui/book-viewer.ui:459 msgid "Add some bookmarks to see them here" msgstr "新增書籤後,它們會顯示在這裡" #: src/ui/book-viewer.ui:498 src/ui/library-view.ui:42 msgid "No Results Found" msgstr "找不到結果" #: src/ui/book-viewer.ui:499 src/ui/library-view.ui:43 msgid "Try a different search" msgstr "嘗試不同的搜尋" #: src/ui/book-viewer.ui:542 src/ui/library.ui:102 src/ui/library.ui:160 msgid "Sidebar" msgstr "側邊欄" #: src/ui/book-viewer.ui:556 msgid "View Menu" msgstr "檢視選單" #: src/ui/book-viewer.ui:569 src/ui/image-viewer.ui:41 msgid "Zoom Out" msgstr "縮小" #: src/ui/book-viewer.ui:576 src/ui/image-viewer.ui:48 msgid "Reset Zoom" msgstr "重設縮放" #: src/ui/book-viewer.ui:585 src/ui/image-viewer.ui:55 msgid "Zoom In" msgstr "放大" #: src/ui/book-viewer.ui:601 msgid "Follow System Style" msgstr "依照系統樣式" #: src/ui/book-viewer.ui:611 msgid "Light Style" msgstr "淺色樣式" #: src/ui/book-viewer.ui:621 msgid "Dark Style" msgstr "深色樣式" #: src/ui/book-viewer.ui:636 src/ui/library.ui:26 msgid "Fullscreen" msgstr "全螢幕" #: src/ui/export-dialog.ui:5 msgid "Export Annotations" msgstr "匯出註解" #: src/ui/export-dialog.ui:16 msgid "Export" msgstr "匯出" #: src/ui/export-dialog.ui:28 msgid "Format" msgstr "格式" #: src/ui/export-dialog.ui:29 msgid "Choose “JSON” if you plan on importing annotations back to Foliate" msgstr "如果您預計將註解匯回 Foliate,請選擇「JSON」" #: src/ui/export-dialog.ui:33 msgid "JSON" msgstr "JSON" #: src/ui/export-dialog.ui:34 msgid "HTML" msgstr "HTML" #: src/ui/export-dialog.ui:35 msgid "Markdown" msgstr "Markdown" #: src/ui/export-dialog.ui:36 msgid "Org Mode" msgstr "Org Mode" #: src/ui/image-viewer.ui:6 src/ui/navbar.ui:302 src/ui/selection-popover.ui:7 msgid "Copy" msgstr "複製" #: src/ui/image-viewer.ui:10 msgid "Save As…" msgstr "另存新檔…" #: src/ui/image-viewer.ui:25 msgid "Rotate 90° Counter-Clockwise" msgstr "逆時針旋轉 90 度" #: src/ui/image-viewer.ui:32 msgid "Rotate 90° Clockwise" msgstr "順時針旋轉 90 度" #: src/ui/import-dialog.ui:7 msgid "Import Annotations" msgstr "匯入註解" #: src/ui/import-dialog.ui:21 msgid "Import" msgstr "匯入" #: src/ui/import-dialog.ui:33 msgid "" "The identifier doesn’t match. These annotations may not be for this book." msgstr "識別碼不符。這些註解可能不屬於這本書。" #: src/ui/import-dialog.ui:34 msgid "Import Anyway" msgstr "仍要匯入" #: src/ui/library.ui:6 msgid "List View" msgstr "清單檢視" #: src/ui/library.ui:11 msgid "Grid View" msgstr "網格檢視" #: src/ui/library.ui:20 src/ui/library-view.ui:27 msgid "Open…" msgstr "開啟…" #: src/ui/library.ui:67 msgid "Main Menu" msgstr "主選單" #: src/ui/library.ui:110 msgid "Open" msgstr "開啟" #: src/ui/library.ui:117 msgid "Library Menu" msgstr "書庫選單" #: src/ui/library.ui:134 msgid "Search library…" msgstr "搜尋書庫…" #: src/ui/library.ui:168 src/ui/navbar.ui:22 msgid "Back" msgstr "返回" #: src/ui/library.ui:175 src/ui/navbar.ui:36 msgid "Forward" msgstr "往前" #: src/ui/library-view.ui:21 msgid "No Books Yet" msgstr "尚無書籍" #: src/ui/library-view.ui:22 msgid "Open a book to start reading" msgstr "開啟書籍以開始閱讀" #: src/ui/navbar.ui:62 src/ui/navbar.ui:253 msgid "Location" msgstr "位置" #: src/ui/navbar.ui:91 msgid "Narration" msgstr "朗讀" #: src/ui/navbar.ui:162 msgid "Time Left in Section" msgstr "章節剩餘時間" #: src/ui/navbar.ui:192 msgid "Time Left in Book" msgstr "全書剩餘時間" #: src/ui/navbar.ui:226 src/ui/view-preferences-window.ui:159 msgid "Page" msgstr "頁面" #: src/ui/navbar.ui:309 msgid "Paste and Go" msgstr "貼上並前往" #: src/ui/navbar.ui:322 msgid "Section" msgstr "章節" #: src/ui/navbar.ui:388 msgid "First Section" msgstr "第一章節" #: src/ui/navbar.ui:397 msgid "Previous Section" msgstr "上一章節" #: src/ui/navbar.ui:405 msgid "Jump To…" msgstr "跳至…" #: src/ui/navbar.ui:414 msgid "Next Section" msgstr "下一章節" #: src/ui/navbar.ui:423 msgid "Last Section" msgstr "最後一章節" #: src/ui/selection-popover.ui:12 msgid "Highlight" msgstr "醒目顯示" #: src/ui/selection-popover.ui:30 msgid "Speak from Here" msgstr "從這裡開始朗讀" #: src/ui/selection-popover.ui:36 msgid "Copy with Citation" msgstr "複製並加上引用" #: src/ui/selection-popover.ui:40 msgid "Copy Identifier" msgstr "複製識別碼" #: src/ui/selection-popover.ui:44 msgid "Print Selection…" msgstr "列印選取範圍…" #: src/ui/tts-box.ui:34 msgid "Speed" msgstr "速度" #: src/ui/tts-box.ui:67 msgid "Pitch" msgstr "音調" #: src/ui/tts-box.ui:123 msgid "Play/Pause" msgstr "播放/暫停" #: src/ui/tts-box.ui:141 msgid "Stop" msgstr "停止" #: src/ui/view-preferences-window.ui:5 msgid "Font" msgstr "字型" #: src/ui/view-preferences-window.ui:9 msgid "Font Size" msgstr "字型大小" #: src/ui/view-preferences-window.ui:12 msgid "Default Font Size" msgstr "預設字型大小" #: src/ui/view-preferences-window.ui:25 msgid "Minimum Font Size" msgstr "最小字型大小" #: src/ui/view-preferences-window.ui:40 msgid "Font Family" msgstr "字型家族" #: src/ui/view-preferences-window.ui:43 msgid "Default Font" msgstr "預設字型" #: src/ui/view-preferences-window.ui:47 msgid "Serif" msgstr "襯線體" #: src/ui/view-preferences-window.ui:48 msgid "Sans-serif" msgstr "無襯線體" #: src/ui/view-preferences-window.ui:56 msgid "Override Publisher Font" msgstr "覆蓋出版商字型" #: src/ui/view-preferences-window.ui:71 msgid "Serif Font" msgstr "襯線體字型" #: src/ui/view-preferences-window.ui:84 msgid "Sans-Serif Font" msgstr "無襯線體字型" #: src/ui/view-preferences-window.ui:97 msgid "Monospace Font" msgstr "等寬字型" #: src/ui/view-preferences-window.ui:114 msgid "Layout" msgstr "版面配置" #: src/ui/view-preferences-window.ui:118 msgid "Paragraph" msgstr "段落" #: src/ui/view-preferences-window.ui:121 msgid "Line Height" msgstr "行高" #: src/ui/view-preferences-window.ui:135 msgid "Full Justification" msgstr "左右對齊" #: src/ui/view-preferences-window.ui:146 msgid "Hyphenation" msgstr "連字號" #: src/ui/view-preferences-window.ui:162 msgid "Margins" msgstr "邊界" #: src/ui/view-preferences-window.ui:176 msgid "Maximum Number of Columns" msgstr "最大欄數" #: src/ui/view-preferences-window.ui:189 msgid "Maximum Inline Size" msgstr "最大內容寬度" #: src/ui/view-preferences-window.ui:190 msgid "Maximum column width (horizontal writing) or height (vertical writing)" msgstr "最大欄寬(橫書)或高度(直書)" #: src/ui/view-preferences-window.ui:203 msgid "Maximum Block Size" msgstr "最大區塊大小" #: src/ui/view-preferences-window.ui:204 msgid "Maximum height (horizontal writing) or width (vertical writing)" msgstr "最大高度(橫書)或寬度(直書)" #: src/ui/view-preferences-window.ui:221 msgid "Color" msgstr "顏色" #: src/ui/view-preferences-window.ui:240 msgid "Behavior" msgstr "行為" #: src/ui/view-preferences-window.ui:246 msgid "Reduce Animation" msgstr "減少動畫效果" #: data/com.github.johnfactotum.Foliate.desktop.in:5 msgid "E-Book Viewer" msgstr "電子書閱讀器" #. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! #: data/com.github.johnfactotum.Foliate.desktop.in:14 msgid "Ebook;Book;EPUB;Viewer;Reader;" msgstr "Ebook;Book;EPUB;Viewer;Reader;電子書;書;EPUB;檢視器;閱讀器;" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:10 msgid "" "Discover a new chapter in reading with Foliate, the modern e-book reader " "tailored for GNOME. Immerse yourself in a distraction-free interface, with " "customization features designed to match your unique preferences." msgstr "" "使用 Foliate 展開嶄新的閱讀篇章,這是一款為 GNOME 量身打造的現代化電子書閱讀器。" "讓您沉浸在無干擾的介面中,並提供可依您個人喜好設定的自訂功能。" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:11 msgid "Features include:" msgstr "功能特色:" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:13 msgid "Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files" msgstr "開啟 EPUB、Mobipocket、Kindle、FB2、CBZ 與 PDF 格式的檔案" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:14 msgid "Paginated mode and scrolled mode" msgstr "分頁模式與捲動模式" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:15 msgid "Customize font and line-spacing" msgstr "自訂字型與行距" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:16 msgid "Light, sepia, dark, and invert mode" msgstr "淺色、深褐色、深色與反轉顏色模式" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:17 msgid "Reading progress slider with chapter marks" msgstr "帶有章節標記的閱讀進度滑桿" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:18 msgid "Bookmarks and annotations" msgstr "書籤與註解" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:19 msgid "Find in book" msgstr "在書中尋找" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:20 msgid "Quick dictionary lookup" msgstr "字典速查" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:55 msgid "Fixed end of chapter cut off when chapter starts with page break" msgstr "修正章節以分頁符號開始時章節結尾會被截斷的問題" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:56 msgid "Fixed incorrect text wrapping in tables" msgstr "修正表格中不正確的文字換行" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:57 msgid "Fixed a performance issue with OPDS catalogs" msgstr "修正 OPDS 目錄的效能問題" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:64 msgid "Added support for OPDS catalogs, now with support for OPDS 2.0" msgstr "新增對 OPDS 目錄的支援,現在已支援 OPDS 2.0" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:65 msgid "Added option to override publisher font" msgstr "新增覆蓋出版商字型的選項" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:66 msgid "Added option to reduce animation" msgstr "新增減少動畫效果的選項" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:67 msgid "Added support for JPEG XL in CBZ" msgstr "新增對 CBZ 中 JPEG XL 格式的支援" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:68 msgid "Fixed getting file from Tracker in Flatpak" msgstr "修正從 Flatpak 中的 Tracker 取得檔案的問題" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:69 msgid "Fixed parsing of non-year-only first-century and BCE dates" msgstr "修正解析非僅年份的一世紀和西元前日期的問題" #: data/com.github.johnfactotum.Foliate.metainfo.xml.in:76 msgid "" "Foliate has been rewritten from scratch with a new e-book rendering library " "and the latest platform libraries, GTK 4 and Libadwaita, with refreshed UI " "and improved performance." msgstr "" "Foliate 已使用全新的電子書渲染及平台函式庫 GTK 4 與 Libadwaita 從頭開始重寫," "帶來煥然一新的使用者介面和效能提升。" #, fuzzy #~ msgid "Book" #~ msgstr "書籍選單" #, fuzzy #~ msgid "Viewer" #~ msgstr "檢視選單" #~ msgid "John Factotum" #~ msgstr "John Factotum" #, fuzzy #~ msgid "Reference" #~ msgstr "偏好設定" #, fuzzy #~ msgid "Go to Reference" #~ msgstr "偏好設定" #~ msgid "Keyboard Shortcuts" #~ msgstr "鍵盤快捷鍵" #~ msgid "Preferences" #~ msgstr "偏好設定" #~ msgid "Speak" #~ msgstr "朗讀" #~ msgid "Fold Sidebar" #~ msgstr "折疊側邊欄" #~ msgid "OK" #~ msgstr "確定" #, fuzzy #~ msgid "Voice" #~ msgstr "配音" #~ msgid "Start Speaking" #~ msgstr "開始朗讀" #~ msgid "Stop Speaking" #~ msgstr "停止朗讀" #~ msgid "Save File" #~ msgstr "儲存檔案" #, fuzzy #~ msgid "Choose highlight style" #~ msgstr "更改標示顏色" #~ msgid "More" #~ msgstr "更多" #, fuzzy #~ msgid "About this book" #~ msgstr "關於這本書" #, fuzzy #~ msgid "Toggle sidebar" #~ msgstr "使用側邊欄" #~ msgid "Restore zoom" #~ msgstr "重設縮放" #~ msgid "Go to previous page" #~ msgstr "前往上一頁" #~ msgid "Go back to previous location" #~ msgstr "返回先前位置" #, fuzzy #~ msgid "Go to next section" #~ msgstr "前往下一頁" #, fuzzy #~ msgid "Go to last section" #~ msgstr "前往位置" ================================================ FILE: snapcraft.yaml ================================================ name: foliate grade: stable adopt-info: foliate license: GPL-3.0+ base: core24 confinement: strict compression: lzo platforms: amd64: arm64: armhf: layout: /usr/lib/$CRAFT_ARCH_TRIPLET/webkitgtk-6.0: bind: $SNAP/webkitgtk-platform/usr/lib/$CRAFT_ARCH_TRIPLET/webkitgtk-6.0 slots: foliate: interface: dbus bus: session name: com.github.johnfactotum.Foliate plugs: webkitgtk-6-gnome-2404: interface: content target: $SNAP/webkitgtk-platform default-provider: webkitgtk-6-gnome-2404 apps: foliate: command: usr/bin/foliate extensions: - gnome plugs: - home - removable-media - network - network-status - unity7 - audio-playback desktop: usr/share/applications/com.github.johnfactotum.Foliate.desktop common-id: com.github.johnfactotum.Foliate environment: SPEECHD_ADDRESS: "unix_socket:/run/user/$SNAP_UID/speech-dispatcher/speechd.sock" LD_LIBRARY_PATH: $SNAP/webkitgtk-platform/usr/lib:$SNAP/webkitgtk-platform/usr/lib/$CRAFT_ARCH_TRIPLET:$LD_LIBRARY_PATH GI_TYPELIB_PATH: $SNAP/gnome-platform/usr/lib/$CRAFT_ARCH_TRIPLET/girepository-1.0:$SNAP/gnome-platform/usr/lib/$CRAFT_ARCH_TRIPLET/gjs/girepository-1.0:$SNAP/webkitgtk-platform/usr/lib/$CRAFT_ARCH_TRIPLET/girepository-1.0 parts: foliate: plugin: meson source: https://github.com/johnfactotum/foliate.git source-tag: '3.3.0' build-environment: - PKG_CONFIG_PATH: /snap/webkitgtk-6-gnome-2404-sdk/current/usr/lib/$CRAFT_ARCH_TRIPLET/pkgconfig:$PKG_CONFIG_PATH meson-parameters: - --prefix=/snap/foliate/current/usr override-pull: | craftctl default sed -i '1c#!/snap/foliate/current/gnome-platform/usr/bin/gjs -m' src/main.js build-packages: - xmlstarlet build-snaps: - webkitgtk-6-gnome-2404-sdk/latest/stable parse-info: - usr/share/metainfo/com.github.johnfactotum.Foliate.metainfo.xml organize: snap/foliate/current/usr: usr deps: plugin: nil stage-packages: - libspeechd2 # probably necessary, need testing prime: - usr/lib/*/libspeechd.so.* ================================================ FILE: src/annotations.js ================================================ import Gtk from 'gi://Gtk' import Adw from 'gi://Adw' import Gio from 'gi://Gio' import GObject from 'gi://GObject' import { gettext as _, ngettext } from 'gettext' import * as utils from './utils.js' import * as CFI from './foliate-js/epubcfi.js' import { vprintf, locales } from './format.js' const Bookmark = utils.makeDataClass('FoliateBookmark', { 'value': 'string', 'label': 'string', }) const Annotation = utils.makeDataClass('FoliateAnnotation', { 'value': 'string', 'color': 'string', 'text': 'string', 'note': 'string', 'created': 'string', 'modified': 'string', }) const AnnotationHeading = utils.makeDataClass('FoliateAnnotationHeading', { 'label': 'string', 'index': 'uint', 'subitems': 'object', }) const BookmarkRow = GObject.registerClass({ GTypeName: 'FoliateBookmarkRow', Template: pkg.moduleuri('ui/bookmark-row.ui'), Children: ['button'], InternalChildren: ['label', 'value'], }, class extends Gtk.Box { update({ value, label }) { this.value = value this.label = label this._label.label = label this._value.label = value } }) const dateFormat = new Intl.DateTimeFormat(locales, { year: 'numeric', month: 'short', day: 'numeric', hour: 'numeric', minute: 'numeric', }) const AnnotationRow = GObject.registerClass({ GTypeName: 'FoliateAnnotationRow', Template: pkg.moduleuri('ui/annotation-row.ui'), Children: ['button'], InternalChildren: ['heading', 'box', 'color', 'text', 'sep', 'note', 'bar', 'date'], Properties: utils.makeParams({ 'editable': 'boolean', }), }, class extends Gtk.Box { update(obj) { this.annotation = obj if (obj instanceof Annotation) { const { text, note, color } = obj this._text.label = text.trim().replace(/\n/g, ' ') this._note.label = note.trim().replace(/\n/g, ' ') this._color.update(color) this._heading.hide() this._box.show() const showNote = Boolean(note) this._sep.visible = showNote this._note.visible = showNote this._bar.show() const date = obj.modified || obj.created this._date.label = date ? dateFormat.format(new Date(date)) : '' this.margin_top = 6 this.margin_bottom = 6 } else { this._heading.label = obj.label this._heading.show() this._box.hide() this._sep.hide() this._note.hide() this._bar.hide() this.margin_top = 3 this.margin_bottom = 3 } } }) export const BookmarkModel = GObject.registerClass({ GTypeName: 'FoliateBookmarkModel', }, class extends Gio.ListStore { add(value, label) { const obj = new Bookmark({ value, label }) for (const [i, item] of utils.gliter(this)) { if (CFI.compare(value, item.value) <= 0) { this.insert(i, obj) return } } this.append(obj) } delete(value) { for (const [i, item] of utils.gliter(this)) if (item.value === value) { this.remove(i) break } } export() { return Array.from(utils.gliter(this), ([, item]) => item.value) } }) GObject.registerClass({ GTypeName: 'FoliateBookmarkView', Properties: utils.makeParams({ 'dir': 'string', 'has-items-in-view': 'boolean', }), Signals: { 'go-to-bookmark': { param_types: [GObject.TYPE_STRING] }, }, }, class extends Gtk.ListView { #location #inView = [] constructor(params) { super(params) this.connect('activate', (_, pos) => { const bookmark = this.model.model.get_item(pos) ?? {} if (bookmark) this.emit('go-to-bookmark', bookmark.value) }) this.factory = utils.connect(new Gtk.SignalListItemFactory(), { 'setup': (__, listItem) => { const row = new BookmarkRow() row.button.connect('clicked', () => { this.model.model.delete(row.value) this.root.add_toast(utils.connect(new Adw.Toast({ title: _('Bookmark deleted'), button_label: _('Undo'), }), { 'button-clicked': () => this.model.model.add(row.value, row.label) })) }) listItem.child = row }, 'bind': (_, listItem) => { listItem.child.update(listItem.item) utils.setDirection(listItem.child, this.dir) }, }) } setupModel(model) { this.model = new Gtk.NoSelection({ model }) } update(location = this.#location) { this.#location = location if (!this.model) return const { cfi } = location const start = CFI.collapse(cfi) const end = CFI.collapse(cfi, true) this.#inView = Array.from(utils.gliter(this.model.model), ([, bookmark]) => [bookmark, CFI.compare(start, bookmark.value) * CFI.compare(end, bookmark.value) <= 0]) .filter(([, x]) => x) this.set_property('has-items-in-view', this.#inView.length > 0) } toggle() { const inView = this.#inView const { model } = this.model if (inView.length) { const marks = inView.map(x => x[0]) for (const { value } of marks) model.delete(value) this.root.add_toast(utils.connect(new Adw.Toast({ title: _('Bookmark deleted'), button_label: _('Undo'), }), { 'button-clicked': () => marks.forEach(({ value, label }) => model.add(value, label)) })) } else model.add(this.#location.cfi, this.#location.tocItem?.label) } }) export const AnnotationModel = GObject.registerClass({ GTypeName: 'FoliateAnnotationModel', Signals: { 'update-annotation': { param_types: [Annotation.$gtype] }, }, }, class extends Gio.ListStore { #map = new Map() #lists = new Map() add(annotation, index, label) { const { value } = annotation if (this.#map.has(value)) return const obj = annotation instanceof Annotation ? new Annotation(annotation.toJSON()) : new Annotation(annotation) this.#map.set(value, obj) obj.connectAll(() => { obj.modified = new Date().toISOString() this.emit('update-annotation', obj) }) if (this.#lists.has(index)) { const list = this.#lists.get(index) for (const [i, item] of utils.gliter(list)) { if (CFI.compare(value, item.value) <= 0) { list.insert(i, obj) return } } list.append(obj) } else { const subitems = new Gio.ListStore() subitems.append(obj) this.#lists.set(index, subitems) const heading = new AnnotationHeading({ label, index, subitems }) for (const [i, item] of utils.gliter(this)) if (item.index > index) return this.insert(i, heading) this.append(heading) } } delete(annotation, index) { const { value } = annotation this.#map.delete(value) const list = this.#lists.get(index) for (const [i, item] of utils.gliter(list)) { if (item.value === value) { list.remove(i) if (!list.get_n_items()) { for (const [j, item] of utils.gliter(this)) if (item.subitems === list) { this.remove(j) this.#lists.delete(index) break } } break } } } get(value) { return this.#map.get(value) } getForIndex(index) { return this.#lists.get(index) } export() { return Array.from(utils.gliter(this), ([, item]) => Array.from(utils.gliter(item.subitems), ([, item]) => item)).flat() } }) GObject.registerClass({ GTypeName: 'FoliateAnnotationView', Properties: utils.makeParams({ 'dir': 'string', 'editable': 'boolean', }), Signals: { 'go-to-annotation': { param_types: [Annotation.$gtype] }, 'delete-annotation': { param_types: [Annotation.$gtype] }, }, }, class extends Gtk.ListView { #filter #location // don't scroll when activating, as that would mean it's already in view #shouldScroll = true constructor(params) { super(params) this.connect('activate', (_, pos) => { this.#shouldScroll = false const annotation = this.model.model.get_item(pos).item ?? {} if (annotation) this.emit('go-to-annotation', annotation) }) const handlers = new WeakMap() this.factory = utils.connect(new Gtk.SignalListItemFactory(), { 'setup': (_, listItem) => { const row = new AnnotationRow({ editable: this.editable }) row.button.connect('clicked', () => this.emit('delete-annotation', row.annotation)) listItem.child = new Gtk.TreeExpander({ indent_for_icon: false }) listItem.child.child = row }, 'bind': (_, listItem) => { const expander = listItem.child expander.list_row = listItem.item const annotation = listItem.item.item const widget = expander.child widget.update(annotation) handlers.set(listItem, annotation.connectAll(() => widget.update(annotation))) if (annotation.subitems) { expander.remove_css_class('card') expander.remove_css_class('activatable') expander.add_css_class('dim-label') } else { expander.add_css_class('card') expander.add_css_class('activatable') expander.remove_css_class('dim-label') } utils.setDirection(expander, this.dir) }, 'unbind': (_, listItem) => utils.disconnect(listItem.item.item, handlers.get(listItem)), }) // XXX: `scroll_to()` doesn't work until after the list view is shown // or rather, not even then; probably a GTK bug? const handler = this.connect('map', () => { this.disconnect(handler) if (this.#location) // horrible hack but it's better than nothing I guess setTimeout(() => this.scrollToCFI(this.#location.cfi), 100) }) } setupModel(model) { const tree = Gtk.TreeListModel .new(model, false, true, item => item.subitems ?? null) this.#filter = new Gtk.FilterListModel({ model: tree }) this.model = new Gtk.NoSelection({ model: this.#filter }) if (this.#location) this.scrollToCFI(this.#location.cfi) } filter(query) { query = query?.trim()?.toLowerCase() const filter = new Gtk.CustomFilter() filter.set_filter_func(query ? row => { const { item } = row const { text, color, note } = item return [text, color, note].some(x => x?.toLowerCase()?.includes(query)) } : null) this.#filter.filter = filter } #scrollToIndex(i) { if (i >= 0) this.scroll_to(i, Gtk.ListScrollFlags.NONE, null) } scrollToCFI(cfi) { for (const [i, item] of utils.gliter(this.#filter)) if (item.item.value && CFI.compare(cfi, item.item.value) <= 0) return this.#scrollToIndex(i) return this.#scrollToIndex(this.#filter.get_n_items() - 1) } update(location) { if (!this.#filter) { this.#location = location return } if (!this.#shouldScroll) { this.#shouldScroll = true this.#location = location return } if (this.#location.cfi === location.cfi) return this.scrollToCFI(location.cfi) this.#location = location } }) const AnnotationColor = utils.makeDataClass('FoliateAnnotationColor', { 'label': 'string', 'value': 'string', 'type': 'string', }) const colorImageIcons = { underline: 'format-text-underline-symbolic', squiggly: 'text-squiggly-symbolic', strikethrough: 'format-text-strikethrough-symbolic', } const AnnotationColorImage = GObject.registerClass({ GTypeName: 'FoliateAnnotationColorImage', }, class extends Gtk.Stack { #icon = new Gtk.Image() #frame = new Gtk.Frame({ width_request: 16, height_request: 16, valign: Gtk.Align.CENTER, }) constructor(params) { super(params) this.add_child(this.#icon) this.add_child(this.#frame) } update(color) { const icon = color ? colorImageIcons[color] : 'color-select-symbolic' if (icon) { this.#icon.icon_name = icon this.visible_child = this.#icon } else { utils.addStyle(this.#frame, `frame { background: ${utils.RGBA(color).to_string()}; }`) this.visible_child = this.#frame } } }) const AnnotationColorRow = GObject.registerClass({ GTypeName: 'FoliateAnnotationColorRow', Properties: utils.makeParams({ 'dropdown': 'object', }), }, class extends Gtk.Box { #color #image = new AnnotationColorImage() #label = new Gtk.Label() #checkmark = new Gtk.Image({ visible: false, icon_name: 'object-select-symbolic', }) constructor(params) { super(params) this.spacing = 6 this.append(this.#image) this.append(this.#label) this.append(this.#checkmark) if (this.dropdown) this.dropdown.connect('notify::selected-item', dropdown => this.#checkmark.visible = dropdown.selected_item === this.#color) } update(color) { this.#color = color this.#image.update(color.value) this.#label.label = color.label this.#checkmark.visible = this.dropdown?.selected_item === color } }) GObject.registerClass({ GTypeName: 'FoliateAnnotationColorDropDown', Signals: { 'color-changed': { param_types: [GObject.TYPE_STRING] }, }, }, class extends Gtk.DropDown { #prevSelected constructor(params) { super(params) this.model = utils.list([ { label: _('Underline'), value: 'underline' }, { label: _('Squiggly'), value: 'squiggly' }, { label: _('Strikethrough'), value: 'strikethrough' }, { label: _('Yellow'), value: 'yellow' }, { label: _('Orange'), value: 'orange' }, { label: _('Red'), value: 'red' }, { label: _('Magenta'), value: 'magenta' }, { label: _('Aqua'), value: 'aqua' }, { label: _('Lime'), value: 'lime' }, { label: _('Custom Color…'), type: 'choose' }, ], AnnotationColor) this.factory = utils.connect(new Gtk.SignalListItemFactory(), { 'setup': (_, listItem) => listItem.child = new AnnotationColorRow(), 'bind': (_, { child, item }) => child.update(item), }) this.list_factory = utils.connect(new Gtk.SignalListItemFactory(), { 'setup': (_, listItem) => listItem.child = new AnnotationColorRow({ dropdown: this }), 'bind': (_, { child, item }) => child.update(item), }) this.connect('notify::selected-item', () => { const selected = this.selected const item = this.selected_item if (item.type === 'choose') { new Gtk.ColorDialog().choose_rgba(this.root, null, null, (self, res) => { try { const color = self.choose_rgba_finish(res).to_string() this.selectColor(color) this.emit('color-changed', color) } catch (e) { if (e instanceof Gtk.DialogError) console.debug(e) else console.error(e) this.selected = this.#prevSelected } }) } else { this.emit('color-changed', item.value) this.#prevSelected = selected } }) } selectColor(color) { const { model } = this for (const [i, item] of utils.gliter(model)) { if (item.value === color) { this.selected = i return } // if there's already an item for custom color, use it if (item.type === 'custom') { item.value = color this.selected = i return } } // create item for custom color const i = model.get_n_items() - 1 model.insert(i, new AnnotationColor({ label: _('Custom'), value: color, type: 'custom', })) this.selected = i } }) export const AnnotationPopover = GObject.registerClass({ GTypeName: 'FoliateAnnotationPopover', Template: pkg.moduleuri('ui/annotation-popover.ui'), Properties: utils.makeParams({ 'annotation': 'object', }), Signals: { 'delete-annotation': {}, 'select-annotation': {}, 'color-changed': { param_types: [GObject.TYPE_STRING] }, }, InternalChildren: ['stack', 'button', 'text-view', 'drop-down'], }, class extends Gtk.Popover { #isAddingNote constructor(params) { super(params) this.insert_action_group('annotation', utils.addMethods(this, { actions: ['add-note', 'delete', 'more'], })) this._drop_down.selectColor(this.annotation.color) this._text_view.buffer.text = this.annotation.note this.#updateStack() this._drop_down.connect('color-changed', (_, color) => { this.annotation.set_property('color', color) this.emit('color-changed', color) }) this._text_view.buffer.connect('changed', buffer => { this.#updateStack() this.annotation.set_property('note', buffer.text) }) } #updateStack() { const { buffer } = this._text_view this._stack.visible_child = this.#isAddingNote || buffer.text ? this._text_view.parent : this._button if (buffer.text) this.#isAddingNote = true } addNote() { this.#isAddingNote = true this._stack.visible_child = this._text_view.parent this._text_view.grab_focus() } delete() { this.emit('delete-annotation') this.popdown() } more() { this.emit('select-annotation') this.popdown() } }) const ImportDialog = GObject.registerClass({ GTypeName: 'FoliateImportDialog', Template: pkg.moduleuri('ui/import-dialog.ui'), Children: ['annotation-view'], InternalChildren: ['cancel-button', 'ok-button', 'banner'], Properties: utils.makeParams({ 'identifier-mismatch': 'boolean', }), Signals: { 'response': {}, }, }, class extends Adw.Window { constructor(params) { super(params) const respond = () => { this.emit('response') this.close() } this._ok_button.connect('clicked', respond) this._banner.connect('button-clicked', respond) this._cancel_button.connect('clicked', () => this.close()) this.add_controller(utils.addShortcuts({ 'Escape|w': () => this.close() })) } close() { super.close() this.run_dispose() } }) export const importAnnotations = (window, data) => { const dialog = new Gtk.FileDialog() const filter = new Gtk.FileFilter({ name: _('JSON Files'), mime_types: ['application/json'], }) dialog.filters = new Gio.ListStore() dialog.filters.append(new Gtk.FileFilter({ name: _('All Files'), patterns: ['*'], })) dialog.filters.append(filter) dialog.default_filter = filter dialog.open(window, null, (__, res) => { try { const file = dialog.open_finish(res) const json = utils.readJSONFile(file) if (!json.annotations?.length) return window.error(_('No Annotations'), _('The imported file has no annotations')) const importDialog = new ImportDialog({ identifier_mismatch: !(json.metadata?.identifier === data.key), transient_for: window, }) const model = new Gio.ListStore() importDialog.annotation_view.setupModel(model) importDialog.show() const annotations = json.annotations.map(item => { const annotation = new Annotation(item) model.append(annotation) return annotation }) importDialog.connect('response', () => data.addAnnotations(annotations)) } catch (e) { if (e instanceof Gtk.DialogError) console.debug(e) else { console.error(e) window.error(_('Cannot Import Annotations'), _('An error occurred')) } } }) } export const exportAnnotations = (window, data) => { const n = data.annotations?.length if (!(n > 0)) return window.error(_('No Annotations'), _('You don’t have any annotations for this book')) const path = pkg.modulepath('ui/export-dialog.ui') const builder = pkg.useResource ? Gtk.Builder.new_from_resource(path) : Gtk.Builder.new_from_file(path) const dialog = builder.get_object('export-dialog') dialog.transient_for = window dialog.present() builder.get_object('ok-button').connect('clicked', () => { const { selected } = builder.get_object('format-combo') const format = ['json', 'html', 'md', 'org'][selected] const { metadata = {} } = data const title = vprintf(_('Annotations for “%s”'), [metadata.title]) const total = vprintf(ngettext('%d Annotation', '%d Annotations', n), [n]) new Gtk.FileDialog({ initial_name: title + '.' + format }) .save(window, null, (self, res) => { try { const file = self.save_finish(res) const contents = exportFunctions[format](data, title, total) file.replace_contents(contents, null, false, Gio.FileCreateFlags.REPLACE_DESTINATION, null) } catch (e) { if (e instanceof Gtk.DialogError) console.debug(e) else console.error(e) } }) dialog.close() }) builder.get_object('cancel-button').connect('clicked', () => dialog.close()) dialog.add_controller(utils.addShortcuts({ 'Escape|w': () => dialog.close() })) } const htmlEscape = str => str.replace(/[<>&]/g, x => x === '<' ? '<' : x === '>' ? '>' : '&') const mdEscape = str => str.replace(/[<>&]/g, x => '\\' + x) const exportFunctions = { json: data => JSON.stringify(data, null, 2), html: ({ annotations }, title, total) => ` ${title}

${title}

${total}

${ annotations.map(({ value, text, color, note }) => `

${htmlEscape(value)}

${htmlEscape(text)}
${note ? `

${htmlEscape(note)}

` : ''}
`).join('')}`, md: ({ annotations }, title, total) => `# ${title}\n\n${total}${ annotations.map(({ value, text, color, note }) => ` --- **${color}** - \`${value}\` > ${mdEscape(text)}${note ? '\n\n' + mdEscape(note) : ''}`).join('')}`, org: ({ annotations }, title, total) => `* ${title} ${total} ${annotations.map(({ value, text, color, note }) => ` ----- *${color}* - \`${value}\` #+begin_quote ${text} #+end_quote ${note} `)} `, } ================================================ FILE: src/app.js ================================================ import Gtk from 'gi://Gtk' import Adw from 'gi://Adw' import GObject from 'gi://GObject' import GLib from 'gi://GLib' import Gio from 'gi://Gio' import Gdk from 'gi://Gdk' import WebKit from 'gi://WebKit' import { gettext as _, ngettext } from 'gettext' import { vprintf } from './format.js' import * as utils from './utils.js' import { Library } from './library.js' import { BookViewer, importFiles } from './book-viewer.js' const formatVersion = (a, b, c) => `${a ?? '?'}.${b ?? '?'}.${c ?? '?'}` const getImportVersion = lib => formatVersion(lib.MAJOR_VERSION, lib.MINOR_VERSION, lib.MICRO_VERSION) const getGJSVersion = () => { const [a, b, c, d, e] = imports.system.version.toString() return formatVersion(a, b + c, d + e) } const getDebugInfo = () => { try { return `System: ${GLib.get_os_info('NAME') ?? 'Unknown'} ${GLib.get_os_info('VERSION') ?? GLib.get_os_info('BUILD_ID') ?? ''} Desktop: ${GLib.getenv('XDG_CURRENT_DESKTOP') ?? 'Unknown'} Session: ${GLib.getenv('XDG_SESSION_DESKTOP') ?? 'UNknown'} (${GLib.getenv('XDG_SESSION_TYPE') ?? 'Unknown'}) Language: ${GLib.getenv('LANG') ?? 'Unknown'} Versions: - Foliate ${pkg.version} - GJS ${getGJSVersion()} - GTK ${getImportVersion(Gtk)} - Adwaita ${getImportVersion(imports.gi.Adw)} - GLib ${getImportVersion(GLib)} - WebKitGTK ${getImportVersion(WebKit)} User directories: - ${GLib.get_user_data_dir()} - ${GLib.get_user_cache_dir()} ` } catch (e) { console.error(e) return '' } } const makeOpenDialog = () => { const dialog = new Gtk.FileDialog() const ebooks = new Gtk.FileFilter({ name: _('E-Book Files'), mime_types: [ 'application/epub+zip', 'application/x-mobipocket-ebook', 'application/vnd.amazon.mobi8-ebook', 'application/x-mobi8-ebook', 'application/x-fictionbook+xml', 'application/x-zip-compressed-fb2', 'application/vnd.comicbook+zip', ], }) dialog.filters = new Gio.ListStore() dialog.filters.append(new Gtk.FileFilter({ name: _('All Files'), patterns: ['*'], })) dialog.filters.append(ebooks) dialog.default_filter = ebooks return dialog } const ApplicationWindow = GObject.registerClass({ GTypeName: 'FoliateApplicationWindow', Properties: utils.makeParams({ 'file': 'object', }), }, class extends Adw.ApplicationWindow { #library #bookViewer #stack = new Gtk.Stack() #cookie constructor(params) { super(params) Object.assign(this, { handle_menubar_accel: false, title: pkg.localeName, default_width: 1200, default_height: 750, content: new Adw.ToastOverlay({ child: this.#stack }), }) const styleManager = Adw.StyleManager.get_default() if (styleManager.dark) this.add_css_class('is-dark') const handler = styleManager.connect('notify::dark', ({ dark }) => { if (dark) this.add_css_class('is-dark') else this.remove_css_class('is-dark') }) this.connect('destroy', () => styleManager.disconnect(handler)) utils.addMethods(this, { actions: [ 'open', 'open-or-import', 'close', 'show-library', 'show-menu', 'new-window', 'open-copy', ], props: ['fullscreened'], }) utils.bindSettings('window', this, ['default-width', 'default-height', 'maximized', 'fullscreened']) this.connect('notify::fullscreened', (win) => { let app = Gio.Application.get_default() if (this.is_fullscreen()) { this.#cookie = app.inhibit(win, Gtk.ApplicationInhibitFlags.IDLE, 'Reading book in fullscreen') if (this.#cookie == 0) console.error('Failed to inhibit session idle') } else if (this.#cookie > 0) { app.uninhibit(this.#cookie) } }) if (this.file) this.openFile(this.file) else this.showLibrary() } add_toast(toast) { this.content.add_toast(toast) } error(heading, body) { const dialog = new Adw.AlertDialog({ heading, body, }) dialog.add_response('close', _('Close')) dialog.present(this) } actionDialog() { const window = new Adw.Window({ modal: true, transient_for: this.root, content: new Adw.ToolbarView(), default_width: 400, }) window.add_controller(utils.addShortcuts({ 'Escape|w': () => window.close() })) const header = new Adw.HeaderBar({ show_title: false, show_start_title_buttons: false, show_end_title_buttons: false, }) header.pack_start(utils.connect(new Gtk.Button({ label: _('Cancel'), }), { 'clicked': () => window.close() })) const button = utils.addClass(new Gtk.Button(), 'suggested-action') header.pack_end(button) window.content.add_top_bar(header) return { button, window } } openFile(file) { this.file = file if (!this.#bookViewer) { this.#bookViewer = new BookViewer() this.#stack.add_child(this.#bookViewer) } this.#stack.transition_type = Gtk.StackTransitionType.SLIDE_LEFT this.#stack.visible_child = this.#bookViewer this.#bookViewer.open(file) } openOPDS(uri) { this.showLibrary() this.#library.showCatalog(uri) } open() { const dialog = makeOpenDialog() dialog.open(this, null, (_, res) => { try { const file = dialog.open_finish(res) this.openFile(file) } catch (e) { if (e instanceof Gtk.DialogError) console.debug(e) else console.error(e) } }) } openOrImport() { const dialog = makeOpenDialog() dialog.open_multiple(this, null, (_, res) => { try { const files = dialog.open_multiple_finish(res) if (files.get_n_items() === 1) this.openFile(files.get_item(0)) else importFiles(Array.from(utils.gliter(files), x => x[1])) .then(results => { const map = Map.groupBy(results, x => x[1] instanceof Error) const n = map.get(true)?.length if (n) { const title = vprintf(ngettext( 'Failed to import %d book', 'Failed to import %d books', n), [n]) this.add_toast(new Adw.Toast({ title })) } else { const m = map.get(false).length const title = vprintf(ngettext( 'Imported %d book', 'Imported %d books', m), [m]) this.add_toast(new Adw.Toast({ title })) } }) .catch(e => { const title = _('Could not import books') this.add_toast(new Adw.Toast({ title })) console.error(e) }) } catch (e) { if (e instanceof Gtk.DialogError) console.debug(e) else console.error(e) } }) } showLibrary() { this.file = null this.title = pkg.localeName if (!this.#library) { this.#library = new Library() this.#stack.add_child(this.#library) } this.#stack.transition_type = Gtk.StackTransitionType.SLIDE_RIGHT this.#stack.visible_child = this.#library if (this.#bookViewer) { this.#stack.remove(this.#bookViewer) this.#bookViewer = null } } showMenu() { if (this.#bookViewer) this.#bookViewer.showPrimaryMenu() } addWindow(file) { const { application } = this const win = new ApplicationWindow({ application, file }) new Gtk.WindowGroup().add_window(win) win.present() } newWindow() { this.addWindow(null) } openCopy() { this.addWindow(this.file) } }) export const Application = GObject.registerClass({ GTypeName: 'FoliateApplication', }, class extends Adw.Application { constructor(params) { super(params) this.application_id = pkg.name this.flags = Gio.ApplicationFlags.HANDLES_OPEN utils.addMethods(this, { actions: ['about', 'quit'], signals: ['startup', 'activate', 'open', 'window-removed'], }) for (const [key, val] of Object.entries({ 'app.quit': ['q'], 'app.about': ['F1'], 'win.close': ['w'], 'win.fullscreened': ['F11'], 'win.show-menu': ['F10'], 'win.open': ['o'], 'win.open-copy': ['n'], })) this.set_accels_for_action(key, val) } connectStartup() { const settings = utils.settings() if (settings) { const styleManager = Adw.StyleManager.get_default() styleManager.color_scheme = settings.get_int('color-scheme') styleManager.connect('notify::color-scheme', () => settings.set_int('color-scheme', styleManager.color_scheme)) } const theme = Gtk.IconTheme.get_for_display(Gdk.Display.get_default()) if (pkg.useResource) theme.add_resource_path(pkg.modulepath('/icons')) else theme.add_search_path(pkg.modulepath('/icons')) const cssProvider = new Gtk.CssProvider() cssProvider.load_from_data(` gridview { padding: 12px; } /* remove flowboxchild padding so things align better when mixing flowbox and other widgets; why does Adwaita has flowboxchild padding, anyway? there's already row-/column-spacing, plus you can set margin */ flowboxchild { padding: 0; } .large-button { padding: 6px; } .small-button { transform: scale(.7); } .chips button { border-radius: 9999px; } checkbutton.theme-selector { padding: 0; min-height: 44px; min-width: 44px; padding: 1px; background-clip: content-box; border-radius: 9999px; box-shadow: inset 0 0 0 1px @borders; } checkbutton.theme-selector:checked { box-shadow: inset 0 0 0 2px @theme_selected_bg_color; } checkbutton.theme-selector.follow { background-image: linear-gradient(to bottom right, #fff 49.99%, #202020 50.01%); } checkbutton.theme-selector.light { background-color: #fff; } checkbutton.theme-selector.dark { background-color: #202020; } checkbutton.theme-selector radio { -gtk-icon-source: none; border: none; background: none; box-shadow: none; min-width: 12px; min-height: 12px; transform: translate(27px, 14px); padding: 2px; } checkbutton.theme-selector radio:checked { -gtk-icon-source: -gtk-icontheme("object-select-symbolic"); background-color: @theme_selected_bg_color; color: @theme_selected_fg_color; } .card-sidebar { padding: 8px; } .card-sidebar .card { padding: 6px 12px 6px 0; } .card-sidebar .card:dir(rtl) { padding: 6px 0 6px 12px; } .card-sidebar row { margin: 4px 0; } .card-sidebar, .card-sidebar row.activatable { background-color: transparent; } .card-sidebar.flat-list .card { padding: 6px 12px; } .book-image-frame { box-shadow: 0 6px 12px rgba(0, 0, 0, .15); } .book-image-frame-small { box-shadow: 0 3px 6px rgba(0, 0, 0, .15); border-radius: 6px; } .book-image-full { box-shadow: 0 0 0 1px rgba(0, 0, 0, .1); } .overlaid windowcontrols > button > image { background: rgba(0, 0, 0, .5); color: #fff; } .overlaid windowcontrols > button:hover > image { background: rgba(40, 40, 40, .5); } .overlaid windowcontrols > button:active > image { background: rgba(60, 60, 60, .5); } .book-list { background: transparent; } .book-list row { margin-top: -1px; border-top: 1px solid @borders; } /* set min-width to 1px, so we can have variable width progress bars a la Kindle */ progress, trough { min-width: 1px; } `, -1) Gtk.StyleContext.add_provider_for_display( Gdk.Display.get_default(), cssProvider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION) } connectActivate(application) { if (this.activeWindow) { this.activeWindow.present() return } const win = new ApplicationWindow({ application }) new Gtk.WindowGroup().add_window(win) win.present() } connectOpen(application, files) { const oldWins = this.get_windows() file: for (const file of files) { if (file.get_uri_scheme() === 'opds') { const oldWin = oldWins.find(win => !win.file) const uri = file.get_uri() if (oldWin) oldWin.openOPDS(uri) else { const win = new ApplicationWindow({ application }) new Gtk.WindowGroup().add_window(win) win.openOPDS(uri) win.present() } continue } else for (const oldWin of oldWins) { if (oldWin.file?.get_uri() === file.get_uri()) { oldWin.present() continue file } } const win = new ApplicationWindow({ application, file }) new Gtk.WindowGroup().add_window(win) win.present() } } connectWindowRemoved(application, window) { // this seems to be needed for destroying the web view window.run_dispose() } about() { const win = new Adw.AboutDialog({ application_name: pkg.localeName, application_icon: pkg.name, version: pkg.version, comments: _('Read e-books in style'), developer_name: 'John Factotum', developers: ['John Factotum'], artists: ['John Factotum', 'Tobias Bernard '], // Translators: put your names here, one name per line // they will be shown in the "About" dialog translator_credits: _('translator-credits'), license_type: Gtk.License.GPL_3_0, website: 'https://johnfactotum.github.io/foliate/', issue_url: 'https://github.com/johnfactotum/foliate/issues', support_url: 'https://github.com/johnfactotum/foliate/blob/gtk4/docs/faq.md', debug_info: getDebugInfo(), }) win.add_link(_('Source Code'), 'https://github.com/johnfactotum/foliate') win.add_legal_section('foliate-js', null, Gtk.License.MIT_X11, null) win.add_legal_section('zip.js', 'Copyright © 2022 Gildas Lormeau', Gtk.License.BSD_3, null) win.add_legal_section('fflate', 'Copyright © 2020 Arjun Barrett', Gtk.License.MIT_X11, null) win.add_legal_section('PDF.js', '©Mozilla and individual contributors', Gtk.License.APACHE_2_0, null) win.present(this.active_window) } }) ================================================ FILE: src/book-info.js ================================================ import Gtk from 'gi://Gtk' import Adw from 'gi://Adw' import Pango from 'gi://Pango' import { gettext as _ } from 'gettext' import * as utils from './utils.js' import * as format from './format.js' export const formatLanguageMap = x => { if (!x) return '' if (typeof x === 'string') return x const keys = Object.keys(x) return /*x[format.matchLocales(keys)[0]] ??*/ x[keys[0]] } const formatContributors = contributors => Array.isArray(contributors) ? format.list(contributors.map(contributor => typeof contributor === 'string' ? contributor : formatLanguageMap(contributor?.name))) : typeof contributors === 'string' ? contributors : formatLanguageMap(contributors?.name) export const formatAuthors = metadata => metadata?.author ? formatContributors(metadata.author) : metadata?.creator // compat with previous versions ?? '' const makePropertyBox = (title, value) => { const box = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL, spacing: 3, }) box.append(utils.addClass(new Gtk.Label({ xalign: 0, wrap: true, label: title, }), 'caption-heading')) box.append(new Gtk.Label({ margin_bottom: 6, xalign: 0, wrap: true, selectable: true, label: value, wrap_mode: Pango.WrapMode.WORD_CHAR, })) return box } const makeSubjectBox = subject => { const box = new Gtk.Box({ spacing: 6 }) box.append(new Gtk.Image({ icon_name: 'tag-symbolic', valign: Gtk.Align.START, })) box.append(utils.addClass(new Gtk.Label({ xalign: 0, wrap: true, selectable: true, label: formatContributors(subject) || subject?.code, valign: Gtk.Align.START, }), 'caption')) return box } const makeBookHeader = (metadata, pixbuf) => { const box = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL, spacing: 6, hexpand: true, }) box.append(utils.addClass(new Gtk.Label({ xalign: 0, wrap: true, selectable: true, label: formatLanguageMap(metadata.title), }), 'title-2')) if (metadata.subtitle) box.append(utils.addClass(new Gtk.Label({ xalign: 0, wrap: true, selectable: true, label: formatLanguageMap(metadata.subtitle), }), 'title-4')) box.append(new Gtk.Label({ xalign: 0, wrap: true, selectable: true, label: formatAuthors(metadata), })) if (!pixbuf) return box const box2 = new Gtk.Box({ spacing: 18 }) const frame = new Gtk.Frame() frame.add_css_class('book-image-frame') const picture = new Gtk.Picture({ focusable: true, height_request: 180 }) picture.set_pixbuf(pixbuf) frame.child = picture box2.append(frame) box2.append(box) return box2 } const makeBookInfoBox = (metadata, pixbuf) => { const box = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL, spacing: 6, }) box.append(makeBookHeader(metadata, pixbuf)) if (metadata.description) box.append(new Gtk.Label({ xalign: 0, wrap: true, use_markup: true, selectable: true, margin_top: 12, label: metadata.description, })) box.append(new Gtk.Box({ vexpand: true })) const flowbox = new Gtk.FlowBox({ selection_mode: Gtk.SelectionMode.NONE, row_spacing: 12, column_spacing: 18, margin_top: 12, margin_bottom: 6, }) box.append(flowbox) for (const [title, value] of [ [_('Publisher'), formatContributors(metadata.publisher)], // Translators: this is the heading for the publication date [_('Published'), format.date(metadata.published)], // Translators: this is the heading for the modified date [_('Updated'), format.date(metadata.modified)], [_('Language'), format.language(metadata.language)], [_('Translated by'), formatContributors(metadata.translator)], [_('Edited by'), formatContributors(metadata.editor)], [_('Narrated by'), formatContributors(metadata.narrator)], [_('Illustrated by'), formatContributors(metadata.illustrator)], [_('Produced by'), formatContributors(metadata.producer)], [_('Artwork by'), formatContributors(metadata.artist)], [_('Color by'), formatContributors(metadata.colorist)], [_('Contributors'), formatContributors(metadata.contributor)], [_('Identifier'), metadata.identifier], ]) { if (!value) continue if (value.length > 30) box.append(makePropertyBox(title, value)) else flowbox.insert(makePropertyBox(title, value), -1) } if (metadata.subject?.length) { const subjectsBox = new Gtk.FlowBox({ selection_mode: Gtk.SelectionMode.NONE, row_spacing: 3, column_spacing: 12, margin_top: 12, }) box.append(subjectsBox) for (const subject of [].concat(metadata.subject)) subjectsBox.insert(makeSubjectBox(subject), -1) } if (metadata.rights) box.append(utils.addClass(new Gtk.Label({ margin_top: 12, xalign: 0, wrap: true, selectable: true, label: metadata.rights, }), 'caption', 'dim-label')) return new Adw.Clamp({ child: box }) } export const makeBookInfoWindow = (root, metadata, pixbuf, bigCover) => { const wide = root.get_width() > 800 const win = new Adw.Window({ title: _('About This Book'), width_request: 320, height_request: 300, default_width: bigCover && pixbuf ? (wide ? 800 : 320) : 420, default_height: bigCover && pixbuf ? (wide ? 540 : 640) : pixbuf ? 540 : 420, modal: true, transient_for: root, }) const infobox = Object.assign(makeBookInfoBox(metadata, bigCover ? null : pixbuf), { margin_bottom: 18, margin_start: 18, margin_end: 18, }) const scrolled = new Gtk.ScrolledWindow({ hexpand: true, vexpand: true, width_request: 320, }) const toolbarView = new Adw.ToolbarView({ content: scrolled }) const headerbar = new Adw.HeaderBar({ show_title: false }) toolbarView.add_top_bar(headerbar) if (bigCover && pixbuf) { headerbar.add_css_class('overlaid') toolbarView.extend_content_to_top_edge = true const picture = new Gtk.Picture({ content_fit: Gtk.ContentFit.COVER, focusable: true, }) picture.add_css_class('book-image-full') picture.set_pixbuf(pixbuf) const innerBox = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL, spacing: 18, }) innerBox.append(picture) innerBox.append(infobox) scrolled.child = innerBox scrolled.child.vscroll_policy = Gtk.ScrollablePolicy.NATURAL const outerBox = new Gtk.Box() outerBox.append(toolbarView) win.content = outerBox win.add_breakpoint(utils.connect(new Adw.Breakpoint({ condition: Adw.BreakpointCondition.parse( 'min-width: 540px and min-aspect-ratio: 5/4'), }), { 'apply': () => { innerBox.remove(picture) outerBox.prepend(picture) picture.grab_focus() headerbar.decoration_layout = ':close' headerbar.remove_css_class('overlaid') toolbarView.extend_content_to_top_edge = false }, 'unapply': () => { outerBox.remove(picture) innerBox.prepend(picture) headerbar.decoration_layout = null headerbar.add_css_class('overlaid') toolbarView.extend_content_to_top_edge = true }, })) } else { scrolled.child = infobox win.content = toolbarView } win.add_controller(utils.addShortcuts({ 'Escape|w': () => win.close() })) win.show() } ================================================ FILE: src/book-viewer.js ================================================ import Gtk from 'gi://Gtk' import Adw from 'gi://Adw' import GLib from 'gi://GLib' import Gio from 'gi://Gio' import GObject from 'gi://GObject' import WebKit from 'gi://WebKit' import Gdk from 'gi://Gdk' import Pango from 'gi://Pango' import { gettext as _ } from 'gettext' import * as utils from './utils.js' import * as format from './format.js' import { WebView } from './webview.js' import './toc.js' import './search.js' import './navbar.js' import { AnnotationPopover, importAnnotations, exportAnnotations } from './annotations.js' import { SelectionPopover } from './selection-tools.js' import { ImageViewer } from './image-viewer.js' import { formatLanguageMap, formatAuthors, makeBookInfoWindow } from './book-info.js' import { themes, invertTheme, themeCssProvider } from './themes.js' import { dataStore, BookData } from './data.js' // for use in the WebView const uiText = { loc: _('Loc. %s of %s'), page: _('Page %s of %s'), pageWithoutTotal: _('Page %s'), close: _('Close'), references: { 'footnote': _('Footnote'), 'footnote-go': _('Go to Footnote'), 'endnote': _('Endnote'), 'endnote-go': _('Go to Endnote'), 'note': _('Note'), 'note-go': _('Go to Note'), 'glossary': _('Definition'), 'glossary-go': _('Go to Definition'), 'biblioentry': _('Bibliography'), 'biblioentry-go': _('Go to Bibliography'), }, } const userStylesheet = utils.readFile(Gio.File.new_for_path( pkg.configpath('user-stylesheet.css'))) const ViewSettings = utils.makeDataClass('FoliateViewSettings', { 'brightness': 'double', 'line-height': 'double', 'justify': 'boolean', 'hyphenate': 'boolean', 'gap': 'double', 'max-inline-size': 'uint', 'max-block-size': 'uint', 'max-column-count': 'uint', 'scrolled': 'boolean', 'animated': 'boolean', 'invert': 'boolean', 'theme': 'string', 'autohide-cursor': 'boolean', 'override-font': 'boolean', }) const FontSettings = utils.makeDataClass('FoliateFontSettings', { 'serif': 'string', 'sans-serif': 'string', 'monospace': 'string', 'default': 'uint', 'default-size': 'double', 'minimum-size': 'double', }) const getFamily = str => Pango.FontDescription.from_string(str).get_family() const ViewPreferencesWindow = GObject.registerClass({ GTypeName: 'FoliateViewPreferencesWindow', Template: pkg.moduleuri('ui/view-preferences-window.ui'), Properties: utils.makeParams({ 'font-settings': 'object', 'view-settings': 'object', }), InternalChildren: [ 'default-font', 'override-font', 'serif-font', 'sans-serif-font', 'monospace-font', 'default-font-size', 'minimum-font-size', 'line-height', 'justify', 'hyphenate', 'gap', 'max-inline-size', 'max-block-size', 'max-column-count', 'theme-flow-box', 'reduce-animation', ], }, class extends Adw.PreferencesDialog { constructor(params) { super(params) this.font_settings.bindProperties({ 'serif': [this._serif_font, 'font'], 'sans-serif': [this._sans_serif_font, 'font'], 'monospace': [this._monospace_font, 'font'], 'default': [this._default_font, 'selected'], 'default-size': [this._default_font_size, 'value'], 'minimum-size': [this._minimum_font_size, 'value'], }) this.viewSettings.bindProperties({ 'line-height': [this._line_height, 'value'], 'justify': [this._justify, 'active'], 'hyphenate': [this._hyphenate, 'active'], 'gap': [this._gap, 'value'], 'max-inline-size': [this._max_inline_size, 'value'], 'max-block-size': [this._max_block_size, 'value'], 'max-column-count': [this._max_column_count, 'value'], 'animated': [this._reduce_animation, 'active', true], 'override-font': [this._override_font, 'active'], }) const actionGroup = utils.addPropertyActions(this.viewSettings, ['theme']) this.insert_action_group('view-settings', actionGroup) let group = null for (const theme of themes) { const widget = new Gtk.Box({ spacing: 6 }) const check = new Gtk.CheckButton({ group, action_name: 'view-settings.theme', action_target: new GLib.Variant('s', theme.name), }) group ??= check const label = new Gtk.Label({ label: theme.label, hexpand: true, }) widget.append(check) widget.append(label) widget.add_css_class(theme.id) widget.add_css_class('card') this._theme_flow_box.append(widget) } const styleManager = Adw.StyleManager.get_default() if (styleManager.dark) this.add_css_class('is-dark') const handler = styleManager.connect('notify::dark', ({ dark }) => { if (dark) this.add_css_class('is-dark') else this.remove_css_class('is-dark') }) this.connect('destroy', () => styleManager.disconnect(handler)) } }) GObject.registerClass({ GTypeName: 'FoliateBookView', Signals: { 'book-ready': { param_types: [GObject.TYPE_JSOBJECT] }, 'book-error': { param_types: [GObject.TYPE_JSOBJECT] }, 'dialog-open': { param_types: [GObject.TYPE_JSOBJECT] }, 'dialog-close': { param_types: [GObject.TYPE_JSOBJECT] }, 'relocate': { param_types: [GObject.TYPE_JSOBJECT] }, 'external-link': { param_types: [GObject.TYPE_JSOBJECT] }, 'selection': { param_types: [GObject.TYPE_JSOBJECT] }, 'create-overlay': { param_types: [GObject.TYPE_JSOBJECT] }, 'add-annotation': { param_types: [GObject.TYPE_JSOBJECT] }, 'delete-annotation': { param_types: [GObject.TYPE_JSOBJECT] }, 'show-image': { param_types: [GObject.TYPE_JSOBJECT] }, 'show-selection': { param_types: [GObject.TYPE_JSOBJECT], return_type: GObject.TYPE_JSOBJECT, }, }, }, class extends Gtk.Overlay { #path #webView = utils.connect(new WebView({ settings: new WebKit.Settings({ enable_write_console_messages_to_stdout: true, enable_developer_extras: true, enable_back_forward_navigation_gestures: false, enable_hyperlink_auditing: false, enable_html5_database: false, enable_html5_local_storage: false, enable_smooth_scrolling: false, }), // needed for playing media overlay website_policies: new WebKit.WebsitePolicies({ autoplay: WebKit.AutoplayPolicy.ALLOW, }), }), { 'run-file-chooser': (_, req) => (req.select_files([encodeURI(this.#path)]), true), 'context-menu': this.#contextMenu.bind(this), }) #bookReady = false #pinchFactor = 1 #dialogOpened = false fontSettings = new FontSettings({ 'serif': 'Serif 12', 'sans-serif': 'Sans 12', 'monospace': 'Monospace 12', 'default': 'serif', 'default-size': 16, }) viewSettings = new ViewSettings({ 'brightness': 1, 'line-height': 1.5, 'justify': true, 'hyphenate': true, 'gap': 0.06, 'max-inline-size': 720, 'max-block-size': 1440, 'max-column-count': 2, 'scrolled': false, 'animated': true, }) constructor(params) { super(params) this.child = this.#webView const initSelection = this.#webView.provide('showSelection', payload => this.emit('show-selection', payload)) this.#webView.registerHandler('viewer', payload => { if (payload.type === 'ready') { this.#exec('init', { uiText }) initSelection() } else if (payload.type === 'pinch-zoom') this.#pinchFactor = payload.scale else if (payload.type === 'history-index-change') { this.actionGroup.lookup_action('back').enabled = payload.canGoBack this.actionGroup.lookup_action('forward').enabled = payload.canGoForward } else this.emit(payload.type, payload) }) this.connect('book-ready', () => this.#bookReady = true) this.connect('dialog-open', () => this.#dialogOpened = true) this.connect('dialog-close', () => this.#dialogOpened = false) // handle scroll events let isDiscrete = true, dxLast, dyLast const scrollPageAsync = utils.debounce((dx, dy) => { if (Math.abs(dx) > Math.abs(dy)) { if (dx > 0) return this.goRight() else if (dx < 0) return this.goLeft() } else { if (dy > 0) return this.next() else if (dy < 0) return this.prev() } }, 100, true) this.#webView.add_controller(utils.connect(new Gtk.EventControllerScroll({ flags: Gtk.EventControllerScrollFlags.BOTH_AXES, }), { 'scroll-begin': () => isDiscrete = false, 'scroll': (_, dx, dy) => { if (this.#pinchFactor > 1 || this.viewSettings.scrolled || this.#dialogOpened) return false if (isDiscrete) scrollPageAsync(dx, dy) else { dxLast = dx dyLast = dy this.#exec('reader.scrollBy', [dx, dy]) } return true }, 'scroll-end': () => { if (dxLast != null) this.#exec('reader.snap', [dxLast, dyLast]) isDiscrete = false dxLast = null dyLast = null }, })) // Mouse Forward/Backward const gestureForward = new Gtk.GestureClick() const gestureBack = new Gtk.GestureClick() gestureForward.set_button(9) gestureBack.set_button(8) this.#webView.add_controller(utils.connect(gestureForward,{ 'pressed': () => this.#exec('reader.view.history.forward'), })) this.#webView.add_controller(utils.connect(gestureBack,{ 'pressed': () => this.#exec('reader.view.history.back'), })) const applyStyle = () => this.#applyStyle().catch(e => console.error(e)) this.viewSettings.connectAll(applyStyle) this.fontSettings.connectAll(applyStyle) this.connect('book-ready', applyStyle) this.#webView.connect('notify::zoom-level', webView => { const z = webView.zoom_level this.actionGroup.lookup_action('zoom-out').enabled = z > 0.2 this.actionGroup.lookup_action('zoom-in').enabled = z < 4 }) this.actionGroup = utils.addMethods(this, { actions: [ 'reload', 'inspector', 'prev', 'next', 'go-left', 'go-right', 'scroll-up', 'scroll-down', 'prev-section', 'next-section', 'first-section', 'last-section', 'back', 'forward', 'zoom-in', 'zoom-restore', 'zoom-out', 'print', ], }) utils.addPropertyActions(this.viewSettings, this.viewSettings.keys, this.actionGroup) this.actionGroup.lookup_action('back').enabled = false this.actionGroup.lookup_action('forward').enabled = false } #exec(...args) { return this.#webView.exec(...args).catch(e => console.error(e)) } async #applyStyle() { const font = this.fontSettings Object.assign(this.#webView.get_settings(), { serif_font_family: getFamily(font.serif), sans_serif_font_family: getFamily(font.sans_serif), monospace_font_family: getFamily(font.monospace), default_font_family: getFamily(font.default === 1 ? font.sans_serif : font.serif), default_font_size: font.default_size, // TODO: disable this for fixed-layout minimum_font_size: font.minimum_size, }) if (!this.#bookReady) return const view = this.viewSettings const theme = themes.find(theme => theme.name === view.theme) ?? themes[0] await this.#exec('reader.setAppearance', { layout: { gap: view.gap, maxInlineSize: view.max_inline_size, maxBlockSize: view.max_block_size, maxColumnCount: view.max_column_count, flow: view.scrolled ? 'scrolled' : 'paginated', animated: view.animated, }, style: { lineHeight: view.line_height, justify: view.justify, hyphenate: view.hyphenate, invert: view.invert, theme: view.invert ? invertTheme(theme) : theme, overrideFont: view.override_font, userStylesheet, }, autohideCursor: view.autohide_cursor, }) } #contextMenu() { return true } open(file) { this.#bookReady = false if (file) this.#path = file.get_path() this.#webView.loadURI('foliate:///reader/reader.html') .catch(e => console.error(e)) } reload() { this.open() } zoomIn() { this.#webView.zoom_level += 0.1 } zoomOut() { this.#webView.zoom_level -= 0.1 } zoomRestore() { this.#webView.zoom_level = 1 } inspector() { this.#webView.get_inspector().show() } getRect({ x, y }) { const factor = this.#pinchFactor * this.#webView.zoom_level return new Gdk.Rectangle({ x: factor * x, y: factor * y }) } showPopover(popover, point, dir) { this.add_overlay(popover) popover.connect('closed', () => utils.wait(0).then(() => { this.remove_overlay(popover) this.deselect() })) popover.position = dir === 'up' ? Gtk.PositionType.TOP : Gtk.PositionType.BOTTOM popover.pointing_to = this.getRect(point) popover.popup() } showRibbon(x) { return this.#webView.run(`document.querySelector('#ribbon').style.visibility = '${x ? 'visible' : 'hidden'}'`).catch(e => console.error(e)) } goTo(x) { return this.#exec('reader.view.goTo', x) } goToFraction(x) { return this.#exec('reader.view.goToFraction', x) } select(x) { return this.#exec('reader.view.select', x) } deselect() { return this.#exec('reader.view.deselect') } getTOCItemOf(x) { return this.#exec('reader.view.getTOCItemOf', x) } prev() { return this.#exec('reader.view.prev') } next() { return this.#exec('reader.view.next') } goLeft() { return this.#exec('reader.view.goLeft') } goRight() { return this.#exec('reader.view.goRight') } get #scrollDistance() { return this.fontSettings.default_size * this.viewSettings.line_height * 3 } scrollUp() { return this.#exec('reader.view.prev', this.#scrollDistance) } scrollDown() { return this.#exec('reader.view.next', this.#scrollDistance) } // TODO: these should push history prevSection() { return this.#exec('reader.view.renderer.prevSection') } nextSection() { return this.#exec('reader.view.renderer.nextSection') } firstSection() { return this.#exec('reader.view.renderer.firstSection') } lastSection() { return this.#exec('reader.view.renderer.lastSection') } back() { return this.#exec('reader.view.history.back') } forward() { return this.#exec('reader.view.history.forward') } search(x) { return this.#webView.iter('reader.view.search', x) } clearSearch() { return this.#webView.iter('reader.view.clearSearch') } showAnnotation(x) { return this.#exec('reader.view.showAnnotation', x) } addAnnotation(x) { return this.#exec('reader.view.addAnnotation', x) } deleteAnnotation(x) { return this.#exec('reader.view.deleteAnnotation', x) } print() { return this.#exec('reader.print') } initTTS(x) { return this.#exec('reader.view.initTTS', x) } ttsStart() { return this.#exec('reader.view.tts.start') } ttsPrev(x) { return this.#exec('reader.view.tts.prev', x) } ttsNext(x) { return this.#exec('reader.view.tts.next', x) } ttsResume() { return this.#exec('reader.view.tts.resume') } ttsSetMark(x) { return this.#exec('reader.view.tts.setMark', x) } mediaOverlayStart() { return this.#exec('reader.view.startMediaOverlay') } mediaOverlayPause() { return this.#exec('reader.view.mediaOverlay.pause') } mediaOverlayResume() { return this.#exec('reader.view.mediaOverlay.resume') } mediaOverlayStop() { return this.#exec('reader.view.mediaOverlay.stop') } mediaOverlayPrev() { return this.#exec('reader.view.mediaOverlay.prev') } mediaOverlayNext() { return this.#exec('reader.view.mediaOverlay.next') } mediaOverlaySetVolume(x) { return this.#exec('reader.view.mediaOverlay.setVolume', x) } mediaOverlaySetRate(x) { return this.#exec('reader.view.mediaOverlay.setRate', x) } getCover() { return this.#exec('reader.getCover').then(utils.base64ToPixbuf) } init(x) { return this.#exec('reader.view.init', x) } get webView() { return this.#webView } grab_focus() { return this.#webView.grab_focus() } }) const autohide = (revealer, shouldStayVisible) => { const show = () => revealer.reveal_child = true const hide = () => revealer.reveal_child = false const sync = () => revealer.reveal_child = shouldStayVisible() revealer.add_controller(utils.connect( new Gtk.EventControllerMotion(), { 'enter': show, 'leave': sync })) revealer.add_controller(utils.connect( new Gtk.GestureClick(), { 'pressed': show })) return { show, hide, sync } } const makeIdentifier = file => { try { const stream = file.read(null) // 10000000 might not be the best value but I guess we will stick to it // for compatibility with previous versions const bytes = stream.read_bytes(10000000, null) const md5 = GLib.compute_checksum_for_bytes(GLib.ChecksumType.MD5, bytes) return `foliate:${md5}` } catch(e) { console.warn(e) return null } } export const importFiles = files => { let currentFile let resolveFile, rejectFile const webView = utils.connect(new WebView({ settings: new WebKit.Settings({ enable_write_console_messages_to_stdout: true, enable_html5_database: false, enable_html5_local_storage: false, }), }), { 'run-file-chooser': (_, req) => (req.select_files([encodeURI(currentFile.get_path())]), true), }) const save = async book => { book.metadata.identifier ||= makeIdentifier(currentFile) const { identifier } = book.metadata if (!identifier) throw new Error('Could not get identifier') const data = new BookData(identifier) data.storage.set('metadata', book.metadata, false) data.saveURI(currentFile) const cover = await webView.exec('reader.getCover').then(utils.base64ToPixbuf) if (cover) data.saveCover(cover) data.storage.saveNow() } const open = async file => { currentFile = file await webView.exec('loadFile') await new Promise((resolve, reject) => { resolveFile = resolve rejectFile = reject }) } return new Promise((resolve, reject) => { webView.registerHandler('viewer', payload => { if (payload.type === 'ready') webView.exec('initImport') .then(async () => { let results = [] for (const file of files) { const result = open(file) .then(() => true) .catch(e => new Error(e, { cause: e })) results.push([file, await result]) } resolve(results) }) .catch(reject) else if (payload.type === 'book-error') rejectFile(payload.id) else if (payload.type === 'book-ready') save(payload.book).then(resolveFile).catch(rejectFile) }) webView.loadURI('foliate:///reader/reader.html').catch(reject) }).finally(() => { webView.run_dispose() }) } export const BookViewer = GObject.registerClass({ GTypeName: 'FoliateBookViewer', Template: pkg.moduleuri('ui/book-viewer.ui'), Properties: utils.makeParams({ 'fold-sidebar': 'boolean', 'highlight-color': 'string', }), InternalChildren: [ 'top-overlay-box', 'top-overlay-stack', 'error-page', 'error-page-expander', 'error-page-details', 'view', 'flap', 'breakpoint-bin', 'sidebar', 'resize-handle', 'headerbar-revealer', 'navbar-revealer', 'book-menu-button', 'bookmark-button', 'view-popover', 'zoom-button', 'navbar', 'library-button', 'pin-button', 'sidebar-stack', 'contents-stack', 'contents-stack-switcher', 'toc-view', 'search-view', 'search-bar', 'search-entry', 'annotation-stack', 'annotation-view', 'annotation-search-entry', 'bookmark-stack', 'bookmark-view', 'book-info', 'book-cover', 'book-title', 'book-author', ], }, class extends Gtk.Overlay { #file #book #cover #data constructor(params) { super(params) utils.connect(this._view, { 'book-error': (_, x) => this.#onError(x), 'book-ready': (_, x) => this.#onBookReady(x).catch(e => console.error(e)), 'relocate': (_, x) => this.#onRelocate(x), 'external-link': (_, x) => new Gtk.UriLauncher({ uri: x.href }).launch(this.root, null, null), 'selection': (_, x) => this.#onSelection(x), 'create-overlay': (_, x) => this.#createOverlay(x), 'show-image': (_, x) => this.#showImage(x), 'show-selection': (_, x) => this.#showSelection(x), 'dialog-open': () => { this._headerbar_revealer.visible = false this._navbar_revealer.visible = false }, 'dialog-close': () => { this._headerbar_revealer.visible = true this._navbar_revealer.visible = true }, }) this.highlight_color = 'yellow' utils.bindSettings('viewer', this, ['fold-sidebar', 'highlight-color']) this._view.fontSettings.bindSettings('viewer.font') this._view.viewSettings.bindSettings('viewer.view') this._view.webView.connect('notify::zoom-level', webView => this._zoom_button.label = format.percent(webView.zoom_level)) this._zoom_button.label = format.percent(this._view.webView.zoom_level) Gtk.StyleContext.add_provider_for_display(Gdk.Display.get_default(), themeCssProvider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION) let lastThemeClass const recolorUI = view => { const theme = themes.find(theme => theme.name === view.theme) ?? themes[0] const name = theme.id if (lastThemeClass) { this._sidebar.parent.remove_css_class('sidebar-' + lastThemeClass) this._headerbar_revealer.get_first_child().remove_css_class(lastThemeClass) this._navbar_revealer.get_first_child().remove_css_class(lastThemeClass) } this._sidebar.parent.add_css_class('sidebar-' + name) this._headerbar_revealer.get_first_child().add_css_class(name) this._navbar_revealer.get_first_child().add_css_class(name) lastThemeClass = name } recolorUI(this._view.viewSettings) this._view.viewSettings.connect('notify::theme', recolorUI) // sidebar let breakpointApplied this._breakpoint_bin.add_breakpoint(utils.connect(new Adw.Breakpoint({ // min sidebar width (defaults to 180) + min page width (360) = 540 condition: Adw.BreakpointCondition.parse('max-width: 540px'), }), { 'apply': () => { breakpointApplied = true this._flap.collapsed = true this._pin_button.hide() }, 'unapply': () => { breakpointApplied = false this._flap.collapsed = this.fold_sidebar this._pin_button.show() }, })) const setFoldSidebar = () => this._flap.collapsed = breakpointApplied || this.fold_sidebar this.connect('notify::fold-sidebar', setFoldSidebar) setFoldSidebar() this._resize_handle.cursor = Gdk.Cursor.new_from_name('col-resize', null) this._resize_handle.add_controller(utils.connect(new Gtk.GestureDrag(), { 'drag-update': (_, x) => { if (this._flap.collapsed) { this._flap.max_sidebar_width += x } else { const sidebarWidth = this._sidebar.get_width() + x const totalWidth = this.get_width() this._flap.sidebar_width_fraction = Math.max(0, Math.min(1, sidebarWidth / totalWidth)) } }, })) const onSidebarCollapsedChanged = flap => flap.max_sidebar_width = flap.collapsed ? 300 : 360 onSidebarCollapsedChanged(this._flap) utils.connect(this._flap, { 'notify::collapsed': onSidebarCollapsedChanged, 'notify::show-sidebar': flap => (flap.show_sidebar ? this._library_button : this._view).grab_focus(), }) // revealers const autohideHeaderbar = autohide(this._headerbar_revealer, () => this._view_popover.visible) const autohideNavbar = autohide(this._navbar_revealer, () => this._navbar.shouldStayVisible) this._view_popover.connect('closed', autohideHeaderbar.hide) this._bookmark_button.connect('clicked', autohideHeaderbar.hide) this._navbar.connect('closed', autohideNavbar.hide) this._navbar.connect('opened', autohideNavbar.show) this._view.webView.add_controller(utils.connect(new Gtk.GestureClick(), { 'pressed': () => { autohideHeaderbar.hide() autohideNavbar.hide() }, })) // search this._search_view.getGenerator = params => this._view.search(params) utils.connect(this._search_view, { 'show-results': () => this._sidebar_stack.visible_child_name = 'search', 'no-results': () => this._sidebar_stack.visible_child_name = 'search-empty', 'clear-results': () => this._view.clearSearch(), 'show-cfi': (_, cfi) => { this._view.select(cfi) if (this._flap.collapsed) this._flap.show_sidebar = false }, }) this.insert_action_group('search', this._search_view.actionGroup) this._search_bar.connect_entry(this._search_entry) this._search_bar.connect('notify::search-mode-enabled', () => { this._search_view.reset().catch(e => console.error(e)) this._sidebar_stack.visible_child_name = 'main' }) this._sidebar_stack.connect('notify::visible-child-name', stack => this._contents_stack_switcher.visible = stack.visible_child_name === 'main') utils.connect(this._search_entry, { 'activate': this._search_view.doSearch, 'changed': entry => entry.secondary_icon_name = entry.text ? 'edit-clear-symbolic' : '', 'icon-release': (entry, pos) => pos === Gtk.EntryIconPosition.SECONDARY ? entry.text = '' : null, }) this._search_entry.add_controller(utils.addShortcuts({ 'Escape': () => this._search_bar.search_mode_enabled = false })) // navigation this._toc_view.connect('go-to-href', (_, href) => { this._view.goTo(href) if (this._flap.collapsed) this._flap.show_sidebar = false this._view.grab_focus() }) this._navbar.connect('go-to-cfi', (_, x) => this._view.goTo(x)) this._navbar.connect('go-to-section', (_, x) => this._view.goTo(x)) this._navbar.connect('go-to-fraction', (_, x) => this._view.goToFraction(x)) // annotations utils.connect(this._bookmark_view, { 'notify::has-items': view => this._bookmark_stack .visible_child_name = view.has_items ? 'main' : 'empty', 'notify::has-items-in-view': view => { const b = view.has_items_in_view this._view.showRibbon(b) Object.assign(this._bookmark_button, { visible: true, icon_name: b ? 'bookmark-filled-symbolic' : 'bookmark-new-symbolic', tooltip_text: b ? _('Remove bookmark') : _('Add bookmark'), }) }, 'go-to-bookmark': (_, target) => { this._view.goTo(target) if (this._flap.collapsed) this._flap.show_sidebar = false }, }) utils.connect(this._annotation_view, { 'go-to-annotation': (_, annotation) => { this._view.showAnnotation(annotation) if (this._flap.collapsed) this._flap.show_sidebar = false }, 'delete-annotation': (_, annotation) => this.#deleteAnnotation(annotation), }) this._annotation_search_entry.connect('search-changed', entry => this._annotation_view.filter(entry.text)) // TTS utils.connect(this._navbar.tts_box, { 'init': () => this._view.initTTS(), 'start': () => this._view.ttsStart(), 'resume': () => this._view.ttsResume(), 'backward': () => this._view.ttsPrev(), 'forward': () => this._view.ttsNext(), 'backward-paused': () => this._view.ttsPrev(true), 'forward-paused': () => this._view.ttsNext(true), 'highlight': (_, mark) => this._view.ttsSetMark(mark), // FIXME: check if at end 'next-section': () => this._view.next().then(() => true), }) utils.connect(this._navbar.media_overlay_box, { 'start': () => this._view.mediaOverlayStart(), 'pause': () => this._view.mediaOverlayPause(), 'resume': () => this._view.mediaOverlayResume(), 'stop': () => this._view.mediaOverlayStop(), 'backward': () => this._view.mediaOverlayPrev(), 'forward': () => this._view.mediaOverlayNext(), 'notify::volume': box => this._view.mediaOverlaySetVolume(box.volume), 'notify::rate': box => this._view.mediaOverlaySetRate(box.rate), }) // setup actions const actions = utils.addMethods(this, { actions: [ 'toggle-sidebar', 'toggle-search', 'show-location', 'toggle-toc', 'toggle-annotations', 'toggle-bookmarks', 'preferences', 'help-overlay', 'show-info', 'bookmark', 'export-annotations', 'import-annotations', ], props: ['fold-sidebar'], }) utils.addPropertyActions(Adw.StyleManager.get_default(), ['color-scheme'], actions) this.insert_action_group('view', this._view.actionGroup) this.insert_action_group('viewer', actions) const shortcuts = { 'F9': 'viewer.toggle-sidebar', 'f|slash': 'viewer.toggle-search', 'l': 'viewer.show-location', 'i|Return': 'viewer.show-info', 't': 'viewer.toggle-toc', 'a': 'viewer.toggle-annotations', 'd': 'viewer.toggle-bookmarks', 'd': 'viewer.bookmark', 'comma': 'viewer.preferences', 'question': 'viewer.help-overlay', 'g': 'search.prev', 'g': 'search.next', 'c': 'selection.copy', 'f': 'selection.search', 'F12': 'view.inspector', 'm': 'view.scrolled', 'r|F5': 'view.reload', 'plus|equal|KP_Add|KP_Equal|plus|equal|KP_Add|KP_Equal': 'view.zoom-in', 'minus|KP_Subtract|minus|KP_Subtract': 'view.zoom-out', '0|1|KP_0|0|KP_0': 'view.zoom-restore', 'p|Page_Up|KP_Page_Up|space': 'view.prev', 'n|Page_Down|KP_Page_Down|space': 'view.next', 'k|Up|KP_Up': 'view.scroll-up', 'j|Down|KP_Down': 'view.scroll-down', 'h|Left|KP_Left': 'view.go-left', 'l|Right|KP_Right': 'view.go-right', 'Left|KP_Left': 'view.back', 'Right|KP_Right': 'view.forward', 'p': 'view.print', } this.add_controller(utils.addShortcuts(shortcuts)) // TODO: disable these when pinch zoomed this._view.webView.add_controller(utils.addShortcuts(shortcuts)) } #onError({ id, message, stack }) { const desc = id === 'not-found' ? _('File not found') : id === 'unsupported-type' ? _('File type not supported') : _('An error occurred') this._error_page.description = desc if (message) { this._error_page_details.label = 'Error: ' + (message ?? '') + '\n' + (stack ?? '') this._error_page_expander.show() } else this._error_page_expander.hide() this._top_overlay_box.show() this._top_overlay_stack.visible_child_name = 'error' } async #onBookReady({ book, reader }) { this._top_overlay_box.hide() this.#book = book book.metadata ??= {} this._book_title.label = formatLanguageMap(book.metadata.title) this._book_author.label = formatAuthors(book.metadata) this._book_author.visible = !!this._book_author.label this.root.title = this._book_title.label const { language: { direction } } = reader.view utils.setDirection(this._book_info, direction) for (const x of [ this._search_view, this._toc_view, this._annotation_view, this._bookmark_view, ]) { utils.setDirection(x.parent, direction) x.dir = direction } this._toc_view.load(book.toc) this._navbar.setDirection(book.dir) this._navbar.loadSectionFractions(reader.sectionFractions) this._navbar.loadPageList(book.pageList, reader.pageTotal) this._navbar.loadLandmarks(book.landmarks) this._navbar.setTTSType(book.media?.duration ? 'media-overlay' : 'tts') const cover = await this._view.getCover() this.#cover = cover if (cover) { this._book_cover.set_from_pixbuf(cover) this._book_cover.show() } else { this._book_cover.hide() } book.metadata.identifier ||= makeIdentifier(this.#file) const { identifier } = book.metadata if (identifier) { this.#data = await dataStore.get(identifier, this._view) const { annotations, bookmarks } = this.#data this._annotation_view.setupModel(annotations) this._bookmark_view.setupModel(bookmarks) const updateAnnotations = () => this._annotation_stack .visible_child_name = annotations.n_items > 0 ? 'main' : 'empty' const updateBookmarks = () => { this._bookmark_view.update() this._bookmark_stack.visible_child_name = bookmarks.n_items > 0 ? 'main' : 'empty' } utils.connectWith(this, annotations, { 'notify::n-items': updateAnnotations }) utils.connectWith(this, bookmarks, { 'notify::n-items': updateBookmarks }) updateAnnotations() updateBookmarks() this.#data.storage.set('metadata', book.metadata) this.#data.saveURI(this.#file) if (cover) this.#data.saveCover(cover) } else await this._view.next() } #onRelocate(payload) { const { section, location, tocItem, cfi } = payload this._toc_view.setCurrent(tocItem?.id) this._search_view.index = section.current this._navbar.update(payload) this._bookmark_view.update(payload) this._annotation_view.update(payload) if (this.#data) { this.#data.storage.set('progress', [location.current, location.total]) this.#data.storage.set('lastLocation', cfi) } } #deleteAnnotation(annotation) { this.#data.deleteAnnotation(annotation) this.root.add_toast(utils.connect(new Adw.Toast({ title: _('Annotation deleted'), button_label: _('Undo'), }), { 'button-clicked': () => this.#data.addAnnotation(annotation) })) } #showSelection({ type, value, text, content, lang, pos: { point, dir } }) { if (type === 'annotation') return new Promise(resolve => { this._annotation_view.scrollToCFI(value) const annotation = this.#data.annotations.get(value) const popover = utils.connect(new AnnotationPopover({ annotation }), { 'delete-annotation': () => this.#deleteAnnotation(annotation), 'select-annotation': () => resolve('select'), 'color-changed': (_, color) => this.highlight_color = color, }) popover.connect('closed', () => resolve()) this._view.showPopover(popover, point, dir) }) return new Promise(resolve => { let resolved const popover = new SelectionPopover() popover.insert_action_group('selection', utils.addSimpleActions({ 'copy': () => resolve('copy'), 'copy-cfi': () => utils.setClipboardText(value, this.root), 'copy-citation': () => resolve('copy-citation'), 'highlight': () => { resolved = true const annotation = this.#data.annotations.get(value) // NOTE: `content` is the `Range.toString()` // whereas `text` is the `Selection.toString()`; // not sure which would be better for this use case, // but my understanding is that a `TextQuoteSelector` is // expected to be the text itself, not the rendered result this.#data.addAnnotation(annotation ?? { value, text: content, color: this.highlight_color, created: new Date().toISOString(), }).then(() => resolve('highlight')) }, 'search': () => { this._search_entry.text = content this._search_bar.search_mode_enabled = true this._flap.show_sidebar = true this._search_view.doSearch() }, 'print': () => resolve('print'), 'speak-from-here': () => resolve('speak-from-here'), })) utils.connect(popover, { 'show-popover': (_, popover) => this._view.showPopover(popover, point, dir), 'run-tool': () => ({ text, lang }), // it seems `closed` is emitted before the actions are run // so it needs the timeout 'closed': () => setTimeout(() => resolved ? null : resolve(), 0), }) this._view.showPopover(popover, point, dir) }) } #onSelection(payload) { const { action, text, html } = payload if (action === 'copy') { utils.getClipboard().set_content(Gdk.ContentProvider.new_union([ Gdk.ContentProvider.new_for_bytes('text/html', new TextEncoder().encode(html)), Gdk.ContentProvider.new_for_value(text)])) utils.addClipboardToast(this.root) } else if (action === 'copy-citation') { const page = payload.pageItem?.label const title = this._book_title.label const author = this._book_author.label const result = page ? (author ? format.vprintf(_('‘%s’\n—%s, “%s”, p. %s'), [text, author, title, page]) : title ? format.vprintf(_('‘%s’\n—“%s”, p. %s'), [text, title, page]) : format.vprintf(_('‘%s’ (p. %s)'), [text, page]) ) : author ? format.vprintf(_('‘%s’\n—%s, “%s”'), [text, author, title]) : title ? format.vprintf(_('‘%s’\n—“%s”'), [text, title]) : format.vprintf(_('‘%s’'), [text]) utils.setClipboardText(result, this.root) } else if (action === 'speak-from-here') this._navbar.tts_box.speak(payload.ssml) } #createOverlay({ index }) { if (!this.#data) return const list = this.#data.annotations.getForIndex(index) if (list) for (const [, annotation] of utils.gliter(list)) this._view.addAnnotation(annotation) } #showImage({ base64, mimetype }) { const pixbuf = utils.base64ToPixbuf(base64) const bytes = GLib.base64_decode(base64) const title = this.#book.metadata?.title const win = new Adw.Window({ content: new Adw.ToastOverlay(), title: title ? format.vprintf(_('Image from “%s”'), [title]) : _('Image'), }) win.content.child = utils.connect(new ImageViewer({ pixbuf }), { 'copy': () => { utils.getClipboard().set_content(Gdk.ContentProvider .new_for_bytes(mimetype, bytes)) utils.addClipboardToast(win.content) }, 'save-as': () => { const ext = /\/([^+]*)/.exec(mimetype)?.[1] new Gtk.FileDialog({ initial_name: win.title + (ext ? `.${ext}` : '') }) .save(win, null, (self, res) => { try { const file = self.save_finish(res) file.replace_contents(bytes, null, false, Gio.FileCreateFlags.REPLACE_DESTINATION, null) } catch (e) { if (e instanceof Gtk.DialogError) console.debug(e) else console.error(e) } }) }, }) win.add_controller(utils.addShortcuts({ 'w': () => win.close() })) win.present() } open(file) { this._top_overlay_box.show() // "It is better not to show spinners for very short periods of time [...] // consider only showing the spinner after a period of time has elapsed." // -- https://developer.gnome.org/hig/patterns/feedback/spinners.html this._top_overlay_stack.visible_child_name = 'nothing' setTimeout(() => { if (this._top_overlay_stack.visible_child_name === 'nothing') this._top_overlay_stack.visible_child_name = 'loading' }, 1000) this.#file = file this._view.open(file) } showPrimaryMenu() { this._flap.show_sidebar = true this._book_menu_button.popup() } toggleSidebar() { this._flap.show_sidebar = !this._flap.show_sidebar } #toggleSidebarContent(name) { if (this._flap.show_sidebar && this._search_bar.search_mode_enabled === false && this._contents_stack.visible_child_name === name) this._flap.show_sidebar = false else { this._search_bar.search_mode_enabled = false this._contents_stack.visible_child_name = name this._flap.show_sidebar = true } } toggleToc() { this.#toggleSidebarContent('toc') } toggleAnnotations() { this.#toggleSidebarContent('annotations') } toggleBookmarks() { this.#toggleSidebarContent('bookmarks') } toggleSearch() { const bar = this._search_bar if (this._search_entry.has_focus) bar.search_mode_enabled = false else { bar.search_mode_enabled = true this._flap.show_sidebar = true this._search_entry.grab_focus() } } showLocation() { this._navbar.showLocation() } showInfo() { makeBookInfoWindow(this.root, this.#book.metadata, this.#cover, true) } preferences() { const win = new ViewPreferencesWindow({ view_settings: this._view.viewSettings, font_settings: this._view.fontSettings, }) win.present(this.root) } bookmark() { this._bookmark_view.toggle() } exportAnnotations() { exportAnnotations(this.root, this.#data.storage.export()) } importAnnotations() { importAnnotations(this.root, this.#data) } helpOverlay() { const path = pkg.modulepath('ui/help-overlay.ui') const builder = pkg.useResource ? Gtk.Builder.new_from_resource(path) : Gtk.Builder.new_from_file(path) const dialog = builder.get_object('help-overlay') dialog.present(this.root) } vfunc_unroot() { this._navbar.tts_box.kill() this._view.viewSettings.unbindSettings() this._view.fontSettings.unbindSettings() utils.disconnectWith(this, this.#data.annotations) utils.disconnectWith(this, this.#data.bookmarks) dataStore.delete(this._view) // it seems that it's necessary to explicitly destroy web view this._view.webView.unparent() this._view.webView.run_dispose() } }) ================================================ FILE: src/common/widgets.js ================================================ customElements.define('foliate-symbolic', class extends HTMLElement { static observedAttributes = ['src'] #root = this.attachShadow({ mode: 'closed' }) #sheet = new CSSStyleSheet() #img = document.createElement('img') constructor() { super() this.attachInternals().ariaHidden = 'true' this.#root.adoptedStyleSheets = [this.#sheet] this.#root.append(this.#img) this.#img.style.visibility = 'hidden' } attributeChangedCallback(_, __, val) { this.#img.src = val this.#sheet.replaceSync(`:host { display: inline-flex; background: currentColor; width: min-content; height: min-content; mask: url("${encodeURI(decodeURI(val))}"); }`) } }) customElements.define('foliate-scrolled', class extends HTMLElement { #root = this.attachShadow({ mode: 'closed' }) constructor() { super() const sheet = new CSSStyleSheet() sheet.replaceSync(':host { overflow: auto }') this.#root.adoptedStyleSheets = [sheet] this.#root.append(document.createElement('slot')) const top = document.createElement('div') this.#root.prepend(top) const bottom = document.createElement('div') this.#root.append(bottom) const observer = new IntersectionObserver(entries => { for (const entry of entries) { if (entry.target === top) { if (entry.isIntersecting) this.dataset.scrolledToTop = '' else delete this.dataset.scrolledToTop } else { if (entry.isIntersecting) this.dataset.scrolledToBottom = '' else delete this.dataset.scrolledToBottom } } this.dispatchEvent(new Event('change')) }, { root: this }) observer.observe(top) observer.observe(bottom) } }) customElements.define('foliate-center', class extends HTMLElement { #root = this.attachShadow({ mode: 'closed' }) constructor() { super() const sheet = new CSSStyleSheet() this.#root.adoptedStyleSheets = [sheet] sheet.replaceSync(` :host { --max-width: 450px; text-align: center; display: flex; width: 100%; min-height: 100%; } :host > div { margin: auto; width: min(100%, var(--max-width)); }`) const div = document.createElement('div') div.append(document.createElement('slot')) this.#root.append(div) } }) customElements.define('foliate-stack', class extends HTMLElement { #root = this.attachShadow({ mode: 'closed' }) constructor() { super() const sheet = new CSSStyleSheet() this.#root.adoptedStyleSheets = [sheet] sheet.replaceSync(` ::slotted([hidden]) { display: none; visibility: hidden !important; }`) const slot = document.createElement('slot') slot.addEventListener('slotchange', () => this.showChild( this.querySelector(':scope > :not([hidden])') ?? this.children[0])) this.#root.append(slot) } showChild(child) { for (const el of this.children) el.hidden = el !== child } }) customElements.define('foliate-menu', class extends HTMLElement { #root = this.attachShadow({ mode: 'closed' }) #internals = this.attachInternals() #items = [] constructor() { super() this.#internals.role = 'menu' const slot = document.createElement('slot') this.#root.append(slot) slot.addEventListener('slotchange', e => { const els = e.target.assignedElements() this.#items = els.filter(el => el.matches('[role^="menuitem"]')) }) this.addEventListener('keydown', e => this.#onKeyDown(e)) } setFocusPrev(el) { this.setFocusNext(el, this.#items.slice(0).reverse()) } setFocusNext(el, items = this.#items) { let justFound, found for (const item of items) { if (justFound) { item.tabIndex = 0 item.focus() found = true justFound = false } else { item.tabIndex = -1 if (item === el) justFound = true } } if (!found) { items[0].tabIndex = 0 items[0].focus() } } #onKeyDown(e) { switch (e.key) { case 'ArrowUp': e.preventDefault() e.stopPropagation() this.setFocusPrev(e.target) break case 'ArrowDown': e.preventDefault() e.stopPropagation() this.setFocusNext(e.target) break } } }) customElements.define('foliate-menubutton', class extends HTMLElement { #root = this.attachShadow({ mode: 'open' }) #button #menu #ariaExpandedObserver = new MutationObserver(list => { for (const { target } of list) target.dispatchEvent(new Event('aria-expanded')) }) #onBlur = () => this.#button ? this.#button.ariaExpanded = 'false' : null #onClick = e => { if (!this.#button) return const target = e.composedPath()[0] if (!this.contains(target) && !this.#button.contains(target) && !this.#menu.contains(target)) { this.#button.setAttribute('aria-expanded', 'false') } } constructor() { super() const sheet = new CSSStyleSheet() sheet.replaceSync(':host { position: relative }') this.#root.adoptedStyleSheets = [sheet] const slot = document.createElement('slot') this.#root.append(slot) slot.addEventListener('slotchange', e => { this.#button = e.target.assignedElements()[0] if (!this.#button) return this.#button.ariaExpanded = 'false' this.#button.ariaHasPopup = 'menu' this.#ariaExpandedObserver.observe(this.#button, { attributes: true, attributeFilter: ['aria-expanded'] }) this.#button.addEventListener('click', () => { this.#button.ariaExpanded = this.#button.ariaExpanded === 'true' ? 'false' : 'true' }) this.#button.addEventListener('aria-expanded', () => { if (!this.#menu) return if (this.#button.ariaExpanded === 'true') { this.#menu.hidden = false this.#menu.focus() } else this.#menu.hidden = true }) }) const menuSlot = document.createElement('slot') menuSlot.name = 'menu' this.#root.append(menuSlot) menuSlot.addEventListener('slotchange', e => { this.#menu = e.target.assignedElements()[0] this.#menu.tabIndex = 0 this.#menu.hidden = true }) menuSlot.addEventListener('keydown', e => e.key === 'Escape' ? this.#button.ariaExpanded = 'false' : null) } connectedCallback() { addEventListener('blur', this.#onBlur) addEventListener('click', this.#onClick) } disconnectedCallback() { removeEventListener('blur', this.#onBlur) removeEventListener('click', this.#onClick) } }) ================================================ FILE: src/data.js ================================================ import GLib from 'gi://GLib' import Gio from 'gi://Gio' import GdkPixbuf from 'gi://GdkPixbuf' import * as utils from './utils.js' import { AnnotationModel, BookmarkModel } from './annotations.js' import { getURIStore, getBookList } from './library.js' export class BookData { annotations = utils.connect(new AnnotationModel(), { 'update-annotation': async (_, annotation) => { for (const view of this.views) await view.addAnnotation(annotation) await this.#saveAnnotations() }, }) bookmarks = new BookmarkModel() constructor(key, views) { this.key = key this.views = views this.storage = utils.connect(new utils.JSONStorage(pkg.datadir, this.key), { 'externally-modified': () => { // TODO: the file monitor doesn't seem to work }, 'modified': storage => getBookList()?.update(storage.path), }) } async initView(view, init) { const lastLocation = this.storage.get('lastLocation', null) await view.init({ lastLocation }) if (init) { const bookmarks = this.storage.get('bookmarks', []) for (const bookmark of bookmarks) { try { const item = await view.getTOCItemOf(bookmark) this.bookmarks.add(bookmark, item?.label ?? '') } catch (e) { console.error(e) } } this.bookmarks.connect('notify::n-items', () => this.#saveBookmarks()) } const annotations = init ? this.storage.get('annotations', []) : this.annotations.export() await this.addAnnotations(annotations, false) return this } async addAnnotation(annotation, save = true) { try { const [view, ...views] = this.views const { index, label } = await view.addAnnotation(annotation) this.annotations.add(annotation, index, label) for (const view of views) view.addAnnotation(annotation) if (save) this.#saveAnnotations() return annotation } catch (e) { console.error(e) } } async addAnnotations(annotations, save = true) { await Promise.all(annotations.map(x => this.addAnnotation(x, false))) if (save) this.#saveAnnotations() } async deleteAnnotation(annotation) { try { const [view, ...views] = this.views const { index } = await view.deleteAnnotation(annotation) this.annotations.delete(annotation, index) for (const view of views) view.deleteAnnotation(annotation) return this.#saveAnnotations() } catch (e) { console.error(e) } } #saveAnnotations() { this.storage.set('annotations', this.annotations.export()) } #saveBookmarks() { this.storage.set('bookmarks', this.bookmarks.export()) } saveCover(cover) { const settings = utils.settings('library') if (!(settings?.get_boolean('show-covers') ?? true)) return const path = pkg.cachepath(`${encodeURIComponent(this.key)}.png`) if (Gio.File.new_for_path(path).query_exists(null)) return const width = settings?.get_int('cover-size') ?? 256 const ratio = width / cover.get_width() const scaled = ratio >= 1 ? cover : cover.scale_simple(width, Math.round(cover.get_height() * ratio), GdkPixbuf.InterpType.BILINEAR) scaled.savev(path, 'png', [], []) } saveURI(file) { const path = file.get_path() const homeDir = GLib.get_home_dir() getURIStore().set(this.key, path.startsWith(homeDir) ? path.replace(homeDir, '~') : file.get_uri()) } } class BookDataStore { #map = new Map() #views = new Map() #keys = new WeakMap() get(key, view) { const map = this.#map if (map.has(key)) { this.#views.get(key).add(view) this.#keys.set(view, key) return map.get(key).initView(view) } else { const views = new Set([view]) const obj = new BookData(key, views) map.set(key, obj) this.#views.set(key, views) this.#keys.set(view, key) return obj.initView(view, true) } } delete(view) { const key = this.#keys.get(view) const views = this.#views.get(key) views.delete(view) if (!views.size) { this.#map.delete(key) this.#views.delete(key) } } } export const dataStore = new BookDataStore() ================================================ FILE: src/format.js ================================================ import GLib from 'gi://GLib' import Gio from 'gi://Gio' import { gettext as _ } from 'gettext' const makeLocale = locale => { try { return new Intl.Locale(locale) } catch { return null } } const glibcLocale = str => makeLocale( str === 'C' ? 'en' : str.split('.')[0].replace('_', '-')) const getHourCycle = () => { try { const settings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' }) return settings.get_string('clock-format') === '24h' ? 'h23' : 'h12' } catch (e) { console.debug(e) } } const hourCycle = getHourCycle() export const locales = GLib.get_language_names() .map(glibcLocale).filter(x => x) .map(locale => new Intl.Locale(locale, { hourCycle })) // very naive, probably bad locale matcher // replace this with `Intl.LocaleMatcher` once it's available export const matchLocales = strs => { const availableLocales = strs.map(makeLocale) const matches = [] for (const a of locales) { for (const [i, b] of availableLocales.entries()) { if (!b) continue if (a.language === b.language && (a.region && b.region ? a.region === b.region : true) && (a.script && b.script ? a.script === b.script : true)) matches.push(strs[i]) } } return matches } const numberFormat = new Intl.NumberFormat(locales) export const number = x => x != null ? numberFormat.format(x) : '' const percentFormat = new Intl.NumberFormat(locales, { style: 'percent' }) export const percent = x => x != null ? percentFormat.format(x) : '' const listFormat = new Intl.ListFormat(locales, { style: 'short', type: 'conjunction' }) export const list = x => x ? listFormat.format(x) : '' export const date = (str, showTime = false) => { if (!str) return '' const isBCE = str.startsWith('-') const split = str.split('-').filter(x => x) const yearOnly = split.length === 1 const yearMonthOnly = split.length === 2 // years from 0 to 99 treated as 1900 to 1999, and BCE years unsupported, // unless you use "expanded years", which is `+` or `-` followed by 6 digits const [year, ...rest] = split const date = new Date((isBCE ? '-' : '+') + year.replace(/^0+/, '').padStart(6, '0') + (rest.length ? '-' + rest.join('-') : '')) // fallback when failed to parse date if (isNaN(date)) return str const options = yearOnly ? { year: 'numeric' } : yearMonthOnly ? { year: 'numeric', month: 'long' } : showTime ? { year: 'numeric', month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric' } : { year: 'numeric', month: 'long', day: 'numeric' } if (isBCE) options.era = 'short' return new Intl.DateTimeFormat(locales, options).format(date) } const getRegionEmoji = code => { if (!code || code.length !== 2) return '' return String.fromCodePoint( ...Array.from(code.toUpperCase()).map(x => 127397 + x.charCodeAt())) } const displayName = new Intl.DisplayNames(locales, { type: 'language' }) const formatLangauge = code => { if (!code) return '' try { const locale = new Intl.Locale(code) const { language, region } = locale const name = displayName.of(language) if (region) { const emoji = getRegionEmoji(region) return `${emoji ? `${emoji} ` : '' }${name}` } else return name } catch { return '' } } export const language = lang => { if (typeof lang === 'string') return formatLangauge(lang) if (Array.isArray(lang)) return list(lang.map(formatLangauge)) return '' } const minuteFormat = new Intl.NumberFormat(locales, { style: 'unit', unit: 'minute' }) const hourFormat = new Intl.NumberFormat(locales, { style: 'unit', unit: 'hour' }) export const duration = minutes => minutes < 60 ? minuteFormat.format(Math.round(minutes)) : hourFormat.format((minutes / 60).toFixed(1)) export const mime = mime => mime ? Gio.content_type_get_description(mime) : '' export const price = (currency, value) => { try { return new Intl.NumberFormat(locales, { style: 'currency', currency }).format(value) } catch { return (currency ? currency + ' ' : '') + value } } export const vprintf = imports.format.vprintf export const total = n => vprintf(_('of %d'), [n]) ================================================ FILE: src/generate-gresource.js ================================================ #!/usr/bin/env node import { readdir, writeFile } from 'fs/promises' import { join } from 'path' const getPath = file => join(file.parentPath, file.name) const getFiles = async (path, filter, compressed) => { const files = await readdir(path, { withFileTypes: true }) return files.filter(file => !file.isDirectory()) .filter(filter ?? (() => true)) .map(compressed ? file => `${getPath(file)}` : file => `${getPath(file)}`) } const getIcons = async () => { const files = await readdir('icons/hicolor/scalable/actions/', { withFileTypes: true }) return files.map(file => `${getPath(file)}`) } const filter = ({ excludes, endsWith }) => ({ name }) => { for (const x of excludes) if (name === x) return for (const x of endsWith) if (name.endsWith(x)) return true } const result = ` ${[ ...await getFiles('./', filter({ excludes: ['generate-gresource.js', 'main.js'], endsWith: ['.js'], })), ...await getFiles('ui/'), ...await getIcons(), ...await getFiles('foliate-js/', filter({ excludes: ['reader.js', 'eslint.config.js', 'rollup.config.js'], endsWith: ['.js'], })), ...await getFiles('foliate-js/vendor/'), ...await getFiles('foliate-js/vendor/pdfjs/'), ...await getFiles('foliate-js/vendor/pdfjs/cmaps/', null, true), ...await getFiles('foliate-js/vendor/pdfjs/standard_fonts/', null, true), ...await getFiles('opds/'), ...await getFiles('selection-tools/'), ...await getFiles('common/'), ...await getFiles('reader/'), ].map(x => ' ' + x).join('\n')} ` await writeFile('gresource.xml', result) ================================================ FILE: src/gresource.xml ================================================ annotations.js app.js book-info.js book-viewer.js data.js format.js image-viewer.js library.js navbar.js search.js selection-tools.js speech.js themes.js toc.js tts.js utils.js webview.js ui/annotation-popover.ui ui/annotation-row.ui ui/book-image.ui ui/book-item.ui ui/book-row.ui ui/book-viewer.ui ui/bookmark-row.ui ui/export-dialog.ui ui/help-overlay.ui ui/image-viewer.ui ui/import-dialog.ui ui/library-view.ui ui/library.ui ui/media-overlay-box.ui ui/navbar.ui ui/selection-popover.ui ui/tts-box.ui ui/view-preferences-window.ui icons/hicolor/scalable/actions/bookmark-filled-symbolic.svg icons/hicolor/scalable/actions/funnel-symbolic.svg icons/hicolor/scalable/actions/library-symbolic.svg icons/hicolor/scalable/actions/pan-down-symbolic.svg icons/hicolor/scalable/actions/pin-symbolic.svg icons/hicolor/scalable/actions/speedometer-symbolic.svg icons/hicolor/scalable/actions/stop-sign-symbolic.svg icons/hicolor/scalable/actions/tag-symbolic.svg icons/hicolor/scalable/actions/text-squiggly-symbolic.svg foliate-js/comic-book.js foliate-js/dict.js foliate-js/epub.js foliate-js/epubcfi.js foliate-js/fb2.js foliate-js/fixed-layout.js foliate-js/footnotes.js foliate-js/mobi.js foliate-js/opds.js foliate-js/overlayer.js foliate-js/paginator.js foliate-js/pdf.js foliate-js/progress.js foliate-js/quote-image.js foliate-js/search.js foliate-js/text-walker.js foliate-js/tts.js foliate-js/uri-template.js foliate-js/view.js foliate-js/vendor/fflate.js foliate-js/vendor/zip.js foliate-js/vendor/pdfjs/annotation_layer_builder.css foliate-js/vendor/pdfjs/pdf.mjs foliate-js/vendor/pdfjs/pdf.mjs.map foliate-js/vendor/pdfjs/pdf.worker.mjs foliate-js/vendor/pdfjs/pdf.worker.mjs.map foliate-js/vendor/pdfjs/text_layer_builder.css foliate-js/vendor/pdfjs/cmaps/78-EUC-H.bcmap foliate-js/vendor/pdfjs/cmaps/78-EUC-V.bcmap foliate-js/vendor/pdfjs/cmaps/78-H.bcmap foliate-js/vendor/pdfjs/cmaps/78-RKSJ-H.bcmap foliate-js/vendor/pdfjs/cmaps/78-RKSJ-V.bcmap foliate-js/vendor/pdfjs/cmaps/78-V.bcmap foliate-js/vendor/pdfjs/cmaps/78ms-RKSJ-H.bcmap foliate-js/vendor/pdfjs/cmaps/78ms-RKSJ-V.bcmap foliate-js/vendor/pdfjs/cmaps/83pv-RKSJ-H.bcmap foliate-js/vendor/pdfjs/cmaps/90ms-RKSJ-H.bcmap foliate-js/vendor/pdfjs/cmaps/90ms-RKSJ-V.bcmap foliate-js/vendor/pdfjs/cmaps/90msp-RKSJ-H.bcmap foliate-js/vendor/pdfjs/cmaps/90msp-RKSJ-V.bcmap foliate-js/vendor/pdfjs/cmaps/90pv-RKSJ-H.bcmap foliate-js/vendor/pdfjs/cmaps/90pv-RKSJ-V.bcmap foliate-js/vendor/pdfjs/cmaps/Add-H.bcmap foliate-js/vendor/pdfjs/cmaps/Add-RKSJ-H.bcmap foliate-js/vendor/pdfjs/cmaps/Add-RKSJ-V.bcmap foliate-js/vendor/pdfjs/cmaps/Add-V.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-CNS1-0.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-CNS1-1.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-CNS1-2.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-CNS1-3.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-CNS1-4.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-CNS1-5.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-CNS1-6.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-GB1-0.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-GB1-1.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-GB1-2.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-GB1-3.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-GB1-4.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-GB1-5.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-GB1-UCS2.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-Japan1-0.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-Japan1-1.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-Japan1-2.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-Japan1-3.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-Japan1-4.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-Japan1-5.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-Japan1-6.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-Japan1-UCS2.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-Korea1-0.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-Korea1-1.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-Korea1-2.bcmap foliate-js/vendor/pdfjs/cmaps/Adobe-Korea1-UCS2.bcmap foliate-js/vendor/pdfjs/cmaps/B5-H.bcmap foliate-js/vendor/pdfjs/cmaps/B5-V.bcmap foliate-js/vendor/pdfjs/cmaps/B5pc-H.bcmap foliate-js/vendor/pdfjs/cmaps/B5pc-V.bcmap foliate-js/vendor/pdfjs/cmaps/CNS-EUC-H.bcmap foliate-js/vendor/pdfjs/cmaps/CNS-EUC-V.bcmap foliate-js/vendor/pdfjs/cmaps/CNS1-H.bcmap foliate-js/vendor/pdfjs/cmaps/CNS1-V.bcmap foliate-js/vendor/pdfjs/cmaps/CNS2-H.bcmap foliate-js/vendor/pdfjs/cmaps/CNS2-V.bcmap foliate-js/vendor/pdfjs/cmaps/ETHK-B5-H.bcmap foliate-js/vendor/pdfjs/cmaps/ETHK-B5-V.bcmap foliate-js/vendor/pdfjs/cmaps/ETen-B5-H.bcmap foliate-js/vendor/pdfjs/cmaps/ETen-B5-V.bcmap foliate-js/vendor/pdfjs/cmaps/ETenms-B5-H.bcmap foliate-js/vendor/pdfjs/cmaps/ETenms-B5-V.bcmap foliate-js/vendor/pdfjs/cmaps/EUC-H.bcmap foliate-js/vendor/pdfjs/cmaps/EUC-V.bcmap foliate-js/vendor/pdfjs/cmaps/Ext-H.bcmap foliate-js/vendor/pdfjs/cmaps/Ext-RKSJ-H.bcmap foliate-js/vendor/pdfjs/cmaps/Ext-RKSJ-V.bcmap foliate-js/vendor/pdfjs/cmaps/Ext-V.bcmap foliate-js/vendor/pdfjs/cmaps/GB-EUC-H.bcmap foliate-js/vendor/pdfjs/cmaps/GB-EUC-V.bcmap foliate-js/vendor/pdfjs/cmaps/GB-H.bcmap foliate-js/vendor/pdfjs/cmaps/GB-V.bcmap foliate-js/vendor/pdfjs/cmaps/GBK-EUC-H.bcmap foliate-js/vendor/pdfjs/cmaps/GBK-EUC-V.bcmap foliate-js/vendor/pdfjs/cmaps/GBK2K-H.bcmap foliate-js/vendor/pdfjs/cmaps/GBK2K-V.bcmap foliate-js/vendor/pdfjs/cmaps/GBKp-EUC-H.bcmap foliate-js/vendor/pdfjs/cmaps/GBKp-EUC-V.bcmap foliate-js/vendor/pdfjs/cmaps/GBT-EUC-H.bcmap foliate-js/vendor/pdfjs/cmaps/GBT-EUC-V.bcmap foliate-js/vendor/pdfjs/cmaps/GBT-H.bcmap foliate-js/vendor/pdfjs/cmaps/GBT-V.bcmap foliate-js/vendor/pdfjs/cmaps/GBTpc-EUC-H.bcmap foliate-js/vendor/pdfjs/cmaps/GBTpc-EUC-V.bcmap foliate-js/vendor/pdfjs/cmaps/GBpc-EUC-H.bcmap foliate-js/vendor/pdfjs/cmaps/GBpc-EUC-V.bcmap foliate-js/vendor/pdfjs/cmaps/H.bcmap foliate-js/vendor/pdfjs/cmaps/HKdla-B5-H.bcmap foliate-js/vendor/pdfjs/cmaps/HKdla-B5-V.bcmap foliate-js/vendor/pdfjs/cmaps/HKdlb-B5-H.bcmap foliate-js/vendor/pdfjs/cmaps/HKdlb-B5-V.bcmap foliate-js/vendor/pdfjs/cmaps/HKgccs-B5-H.bcmap foliate-js/vendor/pdfjs/cmaps/HKgccs-B5-V.bcmap foliate-js/vendor/pdfjs/cmaps/HKm314-B5-H.bcmap foliate-js/vendor/pdfjs/cmaps/HKm314-B5-V.bcmap foliate-js/vendor/pdfjs/cmaps/HKm471-B5-H.bcmap foliate-js/vendor/pdfjs/cmaps/HKm471-B5-V.bcmap foliate-js/vendor/pdfjs/cmaps/HKscs-B5-H.bcmap foliate-js/vendor/pdfjs/cmaps/HKscs-B5-V.bcmap foliate-js/vendor/pdfjs/cmaps/Hankaku.bcmap foliate-js/vendor/pdfjs/cmaps/Hiragana.bcmap foliate-js/vendor/pdfjs/cmaps/KSC-EUC-H.bcmap foliate-js/vendor/pdfjs/cmaps/KSC-EUC-V.bcmap foliate-js/vendor/pdfjs/cmaps/KSC-H.bcmap foliate-js/vendor/pdfjs/cmaps/KSC-Johab-H.bcmap foliate-js/vendor/pdfjs/cmaps/KSC-Johab-V.bcmap foliate-js/vendor/pdfjs/cmaps/KSC-V.bcmap foliate-js/vendor/pdfjs/cmaps/KSCms-UHC-H.bcmap foliate-js/vendor/pdfjs/cmaps/KSCms-UHC-HW-H.bcmap foliate-js/vendor/pdfjs/cmaps/KSCms-UHC-HW-V.bcmap foliate-js/vendor/pdfjs/cmaps/KSCms-UHC-V.bcmap foliate-js/vendor/pdfjs/cmaps/KSCpc-EUC-H.bcmap foliate-js/vendor/pdfjs/cmaps/KSCpc-EUC-V.bcmap foliate-js/vendor/pdfjs/cmaps/Katakana.bcmap foliate-js/vendor/pdfjs/cmaps/LICENSE foliate-js/vendor/pdfjs/cmaps/NWP-H.bcmap foliate-js/vendor/pdfjs/cmaps/NWP-V.bcmap foliate-js/vendor/pdfjs/cmaps/RKSJ-H.bcmap foliate-js/vendor/pdfjs/cmaps/RKSJ-V.bcmap foliate-js/vendor/pdfjs/cmaps/Roman.bcmap foliate-js/vendor/pdfjs/cmaps/UniCNS-UCS2-H.bcmap foliate-js/vendor/pdfjs/cmaps/UniCNS-UCS2-V.bcmap foliate-js/vendor/pdfjs/cmaps/UniCNS-UTF16-H.bcmap foliate-js/vendor/pdfjs/cmaps/UniCNS-UTF16-V.bcmap foliate-js/vendor/pdfjs/cmaps/UniCNS-UTF32-H.bcmap foliate-js/vendor/pdfjs/cmaps/UniCNS-UTF32-V.bcmap foliate-js/vendor/pdfjs/cmaps/UniCNS-UTF8-H.bcmap foliate-js/vendor/pdfjs/cmaps/UniCNS-UTF8-V.bcmap foliate-js/vendor/pdfjs/cmaps/UniGB-UCS2-H.bcmap foliate-js/vendor/pdfjs/cmaps/UniGB-UCS2-V.bcmap foliate-js/vendor/pdfjs/cmaps/UniGB-UTF16-H.bcmap foliate-js/vendor/pdfjs/cmaps/UniGB-UTF16-V.bcmap foliate-js/vendor/pdfjs/cmaps/UniGB-UTF32-H.bcmap foliate-js/vendor/pdfjs/cmaps/UniGB-UTF32-V.bcmap foliate-js/vendor/pdfjs/cmaps/UniGB-UTF8-H.bcmap foliate-js/vendor/pdfjs/cmaps/UniGB-UTF8-V.bcmap foliate-js/vendor/pdfjs/cmaps/UniJIS-UCS2-H.bcmap foliate-js/vendor/pdfjs/cmaps/UniJIS-UCS2-HW-H.bcmap foliate-js/vendor/pdfjs/cmaps/UniJIS-UCS2-HW-V.bcmap foliate-js/vendor/pdfjs/cmaps/UniJIS-UCS2-V.bcmap foliate-js/vendor/pdfjs/cmaps/UniJIS-UTF16-H.bcmap foliate-js/vendor/pdfjs/cmaps/UniJIS-UTF16-V.bcmap foliate-js/vendor/pdfjs/cmaps/UniJIS-UTF32-H.bcmap foliate-js/vendor/pdfjs/cmaps/UniJIS-UTF32-V.bcmap foliate-js/vendor/pdfjs/cmaps/UniJIS-UTF8-H.bcmap foliate-js/vendor/pdfjs/cmaps/UniJIS-UTF8-V.bcmap foliate-js/vendor/pdfjs/cmaps/UniJIS2004-UTF16-H.bcmap foliate-js/vendor/pdfjs/cmaps/UniJIS2004-UTF16-V.bcmap foliate-js/vendor/pdfjs/cmaps/UniJIS2004-UTF32-H.bcmap foliate-js/vendor/pdfjs/cmaps/UniJIS2004-UTF32-V.bcmap foliate-js/vendor/pdfjs/cmaps/UniJIS2004-UTF8-H.bcmap foliate-js/vendor/pdfjs/cmaps/UniJIS2004-UTF8-V.bcmap foliate-js/vendor/pdfjs/cmaps/UniJISPro-UCS2-HW-V.bcmap foliate-js/vendor/pdfjs/cmaps/UniJISPro-UCS2-V.bcmap foliate-js/vendor/pdfjs/cmaps/UniJISPro-UTF8-V.bcmap foliate-js/vendor/pdfjs/cmaps/UniJISX0213-UTF32-H.bcmap foliate-js/vendor/pdfjs/cmaps/UniJISX0213-UTF32-V.bcmap foliate-js/vendor/pdfjs/cmaps/UniJISX02132004-UTF32-H.bcmap foliate-js/vendor/pdfjs/cmaps/UniJISX02132004-UTF32-V.bcmap foliate-js/vendor/pdfjs/cmaps/UniKS-UCS2-H.bcmap foliate-js/vendor/pdfjs/cmaps/UniKS-UCS2-V.bcmap foliate-js/vendor/pdfjs/cmaps/UniKS-UTF16-H.bcmap foliate-js/vendor/pdfjs/cmaps/UniKS-UTF16-V.bcmap foliate-js/vendor/pdfjs/cmaps/UniKS-UTF32-H.bcmap foliate-js/vendor/pdfjs/cmaps/UniKS-UTF32-V.bcmap foliate-js/vendor/pdfjs/cmaps/UniKS-UTF8-H.bcmap foliate-js/vendor/pdfjs/cmaps/UniKS-UTF8-V.bcmap foliate-js/vendor/pdfjs/cmaps/V.bcmap foliate-js/vendor/pdfjs/cmaps/WP-Symbol.bcmap foliate-js/vendor/pdfjs/standard_fonts/FoxitDingbats.pfb foliate-js/vendor/pdfjs/standard_fonts/FoxitFixed.pfb foliate-js/vendor/pdfjs/standard_fonts/FoxitFixedBold.pfb foliate-js/vendor/pdfjs/standard_fonts/FoxitFixedBoldItalic.pfb foliate-js/vendor/pdfjs/standard_fonts/FoxitFixedItalic.pfb foliate-js/vendor/pdfjs/standard_fonts/FoxitSerif.pfb foliate-js/vendor/pdfjs/standard_fonts/FoxitSerifBold.pfb foliate-js/vendor/pdfjs/standard_fonts/FoxitSerifBoldItalic.pfb foliate-js/vendor/pdfjs/standard_fonts/FoxitSerifItalic.pfb foliate-js/vendor/pdfjs/standard_fonts/FoxitSymbol.pfb foliate-js/vendor/pdfjs/standard_fonts/LICENSE_FOXIT foliate-js/vendor/pdfjs/standard_fonts/LICENSE_LIBERATION foliate-js/vendor/pdfjs/standard_fonts/LiberationSans-Bold.ttf foliate-js/vendor/pdfjs/standard_fonts/LiberationSans-BoldItalic.ttf foliate-js/vendor/pdfjs/standard_fonts/LiberationSans-Italic.ttf foliate-js/vendor/pdfjs/standard_fonts/LiberationSans-Regular.ttf opds/main.html opds/main.js selection-tools/common.css selection-tools/translate.html selection-tools/wikipedia.html selection-tools/wiktionary.html common/widgets.js reader/markup.js reader/reader.html reader/reader.js ================================================ FILE: src/image-viewer.js ================================================ import Gtk from 'gi://Gtk' import GObject from 'gi://GObject' import Gdk from 'gi://Gdk' import GdkPixbuf from 'gi://GdkPixbuf' import * as utils from './utils.js' // TODO: figure out how to use Gdk.Texture export const ImageViewer = GObject.registerClass({ GTypeName: 'FoliateImageViewer', Template: pkg.moduleuri('ui/image-viewer.ui'), InternalChildren: ['scrolled', 'image'], Properties: utils.makeParams({ 'pixbuf': 'object', }), Signals: { 'copy': {}, 'save-as': {}, }, }, class extends Gtk.Box { #scale = 1 #rotation = 0 actionGroup = utils.addSimpleActions({ 'zoom-in': () => this.zoom(0.25), 'zoom-out': () => this.zoom(-0.25), 'zoom-restore': () => this.zoom(), 'rotate-left': () => this.rotate(90), 'rotate-right': () => this.rotate(270), 'copy': () => this.emit('copy'), 'save-as': () => this.emit('save-as'), }) constructor(params) { super(params) this._image.set_pixbuf(this.pixbuf) this._image.add_controller(utils.connect(new Gtk.GestureDrag(), { 'drag-begin': () => this._image.cursor = Gdk.Cursor.new_from_name('move', null), 'drag-end': () => this._image.cursor = null, 'drag-update': (_, x, y) => { const { hadjustment, vadjustment } = this._scrolled hadjustment.value -= x vadjustment.value -= y }, })) this.insert_action_group('img', this.actionGroup) this.add_controller(utils.addShortcuts({ 'c': 'img.copy', 's': 'img.save-as', 'plus|equal|KP_Add|KP_Equal|plus|equal|KP_Add|KP_Equal': 'img.zoom-in', 'minus|KP_Subtract|minus|KP_Subtract': 'img.zoom-out', '0|1|KP_0|0|KP_0': 'img.zoom-restore', 'Left': 'img.rotate-left', 'Right': 'img.rotate-right', 'i': 'img.invert', })) this.#updateActions() } zoom(d) { if (d == null) this.#scale = 1 else this.#scale += d this.#update() } rotate(degree) { this.#rotation = (this.#rotation + degree) % 360 this.#update() } #update() { const { pixbuf } = this const { width, height } = pixbuf const scale = this.#scale this._image.set_pixbuf(pixbuf.scale_simple(width * scale, height * scale, GdkPixbuf.InterpType.BILINEAR).rotate_simple(this.#rotation)) this.#updateActions() } #updateActions() { const scale = this.#scale this.actionGroup.lookup_action('zoom-in').enabled = scale < 3 this.actionGroup.lookup_action('zoom-out').enabled = scale > 0.25 this.actionGroup.lookup_action('zoom-restore').enabled = scale !== 1 } }) ================================================ FILE: src/library.js ================================================ import Gtk from 'gi://Gtk' import Adw from 'gi://Adw' import GObject from 'gi://GObject' import Gio from 'gi://Gio' import GLib from 'gi://GLib' import Gdk from 'gi://Gdk' import GdkPixbuf from 'gi://GdkPixbuf' import Pango from 'gi://Pango' import cairo from 'gi://cairo' import { gettext as _ } from 'gettext' import * as utils from './utils.js' import * as format from './format.js' import { exportAnnotations } from './annotations.js' import { formatLanguageMap, formatAuthors, makeBookInfoWindow } from './book-info.js' import WebKit from 'gi://WebKit' import { WebView } from './webview.js' const defaultCatalogs = [ { title: 'Feedbooks', uri: 'https://catalog.feedbooks.com/catalog/index.json', }, { title: 'Internet Archive', uri: 'https://bookserver.archive.org/catalog/', }, { title: 'Manybooks', uri: 'https://manybooks.net/opds/', }, { title: 'Project Gutenberg', uri: 'https://m.gutenberg.org/ebooks.opds/', }, { title: 'Standard Ebooks', uri: 'https://standardebooks.org/feeds/opds', }, { title: 'unglue.it', uri: 'https://unglue.it/api/opds/', }, ] const uiText = { loading: _('Loading'), error: _('Failed to Load'), reload: _('Reload'), cancel: _('Cancel'), viewCollection: _('See All'), search: _('Search'), filter: _('Filter'), acq: { 'http://opds-spec.org/acquisition': _('Download'), 'http://opds-spec.org/acquisition/buy': _('Buy'), 'http://opds-spec.org/acquisition/open-access': _('Download'), 'preview': _('Preview'), 'http://opds-spec.org/acquisition/sample': _('Sample'), 'http://opds-spec.org/acquisition/borrow': _('Borrow'), 'http://opds-spec.org/acquisition/subscribe': _('Subscribe'), }, openAccess: _('Free'), pagination: [ _('First'), _('Previous'), _('Next'), _('Last'), ], query: _('Search Terms'), metadata: { title: _('Title'), author: _('Author'), contributor: _('Contributor'), publisher: _('Publisher'), published: _('Published'), language: _('Language'), identifier: _('Identifier'), }, } const getURIFromTracker = identifier => { const connection = imports.gi.Tracker.SparqlConnection.bus_new( 'org.freedesktop.Tracker3.Miner.Files', null, null) const statement = connection.query_statement(` SELECT ?uri WHERE { GRAPH tracker:Documents { ?u rdf:type nfo:EBook . ?u nie:isStoredAs ?uri . ?u nie:identifier ~identifier . } }`, null) statement.bind_string('identifier', identifier) const cursor = statement.execute(null) cursor.next(null) const uri = cursor.get_string(0)[0] cursor.close() connection.close() return uri } const showCovers = utils.settings('library')?.get_boolean('show-covers') ?? true const listBooks = function* (path) { const ls = utils.listDir(path, 'standard::name,time::modified') for (const { file, name, info } of ls) try { if (!/\.json$/.test(name)) continue const modified = new Date(info.get_attribute_uint64('time::modified') * 1000) yield { file, modified } } catch (e) { console.error(e) } } class URIStore { #storage = new utils.JSONStorage(pkg.datapath('library'), 'uri-store') #map = new Map(this.#storage.get('uris')) get(id) { try { const uri = getURIFromTracker(id) if (uri) return uri } catch (e) { console.warn(e) } return this.#map.get(id) } set(id, uri) { this.#map.set(id, uri) this.#storage.set('uris', Array.from(this.#map.entries())) } delete(id) { this.#map.delete(id) this.#storage.set('uris', Array.from(this.#map.entries())) } } export const getURIStore = utils.memoize(() => new URIStore()) const BookList = GObject.registerClass({ GTypeName: 'FoliateBookList', }, class extends Gio.ListStore { #uriStore = getURIStore() #files = Array.from(listBooks(pkg.datadir) ?? []) .sort((a, b) => b.modified - a.modified) .map(x => x.file) #iter = this.#files.values() constructor(params) { super(params) this.readFile = utils.memoize(utils.readJSONFile) this.readCover = utils.memoize(identifier => { const path = pkg.cachepath(`${encodeURIComponent(identifier)}.png`) try { return GdkPixbuf.Pixbuf.new_from_file(path) } catch { return null } }) } loadMore(n) { for (let i = 0; i < n; i++) { const { value, done } = this.#iter.next() if (done) return true else if (value) this.append(value) } } getBook(file) { const { identifier } = this.readFile(file)?.metadata ?? {} return this.getBookFromIdentifier(identifier) } getBookFromIdentifier(identifier) { const uri = this.#uriStore.get(identifier) return !uri ? null : uri.startsWith('~') ? Gio.File.new_for_path(uri.replace('~', GLib.get_home_dir())) : Gio.File.new_for_uri(uri) } delete(file) { const name = file.get_basename() const cover = Gio.File.new_for_path(pkg.cachepath(name.replace('.json', '.png'))) const id = decodeURIComponent(name.replace('.json', '')) this.#uriStore.delete(id) for (const f of [file, cover]) try { f.delete(null) } catch {} for (const [i, el] of utils.gliter(this)) if (el === file) this.remove(i) } update(path) { // remove it from the queue if it's not yet loaded const i = this.#files.findIndex(f => f?.get_path() === path) // set to null instead of removing it so we don't mess up the iterator if (i !== -1) this.#files[i] = null // remove it from the list if it has been loaded for (const [i, el] of utils.gliter(this)) if (el.get_path() === path) this.remove(i) this.insert(0, Gio.File.new_for_path(path)) } }) let gotBooks // don't create book list just to update it const getBooks = utils.memoize(() => (gotBooks = true, new BookList())) export const getBookList = () => gotBooks ? getBooks() : null const width = 256 const height = width * 1.5 const surface = new cairo.ImageSurface(cairo.Format.ARGB32, width, height) const defaultPixbuf = Gdk.pixbuf_get_from_surface(surface, 0, 0, width, height) GObject.registerClass({ GTypeName: 'FoliateBookImage', Template: pkg.moduleuri('ui/book-image.ui'), InternalChildren: ['image', 'generated', 'title'], }, class extends Gtk.Overlay { load(pixbuf, title) { if (pixbuf) { this._generated.visible = false this._image.set_pixbuf(pixbuf) this._image.opacity = 1 } else { this._image.set_pixbuf(defaultPixbuf) this._image.opacity = 0 this._title.label = title this._generated.visible = true } this._image.tooltip_text = title } }) const fraction = p => !isNaN(p?.[1]) && p?.[1] > 0 ? p[0] / p[1] : null const BookItem = GObject.registerClass({ GTypeName: 'FoliateBookItem', Template: pkg.moduleuri('ui/book-item.ui'), InternalChildren: ['image', 'progress', 'title'], Signals: { 'open-new-window': { param_types: [Gio.File.$gtype] }, 'remove-book': { param_types: [Gio.File.$gtype] }, 'export-book': { param_types: [Gio.File.$gtype] }, 'book-info': { param_types: [Gio.File.$gtype] }, 'open-external-app': { param_types: [Gio.File.$gtype] }, }, }, class extends Gtk.Box { #item constructor(params) { super(params) this.insert_action_group('book-item', utils.addSimpleActions({ 'open-new-window': () => this.emit('open-new-window', this.#item), 'remove': () => this.emit('remove-book', this.#item), 'export': () => this.emit('export-book', this.#item), 'info': () => this.emit('book-info', this.#item), 'open-external-app': () => this.emit('open-external-app', this.#item), })) } update(item, data, cover) { this.#item = item const title = formatLanguageMap(data.metadata?.title) this._title.text = title this._image.load(cover?.then ? null : cover, title) this._progress.label = format.percent(fraction(data.progress)) } }) const BookRow = GObject.registerClass({ GTypeName: 'FoliateBookRow', Template: pkg.moduleuri('ui/book-row.ui'), InternalChildren: ['title', 'author', 'progress-grid', 'progress-bar', 'progress-label'], Signals: { 'open-new-window': { param_types: [Gio.File.$gtype] }, 'remove-book': { param_types: [Gio.File.$gtype] }, 'export-book': { param_types: [Gio.File.$gtype] }, 'book-info': { param_types: [Gio.File.$gtype] }, 'open-external-app': { param_types: [Gio.File.$gtype] }, }, }, class extends Gtk.Box { #item constructor(params) { super(params) this.insert_action_group('book-item', utils.addSimpleActions({ 'open-new-window': () => this.emit('open-new-window', this.#item), 'remove': () => this.emit('remove-book', this.#item), 'export': () => this.emit('export-book', this.#item), 'info': () => this.emit('book-info', this.#item), 'open-external-app': () => this.emit('open-external-app', this.#item), })) } update(item, data) { this.#item = item const { metadata, progress } = data const title = formatLanguageMap(metadata?.title) this._title.label = title const author = formatAuthors(metadata) this._author.label = author this._author.visible = Boolean(author) const frac = fraction(progress) this._progress_bar.fraction = frac this._progress_label.label = format.percent(frac) const bookSize = Math.min((progress?.[1] + 1) / 1500, 0.8) const steps = 10 const span = Math.ceil(bookSize * steps) const grid = this._progress_grid if (isNaN(span)) grid.hide() else { grid.show() grid.remove(this._progress_bar) grid.remove(this._progress_label) grid.attach(this._progress_bar, 0, 0, span, 1) grid.attach(this._progress_label, span, 0, steps - span, 1) } } }) const matchString = (x, q) => typeof x === 'string' ? x.toLowerCase().includes(q) : false GObject.registerClass({ GTypeName: 'FoliateLibraryView', Template: pkg.moduleuri('ui/library-view.ui'), InternalChildren: ['scrolled'], Properties: utils.makeParams({ 'view-mode': 'string', }), Signals: { 'load-more': { return_type: GObject.TYPE_BOOLEAN }, 'load-all': {}, 'activate': { param_types: [GObject.TYPE_OBJECT] }, }, }, class extends Gtk.Stack { #done = false #filter = new Gtk.CustomFilter() #filterModel = utils.connect(new Gtk.FilterListModel({ filter: this.#filter }), { 'items-changed': () => this.#update() }) #itemConnections = { 'open-new-window': (_, file) => this.root.addWindow(getBooks().getBook(file)), 'remove-book': (_, file) => this.removeBook(file), 'export-book': (_, file) => { const data = getBooks().readFile(file) exportAnnotations(this.get_root(), data) }, 'book-info': (_, file) => { const books = getBooks() const { metadata } = books.readFile(file) const cover = books.readCover(metadata.identifier) makeBookInfoWindow(this.get_root(), metadata, cover) }, 'open-external-app': (_, file) => this.openWithExternalApp(getBooks().getBook(file)), } actionGroup = utils.addMethods(this, { props: ['view-mode'], }) constructor(params) { super(params) utils.connect(this._scrolled.vadjustment, { 'changed': this.#checkAdjustment.bind(this), 'value-changed': this.#checkAdjustment.bind(this), }) const show = () => this.view_mode === 'list' ? this.showList() : this.showGrid() this.connect('notify::view-mode', show) show() } #checkAdjustment(adj) { if (this.#done) return if (adj.value + adj.page_size * 1.5 >= adj.upper) { const done = this.emit('load-more') if (done) this.#done = true else utils.wait(10).then(() => this.#checkAdjustment(adj)) } } #update() { this.visible_child_name = !this.#filterModel.model.get_n_items() ? 'empty' : !this.#filterModel.get_n_items() ? 'no-results' : 'main' } setModel(model) { this.#filterModel.model = model this.#update() } showGrid() { this._scrolled.child?.unparent() this._scrolled.child = utils.connect(new Gtk.GridView({ single_click_activate: true, max_columns: 20, vscroll_policy: Gtk.ScrollablePolicy.NATURAL, model: new Gtk.NoSelection({ model: this.#filterModel }), factory: utils.connect(new Gtk.SignalListItemFactory(), { 'setup': (_, item) => item.child = utils.connect(new BookItem(), this.#itemConnections), 'bind': (_, { child, item }) => { const { cover, data } = this.#getData(item, showCovers) child.update(item, data, cover) if (cover?.then) cover .then(cover => child.update(item, data, cover)) .catch(e => console.warn(e)) }, }), }), { 'activate': (_, pos) => this.emit('activate', this.#filterModel.get_item(pos)) }) this._scrolled.child.remove_css_class('view') } showList() { this._scrolled.child?.unparent() this._scrolled.child = new Adw.ClampScrollable({ child: utils.connect(utils.addClass(new Gtk.ListView({ single_click_activate: true, model: new Gtk.NoSelection({ model: this.#filterModel }), factory: utils.connect(new Gtk.SignalListItemFactory(), { 'setup': (_, item) => item.child = utils.connect( new BookRow(), this.#itemConnections), 'bind': (_, { child, item }) => { const { data } = this.#getData(item, false) child.update(item, data) }, }), }), 'book-list'), { 'activate': (_, pos) => this.emit('activate', this.#filterModel.get_item(pos)) }), }) } #getData(file, getCover) { const books = getBooks() const data = books.readFile(file) const identifier = data?.metadata?.identifier const cover = getCover && identifier ? books.readCover(identifier) : null return { cover, data } } search(text) { const q = text.trim().toLowerCase() if (!q) { this.#filter.set_filter_func(null) return } this.emit('load-all') const fields = ['title', 'creator', 'description'] const { readFile } = this.#filterModel.model this.#filter.set_filter_func(file => { const { metadata } = readFile(file) if (!metadata) return false return fields.some(field => matchString(metadata[field], q)) }) } removeBook(file) { const dialog = new Adw.AlertDialog({ heading: _('Remove Book?'), body: _('Reading progress, annotations, and bookmarks will be permanently lost'), }) dialog.add_response('cancel', _('_Cancel')) dialog.add_response('remove', _('_Remove')) dialog.set_response_appearance('remove', Adw.ResponseAppearance.DESTRUCTIVE) dialog.present(this.get_root()) dialog.connect('response', (_, response) => { if (response === 'remove') getBooks().delete(file) }) } openWithExternalApp(file) { if (!file) return const path = file.get_path() if (!path) return const dialog = new Gtk.AppChooserDialog({ gfile: file, modal: true, transient_for: this.root, }) dialog.connect('response', (dialog, response) => { if (response === Gtk.ResponseType.OK) { const app_info = dialog.get_app_info() if (app_info) { try { app_info.launch([file], null) } catch (e) { console.error( 'Failed to open file with selected application:', e, ) this.root.error( _('Failed to Open'), _('Could not open the file with the selected application'), ) } } } dialog.destroy() }) dialog.show() } }) GObject.registerClass({ GTypeName: 'FoliateOPDSView', Signals: { 'state-changed': { param_types: [GObject.TYPE_JSOBJECT] }, }, }, class extends Adw.Bin { #downloads = new Map() #state constructor(params) { super(params) this.actionGroup = utils.addMethods(this, { actions: [ 'back', 'forward', 'search', ], }) for (const action of ['back', 'forward', 'search']) this.actionGroup.lookup_action(action).enabled = false } init() { const webView = new WebView({ settings: new WebKit.Settings({ enable_write_console_messages_to_stdout: true, enable_developer_extras: true, enable_back_forward_navigation_gestures: false, enable_hyperlink_auditing: false, enable_html5_database: false, enable_html5_local_storage: false, enable_javascript_markup: false, disable_web_security: true, user_agent: pkg.userAgent, }), }) const initFuncs = [ webView.provide('formatNumber', format.number), webView.provide('formatMime', format.mime), webView.provide('formatPrice', price => price ? format.price(price.currency, price.value) : ''), webView.provide('formatLanguage', format.language), webView.provide('formatDate', format.date), webView.provide('formatList', format.list), webView.provide('matchLocales', format.matchLocales), ] utils.connect(webView, { 'context-menu': () => false, 'load-changed': (webView, event) => { if (event === WebKit.LoadEvent.FINISHED) { const lang = format.locales[0].baseName webView.run(`globalThis.uiText = ${JSON.stringify(uiText)} document.documentElement.lang = "${lang}" import('./main.js').catch(e => console.error(e))`) .catch(e => console.error(e)) for (const f of initFuncs) f() // update after going back/foward webView.exec('updateState') // it will fail when the page first loads but that's ok .catch(e => console.debug(e)) } }, 'decide-policy': (_, decision, type) => { switch (type) { case WebKit.PolicyDecisionType.NAVIGATION_ACTION: case WebKit.PolicyDecisionType.NEW_WINDOW_ACTION: { const { uri } = decision.navigation_action.get_request() if (!uri.startsWith('foliate-opds:') && !uri.startsWith('blob:') && uri !== 'about:blank') { decision.ignore() new Gtk.UriLauncher({ uri }).launch(this.root, null, null) return true } } } }, }) webView.registerHandler('opds', payload => { switch (payload.type) { case 'download': this.download(payload); break case 'cancel': this.#downloads.get(payload.token)?.deref()?.cancel() break case 'state': this.#state = payload.state this.actionGroup.lookup_action('search').enabled = !!this.#state?.search && !!this.#state?.searchEnabled this.emit('state-changed', this.#state) break } }) webView.get_back_forward_list().connect('changed', () => { this.actionGroup.lookup_action('back').enabled = webView.can_go_back() this.actionGroup.lookup_action('forward').enabled = webView.can_go_forward() }) webView.set_background_color(new Gdk.RGBA()) this.child = webView } load(url, isSearch) { this.actionGroup.lookup_action('search').enabled = false if (!this.child) this.init() if (isSearch && url === '#search') { this.child.run("location = location.href.split('#')[0] + '#search'") .then(() => this.child.grab_focus()) .catch(e => console.debug(e)) return } url = url.replace(/^opds:\/\//, 'http://') if (!url.includes(':')) url = 'http://' + url this.child.loadURI(`foliate-opds:///opds/main.html?url=${encodeURIComponent(url)}`) .then(() => this.child.grab_focus()) .catch(e => console.error(e)) } back() { this.child.go_back() } forward() { this.child.go_forward() } search() { if (this.#state?.search) this.load(this.#state.search, true) } download({ href, token }) { const webView = this.child new Promise((resolve, reject) => { let file const download = utils.connect(webView.download_uri(href), { 'decide-destination': (download, initial_name) => { new Gtk.FileDialog({ initial_name }) .save(this.root, null, (dialog, res) => { try { file = dialog.save_finish(res) download.set_destination(file.get_path()) } catch (e) { if (e instanceof Gtk.DialogError) console.debug(e) else console.error(e) download.cancel() } }) return true }, 'notify::estimated-progress': download => webView.exec('updateProgress', { progress: download.estimated_progress, token }), 'finished': () => { this.#downloads.delete(token) webView.exec('finishDownload', { token }) resolve(file) }, 'failed': (download, error) => { if (error.code === WebKit.DownloadError.CANCELLED_BY_USER) return reject(error) }, }) download.allow_overwrite = true this.#downloads.set(token, new WeakRef(download)) }) .then(file => { if (file) new Gtk.FileLauncher({ file, always_ask: true }) .launch(this.root, null, null) }) .catch(e => { console.error(e) this.root.error(_('Download Failed'), _('An error occurred')) }) } vfunc_unroot() { this.child?.unparent() this.child?.run_dispose() } }) const catalogsStore = new utils.JSONStorage(pkg.datapath('catalogs'), 'catalogs', 2) const SidebarItem = utils.makeDataClass('FoliateSidebarItem', { 'type': 'string', 'icon': 'string', 'label': 'string', 'value': 'string', }) const SidebarRow = GObject.registerClass({ GTypeName: 'FoliateSidebarRow', Properties: utils.makeParams({ 'item': 'object', }), Signals: { 'remove-catalog': { param_types: [GObject.TYPE_OBJECT] }, }, }, class extends Gtk.Box { #icon = new Gtk.Image() #label = new Gtk.Label({ ellipsize: Pango.EllipsizeMode.END, }) #menu = new Gio.Menu() #popover = new Gtk.PopoverMenu({ has_arrow: false, halign: Gtk.Align.START, menu_model: this.#menu, }) constructor(params) { super(params) this.spacing = 12 this.margin_start = 6 this.append(this.#icon) this.append(this.#label) this.item.bindProperties({ icon: [this.#icon, 'icon-name'], label: [this.#label, 'label'], }) this.insert_action_group('catalog-item', utils.addSimpleActions({ 'rename': () => this.rename(), 'remove': () => this.emit('remove-catalog', this.item), })) this.#popover.set_parent(this) this.#menu.append(_('Rename…'), 'catalog-item.rename') this.#menu.append(_('Remove'), 'catalog-item.remove') this.add_controller(utils.connect(new Gtk.GestureClick({ button: Gdk.BUTTON_SECONDARY, }), { 'pressed': (_, __, x, y) => { if (this.item.type === 'catalog') { this.#popover.pointing_to = new Gdk.Rectangle({ x, y }) this.#popover.popup() } }, })) } rename() { const { window, button } = this.root.actionDialog() const submit = () => { const text = entry.text.trim() if (!text) return this.item.set_property('label', text) window.close() } window.title = _('Rename') button.label = _('Rename') button.connect('clicked', submit) const page = new Adw.PreferencesPage() const group = new Adw.PreferencesGroup() const entry = utils.connect(new Adw.EntryRow({ title: _('Name'), text: this.item.label, input_purpose: Gtk.InputPurpose.URL, }), { 'entry-activated': submit }) group.add(entry) page.add(group) window.content.content = page window.show() entry.grab_focus() } }) const sidebarListModel = new Gio.ListStore() sidebarListModel.append(new SidebarItem({ icon: 'library-symbolic', label: _('All Books'), value: 'library', })) sidebarListModel.append(new SidebarItem({ type: 'action', icon: 'list-add-symbolic', label: _('Add Catalog…'), value: 'add-catalog', })) const exportCatalogItems = () => Array.from(utils.gliter(sidebarListModel), ([, item]) => item.type === 'catalog' ? { title: item.label, uri: item.value, } : null).filter(x => x) const saveCatalogs = () => catalogsStore.set('catalogs', exportCatalogItems()) const addCatalogItem = (label, value) => { const item = new SidebarItem({ type: 'catalog', icon: 'application-rss+xml-symbolic', label, value, }) item.connectAll(saveCatalogs) sidebarListModel.insert(sidebarListModel.get_n_items() - 1, item) } const addCatalog = catalog => { for (const [, item] of utils.gliter(sidebarListModel)) if (item.type === 'catalog' && item.value === catalog.uri) return addCatalogItem(catalog.title, catalog.uri) saveCatalogs() } const removeCatalog = uri => { for (const [i, item] of utils.gliter(sidebarListModel)) if (item.type === 'catalog' && item.value === uri) { sidebarListModel.remove(i) break } saveCatalogs() } for (const catalog of catalogsStore.get('catalogs', defaultCatalogs)) { if (typeof catalog.title === 'string' && typeof catalog.uri === 'string') addCatalogItem(catalog.title, catalog.uri) } export const Library = GObject.registerClass({ GTypeName: 'FoliateLibrary', Template: pkg.moduleuri('ui/library.ui'), InternalChildren: [ 'breakpoint-bin', 'split-view', 'sidebar-list-box', 'main-stack', 'library-toolbar-view', 'catalog-toolbar-view', 'books-view', 'search-bar', 'search-entry', 'opds-view', ], }, class extends Gtk.Box { constructor(params) { super(params) this._breakpoint_bin.add_breakpoint(utils.connect(new Adw.Breakpoint({ condition: Adw.BreakpointCondition.parse('max-width: 700px'), }), { 'apply': () => this._split_view.collapsed = true, 'unapply': () => this._split_view.collapsed = false, })) this._sidebar_list_box.set_header_func((row, before) => { if (!before) row.set_header(utils.addClass(new Gtk.Label({ label: _('Library'), xalign: 0, margin_start: 12, margin_bottom: 6, }), 'caption-heading', 'dim-label')) if (before && before.child.item.type !== 'catalog' && row.child.item.type === 'catalog') row.set_header(utils.addClass(new Gtk.Label({ label: _('Catalogs'), xalign: 0, margin_start: 12, margin_top: 18, margin_bottom: 6, }), 'caption-heading', 'dim-label')) }) this._sidebar_list_box.add_controller(utils.connect(Gtk.DropTarget.new( SidebarItem.$gtype, Gdk.DragAction.MOVE), { 'motion': (_, _x, y) => { const row = this._sidebar_list_box.get_row_at_y(y) if (row && row.child.item.type === 'catalog') return Gdk.DragAction.MOVE }, 'drop': (_, value, _x, y) => { const row = this._sidebar_list_box.get_row_at_y(y) if (row && row.child.item.type === 'catalog') { let sourceItem, sourceIndex, targetIndex for (const [i, item] of utils.gliter(sidebarListModel)) { if (sourceIndex != null && targetIndex != null) break if (item.type === 'catalog') { if (item === value) { sourceItem = item sourceIndex = i } if (item.value === row.child.item.value) { targetIndex = i } } } if (sourceIndex === targetIndex) return sidebarListModel.remove(sourceIndex) if (sourceIndex < targetIndex + 1) targetIndex-- sidebarListModel.insert(targetIndex + 1, sourceItem) saveCatalogs() } }, })) this._sidebar_list_box.bind_model(sidebarListModel, item => { const child = utils.connect(new SidebarRow({ item }), { 'remove-catalog': (self, item) => { removeCatalog(item.value) this.root.add_toast(utils.connect(new Adw.Toast({ title: _('Catalog removed'), button_label: _('Undo'), }), { 'button-clicked': () => addCatalog({ title: item.label, uri: item.value, }) })) }, }) if (item.type === 'catalog') { child.add_controller(utils.connect(new Gtk.DragSource({ actions: Gdk.DragAction.MOVE, }), { 'prepare': (source, x, y) => { source.set_icon(new Gtk.WidgetPaintable({ widget: child }), x, y) const value = new GObject.Value() value.init(SidebarItem) value.set_object(item) return Gdk.ContentProvider.new_for_value(item) }, })) } return new Gtk.ListBoxRow({ child, selectable: item.value !== 'add-catalog' }) }) this._sidebar_list_box.connect('row-activated', (__, row) => { const { type, value } = row.child.item if (value === 'add-catalog') return this.addCatalog().catch(e => console.error(e)) if (value === 'library') return this._main_stack.visible_child = this._library_toolbar_view if (type === 'catalog') return this.showCatalog(value) }) this._sidebar_list_box.select_row(this._sidebar_list_box.get_row_at_index(0)) const books = getBooks() utils.connect(this._books_view, { 'activate': (_, item) => this.root.openFile(books.getBook(item)), 'load-more': () => books.loadMore(1), 'load-all': () => books.loadMore(Infinity), }) this._books_view.setModel(books) this._books_view.view_mode = 'grid' utils.bindSettings('library', this._books_view, ['view-mode']) books.loadMore(10) this._search_bar.connect_entry(this._search_entry) this._search_entry.connect('search-changed', entry => this._books_view.search(entry.text)) this.insert_action_group('library', this._books_view.actionGroup) this.insert_action_group('catalog', this._opds_view.actionGroup) } #addCatalog(url) { this._sidebar_list_box.select_row(null) const handler = this._opds_view.connect('state-changed', (_, state) => { this._opds_view.disconnect(handler) if (state) { const catalog = { title: state.title || '', uri: state.start || state.self, } addCatalog(catalog) for (let i = 0;; i++) { const row = this._sidebar_list_box.get_row_at_index(i) if (!row) break const { type, value } = row.child.item if (type === 'catalog' && value === catalog.uri) this._sidebar_list_box.select_row(row) } } }) this.showCatalog(url) } async addCatalog() { let text = '' try { text = await utils.getClipboardText() } catch (e) { console.warn(e) } const { window, button } = this.root.actionDialog() const submit = () => { const url = entry.text.trim() if (!url) return this.#addCatalog(url) window.close() } window.title = _('Add Catalog') button.label = _('Add') button.connect('clicked', submit) window.content.content = utils.addClass(new Adw.StatusPage({ icon_name: 'application-rss+xml-symbolic', title: _('Add Catalog'), description: _('You can browse and download books from OPDS catalogs. Learn More…'), }), 'compact') const group = new Adw.PreferencesGroup() const entry = utils.connect(new Adw.EntryRow({ title: _('URL'), input_purpose: Gtk.InputPurpose.URL, text: /^(http|https|opds):\/\//.test(text) ? text : '', }), { 'entry-activated': submit }) group.add(entry) window.content.content.child = group window.show() entry.grab_focus() } showCatalog(url) { this._main_stack.visible_child = this._catalog_toolbar_view this._opds_view.load(url) } }) ================================================ FILE: src/main.js ================================================ #!@GJS@ -m // eslint-disable-next-line no-useless-escape const MESON = '\@GJS@' !== '@GJS@' // the latter would be replace by Meson import Gtk from 'gi://Gtk?version=4.0' import Gio from 'gi://Gio?version=2.0' import GLib from 'gi://GLib?version=2.0' import 'gi://Adw?version=1' import 'gi://WebKit?version=6.0' import { programInvocationName, programArgs, exit } from 'system' import { bindtextdomain, textdomain, gettext as _ } from 'gettext' import { setConsoleLogDomain } from 'console' // mimics (loosely) the `pkg` object set up by GJS if you run `package.init()` globalThis.pkg = { name: 'com.github.johnfactotum.Foliate', version: '3.3.0', MESON, } pkg.userAgent = `Foliate/${pkg.version}` GLib.set_prgname(pkg.name) setConsoleLogDomain(pkg.name) Gtk.Window.set_default_icon_name(pkg.name) bindtextdomain(pkg.name, GLib.build_filenamev([MESON ? '@datadir@' : '/usr/share', 'locale'])) textdomain(pkg.name) pkg.localeName = _('Foliate') GLib.set_application_name(pkg.localeName) pkg.datadir = GLib.build_filenamev([GLib.get_user_data_dir(), pkg.name]) pkg.datapath = path => GLib.build_filenamev([pkg.datadir, path]) pkg.datafile = path => Gio.File.new_for_path(pkg.datapath(path)) pkg.configdir = GLib.build_filenamev([GLib.get_user_config_dir(), pkg.name]) pkg.configpath = path => GLib.build_filenamev([pkg.configdir, path]) pkg.cachedir = GLib.build_filenamev([GLib.get_user_cache_dir(), pkg.name]) pkg.cachepath = path => GLib.build_filenamev([pkg.cachedir, path]) if (MESON) { // when using Meson, load from compiled GResource binary Gio.Resource .load(GLib.build_filenamev(['@datadir@', pkg.name, `${pkg.name}.gresource`])) ._register() const moduledir = '/' + pkg.name.replaceAll('.', '/') pkg.modulepath = path => GLib.build_filenamev([moduledir, path]) pkg.moduleuri = path => `resource://${pkg.modulepath(path)}` } else { const moduledir = GLib.path_get_dirname(GLib.filename_from_uri(import.meta.url)[0]) pkg.modulepath = path => GLib.build_filenamev([moduledir, path]) pkg.moduleuri = path => GLib.filename_to_uri(pkg.modulepath(path), null) } pkg.useResource = MESON const { Application } = await import(pkg.moduleuri('app.js')) exit(await new Application().runAsync([programInvocationName, ...programArgs])) ================================================ FILE: src/meson.build ================================================ bin_conf = configuration_data() bin_conf.set('GJS', gjs.get_variable(pkgconfig: 'gjs_console')) bin_conf.set('datadir', join_paths(get_option('prefix'), get_option('datadir'))) configure_file( input: 'main.js', output: 'foliate', configuration: bin_conf, install_dir: get_option('bindir'), ) pkgdatadir = join_paths(get_option('datadir'), meson.project_name()) src_res = gnome.compile_resources( meson.project_name(), 'gresource.xml', gresource_bundle: true, install: true, install_dir: pkgdatadir, ) ================================================ FILE: src/navbar.js ================================================ import Gtk from 'gi://Gtk' import GObject from 'gi://GObject' import Pango from 'gi://Pango' import * as utils from './utils.js' import * as format from './format.js' import './tts.js' const ONE_HUNDRED_PERCENT_LENGTH = format.percent(1).length const Landmark = utils.makeDataClass('FoliateLandmark', { 'label': 'string', 'href': 'string', }) GObject.registerClass({ GTypeName: 'FoliateLandmarkView', Signals: { 'go-to-href': { param_types: [GObject.TYPE_STRING], }, }, }, class extends Gtk.ListView { constructor(params) { super(params) this.model = new Gtk.NoSelection() this.connect('activate', (_, pos) => { const { href } = this.model.model.get_item(pos) ?? {} if (href) this.emit('go-to-href', href) }) this.factory = utils.connect(new Gtk.SignalListItemFactory(), { 'setup': (_, listItem) => listItem.child = new Gtk.Label({ xalign: 0, ellipsize: Pango.EllipsizeMode.END, }), 'bind': (_, { child, item }) => { const label = item.label ?? '' child.label = label child.tooltip_text = label }, }) } load(landmarks) { this.model.model = landmarks?.length ? utils.list(landmarks.map(({ label, href }) => ({ label, href })), Landmark) : null } }) GObject.registerClass({ GTypeName: 'FoliatePageListDropDown', Signals: { 'go-to-href': { param_types: [GObject.TYPE_STRING] }, }, }, class extends Gtk.DropDown { #hrefs #indices #shouldGo = true constructor(params) { super(params) this.expression = Gtk.PropertyExpression.new(Gtk.StringObject, null, 'string') this.enable_search = true this.connect('notify::selected', () => { if (this.#shouldGo) { const href = this.#hrefs.get(this.selected) if (href) this.emit('go-to-href', href) } }) } load(pageList) { pageList ??= [] this.#hrefs = new Map() this.#indices = new Map() const list = new Gtk.StringList() this.model = list for (const [i, { id, label, href }] of pageList.entries()) { list.append(label ?? '') this.#hrefs.set(i, href) this.#indices.set(id, i) } } update(item) { this.#shouldGo = false this.selected = this.#indices?.get?.(item?.id) ?? 0xffffffff this.#shouldGo = true } }) GObject.registerClass({ GTypeName: 'FoliateProgressScale', Signals: { 'go-to-fraction': { param_types: [GObject.TYPE_DOUBLE] }, }, }, class extends Gtk.Scale { #shouldUpdate = true #shouldGo = true constructor(params) { super(params) this.connect('value-changed', scale => { if (this.#shouldGo) { this.#shouldUpdate = false this.emit('go-to-fraction', scale.get_value()) } }) } loadSectionFractions(fractions) { this.clear_marks() for (const fraction of fractions.slice(1, -1)) this.add_mark(fraction, Gtk.PositionType.TOP, null) } update(fraction) { if (this.#shouldUpdate) { this.#shouldGo = false this.set_value(fraction) this.#shouldGo = true } else this.#shouldUpdate = true } }) GObject.registerClass({ GTypeName: 'FoliateNavBar', Template: pkg.moduleuri('ui/navbar.ui'), Children: ['tts-box', 'media-overlay-box'], InternalChildren: [ 'prev-image', 'next-image', 'back-image', 'forward-image', 'progress-box', 'progress-scale', 'location-button', 'location-popover', 'tts-popover', 'tts-stack', 'time-book', 'time-section', 'page-label', 'page-box', 'page-drop-down', 'page-total', 'loc-entry', 'loc-total', 'cfi-entry', 'section-entry', 'section-total', 'section-buttons', 'location-popover-stack', 'landmark-view', 'landmark-toggle', ], Signals: { 'go-to-cfi': { param_types: [GObject.TYPE_STRING] }, 'go-to-section': { param_types: [GObject.TYPE_UINT] }, 'go-to-fraction': { param_types: [GObject.TYPE_DOUBLE] }, 'opened': {}, 'closed': {}, }, }, class extends Gtk.Box { #locationTotal constructor(params) { super(params) const closed = () => this.emit('closed') this._location_popover.connect('closed', () => { this._landmark_toggle.active = false closed() }) this._tts_popover.connect('closed', closed) this._loc_entry.connect('activate', entry => { this.emit('go-to-fraction', parseInt(entry.text) / this.#locationTotal) this._location_popover.popdown() }) this._cfi_entry.connect('activate', entry => this.emit('go-to-cfi', entry.text)) this._section_entry.connect('activate', entry => this.emit('go-to-section', parseInt(entry.text) - 1)) this._progress_scale.connect('go-to-fraction', (_, value) => this.emit('go-to-fraction', value)) this._page_drop_down.connect('go-to-href', (_, href) => this.emit('go-to-cfi', href)) this._landmark_view.connect('go-to-href', (_, href) => this.emit('go-to-cfi', href)) this._landmark_toggle.connect('toggled', toggle => this._location_popover_stack.visible_child_name = toggle.active ? 'landmarks' : 'main') this.connect('go-to-cfi', () => this._location_popover.popdown()) this.connect('go-to-section', () => this._location_popover.popdown()) const actions = utils.addMethods(this, { actions: ['copy-cfi', 'paste-cfi', 'toggle-landmarks'], }) this.insert_action_group('navbar', actions) } get shouldStayVisible() { return this._location_popover.visible || this._tts_popover.visible } update(progress) { const { fraction, section, location, time, cfi, pageItem } = progress this._cfi_entry.text = cfi ?? '' this._progress_scale.update(fraction) this._location_button.label = format.percent(fraction) .padStart(ONE_HUNDRED_PERCENT_LENGTH, '\u2007') this._time_book.label = format.duration(time.total) this._time_section.label = format.duration(time.section) this._loc_entry.text = (location.current + 1).toString() this._loc_total.label = format.total(location.total) this.#locationTotal = location.total this._section_entry.text = (section.current + 1).toString() this._section_total.label = format.total(section.total) this._page_drop_down.update(pageItem) } setDirection(dir) { const value = utils.getGtkDir(dir) for (const widget of [this, this._progress_box, this._progress_scale, this._prev_image, this._next_image, this._back_image, this._forward_image]) widget.set_direction(value) utils.setDirection(this._section_buttons, value) } loadSectionFractions(fractions) { this._progress_scale.loadSectionFractions(fractions) } loadPageList(pageList, total) { if (!pageList?.length) { this._page_box.hide() this._page_label.hide() return } this._page_box.show() this._page_label.show() this._page_drop_down.load(pageList) this._page_total.label = total ? format.total(total) : '' } loadLandmarks(landmarks) { this._landmark_toggle.sensitive = landmarks?.length ? true : false this._landmark_view.load(landmarks) } copyCfi() { utils.setClipboardText(this._cfi_entry.text, this.root) this._location_popover.popdown() } pasteCfi() { utils.getClipboardText() .then(text => this.emit('go-to-cfi', text)) .catch(e => console.warn(e)) } showLocation() { this.emit('opened') this._location_button.popup() } setTTSType(name) { this._tts_stack.visible_child_name = name this._tts_popover.default_widget = this._tts_stack.visible_child.defaultWidget } }) ================================================ FILE: src/opds/main.html ================================================


================================================ FILE: src/opds/main.js ================================================ import '../common/widgets.js' import { REL, SYMBOL, isOPDSCatalog, getPublication, getFeed, getSearch, getOpenSearch } from '../foliate-js/opds.js' const emit = x => globalThis.webkit.messageHandlers.opds .postMessage(JSON.stringify(x)) const MIME = { XML: 'application/xml', ATOM: 'application/atom+xml', XHTML: 'application/xhtml+xml', HTML: 'text/html', OPENSEARCH: 'application/opensearchdescription+xml', } const PAGINATION = Symbol('pagination') const groupByArray = (arr, f) => { const map = new Map() if (arr) for (const el of arr) { const keys = f(el) for (const key of [keys].flat()) { const group = map.get(key) if (group) group.push(el) else map.set(key, [el]) } } return map } const filterKeys = (map, f) => Array.from(map, ([key, val]) => f(key) ? [key, val] : null).filter(x => x) const resolveURL = (url, relativeTo) => { if (!url) return '' try { if (relativeTo.includes(':')) return new URL(url, relativeTo).toString() // the base needs to be a valid URL, so set a base URL and then remove it const root = 'https://invalid.invalid/' const obj = new URL(url, root + relativeTo) obj.search = '' return decodeURI(obj.href.replace(root, '')) } catch(e) { console.warn(e) return url } } // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.1 const parseMediaType = str => { if (!str) return null const [mediaType, ...ps] = str.split(/ *; */) return { mediaType: mediaType.toLowerCase(), parameters: Object.fromEntries(ps.map(p => { const [name, val] = p.split('=') return [name.toLowerCase(), val?.replace(/(^"|"$)/g, '')] })), } } const formatElementList = async els => { const arr = els.slice(0) return (await globalThis.formatList(els.map(() => '%s'))) .split(/(%s)/g) .map(str => str === '%s' ? arr.shift() : document.createTextNode(str)) } customElements.define('opds-nav', class extends HTMLElement { static observedAttributes = ['heading', 'count', 'description', 'href'] #root = this.attachShadow({ mode: 'closed' }) constructor() { super() this.attachInternals().role = 'listitem' const template = document.querySelector('#opds-nav') this.#root.append(template.content.cloneNode(true)) } attributeChangedCallback(name, _, val) { switch (name) { case 'heading': this.#root.querySelector('h1 a').textContent = val break case 'count': this.#root.querySelector('#count').textContent = val break case 'description': this.#root.querySelector('p').textContent = val break case 'href': this.#root.querySelector('a').href = val break } } }) customElements.define('opds-pub', class extends HTMLElement { static observedAttributes = ['heading', 'author', 'price', 'image', 'href'] #root = this.attachShadow({ mode: 'closed' }) constructor() { super() this.attachInternals().role = 'listitem' const template = document.querySelector('#opds-pub') this.#root.append(template.content.cloneNode(true)) } attributeChangedCallback(name, _, val) { switch (name) { case 'heading': this.#root.querySelector('h1 a').textContent = val break case 'author': this.#root.querySelector('#author').textContent = val break case 'price': this.#root.querySelector('#price').textContent = val break case 'image': this.#root.querySelector('img').src = val break case 'href': this.#root.querySelector('a').href = val break } } }) customElements.define('opds-pub-full', class extends HTMLElement { static observedAttributes = ['description', 'progress'] #root = this.attachShadow({ mode: 'closed' }) constructor() { super() this.attachInternals().role = 'article' const template = document.querySelector('#opds-pub-full') this.#root.append(template.content.cloneNode(true)) const frame = this.#root.querySelector('iframe') frame.onload = () => { const doc = frame.contentDocument const sheet = new doc.defaultView.CSSStyleSheet() sheet.replaceSync(` html, body { color-scheme: light dark; font: menu; font-size: 11pt; margin: 0; overflow-wrap: anywhere; } a:any-link { color: highlight; }`) doc.adoptedStyleSheets = [sheet] const updateHeight = () => frame.style.height = `${doc.documentElement.getBoundingClientRect().height}px` updateHeight() new ResizeObserver(updateHeight).observe(doc.documentElement) } } attributeChangedCallback(name, _, val) { switch (name) { case 'description': this.#root.querySelector('iframe').src = val break case 'progress': { const progress = this.#root.querySelector('#downloading progress') if (val) progress.value = val else progress.removeAttribute('value') break } } } disconnectedCallback() { this.dispatchEvent(new Event('cancel-download')) } }) const renderLanguageMap = async x => { if (!x) return '' if (typeof x === 'string') return x const keys = Object.keys(x) return x[(await globalThis.matchLocales(keys))[0]] ?? x.en ?? x[keys[0]] } const renderLinkedObject = (object, baseURL) => { const a = document.createElement('a') const link = object.links?.find(link => isOPDSCatalog(link.type)) ?? object.links?.[0] if (link) a.href = '?url=' + encodeURIComponent(resolveURL(link.href, baseURL)) return a } const renderContributor = async (contributor, baseURL) => { if (!contributor) return [] const as = await Promise.all([contributor ?? []].flat().map(async contributor => { const a = renderLinkedObject(contributor, baseURL) a.textContent = typeof contributor === 'string' ? contributor : await renderLanguageMap(contributor.name) if (contributor.position != null) { const span = document.createElement('span') span.textContent = contributor.position // TODO: localize this return [a, document.createTextNode('\u00a0'), span] } return a })) return (as.length <= 1 ? as : await formatElementList(as)).flat() } const renderContributorText = async contributor => { const arr = await Promise.all([contributor ?? []].flat().map(async contributor => typeof contributor === 'string' ? contributor : await renderLanguageMap(contributor.name))) return globalThis.formatList(arr) } const renderAcquisitionButton = async (rel, links, callback) => { const label = globalThis.uiText.acq[rel] ?? globalThis.uiText.acq[REL.ACQ] const price = await globalThis.formatPrice(links[0].properties?.price) const button = document.createElement('button') button.classList.add('raised', 'pill') button.textContent = price ? `${label} · ${price}` : label button.onclick = () => callback(links[0].href, links[0].type) button.dataset.rel = rel if (links.length === 1) return button else { const menuButton = document.createElement('foliate-menubutton') const menuButtonButton = document.createElement('button') menuButtonButton.classList.add('raised', 'pill') menuButton.append(menuButtonButton) const icon = document.createElement('foliate-symbolic') icon.setAttribute('src', '/icons/hicolor/scalable/actions/pan-down-symbolic.svg') menuButtonButton.append(icon) const menu = document.createElement('foliate-menu') menu.slot = 'menu' menuButton.append(menu) for (const link of links) { const type = parseMediaType(link.properties?.indirectAcquisition?.at(-1)?.type ?? link.type)?.mediaType const price = await globalThis.formatPrice(links[0].properties?.price) const menuitem = document.createElement('button') menuitem.role = 'menuitem' menuitem.textContent = (link.title || await globalThis.formatMime(type)) + (price ? ' · ' + price : '') menuitem.onclick = () => callback(link.href, link.type) menu.append(menuitem) } const div = document.createElement('div') div.classList.add('split-button') div.replaceChildren(button, menuButton) div.dataset.rel = rel return div } } const renderAcquisitionButtons = (links, callback) => Promise.all(filterKeys(links, rel => rel.startsWith(REL.ACQ)) .map(([rel, links]) => renderAcquisitionButton(rel, links, callback))) const renderFacets = (facets, baseURL) => facets.map(({ metadata, links }) => { const section = document.createElement('section') const h = document.createElement('h3') h.textContent = metadata.title ?? '' const l = document.createElement('ul') l.append(...links.map(link => { const li = document.createElement('li') const a = document.createElement('a') const href = resolveURL(link.href, baseURL) a.href = isOPDSCatalog(link.type) ? '?url=' + encodeURIComponent(href) : href const title = link.title ?? '' a.title = title a.textContent = title li.append(a) const count = link.properties?.numberOfItems if (count) { const span = document.createElement('span') span.textContent = count li.append(span) } if (link.rel === 'self' || link.rel?.includes('self')) li.ariaCurrent = 'true' return li })) section.append(h, l) return section }) const renderImages = (images, isThumbnail, baseURL) => { const img = document.createElement('img') img.loading = 'lazy' const hasSizes = images?.filter(link => link.width > 0 && link.height > 0) if (hasSizes?.length) { const widest = hasSizes.reduce((state, link) => { if (link.width >= state.width) state.link = link return state }, { width: 0 }).link img.width = widest.width img.height = widest.height img.srcset = hasSizes.map(link => `${resolveURL(link.href, baseURL)} ${link.width}w`).join(',') } else { img.width = 120 img.height = 180 const map = groupByArray(images, link => link.rel) const getByRels = rels => rels.flatMap(rel => map.get(rel) ?? [])[0] ?? images?.[0] const src = isThumbnail ? resolveURL(getByRels(REL.THUMBNAIL)?.href, baseURL) : resolveURL(getByRels(REL.COVER)?.href, baseURL) if (src) img.src = src } return img } const renderIdentifier = identifier => { if (!identifier) return const el = document.createElement('code') el.textContent = identifier return [el] } const renderContent = (value, type, baseURL) => { const doc = type === 'xhtml' ? document.implementation.createDocument('http://www.w3.org/1999/xhtml', 'html') : document.implementation.createHTMLDocument() if (type === 'xhtml') { doc.documentElement.append(doc.createElement('head')) doc.documentElement.append(doc.createElement('body')) } const meta = doc.createElement('meta') meta.setAttribute('http-equiv', 'Content-Security-Policy') meta.setAttribute('content', "default-src 'none';") const base = doc.createElement('base') base.href = baseURL doc.head.append(meta, base) if (!type || type === 'text') doc.body.textContent = value else doc.body.innerHTML = value return new Blob([new XMLSerializer().serializeToString(doc)], { type: type === 'xhtml' ? MIME.XHTML : MIME.HTML }) } const renderGroups = async (groups, baseURL) => (await Promise.all(groups.map(async (group, groupIndex) => { const { metadata, links, publications, navigation } = group const paginationItems = group[PAGINATION]?.map((links, i) => { links ??= [] const a = renderLinkedObject({ links }, baseURL) a.textContent = globalThis.uiText.pagination[i] return a }) const pagination = paginationItems?.filter(a => a.href)?.length ? document.createElement('nav') : null if (pagination) pagination.append(...paginationItems) const container = document.createElement('div') container.classList.add('container') container.replaceChildren(...await Promise.all((publications ?? navigation).map(async (item, itemIndex) => { const isPub = 'metadata' in item const el = document.createElement(isPub ? 'opds-pub' : 'opds-nav') if (isPub) { const linksByRel = groupByArray(item.links, link => link.rel) el.setAttribute('heading', await renderLanguageMap(item.metadata.title)) el.setAttribute('author', await renderContributorText(item.metadata.author)) el.setAttribute('price', (await globalThis.formatPrice( item.links?.find(link => link.properties?.price)?.properties?.price)) || (linksByRel.has(REL.ACQ + '/open-access') ? globalThis.uiText.openAccess : '')) const img = renderImages(item.images, true, baseURL) img.slot = 'image' el.append(img) const alternate = linksByRel.get('alternate')?.find(link => { const parsed = parseMediaType(link.type) if (!parsed) return return parsed.mediaType === MIME.ATOM && parsed.parameters.profile === 'opds-catalog' && parsed.parameters.type === 'entry' }) el.setAttribute('href', alternate?.href ? '?url=' + encodeURIComponent(resolveURL(alternate.href, baseURL)) : '#' + groupIndex + ',' + itemIndex) } else { el.setAttribute('heading', item.title ?? '') el.setAttribute('count', await globalThis.formatNumber(item.properties?.numberOfItems)) el.setAttribute('description', item[SYMBOL.SUMMARY] ?? '') const href = resolveURL(item.href, baseURL) el.setAttribute('href', '?url=' + encodeURIComponent(href)) } return el }))) if (!metadata) return pagination ? [container, pagination] : container const div = document.createElement('div') const h = document.createElement('h2') h.textContent = metadata.title ?? '' div.append(h) const link = groupByArray(links, link => link.rel).get('self')?.[0] if (link) { const a = document.createElement('a') const url = resolveURL(link.href, baseURL) a.href = isOPDSCatalog(link.type) ? '?url=' + encodeURIComponent(url) : url a.textContent = globalThis.uiText.viewCollection div.append(a) } div.classList.add('carousel-header') container.classList.add('carousel') return [document.createElement('hr'), div, container] }))).flat() const entryMap = new Map() globalThis.updateProgress = ({ progress, token }) => entryMap.get(token)?.deref()?.setAttribute('progress', progress) globalThis.finishDownload = ({ token }) => entryMap.get(token)?.deref()?.removeAttribute('downloading') const renderPublication = async (pub, baseURL) => { const item = document.createElement('opds-pub-full') const token = new Date() + Math.random() entryMap.set(token, new WeakRef(item)) const download = (href, type) => { href = resolveURL(href, baseURL) if (parseMediaType(type)?.mediaType === MIME.HTML) { location = href return } item.setAttribute('downloading', '') item.removeAttribute('progress') emit({ type: 'download', href, token }) } const cancelButton = document.createElement('button') cancelButton.slot = 'cancel' cancelButton.title = globalThis.uiText.cancel item.append(cancelButton) const icon = document.createElement('foliate-symbolic') icon.setAttribute('src', '/icons/hicolor/scalable/actions/stop-sign-symbolic.svg') cancelButton.append(icon) cancelButton.addEventListener('click', () => emit({ type: 'cancel', token })) const img = renderImages(pub.images, false, baseURL) img.slot = 'image' item.append(img) const metadata = pub.metadata ?? {} const hgroup = document.createElement('hgroup') hgroup.slot = 'heading' item.append(hgroup) const series = document.createElement('p') series.append(...await renderContributor(metadata.belongsTo?.series, baseURL)) const h1 = document.createElement('h1') h1.textContent = await renderLanguageMap(metadata.title) const subtitle = document.createElement('p') subtitle.textContent = await renderLanguageMap(metadata.subtitle) hgroup.append(series, h1, subtitle) const authors = document.createElement('p') authors.slot = 'authors' item.append(authors) authors.append(...await renderContributor(metadata.author, baseURL)) const blob = metadata[SYMBOL.CONTENT] ? renderContent(metadata[SYMBOL.CONTENT].value, metadata[SYMBOL.CONTENT].type, baseURL) : metadata.description ? renderContent(metadata.description, 'html', baseURL) : null if (blob) item.setAttribute('description', URL.createObjectURL(blob)) const actions = document.createElement('div') item.append(actions) actions.slot = 'actions' actions.append(...await renderAcquisitionButtons(groupByArray(pub.links, link => link.rel), download)) const details = document.createElement('div') details.slot = 'details' item.append(details) const table = document.createElement('table') details.append(table) for (const [k, v] of [ ['publisher', await renderContributor(metadata.publisher, baseURL)], ['published', await globalThis.formatDate(metadata.published)], ['language', await globalThis.formatList( await Promise.all([metadata.language ?? []].flat() .map(x => globalThis.formatLanguage(x))))], ['identifier', renderIdentifier(metadata.identifier)], ]) { if (!v?.length) continue const tr = document.createElement('tr') const th = document.createElement('th') const td = document.createElement('td') tr.append(th, td) th.textContent = globalThis.uiText.metadata[k] td.append(...v) if (td.textContent.length > 30) tr.classList.add('long') table.append(tr) } const tags = document.createElement('div') tags.role = 'list' details.append(tags) tags.append(...[metadata.subject ?? []].flat().map(subject => { const li = document.createElement('div') li.role = 'listitem' const icon = document.createElement('foliate-symbolic') icon.setAttribute('src', '/icons/hicolor/scalable/actions/tag-symbolic.svg') const a = renderLinkedObject(subject, baseURL) a.textContent = typeof subject === 'string' ? subject : subject.name ?? subject.code li.append(icon, a) return li })) return item } const renderEntry = (pub, baseURL) => { document.querySelector('#stack').showChild(document.querySelector('#entry')) return renderPublication(pub, baseURL) .then(el => document.querySelector('#entry').append(el)) } const renderFeed = async (feed, baseURL) => { const { navigation, publications } = feed const linksByRel = groupByArray(feed.links, link => link.rel) const pagination = ['first', 'previous', 'next', 'last'] .map(rel => linksByRel.get(rel)) feed.groups = [ navigation ? { navigation, [PAGINATION]: !publications ? pagination : null } : null, publications ? { publications, [PAGINATION]: pagination } : null, ...(feed.groups ?? []), ].filter(x => x) const templatedSearch = linksByRel.get('search') ?.find(link => isOPDSCatalog(link.type) && link.templated) const atomSearch = templatedSearch ? null // can't find where this is specced, and it makes no sense, // but it's used by calibre and Thorium Reader // so apparently it's a thing... : linksByRel.get('search')?.find(link => parseMediaType(link.type)?.mediaType === MIME.ATOM && link.href?.includes('{searchTerms}')) globalThis.state = { title: feed.metadata?.title, self: resolveURL(linksByRel.get('self')?.[0]?.href, baseURL) || baseURL, start: resolveURL(linksByRel.get('start')?.[0]?.href, baseURL), search: templatedSearch || atomSearch ? '#search' : resolveURL(linksByRel.get('search') ?.find(link => parseMediaType(link.type).mediaType === MIME.OPENSEARCH)?.href, baseURL), searchEnabled: true, } globalThis.updateState() document.querySelector('#feed h1').textContent = await renderLanguageMap(feed.metadata?.title) document.querySelector('#feed p').textContent = await renderLanguageMap(feed.metadata?.subtitle) document.querySelector('#feed main').append(...await renderGroups(feed.groups, baseURL)) if (feed.facets) document.querySelector('#nav').append(...renderFacets(feed.facets, baseURL)) const update = () => { const hash = location.hash.slice(1) document.querySelector('#entry').replaceChildren() if (!hash || hash === 'nav') document.querySelector('#stack').showChild(document.querySelector('#feed')) else if (hash === 'search') { if (templatedSearch) getSearch(templatedSearch) .then(search => renderSearch(search, baseURL)) .catch(e => console.error(e)) else if (atomSearch) renderSearch({ metadata: { title: atomSearch.title }, // NOTE: no full OpenSearch support here search: map => resolveURL(atomSearch.href.replaceAll('{searchTerms}', encodeURIComponent(map.get(null).get('searchTerms'))), baseURL), params: [{ name: 'searchTerms' }], }) } else { const [groupIndex, itemIndex] = hash.split(',').map(x => parseInt(x)) const group = feed.groups[groupIndex] const items = group.publications ?? group.navigation renderEntry(items[itemIndex], baseURL) .catch(e => console.error(e)) } globalThis.state.searchEnabled = hash !== 'search' globalThis.updateState() } addEventListener('hashchange', update) update() } const renderSearch = (search, baseURL) => { document.querySelector('#search form').onsubmit = e => { e.preventDefault() const map = new Map() for (const input of document.querySelectorAll('#search input[data-param]')) { const { value } = input const { ns = null, param } = input.dataset if (map.has(ns)) map.get(ns).set(param, value) else map.set(ns, new Map([[param, value]])) } location = '?url=' + encodeURIComponent(resolveURL(search.search(map), baseURL)) } document.querySelector('#search h1').textContent = search.metadata.title ?? '' document.querySelector('#search p').textContent = search.metadata.description ?? '' document.querySelector('#search-params').replaceChildren(...search.params.map(obj => { const input = document.createElement('input') if (obj.ns) input.dataset.ns = obj.ns input.dataset.param = obj.name input.required = obj.required input.type = 'search' input.value = obj.value ?? '' const label = document.createElement('label') const span = document.createElement('span') span.textContent = obj.name === 'searchTerms' || obj.name === 'query' ? globalThis.uiText.query : globalThis.uiText.metadata[obj.name] ?? obj.name label.append(span, input) const p = document.createElement('p') p.append(label) return p })) document.querySelector('#stack').showChild(document.querySelector('#search')) document.querySelector('#search input').focus() } globalThis.updateState = () => emit({ type: 'state', state: globalThis.state }) document.querySelector('#loading h1').textContent = globalThis.uiText.loading document.querySelector('#error h1').textContent = globalThis.uiText.error document.querySelector('#error button').textContent = globalThis.uiText.reload document.querySelector('#error button').onclick = () => location.reload() document.querySelector('#feed a[href="#nav"]').title = globalThis.uiText.filter document.querySelector('#search button').textContent = globalThis.uiText.search try { const params = new URLSearchParams(location.search) const res = await fetch(params.get('url')) if (!res.ok) throw new Error(`${res.status} ${res.statusText}`) const url = res.url const text = await res.text() if (text.startsWith('<')) { const doc = new DOMParser().parseFromString(text, MIME.XML) const { documentElement: { localName } } = doc if (localName === 'feed') await renderFeed(getFeed(doc), url) else if (localName === 'entry') await renderEntry(getPublication(doc.documentElement), url) else if (localName === 'OpenSearchDescription') renderSearch(getOpenSearch(doc), url) else { const contentType = res.headers.get('Content-Type') ?? MIME.HTML const type = parseMediaType(contentType)?.mediaType ?? MIME.HTML const doc = new DOMParser().parseFromString(text, type) if (!doc.head) throw new Error('document has no head') const base = doc.head.querySelector('base') if (base) base.href = resolveURL(base.getAttribute('href'), url) else { const base = doc.createElement('base') base.href = url doc.head.append(base) } const link = Array.from(doc.head.querySelectorAll('link')) .find(link => isOPDSCatalog(link.type)) if (!link) throw new Error('document has no link to OPDS feeds') location.replace('?url=' + encodeURIComponent(link.href)) } } else { const feed = JSON.parse(text) await renderFeed(feed, url) } } catch (e) { console.error(e) document.querySelector('#error p').innerText = e.message + '\n' + e.stack document.querySelector('#stack').showChild(document.querySelector('#error')) globalThis.updateState() } ================================================ FILE: src/reader/markup.js ================================================ const unescapeHTML = str => { const textarea = document.createElement('textarea') textarea.innerHTML = str return textarea.value } const usurp = p => { let last = p for (let i = p.childNodes.length - 1; i >= 0; i--) { let e = p.removeChild(p.childNodes[i]) p.parentNode.insertBefore(e, last) last = e } p.parentNode.removeChild(p) } const pangoTags = ['a', 'b', 'big', 'i', 's', 'sub', 'sup', 'small', 'tt', 'u'] export const toPangoMarkup = html => { if (!html) return '' const doc = new DOMParser().parseFromString( html.trim().replace(/\r?\n/g, ' ').replace(/\s{2,}/g, ' '), 'text/html') Array.from(doc.querySelectorAll('p')) .forEach(el => el.innerHTML = '\n\n' + el.innerHTML) Array.from(doc.querySelectorAll('div')) .forEach(el => el.innerHTML = '\n' + el.innerHTML) Array.from(doc.querySelectorAll('li')) .forEach(el => el.innerHTML = '\n • ' + el.innerHTML) Array.from(doc.querySelectorAll('br')) .forEach(el => el.innerHTML = '\n') Array.from(doc.querySelectorAll('em')) .forEach(el => el.innerHTML = '' + el.innerHTML + '') Array.from(doc.querySelectorAll('strong')) .forEach(el => el.innerHTML = '' + el.innerHTML + '') Array.from(doc.querySelectorAll('code')) .forEach(el => el.innerHTML = '' + el.innerHTML + '') Array.from(doc.querySelectorAll('h1, h2, h3, h4, h5, h6')) .forEach(el => el.innerHTML = '\n\n' + el.innerHTML + '') Array.from(doc.body.querySelectorAll('*')).forEach(el => { const nodeName = el.nodeName.toLowerCase() if (pangoTags.indexOf(nodeName) === -1) usurp(el) else Array.from(el.attributes).forEach(attr => { if (attr.name !== 'href') el.removeAttribute(attr.name) }) if (nodeName === 'a' && !el.hasAttribute('href')) usurp(el) }) return unescapeHTML(doc.body.innerHTML.trim() .replace(/\n{3,}/g, '\n\n') .replace(/&(?=lt;|gt;|amp;)/g, '&')) .replace(/&/g, '&') } ================================================ FILE: src/reader/reader.html ================================================
================================================ FILE: src/reader/reader.js ================================================ import { makeBook, NotFoundError, UnsupportedTypeError } from '../foliate-js/view.js' import { Overlayer } from '../foliate-js/overlayer.js' import { FootnoteHandler } from '../foliate-js/footnotes.js' import { toPangoMarkup } from './markup.js' const format = {} const emit = x => globalThis.webkit.messageHandlers.viewer .postMessage(JSON.stringify(x)) const formatLanguageMap = x => { if (!x) return '' if (typeof x === 'string') return x const keys = Object.keys(x) return x[keys[0]] } const getSelectionRange = sel => { if (!sel.rangeCount) return const range = sel.getRangeAt(0) if (range.collapsed) return return range } const getLang = el => { const lang = el.lang || el?.getAttributeNS?.('http://www.w3.org/XML/1998/namespace', 'lang') if (lang) return lang if (el.parentElement) return getLang(el.parentElement) } const blobToBase64 = blob => new Promise(resolve => { const reader = new FileReader() reader.readAsDataURL(blob) reader.onloadend = () => resolve(reader.result.split(',')[1]) }) const embedImages = async doc => { for (const el of doc.querySelectorAll('img[src]')) { const res = await fetch(el.src) const blob = await res.blob() el.src = `data:${blob.type};base64,${await blobToBase64(blob)}` } } const getHTML = async range => { const fragment = range.cloneContents() await embedImages(fragment) return new XMLSerializer().serializeToString(fragment) } const getCSS = ({ lineHeight, justify, hyphenate, invert, theme, overrideFont, userStylesheet, mediaActiveClass, }) => [` @namespace epub "http://www.idpf.org/2007/ops"; @media print { html { column-width: auto !important; height: auto !important; width: auto !important; } } @media screen { html { color-scheme: ${invert ? 'only light' : 'light dark'}; color: ${theme.light.fg}; } a:any-link { color: ${theme.light.link}; text-decoration-color: light-dark( color-mix(in srgb, currentColor 20%, transparent), color-mix(in srgb, currentColor 40%, transparent)); text-underline-offset: .1em; &:hover { text-decoration-color: unset; } } @media (prefers-color-scheme: dark) { html { color: ${invert ? theme.inverted.fg : theme.dark.fg}; ${invert ? '-webkit-font-smoothing: antialiased;' : ''} } a:any-link { color: ${invert ? theme.inverted.link : theme.dark.link}; } } aside[epub|type~="footnote"] { display: none; } } html { line-height: ${lineHeight}; hanging-punctuation: allow-end last; orphans: 2; widows: 2; } [align="left"] { text-align: left; } [align="right"] { text-align: right; } [align="center"] { text-align: center; } [align="justify"] { text-align: justify; } :is(hgroup, header) p { text-align: unset; hyphens: unset; } h1, h2, h3, h4, h5, h6, hgroup, th { text-wrap: balance; } pre { white-space: pre-wrap !important; tab-size: 2; } `, ` @media screen and (prefers-color-scheme: light) { ${theme.light.bg !== '#ffffff' ? ` html, body { color: ${theme.light.fg} !important; background: none !important; } body * { color: inherit !important; border-color: currentColor !important; background-color: ${theme.light.bg} !important; } a:any-link { color: ${theme.light.link} !important; } svg, img { background-color: transparent !important; mix-blend-mode: multiply; } .${CSS.escape(mediaActiveClass)}, .${CSS.escape(mediaActiveClass)} * { color: ${theme.light.fg} !important; background: color-mix(in hsl, ${theme.light.fg}, #fff 50%) !important; background: color-mix(in hsl, ${theme.light.fg}, ${theme.light.bg} 85%) !important; }` : ''} } @media screen and (prefers-color-scheme: dark) { ${invert ? '' : ` html, body { color: ${theme.dark.fg} !important; background: none !important; } body * { color: inherit !important; border-color: currentColor !important; background-color: ${theme.dark.bg} !important; } a:any-link { color: ${theme.dark.link} !important; } .${CSS.escape(mediaActiveClass)}, .${CSS.escape(mediaActiveClass)} * { color: ${theme.dark.fg} !important; background: color-mix(in hsl, ${theme.dark.fg}, #000 50%) !important; background: color-mix(in hsl, ${theme.dark.fg}, ${theme.dark.bg} 75%) !important; }`} } p, li, blockquote, dd { line-height: ${lineHeight}; text-align: ${justify ? 'justify' : 'start'}; hyphens: ${hyphenate ? 'auto' : 'none'}; } ${overrideFont ? '* { font-family: revert !important }' : ''} ` + userStylesheet] const frameRect = (frame, rect, sx = 1, sy = 1) => { const left = sx * rect.left + frame.left const right = sx * rect.right + frame.left const top = sy * rect.top + frame.top const bottom = sy * rect.bottom + frame.top return { left, right, top, bottom } } const pointIsInView = ({ x, y }) => x > 0 && y > 0 && x < window.innerWidth && y < window.innerHeight const getPosition = target => { // TODO: vertical text const frameElement = (target.getRootNode?.() ?? target?.endContainer?.getRootNode?.()) ?.defaultView?.frameElement const transform = frameElement ? getComputedStyle(frameElement).transform : '' const match = transform.match(/matrix\((.+)\)/) const [sx, , , sy] = match?.[1]?.split(/\s*,\s*/)?.map(x => parseFloat(x)) ?? [] const frame = frameElement?.getBoundingClientRect() ?? { top: 0, left: 0 } const rects = Array.from(target.getClientRects()) const first = frameRect(frame, rects[0], sx, sy) const last = frameRect(frame, rects.at(-1), sx, sy) const start = { point: { x: (first.left + first.right) / 2, y: first.top }, dir: 'up', } const end = { point: { x: (last.left + last.right) / 2, y: last.bottom }, dir: 'down', } const startInView = pointIsInView(start.point) const endInView = pointIsInView(end.point) if (!startInView && !endInView) return { point: { x: 0, y: 0 } } if (!startInView) return end if (!endInView) return start return start.point.y > window.innerHeight - end.point.y ? start : end } const footnoteDialog = document.getElementById('footnote-dialog') footnoteDialog.addEventListener('close', () => { emit({ type: 'dialog-close' }) const view = footnoteDialog.querySelector('foliate-view') view.close() view.remove() if (footnoteDialog.returnValue === 'go') globalThis.reader.view.goTo(footnoteDialog.querySelector('[name="href"]').value) footnoteDialog.returnValue = null }) footnoteDialog.addEventListener('click', e => e.target === footnoteDialog ? footnoteDialog.close() : null) class Reader { #footnoteHandler = new FootnoteHandler() style = { spacing: 1.4, justify: true, hyphenate: true, invert: false, } constructor(book) { this.book = book if (book.metadata?.description) book.metadata.description = toPangoMarkup(book.metadata.description) this.pageTotal = book.pageList ?.findLast(x => !isNaN(parseInt(x.label)))?.label this.style.mediaActiveClass = book.media?.activeClass this.book.transformTarget?.addEventListener('data', ({ detail }) => { detail.data = Promise.resolve(detail.data).catch(e => { console.error(new Error(`Failed to load ${detail.name}`, { cause: e })) return '' }) }) this.#footnoteHandler.addEventListener('before-render', e => { const { view } = e.detail view.addEventListener('link', e => { e.preventDefault() const { href } = e.detail this.view.goTo(href) footnoteDialog.close() }) view.addEventListener('external-link', e => { e.preventDefault() emit({ type: 'external-link', ...e.detail }) }) footnoteDialog.querySelector('main').replaceChildren(view) const { renderer } = view renderer.setAttribute('flow', 'scrolled') renderer.setAttribute('margin', '12px') renderer.setAttribute('gap', '5%') renderer.setStyles(getCSS(this.style)) }) this.#footnoteHandler.addEventListener('render', e => { const { href, hidden, type } = e.detail footnoteDialog.querySelector('[name="href"]').value = href footnoteDialog.querySelector('[value="go"]').style.display = hidden ? 'none' : 'block' const { uiText } = globalThis footnoteDialog.querySelector('header').innerText = uiText.references[type] ?? uiText.references.footnote footnoteDialog.querySelector('[value="go"]').innerText = uiText.references[type + '-go'] ?? uiText.references['footnote-go'] footnoteDialog.showModal() emit({ type: 'dialog-open' }) }) } async init() { this.view = document.createElement('foliate-view') this.#handleEvents() await this.view.open(this.book) document.body.append(this.view) this.sectionFractions = this.view.getSectionFractions() } setAppearance({ style, layout, autohideCursor }) { Object.assign(this.style, style) const { theme } = style const $style = document.documentElement.style $style.setProperty('--light-bg', theme.light.bg) $style.setProperty('--light-fg', theme.light.fg) $style.setProperty('--dark-bg', theme.dark.bg) $style.setProperty('--dark-fg', theme.dark.fg) const renderer = this.view?.renderer if (renderer) { renderer.setAttribute('flow', layout.flow) renderer.setAttribute('gap', layout.gap * 100 + '%') renderer.setAttribute('max-inline-size', layout.maxInlineSize + 'px') renderer.setAttribute('max-block-size', layout.maxBlockSize + 'px') renderer.setAttribute('max-column-count', layout.maxColumnCount) if (layout.animated) renderer.setAttribute('animated', '') else renderer.removeAttribute('animated') renderer.setStyles?.(getCSS(this.style)) } document.body.classList.toggle('invert', this.style.invert) if (autohideCursor) this.view?.setAttribute('autohide-cursor', '') else this.view?.removeAttribute('autohide-cursor') } #handleEvents() { this.view.addEventListener('relocate', e => { const { heads, feet } = this.view.renderer if (heads) { const { tocItem } = e.detail heads.at(-1).innerText = tocItem?.label ?? '' if (heads.length > 1) heads[0].innerText = formatLanguageMap(this.book.metadata.title) } if (feet) { const { pageItem, location: { current, next, total } } = e.detail if (pageItem) { // only show page number at the end // because we only have visible range for the spread, // not each column feet.at(-1).innerText = format.page(pageItem.label, this.pageTotal) if (feet.length > 1) feet[0].innerText = format.loc(current + 1, total) } else { feet[0].innerText = format.loc(current + 1, total) if (feet.length > 1) { const r = 1 - 1 / feet.length const end = Math.floor((1 - r) * current + r * next) feet.at(-1).innerText = format.loc(end + 1, total) } } } emit({ type: 'relocate', ...e.detail }) }) this.view.addEventListener('create-overlay', e => emit({ type: 'create-overlay', ...e.detail })) this.view.addEventListener('show-annotation', e => { const { value, index, range } = e.detail const pos = getPosition(range) this.#showAnnotation({ index, range, value, pos }) }) this.view.addEventListener('draw-annotation', e => { const { draw, annotation, doc, range } = e.detail const { color } = annotation if (['underline', 'squiggly', 'strikethrough'].includes(color)) { const { defaultView } = doc const node = range.startContainer const el = node.nodeType === 1 ? node : node.parentElement const { writingMode } = defaultView.getComputedStyle(el) draw(Overlayer[color], { writingMode }) } else draw(Overlayer.highlight, { color }) }) this.view.addEventListener('external-link', e => { e.preventDefault() emit({ type: 'external-link', ...e.detail }) }) this.view.addEventListener('link', e => this.#footnoteHandler.handle(this.book, e)?.catch(err => { console.warn(err) this.view.goTo(e.detail.href) })) this.view.addEventListener('load', e => this.#onLoad(e)) this.view.history.addEventListener('index-change', e => { const { canGoBack, canGoForward } = e.target emit({ type: 'history-index-change', canGoBack, canGoForward }) }) } #onLoad(e) { const { doc, index } = e.detail for (const img of doc.querySelectorAll('img')) img.addEventListener('dblclick', () => fetch(img.src) .then(res => res.blob()) .then(blob => Promise.all([blobToBase64(blob), blob.type])) .then(([base64, mimetype]) => emit({ type: 'show-image', base64, mimetype })) .catch(e => console.error(e))) doc.addEventListener('pointerup', () => { const sel = doc.getSelection() const range = getSelectionRange(sel) if (!range) return // prevent click event doc.addEventListener('click', e => e.stopPropagation(), { capture: true, once: true }) const pos = getPosition(range) const value = this.view.getCFI(index, range) const lang = getLang(range.commonAncestorContainer) const text = sel.toString() this.#showSelection({ index, range, lang, value, pos, text }) }) } #showAnnotation({ index, range, value, pos }) { globalThis.showSelection({ type: 'annotation', value, pos }) .then(action => { if (action === 'select') this.#showSelection({ index, range, value, pos }) }) } #showSelection({ index, range, lang, value, pos, text }) { if (!text) { const sel = range.startContainer.ownerDocument.getSelection() sel.removeAllRanges() sel.addRange(range) text = sel.toString() } const content = range.toString() globalThis.showSelection({ type: 'selection', text, content, lang, value, pos }).then(action => { switch (action) { case 'copy': getHTML(range).then(html => emit({ type: 'selection', action, text, html })) break case 'copy-citation': emit({ type: 'selection', action, text, value, ...this.view.getProgressOf(index, range) }) break case 'highlight': this.#showAnnotation({ index, range, value, pos }) break case 'print': this.printRange(range.startContainer.ownerDocument, range) break case 'speak-from-here': this.view.initTTS().then(() => emit({ type: 'selection', action, ssml: this.view.tts.from(range), })) break } }) } printRange(doc, range) { const iframe = document.createElement('iframe') // NOTE: it needs `allow-scripts` to remove the frame after printing // and `allow-modals` to show the print dialog iframe.setAttribute('sandbox', 'allow-same-origin allow-scripts allow-modals') const css = getCSS(this.style) iframe.addEventListener('load', () => { const doc = iframe.contentDocument const beforeStyle = doc.createElement('style') beforeStyle.textContent = css[0] doc.head.prepend(beforeStyle) const afterStyle = doc.createElement('style') afterStyle.textContent = css[1] doc.head.append(afterStyle) if (range) { const frag = range.cloneContents() doc.body.replaceChildren() doc.body.appendChild(frag) } iframe.contentWindow.addEventListener('afterprint', () => iframe.remove()) iframe.contentWindow.print() }, { once: true }) iframe.src = doc.defaultView.frameElement.src iframe.style.display = 'none' document.body.append(iframe) } print() { this.printRange(this.view.renderer.getContents()[0]?.doc) } async getCover() { try { const blob = await this.book.getCover?.() return blob ? blobToBase64(blob) : null } catch (e) { console.warn(e) console.warn('Failed to load cover') return null } } // wrap these renderer methods // because `FoliateWebView.exec()` can only pass one argument scrollBy([x, y]) { return this.view.renderer.scrollBy?.(x, y) } snap([x, y]) { return this.view.renderer.snap?.(x, y) } } globalThis.visualViewport.addEventListener('resize', () => emit({ type: 'pinch-zoom', scale: globalThis.visualViewport.scale })) const printf = (str, args) => { for (const arg of args) str = str.replace('%s', arg) return str } const open = async (file, Reader) => { try { const book = await makeBook(file) const reader = new Reader(book) globalThis.reader = reader await reader.init() emit({ type: 'book-ready', book, reader }) } catch (e) { if (e instanceof NotFoundError) emit({ type: 'book-error', id: 'not-found' }) else if (e instanceof UnsupportedTypeError) emit({ type: 'book-error', id: 'unsupported-type' }) else throw e } } globalThis.loadFile = () => document.getElementById('file-input').click() globalThis.init = ({ uiText }) => { globalThis.uiText = uiText format.loc = (a, b) => printf(uiText.loc, [a, b]) format.page = (a, b) => b ? printf(uiText.page, [a, b]) : printf(uiText.pageWithoutTotal, [a]) footnoteDialog.querySelector('[value="close"]').innerText = uiText.close document.getElementById('file-input').onchange = e => open(e.target.files[0], Reader) .catch(({ message, stack }) => emit({ type: 'book-error', message, stack })) globalThis.loadFile() } globalThis.initImport = () => { const view = document.createElement('foliate-view') class Reader { constructor(book) { this.book = book if (book.metadata?.description) book.metadata.description = toPangoMarkup(book.metadata.description) } async init() { await view.open(this.book) } async getCover() { try { const blob = await this.book.getCover?.() return blob ? blobToBase64(blob) : null } catch (e) { console.warn(e) console.warn('Failed to load cover') return null } } } document.getElementById('file-input').onchange = e => open(e.target.files[0], Reader) .catch(({ message, stack }) => emit({ type: 'book-error', message, stack })) } emit({ type: 'ready' }) ================================================ FILE: src/search.js ================================================ import Gtk from 'gi://Gtk' import GObject from 'gi://GObject' import GLib from 'gi://GLib' import Pango from 'gi://Pango' import * as utils from './utils.js' const SearchSettings = utils.makeDataClass('FoliateSearchSettings', { 'scope': 'string', 'match-case': 'boolean', 'match-diacritics': 'boolean', 'match-whole-words': 'boolean', }) const SearchResult = utils.makeDataClass('FoliateSearchResult', { 'label': 'string', 'cfi': 'string', 'subitems': 'object', }) const formatExcerpt = ({ pre, match, post }) => { const [a, b, c] = [pre, match, post].map(x => GLib.markup_escape_text(x, -1)) return `${a}${b}${c}` } GObject.registerClass({ GTypeName: 'FoliateSearchView', Properties: utils.makeParams({ 'entry': 'object', 'settings': 'object', 'dir': 'string', }), Signals: { 'show-results': {}, 'no-results': {}, 'clear-results': {}, 'show-cfi': { param_types: [GObject.TYPE_STRING], }, }, }, class extends Gtk.ListView { generator = null getGenerator doSearch = () => this.search().catch(e => console.error(e)) constructor(params) { super(params) this.settings = new SearchSettings({ scope: 'book' }) this.settings.connectAll(this.doSearch) this.model = new Gtk.SingleSelection({ autoselect: false }) this.actionGroup = utils.addSimpleActions({ 'prev': () => this.cycle(-1), 'next': () => this.cycle(1), }) utils.addPropertyActions(this.settings, this.settings.keys, this.actionGroup) this.model.connect('selection-changed', sel => { this.scroll_to(sel.selected, Gtk.ListScrollFlags.NONE, null) const { cfi } = sel.selected_item?.item ?? {} if (cfi) this.emit('show-cfi', cfi) }) this.connect('activate', (_, pos) => { const { cfi } = this.model.model.get_item(pos).item ?? {} if (cfi) this.emit('show-cfi', cfi) }) this.factory = utils.connect(new Gtk.SignalListItemFactory(), { 'setup': (_, listItem) => { listItem.child = new Gtk.TreeExpander({ indent_for_icon: false }) listItem.child.child = new Gtk.Label({ xalign: 0, margin_top: 6, margin_bottom: 6, wrap_mode: Pango.WrapMode.WORD_CHAR, }) }, 'bind': (_, listItem) => { const widget = listItem.child.child listItem.child.list_row = listItem.item const { label, subitems } = listItem.item.item Object.assign(widget, { label, ellipsize: subitems ? Pango.EllipsizeMode.END : Pango.EllipsizeMode.NONE, wrap: !subitems, use_markup: !subitems, }) const ctx = listItem.child.get_style_context() if (subitems) { ctx.add_class('caption') ctx.add_class('dim-label') } else { ctx.remove_class('caption') ctx.remove_class('dim-label') } utils.setDirection(listItem.child, this.dir) }, }) } async reset() { await this.generator?.return() this.generator = null this.model.model = null this.entry.progress_fraction = null this.emit('clear-results') } async search() { const query = this.entry.text.trim() if (!query) return await this.reset() this.model.model = utils.tree([]) this.emit('show-results') const opts = this.settings.toCamel() const index = opts.scope === 'section' ? this.index : null this.generator = await this.getGenerator({ ...opts, query, index }) for await (const result of this.generator) { if (result === 'done') { this.entry.progress_fraction = null if (!this.model.model.get_n_items()) this.emit('no-results') } else if ('progress' in result) this.entry.progress_fraction = result.progress else { const { label, cfi, excerpt, subitems } = result const { model } = this.model if (!model) return model.model.append(subitems ? new SearchResult({ label: label ?? '', cfi: cfi ?? '', subitems: utils.list(subitems.map(item => ({ label: formatExcerpt(item.excerpt), cfi: item.cfi, })), SearchResult), }) : new SearchResult({ label: formatExcerpt(excerpt), cfi })) } } } cycle(dir) { const { model } = this while (true) { if (!model.get_n_items()) break const position = model.selected if (position + dir < 0) model.selected = model.get_n_items() - 1 else model.selected = position + dir if (model.selected_item?.item?.cfi) break } } }) ================================================ FILE: src/selection-tools/common.css ================================================ * { box-sizing: border-box; } html, body { color-scheme: light dark; font: menu; } h1 { font-size: larger; } h2 { font-size: smaller; } a:any-link { color: highlight; } ul, ol { padding-inline-start: 2em; } footer { font-size: smaller; opacity: .6; } :is([data-state="loading"], [data-state="error"]) footer { display: none; } [data-state="loaded"] footer { display: block; } [data-state="error"] main { display: flex; position: absolute; inset: 0; width: 100%; height: 100%; text-align: center; justify-content: center; align-items: center; } ================================================ FILE: src/selection-tools/translate.html ================================================
asdf
================================================ FILE: src/selection-tools/wikipedia.html ================================================

================================================ FILE: src/selection-tools/wiktionary.html ================================================

================================================ FILE: src/selection-tools.js ================================================ import Gtk from 'gi://Gtk' import Gio from 'gi://Gio' import GObject from 'gi://GObject' import WebKit from 'gi://WebKit' import Gdk from 'gi://Gdk' import { gettext as _ } from 'gettext' import * as utils from './utils.js' import { WebView } from './webview.js' import { locales, matchLocales } from './format.js' const getLanguage = lang => { try { return new Intl.Locale(lang).language } catch (e) { console.warn(e) return 'en' } } const getGoogleTranslateLanguages = utils.memoize(() => { // list of languages supported by Google Translate // generated by running the following on https://cloud.google.com/translate/docs/languages // [...document.querySelector('table').querySelectorAll('tr')].map(tr => tr.querySelector('code')?.innerText).filter(x => x).map(x => `'${x}'`).join(', ') const displayName = new Intl.DisplayNames(locales, { type: 'language' }) const langs = ['af', 'sq', 'am', 'ar', 'hy', 'as', 'ay', 'az', 'bm', 'eu', 'be', 'bn', 'bho', 'bs', 'bg', 'ca', 'ceb', 'zh-CN', 'zh-TW', 'co', 'hr', 'cs', 'da', 'dv', 'doi', 'nl', 'en', 'eo', 'et', 'ee', 'fil', 'fi', 'fr', 'fy', 'gl', 'ka', 'de', 'el', 'gn', 'gu', 'ht', 'ha', 'haw', 'he', 'hi', 'hmn', 'hu', 'is', 'ig', 'ilo', 'id', 'ga', 'it', 'ja', 'jv', 'kn', 'kk', 'km', 'rw', 'gom', 'ko', 'kri', 'ku', 'ckb', 'ky', 'lo', 'la', 'lv', 'ln', 'lt', 'lg', 'lb', 'mk', 'mai', 'mg', 'ms', 'ml', 'mt', 'mi', 'mr', 'mni-Mtei', 'lus', 'mn', 'my', 'ne', 'no', 'ny', 'or', 'om', 'ps', 'fa', 'pl', 'pt', 'pa', 'qu', 'ro', 'ru', 'sm', 'sa', 'gd', 'nso', 'sr', 'st', 'sn', 'sd', 'si', 'sk', 'sl', 'so', 'es', 'su', 'sw', 'sv', 'tl', 'tg', 'ta', 'tt', 'te', 'th', 'ti', 'ts', 'tr', 'tk', 'ak', 'uk', 'ur', 'ug', 'uz', 'vi', 'cy', 'xh', 'yi', 'yo', 'zu'] const defaultLang = matchLocales(langs)[0] ?? 'en' return [langs.map(lang => [lang, displayName.of(lang)]), defaultLang] }) const tools = { 'dictionary': { label: _('Dictionary'), uri: 'foliate-selection-tool:///selection-tools/wiktionary.html', run: (__, { text, lang }) => ({ msg: { footer: _('From Wiktionary, released under the CC BY-SA License.'), error: _('No Definitions Found'), errorAction: _('Search on Wiktionary'), }, text, lang: getLanguage(lang), }), }, 'wikipedia': { label: _('Wikipedia'), uri: 'foliate-selection-tool:///selection-tools/wikipedia.html', run: (__, { text, lang }) => ({ msg: { footer: _('From Wikipedia, released under the CC BY-SA License.'), error: _('No Definitions Found'), errorAction: _('Search on Wikipedia'), }, text, lang: getLanguage(lang), }), }, 'translate': { label: _('Translate'), uri: 'foliate-selection-tool:///selection-tools/translate.html', run: (popover, { text }) => { const [langs, defaultLang] = getGoogleTranslateLanguages() return { msg: { footer: _('Translation by Google Translate'), error: _('Cannot retrieve translation'), search: _('Search…'), langs, }, text, lang: popover.translate_target_language || defaultLang, } }, }, } const SelectionToolPopover = GObject.registerClass({ GTypeName: 'FoliateSelectionToolPopover', Properties: utils.makeParams({ 'translate-target-language': 'string', }), }, class extends Gtk.Popover { #webView = utils.connect(new WebView({ settings: new WebKit.Settings({ enable_write_console_messages_to_stdout: true, enable_back_forward_navigation_gestures: false, enable_hyperlink_auditing: false, enable_html5_database: false, enable_html5_local_storage: false, }), }), { 'decide-policy': (_, decision, type) => { switch (type) { case WebKit.PolicyDecisionType.NAVIGATION_ACTION: case WebKit.PolicyDecisionType.NEW_WINDOW_ACTION: { const { uri } = decision.navigation_action.get_request() if (!uri.startsWith('foliate-selection-tool:')) { decision.ignore() new Gtk.UriLauncher({ uri }).launch(this.root, null, null) return true } } } }, }) constructor(params) { super(params) utils.bindSettings('viewer', this, ['translate-target-language']) Object.assign(this, { width_request: 300, height_request: 300, }) this.child = this.#webView this.#webView.set_background_color(new Gdk.RGBA()) this.#webView.registerHandler('settings', payload => { if (payload.key === 'translate-target-language') this.translate_target_language = payload.value }) } loadTool(tool, init) { this.#webView.loadURI(tool.uri) .then(() => this.#webView.opacity = 1) .then(() => this.#webView.exec('init', init)) .catch(e => console.error(e)) } }) const getSelectionToolPopover = utils.memoize(() => new SelectionToolPopover()) export const SelectionPopover = GObject.registerClass({ GTypeName: 'FoliateSelectionPopover', Template: pkg.moduleuri('ui/selection-popover.ui'), Signals: { 'show-popover': { param_types: [Gtk.Popover.$gtype] }, 'run-tool': { return_type: GObject.TYPE_JSOBJECT }, }, }, class extends Gtk.PopoverMenu { constructor(params) { super(params) const model = this.menu_model const section = new Gio.Menu() model.insert_section(1, null, section) const group = new Gio.SimpleActionGroup() this.insert_action_group('selection-tools', group) for (const [name, tool] of Object.entries(tools)) { const action = new Gio.SimpleAction({ name }) action.connect('activate', () => { const popover = getSelectionToolPopover() Promise.resolve(tool.run(popover, this.emit('run-tool'))) .then(x => popover.loadTool(tool, x)) .catch(e => console.error(e)) this.emit('show-popover', popover) }) group.add_action(action) section.append(tool.label, `selection-tools.${name}`) } } }) ================================================ FILE: src/speech.js ================================================ import Gio from 'gi://Gio' import GLib from 'gi://GLib' class SSIPConnection { #connection #inputStream #outputStream #onResponse #eventData = [] constructor(onEvent) { this.onEvent = onEvent } spawn() { const flags = Gio.SubprocessFlags.NONE const launcher = new Gio.SubprocessLauncher({ flags }) const cmd = GLib.getenv('SPEECHD_CMD') ?? 'speech-dispatcher' const proc = launcher.spawnv([cmd, '--spawn']) return new Promise(resolve => proc.wait_check_async(null, () => resolve())) } connect() { const path = GLib.getenv('SPEECHD_ADDRESS')?.split(':')?.[1] ?? GLib.build_filenamev([GLib.get_user_runtime_dir(), 'speech-dispatcher/speechd.sock']) try { const address = Gio.UnixSocketAddress.new(path) this.#connection = new Gio.SocketClient().connect(address, null) } catch (e){ throw new Error(`Error connecting to ${path}: ${e}`) } this.#outputStream = Gio.DataOutputStream.new(this.#connection.get_output_stream()) this.#inputStream = Gio.DataInputStream.new(this.#connection.get_input_stream()) this.#inputStream.newline_type = Gio.DataStreamNewlineType.TYPE_CR_LF this.#receive() } #receive() { this.#inputStream.read_line_async(0, null, (stream, res) => { const [line/*, length*/] = stream.read_line_finish_utf8(res) const code = line.slice(0, 3) const end = line.slice(3, 4) === ' ' const text = line.slice(4, -1) if (code.startsWith('7')) this.#onEvent(code, end, text) else this.#onResponse(code, end, text) this.#receive() }) } #onEvent(code, end, message) { if (!end) return this.#eventData.push(message) else { const [msgID,, mark] = this.#eventData this.onEvent?.(msgID, { code, message, mark }) this.#eventData = [] } } send(command) { return new Promise((resolve, reject) => { if (!this.#connection.is_connected()) reject() this.#outputStream.put_string(command + '\r\n', null) const data = [] this.#onResponse = (code, end, message) => { if (!end) return data.push(message) if (code.startsWith('2')) resolve(Object.assign(data, { code, message })) else reject(new Error(code + ' ' + message)) } }) } } export class SSIPClient { #initialized #promises = new Map() #connection = new SSIPConnection((msgID, result) => this.#promises.get(msgID)?.resolve?.(result)) async init() { if (this.#initialized) return this.#initialized = true try { await this.#connection.spawn() } catch (e) { console.debug(e) } try { this.#connection.connect() const clientName = `${GLib.get_user_name()}:foliate:tts` await this.#connection.send('SET SELF CLIENT_NAME ' + clientName) await this.#connection.send('SET SELF SSML_MODE on') await this.#connection.send('SET SELF NOTIFICATION ALL on') } catch (e) { this.#initialized = false throw e } } #makePromise(msgID){ return new Promise((resolve, reject) => this.#promises.set(msgID, { resolve: value => (resolve(value), this.#promises.delete(msgID)), reject: value => (reject(value), this.#promises.delete(msgID)), })) } #makeIter(msgID) { let promise = this.#makePromise(msgID) return { next: async () => { const data = await promise promise = this.#makePromise(msgID) return data }, return: () => { promise = null this.#promises.delete(msgID) }, } } async send(command) { await this.init() return this.#connection.send(command) } async speak(str) { await this.send('SPEAK') const text = str.replace('\r\n.', '\r\n..') + '\r\n.' const [msgID] = await this.send(text) const iter = this.#makeIter(msgID) let done = false const next = async () => { if (done) return { done } const value = await iter.next() const { code } = value if (code === '702' || code === '703') { iter.return() done = true return { value, done: false } } return { value, done } } return { next, [Symbol.asyncIterator]: () => ({ next }), } } pause() { return this.send('PAUSE self') } resume() { return this.send('RESUME self') } stop() { return this.send('STOP self') } setRate(rate) { return this.send(`SET self RATE ${rate}`) } setPitch(rate) { return this.send(`SET self PITCH ${rate}`) } async listSynthesisVoices() { const data = await this.send('LIST SYNTHESIS_VOICES') return data.map(row => { const [name, lang, variant] = row.split('\t') return { name, lang, variant } }) } } ================================================ FILE: src/themes.js ================================================ import Gtk from 'gi://Gtk' import GLib from 'gi://GLib' import { gettext as _ } from 'gettext' import * as utils from './utils.js' export const themes = [ { name: 'default', label: _('Default'), light: { fg: '#000000', bg: '#ffffff', link: '#0066cc' }, dark: { fg: '#e0e0e0', bg: '#222222', link: '#77bbee' }, }, { name: 'gray', label: _('Gray'), light: { fg: '#222222', bg: '#e0e0e0', link: '#4488cc' }, dark: { fg: '#c6c6c6', bg: '#444444', link: '#88ccee' }, }, { name: 'sepia', label: _('Sepia'), light: { fg: '#5b4636', bg: '#f1e8d0', link: '#008b8b' }, dark: { fg: '#ffd595', bg: '#342e25', link: '#48d1cc' }, }, { name: 'grass', label: _('Grass'), light: { fg: '#232c16', bg: '#d7dbbd', link: '#177b4d' }, dark: { fg: '#d8deba', bg: '#333627', link: '#a6d608' }, }, { name: 'cherry', label: _('Cherry'), light: { fg: '#4e1609', bg: '#f0d1d5', link: '#de3838' }, dark: { fg: '#e5c4c8', bg: '#462f32', link: '#ff646e' }, }, { name: 'sky', label: _('Sky'), light: { fg: '#262d48', bg: '#cedef5', link: '#2d53e5' }, dark: { fg: '#babee1', bg: '#282e47', link: '#ff646e' }, }, { name: 'solarized', label: _('Solarized'), light: { fg: '#586e75', bg: '#fdf6e3', link: '#268bd2' }, dark: { fg: '#93a1a1', bg: '#002b36', link: '#268bd2' }, }, { name: 'gruvbox', label: _('Gruvbox'), light: { fg: '#3c3836', bg: '#fbf1c7', link: '#076678' }, dark: { fg: '#ebdbb2', bg: '#282828', link: '#83a598' }, }, { name: 'nord', label: _('Nord'), light: { fg: '#2e3440', bg: '#eceff4', link: '#5e81ac' }, dark: { fg: '#d8dee9', bg: '#2e3440', link: '#88c0d0' }, }, ] for (const { file, name } of utils.listDir(pkg.configpath('themes'))) try { if (!/\.json$/.test(name)) continue const theme = utils.readJSONFile(file) themes.push({ name, label: theme.label ?? name.replace(/\.json$/, ''), light: { fg: theme.light.fg, bg: theme.light.bg, link: theme.light.link, }, dark: { fg: theme.dark.fg, bg: theme.dark.bg, link: theme.dark.link, }, }) } catch (e) { console.error(e) } export const themeCssProvider = new Gtk.CssProvider() themeCssProvider.load_from_data(` .theme-container .card { padding: 9px; } ` + themes.map(theme => { const id = `theme-${GLib.uuid_string_random()}` theme.id = id return ` .${id}, .sidebar-${id}:not(.background) { color: ${theme.light.fg}; background: ${theme.light.bg}; } .sidebar-${id}:not(.background) toolbarview { background: rgba(0, 0, 0, .08); } .is-dark .${id}, .is-dark .sidebar-${id}:not(.background) { color: ${theme.dark.fg}; background: ${theme.dark.bg}; } .is-dark .sidebar-${id}:not(.background) toolbarview { background: rgba(255, 255, 255, .05); } .${id} highlight { background: ${theme.light.link}; } .is-dark .${id} highlight { background: ${theme.dark.link}; } .${id} popover highlight, .is-dark .${id} popover highlight { background: @accent_bg_color; } ` }).join(''), -1) export const invertTheme = ({ light, dark }) => ({ light, dark, inverted: { fg: utils.invertColor(dark.fg), link: utils.invertColor(dark.link), } }) ================================================ FILE: src/toc.js ================================================ import Gtk from 'gi://Gtk' import GObject from 'gi://GObject' import Pango from 'gi://Pango' import * as utils from './utils.js' const TOCItem = utils.makeDataClass('FoliateTOCItem', { 'id': 'uint', 'label': 'string', 'href': 'string', 'subitems': 'object', }) GObject.registerClass({ GTypeName: 'FoliateTOCView', Properties: utils.makeParams({ 'dir': 'string', }), Signals: { 'go-to-href': { param_types: [GObject.TYPE_STRING], }, }, }, class extends Gtk.ListView { #shouldGoToTocItem = true #map = new Map() #parentMap = new Map() constructor(params) { super(params) this.model = new Gtk.SingleSelection({ autoselect: false, can_unselect: true }) this.model.connect('selection-changed', sel => { if (!this.#shouldGoToTocItem) return const href = sel.selected_item?.item?.href if (href) this.emit('go-to-href', href) }) this.connect('activate', (_, pos) => { const { href } = this.model.model.get_item(pos).item ?? {} if (href) this.emit('go-to-href', href) }) this.factory = utils.connect(new Gtk.SignalListItemFactory(), { 'setup': (_, listItem) => { listItem.child = new Gtk.TreeExpander() listItem.child.child = new Gtk.Label({ xalign: 0, ellipsize: Pango.EllipsizeMode.END, }) }, 'bind': (_, listItem) => { const widget = listItem.child.child listItem.child.list_row = listItem.item const { label, href } = listItem.item.item Object.assign(widget, { label, tooltip_text: label }) const ctx = widget.get_style_context() if (href) ctx.remove_class('dim-label') else ctx.add_class('dim-label') utils.setDirection(listItem.child, this.dir) }, }) } load(toc) { toc ??= [] this.model.model = utils.tree(toc, TOCItem, false) // save parent for each item in a map const f = item => { this.#map.set(item.id, item) if (!item.subitems?.length) return for (const subitem of item.subitems) { this.#parentMap.set(subitem, item) f(subitem) } } for (const item of toc) f(item) } getParents(id) { const results = [] let item = this.#map.get(id) while (item) { results.push(item.id) item = this.#parentMap.get(item) } return results.reverse() } setCurrent(id) { if (id == null) { this.model.unselect_item(this.model.selected) return } const { model } = this let index let iStart = 0 // child rows are added to the tree dynamically // so have to expand every ancestors from the top for (const parent of this.getParents(id)) { const length = model.get_n_items() for (let i = iStart; i < length; i++) { const row = model.get_item(i) if (row.get_item().id === parent) { row.expanded = true index = i // start next search from i + 1 // as children must come after the parent iStart = i + 1 break } } } this.#shouldGoToTocItem = false this.scroll_to(index, Gtk.ListScrollFlags.SELECT, null) this.#shouldGoToTocItem = true } }) ================================================ FILE: src/tts.js ================================================ import Gtk from 'gi://Gtk' import GObject from 'gi://GObject' import { gettext as _ } from 'gettext' import * as utils from './utils.js' import { SSIPClient } from './speech.js' const ssip = new SSIPClient() GObject.registerClass({ GTypeName: 'FoliateTTSBox', Template: pkg.moduleuri('ui/tts-box.ui'), Signals: { 'init': { return_type: GObject.TYPE_JSOBJECT }, 'start': { return_type: GObject.TYPE_JSOBJECT }, 'resume': { return_type: GObject.TYPE_JSOBJECT }, 'backward': { return_type: GObject.TYPE_JSOBJECT }, 'forward': { return_type: GObject.TYPE_JSOBJECT }, 'backward-paused': {}, 'forward-paused': {}, 'highlight': { param_types: [GObject.TYPE_STRING], return_type: GObject.TYPE_JSOBJECT, }, 'next-section': { return_type: GObject.TYPE_JSOBJECT }, }, InternalChildren: [ 'tts-rate-scale', 'tts-pitch-scale', 'media-buttons', 'play-button', ], }, class extends Gtk.Box { #state = 'stopped' defaultWidget = this._play_button constructor(params) { super(params) this.insert_action_group('tts', utils.addMethods(this, { actions: ['play', 'backward', 'forward', 'stop'], })) utils.setDirection(this._media_buttons, Gtk.TextDirection.LTR) this.#connectScale(this._tts_rate_scale, ssip.setRate.bind(ssip)) this.#connectScale(this._tts_pitch_scale, ssip.setPitch.bind(ssip)) } #connectScale(scale, f) { scale.connect('value-changed', scale => { const shouldResume = this.state === 'playing' this.state = 'paused' ssip.stop() .then(() => f(Math.trunc(scale.get_value()))) .then(() => shouldResume ? this.start() : null) .catch(e => this.error(e)) }) } get state() { return this.#state } set state(state) { this.#state = state this._play_button.icon_name = state === 'playing' ? 'media-playback-pause-symbolic' : 'media-playback-start-symbolic' } #init() { return ssip.stop().then(() => this.emit('init')) } async #speak(ssml) { this.state = 'playing' ssml = await ssml if (!ssml && await this.emit('next-section')) return this.forward() const iter = await ssip.speak(ssml) let state for await (const { mark, message } of iter) { if (mark) await this.emit('highlight', mark) else state = message } if (state === 'END') this.forward() } speak(ssml) { this.#init().then(() => this.#speak(ssml)).catch(e => this.error(e)) } play() { if (this.#state !== 'playing') this.start() else this.pause() } start() { this.#init() .then(() => this.#speak(this.state === 'paused' ? this.emit('resume') : this.emit('start'))) .catch(e => this.error(e)) } pause() { this.state = 'paused' ssip.stop().catch(e => this.error(e)) } stop() { this.state = 'stopped' ssip.stop().catch(e => this.error(e)) } backward() { this.#init() .then(() => this.state === 'playing' ? this.#speak(this.emit('backward')) : (this.state = 'paused', this.emit('backward-paused'))) .catch(e => this.error(e)) } forward() { this.#init() .then(() => this.state === 'playing' ? this.#speak(this.emit('forward')) : (this.state = 'paused', this.emit('forward-paused'))) .catch(e => this.error(e)) } error(e) { this.state = 'stopped' console.error(e) this.root.error(_('Text-to-Speech Error'), _('Make sure Speech Dispatcher is installed and working on your system')) } kill() { this.emit = () => {} if (this.state === 'playing') ssip.stop().catch(e => console.error(e)) } }) GObject.registerClass({ GTypeName: 'FoliateMediaOverlayBox', Template: pkg.moduleuri('ui/media-overlay-box.ui'), Properties: utils.makeParams({ 'rate': 'double', 'volume': 'double', }), Signals: { 'start': {}, 'pause': {}, 'resume': {}, 'stop': {}, 'backward': {}, 'forward': {}, }, InternalChildren: [ 'volume-scale', 'media-buttons', 'play-button', ], }, class extends Gtk.Box { #state = 'stopped' defaultWidget = this._play_button constructor(params) { super(params) this.set_property('rate', 1) const actionGroup = utils.addMethods(this, { actions: ['play', 'backward', 'forward', 'stop'], }) utils.addPropertyActions(this, ['rate'], actionGroup) this.insert_action_group('media-overlay', actionGroup) utils.setDirection(this._media_buttons, Gtk.TextDirection.LTR) // GtkScale, y u no implement GtkActionable? this._volume_scale.connect('value-changed', scale => this.set_property('volume', scale.get_value())) } get state() { return this.#state } set state(state) { this.#state = state this._play_button.icon_name = state === 'playing' ? 'media-playback-pause-symbolic' : 'media-playback-start-symbolic' } play() { if (this.#state !== 'playing') this.start() else this.pause() } start() { if (this.state === 'paused') this.emit('resume') else this.emit('start') this.state = 'playing' } pause() { this.state = 'paused' this.emit('pause') } stop() { this.state = 'stopped' this.emit('stop') } backward() { if (this.state === 'stopped') this.state = 'playing' this.emit('backward') } forward() { if (this.state === 'stopped') this.state = 'playing' this.emit('forward') } }) ================================================ FILE: src/ui/annotation-popover.ui ================================================ ================================================ FILE: src/ui/annotation-row.ui ================================================ ================================================ FILE: src/ui/book-image.ui ================================================ ================================================ FILE: src/ui/book-item.ui ================================================
Open in New Window book-item.open-new-window Open with External App book-item.open-external-app
About This Book book-item.info Export Annotations… book-item.export
Remove book-item.remove
================================================ FILE: src/ui/book-row.ui ================================================
Open in New Window book-item.open-new-window Open with External App book-item.open-external-app
About This Book book-item.info Export Annotations… book-item.export
Remove book-item.remove
================================================ FILE: src/ui/book-viewer.ui ================================================
New Window win.new-window
Open a Copy win.open-copy Reload view.reload
Import Annotations… viewer.import-annotations Export Annotations… viewer.export-annotations
Keyboard Shortcuts viewer.help-overlay About Foliate app.about
All Sections search.scope book Current Section search.scope section
Match Whole Words Only search.match-whole-words Match Case search.match-case Match Diacritics search.match-diacritics
theme
zoom
Font & Layout Settings viewer.preferences
Scrolled Mode view.scrolled Invert Colors in Dark Mode view.invert Autohide Cursor view.autohide-cursor
Print… view.print Inspector view.inspector
================================================ FILE: src/ui/bookmark-row.ui ================================================ ================================================ FILE: src/ui/export-dialog.ui ================================================ true Export Annotations false Cancel Export Format Choose “JSON” if you plan on importing annotations back to Foliate JSON HTML Markdown Org Mode ================================================ FILE: src/ui/help-overlay.ui ================================================ Navigation p Page_Up <shift>space Previous Page n Page_Down space Next Page h Left Go Left j Down Scroll Down k Up Scroll Up l Right Go Right <alt>Left Jump to Previous Location <alt>Right Jump to Next Location Sidebar F9 Toggle Sidebar <ctrl>t Toggle Table of Contents <ctrl><alt>a Toggle Annotations <ctrl><alt>d Toggle Bookmarks slash <ctrl>f Toggle Search View F5 <ctrl>r Reload plus <ctrl>plus Zoom In minus <ctrl>minus Zoom Out 0 <ctrl>0 Reset Zoom F11 Toggle Fullscreen <ctrl>m Toggle Scrolled Mode <ctrl>l Show Current Location <ctrl>d Bookmark Current Location In Search <ctrl><shift>g Previous <ctrl>g Next With Selection <ctrl>c Selection Copy <ctrl>f Selection Search Window <ctrl>o Open File <ctrl>n Open a Copy <ctrl>w Close Window <ctrl>q Quit General <ctrl>i <alt>Return Show Book Information F1 Show App Information F10 Open Menu <alt>comma Font & Layout Settings <ctrl>question Keyboard Shortcuts <ctrl>p Print... F12 Inspector ================================================ FILE: src/ui/image-viewer.ui ================================================
Copy img.copy Save As… img.save-as
================================================ FILE: src/ui/import-dialog.ui ================================================ ================================================ FILE: src/ui/library-view.ui ================================================ ================================================ FILE: src/ui/library.ui ================================================
List View library.view-mode list Grid View library.view-mode grid
Open… win.open
Fullscreen win.fullscreened
About Foliate app.about
================================================ FILE: src/ui/media-overlay-box.ui ================================================ ================================================ FILE: src/ui/navbar.ui ================================================ vertical slide-up-down main vertical 12 vertical 6 18 12 12 9 True Time Left in Section True 0 0 1 0 vertical 0 1 2 Time Left in Book True 0 2 1 2 12 12 6 12 True 1 Page 12 0 0 6 0 1 1 Location 12 1 0 6 1 1 1 7 digits 1 Identifier 12 2 0 15 edit-copy-symbolic Copy navbar.copy-cfi edit-paste-symbolic Paste and Go navbar.paste-cfi 2 1 1 Section 12 3 0 6 3 1 1 5 digits landmarks True True True 9 3 True view.first-section First Section go-first-symbolic True view.prev-section Previous Section go-previous-symbolic True Jump To… go-jump-symbolic True view.next-section Next Section go-next-symbolic True view.last-section Last Section go-last-symbolic ================================================ FILE: src/ui/selection-popover.ui ================================================
horizontal-buttons Copy selection.copy edit-copy-symbolic Highlight selection.highlight document-edit-symbolic Find selection.search edit-find-symbolic
Speak from Here selection.speak-from-here
Copy with Citation selection.copy-citation Copy Identifier selection.copy-cfi Print Selection… selection.print
================================================ FILE: src/ui/tts-box.ui ================================================ ================================================ FILE: src/ui/view-preferences-window.ui ================================================ ================================================ FILE: src/utils.js ================================================ import Gtk from 'gi://Gtk' import Adw from 'gi://Adw' import GObject from 'gi://GObject' import Gio from 'gi://Gio' import GLib from 'gi://GLib' import Gdk from 'gi://Gdk' import GdkPixbuf from 'gi://GdkPixbuf' import { gettext as _ } from 'gettext' // convert to camel case const camel = x => x.toLowerCase().replace(/[-:](.)/g, (_, g) => g.toUpperCase()) export const memoize = f => { const memory = new Map() return obj => { if (memory.has(obj)) return memory.get(obj) else { const result = f(obj) memory.set(obj, result) return result } } } export const wait = ms => new Promise(resolve => setTimeout(resolve, ms)) export const debounce = (f, wait, immediate) => { let timeout return (...args) => { const later = () => { timeout = null if (!immediate) f(...args) } const callNow = immediate && !timeout if (timeout) clearTimeout(timeout) timeout = setTimeout(later, wait) if (callNow) f(...args) } } export const listDir = function* (path, attributes = 'standard::name') { const dir = Gio.File.new_for_path(path) if (!GLib.file_test(path, GLib.FileTest.IS_DIR)) return const children = dir.enumerate_children(attributes, Gio.FileQueryInfoFlags.NONE, null) let info while ((info = children.next_file(null)) != null) try { const name = info.get_name() yield { file: dir.get_child(name), name, info } } catch (e) { console.error(e) } } const decoder = new TextDecoder() export const readFile = (file, defaultValue = '') => { try { const [success, data/*, tag*/] = file.load_contents(null) if (success) return decoder.decode(data) else throw new Error() } catch (e) { console.debug(e) return defaultValue } } export const readJSONFile = file => JSON.parse(readFile(file, '{}')) export const JSONStorage = GObject.registerClass({ GTypeName: 'FoliateStorage', Signals: { 'modified': {}, 'externally-modified': {}, }, }, class extends GObject.Object { #modified #file #indent #data constructor(path, name, indent) { super() this.#indent = indent this.#file = Gio.File.new_for_path(GLib.build_filenamev( [path, `${encodeURIComponent(name)}.json`])) this.#data = this.#read() const monitor = this.#file.monitor(Gio.FileMonitorFlags.NONE, null) monitor.connect('changed', () => { if (this.#getModified() > this.#modified) { console.debug('Externally modified: ' + this.#file.get_path()) this.#data = this.#read() this.emit('externally-modified') } }) this.save = debounce(this.saveNow.bind(this), 1000) } #getModified() { try { const info = this.#file.query_info('time::modified', Gio.FileQueryInfoFlags.NONE, null) return info.get_attribute_uint64('time::modified') } catch (e) { console.debug(e) this.#data = {} this.emit('externally-modified') return null } } #read() { this.#modified = this.#getModified() return readJSONFile(this.#file) } saveNow() { console.debug('Writing to ' + this.#file.get_path()) const parent = this.#file.get_parent().get_path() const mkdirp = GLib.mkdir_with_parents(parent, parseInt('0755', 8)) if (mkdirp === 0) { const contents = JSON.stringify(this.#data, null, this.#indent) const [success/*, tag*/] = this.#file.replace_contents(contents, null, false, Gio.FileCreateFlags.REPLACE_DESTINATION, null) if (success) { this.#modified = this.#getModified() this.emit('modified') return true } } throw new Error('Could not save file') } get(property, defaultValue) { return property in this.#data ? this.#data[property] : defaultValue } set(property, value, save = true) { this.#data[property] = value if (save) this.save() } clear() { try { this.#file.delete(null) } catch (e) { console.warn(e) } } get path() { return this.#file.get_path() } export() { return this.#data } }) export const getClipboard = () => Gdk.Display.get_default().get_clipboard() export const setClipboardText = (text, overlay) => { getClipboard().set_content(Gdk.ContentProvider.new_for_value(text)) if (overlay) addClipboardToast(overlay) } export const getClipboardText = () => new Promise((resolve, reject) => { const clipboard = getClipboard() clipboard.read_text_async(null, (_, res) => { try { resolve(clipboard.read_text_finish(res)) } catch (e) { reject(e) } }) }) export const addClipboardToast = overlay => overlay.add_toast(new Adw.Toast({ title: _('Copied to clipboard'), timeout: 1 })) export const base64ToPixbuf = base64 => { if (!base64) return null try { const data = GLib.base64_decode(base64) const imageStream = Gio.MemoryInputStream.new_from_bytes(data) return GdkPixbuf.Pixbuf.new_from_stream(imageStream, null) } catch (e) { console.warn(e) return null } } export const connect = (object, obj) => { for (const [key, val] of Object.entries(obj)) object.connect(key, val) return object } export const disconnect = (object, ids) => { if (!object || !ids) return for (const id of ids) object.disconnect(id) } const connections = new WeakMap() export const connectWith = (a, b, obj) => { if (!connections.has(a)) connections.set(a, new Map()) connections.get(a).set(b, Array.from(Object.entries(obj), ([k, v]) => b.connect(k, v))) return b } export const disconnectWith = (a, b) => { for (const id of connections.get(a).get(b)) b.disconnect(id) } export const settings = name => { const schema = pkg.name + (name ? '.' + name : '') try { return new Gio.Settings({ schema }) } catch {} } export const bindSettings = (name, target, arr) => { const s = settings(name) if (!s) return for (const prop of arr) s.bind(prop, target, prop, Gio.SettingsBindFlags.DEFAULT) return s } export const makeParams = obj => Object.fromEntries(Object.entries(obj).map(([k, v]) => { const type = typeof v === 'string' ? v : 'object' const flags = GObject.ParamFlags.READWRITE return [k, GObject.ParamSpec[type](k, k, k, flags, ...( type === 'string' ? [''] : type === 'boolean' ? [false] : type === 'double' ? [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER, 0] : type === 'int' ? [GLib.MININT32, GLib.MAXINT32, 0] : type === 'uint' ? [0, GLib.MAXUINT32, 0] : type === 'object' ? [GObject.Object.$gtype, null] : [v, null] ))] })) export const makeDataClass = (name, params) => { const keys = Object.keys(params) return GObject.registerClass({ GTypeName: name, Properties: makeParams(params), }, class extends GObject.Object { get keys() { return keys } toJSON() { return Object.fromEntries(keys.map(k => [k, this[k]])) } toCamel() { return Object.fromEntries(keys.map(k => [camel(k), this[k]])) } connectAll(f) { return keys.map(k => this.connect(`notify::${k}`, f)) } bindProperties(obj) { const flag = GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE for (const [prop, [target, targetProp, invert]] of Object.entries(obj)) this.bind_property(prop, target, targetProp, flag | (invert ? GObject.BindingFlags.INVERT_BOOLEAN : 0)) } bindSettings(name) { return bindSettings(name, this, keys) } unbindSettings() { for (const k of keys) Gio.Settings.unbind(this, k) } }) } export const addSimpleActions = (actions, group = new Gio.SimpleActionGroup()) => { for (const [name, func] of Object.entries(actions)) { const action = new Gio.SimpleAction({ name }) action.connect('activate', func) group.add_action(action) } return group } export const addPropertyActions = (obj, props, group = new Gio.SimpleActionGroup()) => { for (const prop of props) group.add_action(Gio.PropertyAction.new(prop, obj, prop)) return group } export const addMethods = (obj, { actions, props, signals }) => { const group = typeof obj.add_action === 'function' ? obj : new Gio.SimpleActionGroup() if (actions) addSimpleActions(Object.fromEntries( actions.map(name => [name, () => obj[camel(name)]()])), group) if (props) addPropertyActions(obj, props, group) if (signals) connect(obj, Object.fromEntries( signals.map(s => [s, obj[camel(`connect-${s}`)].bind(obj)]))) return group } export const addShortcuts = (shortcuts, controller = new Gtk.ShortcutController()) => { for (const [accel, action] of Object.entries(shortcuts)) controller.add_shortcut(new Gtk.Shortcut({ action: typeof action === 'string' ? Gtk.NamedAction.new(action) : Gtk.CallbackAction.new(action), trigger: Gtk.ShortcutTrigger.parse_string(accel), })) return controller } // gliter, short for GList Iterator export const gliter = model => ({ [Symbol.iterator]: () => { let i = 0 return { next: () => { const item = model.get_item(i++) if (item) return { value: [i - 1, item] } else return { done: true } }, } }, }) export const list = (arr, item) => { const store = new Gio.ListStore() for (const el of arr) store.append(new item(el)) return store } export const tree = (arr, item, autoexpand = true) => { const root = new Gio.ListStore() const makeItems = (arr, list) => { for (const el of arr) { const subitems = Array.isArray(el.subitems) ? makeItems(el.subitems, new Gio.ListStore()) : (el.subitems ?? null) list.append(new item({ ...el, subitems })) } return list } if (arr) makeItems(arr, root) return Gtk.TreeListModel.new(root, false, autoexpand, item => item.subitems ?? null) } // go through all child widgets export const walk = (widget, callback) => { const f = widget => { callback(widget) let child = widget.get_first_child() while (child != null) { f(child) child = child.get_next_sibling() } } f(widget) } export const getGtkDir = dir => dir === 'rtl' ? Gtk.TextDirection.RTL : Gtk.TextDirection.LTR // recursively set direction export const setDirection = (widget, dir) => { if (typeof dir === 'string') dir = getGtkDir(dir) walk(widget, widget => widget.set_direction(dir)) } export const RGBA = color => { const rgba = new Gdk.RGBA() rgba.parse(color) return rgba } const invert = rgba => { rgba.red = 1 - rgba.red rgba.green = 1 - rgba.green rgba.blue = 1 - rgba.blue return rgba } // replicate CSS's hue-rotate filter const hueRotate = (rgba, deg) => { const r = rgba.red * 255, g = rgba.green * 255, b = rgba.blue * 255 const lumR = 0.2126, lumG = 0.7152, lumB = 0.0722 const hueRotateR = 0.143, hueRotateG = 0.140, hueRotateB = 0.283 const rad = deg * Math.PI / 180 const cos = Math.cos(rad) const sin = Math.sin(rad) ;[rgba.red, rgba.green, rgba.blue] = [ r * (lumR + (1 - lumR) * cos - lumR * sin) + g * (lumG - lumG * cos - lumG * sin) + b * (lumB - lumB * cos + (1 - lumB) * sin), r * (lumR - lumR * cos + hueRotateR * sin) + g * (lumG + (1 - lumG) * cos + hueRotateG * sin) + b * (lumB - lumB * cos - hueRotateB * sin), r * (lumR - lumR * cos - (1 - lumR) * sin) + g * (lumG - lumG * cos + lumG * sin) + b * (lumB + (1 - lumB) * cos + lumB * sin), ].map(x => Math.max(0, Math.min(255, x)) / 255) return rgba } export const invertColor = color => hueRotate(invert(RGBA(color)), 180).to_string() export const addStyle = (widget, style) => { const cssProvider = new Gtk.CssProvider() cssProvider.load_from_data(style, -1) const ctx = widget.get_style_context() ctx.add_provider(cssProvider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION) return widget } export const addClass = (widget, ...classes) => { for (const c of classes) widget.add_css_class(c) return widget } ================================================ FILE: src/webview.js ================================================ import GObject from 'gi://GObject' import GLib from 'gi://GLib' import Gio from 'gi://Gio' import WebKit from 'gi://WebKit' const registerScheme = (name, callback) => WebKit.WebContext.get_default().register_uri_scheme(name, req => { try { callback(req) } catch (e) { console.error(e) req.finish_error(new GLib.Error( Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND, 'Not found')) } }) const registerPaths = (name, dirs) => registerScheme(name, req => { const path = pkg.MESON ? req.get_path().replace(/(?<=\/icons)\/hicolor(?=\/scalable\/)/, '') : req.get_path() if (dirs.every(dir => !path.startsWith(dir))) throw new Error() const mime = path.endsWith('.js') || path.endsWith('.mjs') ? 'application/javascript' : path.endsWith('.svg') ? 'image/svg+xml' : 'text/html' const file = Gio.File.new_for_uri(pkg.moduleuri(path)) req.finish(file.read(null), -1, mime) }) registerPaths('foliate', ['/reader/', '/foliate-js/']) registerPaths('foliate-opds', ['/opds/', '/foliate-js/', '/icons/', '/common/']) registerPaths('foliate-selection-tool', ['/selection-tools/', '/icons/', '/common/']) /* `.run_javascript()` is hard to use if you're running an async function. You have to use messaging which is quite cumbersome. So the idea is that we create a promise that can be resolved from the outside whenever we're calling an async function inside the webview. Then, after the function inside the webview resolves, we send a back a message that will be used to resolve the aforementioned promise. */ const makeToken = () => Math.random().toString() class PromiseStore { #promises = new Map() make(token) { return new Promise((resolve, reject) => this.#promises.set(token, { resolve: value => (resolve(value), this.#promises.delete(token)), reject: value => (reject(value), this.#promises.delete(token)), })) } resolve(token, ok, value) { const promise = this.#promises.get(token) if (ok) promise.resolve(value) else promise.reject(value) } } const pass = obj => typeof obj === 'undefined' ? '' : `JSON.parse(decodeURI("${encodeURI(JSON.stringify(obj))}"))` const makeHandlerStr = name => `globalThis.webkit.messageHandlers["${name}"]` export const WebView = GObject.registerClass({ GTypeName: 'FoliateWebView', }, class extends WebKit.WebView { #promises = new PromiseStore() #handlerName = pkg.name + '.' + makeToken() #handler = makeHandlerStr(this.#handlerName) constructor(params) { super(params) this.registerHandler(this.#handlerName, ({ token, ok, payload }) => this.#promises.resolve(token, ok, payload)) this.connect('web-process-terminated', (_, reason) => { switch (reason) { case WebKit.WebProcessTerminationReason.CRASHED: console.error('My name is Oh-No-WebKit-Crashed, bug of bugs!') console.error('Look on this line, Developer -- despair!') break case WebKit.WebProcessTerminationReason.EXCEEDED_MEMORY_LIMIT: console.error('Memory, all alone in the moonlight') console.error('I can dream of the old days') console.error('Life was beautiful then') console.error('I remember the time I knew what happiness was') console.error('Let the memory live again') break } }) } // execute arbitrary js without returning anything run(script) { return new Promise(resolve => this.evaluate_javascript(script, -1, null, null, null, () => resolve())) } eval(exp) { return new Promise((resolve, reject) => this.evaluate_javascript(`JSON.stringify(${exp})`, -1, null, null, null, (_, result) => { try { const jscValue = this.evaluate_javascript_finish(result) const str = jscValue.to_string() const value = str != null ? JSON.parse(str) : null resolve(value) } catch (e) { reject(e) } })) } // call async function with a parameter object exec(func, params) { const token = makeToken() const script = `(async () => await ${func}(${pass(params)}))() .then(payload => ${this.#handler}.postMessage( JSON.stringify({ token: "${token}", ok: true, payload }))) .catch(e => ${this.#handler}.postMessage( JSON.stringify({ token: "${token}", ok: false, payload: e?.message + '\\n' + e?.stack + '\\n' + \`${func}\` })))` const promise = this.#promises.make(token) this.evaluate_javascript(script, -1, null, null, null, () => {}) return promise } // call generator, get async generator object async iter(func, params) { const name = makeToken() const instance = `globalThis["${this.#handlerName}"]["${name}"]` const script = `globalThis["${this.#handlerName}"] ??= {} ${instance} = ${func}(${pass(params)})` await this.run(script) const next = async args => { const result = await this.exec(`${instance}.next`, args) if (result.done) await this.run(`delete ${instance}`) return result } return { next, [Symbol.asyncIterator]: () => ({ next }), // technically these should return `IteratorResult`, but do not return: async () => this.run(`${instance}?.return?.()`), throw: async () => this.run(`${instance}?.throw?.()`), } } // the revserse of the `exec` method // scripts in the webview can get response from GJS as a promise provide(name, callback) { const handlerName = this.#handlerName + '.' + name const handler = makeHandlerStr(handlerName) this.registerHandler(handlerName, ({ token, payload }) => { Promise.resolve(callback(payload)) .then(value => this.run( `globalThis.${name}.resolve("${token}", true, ${pass(value)})`)) .catch(e => { console.error(e) this.run(`globalThis.${name}.resolve("${token}", false)`) }) }) return () => { const script = `globalThis["${name}"] = (() => { const makeToken = () => Math.random().toString() ${PromiseStore.toString()} const promises = new PromiseStore() const func = params => { const token = makeToken() const promise = promises.make(token) ${handler}.postMessage(JSON.stringify({ token, payload: params })) return promise } func.resolve = promises.resolve.bind(promises) return func })()` this.run(script) } } registerHandler(name, callback) { const manager = this.get_user_content_manager() manager.connect(`script-message-received::${name}`, (_, result) => { try { callback(JSON.parse(result.to_string())) } catch (e) { console.error(e) } }) const success = manager.register_script_message_handler(name, null) if (!success) throw new Error('Failed to register script message handler') } #load(func, ...args) { return new Promise((resolve, reject) => { const changed = this.connect('load-changed', (_, event) => { if (event === WebKit.LoadEvent.FINISHED) { this.disconnect(changed) resolve() } }) const failed = this.connect('load-failed', () => { this.disconnect(failed) reject() }) func(...args) }) } loadURI(uri) { return this.#load(this.load_uri.bind(this), uri) } loadHTML(html, base = null) { return this.#load(this.load_html.bind(this), html, base) } })