Full Code of johnfactotum/foliate for AI

gtk4 ac005e93afab cached
119 files
1.4 MB
429.9k tokens
333 symbols
1 requests
Download .txt
Showing preview only (1,485K chars total). Download the full file or copy to clipboard to get everything.
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. <http://fsf.org/>
 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.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    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 <http://www.gnu.org/licenses/>.

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:

    <program>  Copyright (C) <year>  <name of author>
    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
<http://www.gnu.org/licenses/>.

  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
<http://www.gnu.org/philosophy/why-not-lgpl.html>.



================================================
FILE: README.md
================================================
<img src="data/com.github.johnfactotum.Foliate.svg" align="left" style="margin-right:8px"> 
<br><br>

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

---

<a href="https://www.buymeacoffee.com/johnfactotum" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 60px !important;width: 217px !important;" ></a>


================================================
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
================================================
<?xml version="1.0" encoding="UTF-8"?>
<schemalist gettext-domain="com.github.johnfactotum.Foliate">
  <schema id="com.github.johnfactotum.Foliate" path="/com/github/johnfactotum/Foliate/">
    <child schema="com.github.johnfactotum.Foliate.window" name="window"/>
    <child schema="com.github.johnfactotum.Foliate.viewer" name="library"/>
    <child schema="com.github.johnfactotum.Foliate.viewer" name="viewer"/>
    <key name="color-scheme" type="i">
      <default>0</default>
    </key>
  </schema>

  <schema id="com.github.johnfactotum.Foliate.window"
    path="/com/github/johnfactotum/Foliate/window/">
    <key name="default-width" type="i">
      <default>1200</default>
    </key>
    <key name="default-height" type="i">
      <default>750</default>
    </key>
    <key name="maximized" type="b">
      <default>false</default>
    </key>
    <key name="fullscreened" type="b">
      <default>false</default>
    </key>
  </schema>

  <schema id="com.github.johnfactotum.Foliate.library"
    path="/com/github/johnfactotum/Foliate/library/">
    <key name="view-mode" type="s">
      <default>'grid'</default>
    </key>
    <key name="show-covers" type="b">
      <default>true</default>
    </key>
    <key name="cover-size" type="i">
      <default>256</default>
    </key>
  </schema>

  <schema id="com.github.johnfactotum.Foliate.viewer"
    path="/com/github/johnfactotum/Foliate/viewer/">
    <child schema="com.github.johnfactotum.Foliate.viewer.view" name="view"/>
    <child schema="com.github.johnfactotum.Foliate.viewer.font" name="font"/>
    <key name="fold-sidebar" type="b">
      <default>false</default>
    </key>
    <key name="highlight-color" type="s">
      <default>'yellow'</default>
    </key>
    <key name="translate-target-language" type="s">
        <default>''</default>
    </key>
  </schema>

  <schema id="com.github.johnfactotum.Foliate.viewer.view"
    path="/com/github/johnfactotum/Foliate/viewer/view/">
    <key name="brightness" type="d">
      <default>1</default>
    </key>
    <key name="line-height" type="d">
      <default>1.5</default>
    </key>
    <key name="justify" type="b">
      <default>true</default>
    </key>
    <key name="hyphenate" type="b">
      <default>true</default>
    </key>
    <key name="gap" type="d">
      <default>0.06</default>
    </key>
    <key name="max-inline-size" type="u">
      <default>720</default>
    </key>
    <key name="max-block-size" type="u">
      <default>1440</default>
    </key>
    <key name="max-column-count" type="u">
      <default>2</default>
    </key>
    <key name="scrolled" type="b">
      <default>false</default>
    </key>
    <key name="animated" type="b">
      <default>true</default>
    </key>
    <key name="invert" type="b">
      <default>false</default>
    </key>
    <key name="theme" type="s">
      <default>'default'</default>
    </key>
    <key name="autohide-cursor" type="b">
      <default>false</default>
    </key>
    <key name="override-font" type="b">
      <default>false</default>
    </key>
  </schema>

  <schema id="com.github.johnfactotum.Foliate.viewer.font"
    path="/com/github/johnfactotum/Foliate/viewer/font/">
    <key name="serif" type="s">
      <default>'Serif'</default>
    </key>
    <key name="sans-serif" type="s">
      <default>'Sans'</default>
    </key>
    <key name="monospace" type="s">
      <default>'Monospace'</default>
    </key>
    <key name="default" type="u">
      <default>0</default>
    </key>
    <key name="default-size" type="u">
      <default>16</default>
    </key>
    <key name="minimum-size" type="u">
      <default>0</default>
    </key>
  </schema>
</schemalist>


================================================
FILE: data/com.github.johnfactotum.Foliate.metainfo.xml.in
================================================
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop">
    <id>com.github.johnfactotum.Foliate</id>
    <metadata_license>CC0-1.0</metadata_license>
    <project_license>GPL-3.0-or-later</project_license>
    <name translate="no">Foliate</name>
    <summary>Read e-books in style</summary>
    <translation type="gettext">com.github.johnfactotum.Foliate</translation>
    <description>
        <p>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.</p>
        <p>Features include:</p>
        <ul>
            <li>Open EPUB, Mobipocket, Kindle, FB2, CBZ, and PDF files</li>
            <li>Paginated mode and scrolled mode</li>
            <li>Customize font and line-spacing</li>
            <li>Light, sepia, dark, and invert mode</li>
            <li>Reading progress slider with chapter marks</li>
            <li>Bookmarks and annotations</li>
            <li>Find in book</li>
            <li>Quick dictionary lookup</li>
        </ul>
    </description>
    <developer_name translate="no">John Factotum</developer_name>
    <developer id="io.github.johnfactotum">
        <name translate="no">John Factotum</name>
    </developer>
    <launchable type="desktop-id">com.github.johnfactotum.Foliate.desktop</launchable>
    <url type="homepage">https://johnfactotum.github.io/foliate/</url>
    <url type="vcs-browser">https://github.com/johnfactotum/foliate</url>
    <url type="bugtracker">https://github.com/johnfactotum/foliate/issues</url>
    <url type="translate">https://github.com/johnfactotum/foliate/tree/gtk4/po</url>
    <url type="faq">https://github.com/johnfactotum/foliate/blob/gtk4/docs/faq.md</url>
    <url type="donation">https://www.buymeacoffee.com/johnfactotum</url>
    <screenshots>
        <screenshot type="default">
            <image type="source">https://raw.githubusercontent.com/johnfactotum/foliate/gtk4/data/screenshots/screenshot.png</image>
        </screenshot>
        <screenshot>
            <image type="source">https://raw.githubusercontent.com/johnfactotum/foliate/gtk4/data/screenshots/dark.png</image>
        </screenshot>
        <screenshot>
            <image type="source">https://raw.githubusercontent.com/johnfactotum/foliate/gtk4/data/screenshots/lookup.png</image>
        </screenshot>
        <screenshot>
            <image type="source">https://raw.githubusercontent.com/johnfactotum/foliate/gtk4/data/screenshots/annotations.png</image>
        </screenshot>
        <screenshot>
            <image type="source">https://raw.githubusercontent.com/johnfactotum/foliate/gtk4/data/screenshots/vertical.png</image>
        </screenshot>
    </screenshots>
    <releases>
        <release version="3.3.0" date="2025-04-01">
            <url type="details">https://github.com/johnfactotum/foliate/releases/tag/3.3.0</url>
            <description>
                <ul>
                    <li>Updated for GNOME 48</li>
                    <li>Added support for mouse forward/backward buttons</li>
                    <li>Improved text wrapping in headings</li>
                    <li>Improved default link style</li>
                </ul>
            </description>
        </release>
        <release version="3.2.1" date="2024-12-20">
            <url type="details">https://github.com/johnfactotum/foliate/releases/tag/3.2.1</url>
            <description>
                <ul>
                    <li>Fixed tables not displayed in FB2 books</li>
                    <li>Updated translations</li>
                </ul>
            </description>
        </release>
        <release version="3.2.0" date="2024-11-28">
            <url type="details">https://github.com/johnfactotum/foliate/releases/tag/3.2.0</url>
            <description>
                <p>Various improvments and fixes, including a revamped translation tool, better focus handling, and better PDF rendering, now faster and no longer blurry.</p>
            </description>
        </release>
        <release version="3.1.1" date="2024-04-03">
            <url type="details">https://github.com/johnfactotum/foliate/releases/tag/3.1.1</url>
            <description>
                <ul>
                    <li>Fixed end of chapter cut off when chapter starts with page break</li>
                    <li>Fixed incorrect text wrapping in tables</li>
                    <li>Fixed a performance issue with OPDS catalogs</li>
                </ul>
            </description>
        </release>
        <release version="3.1.0" date="2024-01-05">
            <url type="details">https://github.com/johnfactotum/foliate/releases/tag/3.1.0</url>
            <description>
                <ul>
                    <li>Added support for OPDS catalogs, now with support for OPDS 2.0</li>
                    <li>Added option to override publisher font</li>
                    <li>Added option to reduce animation</li>
                    <li>Added support for JPEG XL in CBZ</li>
                    <li>Fixed getting file from Tracker in Flatpak</li>
                    <li>Fixed parsing of non-year-only first-century and BCE dates</li>
                </ul>
            </description>
        </release>
        <release version="3.0.1" date="2023-11-20">
            <url type="details">https://github.com/johnfactotum/foliate/releases/tag/3.0.1</url>
        </release>
        <release version="3.0.0" date="2023-11-12">
            <url type="details">https://github.com/johnfactotum/foliate/releases/tag/3.0.0</url>
            <description>
                <p>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.</p>
            </description>
        </release>
    </releases>
    <content_rating type="oars-1.1" />
    <custom>
        <value key="Purism::form_factor">mobile</value>
    </custom>
    <branding>
      <color type="primary" scheme_preference="light">#7bf1d9</color>
      <color type="primary" scheme_preference="dark">#0b6275</color>
    </branding>
</component>


================================================
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 <http://www.gnu.org/licenses/>.
 .
 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 [<i>troubleshooting</i>](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 <i>Narration</i> 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 <i>Narration</i> 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 <i>Speak from Here</i> from the selection menu. Though you still need to use the <i>Narration</i> 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 <kbd>F12</kbd>. 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 <EMAIL@ADDRESS>, 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 <gmou3@hotmail.com>\n"
"Language-Team: Arabic <LL@li.org>\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. <a href=\"https://opds."
"io\">Learn More…</a>"
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 <a id=\"link\">Wiktionary</a>, released under the <a href=\"https://"
"creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA License</a>."
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 <a id=\"link\">Wikipedia</a>, released under the <a href=\"https://en."
"wikipedia.org/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-"
"ShareAlike_4.0_International_License\">CC BY-SA License</a>."
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. <a href=\"https://opds."
"io\">Learn More…</a>"
msgstr ""
"Можна праглядаць і спампоўваць кніжкі з каталога OPDS <a href=\"https://opds."
"io\">Падрабязней…</a>"

#: 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 <a id=\"link\">Wiktionary</a>, released under the <a href=\"https://"
"creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA License</a>."
msgstr ""
"З <a id=\"link\">Вікіслоўніку</a>, апублікавана на ўмовах <a href=\"https://"
"creativecommons.org/licenses/by-sa/4.0/\">ліцензіі CC BY-SA</a>."

#: 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 <a id=\"link\">Wikipedia</a>, released under the <a href=\"https://en."
"wikipedia.org/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-"
"ShareAlike_4.0_International_License\">CC BY-SA License</a>."
msgstr ""
"З <a id=\"link\">Вікіпедыі</a>, апублікавана на ўмовах <a href=\"https://en."
"wikipedia.org/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-"
"ShareAlike_4.0_International_License\">ліцензіі CC BY-SA</a>."

#: 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 <EMAIL@ADDRESS>, 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 <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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. <a href=\"https://opds."
"io\">Learn More…</a>"
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 <a id=\"link\">Wiktionary</a>, released under the <a href=\"https://"
"creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA License</a>."
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 <a id=\"link\">Wikipedia</a>, released under the <a href=\"https://en."
"wikipedia.org/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-"
"ShareAlike_4.0_International_License\">CC BY-SA License</a>."
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 <pavelfric@seznam.cz>, 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 <pavelfric@seznam.cz>\n"
"Language-Team: Czech <kde-i18n-doc@kde.org>\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. <a href=\"https://opds."
"io\">Learn More…</a>"
msgstr ""
"Můžete si prohlížet a stahovat knihy ze seznamů OPDS. <a href=\"https://opds."
"io\">Learn More…</a>"

#: 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 <a id=\"link\">Wiktionary</a>, released under the <a href=\"https://"
"creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA License</a>."
msgstr ""
"Z <a id=\"link\">Wikislovníku</a>, vydáno pod licencí <a href=\"https://"
"creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA</a>."

#: 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 <a id=\"link\">Wikipedia</a>, released under the <a href=\"https://en."
"wikipedia.org/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-"
"ShareAlike_4.0_International_License\">CC BY-SA License</a>."
msgstr ""
"Z <a id=\"link\">Wikipedie</a>, vydáno pod licencí <a href=\"https://en."
"wikipedia.org/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-"
"ShareAlike_4.0_International_License\">CC BY-SA</a>."

#: 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 <EMAIL@ADDRESS>, YEAR.
# Jonas Harer <jonas.harer@icloud.com>, 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 <jonas.harer@icloud.com>\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. <a href=\"https://opds."
"io\">Learn More…</a>"
msgstr ""
"Du kannst Bücher von OPDS-Katalogen durchstöbern und herunterladen. a "
"href=\"https://opds.io\">Mehr anzeigen…</a>"

#: 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 <a id=\"link\">Wiktionary</a>, released under the <a href=\"https://"
"creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA License</a>."
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 <a id=\"link\">Wikipedia</a>, released under the <a href=\"https://en."
"wikipedia.org/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-"
"ShareAlike_4.0_International_License\">CC BY-SA License</a>."
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 m
Download .txt
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
Download .txt
SYMBOL INDEX (333 symbols across 18 files)

FILE: src/annotations.js
  method update (line 36) | update({ value, label }) {
  method update (line 58) | update(obj) {
  method add (line 91) | add(value, label) {
  method delete (line 101) | delete(value) {
  method export (line 108) | export() {
  method constructor (line 125) | constructor(params) {
  method setupModel (line 150) | setupModel(model) {
  method update (line 153) | update(location = this.#location) {
  method toggle (line 165) | toggle() {
  method add (line 189) | add(annotation, index, label) {
  method delete (line 218) | delete(annotation, index) {
  method get (line 237) | get(value) {
  method getForIndex (line 240) | getForIndex(index) {
  method export (line 243) | export() {
  method constructor (line 264) | constructor(params) {
  method setupModel (line 314) | setupModel(model) {
  method filter (line 321) | filter(query) {
  method #scrollToIndex (line 331) | #scrollToIndex(i) {
  method scrollToCFI (line 334) | scrollToCFI(cfi) {
  method update (line 340) | update(location) {
  method constructor (line 377) | constructor(params) {
  method update (line 382) | update(color) {
  method constructor (line 409) | constructor(params) {
  method update (line 419) | update(color) {
  method constructor (line 434) | constructor(params) {
  method selectColor (line 481) | selectColor(color) {
  method constructor (line 520) | constructor(params) {
  method #updateStack (line 539) | #updateStack() {
  method addNote (line 545) | addNote() {
  method delete (line 550) | delete() {
  method more (line 554) | more() {
  method constructor (line 572) | constructor(params) {
  method close (line 583) | close() {

FILE: src/app.js
  method constructor (line 83) | constructor(params) {
  method add_toast (line 128) | add_toast(toast) {
  method error (line 131) | error(heading, body) {
  method actionDialog (line 138) | actionDialog() {
  method openFile (line 159) | openFile(file) {
  method openOPDS (line 169) | openOPDS(uri) {
  method open (line 173) | open() {
  method openOrImport (line 185) | openOrImport() {
  method showLibrary (line 220) | showLibrary() {
  method showMenu (line 234) | showMenu() {
  method addWindow (line 237) | addWindow(file) {
  method newWindow (line 243) | newWindow() {
  method openCopy (line 246) | openCopy() {
  method constructor (line 254) | constructor(params) {
  method connectStartup (line 274) | connectStartup() {
  method connectActivate (line 406) | connectActivate(application) {
  method connectOpen (line 415) | connectOpen(application, files) {
  method connectWindowRemoved (line 441) | connectWindowRemoved(application, window) {
  method about (line 445) | about() {

FILE: src/book-viewer.js
  method constructor (line 93) | constructor(params) {
  method constructor (line 208) | constructor(params) {
  method #exec (line 301) | #exec(...args) {
  method #applyStyle (line 304) | async #applyStyle() {
  method #contextMenu (line 340) | #contextMenu() {
  method open (line 343) | open(file) {
  method reload (line 349) | reload() {
  method zoomIn (line 352) | zoomIn() { this.#webView.zoom_level += 0.1 }
  method zoomOut (line 353) | zoomOut() { this.#webView.zoom_level -= 0.1 }
  method zoomRestore (line 354) | zoomRestore() { this.#webView.zoom_level = 1 }
  method inspector (line 355) | inspector() {
  method getRect (line 358) | getRect({ x, y }) {
  method showPopover (line 362) | showPopover(popover, point, dir) {
  method showRibbon (line 372) | showRibbon(x) {
  method goTo (line 376) | goTo(x) { return this.#exec('reader.view.goTo', x) }
  method goToFraction (line 377) | goToFraction(x) { return this.#exec('reader.view.goToFraction', x) }
  method select (line 378) | select(x) { return this.#exec('reader.view.select', x) }
  method deselect (line 379) | deselect() { return this.#exec('reader.view.deselect') }
  method getTOCItemOf (line 380) | getTOCItemOf(x) { return this.#exec('reader.view.getTOCItemOf', x) }
  method prev (line 381) | prev() { return this.#exec('reader.view.prev') }
  method next (line 382) | next() { return this.#exec('reader.view.next') }
  method goLeft (line 383) | goLeft() { return this.#exec('reader.view.goLeft') }
  method goRight (line 384) | goRight() { return this.#exec('reader.view.goRight') }
  method #scrollDistance (line 385) | get #scrollDistance() {
  method scrollUp (line 388) | scrollUp() { return this.#exec('reader.view.prev', this.#scrollDistance) }
  method scrollDown (line 389) | scrollDown() { return this.#exec('reader.view.next', this.#scrollDistanc...
  method prevSection (line 391) | prevSection() { return this.#exec('reader.view.renderer.prevSection') }
  method nextSection (line 392) | nextSection() { return this.#exec('reader.view.renderer.nextSection') }
  method firstSection (line 393) | firstSection() { return this.#exec('reader.view.renderer.firstSection') }
  method lastSection (line 394) | lastSection() { return this.#exec('reader.view.renderer.lastSection') }
  method back (line 395) | back() { return this.#exec('reader.view.history.back') }
  method forward (line 396) | forward() { return this.#exec('reader.view.history.forward') }
  method search (line 397) | search(x) { return this.#webView.iter('reader.view.search', x) }
  method clearSearch (line 398) | clearSearch() { return this.#webView.iter('reader.view.clearSearch') }
  method showAnnotation (line 399) | showAnnotation(x) { return this.#exec('reader.view.showAnnotation', x) }
  method addAnnotation (line 400) | addAnnotation(x) { return this.#exec('reader.view.addAnnotation', x) }
  method deleteAnnotation (line 401) | deleteAnnotation(x) { return this.#exec('reader.view.deleteAnnotation', ...
  method print (line 402) | print() { return this.#exec('reader.print') }
  method initTTS (line 403) | initTTS(x) { return this.#exec('reader.view.initTTS', x) }
  method ttsStart (line 404) | ttsStart() { return this.#exec('reader.view.tts.start') }
  method ttsPrev (line 405) | ttsPrev(x) { return this.#exec('reader.view.tts.prev', x) }
  method ttsNext (line 406) | ttsNext(x) { return this.#exec('reader.view.tts.next', x) }
  method ttsResume (line 407) | ttsResume() { return this.#exec('reader.view.tts.resume') }
  method ttsSetMark (line 408) | ttsSetMark(x) { return this.#exec('reader.view.tts.setMark', x) }
  method mediaOverlayStart (line 409) | mediaOverlayStart() { return this.#exec('reader.view.startMediaOverlay') }
  method mediaOverlayPause (line 410) | mediaOverlayPause() { return this.#exec('reader.view.mediaOverlay.pause') }
  method mediaOverlayResume (line 411) | mediaOverlayResume() { return this.#exec('reader.view.mediaOverlay.resum...
  method mediaOverlayStop (line 412) | mediaOverlayStop() { return this.#exec('reader.view.mediaOverlay.stop') }
  method mediaOverlayPrev (line 413) | mediaOverlayPrev() { return this.#exec('reader.view.mediaOverlay.prev') }
  method mediaOverlayNext (line 414) | mediaOverlayNext() { return this.#exec('reader.view.mediaOverlay.next') }
  method mediaOverlaySetVolume (line 415) | mediaOverlaySetVolume(x) { return this.#exec('reader.view.mediaOverlay.s...
  method mediaOverlaySetRate (line 416) | mediaOverlaySetRate(x) { return this.#exec('reader.view.mediaOverlay.set...
  method getCover (line 417) | getCover() { return this.#exec('reader.getCover').then(utils.base64ToPix...
  method init (line 418) | init(x) { return this.#exec('reader.view.init', x) }
  method webView (line 419) | get webView() { return this.#webView }
  method grab_focus (line 420) | grab_focus() { return this.#webView.grab_focus() }
  method constructor (line 532) | constructor(params) {
  method #onError (line 782) | #onError({ id, message, stack }) {
  method #onBookReady (line 795) | async #onBookReady({ book, reader }) {
  method #onRelocate (line 856) | #onRelocate(payload) {
  method #deleteAnnotation (line 868) | #deleteAnnotation(annotation) {
  method #showSelection (line 876) | #showSelection({ type, value, text, content, lang, pos: { point, dir } }) {
  method #onSelection (line 929) | #onSelection(payload) {
  method #createOverlay (line 959) | #createOverlay({ index }) {
  method #showImage (line 965) | #showImage({ base64, mimetype }) {
  method open (line 997) | open(file) {
  method showPrimaryMenu (line 1010) | showPrimaryMenu() {
  method toggleSidebar (line 1014) | toggleSidebar() {
  method #toggleSidebarContent (line 1017) | #toggleSidebarContent(name) {
  method toggleToc (line 1028) | toggleToc() { this.#toggleSidebarContent('toc') }
  method toggleAnnotations (line 1029) | toggleAnnotations() { this.#toggleSidebarContent('annotations') }
  method toggleBookmarks (line 1030) | toggleBookmarks() { this.#toggleSidebarContent('bookmarks') }
  method toggleSearch (line 1031) | toggleSearch() {
  method showLocation (line 1041) | showLocation() {
  method showInfo (line 1044) | showInfo() {
  method preferences (line 1047) | preferences() {
  method bookmark (line 1054) | bookmark() {
  method exportAnnotations (line 1057) | exportAnnotations() {
  method importAnnotations (line 1060) | importAnnotations() {
  method helpOverlay (line 1063) | helpOverlay() {
  method vfunc_unroot (line 1071) | vfunc_unroot() {

FILE: src/common/widgets.js
  method constructor (line 6) | constructor() {
  method attributeChangedCallback (line 13) | attributeChangedCallback(_, __, val) {
  method constructor (line 27) | constructor() {
  method constructor (line 57) | constructor() {
  method constructor (line 81) | constructor() {
  method showChild (line 95) | showChild(child) {
  method constructor (line 104) | constructor() {
  method setFocusPrev (line 115) | setFocusPrev(el) {
  method setFocusNext (line 118) | setFocusNext(el, items = this.#items) {
  method #onKeyDown (line 137) | #onKeyDown(e) {
  method constructor (line 169) | constructor() {
  method connectedCallback (line 209) | connectedCallback() {
  method disconnectedCallback (line 213) | disconnectedCallback() {

FILE: src/data.js
  class BookData (line 9) | class BookData {
    method constructor (line 17) | constructor(key, views) {
    method initView (line 27) | async initView(view, init) {
    method addAnnotation (line 50) | async addAnnotation(annotation, save = true) {
    method addAnnotations (line 62) | async addAnnotations(annotations, save = true) {
    method deleteAnnotation (line 66) | async deleteAnnotation(annotation) {
    method #saveAnnotations (line 77) | #saveAnnotations() {
    method #saveBookmarks (line 80) | #saveBookmarks() {
    method saveCover (line 83) | saveCover(cover) {
    method saveURI (line 95) | saveURI(file) {
  class BookDataStore (line 104) | class BookDataStore {
    method get (line 108) | get(key, view) {
    method delete (line 124) | delete(view) {

FILE: src/image-viewer.js
  method constructor (line 31) | constructor(params) {
  method zoom (line 57) | zoom(d) {
  method rotate (line 62) | rotate(degree) {
  method #update (line 66) | #update() {
  method #updateActions (line 74) | #updateActions() {

FILE: src/library.js
  class URIStore (line 116) | class URIStore {
    method get (line 119) | get(id) {
    method set (line 128) | set(id, uri) {
    method delete (line 132) | delete(id) {
  method constructor (line 148) | constructor(params) {
  method loadMore (line 157) | loadMore(n) {
  method getBook (line 164) | getBook(file) {
  method getBookFromIdentifier (line 168) | getBookFromIdentifier(identifier) {
  method delete (line 174) | delete(file) {
  method update (line 182) | update(path) {
  method load (line 207) | load(pixbuf, title) {
  method constructor (line 237) | constructor(params) {
  method update (line 247) | update(item, data, cover) {
  method constructor (line 269) | constructor(params) {
  method update (line 279) | update(item, data) {
  method constructor (line 346) | constructor(params) {
  method #checkAdjustment (line 356) | #checkAdjustment(adj) {
  method #update (line 364) | #update() {
  method setModel (line 368) | setModel(model) {
  method showGrid (line 372) | showGrid() {
  method showList (line 394) | showList() {
  method #getData (line 412) | #getData(file, getCover) {
  method search (line 419) | search(text) {
  method removeBook (line 434) | removeBook(file) {
  method openWithExternalApp (line 447) | openWithExternalApp(file) {
  method constructor (line 491) | constructor(params) {
  method init (line 501) | init() {
  method load (line 578) | load(url, isSearch) {
  method back (line 593) | back() {
  method forward (line 596) | forward() {
  method search (line 599) | search() {
  method download (line 602) | download({ href, token }) {
  method vfunc_unroot (line 645) | vfunc_unroot() {
  method constructor (line 679) | constructor(params) {
  method rename (line 709) | rename() {
  method constructor (line 798) | constructor(params) {
  method #addCatalog (line 913) | #addCatalog(url) {
  method addCatalog (line 935) | async addCatalog() {
  method showCatalog (line 968) | showCatalog(url) {

FILE: src/main.js
  constant MESON (line 3) | const MESON = '\@GJS@' !== '@GJS@' // the latter would be replace by Meson

FILE: src/navbar.js
  constant ONE_HUNDRED_PERCENT_LENGTH (line 8) | const ONE_HUNDRED_PERCENT_LENGTH = format.percent(1).length
  method constructor (line 23) | constructor(params) {
  method load (line 42) | load(landmarks) {
  method constructor (line 59) | constructor(params) {
  method load (line 70) | load(pageList) {
  method update (line 82) | update(item) {
  method constructor (line 97) | constructor(params) {
  method loadSectionFractions (line 106) | loadSectionFractions(fractions) {
  method update (line 111) | update(fraction) {
  method constructor (line 143) | constructor(params) {
  method shouldStayVisible (line 177) | get shouldStayVisible() {
  method update (line 180) | update(progress) {
  method setDirection (line 195) | setDirection(dir) {
  method loadSectionFractions (line 202) | loadSectionFractions(fractions) {
  method loadPageList (line 205) | loadPageList(pageList, total) {
  method loadLandmarks (line 216) | loadLandmarks(landmarks) {
  method copyCfi (line 220) | copyCfi() {
  method pasteCfi (line 224) | pasteCfi() {
  method showLocation (line 229) | showLocation() {
  method setTTSType (line 233) | setTTSType(name) {

FILE: src/opds/main.js
  constant MIME (line 7) | const MIME = {
  constant PAGINATION (line 15) | const PAGINATION = Symbol('pagination')
  method constructor (line 71) | constructor() {
  method attributeChangedCallback (line 77) | attributeChangedCallback(name, _, val) {
  method constructor (line 98) | constructor() {
  method attributeChangedCallback (line 104) | attributeChangedCallback(name, _, val) {
  method constructor (line 128) | constructor() {
  method attributeChangedCallback (line 156) | attributeChangedCallback(name, _, val) {
  method disconnectedCallback (line 169) | disconnectedCallback() {

FILE: src/reader/reader.js
  class Reader (line 218) | class Reader {
    method constructor (line 226) | constructor(book) {
    method init (line 278) | async init() {
    method setAppearance (line 285) | setAppearance({ style, layout, autohideCursor }) {
    method #handleEvents (line 308) | #handleEvents() {
    method #onLoad (line 372) | #onLoad(e) {
    method #showAnnotation (line 395) | #showAnnotation({ index, range, value, pos }) {
    method #showSelection (line 402) | #showSelection({ index, range, lang, value, pos, text }) {
    method printRange (line 434) | printRange(doc, range) {
    method print (line 465) | print() {
    method getCover (line 468) | async getCover() {
    method scrollBy (line 481) | scrollBy([x, y]) {
    method snap (line 484) | snap([x, y]) {
    method constructor (line 534) | constructor(book) {
    method init (line 539) | async init() {
    method getCover (line 542) | async getCover() {
  class Reader (line 533) | class Reader {
    method constructor (line 226) | constructor(book) {
    method init (line 278) | async init() {
    method setAppearance (line 285) | setAppearance({ style, layout, autohideCursor }) {
    method #handleEvents (line 308) | #handleEvents() {
    method #onLoad (line 372) | #onLoad(e) {
    method #showAnnotation (line 395) | #showAnnotation({ index, range, value, pos }) {
    method #showSelection (line 402) | #showSelection({ index, range, lang, value, pos, text }) {
    method printRange (line 434) | printRange(doc, range) {
    method print (line 465) | print() {
    method getCover (line 468) | async getCover() {
    method scrollBy (line 481) | scrollBy([x, y]) {
    method snap (line 484) | snap([x, y]) {
    method constructor (line 534) | constructor(book) {
    method init (line 539) | async init() {
    method getCover (line 542) | async getCover() {

FILE: src/search.js
  method constructor (line 44) | constructor(params) {
  method reset (line 95) | async reset() {
  method search (line 102) | async search() {
  method cycle (line 135) | cycle(dir) {

FILE: src/selection-tools.js
  method constructor (line 106) | constructor(params) {
  method loadTool (line 120) | loadTool(tool, init) {
  method constructor (line 138) | constructor(params) {

FILE: src/speech.js
  class SSIPConnection (line 4) | class SSIPConnection {
    method constructor (line 10) | constructor(onEvent) {
    method spawn (line 13) | spawn() {
    method connect (line 20) | connect() {
    method #receive (line 35) | #receive() {
    method #onEvent (line 46) | #onEvent(code, end, message) {
    method send (line 54) | send(command) {
  class SSIPClient (line 69) | class SSIPClient {
    method init (line 74) | async init() {
    method #makePromise (line 93) | #makePromise(msgID){
    method #makeIter (line 99) | #makeIter(msgID) {
    method send (line 113) | async send(command) {
    method speak (line 117) | async speak(str) {
    method pause (line 139) | pause() {
    method resume (line 142) | resume() {
    method stop (line 145) | stop() {
    method setRate (line 148) | setRate(rate) {
    method setPitch (line 151) | setPitch(rate) {
    method listSynthesisVoices (line 154) | async listSynthesisVoices() {

FILE: src/toc.js
  method constructor (line 27) | constructor(params) {
  method load (line 59) | load(toc) {
  method getParents (line 73) | getParents(id) {
  method setCurrent (line 82) | setCurrent(id) {

FILE: src/tts.js
  method constructor (line 34) | constructor(params) {
  method #connectScale (line 44) | #connectScale(scale, f) {
  method state (line 54) | get state() {
  method state (line 57) | set state(state) {
  method #init (line 63) | #init() {
  method #speak (line 66) | async #speak(ssml) {
  method speak (line 78) | speak(ssml) {
  method play (line 81) | play() {
  method start (line 85) | start() {
  method pause (line 92) | pause() {
  method stop (line 96) | stop() {
  method backward (line 100) | backward() {
  method forward (line 107) | forward() {
  method error (line 114) | error(e) {
  method kill (line 120) | kill() {
  method constructor (line 149) | constructor(params) {
  method state (line 164) | get state() {
  method state (line 167) | set state(state) {
  method play (line 173) | play() {
  method start (line 177) | start() {
  method pause (line 182) | pause() {
  method stop (line 186) | stop() {
  method backward (line 190) | backward() {
  method forward (line 194) | forward() {

FILE: src/utils.js
  method constructor (line 78) | constructor(path, name, indent) {
  method #getModified (line 94) | #getModified() {
  method #read (line 106) | #read() {
  method saveNow (line 110) | saveNow() {
  method get (line 126) | get(property, defaultValue) {
  method set (line 129) | set(property, value, save = true) {
  method clear (line 133) | clear() {
  method path (line 140) | get path() {
  method export (line 143) | export() {
  method keys (line 236) | get keys() {
  method toJSON (line 239) | toJSON() {
  method toCamel (line 242) | toCamel() {
  method connectAll (line 245) | connectAll(f) {
  method bindProperties (line 248) | bindProperties(obj) {
  method bindSettings (line 254) | bindSettings(name) {
  method unbindSettings (line 257) | unbindSettings() {

FILE: src/webview.js
  class PromiseStore (line 45) | class PromiseStore {
    method make (line 47) | make(token) {
    method resolve (line 53) | resolve(token, ok, value) {
  method constructor (line 71) | constructor(params) {
  method run (line 93) | run(script) {
  method eval (line 97) | eval(exp) {
  method exec (line 111) | exec(func, params) {
  method iter (line 124) | async iter(func, params) {
  method provide (line 145) | provide(name, callback) {
  method registerHandler (line 174) | registerHandler(name, callback) {
  method #load (line 186) | #load(func, ...args) {
  method loadURI (line 201) | loadURI(uri) {
  method loadHTML (line 204) | loadHTML(html, base = null) {
Condensed preview — 119 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,583K chars).
[
  {
    "path": ".github/FUNDING.yml",
    "chars": 30,
    "preview": "buy_me_a_coffee: johnfactotum\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 703,
    "preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: bug\nassignees: ''\n\n---\n\n**Describe the "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 604,
    "preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: enhancement\nassignees: ''\n\n---\n\n**Is"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/question.md",
    "chars": 317,
    "preview": "---\nname: Question\nabout: Ask a question\ntitle: ''\nlabels: question\nassignees: ''\n\n---\n\n**Question:**\nA clear and concis"
  },
  {
    "path": ".github/workflows/deb.yml",
    "chars": 1233,
    "preview": "# This is a basic workflow to help you get started with Actions\n\nname: Build Debian Package\n\n# Controls when the action "
  },
  {
    "path": ".github/workflows/eslint.yml",
    "chars": 1410,
    "preview": "# This workflow uses actions that are not certified by GitHub.\n# They are provided by a third-party and are governed by\n"
  },
  {
    "path": ".github/workflows/snap.yml",
    "chars": 587,
    "preview": "name: Build test Foliate Snap\non:\n  push:\n    branches:\n      - gtk4\n  workflow_dispatch:\n\njobs:\n  snap:\n    name: Build"
  },
  {
    "path": ".gitignore",
    "chars": 188,
    "preview": "_build/\nbuild/\n.flatpak-builder/\n.mo\n__pycache__/\nnode_modules/\n\n#snapcraft specific ignores\n/parts/\n/stage/\n/prime/\n\n*."
  },
  {
    "path": ".gitmodules",
    "chars": 102,
    "preview": "[submodule \"src/foliate-js\"]\n\tpath = src/foliate-js\n\turl = https://github.com/johnfactotum/foliate-js\n"
  },
  {
    "path": "COPYING",
    "chars": 35148,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "README.md",
    "chars": 4048,
    "preview": "<img src=\"data/com.github.johnfactotum.Foliate.svg\" align=\"left\" style=\"margin-right:8px\"> \n<br><br>\n\n# Foliate\n\nRead bo"
  },
  {
    "path": "com.github.johnfactotum.Foliate.json",
    "chars": 818,
    "preview": "{\n    \"app-id\" : \"com.github.johnfactotum.Foliate\",\n    \"runtime\" : \"org.gnome.Sdk\",\n    \"runtime-version\" : \"49\",\n    \""
  },
  {
    "path": "data/com.github.johnfactotum.Foliate.desktop.in",
    "chars": 792,
    "preview": "[Desktop Entry]\n# Translators: Do NOT translate! The is the application name!\nName=Foliate\nGenericName=E-Book Viewer\nCom"
  },
  {
    "path": "data/com.github.johnfactotum.Foliate.gschema.xml",
    "chars": 3674,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schemalist gettext-domain=\"com.github.johnfactotum.Foliate\">\n  <schema id=\"com.g"
  },
  {
    "path": "data/com.github.johnfactotum.Foliate.metainfo.xml.in",
    "chars": 6218,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<component type=\"desktop\">\n    <id>com.github.johnfactotum.Foliate</id>\n    <meta"
  },
  {
    "path": "data/meson.build",
    "chars": 1520,
    "preview": "desktop_file = i18n.merge_file(\n  input: 'com.github.johnfactotum.Foliate.desktop.in',\n  output: 'com.github.johnfactotu"
  },
  {
    "path": "debian/changelog",
    "chars": 157,
    "preview": "foliate (3.3.0) bionic; urgency=medium\n\n  * New version\n\n -- John Factotum <50942278+johnfactotum@users.noreply.github.c"
  },
  {
    "path": "debian/control",
    "chars": 839,
    "preview": "Source: foliate\nSection: gnome\nPriority: optional\nMaintainer: John Factotum <50942278+johnfactotum@users.noreply.github."
  },
  {
    "path": "debian/copyright",
    "chars": 2342,
    "preview": "Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/\nUpstream-Name: foliate\nUpstream-Contact: John "
  },
  {
    "path": "debian/lintian-override",
    "chars": 24,
    "preview": "foliate: no-manual-page\n"
  },
  {
    "path": "debian/rules",
    "chars": 248,
    "preview": "#!/usr/bin/make -f\n\nexport DEB_BUILD_MAINT_OPTIONS = hardening=+all\n\n%:\n\tdh $@\n\noverride_dh_auto_configure:\n\tdh_auto_con"
  },
  {
    "path": "debian/source/format",
    "chars": 12,
    "preview": "3.0 (quilt)\n"
  },
  {
    "path": "debian/upstream/metadata",
    "chars": 304,
    "preview": "Bug-Database: https://github.com/johnfactotum/foliate/issues\nBug-Submit: https://github.com/johnfactotum/foliate/issues/"
  },
  {
    "path": "debian/watch",
    "chars": 150,
    "preview": "version=4\nopts=filenamemangle=s/.+\\/v?(\\d\\S+)\\.tar\\.gz/foliate-$1\\.tar\\.gz/ \\\n  https://github.com/johnfactotum/foliate/"
  },
  {
    "path": "docs/faq.md",
    "chars": 6910,
    "preview": "# FAQ\n\n## General\n\n### Something isn't working! What can I do?\n\nSee [<i>troubleshooting</i>](troubleshooting.md).\n\n## Re"
  },
  {
    "path": "docs/troubleshooting.md",
    "chars": 3288,
    "preview": "# Troubleshooting\n\n## I changed the font, color, and spacing settings, but it's not working for some books\n\nFoliate trie"
  },
  {
    "path": "eslint.config.js",
    "chars": 887,
    "preview": "import js from '@eslint/js'\nimport globals from 'globals'\n\nexport default [js.configs.recommended, { ignores: ['src/foli"
  },
  {
    "path": "meson.build",
    "chars": 576,
    "preview": "project('com.github.johnfactotum.Foliate',\n    version: '3.3.0',\n    meson_version: '>= 0.59.0',\n)\n\ngnome = import('gnom"
  },
  {
    "path": "meson_options.txt",
    "chars": 90,
    "preview": "option('check_runtime_deps', type: 'boolean', description: 'Check run-time dependencies')\n"
  },
  {
    "path": "package.json",
    "chars": 488,
    "preview": "{\n  \"name\": \"foliate\",\n  \"version\": \"3.1.1\",\n  \"description\": \"Read e-books in style\",\n  \"repository\": {\n    \"type\": \"gi"
  },
  {
    "path": "po/LINGUAS",
    "chars": 111,
    "preview": "ar\nbe\ncs\nde\nel\nes\neu\nfa\nfr\nga\ngl\nhe\nhi\nhr\nhu\nid\nie\nit\nja\nka\nko\nnb\nnl\nnn\noc\npt_BR\nru\nsr\nsv\ntr\nuk\nzh_CN\nzh_TW\nvi\n"
  },
  {
    "path": "po/POTFILES",
    "chars": 674,
    "preview": "src/annotations.js\nsrc/app.js\nsrc/book-info.js\nsrc/book-viewer.js\nsrc/format.js\nsrc/library.js\nsrc/main.js\nsrc/navbar.js"
  },
  {
    "path": "po/ar.po",
    "chars": 25168,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
  },
  {
    "path": "po/be.po",
    "chars": 27187,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
  },
  {
    "path": "po/com.github.johnfactotum.Foliate.pot",
    "chars": 21643,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
  },
  {
    "path": "po/cs.po",
    "chars": 28637,
    "preview": "# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the com.github."
  },
  {
    "path": "po/de.po",
    "chars": 28290,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
  },
  {
    "path": "po/el.po",
    "chars": 28867,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
  },
  {
    "path": "po/es.po",
    "chars": 28257,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
  },
  {
    "path": "po/eu.po",
    "chars": 29469,
    "preview": "# BASQUE LANGUAGE FILE\n# Copyright (C) 2020\n# This file is distributed under the same license as the com.github.johnfact"
  },
  {
    "path": "po/fa.po",
    "chars": 26923,
    "preview": "# Farsi translations for com.github.johnfactotum.Foliate package.\n# Copyright (C) 2020 THE com.github.johnfactotum.Folia"
  },
  {
    "path": "po/fr.po",
    "chars": 27775,
    "preview": "# French translations for com.github.johnfactotum.Foliate package.\n# Copyright (C) 2020 THE com.github.johnfactotum.Foli"
  },
  {
    "path": "po/ga.po",
    "chars": 27864,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
  },
  {
    "path": "po/gl.po",
    "chars": 27436,
    "preview": "# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same license as the com.github."
  },
  {
    "path": "po/he.po",
    "chars": 26959,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
  },
  {
    "path": "po/hi.po",
    "chars": 27738,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
  },
  {
    "path": "po/hr.po",
    "chars": 27083,
    "preview": "# Croatian translations for com.github.johnfactotum.Foliate package\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n"
  },
  {
    "path": "po/hu.po",
    "chars": 27636,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
  },
  {
    "path": "po/id.po",
    "chars": 24869,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
  },
  {
    "path": "po/ie.po",
    "chars": 25339,
    "preview": "# Interlingue translation of Foliate.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed und"
  },
  {
    "path": "po/it.po",
    "chars": 28339,
    "preview": "# Italian translations for com.github.johnfactotum.Foliate package\n# Traduzioni italiane per il pacchetto com.github.joh"
  },
  {
    "path": "po/ja.po",
    "chars": 24824,
    "preview": "# Japanese translations for Foliate.\n# Copyright (C) 2025\n# This file is distributed under the same license as the com.g"
  },
  {
    "path": "po/ka.po",
    "chars": 27448,
    "preview": "# Georgian translation for com.github.johnfactotum.Foliate.\n# Copyright (C) 2026 com.github.johnfactotum.Foliate's autho"
  },
  {
    "path": "po/ko.po",
    "chars": 25491,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
  },
  {
    "path": "po/meson.build",
    "chars": 51,
    "preview": "i18n.gettext(meson.project_name(), preset: 'glib')\n"
  },
  {
    "path": "po/nb.po",
    "chars": 25042,
    "preview": "# Norwegian (Bokmål) translations for Foliate \n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distri"
  },
  {
    "path": "po/nl.po",
    "chars": 28616,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
  },
  {
    "path": "po/nn.po",
    "chars": 25056,
    "preview": "# Norwegian (Nynorsk) translations for Foliate \n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distr"
  },
  {
    "path": "po/oc.po",
    "chars": 28081,
    "preview": "# Occitan translation file.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the sam"
  },
  {
    "path": "po/pt_BR.po",
    "chars": 29376,
    "preview": "# Brazilian Portuguese translation for com.github.johnfactotum.Foliate package.\n# Copyright (C) 2019 THE com.github.john"
  },
  {
    "path": "po/ru.po",
    "chars": 28459,
    "preview": "# Russian translations for com.github.johnfactotum.Foliate package.\n# Copyright (C) 2022 THE com.github.johnfactotum.Fol"
  },
  {
    "path": "po/sr.po",
    "chars": 26573,
    "preview": "# Serbian translations for com.github.johnfactotum.Foliate package.\n# Copyright (C) 2024 THE com.github.johnfactotum.Fol"
  },
  {
    "path": "po/sv.po",
    "chars": 28387,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
  },
  {
    "path": "po/tr.po",
    "chars": 27052,
    "preview": "# Turkish translation of Foliate.\n# Copyright (C) 2020-2022 Foliate's COPYRIGHT HOLDER\n# This file is distributed under "
  },
  {
    "path": "po/uk.po",
    "chars": 29260,
    "preview": "# Ukrainian translation for Foliate.\n# Copyright (C) 2020-2025 THE Foliate'S COPYRIGHT HOLDER\n# This file is distributed"
  },
  {
    "path": "po/vi.po",
    "chars": 26721,
    "preview": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\n# This file is distributed under the same "
  },
  {
    "path": "po/zh_CN.po",
    "chars": 25137,
    "preview": "# Simplified Chinese translations for com.github.johnfactotum.Foliate package.\n# Copyright (C) 2019 THE PACKAGE'S COPYRI"
  },
  {
    "path": "po/zh_TW.po",
    "chars": 24938,
    "preview": "# Traditional Chinese translations for com.github.johnfactotum.Foliate package.\n# Copyright (C) 2019 THE com.github.john"
  },
  {
    "path": "snapcraft.yaml",
    "chars": 2144,
    "preview": "name: foliate\ngrade: stable\nadopt-info: foliate\nlicense: GPL-3.0+\nbase: core24\nconfinement: strict\ncompression: lzo\nplat"
  },
  {
    "path": "src/annotations.js",
    "chars": 25339,
    "preview": "import Gtk from 'gi://Gtk'\nimport Adw from 'gi://Adw'\nimport Gio from 'gi://Gio'\nimport GObject from 'gi://GObject'\nimpo"
  },
  {
    "path": "src/app.js",
    "chars": 16833,
    "preview": "import Gtk from 'gi://Gtk'\nimport Adw from 'gi://Adw'\nimport GObject from 'gi://GObject'\nimport GLib from 'gi://GLib'\nim"
  },
  {
    "path": "src/book-info.js",
    "chars": 8099,
    "preview": "import Gtk from 'gi://Gtk'\nimport Adw from 'gi://Adw'\nimport Pango from 'gi://Pango'\nimport { gettext as _ } from 'gette"
  },
  {
    "path": "src/book-viewer.js",
    "chars": 46635,
    "preview": "import Gtk from 'gi://Gtk'\nimport Adw from 'gi://Adw'\nimport GLib from 'gi://GLib'\nimport Gio from 'gi://Gio'\nimport GOb"
  },
  {
    "path": "src/common/widgets.js",
    "chars": 7527,
    "preview": "customElements.define('foliate-symbolic', class extends HTMLElement {\n    static observedAttributes = ['src']\n    #root "
  },
  {
    "path": "src/data.js",
    "chars": 4734,
    "preview": "import GLib from 'gi://GLib'\nimport Gio from 'gi://Gio'\nimport GdkPixbuf from 'gi://GdkPixbuf'\nimport * as utils from '."
  },
  {
    "path": "src/format.js",
    "chars": 4422,
    "preview": "import GLib from 'gi://GLib'\nimport Gio from 'gi://Gio'\nimport { gettext as _ } from 'gettext'\n\nconst makeLocale = local"
  },
  {
    "path": "src/generate-gresource.js",
    "chars": 1985,
    "preview": "#!/usr/bin/env node\nimport { readdir, writeFile } from 'fs/promises'\nimport { join } from 'path'\n\nconst getPath = file ="
  },
  {
    "path": "src/gresource.xml",
    "chars": 19467,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<gresources>\n  <gresource prefix=\"/com/github/johnfactotum/Foliate\">\n    <file>an"
  },
  {
    "path": "src/image-viewer.js",
    "chars": 2924,
    "preview": "import Gtk from 'gi://Gtk'\nimport GObject from 'gi://GObject'\nimport Gdk from 'gi://Gdk'\nimport GdkPixbuf from 'gi://Gdk"
  },
  {
    "path": "src/library.js",
    "chars": 36598,
    "preview": "import Gtk from 'gi://Gtk'\nimport Adw from 'gi://Adw'\nimport GObject from 'gi://GObject'\nimport Gio from 'gi://Gio'\nimpo"
  },
  {
    "path": "src/main.js",
    "chars": 2300,
    "preview": "#!@GJS@ -m\n// eslint-disable-next-line no-useless-escape\nconst MESON = '\\@GJS@' !== '@GJS@' // the latter would be repla"
  },
  {
    "path": "src/meson.build",
    "chars": 540,
    "preview": "bin_conf = configuration_data()\nbin_conf.set('GJS', gjs.get_variable(pkgconfig: 'gjs_console'))\nbin_conf.set('datadir', "
  },
  {
    "path": "src/navbar.js",
    "chars": 8405,
    "preview": "import Gtk from 'gi://Gtk'\nimport GObject from 'gi://GObject'\nimport Pango from 'gi://Pango'\nimport * as utils from './u"
  },
  {
    "path": "src/opds/main.html",
    "chars": 16899,
    "preview": "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<meta name=\"color-scheme\" content=\"light dark\">\n<meta http-equiv=\"Content-Securit"
  },
  {
    "path": "src/opds/main.js",
    "chars": 27328,
    "preview": "import '../common/widgets.js'\nimport { REL, SYMBOL, isOPDSCatalog, getPublication, getFeed, getSearch, getOpenSearch } f"
  },
  {
    "path": "src/reader/markup.js",
    "chars": 2092,
    "preview": "const unescapeHTML = str => {\n    const textarea = document.createElement('textarea')\n    textarea.innerHTML = str\n    r"
  },
  {
    "path": "src/reader/reader.html",
    "chars": 3386,
    "preview": "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<meta name=\"color-scheme\" content=\"light dark\">\n<meta http-equiv=\"Content-Securit"
  },
  {
    "path": "src/reader/reader.js",
    "chars": 21040,
    "preview": "import { makeBook, NotFoundError, UnsupportedTypeError } from '../foliate-js/view.js'\nimport { Overlayer } from '../foli"
  },
  {
    "path": "src/search.js",
    "chars": 5292,
    "preview": "import Gtk from 'gi://Gtk'\nimport GObject from 'gi://GObject'\nimport GLib from 'gi://GLib'\nimport Pango from 'gi://Pango"
  },
  {
    "path": "src/selection-tools/common.css",
    "chars": 620,
    "preview": "* {\n    box-sizing: border-box;\n}\nhtml, body {\n    color-scheme: light dark;\n    font: menu;\n}\nh1 {\n    font-size: large"
  },
  {
    "path": "src/selection-tools/translate.html",
    "chars": 6259,
    "preview": "<!DOCTYPE html>\n<html>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n<link "
  },
  {
    "path": "src/selection-tools/wikipedia.html",
    "chars": 2157,
    "preview": "<!DOCTYPE html>\n<html>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n<link "
  },
  {
    "path": "src/selection-tools/wiktionary.html",
    "chars": 4184,
    "preview": "<!DOCTYPE html>\n<html>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n<link "
  },
  {
    "path": "src/selection-tools.js",
    "chars": 6902,
    "preview": "import Gtk from 'gi://Gtk'\nimport Gio from 'gi://Gio'\nimport GObject from 'gi://GObject'\nimport WebKit from 'gi://WebKit"
  },
  {
    "path": "src/speech.js",
    "chars": 5440,
    "preview": "import Gio from 'gi://Gio'\nimport GLib from 'gi://GLib'\n\nclass SSIPConnection {\n    #connection\n    #inputStream\n    #ou"
  },
  {
    "path": "src/themes.js",
    "chars": 3648,
    "preview": "import Gtk from 'gi://Gtk'\nimport GLib from 'gi://GLib'\nimport { gettext as _ } from 'gettext'\nimport * as utils from '."
  },
  {
    "path": "src/toc.js",
    "chars": 3731,
    "preview": "import Gtk from 'gi://Gtk'\nimport GObject from 'gi://GObject'\nimport Pango from 'gi://Pango'\nimport * as utils from './u"
  },
  {
    "path": "src/tts.js",
    "chars": 6126,
    "preview": "import Gtk from 'gi://Gtk'\nimport GObject from 'gi://GObject'\nimport { gettext as _ } from 'gettext'\n\nimport * as utils "
  },
  {
    "path": "src/ui/annotation-popover.ui",
    "chars": 2909,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<interface>\n  <template class=\"FoliateAnnotationPopover\" parent=\"GtkPopover\">\n   "
  },
  {
    "path": "src/ui/annotation-row.ui",
    "chars": 2565,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><interface>\n<template class=\"FoliateAnnotationRow\" parent=\"GtkBox\">\n    <property "
  },
  {
    "path": "src/ui/book-image.ui",
    "chars": 1274,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><interface>\n<template class=\"FoliateBookImage\" parent=\"GtkOverlay\">\n  <child>\n    "
  },
  {
    "path": "src/ui/book-item.ui",
    "chars": 2695,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><interface>\n<menu id=\"menu\">\n  <section>\n    <item>\n      <attribute name=\"label\" "
  },
  {
    "path": "src/ui/book-row.ui",
    "chars": 3199,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><interface>\n<menu id=\"menu\">\n  <section>\n    <item>\n      <attribute name=\"label\" "
  },
  {
    "path": "src/ui/book-viewer.ui",
    "chars": 35357,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><interface>\n<menu id=\"book-menu\">\n  <section>\n    <item>\n      <attribute name=\"la"
  },
  {
    "path": "src/ui/bookmark-row.ui",
    "chars": 1449,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><interface>\n<template class=\"FoliateBookmarkRow\" parent=\"GtkBox\">\n    <property na"
  },
  {
    "path": "src/ui/export-dialog.ui",
    "chars": 1796,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<interface>\n  <object class=\"GtkWindow\" id=\"export-dialog\">\n    <property name=\"m"
  },
  {
    "path": "src/ui/help-overlay.ui",
    "chars": 10148,
    "preview": "<?xml version='1.0' encoding='UTF-8'?>\n<interface>\n  <object class=\"AdwShortcutsDialog\" id=\"help-overlay\">\n    <child>\n "
  },
  {
    "path": "src/ui/image-viewer.ui",
    "chars": 3761,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<interface>\n  <menu id=\"menu\">\n    <section>\n      <item>\n        <attribute name"
  },
  {
    "path": "src/ui/import-dialog.ui",
    "chars": 2315,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<interface>\n  <template class=\"FoliateImportDialog\" parent=\"AdwWindow\">\n    <prop"
  },
  {
    "path": "src/ui/library-view.ui",
    "chars": 1806,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<interface>\n<template class=\"FoliateLibraryView\" parent=\"GtkStack\">\n  <child>\n   "
  },
  {
    "path": "src/ui/library.ui",
    "chars": 9364,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<interface>\n<menu id=\"library-menu\">\n  <section>\n    <item>\n      <attribute name"
  },
  {
    "path": "src/ui/media-overlay-box.ui",
    "chars": 5773,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<interface>\n<template class=\"FoliateMediaOverlayBox\" parent=\"GtkBox\">\n  <property"
  },
  {
    "path": "src/ui/navbar.ui",
    "chars": 20182,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><interface>\n<template class=\"FoliateNavBar\" parent=\"GtkBox\">\n  <style><class name="
  },
  {
    "path": "src/ui/selection-popover.ui",
    "chars": 1854,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<interface>\n<menu id=\"selection-menu\">\n  <section>\n    <attribute name=\"display-h"
  },
  {
    "path": "src/ui/tts-box.ui",
    "chars": 5576,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<interface>\n<template class=\"FoliateTTSBox\" parent=\"GtkBox\">\n  <property name=\"or"
  },
  {
    "path": "src/ui/view-preferences-window.ui",
    "chars": 10833,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><interface>\n<template class=\"FoliateViewPreferencesWindow\" parent=\"AdwPreferencesD"
  },
  {
    "path": "src/utils.js",
    "chars": 12972,
    "preview": "import Gtk from 'gi://Gtk'\nimport Adw from 'gi://Adw'\nimport GObject from 'gi://GObject'\nimport Gio from 'gi://Gio'\nimpo"
  },
  {
    "path": "src/webview.js",
    "chars": 8400,
    "preview": "import GObject from 'gi://GObject'\nimport GLib from 'gi://GLib'\nimport Gio from 'gi://Gio'\nimport WebKit from 'gi://WebK"
  }
]

// ... and 1 more files (download for full content)

About this extraction

This page contains the full source code of the johnfactotum/foliate GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 119 files (1.4 MB), approximately 429.9k tokens, and a symbol index with 333 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!