Compare commits

..

681 Commits

Author SHA1 Message Date
Huang Xin c853957512 release: version 0.9.96 (#2743) 2025-12-19 03:54:17 +01:00
Huang Xin 8a4e22e423 refactor: temporarily disable the proofreading feature for a hotfix release ahead of a major refactor (#2742) 2025-12-19 03:45:42 +01:00
Huang Xin 8a43c58fd4 fix(tts): resolve Edge TTS being blocked in certain regions (#2741)
This should close #2739 and close #1821.
2025-12-19 03:24:51 +01:00
Qianxue Ge 54fdf5f1fd feat(replacement): text replacement feature for EPUB books (#2725)
* add: basic ui replacement menu

* feat(replacement): modified ViewSettings interface and added Replacement type

* add: frontend menu ui to annotation settings
- create replacementoptions file for 4 fix options: fix once, fix in library, fix in book, fix in library
-integrate with annotator.tsx
only frontend changes, but initialzied in backend

* add: delete global option and click gear option to get rid of menu

* docs: add test cases for replacementoptions file

* edits to enable readest to build

* basic changes for rule types

* replacement transformer file added

* additional support code added

* interim updates to replacement.ts file

* adding console log statements to confirm functionality without frontend

* adding more console logs for debugging; i think i got my replacement working, will clean console logs and add actual tests now.

* figured out how to get my transformer to work. replacement doesnt actually work yet. figuring that out rn. committing before i destroy something, lol

* replcement logic working with hard coded tests. code is cleaned up with minimal console logs. actual replacement logic + testing is next :)

* test suite built, and fully passing. made consle log edits too.

* added more replacement rules, but figuring out why they arent being implemented by my code.

* cleaning up test suite to not break when there are 0 rules; test is commited with 1 local rule. not sure if that rule is going to copy over when i merge.

* feat(replacement): Add text field, case sensitivity checkbox, and confirmation dialog to ReplacementOptions

- Add text input field for replacement text with placeholder
- Add 'Case Sensitive' checkbox (default: unchecked/case-insensitive)
- Implement two-step confirmation flow with Back/Confirm buttons
- Show preview of original text, replacement text, scope, and case sensitivity
- Disable scope buttons until replacement text is entered
- Display truncated preview for long selected text (>50 chars)
- Export ReplacementConfig type for use in parent components

* feat(replacement): Add 30-word limit and integrate new ReplacementOptions component

- Add MAX_REPLACEMENT_WORDS constant (30 words)
- Add getWordCount() utility function for word counting
- Show warning toast when word limit exceeded on Text Replacement click
- Replace old fix handlers with single handleReplacementConfirm()
- Integrate with new ReplacementConfig (replacementText, caseSensitive, scope)
- Display success toast with scope and case sensitivity info on confirm

* fix(build): Add ReplacementMenu placeholder component

- Create placeholder component to fix missing import error in reader/page.tsx
- Component returns null for now, to be implemented with global replacement rules

* test(replacement): Add comprehensive tests for ReplacementOptions and word limit

ReplacementOptions.test.tsx:
- Test rendering of text input, checkbox, and scope buttons
- Test case sensitivity checkbox toggle and state
- Test disabled buttons when no replacement text entered
- Test confirmation dialog flow and Back/Confirm buttons
- Test click outside and Cancel button behavior
- Test full replacement flow with all options

wordLimit.test.ts:
- Test word counting with various inputs (spaces, newlines, unicode)
- Test 30-word limit boundary conditions
- Test case-sensitive vs case-insensitive matching logic
- Test edge cases (empty string, long words, punctuation)

* refactor: removed unused initial definition of Replacement

* feat: added replacement rules window in bookmenu

* test: added tests to verify the replacement rules window renders book and global replacement rules, and it opens when bookmenu item is clicked

* feat: added Replacement tab in SettingsDialog, displays global rules

* feat(replacement): connected front-end to functions. todo: fix the automatic reload functionality.

* fix(replacement): simplified re-rendering logic, doesn't fail on epubs anymore.

* test: add integration tests for text replacement functionality

* fix: added single rules section to ReplacementRulesWindow

* fix(replacement): added null checks to some unsafe calls in integration tests

* fix(replacements): added non-null assertion operator for a previously initialized variable

* refactor: created ReplacementPanel and edited style of inputs

* feat: disable the edit feature for selected phrase

* refactor: use toast instead of banner for confirmation msg

* feat: automatically reload the page to apply changes

* feat: disable global rule for book if deleted in book view

* fix(replacement): Improve popup positioning and eliminate ghost animation

- Add viewport boundary detection to keep popup within visible area
- Calculate position only once on mount to prevent jumping when other UI appears
- Use visibility: hidden until position is calculated to eliminate ghost animation
- Add max-height with overflow-y: auto for scrollable content
- Popup now appears directly in correct position without two-step animation

* fix: implement single-instance replacement with persistence

- Add sectionHref to TransformContext for section tracking
- Add singleInstance, sectionHref, occurrenceIndex fields to ReplacementRule
- Pass section name from FoliateViewer to transformer context
- Switch transformer from DOM-based to string-based replacement
- Handle single-instance rules with section matching and occurrence tracking
- Update Annotator to track occurrence index and apply direct DOM changes
- Persist single-instance rules for refresh survival

Single-instance replacements now:
1. Apply immediately via direct DOM modification
2. Store occurrence index and section for precise targeting
3. Persist across page refreshes

* fix: allow multiple single-instance replacements for same word

Single-instance rules now always create new entries instead of merging.
This fixes the issue where replacing multiple occurrences of the same
word would overwrite previous rules.

The transformer applies rules in sequence, so each rule targets
occurrence index 0 of the current (modified) string, allowing
cascading replacements to work correctly after refresh.

* fix: prevent cascading replacements and add wholeWord support

- Add wholeWord field to ReplacementRule for word boundary matching
- Track replaced regions to prevent replacement text from being re-matched
- Fix cascading replacement issue where replacement text was matched again
- Apply replacements from right to left to preserve positions
- Support whole word matching with \b boundaries for both single-instance and regular rules

* Fix whole-word matching for replacement rules

- Auto-enforce whole-word matching for simple word patterns (letters only)
- Add HTML tag boundary checks to prevent matching across tags
- Add double-check validation for whole-word matches
- Prevent matching 'and' inside words like 'England', 'stand', 'understand'
- Add comprehensive logging for debugging replacement issues

* test: added rAF in setup to for ReplacementOptions tests

* fix: only allow replacement for epubs, remove replacement rendering for non-epubs, add test cases

* refactor: refactored replacement logic for case sensitivity and word boundaries

* test: added tests for scope precedence and case sensitivity across scopes

* refactor: removed unnecessary code from testing

* feat: able to display, edit, and delete single-instance rules in book settings

* fix: connected case sensitive checkbox to backend, fixed merge and delete logic

* test: updated test cases to reflect changes on case sensitivity and rules rendering

* test: modified ReplacementOptions test to remove unnecessary case sensitive check from merge

* fix: add logic for grayed out button for non-epubs

* chore: update foliate-js submodule from upstream merge

* fix: resolve all TypeScript/ESLint linting errors

- Fix prefer-const error in ReplacementOptions.tsx
- Fix set-state-in-effect error in ReplacementRulesWindow.tsx (use lazy initializer)
- Replace all @typescript-eslint/no-explicit-any with proper types (ReplacementRule, unknown, etc.)
- Fix unused error variables in replacement.ts (prefix with _)
- Remove unused eslint-disable directives
- Add missing ReplacementRule import in ReplacementPanel.tsx

* fix: add localStorage mock to vitest setup

- Fixes test failures in ReplacementRulesWindow and SettingsDialog tests
- localStorage mock ensures all Storage API methods are available in test environment

* fix: resolve ESLint and TypeScript build errors

- Fix all remaining @typescript-eslint/no-explicit-any errors in test files
- Fix unused error variables in replacement.ts (prefix with _)
- Fix TypeScript error in ReplacementRulesWindow.tsx (move @ts-ignore to correct location)
- All ESLint checks now pass
- Web and Tauri builds compile successfully

* fix: remove lookbehind regex for browser compatibility

- Replace lookbehind assertions (?<!...) with manual boundary checking
- Add isUnicodeWordChar helper function for manual Unicode word boundary detection
- Apply manual boundary checks in applyMultiReplacement and applySingleInstance
- Fixes build_web_app check failures by avoiding lookbehind in compiled output
- Maintains whole-word matching functionality for both ASCII and Unicode patterns

* fix: update tauri-utils version to 2.8.1 to resolve duplicate symbol error

- Update local tauri-utils version from 2.8.0 to 2.8.1 to match crates.io version
- Fixes duplicate symbol __TAURI_BUNDLE_TYPE linker error
- Ensures all dependencies use the same tauri-utils version

* fix: use local tauri path directly to resolve version conflicts

- Change tauri dependency to use local path instead of version requirement
- This ensures all dependencies use the same local tauri version (2.9.3)
- Fixes 'links = Tauri' conflict error in Rust linting
- The patch.crates-io should still work for transitive dependencies

* fix: use version requirement with patch for tauri dependency

- Revert to using version requirement '2' instead of direct path
- Rely on [patch.crates-io] to use local tauri version
- Remove Cargo.lock to force fresh dependency resolution
- This should resolve the 'links = Tauri' conflict by ensuring
  all tauri dependencies (direct and transitive) use the patched version

* fix: remove plugin patches that cause resolution errors

- Remove all tauri-plugin git patches from [patch.crates-io]
- Keep only tauri, tauri-utils, and tauri-build patches
- Plugins from crates.io will use the patched tauri via transitive dependencies
- Fixes error: patch for tauri-plugin-oauth failed to resolve

* fix: update tauri submodule with tauri-utils version fixes

* fix: revert tauri submodule and update tauri-utils to 2.8.0

- Revert submodule changes that can't be pushed to remote
- Update local tauri-utils version to 2.8.0 to match other packages
- This avoids the need to modify the submodule

* fix: add tauri-plugin to workspace and patch to resolve duplicate symbol error

- Add packages/tauri/crates/tauri-plugin to workspace members
- Add tauri-plugin patch to [patch.crates-io]
- This ensures all tauri dependencies use local versions
- Fixes duplicate symbol __TAURI_BUNDLE_TYPE linking error

* chore: restore Cargo.lock from upstream

- Restore the original Cargo.lock from readest/readest main branch
- This ensures reproducible builds and matches upstream
- The lock file will be updated by cargo when dependencies change

* fix: resolve TypeScript errors in test files

- Fix ReplacementOptions.test.tsx: add optional chaining for possibly undefined values
- Fix ReplacementRulesWindow.test.tsx: use proper type assertions for store setState calls
- Use (store.setState as unknown as (state: unknown) => void) pattern for partial state updates

* fix: prevent race condition when deleting replacement rules rapidly

- Add isReloading state to track ongoing delete/edit operations
- Prevent multiple rapid deletions that cause runtime errors during page reload
- Show warning toast when user tries to delete while reload is in progress
- Add finally blocks to ensure isReloading is always reset
- This prevents the 'book doesn't finish rerendering' error

* fix: allow phrases and lines with quotes for single-instance replacements

- Updated isWholeWord() to allow phrases (text with spaces or punctuation)
- Phrases are always allowed for single-instance replacements
- Only single words are checked for partial word matches
- Fixes issue where lines with quotes couldn't be replaced
- Added detailed logging for debugging phrase detection

* fix: allow selections with boundary punctuation and fix pattern matching for punctuation

- Updated isWholeWord() to explicitly allow selections that start or end with punctuation (e.g., 'tis, off;, look,)
- Fixed normalizePattern() to handle patterns with leading/trailing punctuation correctly
- Word boundaries are now only added around the word part, not the punctuation
- Fixes issue where replacements like 'scholar;' were not matching correctly

* fix: escape HTML entities in replacement text to preserve angle brackets

- Added escapeHtmlEntities() function to escape HTML special characters
- Apply HTML escaping to replacement text in both multi and single-instance replacements
- Fixes issue where replacement text like '<<AND>>' was being interpreted as HTML tags
- Angle brackets and other HTML entities are now properly escaped and displayed correctly

* fix: revert Tauri backend changes and resolve package.json conflict

- Revert Cargo.toml and src-tauri/Cargo.toml to match upstream/main
- Resolve @tauri-apps/cli version conflict (2.9.5 -> 2.9.6)
- These changes are not related to the replacement feature implementation

* fix: update pnpm-lock.yaml to match @tauri-apps/cli 2.9.6

* removed useless tests and backend tests from ReplacementOptions integration testing suite

* chore: revert foliate-js submodule to match readest/readest main

* fix: refactored wordLimit logic into a separate util file

* fix: removed additional pr description

* refactor: rewrite replacement transformer to use DOM-based approach
replace string manipulation with DOMParser and TreeWalker
follow pattern from simpleecc transformer

* style: format code with prettier

* fix: remove unused string-manipulation functions

* fix: refactored display dialog logic to match other dialogs

* fix: enabled global rule deletion in book menu

* fix: removed ReplacementPanel from library settings

* fix: deleted SettingsDialog.replacement.test.tsx since we no longer need to display replacements in library settings

* fix: removed text replacement tab from settings dialog

* fix: applied prettier code formatter to replacement rules window

* chore: fix formatting and remove unused file listed by chrox

* chore: format all changed files from pr 2693 and revert pnpm-lock

* rebased Cargo.lock, package.json, pnpm-lock.yaml to upstream main
edits to enable readest to build

* basic changes for rule types

* replacement transformer file added

* additional support code added

* interim updates to replacement.ts file

* adding console log statements to confirm functionality without frontend

* adding more console logs for debugging; i think i got my replacement working, will clean console logs and add actual tests now.

* figured out how to get my transformer to work. replacement doesnt actually work yet. figuring that out rn. committing before i destroy something, lol

* replcement logic working with hard coded tests. code is cleaned up with minimal console logs. actual replacement logic + testing is next :)

* test suite built, and fully passing. made consle log edits too.

* added more replacement rules, but figuring out why they arent being implemented by my code.

* cleaning up test suite to not break when there are 0 rules; test is commited with 1 local rule. not sure if that rule is going to copy over when i merge.

* add: basic ui replacement menu

* add: frontend menu ui to annotation settings
- create replacementoptions file for 4 fix options: fix once, fix in library, fix in book, fix in library
-integrate with annotator.tsx
only frontend changes, but initialzied in backend

* add: delete global option and click gear option to get rid of menu

* docs: add test cases for replacementoptions file

* feat(replacement): modified ViewSettings interface and added Replacement type

feat(replacement): modified viewsettings interface and added ReplacementRulesConfig

* feat(replacement): Add text field, case sensitivity checkbox, and confirmation dialog to ReplacementOptions

- Add text input field for replacement text with placeholder
- Add 'Case Sensitive' checkbox (default: unchecked/case-insensitive)
- Implement two-step confirmation flow with Back/Confirm buttons
- Show preview of original text, replacement text, scope, and case sensitivity
- Disable scope buttons until replacement text is entered
- Display truncated preview for long selected text (>50 chars)
- Export ReplacementConfig type for use in parent components

* feat(replacement): Add 30-word limit and integrate new ReplacementOptions component

- Add MAX_REPLACEMENT_WORDS constant (30 words)
- Add getWordCount() utility function for word counting
- Show warning toast when word limit exceeded on Text Replacement click
- Replace old fix handlers with single handleReplacementConfirm()
- Integrate with new ReplacementConfig (replacementText, caseSensitive, scope)
- Display success toast with scope and case sensitivity info on confirm

* fix(build): Add ReplacementMenu placeholder component

- Create placeholder component to fix missing import error in reader/page.tsx
- Component returns null for now, to be implemented with global replacement rules

* test(replacement): Add comprehensive tests for ReplacementOptions and word limit

ReplacementOptions.test.tsx:
- Test rendering of text input, checkbox, and scope buttons
- Test case sensitivity checkbox toggle and state
- Test disabled buttons when no replacement text entered
- Test confirmation dialog flow and Back/Confirm buttons
- Test click outside and Cancel button behavior
- Test full replacement flow with all options

wordLimit.test.ts:
- Test word counting with various inputs (spaces, newlines, unicode)
- Test 30-word limit boundary conditions
- Test case-sensitive vs case-insensitive matching logic
- Test edge cases (empty string, long words, punctuation)

* refactor: removed unused initial definition of Replacement

* feat: added replacement rules window in bookmenu

* test: added tests to verify the replacement rules window renders book and global replacement rules, and it opens when bookmenu item is clicked

* feat: added Replacement tab in SettingsDialog, displays global rules

* fix: added single rules section to ReplacementRulesWindow

* refactor: created ReplacementPanel and edited style of inputs

* feat(replacement): connected front-end to functions. todo: fix the automatic reload functionality.

* fix(replacement): simplified re-rendering logic, doesn't fail on epubs anymore.

* test: add integration tests for text replacement functionality

* fix(replacement): added null checks to some unsafe calls in integration tests

* fix(replacements): added non-null assertion operator for a previously initialized variable

* feat: disable the edit feature for selected phrase

* refactor: use toast instead of banner for confirmation msg

* feat: automatically reload the page to apply changes

* feat: disable global rule for book if deleted in book view

* fix(replacement): Improve popup positioning and eliminate ghost animation

- Add viewport boundary detection to keep popup within visible area
- Calculate position only once on mount to prevent jumping when other UI appears
- Use visibility: hidden until position is calculated to eliminate ghost animation
- Add max-height with overflow-y: auto for scrollable content
- Popup now appears directly in correct position without two-step animation

* fix: only allow replacement for epubs, remove replacement rendering for non-epubs, add test cases

* fix: add logic for grayed out button for non-epubs

* fix: resolve all TypeScript/ESLint linting errors

- Fix prefer-const error in ReplacementOptions.tsx
- Fix set-state-in-effect error in ReplacementRulesWindow.tsx (use lazy initializer)
- Replace all @typescript-eslint/no-explicit-any with proper types (ReplacementRule, unknown, etc.)
- Fix unused error variables in replacement.ts (prefix with _)
- Remove unused eslint-disable directives
- Add missing ReplacementRule import in ReplacementPanel.tsx

* fix: add localStorage mock to vitest setup

- Fixes test failures in ReplacementRulesWindow and SettingsDialog tests
- localStorage mock ensures all Storage API methods are available in test environment

* fix: implement single-instance replacement with persistence

- Add sectionHref to TransformContext for section tracking
- Add singleInstance, sectionHref, occurrenceIndex fields to ReplacementRule
- Pass section name from FoliateViewer to transformer context
- Switch transformer from DOM-based to string-based replacement
- Handle single-instance rules with section matching and occurrence tracking
- Update Annotator to track occurrence index and apply direct DOM changes
- Persist single-instance rules for refresh survival

Single-instance replacements now:
1. Apply immediately via direct DOM modification
2. Store occurrence index and section for precise targeting
3. Persist across page refreshes

* fix: allow multiple single-instance replacements for same word

Single-instance rules now always create new entries instead of merging.
This fixes the issue where replacing multiple occurrences of the same
word would overwrite previous rules.

The transformer applies rules in sequence, so each rule targets
occurrence index 0 of the current (modified) string, allowing
cascading replacements to work correctly after refresh.

* fix: prevent cascading replacements and add wholeWord support

- Add wholeWord field to ReplacementRule for word boundary matching
- Track replaced regions to prevent replacement text from being re-matched
- Fix cascading replacement issue where replacement text was matched again
- Apply replacements from right to left to preserve positions
- Support whole word matching with \b boundaries for both single-instance and regular rules

* Fix whole-word matching for replacement rules

- Auto-enforce whole-word matching for simple word patterns (letters only)
- Add HTML tag boundary checks to prevent matching across tags
- Add double-check validation for whole-word matches
- Prevent matching 'and' inside words like 'England', 'stand', 'understand'
- Add comprehensive logging for debugging replacement issues

* refactor: refactored replacement logic for case sensitivity and word boundaries

* test: added tests for scope precedence and case sensitivity across scopes

* refactor: removed unnecessary code from testing

* feat: able to display, edit, and delete single-instance rules in book settings

* fix: connected case sensitive checkbox to backend, fixed merge and delete logic

* test: updated test cases to reflect changes on case sensitivity and rules rendering

* test: modified ReplacementOptions test to remove unnecessary case sensitive check from merge

* fix: resolve ESLint and TypeScript build errors

- Fix all remaining @typescript-eslint/no-explicit-any errors in test files
- Fix unused error variables in replacement.ts (prefix with _)
- Fix TypeScript error in ReplacementRulesWindow.tsx (move @ts-ignore to correct location)
- All ESLint checks now pass
- Web and Tauri builds compile successfully

* fix: update tauri-utils version to 2.8.1 to resolve duplicate symbol error

- Update local tauri-utils version from 2.8.0 to 2.8.1 to match crates.io version
- Fixes duplicate symbol __TAURI_BUNDLE_TYPE linker error
- Ensures all dependencies use the same tauri-utils version

* fix: use local tauri path directly to resolve version conflicts

- Change tauri dependency to use local path instead of version requirement
- This ensures all dependencies use the same local tauri version (2.9.3)
- Fixes 'links = Tauri' conflict error in Rust linting
- The patch.crates-io should still work for transitive dependencies

* fix: use version requirement with patch for tauri dependency

- Revert to using version requirement '2' instead of direct path
- Rely on [patch.crates-io] to use local tauri version
- Remove Cargo.lock to force fresh dependency resolution
- This should resolve the 'links = Tauri' conflict by ensuring
  all tauri dependencies (direct and transitive) use the patched version

* fix: remove plugin patches that cause resolution errors

- Remove all tauri-plugin git patches from [patch.crates-io]
- Keep only tauri, tauri-utils, and tauri-build patches
- Plugins from crates.io will use the patched tauri via transitive dependencies
- Fixes error: patch for tauri-plugin-oauth failed to resolve

* fix: add tauri-plugin to workspace and patch to resolve duplicate symbol error

- Add packages/tauri/crates/tauri-plugin to workspace members
- Add tauri-plugin patch to [patch.crates-io]
- This ensures all tauri dependencies use local versions
- Fixes duplicate symbol __TAURI_BUNDLE_TYPE linking error

* chore: restore Cargo.lock from upstream

- Restore the original Cargo.lock from readest/readest main branch
- This ensures reproducible builds and matches upstream
- The lock file will be updated by cargo when dependencies change

* fix: resolve TypeScript errors in test files

- Fix ReplacementOptions.test.tsx: add optional chaining for possibly undefined values
- Fix ReplacementRulesWindow.test.tsx: use proper type assertions for store setState calls
- Use (store.setState as unknown as (state: unknown) => void) pattern for partial state updates

* fix: allow selections with boundary punctuation and fix pattern matching for punctuation

- Updated isWholeWord() to explicitly allow selections that start or end with punctuation (e.g., 'tis, off;, look,)
- Fixed normalizePattern() to handle patterns with leading/trailing punctuation correctly
- Word boundaries are now only added around the word part, not the punctuation
- Fixes issue where replacements like 'scholar;' were not matching correctly

* fix: prevent race condition when deleting replacement rules rapidly

- Add isReloading state to track ongoing delete/edit operations
- Prevent multiple rapid deletions that cause runtime errors during page reload
- Show warning toast when user tries to delete while reload is in progress
- Add finally blocks to ensure isReloading is always reset
- This prevents the 'book doesn't finish rerendering' error

* fix: escape HTML entities in replacement text to preserve angle brackets

- Added escapeHtmlEntities() function to escape HTML special characters
- Apply HTML escaping to replacement text in both multi and single-instance replacements
- Fixes issue where replacement text like '<<AND>>' was being interpreted as HTML tags
- Angle brackets and other HTML entities are now properly escaped and displayed correctly

* fix: revert Tauri backend changes and resolve package.json conflict

- Revert Cargo.toml and src-tauri/Cargo.toml to match upstream/main
- Resolve @tauri-apps/cli version conflict (2.9.5 -> 2.9.6)
- These changes are not related to the replacement feature implementation

* fix: update pnpm-lock.yaml to match @tauri-apps/cli 2.9.6

* removed useless tests and backend tests from ReplacementOptions integration testing suite

* chore: revert foliate-js submodule to match readest/readest main

* fix: refactored display dialog logic to match other dialogs

* fix: enabled global rule deletion in book menu

* fix: removed ReplacementPanel from library settings

* fix: deleted SettingsDialog.replacement.test.tsx since we no longer need to display replacements in library settings

* fix: removed text replacement tab from settings dialog

* fix: applied prettier code formatter to replacement rules window

* fix: refactored wordLimit logic into a separate util file

* fix: removed additional pr description

* style: format code with prettier

* chore: fix formatting and remove unused file listed by chrox

* chore: format all changed files from pr 2693 and revert pnpm-lock

* fix: fixed inconsistencies from rebase

* refactor: removed unused code

* refactor: removed unintentional formatting changes

* fix: set upstream for packages/tauri-plugins to the readest branch

* fix: used original Cargo.lock file

* fix: got Cargo.lock from upstream

* fix: fetched SettingsDialog from upstream main

* fix: pointed tauri-plugins to the same commit as upstream

* chore: remove unnecssary comments from replacement.ts

* chore: fixed more unnecessary comments

---------

Co-authored-by: fatbiscuit247 <fatbiscuit247@github.com>
Co-authored-by: joon <your.email@example.com>
Co-authored-by: jarchenn <jerryc2@andrew.cmu.edu>
Co-authored-by: joon0429 <68578999+joon0429@users.noreply.github.com>
Co-authored-by: Jerry Chen <50bmg@Jerrys-MacBook-Pro-9.local>
Co-authored-by: Alicia Chen <aliciach@andrew.cmu.edu>
Co-authored-by: Jerry Chen <50bmg@MacBook-Pro-7.local>
Co-authored-by: Jerry Chen <50bmg@macbook-pro-158.wifi.local.cmu.edu>
Co-authored-by: fatbiscuit247 <136537548+fatbiscuit247@users.noreply.github.com>
2025-12-17 10:06:59 +08:00
Huang Xin fe50b513b3 fix(layout): line clamp opds url, closes #2726 (#2731) 2025-12-16 17:03:15 +01:00
Huang Xin 17c7fa8f41 fix: make sidebar and notebook pin states persist after refresh (#2730) 2025-12-16 16:16:21 +01:00
Huang Xin 2533560d11 fix(layout): fix bleed layout for images (#2729) 2025-12-16 15:46:13 +01:00
Huang Xin 5850a16afd fix: add stats API and fix fd leak, closes #2323 (#2723) 2025-12-16 06:51:48 +01:00
Huang Xin 7063d62b13 fix(settings): screen brightness setting only applies to the reader page, closes #2717 (#2720) 2025-12-15 06:04:29 +01:00
dependabot[bot] 0bd6a217ae chore(deps): bump actions/cache from 4 to 5 in the github-actions group (#2719)
Bumps the github-actions group with 1 update: [actions/cache](https://github.com/actions/cache).


Updates `actions/cache` from 4 to 5
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-15 05:14:57 +01:00
Huang Xin b7df294d78 feat(bookshelf): add group books button in context menu, closes #2698 (#2718) 2025-12-15 05:02:52 +01:00
Huang Xin 5aa78f2554 fix(opds): expose X-Content-Length header for CORS requests (#2715) 2025-12-14 19:06:09 +01:00
Huang Xin e740571c33 feat(opds): instant search bar for opds catalog, closes #2707 (#2714) 2025-12-14 18:25:47 +01:00
Huang Xin e6d9913f4e fix(layout): make sure annotation popups can be accessible in some edge cases, closes #2704 (#2713) 2025-12-14 05:52:55 +01:00
Huang Xin 1869a863a3 fix(layout): fixed max inline width not applied for EPUBs, closes #2706 (#2711) 2025-12-13 18:52:26 +01:00
Huang Xin 524de92f5e feat(macOS): add open file global menu for macOS, closes #2692 (#2708) 2025-12-13 17:36:25 +01:00
Huang Xin c1530cc5c4 feat(iOS): support open file with Readest in Files App, closes #2334 (#2705) 2025-12-13 13:28:03 +01:00
Huang Xin 730fadb834 fix(web): fixed router glitches for library page after returned from reader (#2703) 2025-12-13 08:08:42 +01:00
Huang Xin 383e5c61b1 chore: bump next.js to version 16.0.10 (#2702) 2025-12-13 07:54:15 +01:00
Huang Xin 6d42086fa7 fix(layout): fixed the layout of the selector of the translator providers (#2701) 2025-12-13 05:14:12 +01:00
mikepmiller 5a20fae204 feat(ui): progress info with cycleable display modes (#2682)
* Hideable Progress View
* feat: cycle between progress info modes

---------

Co-authored-by: Huang Xin <chrox.huang@gmail.com>
2025-12-12 08:19:07 +01:00
Huang Xin 34fd64c5c4 fix(sync): handle special characters in filenames when downloading (#2694) 2025-12-11 19:20:27 +01:00
Huang Xin 0874fb0764 chore: bump tauri to the latest dev branch (#2690) 2025-12-11 13:46:41 +01:00
Huang Xin e03ed5b604 fix(layout): fix responsive layout for footnote popup (#2688) 2025-12-11 10:15:56 +01:00
Huang Xin 41edc89ac7 fix(pwa): don't cache api requests and cache client-side navigation routes (#2687) 2025-12-11 07:30:19 +01:00
Huang Xin f0a470398d chore(pwa): more aggressive offline cache for the web version (#2686) 2025-12-11 05:24:45 +01:00
Huang Xin 51008d81fb fix(opds): select proper opds search link (#2683) 2025-12-10 19:56:27 +01:00
Huang Xin 9828904674 feat(opds): added books catalog from standardebooks.org (#2681) 2025-12-10 18:20:56 +01:00
Huang Xin 2670d835b3 fix(comic): fixed layout for comic books, closes #2672 (#2680) 2025-12-10 18:08:11 +01:00
Huang Xin 8b7bafc4b6 chore(koplugin): add version info in the meta file (#2679) 2025-12-10 16:52:28 +01:00
Huang Xin ca759e0246 fix(tts): avoid false default en language code for TTS (#2678) 2025-12-10 16:24:01 +01:00
Huang Xin 5141be1c3f fix(iap): don't initialize billing on Android without google play service, closes #2630 (#2677) 2025-12-10 15:34:23 +01:00
Huang Xin 669d3950e2 chore: repackaging readest koplugin for updater, closes #2669 (#2676) 2025-12-10 13:37:32 +01:00
Huang Xin b95895cecf compat(opds): fallback to Basic auth if no WWW-Authenticate challenge in the response headers, closes #2656 (#2673) 2025-12-10 09:57:44 +01:00
Huang Xin 80e11bb0ce refactor(layout): refactor page margins for pixel precision, closes #2652 (#2663) 2025-12-09 16:19:14 +01:00
Huang Xin de3a539621 fix(footnote): add custom attributes for footnote in sanitizer, closes #2651 (#2657) 2025-12-09 05:27:52 +01:00
jacobi petrucciani b425bfdc89 chore: add rust and node deps to the nix devshell (#2655) 2025-12-09 04:44:53 +01:00
Huang Xin 1d1fbdffdb fix(macOS): delay writing to clipboard to ensure it won't be overridden by system clipboard actions, closes #2647 (#2649) 2025-12-08 14:05:27 +01:00
Huang Xin 50cd7f80c6 feat: refresh account info after managing cloud storage (#2648) 2025-12-08 13:13:20 +01:00
Huang Xin 6eb7d91122 release: version 0.9.95 (#2646) 2025-12-08 08:59:21 +01:00
Huang Xin 1fb468b3a6 fix(epub): support SVG cover for ebooks from standardebooks.org (#2645) 2025-12-08 08:52:17 +01:00
Huang Xin 3c7d95cf10 fix(footnote): responsive popup size so that on small screen it won't overflow (#2644) 2025-12-08 07:40:30 +01:00
Huang Xin ba3f060cc4 feat: add support for importing from a directory recursively, closes #179 (#2642) 2025-12-08 07:16:57 +01:00
Huang Xin 11bc7497e8 feat: add support for renaming bookshelf groups (#2639) 2025-12-07 10:04:23 +01:00
Huang Xin fb5d149413 fix: enable shared-intent event listener only on Android for now (#2638) 2025-12-07 06:45:56 +01:00
Huang Xin 42b47d73b7 feat: support cloud storage management (#2636) 2025-12-06 20:25:40 +01:00
Huang Xin 00f36af03a feat(opds): add support to search in OPDS, closes #2598 (#2634) 2025-12-06 12:13:45 +01:00
Huang Xin b78466ca93 fix(opds): relax img-src CSP to support images served from arbitrary HTTP/HTTPS hosts and ports, closes #2631 (#2633) 2025-12-06 04:22:15 +01:00
Huang Xin 4e6f146b8f feat(android): support opening shared files from other apps, closes #2484 (#2628) 2025-12-05 18:13:06 +01:00
Huang Xin cbdd4940d0 fix(android): intercept back button press for Android 15+, closes #2454 (#2626) 2025-12-05 16:27:09 +01:00
Huang Xin d022cb984a chore: bump various dependencies (#2624) 2025-12-05 07:48:03 +01:00
Huang Xin 8de6fa267e fix(cache): invalidate config and doc cache, closes #2595 and closes #2572 (#2623) 2025-12-05 07:03:57 +01:00
Huang Xin b08b7de8e9 fix(tts): fixed highlighting of current sentence for native tts on Android, closes #2620 (#2621) 2025-12-05 04:05:18 +01:00
Huang Xin a232a39f0e fix(pdf): Fixed zoomed layout and hand tool event handling, closes #2596 (#2617) 2025-12-04 19:22:01 +01:00
Huang Xin fad7966fc4 fix(layout): auto two-column layout for unfolded screen, closes #2588 (#2615) 2025-12-04 06:56:23 +01:00
Huang Xin a1487fd60c fix: get rid of the context menu for touch screen or stylus device when selecting text, closes #2579 (#2614) 2025-12-04 06:04:06 +01:00
Huang Xin 9606e315d4 fix(layout): hide overflow of children elements in duokan bleed, closes #2597 (#2613) 2025-12-04 03:40:43 +01:00
Huang Xin 978673268b chore: bump next.js to version 16.0.7 (#2612) 2025-12-04 02:34:10 +01:00
Huang Xin 70158a7f15 refactor(opds): use catalog id instead of credentials in url params, closes #2599 (#2606) 2025-12-03 08:50:55 +01:00
Huang Xin 18d65a2c5b fix(annotator): don't copy selection to notebook with keyboard shortcut by default, closes #2603 (#2605) 2025-12-03 07:08:00 +01:00
Huang Xin 1b0c2afad7 fix(layout): fixed scrollable layout in the about readest window, closes #2593 (#2604) 2025-12-03 06:23:02 +01:00
Huang Xin cef444d374 fix: disable saving last book cover with playstore variant, closes #2600 (#2602) 2025-12-03 05:41:44 +01:00
Huang Xin 75f6efe27a compat(opds): add User-Agent header to fix downloads from Calibre Web OPDS (#2592) 2025-12-02 10:27:33 +01:00
Huang Xin 852f9f40ec chore: fix cross compiling of thumbnail extension (#2587) 2025-12-02 02:27:03 +08:00
Huang Xin b9dadc0f4f chore: update flathub metainfo (#2586) 2025-12-01 18:07:29 +01:00
Huang Xin d120cf6573 release: version 0.9.94 (#2585) 2025-12-01 17:46:33 +01:00
Huang Xin d2b3c165c7 fix(opds): use custom header for content length when streaming content (#2584) 2025-12-01 17:28:36 +01:00
Huang Xin 742f06ce05 fix(toc): scroll to current toc item and anchor in TTS mode, closes #2574 (#2583) 2025-12-01 15:50:46 +01:00
Huang Xin e28dabce65 fix(layout): refactor full height for edge to edge env and in browser env (#2582) 2025-12-01 13:48:14 +01:00
Huang Xin 33ef781e21 feat: also convert quotation marks between Chinese variants (#2578) 2025-12-01 09:27:22 +01:00
Huang Xin 02e885fbb7 fix(opds): workaround parsing of encoded params in proxied url in cloudflare (#2575) 2025-12-01 05:49:04 +01:00
Huang Xin 2ca3561093 feat(opds): support downloading ebooks from OPDS catalogs (#2571) 2025-11-30 21:22:54 +01:00
Huang Xin 97f021da87 fix(extensions): add missing tauri conf for windows build (#2563) 2025-11-28 05:56:45 +01:00
Huang Xin bd2b45e1c1 refactor(extensions): move windows-thumbnail to extensions (#2562) 2025-11-28 05:44:11 +01:00
AlI 2b6f7b71b0 feat(windows): Add explorer thumbnail registration and installer hook… (#2557)
* feat(windows): Add Windows Explorer thumbnail support for ebooks (closes #2534)

- Implement IThumbnailProvider COM handler for Windows Shell integration
- Support EPUB, MOBI, AZW, AZW3, KF8, FB2, CBZ, CBR formats
- Add cover extraction with Readest icon overlay
- Register thumbnail handler via NSIS installer hooks
- Only show thumbnails when Readest is the default app for the file type

* chore: clean up build script for thumbnail extension

---------

Co-authored-by: chrox <chrox.huang@gmail.com>
2025-11-27 21:31:52 +01:00
Huang Xin 0bad380a50 fix(layout): fixed navigation parameters not synced with settings (#2559) 2025-11-27 08:06:43 +01:00
Huang Xin ecc20e8521 feat: apply progress style to footerbar progress (#2556) 2025-11-26 16:58:26 +01:00
Huang Xin d5c813fac1 fix(layout): avoid cascading refresh when cleaning up query parameters (#2555) 2025-11-26 15:52:29 +01:00
Huang Xin d9b3757b1c fix(layout): fix layout for import book item in grid fit mode (#2554) 2025-11-26 14:49:07 +01:00
Huang Xin fd7f90236d compat(ios): avoid lookbehind assertions for iOS older than 16.4 (#2553) 2025-11-26 11:31:31 +01:00
Huang Xin df9d21393d fix(layout): layout of the grid columns setting (#2552) 2025-11-26 10:19:29 +01:00
Huang Xin 1f73f15ad8 feat: add view option to set cover image size in grid mode, closes #2545 (#2551) 2025-11-26 07:49:51 +01:00
Huang Xin ba2aa4bee6 fix(layout): skip applying safe area insets when the iframe content is reloaded (#2550) 2025-11-26 04:10:52 +01:00
Huang Xin f709a657fa compat(css): sanitize insane absolute position, closes #2547 (#2549) 2025-11-25 17:19:29 +01:00
Huang Xin 514780a572 feat(shortcut): add shortcuts for annotation tools, closes #2270 (#2548) 2025-11-25 16:10:18 +01:00
Huang Xin 0c51a625f3 i18n: add translations for Bahasa Melayu(ms) (#2543) 2025-11-25 10:35:29 +01:00
Huang Xin 6f8b2d1dc4 fix(android): support back action for grouping modal (#2542) 2025-11-25 10:10:56 +01:00
Huang Xin 0087ce2f19 feat: add option to clear custom fonts in Font Panel (#2541) 2025-11-25 09:19:24 +01:00
Huang Xin b98c2796c8 feat: add option to apply page margins in scrolled mode, closes #2014 (#2540) 2025-11-25 08:55:33 +01:00
Huang Xin 37d56b3205 fix(android): support back key in menu, dialog and alert widgets, closes #2454 (#2539) 2025-11-25 08:01:17 +01:00
Huang Xin 5a54c0fb60 compat(css): override blockquote bg color in dark mode, closes #2281 (#2538) 2025-11-25 04:22:02 +01:00
StepanSad 99b259836b Update Ukrainian translations for consistency (#2535) 2025-11-25 09:28:12 +08:00
Huang Xin a54daaaa90 feat(shortcut): add ctrl + mouse wheel to zoom in/out, closes #2011 (#2533) 2025-11-24 17:19:28 +01:00
Huang Xin fa66e6fca6 feat(pdf): add support for hand tool panning for PDFs, closes #2518 (#2532) 2025-11-24 14:37:52 +01:00
Huang Xin b7864dded2 fix(eink): adjust sidebar and notebook background color for eink, closes #2497 (#2529) 2025-11-24 09:56:26 +01:00
Huang Xin 72d9698f38 fix: prevent file corruption using a robust backup strategy, closes #2512 (#2528) 2025-11-24 08:58:42 +01:00
Huang Xin a7937cd657 fix(translator): resolve occasional translation failures when navigating to new chapters (#2527)
Closes #2451.
2025-11-24 07:47:03 +01:00
Huang Xin 998b14c5b0 fix(layout): avoid clipping text because of negative indent, closes #2498 (#2526) 2025-11-24 06:11:29 +01:00
dependabot[bot] bff9c2a770 chore(deps): bump actions/checkout in the github-actions group (#2525)
Bumps the github-actions group with 1 update: [actions/checkout](https://github.com/actions/checkout).


Updates `actions/checkout` from 5 to 6
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-24 05:35:17 +01:00
Huang Xin b5acdffc87 fix(annotator): fixed layout shift when selecting text in paginated mode on Android (#2524) 2025-11-24 04:06:25 +01:00
Huang Xin 127609160c chore: add more test cases for simplecc (#2522) 2025-11-23 17:41:54 +01:00
Huang Xin 8f22a5c570 feat: select directory to save last book cover image (#2521) 2025-11-23 17:00:49 +01:00
Huang Xin c792c18e01 feat: support text conversion between simplifed and traditional Chinese, closes #2508 (#2520) 2025-11-23 09:56:12 +01:00
Huang Xin cd614e3845 feat(cjk): add an option to replace quotation marks in vertical layout for CJK languages (#2511) 2025-11-22 14:09:20 +01:00
Huang Xin 40673f9cb8 docs: update README and app metadata (#2509) 2025-11-22 07:08:07 +01:00
Huang Xin 911aa4c73d chore(flathub): verify the readest app on flathub (#2507) 2025-11-22 04:07:10 +01:00
Huang Xin 74b4cc2ceb chore(flathub): update oars content attribute (#2504) 2025-11-21 16:44:19 +01:00
Huang Xin c0c463977d fix: proper code indentation (#2503) 2025-11-21 16:24:45 +01:00
Huang Xin 273bcafe01 fix: resolve endless loading indicator (#2502) 2025-11-21 14:58:55 +01:00
Huang Xin 9028059919 chore: fix cf deploy scripts (#2501) 2025-11-21 13:03:56 +01:00
Huang Xin c86af457e7 chore: bump Next.js to 16.0.3 (#2496) 2025-11-21 12:49:36 +01:00
Huang Xin b8e979be55 fix(layout): fixed some rendering problems on Next 16 (#2495) 2025-11-21 08:23:42 +01:00
Huang Xin 8849c19e8e fix(flathub): fix releases notes (#2494) 2025-11-21 06:20:04 +01:00
Huang Xin f1b4d02323 chore: sync app metadata release notes (#2492) 2025-11-21 04:44:50 +01:00
Huang Xin 4aa8847037 chore: bump tauri to version 2.9.3 (#2488) 2025-11-20 14:18:27 +01:00
Huang Xin d2389400a9 fix(annotator): don't scroll page when annotator is shown in TTS mode, closes #2479 (#2487) 2025-11-20 13:24:58 +01:00
Huang Xin 721e70d027 release: version 0.9.93 (#2486) 2025-11-20 06:33:58 +01:00
Huang Xin 3c1a7eac86 fix(library): fixed occasional freeze when navigating back to the library (#2485)
Closes #2482.
2025-11-20 06:15:49 +01:00
Huang Xin f8e21dbd4c fix(sync): fixed sync issues affecting new accounts, closes #2481 (#2483) 2025-11-20 04:28:41 +01:00
Huang Xin d16a35d26f fix(layout): constrain image height within table cells in paginated mode (#2480)
Closes #2472.
2025-11-19 18:06:39 +01:00
Huang Xin f881caf794 chore(pwa): config workbox to skip precaching next.js internal files (#2478) 2025-11-19 14:38:04 +01:00
54wedge eb6fa276de fix(txt): register style.css to content.opf (#2476)
* fix(txt): register style.css to content.opf

* refactor: code styling

---------

Co-authored-by: Huang Xin <chrox.huang@gmail.com>
2025-11-19 13:59:04 +01:00
Huang Xin e987c8b37a chore(pwa): get rid of public headers requests (#2477) 2025-11-19 13:31:21 +01:00
Huang Xin 26d76e27ac fix(txt): more tolerant encoding detection for utf-8 (#2475) 2025-11-19 07:47:10 +01:00
Huang Xin 975549fca0 fix(font): avoid overriding monospace fonts for code blocks, closes #1805 (#2474) 2025-11-19 06:57:45 +01:00
Huang Xin 9a6bed52dd fix(sync): propagate book delete status to other devices (#2473) 2025-11-19 05:47:59 +01:00
Huang Xin efd9ad12a9 release: version 0.9.92 (#2469) 2025-11-18 15:15:27 +01:00
Huang Xin 93a71a0fd0 fix(bookshelf): ensure 'select all' only targets books in the active group (#2468) 2025-11-18 14:34:32 +01:00
Huang Xin d373d7ac28 fix(txt): handle chapter title patterns (#2467) 2025-11-18 14:09:03 +01:00
Huang Xin e0e991b599 fix(kosync): proxy kosync request only for the web app, closes #2440 (#2466) 2025-11-18 13:44:30 +01:00
Huang Xin 6d5b16ea8b fix(iap): open external app for payment (#2465) 2025-11-18 12:07:43 +01:00
Huang Xin bfac67d3f0 fix: ger rid of the AbortSignal polyfill (#2463) 2025-11-18 09:10:53 +01:00
Huang Xin 0fd316d775 fix(sync): retry sync books for previous failed sync, closes #2441 (#2462) 2025-11-17 18:52:48 +01:00
Huang Xin c42fcf9ac4 fix: save reading progress when closing app directly in reader page, closes #2346 (#2461) 2025-11-17 16:35:56 +01:00
Huang Xin 04ade02a06 fix(layout): enlarge clickable area for the close button in the reader page (#2459) 2025-11-17 15:22:05 +01:00
Huang Xin 8ee53d3367 fix(mobi): properly handle empty fragments for MOBI (#2456) 2025-11-17 05:09:09 +01:00
Huang Xin 42111945b8 fix(layout): scale table to fit within column constraints, closes #2445 (#2455) 2025-11-17 04:52:23 +01:00
Huang Xin 6fde157047 feat(bookshelf): support nested groups in the bookshelf, closes #568 (#2449) 2025-11-16 13:59:37 +01:00
Huang Xin 65ec5c9842 fix(library): avoid invalid regular expression in library search (#2439) 2025-11-16 14:07:29 +08:00
Huang Xin a6444b5b33 feat: supported updating email address for Readest account (#2437) 2025-11-12 19:03:02 +01:00
Huang Xin c7238cb04c fix(css): overriding book color for more semantic tags, closes #2433 (#2436) 2025-11-11 19:44:13 +01:00
Huang Xin 366e5fafad fix: fixed multiple windows are opened when opening with readest, closes #2429 (#2435) 2025-11-11 19:36:28 +01:00
Huang Xin fb5710c134 fix(pdf): disabled pagination with swipe gesture below minimum velocity for PDFs, closes #2428 (#2434) 2025-11-11 18:20:45 +01:00
ByteFlow c4d9652335 fix(annotator): enhance PDF context menu for translation and improve touch handling (#2430)
* fix(annotator): enhance PDF context menu for translation and improve touch handling

* feat(annotator, shortcuts): add keyboard shortcuts for selection actions

* feat(annotator): reposition popups on scroll to enhance user experience

* feat(annotator): disable currently unsupported annotator functions for PDFs

---------

Co-authored-by: Huang Xin <chrox.huang@gmail.com>
2025-11-11 15:10:44 +01:00
Huang Xin df6027cf9f fix(eink): avoid gray color in E-Ink mode (#2427) 2025-11-09 19:17:35 +01:00
Huang Xin e3f7abf7f1 fix(tts): fixed incorrectly selected voices, closes #2386 (#2426) 2025-11-09 19:11:12 +01:00
Huang Xin c539917d7e compat(footnote): support more footnote formats (#2425) 2025-11-09 18:07:39 +01:00
Huang Xin 5eb870c978 fix(layout): don't hide horizontal scrollbar, closes #2418 (#2424) 2025-11-09 17:03:24 +01:00
Huang Xin b075c46ba3 compat(sync): compatibility for kosync server implementations that do not return timestamp (#2422) 2025-11-09 14:42:07 +01:00
Huang Xin 4b6c7776f5 fix(eink): no shade in eink mode (#2421) 2025-11-09 14:34:26 +01:00
Huang Xin 745a14195d fix(layout): fixed header bar z index (#2413) 2025-11-06 10:56:28 +01:00
Huang Xin fb0f660eaf fix(android): fixed back gesture to close config panel, closes #2406 (#2411) 2025-11-05 22:45:13 +01:00
Huang Xin 04a3030b79 fix(metadata): fixed changing cover image in Readest apps, closes #2402 (#2410) 2025-11-05 20:43:42 +01:00
Huang Xin 5a3114de48 fix(android): get brightness of the current window on Android, closes #2389 (#2409) 2025-11-05 19:36:45 +01:00
Huang Xin b808fc5954 fix: default to not override book color for PDF, closes #2397 (#2404) 2025-11-04 18:46:37 +01:00
Huang Xin 0ec4e37c13 fix(css): support style transformer for inline css (#2403)
* fix(css): support style transformer for inline css

* fix(eink): bold text for current chapter in the TOC, closes #2401
2025-11-04 18:36:46 +01:00
Huang Xin 9d301631ca fix(layout): restrict image container within column boundaries, closes #2390 (#2398) 2025-11-03 16:35:08 +01:00
Huang Xin ec7145bb01 fix(upload): sanitize filenames before uploading to cloud bucket (#2396) 2025-11-03 11:17:24 +01:00
Huang Xin f79d84b5fa fix(eink): more readablility for E-Ink mode on the library page, closes #2364 (#2395)
This also closes #2391 and closes #2394.
2025-11-03 09:23:35 +01:00
Huang Xin d00f1e0def feat(import): import files directly into the current book group (#2393) 2025-11-03 05:47:26 +01:00
Huang Xin 637a813732 fix(settings): don't show system fonts on Android, closes #2381 (#2388) 2025-11-02 09:49:25 +01:00
Huang Xin 4f33c9280b fix(layout): fine tuning of column width in scrolled mode and vertical mode, closes #2383 (#2387) 2025-11-02 09:34:57 +01:00
Huang Xin d54c752637 fix(koplugin): properly refresh access token (#2384) 2025-11-02 04:50:54 +01:00
Huang Xin 984d5d198d fix(css): avoid overriding table background color by default, closes #2377 (#2379) 2025-11-01 15:09:46 +01:00
Huang Xin 2568778a87 feat(layout): support for duokan bleed layout, closes #2374 (#2378) 2025-11-01 14:26:48 +01:00
Huang Xin 0d805a64f6 compat: polyfill AbortController/AbortSignal on older browsers (#2371) 2025-10-31 06:15:59 +01:00
Huang Xin 066d1c5b1e fix(import): resolve import failures for certain EPUB files, closes #230 (#2370)
If the publisher has already been parsed, don’t remap it from the author or contributor fields again.
This prevents failures when parsing metadata like <dc:creator opf:role="pbl" />.
2025-10-31 05:12:24 +01:00
Huang Xin cdc1950c3a fix(layout): various fixes on the book and reader styles and layouts, closes #2368 (#2369) 2025-10-30 19:34:55 +01:00
Huang Xin 7142874513 fix(ui): display exact storage capacity in the user profile (#2366) 2025-10-30 11:50:39 +01:00
Huang Xin 409c2f62be release: version 0.9.91 (#2362) 2025-10-29 16:37:43 +01:00
Huang Xin 82922c5053 feat(eink): add an option to save last book cover on Android, closes #1414 (#2361) 2025-10-29 16:15:08 +01:00
Huang Xin 9c5bcb13e2 feat(plan): show life-time plan name in user profile (#2360) 2025-10-29 15:36:12 +01:00
Huang Xin 1d87dcdb7f feat: add options to customize the style of highlighted text of current sentence of TTS (#2358) 2025-10-29 10:17:36 +01:00
Huang Xin c7ba44a91e eink: disable all shadows in E-Ink mode (#2354) 2025-10-29 06:46:17 +01:00
Huang Xin 19b79c5b35 fix(android): fixed Android launcher icon size on some Android systems (#2353) 2025-10-29 06:19:02 +01:00
Huang Xin 45216763e3 fix(compat): use xml serializer for sanitized doc for better compatibility (#2352) 2025-10-29 05:12:19 +01:00
Huang Xin 123293dc0e fix: fixed crash when switching allow script (#2351) 2025-10-29 03:17:17 +01:00
Huang Xin 78e61060d2 fix(tts): fixed listener of tts events (#2349) 2025-10-28 18:36:57 +01:00
Huang Xin dd5371d2fd release: version 0.9.90 (#2344) 2025-10-28 05:44:07 +01:00
Huang Xin da041d1f38 fix(ui): hover to display footer bar in non-maximized windows on desktop (#2343) 2025-10-28 05:30:41 +01:00
Huang Xin d01599a2b4 feat(security): sanitize XHTML safely to prevent XSS when scripts are disabled, closes #2316 (#2342) 2025-10-28 04:28:48 +01:00
Huang Xin e80a2268ac feat(ui): add non-linear scale to brightness slider for better low-value control (#2338)
Implement logarithmic mapping for screen brightness slider to improve
usability at low brightness levels where small percentage changes have
significant visual impact.
2025-10-27 13:45:43 +01:00
Huang Xin 3b86229c8f perf(sync): batched updating notes and books when syncing (#2337) 2025-10-27 13:37:04 +01:00
Huang Xin c4d498d183 perf: much faster sync of the whole library (#2336) 2025-10-27 05:33:12 +01:00
Huang Xin 9bc46914e2 feat(iap): support expanding cloud storage with IAP on iOS and Android (#2331) 2025-10-26 10:18:56 +01:00
AlI 75f982e677 i18n(fa): refactor Farsi translation (#2330)
Restructure the Farsi translation to align with the format and key organization used in other translation files. This improves consistency and maintainability.
2025-10-26 08:58:57 +01:00
AlI f58bfeb1d0 fix(layout): Fix popup menu for RTL languages (#2327) 2025-10-26 08:51:25 +08:00
AlI ebb077f6e0 i18n: add translations for Persian/Farsi(fa), closes #2321 (#2326) 2025-10-25 15:32:24 +02:00
Huang Xin fdf6908fc6 feat: expand cloud storage with one-time payment (#2325) 2025-10-25 11:46:51 +02:00
Huang Xin 7936660868 docs: add sponsor links in README (#2318) 2025-10-24 15:22:08 +02:00
Huang Xin 554dd3798f fix: more explanatory error message when importing books, closes #2309 (#2314) 2025-10-24 07:15:41 +02:00
Huang Xin 7f40d8e12c fix(eink): more readability for progress info and section info in E-Ink mode, closes #2311 (#2313) 2025-10-24 06:14:25 +02:00
Huang Xin 31d6f44ff5 fix(iOS): restore last page if app is terminated in the background (#2312) 2025-10-24 05:42:52 +02:00
Huang Xin 86efcde927 feat(tts): add an option to select target language for TTS on translated books (#2310) 2025-10-23 19:34:43 +02:00
Huang Xin 4acbc33762 fonts: add PT font families (#2308) 2025-10-23 16:05:28 +02:00
Huang Xin 7cd3ebfcba compat: support .fb.zip files as FBZ format (#2307)
Although .fb.zip is not an officially recognized extension, many FBZ files use this format, so it's now treated as FBZ for compatibility.
2025-10-23 15:38:44 +02:00
Huang Xin 55c97cab7e perf: improve smoothness of Arrow Up/Down scrolling, closes #2080 (#2306) 2025-10-23 15:32:51 +02:00
Huang Xin 5bde091704 feat(settings): add an option to click both sides of the screen to paginate forward, closes #1951 (#2305) 2025-10-23 13:57:03 +02:00
Huang Xin 70489b46a5 fix(search): correctly display results when searching from selected text (#2304) 2025-10-23 11:52:49 +02:00
Huang Xin d7e89cc01f fix(layout): responsive layout for the custom highlight colors options (#2303) 2025-10-23 11:51:31 +02:00
Huang Xin a1f6030e75 fix(iOS): detect and recover from WebContent process termination (#2302) 2025-10-23 10:37:07 +02:00
Huang Xin e7b2d8435e feat(eink): set underline text decoration for links in E-Ink mode, closes #2293 (#2299) 2025-10-22 18:52:30 +02:00
Huang Xin f890a9633b feat(settings): add an option to set auto screen brightness (#2297) 2025-10-22 18:45:51 +02:00
Huang Xin 5bdcd3124b chore: bump tauri to version 2.9.0 (#2296) 2025-10-22 17:51:35 +02:00
Huang Xin 752b3f8e4c chore: bump nextjs, opennextjs and supabasejs (#2295) 2025-10-22 16:19:06 +02:00
Huang Xin 001e836ae3 chore: bump eslint-config-next to version 16 (#2294) 2025-10-22 15:57:04 +02:00
Huang Xin 50d7f9a9dd feat(android): support custom data location on external sdcard (#2292) 2025-10-22 10:14:41 +02:00
Huang Xin 34a5e58872 feat: add keyboard shortcuts to go prev/next sections, closes #2287 (#2291) 2025-10-22 07:41:33 +02:00
Huang Xin 34fbea6a44 css: properly handle theme color in dark mode for code blocks, closes #2281 (#2290) 2025-10-22 06:56:53 +02:00
Huang Xin 8737535b90 feat: support Android IAP (#2286) 2025-10-21 18:24:50 +02:00
Huang Xin 28ef414c3d feat: supported footnotes for definition list, closes #2278 (#2279) 2025-10-20 10:38:46 +02:00
dependabot[bot] 16279949c1 chore(deps): bump actions/setup-node in the github-actions group (#2277) 2025-10-20 12:25:42 +08:00
Huang Xin 444e22dd0e chore: i18n for highlight color settings (#2275) 2025-10-19 18:59:26 +02:00
仿生猫梦见苦力怕 a231506713 fix(css): support at rules of CSS and fix CSS formatter (#2269)
* refactor: replace manual CSS validator with PostCSS

* Revert "refactor: replace manual CSS validator with PostCSS"

This reverts commit 609ed7dd5a50debcea0303cc1043440af9849ddc.

* fix: support at rules of CSS and fix CSS formatter

---------

Co-authored-by: Huang Xin <chrox.huang@gmail.com>
2025-10-19 18:09:04 +02:00
airwish 5dcabba73c chore: add contribution settings (#2274) 2025-10-19 17:14:20 +02:00
AlI cd71c494da feat(settings): add custom highlight color picker (#2273)
Add ability to customize highlight colors with hex color picker. Users can now set custom colors for all five highlight styles (red, violet, blue, green, yellow) in the settings panel.

Fixes #2271
2025-10-19 17:03:59 +02:00
Huang Xin f66642b8ec tts: avoid using AnaNeural as default English voice (#2272) 2025-10-19 14:58:51 +02:00
Huang Xin 2283e1b0f2 fix(layout): fix inline image, closes #2263 (#2266) 2025-10-18 17:25:37 +02:00
Daniil Leontev e0eb725d8b fix: add more elements to color overrides (#2265) 2025-10-18 22:25:02 +08:00
Huang Xin 05e9549410 release: version 0.9.88 (#2258) 2025-10-17 18:06:00 +02:00
Huang Xin 35fbce3506 feat(settings): added an option to disable animation in E-Ink mode, closes #2253 (#2257) 2025-10-17 18:00:58 +02:00
Huang Xin c1d6825793 fix: more sensitive snap to paginate, closes #2252 (#2256) 2025-10-17 16:05:39 +02:00
Huang Xin ae6c6970b4 feat: localize number in progress info in vertical layout (#2255) 2025-10-17 12:17:36 +02:00
Huang Xin f8fef57cf3 fix(layout): overriding book layout no longer overrides explicit text alignment, closes #2249 (#2254) 2025-10-17 11:44:32 +02:00
Huang Xin 4dc191735d fix(layout): prevent TTS indicator from disappearing too quickly to open configuration panel, closes #2247 (#2248) 2025-10-16 16:49:05 +02:00
Huang Xin 4f11f437e1 release: version 0.9.87 (#2245) 2025-10-16 10:27:34 +02:00
Huang Xin 5773e31990 compat(tts): fix crash with TTS on some versions of Android systems (#2244) 2025-10-16 10:10:04 +02:00
Huang Xin 9dda5d4c88 fix(tts): scroll more accurately to the highlighted text in TTS when header/footer bars are shown (#2242) 2025-10-15 17:50:56 +02:00
Huang Xin 7f5b6959e1 font: update font LXGW WenKai to the latest version (#2240) 2025-10-15 15:17:53 +02:00
Huang Xin 126981d085 fix(theme): fixed auto theme mode for new reader window (#2238) 2025-10-15 14:36:02 +02:00
Huang Xin 854a578929 compat: support parsing more footnotes, closes #2234 (#2237) 2025-10-15 11:59:27 +02:00
Huang Xin 6dd0daa597 txt: add chapter title pattern, closes #2232 (#2233) 2025-10-14 18:01:23 +02:00
Huang Xin fd24a5e9ac release: version 0.9.86 (#2230) 2025-10-14 14:08:45 +02:00
Huang Xin 948b35f244 perf: support concurrent book uploading, closes #2208 (#2229) 2025-10-14 14:00:31 +02:00
Huang Xin 96cc182a8c feat: support overriding html language code with language code in metadata, closes #2222 (#2227) 2025-10-14 13:09:23 +02:00
Huang Xin e2291ed5b1 feat(koplugin): register sync actions in gesture manager closes #2224 (#2226) 2025-10-14 09:54:08 +02:00
Huang Xin 60ddb17547 feat: add support for per-book background image settings in addition to global settings, also closes #2223 (#2225) 2025-10-14 08:54:26 +02:00
Huang Xin 9a991a31ba fix: handle empty custom textures (#2221) 2025-10-13 20:08:22 +02:00
Huang Xin 6de10c6c3b release: version 0.9.85 (#2220) 2025-10-13 19:15:55 +02:00
Huang Xin c7d49c1504 fix: load custom texture before applying it (#2219) 2025-10-13 19:04:45 +02:00
Huang Xin c721bd4d97 chore: enable turbopack by default in development env (#2218) 2025-10-13 16:39:17 +02:00
Huang Xin 5b0a1968d8 chore: add readest.koplugin in the release workflow (#2217) 2025-10-13 16:26:11 +02:00
Huang Xin ad9064fa46 fix(toc): fixed issues of scroll to active items in unpinned sidebar, closes #2213 (#2216) 2025-10-13 15:29:51 +02:00
Huang Xin f1c92e5702 feat: support customizing background images, closes #2018 (#2214) 2025-10-13 14:04:13 +02:00
Huang Xin 92c1441922 translator: add translator target language of Persian, closes #2206 (#2212) 2025-10-12 13:53:23 +02:00
Huang Xin 3820950c7c fix: show only the filtered books in groups (#2209) 2025-10-12 11:38:47 +02:00
Huang Xin 08e558bd41 fix: actually allow script in the transform target, closes #2200 (#2203) 2025-10-11 12:59:55 +02:00
Huang Xin 00af4a3d60 layout: make TTS icon less distracting during read-aloud mode (#2198) 2025-10-10 19:14:57 +02:00
Huang Xin ada427b134 feat(settings): add settings to adjust screen brightness when reading, closes #1532 (#2197) 2025-10-10 19:02:35 +02:00
Huang Xin f696b9a573 fix: handle scrolling/panning in zoomed in PDFs, closes #2184 (#2194) 2025-10-10 07:56:41 +02:00
Huang Xin 195beeacac chore: don't init posthog if users opt-out the usage data telemetry, closes #2187 (#2192) 2025-10-10 07:03:49 +02:00
Huang Xin 5b23ed35b6 txt: properly detect chapters in TXT files with dot-number format, closes #2188 (#2191) 2025-10-10 06:45:50 +02:00
Huang Xin 42c8702704 fix(cbz): fix issue where CBZ files fail to reopen after being closed, closes #2183 (#2190) 2025-10-10 05:50:40 +02:00
Huang Xin ad81376da8 fix(css): auto height of inline images with object-fit style (#2189) 2025-10-10 04:10:05 +02:00
Huang Xin 562fea3a36 fix(layout): fix inconsistent background color for unpinned drag bars (#2186) 2025-10-09 18:35:00 +02:00
Huang Xin b69d9ed69f tts: improve media session control compatibility across more Android systems (#2185) 2025-10-09 17:53:07 +02:00
Huang Xin ad6a21a68f refactor: split FooterBar into modular components for desktop and mobile (#2181) 2025-10-08 07:47:39 +02:00
Huang Xin 173aa0fcd1 layout: fix dragbar flickering when opening a book (#2177) 2025-10-06 05:52:36 +02:00
Huang Xin 788e08a75a shortcut: use shift+space to go backward in the reader page (#2176) 2025-10-06 05:31:16 +02:00
Huang Xin ec397a2daf fix: draw annotations of the current section on load, closes #2163 (#2174) 2025-10-05 17:47:34 +02:00
Huang Xin 2a5758fbc4 compat: disable customize root dir for macOS App Store builds (#2171)
CustomizeRootDir has a blocker on macOS App Store builds due to Security Scoped Resource restrictions.
See: https://github.com/tauri-apps/tauri/issues/3716
2025-10-05 08:28:45 +02:00
Huang Xin 562ccd4b9e feat: add keyboard shortcuts for toggling bookmarks/sidebar, importing books, closing window (#2170)
And make the shortcuts compatible with GNOME Human Interface Guidelines.
This closes #2079 and closes #2168.
2025-10-04 16:12:31 +02:00
make_aguess 4d577774f3 Adds adaptive icon for Android launcher (#2162)
Introduces an adaptive icon for the Android launcher, defining
separate layers for background, foreground, and monochrome
elements. Enhances visual consistency and supports adaptive
icon features on modern Android devices.
2025-10-04 09:00:33 +02:00
Huang Xin 4c10c16491 i18n: add translations for Swedish(sv) (#2159) 2025-10-02 14:25:01 +02:00
Huang Xin 7695f31a5a translator: translate to and from Norwegian Bokmål(nb) (#2158) 2025-10-02 14:09:01 +02:00
Huang Xin 06b27f8d39 chore: fix portable exe build for Windows (#2156) 2025-10-02 00:11:21 +08:00
Huang Xin e1691661d9 release: version 0.9.82 (#2155) 2025-10-01 16:45:01 +02:00
Huang Xin bc8e419d51 compat(koplugin): make meta_hash extraction more robust for calibre conversions and metadata edits, fixes #1838 (#2154) 2025-10-01 16:38:29 +02:00
make_aguess ccad1ca0d9 Add support for mono theme (#2122) (#2153) 2025-10-01 15:30:09 +02:00
Huang Xin 75c315fca8 fix(koplugin): only prompt network connection during interactive push progress, closes #2137 (#2152) 2025-10-01 14:57:58 +02:00
Huang Xin bdef593cdd feat: support global settings from library menu, closes #2140 (#2151) 2025-10-01 09:59:37 +02:00
Huang Xin d8943fc0c5 compat: normalize OKLCH color syntax for older iOS Safari, closes #990 (#2150) 2025-10-01 07:59:45 +02:00
Huang Xin cdd274e5ca compat: add support for WebView down to version 92, closes #2139 (#2145) 2025-09-30 19:14:35 +02:00
Huang Xin 2230741779 fix(i18n): apply system language on app start, closes #2141 (#2144) 2025-09-30 10:11:18 +02:00
Huang Xin 0e6950a60f i18n: localization for notification title and text (#2143) 2025-09-30 10:03:33 +02:00
Huang Xin 1d4541e353 feat: request manage external storage permission when changing data directory to sdcard root on Android (#2142) 2025-09-30 08:59:16 +02:00
Huang Xin 0a1e0212e2 feat: supported background TTS with media session controls, closes #2099 and closes #964 (#2138) 2025-09-29 19:45:17 +02:00
Huang Xin 25b44176b9 fix(tts): parse default language in ssml without translated text (#2135) 2025-09-27 17:52:54 +02:00
Huang Xin e1deff341d feat: supported changing data location on Android (#2131) 2025-09-26 17:32:16 +02:00
Huang Xin 3fc4c05e50 feat: build portable Windows binaries with app data kept within the executable directory (#2126) 2025-09-26 11:23:55 +02:00
Huang Xin 1843a74dbb feat: supported changing data location on desktop platforms, closes #2047 and closes #478 (#2125) 2025-09-26 10:22:41 +02:00
Huang Xin 9aa6a8e6b9 chore: bump tauri to the latest version (#2117) 2025-09-25 09:32:55 +02:00
Huang Xin 1de89069ce fix: handle pointer events for window dragging on touch screen Windows, closes #2010 (#2116)
* fix: handle pointer events for window dragging on touch screen Windows, closes #2010

* chore: fix rust-lint
2025-09-25 06:41:08 +02:00
Huang Xin 1e6525d085 fix(sync): handle incomplete config data from koreader (#2115) 2025-09-25 11:49:43 +08:00
Huang Xin d9d71b7d38 fix(css): overriding hard-coded font weight (#2113) 2025-09-24 17:03:17 +02:00
Huang Xin e85dec2b49 fix(sync): force a full sync after a certain period, closes #2111 (#2112) 2025-09-24 16:52:17 +02:00
Huang Xin c0f77b3368 fix(tts): abortable prefetch of tts data, closes #2037 (#2110) 2025-09-24 12:19:07 +02:00
Huang Xin 8c9855d167 fix(layout): avoid changing the safe area insets when virtual keyboard pops up on Android, closes #2105 (#2108) 2025-09-24 07:28:59 +02:00
Huang Xin 7c12bc8595 fix(mobi): fixed footnotes parsing for some MOBI/AZW files (#2106) 2025-09-23 08:53:43 +02:00
Huang Xin 5102f6b0ff fix(tts): handle und language code, closes #2100 (#2102) 2025-09-22 18:15:28 +02:00
Huang Xin dd40b9bae0 fix(layout): adjust font size instead of zooming HTML, closes #2088 (#2101)
Prevents issues with zoom handling in WebKit-based browsers such as Safari and WebKitGTK.
2025-09-22 17:43:22 +02:00
Huang Xin 98b4026990 fix(layout): scrollable book view and about window, closes #2090 (#2098) 2025-09-22 13:44:54 +02:00
Huang Xin b0640ba55b fix(fonts): higher priority for CJK fonts so that it can override system CJK glyphs (#2093) 2025-09-21 08:22:49 +02:00
Huang Xin c9a1557674 refactor: support custom root dir for readest file system (#2092) 2025-09-21 07:59:27 +02:00
Huang Xin 855f98722c tts: add more languages for edge tts (#2089) 2025-09-20 01:58:11 +02:00
Huang Xin 21a82b70c7 fix(a11y): better contrast for disabled buttons, closes #2083 (#2084) 2025-09-19 13:40:45 +02:00
Huang Xin 519e222883 release(hotfix): version 0.9.81 (#2082) 2025-09-19 13:20:48 +02:00
Huang Xin 488a242787 css: default to lower font-family specificity than the styles defined inside the ebook, closes #2070 (#2081) 2025-09-19 13:10:37 +02:00
StepanSad 523a03d212 Update translation.json (#2078) 2025-09-19 12:04:22 +02:00
Huang Xin d49f3442e8 fix(layout): scroll in the dropdown menu in landscape mode, closes #2072 (#2076) 2025-09-19 11:50:03 +02:00
Huang Xin 48dc570809 fix: handle invalid bookkey for viewState, closes #2073 (#2074) 2025-09-19 11:09:32 +02:00
Huang Xin 509320813f tts: support media session in desktop apps (#2071) 2025-09-19 10:22:39 +02:00
Huang Xin 54d7e73acb fix: disable swipe up to toggle action bar for PDF zoomed in (#2068) 2025-09-18 19:46:47 +02:00
Huang Xin 1bc0eb3a4b release: version 0.9.80 (#2067) 2025-09-18 18:45:12 +02:00
Huang Xin c0bf2d40dd fix: jump to current item in virtualized TOC list, closes #2055 (#2066) 2025-09-18 18:38:09 +02:00
Huang Xin e30a39f9cb fix(config): prevent occasional errors when saving progress and configs (#2065) 2025-09-18 16:56:44 +02:00
Huang Xin 9727e4e9b8 fix(metadata): handle invalid language code and title when importing, closes #2056 and closes #2058 (#2064) 2025-09-18 16:47:02 +02:00
Huang Xin 3380912cdb feat(kosync): use metadata hash to aggregate different versions of the same book (#2063) 2025-09-18 14:51:26 +02:00
Huang Xin 91a5454b46 feat(sync): aggregate books with metadata hash for progress and annotation sync (#2062) 2025-09-18 14:05:16 +02:00
Huang Xin e0c5acf4c8 chore: check file status before deleting cloud files (#2053) 2025-09-17 04:54:32 +02:00
Huang Xin 7e062be0d0 doc: update accessibility support in README (#2051) 2025-09-16 18:06:10 +02:00
Huang Xin b23876c2b9 a11y: support NVDA screen reader on Windows and Orca screen reader on Linux (#2050) 2025-09-16 17:38:21 +02:00
Huang Xin e9a152683e fix(layout): show focus ring only for keyboard navigation (#2046) 2025-09-15 21:13:52 +02:00
Huang Xin 34f1af727f a11y: accessibility for mobile platforms (#2044) 2025-09-15 18:45:45 +02:00
Huang Xin dfc24f3803 fix(layout): fix break word for titles in book detail, closes #2039 (#2043) 2025-09-15 09:21:35 +02:00
Huang Xin ec233f7b37 fix(sync): resolve issue where invalid tokens were occasionally used with the storage API (#2041) 2025-09-14 22:08:22 +02:00
Huang Xin bb34b1ba59 a11y: add screen reader support (#2040)
Tested with VoiceOver on iOS and macOS
2025-09-14 22:00:42 +02:00
Daniil Leontev b1fb477359 fb2: respect elements nested in stanza (#2038)
Updates foliate-js submodule to include necessary changes. Fixes #2027
2025-09-14 17:03:53 +02:00
StepanSad 3c877a19fc Update translation.json (#2032) 2025-09-14 08:49:02 +08:00
Huang Xin b47baa6b74 fix: add delete confirmation for book deletion from contextmenu, closes #2013 (#2029) 2025-09-12 18:27:07 +02:00
Huang Xin 14c85cbadf feat(metadata): add an option to remove cover image, closes #2020 (#2028) 2025-09-12 17:10:25 +02:00
Huang Xin a88b9139f8 fix: occasionally failed double click detection on the header bar on Windows, closes #2015 (#2026) 2025-09-12 13:36:56 +02:00
Huang Xin 251a4b52c0 fix: support dragging window on touch screen, closes #2010 (#2025) 2025-09-12 11:43:49 +02:00
Huang Xin 1aaeaf5ebe feat: add support links in the about window (#2024) 2025-09-12 08:03:35 +02:00
Huang Xin 9fd152d727 refactor(a11y): add basic lint for accessibility (#2021) 2025-09-11 18:57:04 +02:00
Huang Xin 2571ceede4 fix: also apply zoom shortcuts to PDFs (#2016) 2025-09-10 17:32:23 +02:00
Huang Xin 932cfa3b9f feat: show groups in list mode in the library page, closes #978 (#2009) 2025-09-09 18:18:54 +02:00
Huang Xin 01fde8573c fonts: support variable fonts when importing ttf/otf font files, closes #2003 (#2007) 2025-09-09 11:25:27 +02:00
Huang Xin d95656b37b fix(tts): compensate audio fade-in for resumed play on iOS and macOS, closes #2005 (#2006) 2025-09-09 08:29:39 +02:00
Huang Xin 210eda0340 fix: pagination with volume keys now has right direction for RTL books, closes #1996 (#2004) 2025-09-09 05:36:45 +02:00
Huang Xin 0d8b877d73 fix: don't show rounded window in maximized or fullscreen mode on (#2001)
Linux, closes #1998
2025-09-08 19:32:15 +02:00
dependabot[bot] 79d39b2295 chore(deps): bump the github-actions group with 2 updates (#1999) 2025-09-08 12:44:45 +08:00
Huang Xin e03b0af58a feat: swipe to paginate on fixed layout books, closes #1028 (#1995) 2025-09-07 16:14:34 +02:00
Huang Xin 71c2143cba fix: avoid pagination until book view is inited, closes #1983 (#1994) 2025-09-07 14:47:35 +02:00
Huang Xin 70a7f5be19 fix: use transparent background for rounded window on Linux, closes #1982 (#1991) 2025-09-07 10:38:27 +02:00
Huang Xin d2242423f5 fix: correctly parse filenames for woff/woff2 font files on Android, closes #1981 (#1990) 2025-09-07 07:04:48 +02:00
Huang Xin 782e9c8b20 fix: restore scale factor (zoom level) for PDFs, closes #1985 (#1989) 2025-09-07 06:12:57 +02:00
Huang Xin 55b2c678a4 fix(kosync): handle non-standard XPath syntax from Koreader, closes #1968 (#1988) 2025-09-07 06:05:27 +02:00
Huang Xin 48d754c184 fix(layout): prevent layout shift on Android browsers, closes #1979 (#1980) 2025-09-06 18:13:02 +02:00
Huang Xin ff0443ace7 compat: fixed zoom level handling on iOS and macOS, closes #1784 (#1978) 2025-09-06 16:07:06 +02:00
Huang Xin cc3cc58de0 release: version 0.9.78 (#1975) 2025-09-06 10:50:18 +02:00
Huang Xin 80d60266c2 settings: default to override background color in fixed layout documents (#1974) 2025-09-06 10:40:18 +02:00
54wedge f06cdb5899 txt: nest chapters inside volumes when converting to epub (#1972)
* txt: nest chapters inside volumes

* txt: readability

* txt: format
2025-09-06 10:28:26 +02:00
Huang Xin dfe68988aa fix(kosync): use 1-based indices in xpointer, closes #1968 (#1973) 2025-09-06 07:40:32 +02:00
Huang Xin d0264de3eb compat: more accessible iframes for PDFs, closes #1136 (#1971) 2025-09-05 18:56:15 +02:00
Huang Xin 77c4303938 feat(pdf): support setting zoom level, zoom mode and spread mode for PDF (#1969)
This should close #1717, close #1276, close #669.
2025-09-05 18:20:15 +02:00
Huang Xin 5724d2eeec feat(tts): support going previous/next by sentence in bottom TTS bar, closes #1816 (#1967) 2025-09-05 10:34:30 +02:00
54wedge 64007b1188 txt: improve zh chapter extraction (#1966)
* txt: improve zh chapter extraction

* txt: fix regexp

* txt: one more keyword
2025-09-05 10:31:26 +02:00
Huang Xin 50ee7bd8be doc: change badge colors for last commit and commit activity 2025-09-04 11:44:11 +02:00
Huang Xin 2bcbde4bf1 doc: fixed badge-language-coverage URL encoding 2025-09-04 11:39:27 +02:00
Huang Xin 99f75dd3b6 i18n: add Bengali(BN), Sinhala (SI) and Tamil (TA) translations (#1965) 2025-09-04 11:37:29 +02:00
Huang Xin 2b9132b4a8 feat(translator): preprocess some common mistranslated publishing terms (#1964) 2025-09-04 09:38:17 +02:00
Huang Xin 82782be16e fix: prevent layout shift when virtual keyboard pops up on Android, closes #1959 (#1963) 2025-09-04 08:04:51 +02:00
Huang Xin 7067129887 fix(tts): fixed headings cannot be highlighted in TTS (#1955) 2025-09-03 16:42:59 +02:00
Huang Xin 6e706ac8f7 feat: add inline editor for bookmarks in the sidebar, closes #1909 (#1954) 2025-09-03 11:06:35 +02:00
Huang Xin 39b902c927 epub: parse correct book front cover for some EPUBs, closes #1913 (#1953) 2025-09-03 07:50:26 +02:00
Huang Xin 94a9cd7c9d doc: update README and add link of readest subreddit (#1952) 2025-09-03 07:24:54 +02:00
Huang Xin 0dae7db140 fix: improved sensitivity of text selection with stylus, closes #706 (#1950) 2025-09-02 18:51:45 +02:00
Huang Xin 32954e025c fix(tts): media control in the lock screen and with airpods for iOS, closes #1407 (#1949) 2025-09-02 17:24:16 +02:00
Huang Xin 61dda9a517 feat: group custom fonts into families, closes #1934 (#1945) 2025-09-01 17:49:46 +02:00
Huang Xin 99a4cb50ac feat: add an option to show persistent TTS bar at the bottom, closes #1818 (#1944) 2025-09-01 14:23:28 +02:00
Huang Xin f4b00d6dec fix: get rid of invalid grid insets (#1943) 2025-09-01 07:05:48 +02:00
Huang Xin f69422a61c fix: conditional Back key interception on Android (#1942) 2025-09-01 06:16:31 +02:00
Huang Xin 7f4c157a90 chore: build with install package permission by default for Android (#1939) 2025-08-31 16:53:29 +02:00
Huang Xin 7d9724ff8b fix: close books with the system back key on Android, closes #1933 (#1938) 2025-08-31 10:15:28 +02:00
Huang Xin 06db7f36f8 refactor: rename ConfirmSyncDialog to KOSyncResolver (#1937) 2025-08-31 05:46:43 +02:00
Huang Xin f0c249bce2 release: version 0.9.76 (#1932) 2025-08-30 06:19:01 +02:00
Huang Xin e8a96fba95 compat: more compat with window insets on Android (#1931) 2025-08-30 06:18:06 +02:00
Huang Xin 92b01c40a0 layout: fix grouping modal not shown on Linux (#1930) 2025-08-30 05:28:02 +02:00
Huang Xin 6003eeadba compat: support more kosync server implementations, closes #1862 (#1929) 2025-08-30 04:54:31 +02:00
Huang Xin 856ed4d3b3 ux: add splash screen for iOS and Android and reduce flash when opening books (#1926) 2025-08-29 19:10:09 +02:00
Huang Xin 267fe58a8c fix: reduce screen flash with different background colors when app starts, closes #1915 (#1922) 2025-08-28 20:02:53 +02:00
Huang Xin 1b00d8c41c fix: support importing azw3 files on Android, closes #1920 (#1921) 2025-08-28 16:11:30 +02:00
Huang Xin cb126613b1 perf(sync): incremental sync of library books (#1917) 2025-08-27 19:04:57 +02:00
Huang Xin 515bfee2a1 fix(kosync): normalize xpointer to improve KOReader sync tolerance, closes #1857 (#1914) 2025-08-27 09:18:32 +02:00
Huang Xin 584f3511f8 refactor(kosync): move kosync into reader sidebar menu and add manual pull/push trigger (#1912) 2025-08-27 13:32:00 +08:00
Huang Xin 3ea54e6725 fix: display hidden footnotes, closes #1847 (#1907) 2025-08-26 12:45:12 +02:00
Huang Xin 48212d892f fonts: purge custom fonts when reseting fonts config (#1906) 2025-08-26 11:23:34 +02:00
Huang Xin 977c61b914 refactor: use useFileSelector hook for all file selection (#1905) 2025-08-26 10:04:10 +02:00
Huang Xin 66fceb2313 chore: add 10MB of grace bytes for storage quota (#1904) 2025-08-26 07:28:15 +02:00
Huang Xin 76feefff00 layout: fix overflow of some font names in custom fonts, closes #1901 (#1903) 2025-08-26 06:35:43 +02:00
Huang Xin 1be43ff704 fix: close reader window when trying to go to library in separate reader window, closes #1899 (#1900) 2025-08-25 18:01:06 +02:00
Huang Xin b6d4a547e5 chore: fix typo (#1898) 2025-08-25 09:41:36 +02:00
Huang Xin 5ee860f1e8 refactor: use safe insets from native for Android, closes #1793 and closes #1886 (#1897) 2025-08-25 09:38:49 +02:00
dependabot[bot] 0b01132d88 chore(deps): bump actions/setup-java in the github-actions group (#1896)
Bumps the github-actions group with 1 update: [actions/setup-java](https://github.com/actions/setup-java).


Updates `actions/setup-java` from 4 to 5
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-25 09:13:58 +02:00
Huang Xin b98c487919 theme: fix themed background color for PDFs on macOS, closes #1887 (#1894) 2025-08-24 08:29:45 +02:00
Huang Xin b43b08d423 fix: init traffic light properly in library page on macOS, closes #1872 (#1891) 2025-08-24 06:33:52 +02:00
Huang Xin 3ddb6e6422 fix: handle some cases where footnote is empty, closes #1880 (#1883) 2025-08-23 10:28:51 +02:00
Huang Xin ea9146be5b fonts: parse font family as well as font style when importing fonts, closes #1876 (#1881) 2025-08-23 10:27:58 +02:00
Huang Xin 78cb1f45e4 chore: fix workflow dependency for release (#1874) 2025-08-22 17:51:01 +02:00
Huang Xin e472d1cf1e release: version 0.9.75 (#1873) 2025-08-22 17:47:24 +02:00
shaqtiktok 75dc04d598 fix(tts): reuse audio object in the same paragraph for better performance, closes #1777 (#1853)
* Remove stopInternal which causes audio delaying

* Change audio obj to not be recreated every sentence

* refactor abort signal handler

---------

Co-authored-by: Huang Xin <chrox.huang@gmail.com>
2025-08-22 17:22:34 +02:00
Huang Xin fc4c033cf3 layout: layout tweaks on the custom fonts panel (#1871) 2025-08-22 12:35:20 +02:00
Huang Xin dbee054838 feat: apply custom fonts directly in custom font panel (#1870) 2025-08-22 12:17:57 +02:00
Huang Xin 45b805dcd4 layout: keep book title align center of the blank space when there are window buttons, closes #1867 (#1869) 2025-08-22 10:42:34 +02:00
Huang Xin a8ac54b51c layout: fix position of close button miss-match between reader and library page on Windows and Linux, closes #1866 (#1868) 2025-08-22 10:05:00 +02:00
German Shein 86f705eae9 feat: support author sorting (last name first), closes #1799 (#1865)
* [Issue #1799](https://github.com/readest/readest/issues/1799): Changing the name order when sorting the book by Author by placing the last name first in Arabic, Tibetan, German, English, Spanish, French, Hindi, Italian, Dutch, Polish, Portuguese, Russian, Thai, Turkish and Ukrainian languages

* refactor author sort

---------

Co-authored-by: Huang Xin <chrox.huang@gmail.com>
2025-08-22 07:59:59 +02:00
Huang Xin d390209dab feat: support importing TTF/ODF fonts, closes #979 and closes #1708 (#1864) 2025-08-21 21:49:08 +02:00
Huang Xin 149f94be4c css: ensure workarounds don’t interfere with body background color (#1859) 2025-08-20 18:30:20 +02:00
Huang Xin ef1a1eab98 layout: consistent label font weight for settings panels (#1856) 2025-08-20 12:14:45 +02:00
lijiahao66666 dc7c6e14bc fix(translator): refresh translation when provider is changed in translator popup (#1855)
– Add the translate function to the dependency array in the TranslatorPopup component
– This change ensures that the translation content is re-fetched whenever the translate function is updated

Co-authored-by: 李家豪 <7904127+li_jiahaojj@user.noreply.gitee.com>
2025-08-20 11:54:20 +02:00
Huang Xin 8c31dc85f9 chore: bump next.js, opennext, wrangler and supabase to latest versions (#1851) 2025-08-20 05:57:28 +02:00
Huang Xin 7b8d1ddc35 chore: bump tauri to latest dev branch (#1849) 2025-08-20 05:15:44 +02:00
Huang Xin 8c12399732 layout: fix footer bar layout in landscape mode on Android, closes #1803 (#1843) 2025-08-19 15:49:38 +02:00
Huang Xin 93a4b1a448 css: fix unexpected align center for some EPUBs (#1842) 2025-08-19 15:05:26 +02:00
Huang Xin 04b0752b22 layout: fix drop down in TTS panel cannot open on older iOS, closes #1810 (#1841) 2025-08-19 15:02:02 +02:00
Huang Xin 5137c08204 chore: more aggressive cache for CI (#1839) 2025-08-19 10:21:20 +02:00
Huang Xin ec0b44fb9f reader: fix collapse of nested TOC for some EPUBs, closes #1820 and closes #1813 (#1837) 2025-08-19 09:55:25 +02:00
Huang Xin 0bf83dfe67 css: use monospace font for code blocks when overriding custom book fonts, closes #1805 (#1836) 2025-08-19 07:56:10 +02:00
Huang Xin b151b70cb9 fix: don't proxy network connection from Tailscale IP addresses, closes #1834 (#1835) 2025-08-19 05:02:29 +02:00
Huang Xin f2640359a0 release: version 0.9.72 (#1831) 2025-08-18 17:43:09 +02:00
Huang Xin 079aeaedb0 fix(sync): support custom koreader sync server hosted in LAN, closes #1800 (#1830) 2025-08-18 17:35:49 +02:00
Huang Xin bfacadb964 layout: fix options list align right on Windows (#1829) 2025-08-18 16:10:06 +02:00
Huang Xin 2e98ed44ee tts: fix edge tts, closes #1821 (#1828) 2025-08-18 14:44:38 +02:00
dependabot[bot] 952d2a3553 chore(deps): bump actions/checkout in the github-actions group (#1827)
Bumps the github-actions group with 1 update: [actions/checkout](https://github.com/actions/checkout).


Updates `actions/checkout` from 4 to 5
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-18 13:36:01 +02:00
StepanSad 225aa0ca59 Update translation.json (#1826) 2025-08-17 20:15:14 +08:00
Huang Xin 37f718b84b fix: adjust snap threshold to avoid pagination changes when toggling toolbars, closes #1807 (#1811) 2025-08-14 17:00:52 +02:00
Huang Xin db8f53a6e1 css: background color for dialogs and images, closes #1797 (#1798) 2025-08-13 15:37:52 +02:00
Huang Xin ce345ad67f fix(koplugin): add expected 301 status code (#1791) 2025-08-12 21:33:51 +02:00
Huang Xin 8e53e625a4 fix(koplugin): fix typo of saveSetting, closes #1788 (#1789) 2025-08-12 20:20:43 +02:00
Huang Xin 3350bdbdd3 release: version 0.9.71 (#1787) 2025-08-12 18:59:04 +02:00
Huang Xin 634d789654 css: fix initial text align (#1786) 2025-08-12 18:37:00 +02:00
Huang Xin 0dfa8e96f5 feat(sync): add readest koplugin for progress sync, also implements #1729 (#1785) 2025-08-12 18:24:47 +02:00
Huang Xin 3698e6ca28 sync: refactor koreader sync settings (#1783)
* sync: refactor koreader sync settings

* i18n: added Tibetan translations, closes #1780
2025-08-11 19:41:39 +02:00
Zeedif 595608bd62 feat: Implement KOReader Progress Synchronization (#1770)
* feat(sync): implement KOReader progress synchronization

This commit introduces a comprehensive feature to synchronize reading progress with a KOReader sync server. It includes a compatibility layer to handle discrepancies between Readest's CFI-based progress and KOReader's XPointer/page-based progress, primarily using the `percentage` field as a common ground.

Key additions include:
- A new settings panel under "KOReader Sync" for server configuration, authentication, and sync strategy management (e.g., prompt on conflict, always use latest).
- A conflict resolution dialog that appears when remote progress differs significantly from local progress, allowing the user to choose which version to keep.
- A client-side `useKOSync` hook to manage the entire synchronization lifecycle, including API calls, state management, and conflict resolution logic.
- A new API endpoint `/api/kosync` that acts as a secure proxy to the user-configured KOReader sync server, handling authentication and forwarding requests.
- Logic to differentiate between paginated (PDF/CBZ) and reflowable (EPUB) formats, using page numbers for paginated files where possible and falling back to percentage for reliability.
- Spanish translations for all UI elements related to the KOReader sync feature.
- Addition of `uuid` package to generate a unique `device_id` for sync purposes.

Refactor:
- The `debounce` utility has been improved to include `flush` and `cancel` methods, allowing for more precise control over debounced function execution, which is now used in the sync hook.

* fix(kosync): add support for converting between XPointer and CFI in progress synchronization

* fix(kosync): update navigation method to use select instead of goTo for paginated formats

* fix(kosync): refactor synchronization settings and improve conflict resolution handling

* fix(kosync): add event dispatcher for flushing KOReader synchronization

* fix(sync): handle xpointer in a different section, fix styling

* i18n: update translations

---------

Co-authored-by: Huang Xin <chrox.huang@gmail.com>
2025-08-11 17:53:28 +02:00
Huang Xin b8bb1ee71d fix(sync): correct xpointer spine index and omit certain tag index (#1781) 2025-08-11 15:25:16 +02:00
arutonee1 4298213ce4 feat: added option to delete only the local copy of a book (#1773)
* feat: added button to delete the local copy of a book

* refactor: merged deletion api and messages

* fix: included translations for deletion messages

* updated translations

* refactor the deletion dropdown menu

---------

Co-authored-by: Huang Xin <chrox.huang@gmail.com>
2025-08-11 10:38:34 +02:00
Huang Xin 5671460618 sync: add xcfi to convert between readest epubcfi and koreader xpointer (#1774) 2025-08-09 19:01:54 +02:00
Huang Xin 452dc9f3e6 chore: cache nextjs build for CI (#1771) 2025-08-09 07:28:38 +02:00
Andres Puello 09e65211b4 feat: add option to config reading progress format (#1761)
* feat: added percentage option and set by default

* feat: added decimal percentaje

* fix: fixed issue that the function of format didn't look for typeof

* fix: Added revision fixes

* fix: Added revision fixes and changes

* fix: solved about styling code

* fix: solved about styling code on book.ts and translation.json

* fix: changed lines useEffect line that is escencial to Layoutpanel.tsx, and ProgressInfo.tsx has correct render like last version (Loc.) nd its separator

* fix: correct SUPPORTED_LANGS key and disable style reapplication in saveViewSettings

* i18n for the progress style config

---------

Co-authored-by: Huang Xin <chrox.huang@gmail.com>
2025-08-09 06:23:18 +02:00
Huang Xin f46be89036 fix: apply system color scheme for iOS in auto theme mode, closes #1762 (#1767) 2025-08-08 13:45:04 +02:00
Huang Xin f2f744a2fe css: mix with background color for horizontal rule, closes #1649 (#1759) 2025-08-07 11:18:56 +02:00
Huang Xin ceb1963b88 auth: avoid infinite loop of redirect and auth after token is expired (#1758) 2025-08-07 05:40:13 +02:00
Huang Xin 23d74b567a css: apply monospace font settings for EPUBs, closes #1754 (#1757) 2025-08-07 03:54:44 +02:00
StepanSad 5014932a8f i18n: Update translation.json (#1756) 2025-08-07 07:20:14 +08:00
Huang Xin 6a5694d2b2 feat: readest koplugin for progress sync (#1753) 2025-08-06 17:12:00 +02:00
Huang Xin df074082a8 fix: thread-safe NativeFile read for PDF on Android, closes #1748 (#1751) 2025-08-06 16:24:56 +02:00
Huang Xin 847d514441 fix: NativeFile access for file URI when importing files on iOS, closes #1746 (#1747) 2025-08-05 18:48:42 +02:00
Huang Xin b2a71da2b0 fix: chunk of cache item now has enough space for read of MAX_CACHE_CHUNK_SIZE, closes #1392 (#1744) 2025-08-04 16:35:27 +02:00
Huang Xin 3e5e4d2946 compat: detect book language from text for invalid language code in metadata (#1743) 2025-08-04 14:55:18 +02:00
Huang Xin e3c05e7648 feat: add reset password button in user page (#1742) 2025-08-04 14:12:19 +02:00
Huang Xin df9ca2d2fa api: migrate usage stats from KV to db (#1739) 2025-08-03 05:36:33 +02:00
Huang Xin 1631ece2bd docs: doc submodule update as dependencies 2025-08-03 03:39:24 +02:00
Huang Xin 2ae25f3bbe translator: add more translator languages (#1738) 2025-08-02 17:09:09 +02:00
Huang Xin 511093a6ef tts: tts now works when language codes are mistakenly set with language names (#1737) 2025-08-02 16:52:32 +02:00
Huang Xin 1ef126f820 release: version 0.9.69 (#1733) 2025-08-02 03:36:10 +02:00
Huang Xin 1788b86ced chore: bump to upstream foliate-js (#1732) 2025-08-02 03:24:58 +02:00
Huang Xin 3111e93054 layout: fix unintended reader view scroll when highlighting, closes #1716 (#1731) 2025-08-02 02:58:58 +02:00
Huang Xin 288abc678c refactor: unified path resolver on all platforms (#1730) 2025-08-01 16:51:17 +02:00
Huang Xin 7e559c5b90 metadata: fix formatting for subjects, closes #1724 (#1727) 2025-08-01 00:19:58 +08:00
Huang Xin eaaeb844f3 txt: fix language detection when parsing TXT files, closes #1720 (#1723) 2025-07-31 08:52:25 +02:00
Huang Xin 097fde203d css: overriding book color also applies to the font elements (#1721) 2025-07-31 04:40:08 +02:00
Huang Xin efd85e67d9 api: production for apple iap verifier (#1719) 2025-07-31 01:41:55 +02:00
Huang Xin bd4bf459e3 epub: fix some images are not displayed in EPUBs, closes #1709 (#1718) 2025-07-30 14:11:55 +02:00
Huang Xin 8fb1745dbb config: add an option to disable double click, closes #1713 (#1715) 2025-07-30 11:35:07 +02:00
Huang Xin 47c6d6d058 layout: fix cover image width in fit mode in list view (#1714) 2025-07-30 11:29:31 +02:00
Huang Xin 564693d456 security: add updater permission for standalone reader window, closes #1710 (#1712) 2025-07-30 05:00:46 +02:00
Huang Xin aa3cd2a0c5 txt: trim punctuations in parsed author names (#1707)
* txt: trim punctuations in parsed author names

* release: version 0.9.68
2025-07-29 20:50:21 +02:00
Huang Xin c581f8ab47 txt: more robust TXT parsing (#1706) 2025-07-29 20:06:55 +02:00
Huang Xin 63ed763499 api: handle downloading books of sanitized titles (#1705) 2025-07-29 18:23:19 +08:00
Huang Xin 213fc0d21e api: handle more string sanitization (#1702) 2025-07-28 19:12:42 +02:00
Huang Xin 9bc1494582 api: sanitize string before saving into db (#1701) 2025-07-28 18:44:26 +02:00
Huang Xin 33b2ba1609 chore: add legal links in about window and user page (#1700) 2025-07-28 18:19:45 +02:00
Huang Xin b9add62ba7 translation: skip translating pre, code and math tags, closes #1693 (#1698) 2025-07-28 09:18:19 +02:00
Huang Xin 23fa2dc8b2 css: fix hard-coded font color, closes #1695 (#1697) 2025-07-28 08:36:10 +02:00
Huang Xin 67ac09a290 premium: increased cloud sync storage for premium users (#1696) 2025-07-28 08:25:22 +02:00
Huang Xin f10c14ae96 api: batch updating daily usage key in KV (#1694) 2025-07-28 06:25:47 +02:00
Huang Xin 438d3ae0c2 config: default to open file with new window (#1691) 2025-07-27 19:12:19 +02:00
Huang Xin 842062fe44 perf: multi-part download with range access (#1690) 2025-07-27 18:56:41 +02:00
Huang Xin d01897d62a fix: load backup library data if main library data is unavailable, closes #1672 (#1689) 2025-07-27 16:48:58 +02:00
Huang Xin 6eeb8e7580 layout: fix insets for double borders and add book spine decorator (#1688) 2025-07-27 14:36:55 +02:00
Huang Xin 9cebadba57 font: fix broken links for online CJK fonts (#1687) 2025-07-27 08:25:25 +02:00
Huang Xin e5ec9abca3 chore: suppress warnings from old objc crate (#1686) 2025-07-27 08:03:45 +02:00
Huang Xin 5e7f09d5c8 perf: eliminate redundant re-renders of book cover components (#1685) 2025-07-27 07:02:05 +02:00
Huang Xin ffa193d116 fix: importing books from url and set downloaded timestamp for reimported books (#1684) 2025-07-26 14:34:51 +02:00
Huang Xin 686f8988bc api: use node api endpoint for iap verifying (#1683) 2025-07-26 13:34:36 +02:00
Huang Xin 8d5c98004b api: ensure proper string decoded on edge runtimes (#1680) 2025-07-25 21:13:01 +02:00
Huang Xin 214411919f iap: use sandbox environment for testflight (#1679) 2025-07-25 19:49:53 +02:00
Huang Xin 42c2825e90 feat: enable IAP for upgrading to Readest Premium on iOS (#1678) 2025-07-25 19:08:53 +02:00
Huang Xin 8974a87168 feat: add IAP server api (#1676) 2025-07-25 14:44:56 +02:00
Huang Xin f3e9983742 feat: add IAP in native bridge plugin for iOS (#1673) 2025-07-24 14:54:17 +02:00
初五 beaf034035 docs: fix outdated repository links and spelling error (#1669)
* docs: update outdated repository links in CONTRIBUTING.md

- Update issue tracker link from chrox/readest to readest/readest    
- Update new issue link from chrox/readest to readest/readest

* fix: correct spelling of "quota" in release notes

- Fix typo "quata" -> "quota" in 0.9.30 release notes
2025-07-23 20:00:55 +02:00
Huang Xin a5f18ab024 release: version 0.9.67 (#1664) 2025-07-22 16:11:00 +02:00
Huang Xin d1f5934947 library: various fixes on metadata editor and bookshelf (#1663)
* i18n: update translations

* library: various fixes on metadata editor and bookshelf

* chore: enable parallel web builds checking
2025-07-22 16:04:44 +02:00
Huang Xin f03d6f6861 feat: search in book format, group names and descriptions (#1662) 2025-07-22 11:40:14 +02:00
Huang Xin 20523b7eaf PDF: Support custom background theming for PDF files, closes #1649 (#1661) 2025-07-22 11:34:38 +02:00
Huang Xin f31c9b2a98 layout: fix hardcoded image layout in fixed layout documents (#1660) 2025-07-22 10:40:21 +02:00
Huang Xin 93071e727f linux: fixed multiple instances created in OAuth, closes #1654 (#1659) 2025-07-22 09:00:19 +02:00
Huang Xin 2d12210606 css: multiply img color in light mode when overriding book color (#1656)
This fixed image color issue for EPUBs in #1649.
2025-07-21 18:17:16 +02:00
Huang Xin 88ccc528d4 layout: hover header to show traffic light window control on macOS, closes #1645 (#1653) 2025-07-21 17:16:58 +02:00
Yurii Kostyukov 9d3fc07865 feat: Added Yandex Translator (#1652) 2025-07-21 17:13:13 +02:00
Huang Xin 6d465a40fb fix: don't use comma as separator when parsing filenames, closes #1622 (#1650) 2025-07-21 15:32:10 +02:00
Huang Xin 01c7e4c2e2 chore: fixed failed AppImage builds for Linux 2025-07-21 20:39:57 +08:00
Huang Xin 4005858242 release: version 0.9.66 (#1643) 2025-07-20 23:12:40 +02:00
Huang Xin c24f951375 fix: set xdg-mime with mime type other than scheme, closes #1621 (#1641) 2025-07-21 05:02:22 +08:00
Huang Xin dbe1efd1e9 tts: convert iso6392 language code to iso6391 to filter tts voices, closes #1627 (#1639) 2025-07-20 22:10:14 +02:00
Huang Xin 0299cce343 library: fix book not redownloaded for the redownload button in detail modal, closes #1628 (#1638) 2025-07-20 21:00:29 +02:00
Huang Xin ca9f504329 layout: fix layout for auth and user page (#1637) 2025-07-20 20:05:55 +02:00
Huang Xin df3527ceca fix: chaining file open with OS opening the highest precedence, closes #1622 (#1636) 2025-07-20 17:09:19 +02:00
Huang Xin 73d0838291 doc: run a preview build to identify compatibility issues between OpenNext, Next.js, and Supabase (#1635) 2025-07-20 11:32:00 +02:00
Huang Xin 8e3574509e chore: downgrade next.js to 15.3 (#1634)
Until https://github.com/opennextjs/opennextjs-cloudflare/issues/667 is fixed.
2025-07-20 11:12:06 +02:00
Huang Xin 9bdf375304 api: fix cors for api with new nextjs version (#1633) 2025-07-20 10:24:28 +02:00
Huang Xin effa922597 chore: bump tauri, next and zustand to latest versions (#1631) 2025-07-20 09:42:32 +02:00
Huang Xin fe484257a0 doc: add deepwiki badge and link (#1630) 2025-07-20 07:02:14 +02:00
Huang Xin cc0cd9a114 layout: fix nested toc items not expanded in very long toc list, closes #1625 (#1629) 2025-07-20 06:42:31 +02:00
Huang Xin 916d63806e chore: fix loading chunk error of optional chaining for Android WebView below 80 (#1626) 2025-07-19 20:24:30 +02:00
Huang Xin 59d0118067 chore: handle ChunkLoadError by refreshing page (#1619) 2025-07-19 06:37:13 +02:00
Huang Xin 957c6b9f32 fix: update book cover image from metadata in sidebar (#1615) 2025-07-18 19:11:02 +02:00
Huang Xin 9c5a1147fa release: version 0.9.65 (#1614) 2025-07-18 18:31:38 +02:00
Huang Xin 60ad6706ff ios: skip context menu when long-press on book cover, closes #1612 (#1613) 2025-07-18 18:22:59 +02:00
Huang Xin d9199d1182 sync: also sync book metadata (#1611) 2025-07-18 17:59:05 +02:00
Huang Xin 219edb9faf translation: fix translation not working for table of contents (#1610) 2025-07-18 11:54:26 +02:00
Huang Xin 30a0227ef3 layout: unset text indent inside of list elements (#1609) 2025-07-18 11:26:28 +02:00
Huang Xin 29b5a7cb88 tts: skip text to speech for rubys and footnote anchors, closes #1334 (#1608) 2025-07-18 11:10:12 +02:00
Huang Xin abb727870e tts: handle invalid language code and show no voices hints, closes #1579 (#1607) 2025-07-18 09:27:51 +02:00
Dave Vasilevsky af84a8b110 chore: match dev-web command to docs (#1606) 2025-07-18 06:50:41 +02:00
Huang Xin 0dea5d3094 layout: maintain the layout of anchor elements while increasing their tap target size, closes #1603 (#1605) 2025-07-18 06:26:54 +02:00
Huang Xin 527b95521e fix: replace fallback book cover with new cover image (#1604) 2025-07-18 06:03:22 +02:00
Huang Xin 396b23ddb4 css: named container classes for easier css customization, closes #1598 (#1600) 2025-07-17 20:17:51 +02:00
Huang Xin ee0d1549bd layout: add window borders on Linux, closes #1570 (#1599) 2025-07-18 01:40:12 +08:00
Huang Xin 6da6b85530 feat: support multiple reader windows on desktop, closes #259 (#1596) 2025-07-17 10:21:37 +02:00
StepanSad cde055dcb7 Update translation.json (#1595) 2025-07-17 05:03:39 +02:00
Huang Xin 08957ce3d7 release: version 0.9.64 (#1589) 2025-07-15 19:40:03 +02:00
Huang Xin 33515f1f09 fix: save custom cover images in apps (#1588) 2025-07-15 19:33:13 +02:00
Huang Xin e3c411f043 feat: support to edit book metadata, closes #753 (#1583) 2025-07-14 19:46:57 +02:00
StepanSad eda71725da Update translation.json (#1581) 2025-07-14 20:09:46 +08:00
StepanSad f19f45c00e Fixed bad Ukrainian translation. (#1576) 2025-07-12 18:01:41 +02:00
Huang Xin 6fb7897092 chore: flatpak with custom oauth (#1574) 2025-07-11 11:28:43 +08:00
Huang Xin 2de941d7fb doc: add appdata metainfo for Flathub (#1569) 2025-07-10 14:10:40 +02:00
Huang Xin 3e4b7ebb13 css: remove unintended indent for images, closes #1567 (#1568)
* chore: target Android SDK to version 36

* css: remove unintended indent for images, closes #1567
2025-07-10 12:05:07 +02:00
Huang Xin 2b52f82b57 fix: bookmark ribbon is now placed correctly when sidebar is pinned (#1565) 2025-07-09 18:23:55 +02:00
Huang Xin 9fb7e80757 fix: pull down to refresh is now more smoother and responsive (#1564) 2025-07-09 18:01:33 +02:00
Huang Xin 38869ce438 search: more responsive full-text search, closes #1558 (#1562) 2025-07-09 12:36:22 +02:00
Huang Xin 1dbf93c1cf css: lighten the highlight color in dark mode, closes #1489 (#1561) 2025-07-09 10:41:40 +02:00
Huang Xin aafcab8232 layout: fix dimension of inline images, closes #1555 (#1560) 2025-07-09 09:52:51 +02:00
Huang Xin bcfe1b8830 fix: invalid href handling in EPUB (#1557) 2025-07-09 04:57:21 +02:00
Huang Xin 5db1847f7e layout: add window border on Windows 10, closes #1551 (#1556) 2025-07-08 17:24:43 +02:00
Huang Xin 165ca4a6e9 chore: add fastlane action to release to Google Play (#1554) 2025-07-08 16:18:53 +02:00
Huang Xin 9556e1305f updater: show update notes for new releases (#1552) 2025-07-08 12:13:47 +02:00
Huang Xin f5b686abd9 release: version 0.9.63 (#1550) 2025-07-07 15:07:35 +02:00
Huang Xin 74e1b733a9 layout: dismiss system context menu popup when selecting text on iPad, closes #1485 (#1549) 2025-07-07 14:57:04 +02:00
Huang Xin a9e0090275 i18n: add Thai (th-TH) translations (#1548) 2025-07-07 11:21:41 +02:00
Huang Xin 68d57da9ca perf: speed up opening for large MOBI books, closes #1544 (#1547) 2025-07-07 10:15:54 +02:00
Bhscer 3cef529ebd feat: support deleting only the cloud backup of a book (#1546)
* feat: support delete the cloud storage of a book

* feat: merge to delete function

* fix: change a logic
2025-07-07 09:37:11 +02:00
Huang Xin 85ac399e2c tts: fix some direct text being skipped in tts, closes #1515 (#1543) 2025-07-06 12:13:40 +02:00
Huang Xin e8d09773a2 fix: handling toc links for some mobi books, closes #1525 (#1542) 2025-07-06 08:49:47 +02:00
Huang Xin 23905407ca doc: layout for the download badges (#1541) 2025-07-06 05:42:29 +02:00
Huang Xin 2ab1304b6d doc: update Readme for mobile apps downloads (#1540) 2025-07-06 05:20:30 +02:00
Huang Xin d94236e127 layout: fix grid cover image height in crop mode (#1537)
Support setting arbitrary columns with custom UI css:
```
.bookshelf-items {
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
}
```
2025-07-05 17:29:33 +02:00
Huang Xin 630025c123 chore: update Android target sdk to 35 (#1534) 2025-07-05 08:49:41 +02:00
Huang Xin 2b73c5a85a perf: lazy loading fonts in fonts list (#1533) 2025-07-05 07:32:22 +02:00
Huang Xin a03f2c585f layout: fix overlay scrollbar with virtualized list, closes #1524 (#1530) 2025-07-04 19:36:13 +02:00
Huang Xin 8a0216dcf8 fix: links in mobi are now properly followed, closes #1503 (#1528) 2025-07-04 07:47:27 +02:00
Huang Xin 59013be586 settings: remove unsupported screen orientation lock on iPad, closes #1520 (#1522) 2025-07-03 13:41:42 +02:00
Huang Xin c6a638dbfd compat: footnote img size, closes #1518 (#1519) 2025-07-02 18:55:09 +02:00
Huang Xin e54440ad80 chore: retry workflow for r2 uploading (#1517) 2025-07-02 17:37:05 +02:00
Huang Xin 446b014f7d chore: upload to r2 after release with retry (#1516) 2025-07-02 17:23:12 +02:00
Huang Xin 9190433ea1 subscription: fix action button in plan card (#1514) 2025-07-02 16:48:32 +02:00
Huang Xin d78d135600 release: version 0.9.62 (#1513) 2025-07-02 15:02:20 +02:00
Huang Xin 04b6c89e58 layout: refine user profile page (#1512) 2025-07-02 13:50:22 +02:00
Huang Xin 8eefba2bee feat: add an option to show/hide original text in translation, also closes #1492 (#1511) 2025-07-02 07:27:05 +02:00
Huang Xin a254139200 layout: extend drag area outward so the scrollbar remains clickable (#1509) 2025-07-01 09:55:09 +02:00
Huang Xin 0514bed5b7 css: fix for legacy epub image dimension, closes #1507 (#1508) 2025-07-01 09:46:27 +02:00
Huang Xin 49978c5e3f layout: add overlay scrollbar for TOC on Android (#1506) 2025-07-01 09:17:18 +02:00
Huang Xin b959bf070c feat: add upgrade to premium option in settings menu (#1505) 2025-07-01 09:15:25 +02:00
Huang Xin 49e6877810 feat: add option to toggle Parallel Reading on/off when viewing multiple books, closes #1496 (#1504) 2025-06-30 19:06:59 +02:00
Huang Xin bb759597e9 shortcuts: add ESC to dismiss search bar, closes #1495 (#1502) 2025-06-30 16:13:43 +02:00
Huang Xin bf0bb80009 api: fix for supabase RLS (#1501) 2025-06-30 15:08:53 +02:00
Huang Xin 5d61a9808f feat: add subscription management for tauri platforms (#1499) 2025-06-30 10:04:57 +02:00
Huang Xin bc36da6b25 feat: add subscription management for web (#1494) 2025-06-29 18:33:36 +02:00
Huang Xin 280cb75ca4 api: cors in middleware (#1493) 2025-06-29 17:00:52 +02:00
Huang Xin d5d0a9abd3 api: add subscription API (#1491) 2025-06-29 14:38:04 +02:00
Huang Xin 9f343992b2 settings: add three new CJK fonts (#1484) 2025-06-27 12:31:01 +02:00
Huang Xin 7ab7058dba refactor: fix fallback cover image for fitted mode (#1483) 2025-06-27 10:28:38 +02:00
Huang Xin c3113ade13 chore: fix uninlined format args warning (#1482) 2025-06-27 10:27:21 +02:00
Huang Xin 7737c05c8f layout: apply custom css also to the library page, tweaks on fitted cover images (#1481) 2025-06-27 10:01:17 +02:00
Huang Xin 4fde9955b2 release: version 0.9.61 (#1479) 2025-06-26 11:27:02 +02:00
Huang Xin 3875c8f239 feat: add an option to show remaining pages in chapter (#1478) 2025-06-26 11:19:30 +02:00
Huang Xin 7bd1b03652 fix: get correct filename when importing txt files on iOS (#1477) 2025-06-26 10:21:55 +02:00
Huang Xin 73878c14e3 fix: EPUB covers occasionally fail to display in library view, closes #1029 (#1476) 2025-06-26 10:03:35 +02:00
Huang Xin bc2c3a2c9a feat: add options to reset settings in the config dialog, closes #1111 (#1475) 2025-06-26 09:59:34 +02:00
Huang Xin 460d37c656 chore: update assetlinks and deeplink for Android (#1474) 2025-06-25 14:47:50 +02:00
Huang Xin fff9e3221e chore: use default production supabase and posthog if not customized, closes #1454 (#1473) 2025-06-25 13:46:48 +02:00
Huang Xin f77fa17cbc bump: update tauri to latest dev branch, closes #1468 (#1471) 2025-06-25 05:36:45 +02:00
Huang Xin d4565f7d60 feat: add an option in the view menu to crop or fit book covers of the library page (#1469) 2025-06-25 03:48:08 +02:00
Huang Xin e8b1976f4f doc: adjust the priority of the readest koplugin for Koreader (#1467) 2025-06-24 08:34:31 +02:00
Huang Xin 6b4bb64885 feat: custom css for the reader UI (#1466) 2025-06-24 08:33:49 +02:00
Huang Xin fc0c42f7db android: fix transparent icon background on Android, closes #1462 (#1464) 2025-06-24 06:54:49 +02:00
Huang Xin 41e5f27d4d layout: view menu now has a maximum width, closes #1459 (#1463)
* refactor: auth callback page

* layout: view menu now has a maximum width, closes #1459
2025-06-24 05:44:03 +02:00
Huang Xin a042b4c739 fix: longer timeout to save changes before reloading page (#1461) 2025-06-24 05:01:46 +02:00
Huang Xin a1c1a9f983 chore: bump opennextjs and wrangler to latest versions (#1460) 2025-06-24 03:22:12 +02:00
Huang Xin 423ae77160 doc: add the Support section in README (#1458) 2025-06-23 12:46:08 +02:00
Huang Xin 05c61a4b1a doc: add donation badge and link with crypto payment (#1457) 2025-06-23 11:37:13 +02:00
Huang Xin ce8f06b7fb chore: add sponsor readest link 2025-06-23 05:03:21 +02:00
Huang Xin f815844577 release: version 0.9.60 (#1452) 2025-06-22 11:24:47 +02:00
Huang Xin 7fe4d38c51 fix: allow inline scripts on Tauri platforms (#1451) 2025-06-22 11:22:39 +02:00
Huang Xin 43edcb4e9e android: dismiss the splash screen and change icon background color in task list (#1450)
* layout: various layout fix on iPad

* android: dismiss the splash screen and change icon background color in task list, closes #1424
2025-06-22 09:10:03 +02:00
Huang Xin e259b29afa fix: disable translation when the primary language is not defined, closes #1443 (#1448) 2025-06-22 07:10:22 +02:00
Huang Xin cd5f57a004 layout: ignore system top/bottom safe insets when there is no header or footer, closes #1442 (#1447) 2025-06-22 06:32:23 +02:00
Huang Xin 8c0cdb0e22 layout: tweaks on layout for iPad (#1446) 2025-06-22 05:55:40 +02:00
初五 c0df9f1cb6 doc: correct spelling 'Themeing' to 'Theming' in README (#1444) 2025-06-22 08:19:21 +08:00
Huang Xin cb1ddaeedb fix: smoother orientation change in iOS, closes #1434 (#1441) 2025-06-21 17:11:45 +02:00
Huang Xin 4447dd7b9a css: fix unintended font size adjust in scrolled mode on iOS, closes #1438 (#1440) 2025-06-21 13:25:46 +02:00
Huang Xin dcb7602837 fix: importing books on iOS at first launch is more reliable now (#1439) 2025-06-21 13:17:24 +02:00
Huang Xin 60e48742fe chore: allow download url for installers (#1437) 2025-06-21 11:13:59 +02:00
Huang Xin dd43569778 chore: download releases using cloudflare cdn (#1436) 2025-06-21 10:36:51 +02:00
Huang Xin 8433dd6950 chore: upload release artifacts to a R2 release bucket (#1435) 2025-06-21 16:24:49 +08:00
Huang Xin 379802f580 release: ready for Google Play release, closes #1001 (#1433) 2025-06-20 16:48:53 +02:00
Huang Xin 2dcb5d7c1e sync: add network timeout of sync to 5 sec (#1432)
* sync: add network timeout of sync to 5 sec

* css: minor tweaks on headings and list
2025-06-20 16:45:10 +02:00
Huang Xin 98870d9f3e release: version 0.9.59 (#1429) 2025-06-19 17:10:14 +02:00
Huang Xin 31aeb2289c settings: more reasonable constraints for top and bottom margins (#1428) 2025-06-19 17:01:20 +02:00
Huang Xin 0f66ecbba1 layout: remove unnecessary inset for header on landscape screen in iOS (#1425) 2025-06-19 12:01:42 +02:00
Huang Xin f0d3c9dd4e fix: transform vw/vh to pixels correctly, closes #1420 (#1421)
* i18n: update translations

* fix: transform vw/vh to pixels correctly, closes #1420
2025-06-19 10:53:58 +02:00
Huang Xin 92aae340d9 settings: unset deprecated margin settings (#1419) 2025-06-18 18:56:41 +02:00
Huang Xin 3cf40039ee release: version 0.9.58 (#1418) 2025-06-18 18:23:09 +02:00
Huang Xin 7ed4937d9d settings: add an option to always show status bar (#1417) 2025-06-18 18:15:55 +02:00
Huang Xin b3593c0365 feat: support split-screen mode on iPad, closes #971 (#1416) 2025-06-18 15:54:46 +02:00
Huang Xin 6235202066 layout: fix issue where sidebars couldn’t be dragged to resize on iPad (#1415) 2025-06-18 15:43:51 +02:00
Huang Xin b3d1085ddf fix: now it's possible to have multiple columns in portrait mode, closes #1369 (#1413) 2025-06-18 14:25:32 +02:00
Huang Xin b2a4ddae60 feat: show annotation create time and various other UI fixes (#1412) 2025-06-18 13:17:18 +02:00
Huang Xin 42f50af27b tts: each book view now has its own tts controller (#1411) 2025-06-18 11:37:02 +02:00
Huang Xin 07f74d8858 settings: individually adjust top, bottom, left, and right margins on the reader page (#1410) 2025-06-18 10:55:24 +02:00
Huang Xin 9477789db1 layout: apply responsive safe area insets to the reader page, closes #1067 and closes #1212 (#1408)
This also fixes layout glitches when showing status bar on devices without display cutouts
2025-06-17 03:36:23 +02:00
Huang Xin 8a7d0e1b0d fix: annotation tools now works when TTS is enabled, closes #1403 (#1406) 2025-06-16 08:53:55 +02:00
Huang Xin 261ce95ed1 feat: add keyboard shortcut t to toggle TTS (#1405) 2025-06-16 08:50:10 +02:00
Huang Xin c5a3b44cbf chore: add NEXT_PUBLIC_API_BASE_URL in example env file (#1404) 2025-06-16 06:02:50 +02:00
Huang Xin ed68d25b15 fix: restore full view settings when reopening book (#1400) 2025-06-15 16:07:51 +02:00
Huang Xin f7f8872a13 tts: translation also when TTS is played in the background, closes #1383 (#1399) 2025-06-15 09:07:22 +02:00
Huang Xin be9802a936 release: version 0.9.57 (#1395) 2025-06-14 15:42:08 +02:00
Huang Xin 84328dcfb2 hotfix: resolve compatibility issues with Android Text-to-Speech API (#1394) 2025-06-14 15:39:12 +02:00
Huang Xin 89d48c72b0 release: version 0.9.56 (#1391) 2025-06-13 17:35:38 +02:00
Huang Xin 467e80cd4b fix: various fixes on text selector in TTS mode and normal image height (#1390) 2025-06-13 17:28:21 +02:00
Huang Xin 20955ec294 chore: handle client uncaught exceptions and show error message (#1389) 2025-06-13 15:24:24 +02:00
James Sizeland 3cae183f51 feat: add syntax highlighting (#1386)
* add highlightjs

* add github light and dark theme

* inject style classes

* fix typo

* remove conflicting style overrides

* add highlightjs function and language list

* add language select setting

* add language select input

* add watcher to rerender page on changes to language select

* lockfile update

* rename highlightCode variables

* reorder code languages alphabetically

* copy translation style for highlight selector

* move code highlighting below theme color section

* move highlighting toggle logic into settings component

* add conditional statement to docLoadHandler manageSyntaxHighlighting

* reorder imports

* switch to media query for dark mode

* combine useEffect callbacks for code highlighting

* add feature line about code highlighting

* fix table tabbing
2025-06-13 14:40:18 +02:00
Huang Xin 99319ab4d1 fix: TTS now properly loads the next chapter in the background, closes #1382 (#1388) 2025-06-13 13:54:17 +02:00
Huang Xin 658969e97a feat: support native tts engine on Android (#1387) 2025-06-12 17:56:14 +02:00
James Sizeland 28c6c1ec58 css: add more aggressive overrides for background and text colour (#1384)
* add more aggressive overrides for background and text colour

* reduce styles changes
2025-06-12 14:24:50 +02:00
James Sizeland d8cc220c18 chore: add vscode settings to include inlayhints (#1385) 2025-06-12 14:22:49 +02:00
Huang Xin 97d7eb659c bump: sync with upstream foliate-js (#1381) 2025-06-11 05:11:06 +02:00
Ahmed 9766ec0125 i18n: improve some Arabic strings in translation.json (#1380) 2025-06-11 03:05:49 +02:00
Huang Xin e46d01448b css: handle inline image height (#1379) 2025-06-10 08:43:00 +02:00
Huang Xin bb8bf99b40 Also transform CSS for azw3 files (#1378) 2025-06-10 06:39:15 +02:00
Huang Xin f8ac30adf1 tts: add native tts plugin for Android (#1376) 2025-06-09 16:54:12 +02:00
Huang Xin 69d418aa61 perf: optimize toc list view for very large toc list, closes #386 (#1370) 2025-06-08 15:01:34 +02:00
Huang Xin 95af3bd3d1 release: version 0.9.55 (#1366)
* release: version 0.9.55

* layout: fix drag handler for multiple dialog instances
2025-06-07 07:55:36 +02:00
Huang Xin 5bdc29fe84 perf: optimize by removing unnecessary animations on Android, closes #1360 (#1365) 2025-06-07 06:53:53 +02:00
Huang Xin 56f4b275f4 translator: toast for Daily Quota Exceeded error (#1363) 2025-06-06 16:24:14 +02:00
Huang Xin 00b46dd8bb bump: upgrade next.js to latest version (#1362) 2025-06-06 15:40:33 +02:00
Huang Xin 8ce89ca8f6 bump: upgrade supabase.js to latest version (#1361) 2025-06-06 14:37:29 +02:00
Huang Xin 648d9ec260 css: unset justify text align when overriding layout, closes #1338 (#1358) 2025-06-06 12:08:53 +02:00
Huang Xin ebe1c10c84 sync: also update deleted notes in synchronization, closes #1356 (#1357) 2025-06-06 11:47:26 +02:00
Huang Xin f2309ef496 release: version 0.9.53 (#1351) 2025-06-05 17:42:22 +02:00
Huang Xin 8d71593f39 fix: exit select mode when all books are deleted, closes #1347 (#1350) 2025-06-05 17:26:55 +02:00
Huang Xin 09e3c30a2a feat: add daily translation quota of DeepL API for more sustainable service (#1349) 2025-06-05 16:58:07 +02:00
Huang Xin eee4cbeaca fix: avoid additional click after books is downloaded before opening (#1346) 2025-06-05 11:43:46 +02:00
Huang Xin 00deca5029 bump: upgrade opennext and wrangler to latest versions (#1345) 2025-06-05 10:46:52 +02:00
Huang Xin c7c20fec55 epub: last resort to get the first image in manifest as book cover (#1343) 2025-06-05 08:40:48 +02:00
Huang Xin 57e22dc7b6 layout: use system select widget for language selection, closes #1339 (#1342) 2025-06-05 08:19:24 +02:00
Huang Xin debd60fb70 css: inline image only as direct children of p and span, closes #1340 (#1341) 2025-06-05 07:47:56 +02:00
Huang Xin dfa17c1c0b css: auto height for single images in anchor (#1337) 2025-06-04 20:08:16 +02:00
Huang Xin 2a26f8b04a fix: trigger library update for the books counter after importing books (#1336) 2025-06-04 19:02:49 +02:00
Huang Xin db955d2c8c feat: add an option to override book fg/bg color, closes #1328 (#1335) 2025-06-04 18:58:53 +02:00
Huang Xin 51602a77fb tts: disable media session controls to keep alive tts (#1333) 2025-06-04 08:17:33 +02:00
Huang Xin 48da5ab546 fix: update current bookshelf after importing and deleting books (#1331) 2025-06-03 19:33:23 +02:00
Huang Xin 363b98dd3b release: version 0.9.52 (#1327) 2025-06-03 15:49:04 +02:00
Huang Xin 43532a0ee8 feat: add an option to show remaining in minutes of the current chapter, closes #406 (#1326) 2025-06-03 15:37:55 +02:00
Huang Xin 03b2af1f97 chore: bump pdf.js to latest release of version 4 (#1325) 2025-06-03 13:22:52 +02:00
Huang Xin 3f8d03ae28 sync: add sync status menu item in view menu, closes #844 (#1324) 2025-06-03 11:43:58 +02:00
Huang Xin 146a71fdef font: load CJK fonts only in CJK env or the book has CJK languages, closes #1298 (#1323) 2025-06-03 08:55:40 +02:00
Huang Xin 734e22d92c layout: notebook layout tweaks (#1319) 2025-06-02 17:27:02 +02:00
Huang Xin a77986c0e6 feat: add search functionality to the notebook (#1318) 2025-06-02 16:03:55 +02:00
Huang Xin 4e7f9c49b0 layout: render book description as html in book details, closes #1316 (#1317) 2025-06-02 14:25:51 +02:00
Huang Xin c51c95b883 feat: support note taking with markdown, closes #1097 (#1315) 2025-06-02 11:35:09 +02:00
Huang Xin 62081bebfd fix: update current bookshelf items when library is updated (#1314) 2025-06-02 09:57:11 +02:00
Huang Xin 15394d17d8 feat: show current books count in search bar, closes #1310 (#1312) 2025-06-02 09:31:35 +02:00
Huang Xin 5d1deadc1e fix: defers rendering all component until after hydration for Tauri platforms, closes #1301 (#1311) 2025-06-02 08:25:08 +02:00
Huang Xin b497ddacac css: add margin for div only when overriding layout, closes #1286 (#1309) 2025-06-02 07:59:58 +02:00
Huang Xin a9965fd52c config: add an option to sort TOC by page number, closes #1304 (#1308) 2025-06-02 07:23:59 +02:00
Huang Xin 87d610bb62 revert: some browsers may report wrong pixel density, closes #1305 (#1306)
This reverts commit 6e0cc38aa7ca726e251c16e453922fcd637cee49.
2025-06-02 06:19:13 +02:00
Huang Xin dbc4651141 chore: parse webkit version on linux (#1299) 2025-06-01 04:57:53 +02:00
Huang Xin dad2dfd078 i18n: update translations (#1297) 2025-05-31 18:58:43 +02:00
592 changed files with 73548 additions and 11991 deletions
+15
View File
@@ -0,0 +1,15 @@
# These are supported funding model platforms
github: ['readest']
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
polar: # Replace with a single Polar username
buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
thanks_dev: # Replace with a single thanks.dev username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
+39 -7
View File
@@ -11,7 +11,7 @@ jobs:
env:
RUSTFLAGS: '-C target-cpu=skylake'
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
submodules: 'true'
- name: Install minimal stable with clippy and rustfmt
@@ -19,6 +19,7 @@ jobs:
with:
toolchain: stable
override: true
components: rustfmt, clippy
- name: Install system dependencies
run: |
sudo apt-get update
@@ -32,28 +33,59 @@ jobs:
build_web_app:
runs-on: ubuntu-latest
strategy:
matrix:
config:
- platform: 'web'
- platform: 'tauri'
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
submodules: 'true'
- name: setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9.15.1
version: 10.14.0
- name: setup node
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 22
cache: pnpm
- name: cache Next.js build
uses: actions/cache@v5
with:
path: apps/readest-app/.next/cache
key: nextjs-${{ matrix.config.platform }}-${{ github.sha }}-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
nextjs-${{ matrix.config.platform }}-${{ github.sha }}-
nextjs-${{ matrix.config.platform }}-
- name: install Dependencies
working-directory: apps/readest-app
run: |
pnpm install && pnpm setup-pdfjs
pnpm install && pnpm setup-vendors
- name: build the web App
- name: run tests
working-directory: apps/readest-app
run: |
pnpm build-web
pnpm test -- --watch=false
- name: run lint
working-directory: apps/readest-app
run: |
pnpm lint
- name: build the web App
if: matrix.config.platform == 'web'
working-directory: apps/readest-app
run: |
pnpm build-web && pnpm check:all
- name: build the Tauri App
if: matrix.config.platform == 'tauri'
working-directory: apps/readest-app
run: |
pnpm build && pnpm check:all
+83 -44
View File
@@ -17,14 +17,14 @@ jobs:
release_version: ${{ steps.get-release-notes.outputs.release_version }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- name: setup node
uses: actions/setup-node@v4
uses: actions/setup-node@v6
- name: get version
run: echo "PACKAGE_VERSION=$(node -p "require('./apps/readest-app/package.json').version")" >> $GITHUB_ENV
- name: get release
id: get-release
uses: actions/github-script@v7
uses: actions/github-script@v8
with:
script: |
const { data } = await github.rest.repos.getLatestRelease({
@@ -35,7 +35,7 @@ jobs:
core.setOutput('release_tag', data.tag_name);
- name: get release notes
id: get-release-notes
uses: actions/github-script@v7
uses: actions/github-script@v8
with:
script: |
const fs = require('fs');
@@ -48,6 +48,63 @@ jobs:
core.setOutput('release_version', version);
core.setOutput('release_note', releaseNote);
update-release:
permissions:
contents: write
runs-on: ubuntu-latest
needs: get-release
steps:
- name: update release
id: update-release
uses: actions/github-script@v8
env:
release_id: ${{ needs.get-release.outputs.release_id }}
release_tag: ${{ needs.get-release.outputs.release_tag }}
release_note: ${{ needs.get-release.outputs.release_note }}
with:
script: |
const { data } = await github.rest.repos.generateReleaseNotes({
owner: context.repo.owner,
repo: context.repo.repo,
tag_name: process.env.release_tag,
})
const notes = process.env.release_note.split(/\d+\.\s/).filter(Boolean);
const formattedNotes = notes.map(note => `* ${note.trim()}`).join("\n");
const body = `## Release Highlight\n${formattedNotes}\n\n${data.body}`;
github.rest.repos.updateRelease({
owner: context.repo.owner,
repo: context.repo.repo,
release_id: process.env.release_id,
body: body,
draft: false,
prerelease: false
})
build-koreader-plugin:
needs: get-release
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: create KOReader plugin zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
version=${{ needs.get-release.outputs.release_version }}
plugin_zip="Readest-${version}-1.koplugin.zip"
meta_file="apps/readest.koplugin/_meta.lua"
perl -i -pe "s/^}/ version = \"${version}\",\n}/" "${meta_file}"
cd apps
zip -r ../${plugin_zip} readest.koplugin
cd ..
echo "Uploading ${plugin_zip} to GitHub release"
gh release upload ${{ needs.get-release.outputs.release_tag }} ${plugin_zip} --clobber
build-tauri:
needs: get-release
permissions:
@@ -91,7 +148,7 @@ jobs:
runs-on: ${{ matrix.config.os }}
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- name: initialize git submodules
run: git submodule update --init --recursive
@@ -99,17 +156,17 @@ jobs:
- name: setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9.14.4
version: 10.14.0
- name: setup node
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 22
cache: pnpm
- name: setup Java (for Android build only)
if: matrix.config.release == 'android'
uses: actions/setup-java@v4
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: '17'
@@ -120,13 +177,13 @@ jobs:
- name: install NDK (for Android build only)
if: matrix.config.release == 'android'
run: sdkmanager "ndk;27.0.11902837"
run: sdkmanager "ndk;28.2.13676358"
- name: install dependencies
run: pnpm install
- name: copy pdfjs-dist to public directory
run: pnpm --filter @readest/readest-app setup-pdfjs
- name: copy pdfjs-dist and simplecc-dist to public directory
run: pnpm --filter @readest/readest-app setup-vendors
- name: install Rust stable
uses: dtolnay/rust-toolchain@stable
@@ -167,7 +224,7 @@ jobs:
if: matrix.config.release == 'android'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NDK_HOME: ${{ env.ANDROID_HOME }}/ndk/27.0.11902837
NDK_HOME: ${{ env.ANDROID_HOME }}/ndk/28.2.13676358
TAURI_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
run: |
@@ -255,12 +312,20 @@ jobs:
echo "Uploading release notes to GitHub release"
gh release upload ${{ needs.get-release.outputs.release_tag }} apps/readest-app/release-notes.json --clobber
- name: upload portable binaries (Windows only)
- name: build and upload portable binaries (Windows only)
if: matrix.config.os == 'windows-latest'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}
shell: bash
run: |
echo "Building Portable Binaries"
pushd apps/readest-app/
echo "NEXT_PUBLIC_PORTABLE_APP=true" >> .env.local
pnpm tauri build ${{ matrix.config.args }}
popd
echo "Uploading Portable Binaries"
arch=${{ matrix.config.arch }}
version=${{ needs.get-release.outputs.release_version }}
@@ -283,35 +348,9 @@ jobs:
echo "Uploading $bin_file to GitHub release"
gh release upload ${{ needs.get-release.outputs.release_tag }} $bin_file --clobber
update-release:
permissions:
contents: write
runs-on: ubuntu-latest
upload-to-r2:
needs: [get-release, build-tauri]
steps:
- name: update release
id: update-release
uses: actions/github-script@v7
env:
release_id: ${{ needs.get-release.outputs.release_id }}
release_tag: ${{ needs.get-release.outputs.release_tag }}
release_note: ${{ needs.get-release.outputs.release_note }}
with:
script: |
const { data } = await github.rest.repos.generateReleaseNotes({
owner: context.repo.owner,
repo: context.repo.repo,
tag_name: process.env.release_tag,
})
const notes = process.env.release_note.split(/(?:\d\.\s)/).filter(Boolean);
const formattedNotes = notes.map(note => `* ${note.trim()}`).join("\n");
const body = `## Release Highlight\n${formattedNotes}\n\n${data.body}`;
github.rest.repos.updateRelease({
owner: context.repo.owner,
repo: context.repo.repo,
release_id: process.env.release_id,
body: body,
draft: false,
prerelease: false
})
uses: ./.github/workflows/upload-to-r2.yml
with:
tag: ${{ needs.get-release.outputs.release_tag }}
secrets: inherit
+18
View File
@@ -0,0 +1,18 @@
name: Retry workflow
on:
workflow_dispatch:
inputs:
run_id:
required: true
jobs:
rerun:
runs-on: ubuntu-latest
steps:
- name: rerun ${{ inputs.run_id }}
env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ github.token }}
run: |
gh run watch ${{ inputs.run_id }} > /dev/null 2>&1
gh run rerun ${{ inputs.run_id }} --failed
+77
View File
@@ -0,0 +1,77 @@
name: Upload Release Assets to R2
on:
workflow_call:
inputs:
tag:
required: true
type: string
workflow_dispatch:
inputs:
tag:
description: 'Release tag name (e.g., v1.2.3)'
required: true
type: string
jobs:
upload-to-r2:
runs-on: ubuntu-latest
timeout-minutes: 3
strategy:
fail-fast: false
env:
RELEASE_R2_BUCKET: readest-releases
RELEASE_R2_ACCOUNT_ID: ${{ secrets.RELEASE_R2_ACCOUNT_ID }}
RELEASE_R2_ACCESS_KEY_ID: ${{ secrets.RELEASE_R2_ACCESS_KEY_ID }}
RELEASE_R2_SECRET_ACCESS_KEY: ${{ secrets.RELEASE_R2_SECRET_ACCESS_KEY }}
steps:
- name: Download release assets
run: |
gh release download "${{ inputs.tag }}" --repo readest/readest --dir ./release-assets
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Install rclone
run: curl https://rclone.org/install.sh | sudo bash
- name: Configure rclone
run: |
mkdir -p ~/.config/rclone
cat > ~/.config/rclone/rclone.conf <<EOF
[r2]
type = s3
provider = Cloudflare
access_key_id = $RELEASE_R2_ACCESS_KEY_ID
secret_access_key = $RELEASE_R2_SECRET_ACCESS_KEY
endpoint = https://${RELEASE_R2_ACCOUNT_ID}.r2.cloudflarestorage.com
EOF
- name: Modify latest.json download URLs
run: |
GITHUB_BASE_URL="https://github.com/readest/readest/releases/download"
READEST_BASE_URL="https://download.readest.com/releases"
sed -i "s#${GITHUB_BASE_URL}#${READEST_BASE_URL}#g" ./release-assets/latest.json
- name: Upload to R2
run: |
mkdir releases
mv ./release-assets/latest.json releases
mv ./release-assets/release-notes.json releases
rclone copy ./release-assets r2:${RELEASE_R2_BUCKET}/releases/${{ inputs.tag }}/
rclone copy ./releases r2:${RELEASE_R2_BUCKET}/releases/
- name: Upload successful
if: success()
run: echo "Upload completed successfully"
retry-on-failure:
if: failure() && fromJSON(github.run_attempt) < 3
needs: [upload-to-r2]
runs-on: ubuntu-latest
steps:
- env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ github.token }}
run: gh workflow run retry-workflow.yml -F run_id=${{ github.run_id }}
+1 -1
View File
@@ -11,7 +11,7 @@ jobs:
build_and_deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
submodules: 'true'
- uses: amondnet/vercel-action@v25
+7
View File
@@ -38,3 +38,10 @@ next-env.d.ts
# Rust build
target
fastlane/report.xml
*.koplugin.zip
# nix
result*
+6
View File
@@ -4,3 +4,9 @@
[submodule "packages/tauri"]
path = packages/tauri
url = https://github.com/readest/tauri.git
[submodule "packages/tauri-plugins"]
path = packages/tauri-plugins
url = https://github.com/readest/tauri-plugins-workspace.git
[submodule "packages/simplecc-wasm"]
path = packages/simplecc-wasm
url = https://github.com/readest/simplecc-wasm.git
+1
View File
@@ -5,5 +5,6 @@
"tabWidth": 2,
"singleQuote": true,
"jsxSingleQuote": true,
"endOfLine": "lf",
"plugins": ["prettier-plugin-tailwindcss"]
}
+8
View File
@@ -0,0 +1,8 @@
{
"recommendations": [
"ms-vscode.vscode-typescript-next",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"rust-lang.rust-analyzer"
]
}
+9
View File
@@ -4,4 +4,13 @@
"packages/tauri/Cargo.toml",
"apps/readest-app/src-tauri/Cargo.toml"
],
// "editor.formatOnSave": true, // uncomment to add format on save
"typescript.inlayHints.parameterNames.enabled": "all",
"typescript.inlayHints.variableTypes.enabled": true,
"typescript.inlayHints.propertyDeclarationTypes.enabled": true,
"typescript.inlayHints.functionLikeReturnTypes.enabled": true,
"typescript.inlayHints.enumMemberValues.enabled": true,
"javascript.validate.enable": false,
"javascript.format.enable": false,
"typescript.format.enable": false,
}
+2 -2
View File
@@ -3,14 +3,14 @@
When contributing to `Readest`, whether on GitHub or in other community spaces:
- Be respectful, civil, and open-minded.
- Before opening a new pull request, try searching through the [issue tracker](https://github.com/chrox/readest/issues) for known issues or fixes.
- Before opening a new pull request, try searching through the [issue tracker](https://github.com/readest/readest/issues) for known issues or fixes.
- If you want to make code changes based on your personal opinion(s), make sure you open an issue first describing the changes you want to make, and open a pull request only when your suggestions get approved by maintainers.
## How to Contribute
### Prerequisites
In order to not waste your time implementing a change that has already been declined, or is generally not needed, start by [opening an issue](https://github.com/chrox/readest/issues/new/choose) describing the problem you would like to solve.
In order to not waste your time implementing a change that has already been declined, or is generally not needed, start by [opening an issue](https://github.com/readest/readest/issues/new/choose) describing the problem you would like to solve.
For the best experience to build Readest for yourself, use a recent version of Node.js and Rust. Refer to the [Tauri documentation](https://v2.tauri.app/start/prerequisites/) for details on setting up the development environment prerequisites on different platforms.
Generated
+1511 -1317
View File
File diff suppressed because it is too large Load Diff
+20 -1
View File
@@ -2,9 +2,26 @@
members = [
"apps/readest-app/src-tauri",
"packages/tauri/crates/tauri",
"packages/tauri/crates/tauri-utils",
"packages/tauri/crates/tauri-build",
]
resolver = "2"
[workspace.dependencies]
serde = { version = "1", features = ["derive"] }
tracing = "0.1"
log = "0.4"
tauri = { version = "2", default-features = false }
tauri-build = "2"
tauri-plugin = "2"
tauri-utils = "2"
schemars = "0.8"
serde_json = "1"
thiserror = "2"
glob = "0.3"
dunce = "1"
url = "2"
[workspace.package]
authors = ["Bilingify LLC"]
homepage = "https://readest.com"
@@ -15,4 +32,6 @@ edition = "2021"
rust-version = "1.77.2"
[patch.crates-io]
tauri = { path = "packages/tauri/crates/tauri" }
tauri = { path = "packages/tauri/crates/tauri" }
tauri-utils = { path = "packages/tauri/crates/tauri-utils" }
tauri-build = { path = "packages/tauri/crates/tauri-build" }
+79 -38
View File
@@ -5,18 +5,22 @@
<h1>Readest</h1>
<br>
[Readest][link-website] is an open-source ebook reader designed for immersive and deep reading experiences. Built as a modern rewrite of [Foliate](https://github.com/johnfactotum/foliate), it leverages [Next.js 15](https://github.com/vercel/next.js) and [Tauri v2](https://github.com/tauri-apps/tauri) to deliver a smooth, cross-platform experience across macOS, Windows, Linux, Android, iOS, and the Web.
[Readest][link-website] is an open-source ebook reader designed for immersive and deep reading experiences. Built as a modern rewrite of [Foliate](https://github.com/johnfactotum/foliate), it leverages [Next.js 16](https://github.com/vercel/next.js) and [Tauri v2](https://github.com/tauri-apps/tauri) to deliver a smooth, cross-platform experience across macOS, Windows, Linux, Android, iOS, and the Web.
[![Website][badge-website]][link-website]
[![Web App][badge-web-app]][link-web-readest]
[![OS][badge-platforms]][link-website]
<br>
[![][badge-hellogithub]][link-hellogithub]
[![][badge-discord]][link-discord]
[![Discord][badge-discord]][link-discord]
[![Reddit][badge-reddit]][link-reddit]
[![AGPL Licence][badge-license]](LICENSE)
[![Language Coverage][badge-language-coverage]][link-locales]
[![Donate][badge-donate]][link-donate]
[![Latest release][badge-release]][link-gh-releases]
[![Last commit][badge-last-commit]][link-gh-commits]
[![Commits][badge-commit-activity]][link-gh-pulse]
[![][badge-hellogithub]][link-hellogithub]
[![Ask DeepWiki][badge-deepwiki]][link-deepwiki]
</div>
@@ -27,6 +31,7 @@
<a href="#downloads">Downloads</a> •
<a href="#getting-started">Getting Started</a> •
<a href="#troubleshooting">Troubleshooting</a> •
<a href="#support">Support</a> •
<a href="#license">License</a>
</p>
@@ -40,37 +45,38 @@
<div align="left">✅ Implemented</div>
| **Feature** | **Description** | **Status** |
| --------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------- |
| **Multi-Format Support** | Support EPUB, MOBI, KF8 (AZW3), FB2, CBZ, TXT, PDF (experimental) | ✅ |
| **Scroll/Page View Modes** | Switch between scrolling or paginated reading modes. | ✅ |
| **Full-Text Search** | Search across the entire book to find relevant sections. | ✅ |
| **Annotations and Highlighting** | Add highlights, bookmarks, and notes to enhance your reading experience. | ✅ |
| **Excerpt Text for Note-Taking** | Easily excerpt text from books for detailed notes and analysis. | ✅ |
| **Dictionary/Wikipedia Lookup** | Instantly look up words and terms when reading. | ✅ |
| **[Parallel Read][link-parallel-read]** | Read two books or documents simultaneously in a split-screen view. | ✅ |
| **Customize Font and Layout** | Adjust font, layout, theme mode, and theme colors for a personalized experience. | ✅ |
| **File Association and Open With** | Quickly open files in Readest in your file browser with one-click. | ✅ |
| **Sync across Platforms** | Synchronize book files, reading progress, notes, and bookmarks across all supported platforms. | ✅ |
| **Translate with DeepL** | From a single sentence to the entire book—translate instantly with DeepL. | ✅ |
| **Text-to-Speech (TTS) Support** | Enjoy smooth, multilingual narration—even within a single book. | ✅ |
| **Library Management** | Organize, sort, and manage your entire ebook library. | ✅ |
| **Feature** | **Description** | **Status** |
| --------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ---------- |
| **Multi-Format Support** | Support EPUB, MOBI, KF8 (AZW3), FB2, CBZ, TXT, PDF (experimental) | ✅ |
| **Scroll/Page View Modes** | Switch between scrolling or paginated reading modes. | ✅ |
| **Full-Text Search** | Search across the entire book to find relevant sections. | ✅ |
| **Annotations and Highlighting** | Add highlights, bookmarks, and notes to enhance your reading experience. | ✅ |
| **Excerpt Text for Note-Taking** | Easily excerpt text from books for detailed notes and analysis. | ✅ |
| **Dictionary/Wikipedia Lookup** | Instantly look up words and terms when reading. | ✅ |
| **[Parallel Read][link-parallel-read]** | Read two books or documents simultaneously in a split-screen view. | ✅ |
| **Customize Font and Layout** | Adjust font, layout, theme mode, and theme colors for a personalized experience. | ✅ |
| **File Association and Open With** | Quickly open files in Readest in your file browser with one-click. | ✅ |
| **Sync across Platforms** | Synchronize book files, reading progress, notes, and bookmarks across all supported platforms. | ✅ |
| **Accessibility** | Provides full keyboard navigation and supports for screen readers such as VoiceOver, TalkBack, NVDA, and Orca. | ✅ |
| **Translate with DeepL and Yandex** | From a single sentence to the entire book—translate instantly. | ✅ |
| **Text-to-Speech (TTS) Support** | Enjoy smooth, multilingual narration—even within a single book. | ✅ |
| **Library Management** | Organize, sort, and manage your entire ebook library. | ✅ |
| **OPDS/Calibre Integration** | Integrate OPDS/Calibre to access online libraries and catalogs. | ✅ |
| **Code Syntax Highlighting** | Read software manuals with rich coloring of code examples. | ✅ |
## Planned Features
<div align="left">🛠 Building</div>
<div align="left">🔄 Planned</div>
| **Feature** | **Description** | **Priority** |
| ------------------------------- | ------------------------------------------------------------------------------------------ | ------------ |
| **AI-Powered Summarization** | Generate summaries of books or chapters using AI for quick insights. | 🛠 |
| **Sync with Koreader** | Synchronize reading progress, notes, and bookmarks with [Koreader][link-koreader] devices. | 🔄 |
| **Keyboard Navigation** | Implement vimium-style keybindings for book navigation. | 🔄 |
| **Support OPDS/Calibre** | Integrate OPDS/Calibre to access online libraries and catalogs. | 🔄 |
| **Audiobook Support** | Extend functionality to play and manage audiobooks. | 🔄 |
| **Handwriting Annotations** | Add support for handwriting annotations using a pen on compatible devices. | 🔄 |
| **Advanced Reading Stats** | Track reading time, pages read, and more for detailed insights. | 🔄 |
| **In-Library Full-Text Search** | Search across your entire ebook library to find topics and quotes. | 🔄 |
| **Feature** | **Description** | **Priority** |
| ------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------ |
| [**Sync with Koreader**][link-kosync-wiki] | Synchronize reading progress, notes, and bookmarks with [Koreader][link-koreader] devices. | 🛠 |
| **AI-Powered Summarization** | Generate summaries of books or chapters using AI for quick insights. | 🛠 |
| **Audiobook Support** | Extend functionality to play and manage audiobooks. | 🔄 |
| **Handwriting Annotations** | Add support for handwriting annotations using a pen on compatible devices. | 🔄 |
| **Advanced Reading Stats** | Track reading time, pages read, and more for detailed insights. | 🔄 |
| **In-Library Full-Text Search** | Search across your entire ebook library to find topics and quotes. | 🔄 |
Stay tuned for continuous improvements and updates! Contributions and suggestions are always welcome—let's build the ultimate reading experience together. 😊
@@ -86,17 +92,27 @@ Stay tuned for continuous improvements and updates! Contributions and suggestion
![Wikipedia](./data/screenshots/wikipedia_vertical.png)
![Themeing Dark Mode](./data/screenshots/theming_dark_mode.png)
![Theming Dark Mode](./data/screenshots/theming_dark_mode.png)
---
## Downloads
The Readest app is available for download! 🥳 🚀
### Mobile Apps
- macOS / iOS / iPadOS : Search for "Readest" on the [App Store][link-appstore], also available on TestFlight for beta test (send your Apple ID to readestapp@gmail.com to request access).
- Windows / Linux / Android: Visit [https://readest.com][link-website] or the [Releases on GitHub][link-gh-releases].
- Web: Visit [https://web.readest.com][link-web-readest].
<div align="center">
<a href="https://apps.apple.com/app/id6738622779">
<img alt="Download on the App Store" src="https://developer.apple.com/assets/elements/badges/download-on-the-app-store.svg" style="height: 50px;" /></a>&nbsp;&nbsp;&nbsp;&nbsp;
<a href="https://play.google.com/store/apps/details?id=com.bilingify.readest">
<img alt="Get it on Google Play" src="https://upload.wikimedia.org/wikipedia/commons/7/78/Google_Play_Store_badge_EN.svg" style="height: 50px;" /></a>
</div>
### Platform-Specific Downloads
- macOS / iOS / iPadOS : Search and install **Readest** on the [App Store][link-appstore], _also_ available on TestFlight for beta test (send your Apple ID to <readestapp@gmail.com> to request access).
- Windows / Linux / Android: Visit and download **Readest** at [https://readest.com][link-website] or the [Releases on GitHub][link-gh-releases].
- Linux users can also install [Readest on Flathub][link-flathub].
- Web: Visit and use **Readest for Web** at [https://web.readest.com][link-web-readest].
## Requirements
@@ -121,16 +137,16 @@ To get started with Readest, follow these steps to clone and build the project.
```bash
git clone https://github.com/readest/readest.git
cd readest
git submodule update --init --recursive
```
### 2. Install Dependencies
```bash
# might need to rerun this when code is updated
git submodule update --init --recursive
pnpm install
# copy pdfjs-dist to Next.js public directory
pnpm --filter @readest/readest-app setup-pdfjs
# copy vendors dist libs to public directory
pnpm --filter @readest/readest-app setup-vendors
```
### 3. Verify Dependencies Installation
@@ -152,6 +168,8 @@ For Windows targets, “Build Tools for Visual Studio 2022” (or a higher editi
pnpm tauri dev
# or start development for the Web app
pnpm dev-web
# preview with OpenNext build for the Web app
pnpm preview
```
For Android:
@@ -242,6 +260,18 @@ Readest is open-source, and contributions are welcome! Feel free to open issues,
</p>
</a>
## Support
If Readest has been useful to you, consider supporting its development. You can [become a sponsor on GitHub](https://github.com/sponsors/readest) or just [donate with crypto](https://donate.readest.com). Your contribution helps us squash bugs faster, improve performance, and keep building great features.
### Sponsors
<p align="center">
<a title="Browser testing via LambdaTest" href="https://www.lambdatest.com/?utm_source=readest&utm_medium=sponsor" target="_blank">
<img src="https://www.lambdatest.com/blue-logo.png" style="vertical-align: middle;" width="250" />
</a>
</p>
## License
Readest is free software: you can redistribute it and/or modify it under the terms of the [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.html) as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. See the [LICENSE](LICENSE) file for details.
@@ -253,6 +283,7 @@ The following libraries and frameworks are used in this software:
- [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.
- [daisyUI](https://github.com/saadeghi/daisyui), which is MIT licensed.
- [marked](https://github.com/markedjs/marked), which is MIT licensed.
- [next.js](https://github.com/vercel/next.js), which is MIT licensed.
- [react-icons](https://github.com/react-icons/react-icons), which has various open-source licenses.
- [react](https://github.com/facebook/react), which is MIT licensed.
@@ -271,12 +302,18 @@ The following fonts are utilized in this software, either bundled within the app
[badge-license]: https://img.shields.io/github/license/readest/readest?color=teal
[badge-release]: https://img.shields.io/github/release/readest/readest?color=green
[badge-platforms]: https://img.shields.io/badge/platforms-macOS%2C%20Windows%2C%20Linux%2C%20Android%2C%20iOS%2C%20Web%2C%20PWA-green
[badge-last-commit]: https://img.shields.io/github/last-commit/readest/readest?color=green
[badge-commit-activity]: https://img.shields.io/github/commit-activity/m/readest/readest
[badge-last-commit]: https://img.shields.io/github/last-commit/readest/readest?color=blue
[badge-commit-activity]: https://img.shields.io/github/commit-activity/m/readest/readest?color=blue
[badge-discord]: https://img.shields.io/discord/1314226120886976544?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=flat-square
[badge-hellogithub]: https://abroad.hellogithub.com/v1/widgets/recommend.svg?rid=8a5b6ade2aee461a8bd94e59200682a7&claim_uid=eRLUbPOy2qZtDgw&theme=small
[badge-donate]: https://donate.readest.com/badge.svg
[badge-deepwiki]: https://deepwiki.com/badge.svg
[badge-reddit]: https://img.shields.io/reddit/subreddit-subscribers/readest?style=flat&logo=reddit&color=F37E41
[badge-language-coverage]: https://img.shields.io/badge/coverage-53%25%20population%20🌍-green
[link-donate]: https://donate.readest.com/?tickers=btc%2Ceth%2Csol%2Cusdc
[link-appstore]: https://apps.apple.com/app/apple-store/id6738622779?pt=127463130&ct=github&mt=8
[link-website]: https://readest.com?utm_source=github&utm_medium=referral&utm_campaign=readme
[link-flathub]: https://flathub.org/en/apps/com.bilingify.readest
[link-web-readest]: https://web.readest.com
[link-gh-releases]: https://github.com/readest/readest/releases
[link-gh-commits]: https://github.com/readest/readest/commits/main
@@ -286,3 +323,7 @@ The following fonts are utilized in this software, either bundled within the app
[link-parallel-read]: https://readest.com/#parallel-read
[link-koreader]: https://github.com/koreader/koreader
[link-hellogithub]: https://hellogithub.com/repository/8a5b6ade2aee461a8bd94e59200682a7
[link-deepwiki]: https://deepwiki.com/readest/readest
[link-locales]: https://github.com/readest/readest/tree/main/apps/readest-app/public/locales
[link-kosync-wiki]: https://github.com/readest/readest/wiki/Sync-with-Koreader-devices
[link-reddit]: https://reddit.com/r/readest/
+8 -2
View File
@@ -2,5 +2,11 @@ PDFJS_BUILD_PATH=../../packages/foliate-js/node_modules/pdfjs-dist/legacy/build
PDFJS_FONTS_PATH=../../packages/foliate-js/node_modules/pdfjs-dist
PDFJS_STYLE_PATH=../../packages/foliate-js/vendor/pdfjs
NEXT_PUBLIC_DEV_SUPABASE_URL=https://gxkhxxxeapexynpouyjz.supabase.co
NEXT_PUBLIC_DEV_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Imd4a2h4eHhlYXBleHlucG91eWp6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3MzQ0MzAwNTksImV4cCI6MjA1MDAwNjA1OX0.jhinkQsimQoidsg_U59YD5ROw4PmMJQNKuyXbr4TiQA
NEXT_PUBLIC_DEFAULT_POSTHOG_URL_BASE64="aHR0cHM6Ly91cy5pLnBvc3Rob2cuY29t"
NEXT_PUBLIC_DEFAULT_POSTHOG_KEY_BASE64="cGhjX2ViNXowbVRxWm8yZm5YYnZGNmE3bFh5TThpTmRSNTNsR1A3VFM3VGh4S08="
NEXT_PUBLIC_DEFAULT_SUPABASE_URL_BASE64="aHR0cHM6Ly9yZWFkZXN0LnN1cGFiYXNlLmNv"
NEXT_PUBLIC_DEFAULT_SUPABASE_KEY_BASE64="ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SnBjM01pT2lKemRYQmhZbUZ6WlNJc0luSmxaaUk2SW5aaWMzbDRablZ6YW1weFpIaHJhbkZzZVhOaklpd2ljbTlzWlNJNkltRnViMjRpTENKcFlYUWlPakUzTXpReE1qTTJOekVzSW1WNGNDSTZNakEwT1RZNU9UWTNNWDAuM1U1VXFhb3VfMVNnclZlMWVvOXJBcGMwdUtqcWhwUWRVWGh2d1VIbVVmZw=="
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY_DEV_BASE64="cGtfdGVzdF81MVJmQmdLRTdSWW5pTWsxc0tDV2RUd2hMZzcySzk4eDRWcjlIdDdsRFBONngzcnpZYmhydGtNQnpDdzZKbHFaRVVITVp5eVNjVXhCZXVkcGppWTk0WXNHcDAweFlRRnRRaUU="
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY_BASE64="cGtfbGl2ZV81MVFYN3dRRU5ndjJFOUxQRHpZUlE5TlJJeTNjd09EZ1AzSkNFRHRPWlFtdFJWc3Brd053ZE1NNUpIVnVPTmJWcjZ3VGFCMUNZR1pJMmRPVWppTkY0bHJvVjAwalE4TkpkdWk="
+2
View File
@@ -6,6 +6,8 @@ NEXT_PUBLIC_SUPABASE_ANON_KEY=YOUR_SUPABASE_ANON_KEY
NEXT_PUBLIC_STORAGE_FIXED_QUOTA=1073741824
NEXT_PUBLIC_API_BASE_URL=https://your-api-base-url.com
SUPABASE_ADMIN_KEY=YOUR_SUPABASE_ADMIN_KEY
DEEPL_PRO_API_KEYS=YOUR_DEEPL_PRO_API_KEYS
+34 -12
View File
@@ -1,13 +1,35 @@
import path from "node:path";
import { fileURLToPath } from "node:url";
import js from "@eslint/js";
import { FlatCompat } from "@eslint/eslintrc";
import { defineConfig, globalIgnores } from 'eslint/config';
import next from 'eslint-config-next';
import nextVitals from 'eslint-config-next/core-web-vitals';
import tseslint from 'eslint-config-next/typescript';
import jsxA11y from 'eslint-plugin-jsx-a11y';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all
});
export default [...compat.extends("next/core-web-vitals", "next/typescript")];
const eslintConfig = defineConfig([
...tseslint,
...next,
...nextVitals,
{
rules: {
...jsxA11y.configs.recommended.rules,
'@typescript-eslint/no-unused-vars': [
'warn',
{
argsIgnorePattern: '^_',
varsIgnorePattern: '^_',
caughtErrorsIgnorePattern: '^_',
},
],
},
},
globalIgnores([
'node_modules/**',
'.next/**',
'.open-next/**',
'out/**',
'build/**',
'public/**',
'next-env.d.ts',
]),
]);
export default eslintConfig;
+588
View File
@@ -0,0 +1,588 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 4
[[package]]
name = "adler2"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
[[package]]
name = "anyhow"
version = "1.0.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
[[package]]
name = "arbitrary"
version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1"
dependencies = [
"derive_arbitrary",
]
[[package]]
name = "autocfg"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
[[package]]
name = "base64"
version = "0.22.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
[[package]]
name = "bitflags"
version = "2.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
[[package]]
name = "bumpalo"
version = "3.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
[[package]]
name = "bytemuck"
version = "1.24.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4"
[[package]]
name = "byteorder-lite"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495"
[[package]]
name = "cfg-if"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
[[package]]
name = "color_quant"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
[[package]]
name = "crc32fast"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
dependencies = [
"cfg-if",
]
[[package]]
name = "derive_arbitrary"
version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "directories-next"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc"
dependencies = [
"cfg-if",
"dirs-sys-next",
]
[[package]]
name = "dirs-sys-next"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
dependencies = [
"libc",
"redox_users",
"winapi",
]
[[package]]
name = "equivalent"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
[[package]]
name = "fdeflate"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c"
dependencies = [
"simd-adler32",
]
[[package]]
name = "flate2"
version = "1.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb"
dependencies = [
"crc32fast",
"libz-rs-sys",
"miniz_oxide",
]
[[package]]
name = "getrandom"
version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
dependencies = [
"cfg-if",
"libc",
"wasi",
]
[[package]]
name = "gif"
version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f954a9e9159ec994f73a30a12b96a702dde78f5547bcb561174597924f7d4162"
dependencies = [
"color_quant",
"weezl",
]
[[package]]
name = "hashbrown"
version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
[[package]]
name = "image"
version = "0.25.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a"
dependencies = [
"bytemuck",
"byteorder-lite",
"color_quant",
"gif",
"image-webp",
"moxcms",
"num-traits",
"png",
"zune-core",
"zune-jpeg",
]
[[package]]
name = "image-webp"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3"
dependencies = [
"byteorder-lite",
"quick-error",
]
[[package]]
name = "indexmap"
version = "2.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2"
dependencies = [
"equivalent",
"hashbrown",
]
[[package]]
name = "libc"
version = "0.2.177"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976"
[[package]]
name = "libredox"
version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb"
dependencies = [
"bitflags",
"libc",
]
[[package]]
name = "libz-rs-sys"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "840db8cf39d9ec4dd794376f38acc40d0fc65eec2a8f484f7fd375b84602becd"
dependencies = [
"zlib-rs",
]
[[package]]
name = "log"
version = "0.4.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
[[package]]
name = "md5"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ae960838283323069879657ca3de837e9f7bbb4c7bf6ea7f1b290d5e9476d2e0"
[[package]]
name = "memchr"
version = "2.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
[[package]]
name = "miniz_oxide"
version = "0.8.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
dependencies = [
"adler2",
"simd-adler32",
]
[[package]]
name = "moxcms"
version = "0.7.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "80986bbbcf925ebd3be54c26613d861255284584501595cf418320c078945608"
dependencies = [
"num-traits",
"pxfm",
]
[[package]]
name = "num-traits"
version = "0.2.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
dependencies = [
"autocfg",
]
[[package]]
name = "once_cell"
version = "1.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
[[package]]
name = "png"
version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0"
dependencies = [
"bitflags",
"crc32fast",
"fdeflate",
"flate2",
"miniz_oxide",
]
[[package]]
name = "proc-macro2"
version = "1.0.103"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
dependencies = [
"unicode-ident",
]
[[package]]
name = "pxfm"
version = "0.1.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3502d6155304a4173a5f2c34b52b7ed0dd085890326cb50fd625fdf39e86b3b"
dependencies = [
"num-traits",
]
[[package]]
name = "quick-error"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
[[package]]
name = "quote"
version = "1.0.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
dependencies = [
"proc-macro2",
]
[[package]]
name = "redox_users"
version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
dependencies = [
"getrandom",
"libredox",
"thiserror",
]
[[package]]
name = "simd-adler32"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
[[package]]
name = "syn"
version = "2.0.111"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "thiserror"
version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "unicode-ident"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
[[package]]
name = "wasi"
version = "0.11.1+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
[[package]]
name = "weezl"
version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88"
[[package]]
name = "winapi"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
dependencies = [
"winapi-i686-pc-windows-gnu",
"winapi-x86_64-pc-windows-gnu",
]
[[package]]
name = "winapi-i686-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "windows"
version = "0.62.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580"
dependencies = [
"windows-collections",
"windows-core",
"windows-future",
"windows-numerics",
]
[[package]]
name = "windows-collections"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610"
dependencies = [
"windows-core",
]
[[package]]
name = "windows-core"
version = "0.62.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
dependencies = [
"windows-implement",
"windows-interface",
"windows-link",
"windows-result",
"windows-strings",
]
[[package]]
name = "windows-future"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb"
dependencies = [
"windows-core",
"windows-link",
"windows-threading",
]
[[package]]
name = "windows-implement"
version = "0.60.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "windows-interface"
version = "0.59.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "windows-link"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
[[package]]
name = "windows-numerics"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26"
dependencies = [
"windows-core",
"windows-link",
]
[[package]]
name = "windows-result"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
dependencies = [
"windows-link",
]
[[package]]
name = "windows-strings"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
dependencies = [
"windows-link",
]
[[package]]
name = "windows-threading"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37"
dependencies = [
"windows-link",
]
[[package]]
name = "windows_thumbnail"
version = "0.1.0"
dependencies = [
"anyhow",
"base64",
"directories-next",
"image",
"md5",
"once_cell",
"windows",
"windows-core",
"zip",
]
[[package]]
name = "zip"
version = "6.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eb2a05c7c36fde6c09b08576c9f7fb4cda705990f73b58fe011abf7dfb24168b"
dependencies = [
"arbitrary",
"crc32fast",
"flate2",
"indexmap",
"memchr",
"zopfli",
]
[[package]]
name = "zlib-rs"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2f06ae92f42f5e5c42443fd094f245eb656abf56dd7cce9b8b263236565e00f2"
[[package]]
name = "zopfli"
version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249"
dependencies = [
"bumpalo",
"crc32fast",
"log",
"simd-adler32",
]
[[package]]
name = "zune-core"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "111f7d9820f05fd715df3144e254d6fc02ee4088b0644c0ffd0efc9e6d9d2773"
[[package]]
name = "zune-jpeg"
version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc6fb7703e32e9a07fb3f757360338b3a567a5054f21b5f52a666752e333d58e"
dependencies = [
"zune-core",
]
@@ -0,0 +1,31 @@
[package]
name = "windows_thumbnail"
version = "0.1.0"
edition = "2021"
publish = false
[workspace]
[lib]
name = "windows_thumbnail"
path = "src/mod.rs"
crate-type = ["cdylib"]
[dependencies]
anyhow = "1"
base64 = "0.22"
directories-next = "2.0"
image = { version = "0.25", default-features = false, features = ["png", "jpeg", "gif", "webp"] }
md5 = "0.8"
once_cell = "1.19"
zip = { version = "6.0", default-features = false, features = ["deflate"] }
windows = { version = "0.62", features = [
"Win32_Foundation",
"Win32_Graphics_Gdi",
"Win32_Security",
"Win32_System_Com",
"Win32_System_LibraryLoader",
"Win32_System_Registry",
"Win32_UI_Shell",
] }
windows-core = "0.62"
@@ -0,0 +1,131 @@
# Windows Thumbnail Provider for Readest
This crate provides Windows Explorer thumbnail support for eBook files when Readest is set as the default application.
## Features
- **Automatic Cover Extraction**: Extracts cover images from EPUB, MOBI, AZW, AZW3, FB2, CBZ, CBR files
- **Readest Branding**: Adds a small Readest icon overlay at the bottom-right corner
- **Smart Caching**: Caches generated thumbnails for faster subsequent loads
- **File Association Aware**: Only shows thumbnails when Readest is the default app for the file type
- **COM Integration**: Full Windows Shell extension implementation via `IThumbnailProvider`
## Supported Formats
| Format | Extension | Cover Source |
|--------|-----------|--------------|
| EPUB | `.epub` | OPF manifest cover reference |
| MOBI/AZW | `.mobi`, `.azw`, `.prc` | EXTH cover offset |
| AZW3/KF8 | `.azw3`, `.kf8` | KF8 format cover |
| FB2 | `.fb2` | `<binary>` coverpage element |
| Comic Book | `.cbz`, `.cbr` | First image in archive |
| Plain Text | `.txt` | Generated placeholder |
## Building
### Library Only
```bash
cargo build --release
```
### COM DLL (for Windows Explorer integration)
```bash
cargo build --release --features com
```
### CLI Tool
```bash
cargo build --release --features cli
```
## Installation
The thumbnail provider DLL is automatically registered when Readest is installed via the NSIS installer.
### Manual Registration (for development)
```powershell
# Register the DLL
regsvr32 /s target\release\windows_thumbnail.dll
# Unregister the DLL
regsvr32 /s /u target\release\windows_thumbnail.dll
# Refresh Explorer to see changes
ie4uinit.exe -show
```
After registration, you may need to restart Windows Explorer or log out/in for changes to take effect.
## Usage (Development / Manual testing)
For local development and testing, build the Windows DLL (or the library) from the Readest Tauri app folder and register it manually. The legacy CLI test harness used to live in the separate `packages/tauri` workspace, but the thumbnail handler implementation now lives inside Readest's Tauri app.
Build the DLL (for Windows explorer integration):
```powershell
cd apps/readest-app/src-tauri
cargo build --release --manifest-path Cargo.toml --features com
```
The standalone CLI test harness is no longer distributed with the app. To test the thumbnail provider locally, build and register the DLL as shown above and use a small test harness that imports `readestlib`'s thumbnail code or use Explorer after registering the handler.
Manual registration for development (register the generated DLL):
```powershell
# Register the DLL
regsvr32 /s target\release\windows_thumbnail.dll
# Unregister the DLL
regsvr32 /s /u target\release\windows_thumbnail.dll
# Refresh Explorer to see changes
ie4uinit.exe -show
```
This generates a thumbnail with the Readest overlay at the specified size.
## Architecture
```
┌─────────────────────────────────────────────────────────────────┐
│ Windows Explorer │
├─────────────────────────────────────────────────────────────────┤
│ │ │
│ IThumbnailProvider ───┼──► ThumbnailProvider │
│ │ │ │
│ │ ▼ │
│ │ Check File Association │
│ │ (is Readest the default?) │
│ │ │ │
│ │ ▼ (if yes) │
│ │ Extract Cover Image │
│ │ │ │
│ │ ▼ │
│ │ Add Readest Overlay │
│ │ │ │
│ │ ▼ │
│ │ Return HBITMAP │
│ │ │
└─────────────────────────────────────────────────────────────────┘
```
## COM Details
- **CLSID**: `{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}`
- **Shell Thumbnail Handler GUID**: `{e357fccd-a995-4576-b01f-234630154e96}`
- **Threading Model**: Apartment
## How It Works
1. When Windows Explorer needs a thumbnail, it queries the registered shell extension
2. The COM DLL implements `IInitializeWithItem` to receive the file path
3. It checks if Readest.exe is the default application for that file type using `AssocQueryStringW`
4. If Readest is the default, it extracts the cover and generates the thumbnail
5. If Readest is NOT the default, it returns `S_FALSE` to let Windows use other handlers
This ensures thumbnails only appear for files the user has associated with Readest.
## License
MIT License - See LICENSE file for details.
@@ -0,0 +1,506 @@
/// Windows COM Thumbnail Provider for Readest
///
/// Implements IThumbnailProvider and IInitializeWithItem for Windows Shell integration.
/// This allows Windows Explorer to show book covers as thumbnails for eBook files.
///
/// **Important**: Thumbnails are only shown when Readest.exe is the default application
/// for the file type.
///
/// ## CLSID: {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}
use std::cell::UnsafeCell;
use std::ffi::c_void;
use std::path::PathBuf;
use std::sync::atomic::{AtomicIsize, AtomicU32, Ordering};
use windows::core::{IUnknown, Interface, GUID, HRESULT, PCWSTR, PWSTR};
use windows::Win32::Foundation::{
CLASS_E_NOAGGREGATION, E_FAIL, E_INVALIDARG, E_NOINTERFACE, HMODULE, S_FALSE, S_OK,
};
use windows::Win32::Graphics::Gdi::{
CreateDIBSection, BITMAPINFO, BITMAPINFOHEADER, BI_RGB, DIB_RGB_COLORS, HBITMAP,
};
use windows::Win32::System::Com::{CoTaskMemFree, IClassFactory, IClassFactory_Impl};
use windows::Win32::System::LibraryLoader::GetModuleFileNameW;
use windows::Win32::System::Registry::{
RegCloseKey, RegCreateKeyExW, RegDeleteTreeW, RegSetValueExW, HKEY, HKEY_CLASSES_ROOT,
KEY_WRITE, REG_OPTION_NON_VOLATILE, REG_SZ,
};
use windows::Win32::UI::Shell::{
AssocQueryStringW, IInitializeWithItem, IInitializeWithItem_Impl, IShellItem,
IThumbnailProvider, IThumbnailProvider_Impl, ASSOCF_NONE, ASSOCSTR_EXECUTABLE,
SIGDN_FILESYSPATH, WTSAT_ARGB, WTS_ALPHATYPE,
};
use windows_core::BOOL;
use windows_core::{implement, Ref};
use super::cached_thumbnail_for_path;
// ─────────────────────────────────────────────────────────────────────────────
// CLSID for Readest Thumbnail Provider
// ─────────────────────────────────────────────────────────────────────────────
/// CLSID: {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}
pub const CLSID_READEST_THUMBNAIL: GUID = GUID::from_u128(0xA1B2C3D4_E5F6_7890_ABCD_EF1234567890);
/// Supported file extensions
pub const SUPPORTED_EXTENSIONS: &[&str] = &[
".epub", ".mobi", ".azw", ".azw3", ".kf8", ".prc", ".fb2", ".cbz", ".cbr", ".txt",
];
// DLL reference counting
static DLL_REF_COUNT: AtomicU32 = AtomicU32::new(0);
static DLL_MODULE_PTR: AtomicIsize = AtomicIsize::new(0);
fn dll_add_ref() {
DLL_REF_COUNT.fetch_add(1, Ordering::SeqCst);
}
fn dll_release() {
DLL_REF_COUNT.fetch_sub(1, Ordering::SeqCst);
}
fn set_dll_module(h: HMODULE) {
DLL_MODULE_PTR.store(h.0 as isize, Ordering::SeqCst);
}
fn get_dll_module() -> Option<HMODULE> {
let ptr = DLL_MODULE_PTR.load(Ordering::SeqCst);
if ptr == 0 {
None
} else {
Some(HMODULE(ptr as *mut c_void))
}
}
// ─────────────────────────────────────────────────────────────────────────────
// File Association Check
// ─────────────────────────────────────────────────────────────────────────────
/// Check if Readest.exe is the default application for a given file extension.
fn is_readest_default_for_extension(ext: &str) -> bool {
let ext_wide: Vec<u16> = ext.encode_utf16().chain(std::iter::once(0)).collect();
let mut buffer = [0u16; 260];
let mut buffer_size = buffer.len() as u32;
unsafe {
let result = AssocQueryStringW(
ASSOCF_NONE,
ASSOCSTR_EXECUTABLE,
PCWSTR(ext_wide.as_ptr()),
None,
Some(PWSTR(buffer.as_mut_ptr())),
&mut buffer_size,
);
if result.is_ok() {
let len = buffer.iter().position(|&c| c == 0).unwrap_or(buffer.len());
let path = String::from_utf16_lossy(&buffer[..len]).to_lowercase();
return path.contains("readest");
}
}
false
}
/// Check if Readest is the default app for a specific file path.
fn is_readest_default_for_file(path: &PathBuf) -> bool {
if let Some(ext) = path.extension().and_then(|e| e.to_str()) {
let ext_with_dot = format!(".{}", ext.to_lowercase());
return is_readest_default_for_extension(&ext_with_dot);
}
false
}
// ─────────────────────────────────────────────────────────────────────────────
// ThumbnailProvider
// ─────────────────────────────────────────────────────────────────────────────
/// Interior mutability wrapper for COM single-threaded apartment
struct ComCell<T>(UnsafeCell<T>);
impl<T> ComCell<T> {
fn new(value: T) -> Self {
Self(UnsafeCell::new(value))
}
fn get(&self) -> &T {
unsafe { &*self.0.get() }
}
fn set(&self, value: T) {
unsafe {
*self.0.get() = value;
}
}
}
// SAFETY: COM thumbnail providers run in single-threaded apartment (STA)
unsafe impl<T> Sync for ComCell<T> {}
unsafe impl<T> Send for ComCell<T> {}
#[implement(IThumbnailProvider, IInitializeWithItem)]
pub struct ThumbnailProvider {
file_path: ComCell<Option<PathBuf>>,
file_ext: ComCell<Option<String>>,
should_provide: ComCell<bool>,
}
impl ThumbnailProvider {
pub fn new() -> Self {
dll_add_ref();
Self {
file_path: ComCell::new(None),
file_ext: ComCell::new(None),
should_provide: ComCell::new(false),
}
}
}
impl Default for ThumbnailProvider {
fn default() -> Self {
Self::new()
}
}
impl Drop for ThumbnailProvider {
fn drop(&mut self) {
dll_release();
}
}
impl IInitializeWithItem_Impl for ThumbnailProvider_Impl {
fn Initialize(&self, psi: Ref<'_, IShellItem>, _grfmode: u32) -> windows::core::Result<()> {
let item = psi.ok()?;
unsafe {
let path_pwstr = item.GetDisplayName(SIGDN_FILESYSPATH)?;
let mut len = 0usize;
let mut ptr = path_pwstr.0;
while *ptr != 0 {
len += 1;
ptr = ptr.add(1);
}
let slice = std::slice::from_raw_parts(path_pwstr.0, len);
let path_str = String::from_utf16_lossy(slice);
let path = PathBuf::from(&path_str);
CoTaskMemFree(Some(path_pwstr.0 as *const c_void));
let is_default = is_readest_default_for_file(&path);
self.should_provide.set(is_default);
if !is_default {
return Ok(());
}
let ext = path
.extension()
.and_then(|e| e.to_str())
.map(|s| s.to_lowercase())
.unwrap_or_default();
self.file_path.set(Some(path));
self.file_ext.set(Some(ext));
}
Ok(())
}
}
impl IThumbnailProvider_Impl for ThumbnailProvider_Impl {
fn GetThumbnail(
&self,
cx: u32,
phbmp: *mut HBITMAP,
pdwalpha: *mut WTS_ALPHATYPE,
) -> windows::core::Result<()> {
if !*self.should_provide.get() {
return Err(E_FAIL.into());
}
let path = self.file_path.get().as_ref().ok_or(E_FAIL)?;
let ext = self.file_ext.get().as_ref().ok_or(E_FAIL)?;
let png_bytes = cached_thumbnail_for_path(path, ext, cx).map_err(|_| E_FAIL)?;
let img = image::load_from_memory(&png_bytes).map_err(|_| E_FAIL)?;
let rgba = img.to_rgba8();
let (width, height) = (rgba.width(), rgba.height());
let bmi = BITMAPINFO {
bmiHeader: BITMAPINFOHEADER {
biSize: std::mem::size_of::<BITMAPINFOHEADER>() as u32,
biWidth: width as i32,
biHeight: -(height as i32),
biPlanes: 1,
biBitCount: 32,
biCompression: BI_RGB.0,
..Default::default()
},
..Default::default()
};
let mut bits: *mut c_void = std::ptr::null_mut();
unsafe {
let hbmp = CreateDIBSection(None, &bmi, DIB_RGB_COLORS, &mut bits, None, 0)
.map_err(|_| E_FAIL)?;
if bits.is_null() {
return Err(E_FAIL.into());
}
// RGBA -> BGRA
let dst =
std::slice::from_raw_parts_mut(bits as *mut u8, (width * height * 4) as usize);
let src = rgba.as_raw();
for i in 0..(width * height) as usize {
let si = i * 4;
dst[si] = src[si + 2]; // B
dst[si + 1] = src[si + 1]; // G
dst[si + 2] = src[si]; // R
dst[si + 3] = src[si + 3]; // A
}
*phbmp = hbmp;
*pdwalpha = WTSAT_ARGB;
}
Ok(())
}
}
// ─────────────────────────────────────────────────────────────────────────────
// ClassFactory
// ─────────────────────────────────────────────────────────────────────────────
#[implement(IClassFactory)]
pub struct ThumbnailProviderFactory;
impl ThumbnailProviderFactory {
pub fn new() -> Self {
dll_add_ref();
Self
}
}
impl Default for ThumbnailProviderFactory {
fn default() -> Self {
Self::new()
}
}
impl Drop for ThumbnailProviderFactory {
fn drop(&mut self) {
dll_release();
}
}
impl IClassFactory_Impl for ThumbnailProviderFactory_Impl {
fn CreateInstance(
&self,
punkouter: Ref<'_, IUnknown>,
riid: *const GUID,
ppvobject: *mut *mut c_void,
) -> windows::core::Result<()> {
unsafe {
if ppvobject.is_null() {
return Err(E_INVALIDARG.into());
}
*ppvobject = std::ptr::null_mut();
if !punkouter.is_null() {
return Err(CLASS_E_NOAGGREGATION.into());
}
let provider: IThumbnailProvider = ThumbnailProvider::new().into();
provider.query(&*riid, ppvobject).ok()
}
}
fn LockServer(&self, flock: BOOL) -> windows::core::Result<()> {
if flock.as_bool() {
dll_add_ref();
} else {
dll_release();
}
Ok(())
}
}
// ─────────────────────────────────────────────────────────────────────────────
// DLL Exports
// ─────────────────────────────────────────────────────────────────────────────
#[no_mangle]
pub extern "system" fn DllMain(hinstance: HMODULE, reason: u32, _reserved: *mut c_void) -> BOOL {
const DLL_PROCESS_ATTACH: u32 = 1;
if reason == DLL_PROCESS_ATTACH {
set_dll_module(hinstance);
}
BOOL::from(true)
}
#[no_mangle]
pub extern "system" fn DllCanUnloadNow() -> HRESULT {
if DLL_REF_COUNT.load(Ordering::SeqCst) == 0 {
S_OK
} else {
S_FALSE
}
}
#[no_mangle]
pub unsafe extern "system" fn DllGetClassObject(
rclsid: *const GUID,
riid: *const GUID,
ppv: *mut *mut c_void,
) -> HRESULT {
if ppv.is_null() || rclsid.is_null() || riid.is_null() {
return E_INVALIDARG;
}
*ppv = std::ptr::null_mut();
if *rclsid != CLSID_READEST_THUMBNAIL {
return E_NOINTERFACE;
}
if *riid != IClassFactory::IID && *riid != IUnknown::IID {
return E_NOINTERFACE;
}
let factory: IClassFactory = ThumbnailProviderFactory::new().into();
factory.query(&*riid, ppv)
}
#[no_mangle]
pub unsafe extern "system" fn DllRegisterServer() -> HRESULT {
match register_server_impl() {
Ok(()) => S_OK,
Err(e) => e,
}
}
#[no_mangle]
pub unsafe extern "system" fn DllUnregisterServer() -> HRESULT {
let _ = unregister_server_impl();
S_OK
}
// ─────────────────────────────────────────────────────────────────────────────
// Registry helpers
// ─────────────────────────────────────────────────────────────────────────────
fn get_dll_path() -> Option<String> {
let module = get_dll_module()?;
let mut buffer = [0u16; 260];
unsafe {
let len = GetModuleFileNameW(Some(module), &mut buffer);
if len == 0 {
None
} else {
Some(String::from_utf16_lossy(&buffer[..len as usize]))
}
}
}
fn clsid_string() -> String {
format!(
"{{{:08X}-{:04X}-{:04X}-{:02X}{:02X}-{:02X}{:02X}{:02X}{:02X}{:02X}{:02X}}}",
CLSID_READEST_THUMBNAIL.data1,
CLSID_READEST_THUMBNAIL.data2,
CLSID_READEST_THUMBNAIL.data3,
CLSID_READEST_THUMBNAIL.data4[0],
CLSID_READEST_THUMBNAIL.data4[1],
CLSID_READEST_THUMBNAIL.data4[2],
CLSID_READEST_THUMBNAIL.data4[3],
CLSID_READEST_THUMBNAIL.data4[4],
CLSID_READEST_THUMBNAIL.data4[5],
CLSID_READEST_THUMBNAIL.data4[6],
CLSID_READEST_THUMBNAIL.data4[7]
)
}
fn to_wide(s: &str) -> Vec<u16> {
s.encode_utf16().chain(std::iter::once(0)).collect()
}
unsafe fn set_reg_value(key: HKEY, name: &str, value: &str) -> Result<(), HRESULT> {
let name_w = to_wide(name);
let value_w = to_wide(value);
let bytes: &[u8] = std::slice::from_raw_parts(value_w.as_ptr() as *const u8, value_w.len() * 2);
if RegSetValueExW(key, PCWSTR(name_w.as_ptr()), Some(0), REG_SZ, Some(bytes)).is_err() {
Err(E_FAIL)
} else {
Ok(())
}
}
unsafe fn create_reg_key(parent: HKEY, subkey: &str) -> Result<HKEY, HRESULT> {
let subkey_w = to_wide(subkey);
let mut hkey = HKEY::default();
let result = RegCreateKeyExW(
parent,
PCWSTR(subkey_w.as_ptr()),
Some(0),
None,
REG_OPTION_NON_VOLATILE,
KEY_WRITE,
None,
&mut hkey,
None,
);
if result.is_err() {
Err(E_FAIL)
} else {
Ok(hkey)
}
}
unsafe fn register_server_impl() -> Result<(), HRESULT> {
let dll_path = get_dll_path().ok_or(E_FAIL)?;
let clsid = clsid_string();
// CLSID key
let clsid_key = create_reg_key(HKEY_CLASSES_ROOT, &format!("CLSID\\{}", clsid))?;
set_reg_value(clsid_key, "", "Readest Thumbnail Provider")?;
// CRITICAL: DisableProcessIsolation = 1
let disable_isolation_name = to_wide("DisableProcessIsolation");
let value: u32 = 1;
let _ = windows::Win32::System::Registry::RegSetValueExW(
clsid_key,
PCWSTR(disable_isolation_name.as_ptr()),
Some(0),
windows::Win32::System::Registry::REG_DWORD,
Some(std::slice::from_raw_parts(
&value as *const u32 as *const u8,
4,
)),
);
let inproc_key = create_reg_key(clsid_key, "InprocServer32")?;
set_reg_value(inproc_key, "", &dll_path)?;
set_reg_value(inproc_key, "ThreadingModel", "Apartment")?;
let _ = RegCloseKey(inproc_key);
let _ = RegCloseKey(clsid_key);
// Register ShellEx thumbnail handler for each extension
for ext in SUPPORTED_EXTENSIONS {
let ext_shellex_path =
format!("{}\\ShellEx\\{{e357fccd-a995-4576-b01f-234630154e96}}", ext);
if let Ok(ext_shellex_key) = create_reg_key(HKEY_CLASSES_ROOT, &ext_shellex_path) {
let _ = set_reg_value(ext_shellex_key, "", &clsid);
let _ = RegCloseKey(ext_shellex_key);
}
}
Ok(())
}
unsafe fn unregister_server_impl() -> Result<(), HRESULT> {
let clsid = clsid_string();
let clsid_path = to_wide(&format!("CLSID\\{}", clsid));
let _ = RegDeleteTreeW(HKEY_CLASSES_ROOT, PCWSTR(clsid_path.as_ptr()));
for ext in SUPPORTED_EXTENSIONS {
let ext_path = to_wide(&format!(
"{}\\ShellEx\\{{e357fccd-a995-4576-b01f-234630154e96}}",
ext
));
let _ = RegDeleteTreeW(HKEY_CLASSES_ROOT, PCWSTR(ext_path.as_ptr()));
}
Ok(())
}
@@ -0,0 +1,648 @@
/// Cover image extraction for various eBook formats
///
/// Supports: EPUB, MOBI/AZW3/KF8, FB2, CBZ/CBR, TXT
use anyhow::{anyhow, Result};
use base64::engine::general_purpose;
use base64::Engine as _;
use directories_next::ProjectDirs;
use image::{imageops, DynamicImage, Rgba};
use md5::Context;
use once_cell::sync::Lazy;
use std::io::{Cursor, Read, Seek, SeekFrom};
use std::path::Path;
use zip::ZipArchive;
/// Thumbnail cache directory (per-user)
static CACHE_DIR: Lazy<Option<std::path::PathBuf>> = Lazy::new(|| {
ProjectDirs::from("app", "Readest", "").map(|pd| {
let dir = pd.cache_dir().join("thumbnails");
let _ = std::fs::create_dir_all(&dir);
dir
})
});
// ─────────────────────────────────────────────────────────────────────────────
// EPUB extraction
// ─────────────────────────────────────────────────────────────────────────────
/// Extract cover image bytes from an EPUB file.
pub fn extract_epub_cover_bytes<R: Read + Seek>(reader: R) -> Result<Vec<u8>> {
let mut archive = ZipArchive::new(reader)?;
// Pass 1: Look for files with "cover" in the name
let mut candidates: Vec<(usize, String, u64)> = Vec::new();
for i in 0..archive.len() {
let file = archive.by_index(i)?;
let name = file.name().to_lowercase();
let size = file.size();
drop(file);
if is_image_extension(&name) && (name.contains("cover") || name.contains("front")) {
candidates.push((i, name, size));
}
}
// Sort by priority: exact "cover" match first, then by size
if !candidates.is_empty() {
candidates.sort_by(|a, b| {
let a_exact = a.1.contains("cover.") || a.1.ends_with("cover");
let b_exact = b.1.contains("cover.") || b.1.ends_with("cover");
match (a_exact, b_exact) {
(true, false) => std::cmp::Ordering::Less,
(false, true) => std::cmp::Ordering::Greater,
_ => b.2.cmp(&a.2),
}
});
let idx = candidates[0].0;
let mut file = archive.by_index(idx)?;
let mut buf = Vec::new();
file.read_to_end(&mut buf)?;
return Ok(buf);
}
// Pass 2: Parse container.xml to find OPF, then parse OPF for cover
let container_xml = read_zip_file_to_string(&mut archive, "META-INF/container.xml");
if let Ok(xml) = container_xml {
if let Some(rootfile) = extract_attribute(&xml, "rootfile", "full-path") {
let opf_content = read_zip_file_to_string(&mut archive, &rootfile);
if let Ok(opf) = opf_content {
if let Some(cover_id) = find_cover_id_in_opf(&opf) {
if let Some(href) = find_href_by_id_in_opf(&opf, &cover_id) {
let base = Path::new(&rootfile).parent().unwrap_or(Path::new(""));
let cover_path = base.join(&href).to_string_lossy().replace('\\', "/");
if let Ok(bytes) = read_zip_file_to_bytes(&mut archive, &cover_path) {
return Ok(bytes);
}
}
}
if let Some(href) = find_first_image_in_manifest(&opf) {
let base = Path::new(&rootfile).parent().unwrap_or(Path::new(""));
let cover_path = base.join(&href).to_string_lossy().replace('\\', "/");
if let Ok(bytes) = read_zip_file_to_bytes(&mut archive, &cover_path) {
return Ok(bytes);
}
}
}
}
}
// Pass 3: Just grab the largest image file
let mut largest: Option<(usize, u64)> = None;
for i in 0..archive.len() {
let file = archive.by_index(i)?;
let name = file.name().to_lowercase();
let size = file.size();
drop(file);
if is_image_extension(&name) && (largest.is_none() || size > largest.unwrap().1) {
largest = Some((i, size));
}
}
if let Some((idx, _)) = largest {
let mut file = archive.by_index(idx)?;
let mut buf = Vec::new();
file.read_to_end(&mut buf)?;
return Ok(buf);
}
Err(anyhow!("No cover image found in EPUB"))
}
// ─────────────────────────────────────────────────────────────────────────────
// MOBI/AZW3/KF8 extraction
// ─────────────────────────────────────────────────────────────────────────────
/// Extract cover image from MOBI/AZW3/KF8 files.
pub fn extract_mobi_cover_bytes<R: Read + Seek>(mut reader: R) -> Result<Vec<u8>> {
let mut header = [0u8; 78];
reader.read_exact(&mut header)?;
if &header[60..68] != b"BOOKMOBI" {
return Err(anyhow!("Not a valid MOBI file"));
}
let num_records = u16::from_be_bytes([header[76], header[77]]) as usize;
let mut record_offsets: Vec<u32> = Vec::with_capacity(num_records);
for _ in 0..num_records {
let mut rec = [0u8; 8];
reader.read_exact(&mut rec)?;
record_offsets.push(u32::from_be_bytes([rec[0], rec[1], rec[2], rec[3]]));
}
if record_offsets.is_empty() {
return Err(anyhow!("No records in MOBI file"));
}
reader.seek(SeekFrom::Start(record_offsets[0] as u64))?;
let mut mobi_header = [0u8; 256];
reader.read_exact(&mut mobi_header)?;
if &mobi_header[16..20] != b"MOBI" {
return Err(anyhow!("Invalid MOBI header"));
}
let header_length = u32::from_be_bytes([
mobi_header[20],
mobi_header[21],
mobi_header[22],
mobi_header[23],
]) as usize;
let exth_flags = u32::from_be_bytes([
mobi_header[128],
mobi_header[129],
mobi_header[130],
mobi_header[131],
]);
if exth_flags & 0x40 == 0 {
return Err(anyhow!("No EXTH header in MOBI file"));
}
let exth_offset = record_offsets[0] as u64 + 16 + header_length as u64;
reader.seek(SeekFrom::Start(exth_offset))?;
let mut exth_magic = [0u8; 4];
reader.read_exact(&mut exth_magic)?;
if &exth_magic != b"EXTH" {
return Err(anyhow!("EXTH header not found"));
}
let mut exth_len_bytes = [0u8; 4];
reader.read_exact(&mut exth_len_bytes)?;
let mut exth_count_bytes = [0u8; 4];
reader.read_exact(&mut exth_count_bytes)?;
let exth_count = u32::from_be_bytes(exth_count_bytes) as usize;
let mut cover_offset: Option<u32> = None;
let first_img_idx = u32::from_be_bytes([
mobi_header[108],
mobi_header[109],
mobi_header[110],
mobi_header[111],
]);
for _ in 0..exth_count {
let mut rec_header = [0u8; 8];
if reader.read_exact(&mut rec_header).is_err() {
break;
}
let rec_type =
u32::from_be_bytes([rec_header[0], rec_header[1], rec_header[2], rec_header[3]]);
let rec_len =
u32::from_be_bytes([rec_header[4], rec_header[5], rec_header[6], rec_header[7]])
as usize;
let data_len = rec_len.saturating_sub(8);
let mut data = vec![0u8; data_len];
if reader.read_exact(&mut data).is_err() {
break;
}
if rec_type == 201 && data_len >= 4 {
cover_offset = Some(u32::from_be_bytes([data[0], data[1], data[2], data[3]]));
}
}
let cover_record_idx = if let Some(offset) = cover_offset {
first_img_idx + offset
} else {
first_img_idx
};
if cover_record_idx as usize >= record_offsets.len() {
return Err(anyhow!("Cover record index out of bounds"));
}
let start = record_offsets[cover_record_idx as usize] as u64;
let end = if (cover_record_idx as usize + 1) < record_offsets.len() {
record_offsets[cover_record_idx as usize + 1] as u64
} else {
reader.seek(SeekFrom::End(0))?;
reader.stream_position()?
};
let len = (end - start) as usize;
reader.seek(SeekFrom::Start(start))?;
let mut cover_data = vec![0u8; len];
reader.read_exact(&mut cover_data)?;
if cover_data.starts_with(&[0xFF, 0xD8, 0xFF])
|| cover_data.starts_with(&[0x89, 0x50, 0x4E, 0x47])
|| cover_data.starts_with(b"GIF")
{
return Ok(cover_data);
}
Err(anyhow!("No valid cover image found in MOBI"))
}
// ─────────────────────────────────────────────────────────────────────────────
// CBZ extraction
// ─────────────────────────────────────────────────────────────────────────────
/// Extract cover image from CBZ (comic book ZIP) file.
pub fn extract_cbz_cover_bytes<R: Read + Seek>(reader: R) -> Result<Vec<u8>> {
let mut archive = ZipArchive::new(reader)?;
let mut images: Vec<(usize, String)> = Vec::new();
for i in 0..archive.len() {
let file = archive.by_index(i)?;
let name = file.name().to_string();
drop(file);
if is_image_extension(&name.to_lowercase()) {
images.push((i, name));
}
}
images.sort_by(|a, b| a.1.cmp(&b.1));
if let Some((idx, _)) = images.first() {
let mut file = archive.by_index(*idx)?;
let mut buf = Vec::new();
file.read_to_end(&mut buf)?;
return Ok(buf);
}
Err(anyhow!("No images found in CBZ"))
}
// ─────────────────────────────────────────────────────────────────────────────
// FB2 extraction
// ─────────────────────────────────────────────────────────────────────────────
/// Extract cover image from FB2 (FictionBook) file.
pub fn extract_fb2_cover_bytes<R: Read>(mut reader: R) -> Result<Vec<u8>> {
let mut content = String::new();
reader.read_to_string(&mut content)?;
let cover_id = if let Some(start) = content.find("<coverpage>") {
let end = content[start..].find("</coverpage>").unwrap_or(500);
let coverpage = &content[start..start + end];
if let Some(href_pos) = coverpage.find("href=\"#") {
let id_start = href_pos + 7;
let id_end = coverpage[id_start..].find('"').unwrap_or(50);
Some(coverpage[id_start..id_start + id_end].to_string())
} else if let Some(href_pos) = coverpage.find("l:href=\"#") {
let id_start = href_pos + 9;
let id_end = coverpage[id_start..].find('"').unwrap_or(50);
Some(coverpage[id_start..id_start + id_end].to_string())
} else {
None
}
} else {
None
};
let search_pattern = if let Some(ref id) = cover_id {
format!("<binary id=\"{}\"", id)
} else {
"<binary".to_string()
};
if let Some(pos) = content.find(&search_pattern) {
if let Some(tag_end) = content[pos..].find('>') {
let data_start = pos + tag_end + 1;
if let Some(data_end) = content[data_start..].find("</binary>") {
let b64_data = content[data_start..data_start + data_end].trim();
let b64_clean: String = b64_data.chars().filter(|c| !c.is_whitespace()).collect();
let bytes = general_purpose::STANDARD.decode(&b64_clean)?;
return Ok(bytes);
}
}
}
if cover_id.is_some() {
if let Some(pos) = content.find("<binary") {
if let Some(tag_end) = content[pos..].find('>') {
let data_start = pos + tag_end + 1;
if let Some(data_end) = content[data_start..].find("</binary>") {
let b64_data = content[data_start..data_start + data_end].trim();
let b64_clean: String =
b64_data.chars().filter(|c| !c.is_whitespace()).collect();
let bytes = general_purpose::STANDARD.decode(&b64_clean)?;
return Ok(bytes);
}
}
}
}
Err(anyhow!("No cover image found in FB2"))
}
// ─────────────────────────────────────────────────────────────────────────────
// TXT "cover" (placeholder)
// ─────────────────────────────────────────────────────────────────────────────
/// Generate a placeholder thumbnail for TXT files.
pub fn extract_txt_cover_bytes<R: Read>(mut reader: R, size: u32) -> Result<Vec<u8>> {
let mut buf = vec![0u8; 4096];
let _n = reader.read(&mut buf)?;
let mut img = image::RgbaImage::from_pixel(size, size, Rgba([245, 245, 245, 255]));
for x in 0..size {
img.put_pixel(x, 0, Rgba([200, 200, 200, 255]));
img.put_pixel(x, size - 1, Rgba([200, 200, 200, 255]));
}
for y in 0..size {
img.put_pixel(0, y, Rgba([200, 200, 200, 255]));
img.put_pixel(size - 1, y, Rgba([200, 200, 200, 255]));
}
let mut out = Vec::new();
DynamicImage::ImageRgba8(img).write_to(&mut Cursor::new(&mut out), image::ImageFormat::Png)?;
Ok(out)
}
// ─────────────────────────────────────────────────────────────────────────────
// Unified extraction by extension
// ─────────────────────────────────────────────────────────────────────────────
/// Extract cover image bytes based on file extension.
pub fn extract_cover_bytes_by_ext(path: &Path, ext: &str) -> Result<Vec<u8>> {
let file = std::fs::File::open(path)?;
match ext.to_lowercase().as_str() {
"epub" => extract_epub_cover_bytes(file),
"mobi" | "azw" | "azw3" | "kf8" | "prc" => extract_mobi_cover_bytes(file),
"cbz" | "cbr" => extract_cbz_cover_bytes(file),
"fb2" => extract_fb2_cover_bytes(file),
"txt" => extract_txt_cover_bytes(file, 256),
_ => Err(anyhow!("Unsupported format: {}", ext)),
}
}
// ─────────────────────────────────────────────────────────────────────────────
// Thumbnail creation with overlay
// ─────────────────────────────────────────────────────────────────────────────
/// Create a thumbnail from cover image bytes with Readest icon overlay.
pub fn create_thumbnail_with_overlay(cover_bytes: &[u8], requested_size: u32) -> Result<Vec<u8>> {
let img = image::load_from_memory(cover_bytes)?;
let thumbnail = img.thumbnail(requested_size, requested_size);
let overlay_img = load_overlay_icon();
let mut base = thumbnail.to_rgba8();
let (base_w, base_h) = (base.width(), base.height());
if let Some(ov) = overlay_img {
let overlay_size = (requested_size / 5).clamp(24, 48);
let ov_resized = ov.resize(overlay_size, overlay_size, imageops::FilterType::Lanczos3);
let ovb = ov_resized.to_rgba8();
let (ov_w, ov_h) = (ovb.width(), ovb.height());
let x = base_w.saturating_sub(ov_w + 4);
let y = base_h.saturating_sub(ov_h + 4);
for oy in 0..ov_h {
for ox in 0..ov_w {
let dst_x = x + ox;
let dst_y = y + oy;
if dst_x < base_w && dst_y < base_h {
let src_pixel = ovb.get_pixel(ox, oy);
let alpha = src_pixel.0[3] as f32 / 255.0;
if alpha > 0.0 {
let dst_pixel = base.get_pixel(dst_x, dst_y);
let mut result = dst_pixel.0;
for c in 0..3 {
let fg = src_pixel.0[c] as f32;
let bg = result[c] as f32;
result[c] = (fg * alpha + bg * (1.0 - alpha)) as u8;
}
result[3] = 255;
base.put_pixel(dst_x, dst_y, Rgba(result));
}
}
}
}
}
let mut out = Vec::new();
DynamicImage::ImageRgba8(base).write_to(&mut Cursor::new(&mut out), image::ImageFormat::Png)?;
Ok(out)
}
/// Load the Readest overlay icon.
fn load_overlay_icon() -> Option<DynamicImage> {
// Try embedded icon
let icon_bytes = include_bytes!("../../../public/icon.png");
if let Ok(img) = image::load_from_memory(icon_bytes) {
return Some(img);
}
// Fallback: try loading from filesystem
if let Ok(exe) = std::env::current_exe() {
let candidates = [
exe.parent().map(|p| p.join("icon.png")),
exe.parent().map(|p| p.join("resources").join("icon.png")),
exe.parent()
.and_then(|p| p.parent())
.map(|p| p.join("resources").join("icon.png")),
];
for candidate in candidates.into_iter().flatten() {
if candidate.exists() {
if let Ok(bytes) = std::fs::read(&candidate) {
if let Ok(img) = image::load_from_memory(&bytes) {
return Some(img);
}
}
}
}
}
None
}
// ─────────────────────────────────────────────────────────────────────────────
// Caching
// ─────────────────────────────────────────────────────────────────────────────
/// Generate a thumbnail with disk caching.
pub fn cached_thumbnail_for_path(path: &Path, ext: &str, size: u32) -> Result<Vec<u8>> {
// Compute cache key by hashing file parts for stability without loading entire file
let mut hasher = Context::new();
hasher.consume(ext.as_bytes());
hasher.consume(&size.to_le_bytes());
let file = std::fs::File::open(path)?;
let metadata = file.metadata()?;
let file_len = metadata.len();
// Read partial chunks like the TypeScript partialMD5 implementation
const STEP: u64 = 1024;
const SIZE: u64 = 1024;
let mut file = file;
for i in -1i32..=10 {
let pos = if i == -1 {
256u64
} else {
STEP << (2 * i as u32)
};
let start = pos.min(file_len);
let end = (start + SIZE).min(file_len);
if start >= file_len {
break;
}
file.seek(SeekFrom::Start(start))?;
let mut buf = vec![0u8; (end - start) as usize];
file.read_exact(&mut buf)?;
hasher.consume(&buf);
}
let digest = hasher.finalize();
let key = format!("{:x}.png", digest);
if let Some(ref dir) = *CACHE_DIR {
let cache_path = dir.join(&key);
if cache_path.exists() {
if let Ok(cached) = std::fs::read(&cache_path) {
return Ok(cached);
}
}
}
let cover = extract_cover_bytes_by_ext(path, ext)?;
let thumbnail = create_thumbnail_with_overlay(&cover, size)?;
if let Some(ref dir) = *CACHE_DIR {
let cache_path = dir.join(&key);
let _ = std::fs::write(&cache_path, &thumbnail);
}
Ok(thumbnail)
}
// ─────────────────────────────────────────────────────────────────────────────
// Helper functions
// ─────────────────────────────────────────────────────────────────────────────
fn is_image_extension(name: &str) -> bool {
name.ends_with(".jpg")
|| name.ends_with(".jpeg")
|| name.ends_with(".png")
|| name.ends_with(".gif")
|| name.ends_with(".webp")
|| name.ends_with(".bmp")
}
fn read_zip_file_to_string<R: Read + Seek>(
archive: &mut ZipArchive<R>,
name: &str,
) -> Result<String> {
let mut file = archive.by_name(name)?;
let mut content = String::new();
file.read_to_string(&mut content)?;
Ok(content)
}
fn read_zip_file_to_bytes<R: Read + Seek>(
archive: &mut ZipArchive<R>,
name: &str,
) -> Result<Vec<u8>> {
let mut file = archive.by_name(name)?;
let mut buf = Vec::new();
file.read_to_end(&mut buf)?;
Ok(buf)
}
fn extract_attribute(xml: &str, tag: &str, attr: &str) -> Option<String> {
let pattern = format!("<{}", tag);
if let Some(tag_pos) = xml.find(&pattern) {
let tag_end = xml[tag_pos..].find('>').unwrap_or(500) + tag_pos;
let tag_content = &xml[tag_pos..tag_end];
let attr_pattern = format!("{}=\"", attr);
if let Some(attr_pos) = tag_content.find(&attr_pattern) {
let value_start = attr_pos + attr_pattern.len();
if let Some(value_end) = tag_content[value_start..].find('"') {
return Some(tag_content[value_start..value_start + value_end].to_string());
}
}
}
None
}
fn find_cover_id_in_opf(opf: &str) -> Option<String> {
if let Some(pos) = opf.find("name=\"cover\"") {
let window_start = pos.saturating_sub(50);
let window_end = (pos + 100).min(opf.len());
let window = &opf[window_start..window_end];
if let Some(content_pos) = window.find("content=\"") {
let start = content_pos + 9;
if let Some(end) = window[start..].find('"') {
return Some(window[start..start + end].to_string());
}
}
}
if let Some(pos) = opf.find("properties=\"cover-image\"") {
let window_start = pos.saturating_sub(200);
let window_end = pos;
let window = &opf[window_start..window_end];
if let Some(id_pos) = window.rfind("id=\"") {
let start = id_pos + 4;
if let Some(end) = window[start..].find('"') {
return Some(window[start..start + end].to_string());
}
}
}
None
}
fn find_href_by_id_in_opf(opf: &str, id: &str) -> Option<String> {
let pattern = format!("id=\"{}\"", id);
if let Some(pos) = opf.find(&pattern) {
let window_start = pos.saturating_sub(10);
let window_end = (pos + 200).min(opf.len());
let window = &opf[window_start..window_end];
if let Some(href_pos) = window.find("href=\"") {
let start = href_pos + 6;
if let Some(end) = window[start..].find('"') {
return Some(window[start..start + end].to_string());
}
}
}
None
}
fn find_first_image_in_manifest(opf: &str) -> Option<String> {
let manifest_start = opf.find("<manifest")?;
let manifest_end = opf[manifest_start..]
.find("</manifest>")
.map(|e| manifest_start + e)?;
let manifest = &opf[manifest_start..manifest_end];
for media_type in ["image/jpeg", "image/png", "image/gif", "image/webp"] {
let pattern = format!("media-type=\"{}\"", media_type);
if let Some(pos) = manifest.find(&pattern) {
let window_start = pos.saturating_sub(200);
let window = &manifest[window_start..pos];
if let Some(href_pos) = window.rfind("href=\"") {
let start = href_pos + 6;
if let Some(end) = window[start..].find('"') {
return Some(window[start..start + end].to_string());
}
}
}
}
None
}
@@ -0,0 +1,13 @@
//! Windows Thumbnail Provider for Readest
//!
//! This module provides Windows Explorer thumbnail support for eBook files.
//! Thumbnails are only shown when Readest is set as the default application.
//!
//! Supported formats: EPUB, MOBI, AZW, AZW3, KF8, FB2, CBZ, CBR
#![allow(non_snake_case)]
mod com_provider;
mod extraction;
pub use extraction::*;
@@ -12,12 +12,14 @@ module.exports = {
'de',
'ja',
'es',
'fa',
'fr',
'it',
'el',
'ko',
'uk',
'nl',
'sv',
'pl',
'pt',
'ru',
@@ -25,7 +27,13 @@ module.exports = {
'hi',
'id',
'vi',
'ms',
'ar',
'th',
'bo',
'bn',
'ta',
'si',
'zh-CN',
'zh-TW',
],
+124 -15
View File
@@ -1,13 +1,22 @@
import withPWAInit from '@ducanh2912/next-pwa';
import withBundleAnalyzer from '@next/bundle-analyzer';
const isDev = process.env['NODE_ENV'] === 'development';
const appPlatform = process.env['NEXT_PUBLIC_APP_PLATFORM'];
if (isDev) {
const { initOpenNextCloudflareForDev } = await import('@opennextjs/cloudflare');
initOpenNextCloudflareForDev();
}
const exportOutput = appPlatform !== 'web' && !isDev;
/** @type {import('next').NextConfig} */
const nextConfig = {
// Ensure Next.js uses SSG instead of SSR
// https://nextjs.org/docs/pages/building-your-application/deploying/static-exports
output: appPlatform === 'web' || isDev ? undefined : 'export',
output: exportOutput ? 'export' : undefined,
pageExtensions: exportOutput ? ['jsx', 'tsx'] : ['js', 'jsx', 'ts', 'tsx'],
// Note: This feature is required to use the Next.js Image component in SSG mode.
// See https://nextjs.org/docs/messages/export-image-api for different workarounds.
images: {
@@ -17,6 +26,20 @@ const nextConfig = {
// Configure assetPrefix or else the server won't properly resolve your assets.
assetPrefix: '',
reactStrictMode: true,
serverExternalPackages: ['isows'],
turbopack: {},
transpilePackages: !isDev
? [
'i18next-browser-languagedetector',
'react-i18next',
'i18next',
'@ducanh2912/next-pwa',
'@tauri-apps',
'highlight.js',
'foliate-js',
'marked',
]
: [],
async headers() {
return [
{
@@ -28,23 +51,109 @@ const nextConfig = {
},
],
},
{
source: '/_next/static/:path*',
headers: [
{
key: 'Cache-Control',
value: 'public, max-age=31536000, immutable',
},
],
},
];
},
};
const withPWA = withPWAInit({
dest: 'public',
disable: isDev || appPlatform !== 'web',
cacheOnFrontEndNav: true,
aggressiveFrontEndNavCaching: true,
reloadOnOnline: true,
swcMinify: true,
fallbacks: {
document: '/offline',
},
workboxOptions: {
disableDevLogs: true,
},
const pwaDisabled = isDev || appPlatform !== 'web';
const withPWA = pwaDisabled
? (config) => config
: withPWAInit({
dest: 'public',
cacheStartUrl: false,
dynamicStartUrl: false,
cacheOnFrontEndNav: true,
aggressiveFrontEndNavCaching: true,
reloadOnOnline: true,
swcMinify: true,
fallbacks: {
document: '/offline',
},
workboxOptions: {
disableDevLogs: true,
runtimeCaching: [
{
urlPattern: ({ url, request }) => {
const clientRoutes = ['/library', '/reader'];
const isClientRoute = clientRoutes.some((route) => url.pathname.startsWith(route));
return isClientRoute && request.mode === 'navigate';
},
handler: 'StaleWhileRevalidate',
options: {
cacheName: 'pages-cache',
expiration: {
maxAgeSeconds: 365 * 24 * 60 * 60,
},
cacheableResponse: {
statuses: [0, 200],
},
plugins: [
{
cacheKeyWillBeUsed: async ({ request }) => {
const url = new URL(request.url);
const basePath = url.pathname.split('/')[1];
const cacheKey = `${url.origin}/${basePath}`;
return cacheKey;
},
},
],
},
},
{
urlPattern: ({ url }) => {
if (url.pathname.startsWith('/api/')) {
return false;
}
return /^https?.*/.test(url.href);
},
handler: 'StaleWhileRevalidate',
options: {
cacheName: 'offlineCache',
expiration: {
maxEntries: 512,
maxAgeSeconds: 365 * 24 * 60 * 60,
},
cacheableResponse: {
statuses: [0, 200],
},
},
},
],
cleanupOutdatedCaches: true,
clientsClaim: true,
skipWaiting: true,
manifestTransforms: [
(manifestEntries) => {
const manifest = manifestEntries.filter((entry) => {
const url = entry.url;
return (
!url.includes('dynamic-css-manifest.json') &&
!url.includes('middleware-manifest.json') &&
!url.includes('react-loadable-manifest.json') &&
!url.includes('build-manifest.json') &&
!url.includes('_buildManifest.js') &&
!url.includes('_ssgManifest.js') &&
!url.includes('_headers')
);
});
return { manifest };
},
],
},
});
const withAnalyzer = withBundleAnalyzer({
enabled: process.env.ANALYZE === 'true',
});
export default withPWA(nextConfig);
export default withPWA(withAnalyzer(nextConfig));
+5 -28
View File
@@ -1,29 +1,6 @@
// @ts-nocheck
// default open-next.config.ts file created by @opennextjs/cloudflare
import { defineCloudflareConfig } from '@opennextjs/cloudflare';
import r2IncrementalCache from '@opennextjs/cloudflare/overrides/incremental-cache/r2-incremental-cache';
import type { OpenNextConfig } from '@opennextjs/aws/types/open-next.js';
import cache from '@opennextjs/cloudflare/kv-cache';
const config: OpenNextConfig = {
default: {
override: {
wrapper: 'cloudflare-node',
converter: 'edge',
// set `incrementalCache` to "dummy" to disable KV cache
incrementalCache: async () => cache,
tagCache: 'dummy',
queue: 'dummy',
},
},
middleware: {
external: true,
override: {
wrapper: 'cloudflare-edge',
converter: 'edge',
proxyExternalRequest: 'fetch',
},
},
};
export default config;
export default defineCloudflareConfig({
incrementalCache: r2IncrementalCache,
});
+84 -31
View File
@@ -1,6 +1,6 @@
{
"name": "@readest/readest-app",
"version": "0.9.51",
"version": "0.9.96",
"private": true,
"scripts": {
"dev": "dotenv -e .env.tauri -- next dev",
@@ -9,17 +9,22 @@
"dev-web": "dotenv -e .env.web -- next dev",
"build-web": "dotenv -e .env.web -- next build",
"start-web": "dotenv -e .env.web -- next start",
"build-tauri": "dotenv -e .env.tauri -- next build",
"i18n:extract": "i18next-scanner",
"lint": "next lint",
"lint": "eslint .",
"test": "dotenv -e .env -e .env.test.local vitest",
"tauri": "tauri",
"prepare-public-vendor": "mkdirp ./public/vendor/pdfjs",
"prepare-public-vendor": "mkdirp ./public/vendor/pdfjs ./public/vendor/simplecc",
"copy-pdfjs-js": "cpx \"../../packages/foliate-js/node_modules/pdfjs-dist/legacy/build/{pdf.worker.min.mjs,pdf.mjs,pdf.d.mts}\" ./public/vendor/pdfjs",
"copy-pdfjs-fonts": "cpx \"../../packages/foliate-js/node_modules/pdfjs-dist/{cmaps,standard_fonts}/*\" ./public/vendor/pdfjs",
"copy-flatten-pdfjs-annotation-layer-css": "npx postcss \"../../packages/foliate-js/vendor/pdfjs/annotation_layer_builder.css\" --no-map -u postcss-nested > ./public/vendor/pdfjs/annotation_layer_builder.css",
"copy-flatten-pdfjs-text-layer-css": "npx postcss \"../../packages/foliate-js/vendor/pdfjs/text_layer_builder.css\" --no-map -u postcss-nested > ./public/vendor/pdfjs/text_layer_builder.css",
"copy-flatten-pdfjs-css": "pnpm copy-flatten-pdfjs-annotation-layer-css && pnpm copy-flatten-pdfjs-text-layer-css",
"copy-pdfjs": "pnpm copy-pdfjs-js && pnpm copy-pdfjs-fonts && pnpm copy-flatten-pdfjs-css",
"copy-simplecc": "cpx \"../../packages/simplecc-wasm/dist/web/*\" ./public/vendor/simplecc",
"setup-pdfjs": "pnpm prepare-public-vendor && pnpm copy-pdfjs",
"setup-simplecc": "pnpm prepare-public-vendor && pnpm copy-simplecc",
"setup-vendors": "pnpm setup-pdfjs && pnpm setup-simplecc",
"build-win-x64": "dotenv -e .env.tauri.local -- tauri build --target i686-pc-windows-msvc --bundles nsis",
"build-win-arm64": "dotenv -e .env.tauri.local -- tauri build --target aarch64-pc-windows-msvc --bundles nsis",
"build-linux-x64": "dotenv -e .env.tauri.local -- tauri build --target x86_64-unknown-linux-gnu --bundles appimage",
@@ -30,81 +35,129 @@
"build-ios-appstore": "dotenv -e .env.ios-appstore.local -- tauri ios build --export-method app-store-connect",
"release-macos-universial-appstore": "dotenv -e .env.tauri.local -e .env.apple-appstore.local -- bash scripts/release-mac-appstore.sh",
"release-ios-appstore": "dotenv -e .env.ios-appstore.local -- bash scripts/release-ios-appstore.sh",
"preview": "NEXT_PUBLIC_APP_PLATFORM=web opennextjs-cloudflare && wrangler dev",
"deploy": "NEXT_PUBLIC_APP_PLATFORM=web opennextjs-cloudflare && wrangler deploy",
"release-google-play": "dotenv -e .env.google-play.local -- bash scripts/release-google-play.sh",
"config-wrangler": "sed -i \"s/\\${TRANSLATIONS_KV_ID}/$TRANSLATIONS_KV_ID/g\" wrangler.toml",
"cf-typegen": "wrangler types --env-interface CloudflareEnv cloudflare-env.d.ts"
"preview": "pnpm patch-build-webpack && NEXT_PUBLIC_APP_PLATFORM=web opennextjs-cloudflare build && pnpm restore-build-original && opennextjs-cloudflare preview --ip 0.0.0.0 --port 3001",
"deploy": "pnpm patch-build-webpack && NEXT_PUBLIC_APP_PLATFORM=web opennextjs-cloudflare build && pnpm restore-build-original && opennextjs-cloudflare deploy",
"upload": "pnpm patch-build-webpack && NEXT_PUBLIC_APP_PLATFORM=web opennextjs-cloudflare build && pnpm restore-build-original && opennextjs-cloudflare upload",
"cf-typegen": "wrangler types --env-interface CloudflareEnv cloudflare-env.d.ts",
"patch-build-webpack": "if [ \"$(uname)\" = \"Darwin\" ]; then sed -i '' 's/next build\"/next build --webpack\"/' package.json; else sed -i 's/next build\"/next build --webpack\"/' package.json; fi",
"restore-build-original": "if [ \"$(uname)\" = \"Darwin\" ]; then sed -i '' 's/next build --webpack\"/next build\"/' package.json; else sed -i 's/next build --webpack\"/next build\"/' package.json; fi",
"update-metadata": "bash ./scripts/sync-release-notes.sh release-notes.json ../../data/metainfo/appdata.xml",
"check:optional-chaining": "count=$(grep -rno '\\?\\.[a-zA-Z_$]' .next/static/chunks/* out/_next/static/chunks/* | wc -l); if [ \"$count\" -gt 0 ]; then echo '❌ Optional chaining found in output!'; exit 1; else echo '✅ No optional chaining found.'; fi",
"check:translations": "count=$(grep -rno '__STRING_NOT_TRANSLATED__' public/locales/* | wc -l); if [ \"$count\" -gt 0 ]; then echo '❌ Untranslated strings found!'; exit 1; else echo '✅ All strings translated.'; fi",
"check:lookbehind-regex": "count=$(grep -rnoE '\\(\\?<[!=]' .next/static/chunks/* out/_next/static/chunks/* | wc -l); if [ \"$count\" -gt 0 ]; then echo '❌ Lookbehind regex found in output!'; exit 1; else echo '✅ No lookbehind regex found.'; fi",
"check:all": "pnpm check:translations && pnpm check:lookbehind-regex",
"build-check": "pnpm build && pnpm build-web && pnpm check:all"
},
"dependencies": {
"@aws-sdk/client-s3": "^3.735.0",
"@aws-sdk/s3-request-presigner": "^3.735.0",
"@ducanh2912/next-pwa": "^10.2.9",
"@fabianlars/tauri-plugin-oauth": "2",
"@opennextjs/cloudflare": "^1.13.1",
"@stripe/react-stripe-js": "^3.7.0",
"@stripe/stripe-js": "^7.4.0",
"@supabase/auth-ui-react": "^0.4.7",
"@supabase/auth-ui-shared": "^0.1.8",
"@supabase/supabase-js": "^2.47.7",
"@tauri-apps/api": "2.5.0",
"@tauri-apps/plugin-cli": "^2.2.0",
"@tauri-apps/plugin-deep-link": "^2.2.1",
"@tauri-apps/plugin-dialog": "^2.2.1",
"@tauri-apps/plugin-fs": "^2.2.1",
"@tauri-apps/plugin-haptics": "^2.2.4",
"@tauri-apps/plugin-http": "^2.4.3",
"@tauri-apps/plugin-log": "^2.4.0",
"@tauri-apps/plugin-opener": "^2.2.6",
"@tauri-apps/plugin-os": "^2.2.1",
"@tauri-apps/plugin-process": "^2.2.1",
"@tauri-apps/plugin-shell": "~2.2.1",
"@tauri-apps/plugin-updater": "^2.7.1",
"@supabase/supabase-js": "^2.76.1",
"@tauri-apps/api": "2.9.1",
"@tauri-apps/plugin-cli": "^2.4.1",
"@tauri-apps/plugin-deep-link": "^2.4.5",
"@tauri-apps/plugin-dialog": "^2.4.2",
"@tauri-apps/plugin-fs": "^2.4.4",
"@tauri-apps/plugin-haptics": "^2.3.2",
"@tauri-apps/plugin-http": "^2.5.4",
"@tauri-apps/plugin-log": "^2.7.1",
"@tauri-apps/plugin-opener": "^2.5.2",
"@tauri-apps/plugin-os": "^2.3.2",
"@tauri-apps/plugin-process": "^2.3.1",
"@tauri-apps/plugin-shell": "~2.3.3",
"@tauri-apps/plugin-updater": "^2.9.0",
"@tauri-apps/plugin-websocket": "~2.4.1",
"@zip.js/zip.js": "^2.7.53",
"abortcontroller-polyfill": "^1.7.8",
"app-store-server-api": "^0.17.1",
"aws4fetch": "^1.0.20",
"clsx": "^2.1.1",
"cors": "^2.8.5",
"cssbeautify": "^0.3.1",
"dayjs": "^1.11.13",
"dompurify": "^3.3.0",
"foliate-js": "workspace:*",
"franc-min": "^6.2.0",
"google-auth-library": "^10.5.0",
"googleapis": "^164.1.0",
"highlight.js": "^11.11.1",
"i18next": "^24.2.0",
"i18next-browser-languagedetector": "^8.0.2",
"i18next-http-backend": "^3.0.1",
"iso-639-2": "^3.0.2",
"iso-639-3": "^3.0.1",
"isomorphic-ws": "^5.0.0",
"js-md5": "^0.8.3",
"jwt-decode": "^4.0.0",
"next": "15.2.4",
"marked": "^15.0.12",
"next": "16.0.10",
"overlayscrollbars": "^2.11.4",
"overlayscrollbars-react": "^0.5.6",
"posthog-js": "^1.246.0",
"react": "19.0.0",
"react": "19.2.0",
"react-color": "^2.19.3",
"react-dom": "19.0.0",
"react-dom": "19.2.0",
"react-i18next": "^15.2.0",
"react-icons": "^5.4.0",
"react-responsive": "^10.0.0",
"react-virtuoso": "^4.17.0",
"react-window": "^1.8.11",
"semver": "^7.7.1",
"stripe": "^18.2.1",
"styled-jsx": "^5.1.7",
"tinycolor2": "^1.6.0",
"zustand": "5.0.1"
"uuid": "^11.1.0",
"ws": "^8.18.3",
"zod": "^4.0.8",
"zustand": "5.0.6"
},
"devDependencies": {
"@opennextjs/cloudflare": "^0.5.12",
"@tauri-apps/cli": "2.5.0",
"@next/bundle-analyzer": "^15.4.2",
"@tailwindcss/typography": "^0.5.16",
"@tauri-apps/cli": "2.9.6",
"@testing-library/dom": "^10.4.0",
"@testing-library/react": "^16.3.0",
"@types/cors": "^2.8.17",
"@types/cssbeautify": "^0.3.5",
"@types/node": "^22.10.1",
"@types/node": "^22.15.31",
"@types/react": "18.3.12",
"@types/react-color": "^3.0.13",
"@types/react-dom": "18.3.1",
"@types/react-window": "^1.8.8",
"@types/semver": "^7.7.0",
"@types/tinycolor2": "^1.4.6",
"@types/uuid": "^10.0.0",
"@types/ws": "^8.18.1",
"@typescript-eslint/eslint-plugin": "^8.48.0",
"@typescript-eslint/parser": "^8.48.0",
"@vitejs/plugin-react": "^5.1.1",
"autoprefixer": "^10.4.20",
"caniuse-lite": "^1.0.30001746",
"cpx2": "^8.0.0",
"daisyui": "^4.12.24",
"dotenv-cli": "^7.4.4",
"eslint": "^9.16.0",
"eslint-config-next": "15.0.3",
"eslint-config-next": "16.0.0",
"eslint-plugin-jsx-a11y": "^6.10.2",
"i18next-scanner": "^4.6.0",
"jsdom": "^26.1.0",
"mkdirp": "^3.0.1",
"node-env-run": "^4.0.2",
"postcss": "^8.4.49",
"postcss-cli": "^11.0.0",
"postcss-nested": "^7.0.2",
"raw-loader": "^4.0.2",
"tailwindcss": "^3.4.17",
"tailwindcss": "^3.4.18",
"typescript": "^5.7.2",
"wrangler": "^4.4.0"
"vite-tsconfig-paths": "^5.1.4",
"vitest": "^4.0.15",
"wrangler": "^4.50.0"
}
}
@@ -1,11 +1,15 @@
[
{
"relation": ["delegate_permission/common.handle_all_urls"],
"relation": [
"delegate_permission/common.handle_all_urls",
"delegate_permission/common.get_login_creds"
],
"target": {
"namespace": "android_app",
"package_name": "com.bilingify.readest",
"sha256_cert_fingerprints": [
"65:2D:11:67:76:12:29:14:18:42:CB:3D:18:50:B6:E4:7E:46:E1:2F:4B:E4:7F:5A:6C:14:B6:D7:12:74:1E:82"
"65:2D:11:67:76:12:29:14:18:42:CB:3D:18:50:B6:E4:7E:46:E1:2F:4B:E4:7F:5A:6C:14:B6:D7:12:74:1E:82",
"E0:E7:60:55:80:8D:3A:DE:A0:D1:CF:7C:20:85:40:A3:DD:4B:E6:4D:17:5C:0F:DE:26:57:7D:9C:5B:29:5F:51"
]
}
}
@@ -0,0 +1 @@
ed533042-5626-4704-b5f2-fa3bbd1136ed
Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 449 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 418 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 KiB

@@ -8,7 +8,6 @@
"Auto Mode": "الوضع التلقائي",
"Behavior": "السلوك",
"Book": "الكتاب",
"Book Cover": "غلاف الكتاب",
"Bookmark": "علامة مرجعية",
"Cancel": "إلغاء",
"Chapter": "الفصل",
@@ -18,8 +17,7 @@
"Confirm Deletion": "تأكيد الحذف",
"Copied to notebook": "تم النسخ إلى المفكرة",
"Copy": "نسخ",
"Custom CSS": "CSS مخصص",
"Dark Mode": "الوضع المظلم",
"Dark Mode": "الوضع الداكن",
"Default": "الافتراضي",
"Default Font": "الخط الافتراضي",
"Default Font Size": "حجم الخط الافتراضي",
@@ -28,7 +26,6 @@
"Dictionary": "القاموس",
"Download Readest": "تحميل ريديست",
"Edit": "تحرير",
"Enter your custom CSS here...": "أدخل الـ CSS المخصص هنا...",
"Excerpts": "مقتطفات",
"Failed to import book(s): {{filenames}}": "فشل استيراد الكتاب/الكتب: {{filenames}}",
"Fast": "سريع",
@@ -48,7 +45,6 @@
"Horizontal Direction": "الاتجاه الأفقي",
"Hyphenation": "الواصلة",
"Import Books": "استيراد الكتب",
"Language:": "اللغة:",
"Layout": "التخطيط",
"Light Mode": "الوضع الفاتح",
"Loading...": "جارٍ التحميل...",
@@ -69,9 +65,8 @@
"Page": "الصفحة",
"Paging Animation": "رسوم متحركةعند الانتقال إلى صفحة جديدة",
"Paragraph": "فقرة",
"Parallel Read": "قراءة متوازية",
"Published:": "تاريخ النشر:",
"Publisher:": "الناشر:",
"Published": "تاريخ النشر",
"Publisher": "الناشر",
"Reading Progress Synced": "تمت مزامنة تقدم القراءة",
"Reload Page": "إعادة تحميل الصفحة",
"Reveal in File Explorer": "إظهار في مستكشف الملفات",
@@ -85,7 +80,6 @@
"Search...": "بحث...",
"Select Book": "تحديد الكتاب",
"Select Books": "تحديد الكتب",
"Select Multiple Books": "تحديد عدة كتب",
"Sepia": "بني داكن",
"Serif Font": "خط مذيل (Serif)",
"Show Book Details": "عرض تفاصيل الكتاب",
@@ -96,16 +90,15 @@
"Slow": "بطيء",
"Solarized": "سولاريزد",
"Speak": "تحدث",
"Subjects:": "المواضيع:",
"Subjects": "المواضيع",
"System Fonts": "خطوط النظام",
"TTS not supported in this device": "القراءة الصوتية غير مدعومة في هذا الجهاز",
"Theme Color": "لون السمة",
"Theme Mode": "وضع السمة",
"Translate": "ترجمة",
"Translated Text": "النص المترجم",
"Unknown": "غير معروف",
"Untitled": "بدون عنوان",
"Updated:": "تم التحديث:",
"Updated": "تم التحديث",
"Version {{version}}": "الإصدار {{version}}",
"Vertical Direction": "الاتجاه العمودي",
"Welcome to your library. You can import your books here and read them anytime.": "مرحبًا بكم في مكتبتكم. يمكنكم استيراد كتبكم هنا وقراءتها في أي وقت.",
@@ -114,8 +107,6 @@
"Your Library": "المكتبة الخاصة بك",
"TTS not supported for PDF": "القراءة الصوتية غير مدعومة لملفات PDF",
"Override Book Font": "تجاوز خط الكتاب",
"Vertical Margins (px)": "هوامش عمودية (بكسل)",
"Horizontal Margins (%)": "هوامش أفقية (%)",
"Apply to All Books": "تطبيق على جميع الكتب",
"Apply to This Book": "تطبيق على هذا الكتاب",
"Unable to fetch the translation. Try again later.": "تعذر جلب الترجمة. حاول مرة أخرى لاحقًا.",
@@ -124,14 +115,13 @@
"Book Details": "تفاصيل الكتاب",
"From Local File": "من ملف محلي",
"TOC": "جدول المحتويات",
"Table of Contents": "جدول المحتويات",
"Book uploaded: {{title}}": "تم تحميل الكتاب: {{title}}",
"Failed to upload book: {{title}}": "فشل تحميل الكتاب: {{title}}",
"Book downloaded: {{title}}": "تم تنزيل الكتاب: {{title}}",
"Failed to download book: {{title}}": "فشل تنزيل الكتاب: {{title}}",
"Upload Book": "تحميل الكتاب",
"Auto Upload Books to Cloud": "تحميل الكتب تلقائيًا إلى السحابة",
"{{percentage}}% of Cloud Storage Used.": "تم استخدام {{percentage}}% من مساحة التخزين السحابية.",
"Storage": "التخزين",
"Book deleted: {{title}}": "تم حذف الكتاب: {{title}}",
"Failed to delete book: {{title}}": "فشل حذف الكتاب: {{title}}",
"Check Updates on Start": "التحقق من التحديثات عند البدء",
@@ -163,7 +153,7 @@
"Create a Password": "إنشاء كلمة مرور",
"Sign up": "إنشاء حساب",
"Signing up...": "يتم الآن إنشاء الحساب...",
"Dont have an account? Sign up": "ليس لديك حساب؟ قم بالتسجيل",
"Don't have an account? Sign up": "ليس لديك حساب؟ قم بالتسجيل",
"Check your email for the confirmation link": "تحقق من بريدك الإلكتروني للحصول على رابط التأكيد",
"Signing in ...": "يتم الآن تسجيل الدخول ...",
"Send a magic link email": "إرسال رابط سحري إلى بريدك الإلكتروني",
@@ -186,46 +176,23 @@
"Sign in with Apple": "تسجيل الدخول عبر Apple",
"Sign in with GitHub": "تسجيل الدخول عبر GitHub",
"Account": "الحساب",
"Cloud Storage": "التخزين السحابي",
"Failed to delete user. Please try again later.": "فشل حذف المستخدم. يرجى المحاولة مرة أخرى لاحقًا.",
"Unlimited Offline/Online Reading": "قراءة غير محدودة بدون اتصال/متصلة بالإنترنت",
"Unlimited Cloud Sync Devices": "أجهزة مزامنة سحابية غير محدودة",
"Essential Text-to-Speech Voices": "أصوات أساسية لتحويل النص إلى كلام",
"DeepL Free Access": "وصول مجاني إلى DeepL",
"Community Support": "دعم المجتمع",
"500 MB Cloud Sync Space": "مساحة مزامنة سحابية 500 ميجابايت",
"Includes All Free Tier Benefits": "يتضمن جميع مزايا الفئة المجانية",
"AI Summaries": "ملخصات الذكاء الاصطناعي",
"AI Translations": "ترجمات الذكاء الاصطناعي",
"Priority Support": "دعم ذو أولوية",
"DeepL Pro Access": "وصول إلى DeepL Pro",
"Expanded Text-to-Speech Voices": "أصوات موسعة لتحويل النص إلى كلام",
"2000 MB Cloud Sync Space": "مساحة مزامنة سحابية 2000 ميجابايت",
"Includes All Plus Tier Benefits": "يتضمن جميع مزايا فئة Plus",
"Unlimited AI Summaries": "ملخصات ذكاء اصطناعي غير محدودة",
"Unlimited AI Translations": "ترجمات ذكاء اصطناعي غير محدودة",
"Unlimited DeepL Pro Access": "وصول غير محدود إلى DeepL Pro",
"Advanced AI Tools": "أدوات ذكاء اصطناعي متقدمة",
"Early Feature Access": "وصول مبكر للميزات",
"10 GB Cloud Sync Space": "مساحة مزامنة سحابية 10 جيجابايت",
"Loading profile...": "جارٍ تحميل الملف الشخصي...",
"Features": "الميزات",
"Delete Account": "حذف الحساب",
"Delete Your Account?": "حذف حسابك؟",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "لا يمكن التراجع عن هذا الإجراء. سيتم حذف جميع بياناتك في السحابة بشكل دائم.",
"Delete Permanently": "حذف نهائي",
"Free Tier": "الفئة المجانية",
"Plus Tier": "فئة Plus",
"Pro Tier": "فئة Pro",
"RTL Direction": "الاتجاه من اليمين إلى اليسار",
"Maximum Column Height": "الارتفاع الأقصى للعمود",
"Maximum Column Width": "العرض الأقصى للعمود",
"Continuous Scroll": "التمرير المستمر",
"Fullscreen": "ملء الشاشة",
"No supported files found. Supported formats: {{formats}}": "لم يتم العثور على ملفات مدعومة. الصيغ المدعومة: {{formats}}",
"Drop to Import Books": "اسحب لاستيراد الكتب",
"Drop to Import Books": "قم بالسحب والإسقاط لاستيراد الكتب",
"Custom": "مخصص",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n—William Shakespeare": "العالم مسرح،\nوالناس فيه ممثلون؛\nلهم مخارج ومداخل،\nوالإنسان في حياته يلعب دورًا كثيرًا،\nوأفعاله تمر بسبع مراحل.\n\n— ويليام شكسبير",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "العالم مسرح،\nوالناس فيه ممثلون؛\nلهم مخارج ومداخل،\nوالإنسان في حياته يلعب دورًا كثيرًا،\nوأفعاله تمر بسبع مراحل.\n\n— ويليام شكسبير",
"Custom Theme": "سمة مخصصة",
"Theme Name": "اسم السمة",
"Text Color": "لون النص",
@@ -236,8 +203,8 @@
"Double Border": "حدود مزدوجة",
"Border Color": "لون الحدود",
"Border Frame": "إطار الحدود",
"Show Header": "عرض الرأس",
"Show Footer": "عرض التذييل",
"Show Header": "إظهار الترويسة",
"Show Footer": "إظهار التذييل",
"Small": "صغير",
"Large": "كبير",
"Auto": "تلقائي",
@@ -252,28 +219,28 @@
"Auto Import on File Open": "استيراد تلقائي عند فتح الملف",
"LXGW WenKai GB Screen": "LXGW WenKai SC",
"LXGW WenKai TC": "LXGW WenKai TC",
"No chapters detected.": "لم يتم التعرف على فصول.",
"Failed to parse the EPUB file.": "فشل في تحليل ملف EPUB.",
"This book format is not supported.": "هذا تنسيق الكتاب غير مدعوم.",
"No chapters detected": "لم يتم التعرف على أي فصول",
"Failed to parse the EPUB file": "فشل في تحليل ملف EPUB",
"This book format is not supported": "تنسيق الكتاب هذا غير مدعوم",
"Unable to fetch the translation. Please log in first and try again.": "تعذر جلب الترجمة. يرجى تسجيل الدخول أولاً ثم المحاولة مرة أخرى.",
"Group": "تجميع",
"Always on Top": "دائمًا في المقدمة",
"No Timeout": "لا مهلة",
"No Timeout": "بدون مهلة",
"{{value}} minute": "{{value}} دقيقة",
"{{value}} minutes": "{{value}} دقائق",
"{{value}} hour": "{{value}} ساعة",
"{{value}} hours": "{{value}} ساعات",
"CJK Font": "خط CJK",
"Clear Search": "مسح البحث",
"Header & Footer": "الرأس والتذييل",
"Header & Footer": "الترويسة والتذييل",
"Apply also in Scrolled Mode": "تطبيق أيضًا في وضع التمرير",
"A new version of Readest is Available!": "إصدار جديد من ريديست متاح!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "إصدار ريديست {{newVersion}} متاح (الإصدار المثبت {{currentVersion}}).",
"Download and install now?": "هل ترغب في تنزيل وتثبيت الآن؟",
"A new version of Readest is available!": "يتوفر إصدار جديد من Readest!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "إصدار {{newVersion}} من ريديست متاح للتنزيل (الإصدار المثبت حاليًا {{currentVersion}}).",
"Download and install now?": "هل ترغب في تنزيله وتثبيته الآن؟",
"Downloading {{downloaded}} of {{contentLength}}": "جارٍ تنزيل {{downloaded}} من {{contentLength}}",
"Download finished": "اكتمل التنزيل",
"DOWNLOAD & INSTALL": "تنزيل وتثبيت",
"Changelog:": "سجل التغييرات:",
"Changelog": "سجل التغييرات",
"Software Update": "تحديث البرنامج",
"Title": "العنوان",
"Date Read": "تاريخ القراءة",
@@ -282,27 +249,24 @@
"Ascending": "تصاعدي",
"Descending": "تنازلي",
"Sort by...": "ترتيب حسب...",
"Added:": "تاريخ الإضافة:",
"Format:": "التنسيق:",
"Added": "تاريخ الإضافة",
"GuanKiapTsingKhai-T": "GuanKiapTsingKhai-T",
"Description:": "الوصف:",
"Description": "الوصف",
"No description available": "لا يوجد وصف متاح",
"List": "قائمة",
"Grid": "شبكة",
"(from 'As You Like It', Act II)": "(من 'كما تحب'، الفصل الثاني)",
"Link Color": "لون الرابط",
"Volume Keys for Page Flip": "مفاتيح الصوت لتقليب الصفحات",
"Clicks for Page Flip": "نقرات لتقليب الصفحات",
"Swap Clicks Area": "تبديل منطقة النقرات",
"Screen": "الشاشة",
"Orientation": "الاتجاه",
"Portrait": "العمودي",
"Landscape": "الأفقي",
"Portrait": "عمودي",
"Landscape": "أفقي",
"Open Last Book on Start": "فتح آخر كتاب عند البدء",
"Checking for updates...": "جارٍ التحقق من التحديثات...",
"Error checking for updates": "خطأ في التحقق من التحديثات",
"Details": "التفاصيل",
"File Size:": "حجم الملف:",
"File Size": "حجم الملف",
"Auto Detect": "الكشف التلقائي",
"Next Section": "القسم التالي",
"Previous Section": "القسم السابق",
@@ -315,14 +279,14 @@
"Are you sure to delete {{count}} selected book(s)?_many": "هل أنت متأكد من حذف {{count}} كتابًا محددًا؟",
"Are you sure to delete {{count}} selected book(s)?_other": "هل أنت متأكد من حذف {{count}} من الكتب المحددة؟",
"Are you sure to delete the selected book?": "هل أنت متأكد من حذف الكتاب المحدد؟",
"Deselect": "إلغاء",
"Select All": "الكل",
"Deselect": "إلغاء التحديد",
"Select All": "تحديد الكل",
"No translation available.": "لا توجد ترجمة متاحة.",
"Translated by {{provider}}.": "ترجم بواسطة {{provider}}.",
"DeepL": "ديب إل",
"Google Translate": "ترجمة جوجل",
"Azure Translator": "مترجم أزور",
"Invert Image In Dark Mode": "عكس الصورة في الوضع المظلم",
"Translated by {{provider}}.": مت الترجمة بواسطة {{provider}}.",
"DeepL": "DeepL",
"Google Translate": "ترجمة Google",
"Azure Translator": "مترجم Azure",
"Invert Image In Dark Mode": "عكس ألوان الصورة في الوضع الداكن",
"Help improve Readest": "ساعد في تحسين ريديست",
"Sharing anonymized statistics": "مشاركة إحصائيات مجهولة الهوية",
"Interface Language": "لغة الواجهة",
@@ -333,9 +297,513 @@
"Disable Translation": "تعطيل الترجمة",
"Scroll": "تمرير",
"Overlap Pixels": "تداخل البكسلات",
"Click": "نقر",
"System Language": "لغة النظام",
"Security": "الأمان",
"Allow JavaScript": "السماح بـ JavaScript",
"Enable only if you trust the file.": "تمكين فقط إذا كنت تثق في الملف."
"Enable only if you trust the file.": "قم بالتمكين فقط في حال وثوقك بالملف.",
"Sort TOC by Page": "ترتيب جدول المحتويات حسب الصفحة",
"Search in {{count}} Book(s)..._zero": "بحث في الكتب...",
"Search in {{count}} Book(s)..._one": "بحث في كتاب...",
"Search in {{count}} Book(s)..._two": "بحث في كتابين...",
"Search in {{count}} Book(s)..._few": "بحث في {{count}} كتب...",
"Search in {{count}} Book(s)..._many": "بحث في {{count}} كتابًا...",
"Search in {{count}} Book(s)..._other": "بحث في {{count}} من الكتب...",
"No notes match your search": "لا توجد ملاحظات تطابق بحثك",
"Search notes and excerpts...": "بحث في الملاحظات والمقتطفات...",
"Sign in to Sync": "قم بتسجيل الدخول للمزامنة",
"Synced at {{time}}": "تمت المزامنة في {{time}}",
"Never synced": "لم تتم المزامنة بعد",
"Show Remaining Time": "إظهار الوقت المتبقي",
"{{time}} min left in chapter": "{{time}} دقيقة متبقية حتى نهاية الفصل",
"Override Book Color": "تجاوز لون الكتاب",
"Login Required": "يتطلب الأمر تسجيل الدخول",
"Quota Exceeded": "تجاوزت الحصة المخصصة",
"{{percentage}}% of Daily Translation Characters Used.": "تم استخدام ما نسبته {{percentage}}% من إجمالي أحرف الترجمة المسموح بها يوميًا.",
"Translation Characters": "أحرف الترجمة",
"{{engine}}: {{count}} voices_zero": "{{engine}}: لا توجد أصوات",
"{{engine}}: {{count}} voices_one": "{{engine}}: صوت واحد",
"{{engine}}: {{count}} voices_two": "{{engine}}: صوتان",
"{{engine}}: {{count}} voices_few": "{{engine}}: {{count}} أصوات",
"{{engine}}: {{count}} voices_many": "{{engine}}: {{count}} صوتاً",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}} صوت",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "حدث خطأ ما. لا تقلق، لقد تم إبلاغ فريقنا ونحن نعمل على إصلاحه.",
"Error Details:": "تفاصيل الخطأ:",
"Try Again": "حاول مرة أخرى",
"Need help?": "تحتاج مساعدة؟",
"Contact Support": "اتصل بالدعم الفني",
"Code Highlighting": "تمييز الكود",
"Enable Highlighting": "تمكين التمييز",
"Code Language": "لغة الكود",
"Top Margin (px)": "الهامش العلوي (بكسل)",
"Bottom Margin (px)": "الهامش السفلي (بكسل)",
"Right Margin (px)": "الهامش الأيمن (بكسل)",
"Left Margin (px)": "الهامش الأيسر (بكسل)",
"Column Gap (%)": "تباعد الأعمدة (%)",
"Always Show Status Bar": "دائمًا إظهار شريط الحالة",
"Custom Content CSS": "CSS مخصص للمحتوى",
"Enter CSS for book content styling...": "أدخل CSS لتنسيق محتوى الكتاب...",
"Custom Reader UI CSS": "CSS مخصص لواجهة القارئ",
"Enter CSS for reader interface styling...": "أدخل CSS لتنسيق واجهة القارئ...",
"Crop": "قص",
"Book Covers": "أغلفة الكتب",
"Fit": "ملاءمة",
"Reset {{settings}}": "إعادة تعيين {{settings}}",
"Reset Settings": "إعادة تعيين الإعدادات",
"{{count}} pages left in chapter_zero": "لم يتبق أي صفحات في هذا الفصل",
"{{count}} pages left in chapter_one": "تبقّت صفحة واحدة في هذا الفصل",
"{{count}} pages left in chapter_two": "تبقّت صفحتان في هذا الفصل",
"{{count}} pages left in chapter_few": "تبقّت {{count}} صفحات في هذا الفصل",
"{{count}} pages left in chapter_many": "تبقّت {{count}} صفحة في هذا الفصل",
"{{count}} pages left in chapter_other": "تبقّى {{count}} صفحة في هذا الفصل",
"Show Remaining Pages": "عرض الصفحات المتبقية",
"Source Han Serif CN VF": "Source Han Serif",
"Huiwen-mincho": "Huiwen Mincho",
"KingHwa_OldSong": "KingHwa Song",
"Manage Subscription": "إدارة الاشتراك",
"Coming Soon": "قريبًا",
"Upgrade to {{plan}}": "الترقية إلى {{plan}}",
"Upgrade to Plus or Pro": "الترقية إلى Plus أو Pro",
"Current Plan": "الخطة الحالية",
"Plan Limits": "حدود الخطة",
"Processing your payment...": "جارٍ معالجة الدفع...",
"Please wait while we confirm your subscription.": "يرجى الانتظار بينما نقوم بتأكيد اشتراكك.",
"Payment Processing": "معالجة الدفع",
"Your payment is being processed. This usually takes a few moments.": "يتم الآن معالجة الدفع الخاص بك. عادةً ما يستغرق ذلك بضع لحظات.",
"Payment Failed": "فشل الدفع",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "تعذر علينا معالجة اشتراكك. يرجى المحاولة مرة أخرى أو التواصل مع الدعم إذا استمرت المشكلة.",
"Back to Profile": "العودة إلى الملف الشخصي",
"Subscription Successful!": "تم الاشتراك بنجاح!",
"Thank you for your subscription! Your payment has been processed successfully.": "شكرًا لاشتراكك! تم معالجة الدفع بنجاح.",
"Email:": "البريد الإلكتروني:",
"Plan:": "الخطة:",
"Amount:": "المبلغ:",
"Go to Library": "الانتقال إلى المكتبة",
"Need help? Contact our support team at support@readest.com": "تحتاج مساعدة؟ تواصل مع فريق الدعم على support@readest.com",
"Free Plan": "الخطة المجانية",
"month": "شهر",
"AI Translations (per day)": "ترجمات بالذكاء الاصطناعي (يوميًا)",
"Plus Plan": "خطة Plus",
"Includes All Free Plan Benefits": "تتضمن جميع مزايا الخطة المجانية",
"Pro Plan": "خطة Pro",
"More AI Translations": "المزيد من الترجمات بالذكاء الاصطناعي",
"Complete Your Subscription": "أكمل اشتراكك",
"{{percentage}}% of Cloud Sync Space Used.": "تم استخدام {{percentage}}% من مساحة المزامنة السحابية.",
"Cloud Sync Storage": "مساحة المزامنة السحابية",
"Parallel Read": "القراءة المتزامنة",
"Disable": "تعطيل",
"Enable": "تمكين",
"Upgrade to Readest Premium": "ترقية إلى Readest Premium",
"Show Source Text": "عرض النص المصدر",
"Cross-Platform Sync": "مزامنة عبر الأجهزة",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "زامن مكتبتك وتقدمك وملاحظاتك عبر جميع أجهزتك بسهولة.",
"Customizable Reading": "قراءة قابلة للتخصيص",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "خصص الخطوط والتنسيقات والألوان لتجربة قراءة مثالية.",
"AI Read Aloud": "القراءة بالصوت عبر الذكاء الاصطناعي",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "استمع للكتب بأصوات طبيعية بدون استخدام اليدين.",
"AI Translations": "ترجمة ذكية",
"Connect with fellow readers and get help fast in our friendly community channels.": "تواصل مع القراء واحصل على الدعم بسرعة.",
"Unlimited AI Read Aloud Hours": "ساعات قراءة غير محدودة",
"Listen without limits—convert as much text as you like into immersive audio.": "استمع بلا حدود وحوّل النص لصوت بسهولة.",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "استمتع بترجمة موسعة وخيارات متقدمة.",
"DeepL Pro Access": "وصول DeepL Pro",
"Enjoy faster responses and dedicated assistance whenever you need help.": "احصل على دعم سريع ومخصص عند الحاجة.",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "تم استهلاك حصة الترجمة اليومية. قم بالترقية للاستمرار.",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "ترجم أي نص فورًا بقوة Google أو Azure أو DeepL—افهم المحتوى بأي لغة.",
"Includes All Plus Plan Benefits": "يشمل جميع مزايا خطة بلس",
"Early Feature Access": "الوصول المبكر للميزات",
"Be the first to explore new features, updates, and innovations before anyone else.": "كن أول من يستكشف الميزات والتحديثات والابتكارات الجديدة.",
"Advanced AI Tools": "أدوات الذكاء الاصطناعي المتقدمة",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "استخدم أدوات الذكاء الاصطناعي القوية للقراءة الذكية والترجمة واكتشاف المحتوى.",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "ترجم حتى 100 ألف حرف يوميًا بأدق محرك ترجمة متاح.",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "ترجم حتى 500 ألف حرف يوميًا بأدق محرك ترجمة متاح.",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "احفظ واوصل لمجموعة قراءتك كاملة بـ 5 جيجابايت تخزين سحابي آمن.",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "احفظ واوصل لمجموعة قراءتك كاملة بـ 20 جيجابايت تخزين سحابي آمن.",
"Deleted cloud backup of the book: {{title}}": "تم حذف النسخة الاحتياطية السحابية للكتاب: {{title}}",
"Are you sure to delete the cloud backup of the selected book?": "هل أنت متأكد من حذف النسخة الاحتياطية السحابية للكتاب المحدد؟",
"What's New in Readest": "ما الجديد في Readest",
"Enter book title": "أدخل عنوان الكتاب",
"Subtitle": "العنوان الفرعي",
"Enter book subtitle": "أدخل العنوان الفرعي للكتاب",
"Enter author name": "أدخل اسم المؤلف",
"Series": "السلسلة",
"Enter series name": "أدخل اسم السلسلة",
"Series Index": "رقم الكتاب في السلسلة",
"Enter series index": "أدخل رقم الكتاب في السلسلة",
"Total in Series": "العدد الكلي في السلسلة",
"Enter total books in series": "أدخل العدد الكلي للكتب في السلسلة",
"Enter publisher": "أدخل اسم الناشر",
"Publication Date": "تاريخ النشر",
"Identifier": "المعرف",
"Enter book description": "أدخل وصف الكتاب",
"Change cover image": "تغيير صورة الغلاف",
"Replace": "استبدال",
"Unlock cover": "إلغاء قفل الغلاف",
"Lock cover": "قفل الغلاف",
"Auto-Retrieve Metadata": "استرجاع البيانات الوصفية تلقائياً",
"Auto-Retrieve": "استرجاع تلقائي",
"Unlock all fields": "إلغاء قفل جميع الحقول",
"Unlock All": "إلغاء قفل الكل",
"Lock all fields": "قفل جميع الحقول",
"Lock All": "قفل الكل",
"Reset": "إعادة تعيين",
"Edit Metadata": "تحرير البيانات الوصفية",
"Locked": "مقفل",
"Select Metadata Source": "اختر مصدر البيانات الوصفية",
"Keep manual input": "الاحتفاظ بالإدخال اليدوي",
"Google Books": "كتب جوجل",
"Open Library": "المكتبة المفتوحة",
"Fiction, Science, History": "خيال، علوم، تاريخ",
"Open Book in New Window": "فتح الكتاب في نافذة جديدة",
"Voices for {{lang}}": "الأصوات لـ {{lang}}",
"Yandex Translate": "ترجمة Yandex",
"YYYY or YYYY-MM-DD": "YYYY أو YYYY-MM-DD",
"Restore Purchase": "استعادة الشراء",
"No purchases found to restore.": "لا توجد مشتريات لاستعادتها.",
"Failed to restore purchases.": "فشل في استعادة المشتريات.",
"Failed to manage subscription.": "فشل في إدارة الاشتراك.",
"Failed to load subscription plans.": "فشل في تحميل خطط الاشتراك.",
"year": "سنة",
"Failed to create checkout session": "فشل في إنشاء جلسة الدفع",
"Storage": "التخزين",
"Terms of Service": "شروط الخدمة",
"Privacy Policy": "سياسة الخصوصية",
"Disable Double Click": "تعطيل النقر المزدوج",
"TTS not supported for this document": "تكنولوجيا تحويل النص إلى كلام غير مدعومة لهذا المستند.",
"Reset Password": "إعادة تعيين",
"Show Reading Progress": "إظهار تقدم القراءة",
"Reading Progress Style": "نمط تقدم القراءة",
"Page Number": "رقم الصفحة",
"Percentage": "النسبة المئوية",
"Deleted local copy of the book: {{title}}": "تم حذف النسخة المحلية للكتاب: {{title}}",
"Failed to delete cloud backup of the book: {{title}}": "فشل في حذف النسخة الاحتياطية السحابية للكتاب: {{title}}",
"Failed to delete local copy of the book: {{title}}": "فشل في حذف النسخة المحلية للكتاب: {{title}}",
"Are you sure to delete the local copy of the selected book?": "هل أنت متأكد من حذف النسخة المحلية للكتاب المحدد؟",
"Remove from Cloud & Device": "إزالة من السحابة والجهاز",
"Remove from Cloud Only": "إزالة من السحابة فقط",
"Remove from Device Only": "إزالة من الجهاز فقط",
"Disconnected": "غير متصل",
"KOReader Sync Settings": "إعدادات مزامنة KOReader",
"Sync Strategy": "استراتيجية المزامنة",
"Ask on conflict": "اسأل عند حدوث تعارض",
"Always use latest": "استخدام الأحدث دائمًا",
"Send changes only": "إرسال التغييرات فقط",
"Receive changes only": "استلام التغييرات فقط",
"Checksum Method": "طريقة التحقق من الصحة",
"File Content (recommended)": "محتوى الملف (موصى به)",
"File Name": "اسم الملف",
"Device Name": "اسم الجهاز",
"Connect to your KOReader Sync server.": "الاتصال بخادم مزامنة KOReader الخاص بك.",
"Server URL": "عنوان URL للخادم",
"Username": "اسم المستخدم",
"Your Username": "اسم المستخدم الخاص بك",
"Password": "كلمة المرور",
"Connect": "الاتصال",
"KOReader Sync": "مزامنة KOReader",
"Sync Conflict": "تعارض المزامنة",
"Sync reading progress from \"{{deviceName}}\"?": "مزامنة تقدم القراءة من \"{{deviceName}}\"؟",
"another device": "جهاز آخر",
"Local Progress": "التقدم المحلي",
"Remote Progress": "التقدم البعيد",
"Page {{page}} of {{total}} ({{percentage}}%)": "الصفحة {{page}} من {{total}} ({{percentage}}%)",
"Current position": "الموقع الحالي",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "تقريبًا الصفحة {{page}} من {{total}} ({{percentage}}%)",
"Approximately {{percentage}}%": "تقريبًا {{percentage}}%",
"Failed to connect": "فشل في الاتصال",
"Sync Server Connected": "تم الاتصال بخادم المزامنة",
"Sync as {{userDisplayName}}": "المزامنة كـ {{userDisplayName}}",
"Custom Fonts": "الخطوط المخصصة",
"Cancel Delete": "إلغاء الحذف",
"Import Font": "استيراد خط",
"Delete Font": "حذف الخط",
"Tips": "نصائح",
"Custom fonts can be selected from the Font Face menu": "يمكن اختيار الخطوط المخصصة من قائمة نوع الخط",
"Manage Custom Fonts": "إدارة الخطوط المخصصة",
"Select Files": "حدد الملفات",
"Select Image": "حدد صورة",
"Select Video": "حدد فيديو",
"Select Audio": "حدد صوت",
"Select Fonts": "حدد الخطوط",
"Supported font formats: .ttf, .otf, .woff, .woff2": "تنسيقات الخط المدعومة: .ttf، .otf، .woff، .woff2",
"Push Progress": "تقدم الدفع",
"Pull Progress": "تقدم السحب",
"Previous Paragraph": "الفقرة السابقة",
"Previous Sentence": "الجملة السابقة",
"Pause": "إيقاف مؤقت",
"Play": "تشغيل",
"Next Sentence": "الجملة التالية",
"Next Paragraph": "الفقرة التالية",
"Separate Cover Page": "صفحة غلاف منفصلة",
"Resize Notebook": "تغيير حجم المفكرة",
"Resize Sidebar": "تغيير حجم الشريط الجانبي",
"Get Help from the Readest Community": "الحصول على المساعدة من مجتمع ريديست",
"Remove cover image": "إزالة صورة الغلاف",
"Bookshelf": "رف الكتب",
"View Menu": "عرض القائمة",
"Settings Menu": "إعدادات القائمة",
"View account details and quota": "عرض تفاصيل الحساب والحصة المخصصة",
"Library Header": "رأس المكتبة",
"Book Content": "محتوى الكتاب",
"Footer Bar": "شريط التذييل",
"Header Bar": "شريط الرأس",
"View Options": "خيارات العرض",
"Book Menu": "قائمة الكتاب",
"Search Options": "خيارات البحث",
"Close": "إغلاق",
"Delete Book Options": "خيارات حذف الكتاب",
"ON": "تشغيل",
"OFF": "إيقاف",
"Reading Progress": "تقدم القراءة",
"Page Margin": "هامش الصفحة",
"Remove Bookmark": "إزالة العلامة",
"Add Bookmark": "إضافة علامة",
"Books Content": "محتوى الكتب",
"Jump to Location": "الانتقال إلى الموقع",
"Unpin Notebook": "إلغاء تثبيت المفكرة",
"Pin Notebook": "تثبيت المفكرة",
"Hide Search Bar": "إخفاء شريط البحث",
"Show Search Bar": "إظهار شريط البحث",
"On {{current}} of {{total}} page": "على الصفحة {{current}} من {{total}}",
"Section Title": "عنوان القسم",
"Decrease": "تقليل",
"Increase": "زيادة",
"Settings Panels": "لوحات الإعدادات",
"Settings": "الإعدادات",
"Unpin Sidebar": "إلغاء تثبيت الشريط الجانبي",
"Pin Sidebar": "تثبيت الشريط الجانبي",
"Toggle Sidebar": "تبديل الشريط الجانبي",
"Toggle Translation": "تبديل الترجمة",
"Translation Disabled": "تم تعطيل الترجمة",
"Minimize": "تصغير",
"Maximize or Restore": "تكبير أو استعادة",
"Exit Parallel Read": "الخروج من القراءة المتزامنة",
"Enter Parallel Read": "الدخول في القراءة المتزامنة",
"Zoom Level": "مستوى التكبير",
"Zoom Out": "تصغير",
"Reset Zoom": "إعادة تعيين التكبير",
"Zoom In": "تكبير",
"Zoom Mode": "وضع التكبير",
"Single Page": "صفحة واحدة",
"Auto Spread": "انتشار تلقائي",
"Fit Page": "تناسب الصفحة",
"Fit Width": "تناسب العرض",
"Failed to select directory": "فشل في اختيار الدليل",
"The new data directory must be different from the current one.": "يجب أن يكون دليل البيانات الجديد مختلفًا عن الدليل الحالي.",
"Migration failed: {{error}}": "فشل في الترحيل: {{error}}",
"Change Data Location": "تغيير موقع البيانات",
"Current Data Location": "موقع البيانات الحالي",
"Total size: {{size}}": "الحجم الكلي: {{size}}",
"Calculating file info...": "جارٍ حساب معلومات الملف...",
"New Data Location": "موقع البيانات الجديد",
"Choose Different Folder": "اختر مجلدًا مختلفًا",
"Choose New Folder": "اختر مجلدًا جديدًا",
"Migrating data...": "جارٍ ترحيل البيانات...",
"Copying: {{file}}": "جارٍ نسخ: {{file}}",
"{{current}} of {{total}} files": "{{current}} من {{total}} ملف",
"Migration completed successfully!": "اكتمل الترحيل بنجاح!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "تم نقل بياناتك إلى الموقع الجديد. يرجى إعادة تشغيل التطبيق لإكمال العملية.",
"Migration failed": "فشل في الترحيل",
"Important Notice": "إشعار مهم",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "سيؤدي ذلك إلى نقل جميع بيانات التطبيق الخاصة بك إلى الموقع الجديد. تأكد من أن الوجهة تحتوي على مساحة خالية كافية.",
"Restart App": "إعادة تشغيل التطبيق",
"Start Migration": "بدء الترحيل",
"Advanced Settings": "إعدادات متقدمة",
"File count: {{size}}": "عدد الملفات: {{size}}",
"Background Read Aloud": "قراءة بصوت عالٍ في الخلفية",
"Ready to read aloud": "جاهز للقراءة بصوت عالٍ",
"Read Aloud": "القراءة بصوت عالٍ",
"Screen Brightness": "سطوع الشاشة",
"Background Image": "صورة الخلفية",
"Import Image": "استيراد صورة",
"Opacity": "شفافية",
"Size": "حجم",
"Cover": "غطاء",
"Contain": "احتواء",
"{{number}} pages left in chapter": "تبقّت {{number}} صفحات في هذا الفصل",
"Device": "الجهاز",
"E-Ink Mode": "وضع الحبر الإلكتروني",
"Highlight Colors": "ألوان التمييز",
"Auto Screen Brightness": "سطوع الشاشة التلقائي",
"Pagination": "التقسيم إلى صفحات",
"Disable Double Tap": "تعطيل النقر المزدوج",
"Tap to Paginate": "اضغط للتقسيم إلى صفحات",
"Click to Paginate": "انقر للتقسيم إلى صفحات",
"Tap Both Sides": "اضغط على كلا الجانبين",
"Click Both Sides": "انقر على كلا الجانبين",
"Swap Tap Sides": "تبديل جانبي اللمس",
"Swap Click Sides": "تبديل جانبي النقر",
"Source and Translated": "المصدر والمترجم",
"Translated Only": "المترجم فقط",
"Source Only": "المصدر فقط",
"TTS Text": "نص تحويل النص إلى كلام",
"The book file is corrupted": "ملف الكتاب تالف",
"The book file is empty": "ملف الكتاب فارغ",
"Failed to open the book file": "فشل في فتح ملف الكتاب",
"On-Demand Purchase": "الشراء عند الطلب",
"Full Customization": "تخصيص كامل",
"Lifetime Plan": "خطة مدى الحياة",
"One-Time Payment": "دفعة لمرة واحدة",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "قم بإجراء دفعة واحدة للاستمتاع بالوصول مدى الحياة إلى ميزات معينة على جميع الأجهزة. اشترِ ميزات أو خدمات معينة فقط عند الحاجة إليها.",
"Expand Cloud Sync Storage": "توسيع مساحة تخزين السحابة",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "قم بتوسيع مساحة التخزين السحابية الخاصة بك إلى الأبد من خلال عملية شراء لمرة واحدة. كل عملية شراء إضافية تضيف المزيد من المساحة.",
"Unlock All Customization Options": "فتح جميع خيارات التخصيص",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "فتح سمات إضافية، خطوط، خيارات تخطيط، وخدمات قراءة بصوت عالٍ، ومترجمين، وخدمات تخزين سحابية.",
"Purchase Successful!": "تمت عملية الشراء بنجاح!",
"lifetime": "مدى الحياة",
"Thank you for your purchase! Your payment has been processed successfully.": "شكرًا لشرائك! تم معالجة الدفع بنجاح.",
"Order ID:": "معرف الطلب:",
"TTS Highlighting": "تمييز تحويل النص إلى كلام",
"Style": "النمط",
"Underline": "تسطير",
"Strikethrough": "يتوسطه خط",
"Squiggly": "متعرج",
"Outline": "مخطط",
"Save Current Color": "حفظ اللون الحالي",
"Quick Colors": "ألوان سريعة",
"Highlighter": "محدد النص",
"Save Book Cover": "حفظ غلاف الكتاب",
"Auto-save last book cover": "حفظ غلاف الكتاب الأخير تلقائيًا",
"Back": "عودة",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "تم إرسال بريد التأكيد! يرجى التحقق من عناوين بريدك الإلكتروني القديمة والجديدة لتأكيد التغيير.",
"Failed to update email": "فشل في تحديث البريد الإلكتروني",
"New Email": "البريد الإلكتروني الجديد",
"Your new email": "بريدك الإلكتروني الجديد",
"Updating email ...": "جارٍ تحديث البريد الإلكتروني ...",
"Update email": "تحديث البريد الإلكتروني",
"Current email": "البريد الإلكتروني الحالي",
"Update Email": "تحديث البريد الإلكتروني",
"All": "الكل",
"Unable to open book": "غير قادر على فتح الكتاب",
"Punctuation": "علامات الترقيم",
"Replace Quotation Marks": "استبدال علامات الاقتباس",
"Enabled only in vertical layout.": "مفعل فقط في التخطيط الرأسي.",
"No Conversion": "لا تحويل",
"Simplified to Traditional": "من المبسّط إلى التقليدي",
"Traditional to Simplified": "من التقليدي إلى المبسّط",
"Simplified to Traditional (Taiwan)": "مبسّط → تقليدي (تايوان)",
"Simplified to Traditional (Hong Kong)": "مبسّط → تقليدي (هونغ كونغ)",
"Simplified to Traditional (Taiwan), with phrases": "مبسّط → تقليدي (تايوان • عبارات)",
"Traditional (Taiwan) to Simplified": "تقليدي (تايوان) → مبسّط",
"Traditional (Hong Kong) to Simplified": "تقليدي (هونغ كونغ) → مبسّط",
"Traditional (Taiwan) to Simplified, with phrases": "تقليدي (تايوان • عبارات) → مبسّط",
"Convert Simplified and Traditional Chinese": "تحويل المبسّط/التقليدي",
"Convert Mode": "وضع التحويل",
"Failed to auto-save book cover for lock screen: {{error}}": "فشل في الحفظ التلقائي لغلاف الكتاب لشاشة القفل: {{error}}",
"Download from Cloud": "تحميل من السحابة",
"Upload to Cloud": "رفع إلى السحابة",
"Clear Custom Fonts": "مسح الخطوط المخصصة",
"Columns": "الأعمدة",
"OPDS Catalogs": "كتالوجات OPDS",
"Adding LAN addresses is not supported in the web app version.": "لا يتم دعم إضافة عناوين LAN في إصدار تطبيق الويب.",
"Invalid OPDS catalog. Please check the URL.": "كتالوج OPDS غير صالح. يرجى التحقق من عنوان URL.",
"Browse and download books from online catalogs": "تصفح وتنزيل الكتب من الكتالوجات عبر الإنترنت",
"My Catalogs": "كتالوجاتي",
"Add Catalog": "إضافة كتالوج",
"No catalogs yet": "لا توجد كتالوجات بعد",
"Add your first OPDS catalog to start browsing books": "أضف كتالوج OPDS الأول لتبدأ في تصفح الكتب",
"Add Your First Catalog": "أضف كتالوجك الأول",
"Browse": "تصفح",
"Popular Catalogs": "الكتالوجات الشائعة",
"Add": "إضافة",
"Add OPDS Catalog": "إضافة كتالوج OPDS",
"Catalog Name": "اسم الكتالوج",
"My Calibre Library": "مكتبة Calibre الخاصة بي",
"OPDS URL": "رابط OPDS",
"Username (optional)": "اسم المستخدم (اختياري)",
"Password (optional)": "كلمة المرور (اختياري)",
"Description (optional)": "الوصف (اختياري)",
"A brief description of this catalog": "وصف موجز لهذا الكتالوج",
"Validating...": "جارٍ التحقق...",
"View All": "عرض الكل",
"Forward": "إلى الأمام",
"Home": "الصفحة الرئيسية",
"{{count}} items_zero": "{{count}} عناصر",
"{{count}} items_one": "{{count}} عنصر",
"{{count}} items_two": "{{count}} عنصران",
"{{count}} items_few": "{{count}} عناصر",
"{{count}} items_many": "{{count}} عنصرًا",
"{{count}} items_other": "{{count}} من العناصر",
"Download completed": "اكتمل التنزيل",
"Download failed": "فشل التنزيل",
"Open Access": "الوصول المفتوح",
"Borrow": "استعارة",
"Buy": "شراء",
"Subscribe": "الاشتراك",
"Sample": "عينة",
"Download": "تنزيل",
"Open & Read": "فتح وقراءة",
"Tags": "العلامات",
"Tag": "علامة",
"First": "الأول",
"Previous": "السابق",
"Next": "التالي",
"Last": "الأخير",
"Cannot Load Page": "تعذر تحميل الصفحة",
"An error occurred": "حدث خطأ ما",
"Online Library": "المكتبة عبر الإنترنت",
"URL must start with http:// or https://": "يجب أن يبدأ عنوان URL بـ http:// أو https://",
"Title, Author, Tag, etc...": "العنوان، المؤلف، العلامة، إلخ...",
"Query": "استعلام",
"Subject": "موضوع",
"Enter {{terms}}": "أدخل {{terms}}",
"No search results found": "لم يتم العثور على نتائج بحث",
"Failed to load OPDS feed: {{status}} {{statusText}}": "فشل في تحميل تغذية OPDS: {{status}} {{statusText}}",
"Search in {{title}}": "البحث في {{title}}",
"Manage Storage": "إدارة التخزين",
"Failed to load files": "فشل في تحميل الملفات",
"Deleted {{count}} file(s)_zero": "لم يتم حذف أي ملفات",
"Deleted {{count}} file(s)_one": "تم حذف ملف واحد",
"Deleted {{count}} file(s)_two": "تم حذف ملفين",
"Deleted {{count}} file(s)_few": "تم حذف {{count}} ملفات",
"Deleted {{count}} file(s)_many": "تم حذف {{count}} ملفًا",
"Deleted {{count}} file(s)_other": "تم حذف {{count}} ملف",
"Failed to delete {{count}} file(s)_zero": "فشل حذف أي ملفات",
"Failed to delete {{count}} file(s)_one": "فشل حذف ملف واحد",
"Failed to delete {{count}} file(s)_two": "فشل حذف ملفين",
"Failed to delete {{count}} file(s)_few": "فشل حذف {{count}} ملفات",
"Failed to delete {{count}} file(s)_many": "فشل حذف {{count}} ملفًا",
"Failed to delete {{count}} file(s)_other": "فشل حذف {{count}} ملف",
"Failed to delete files": "فشل حذف الملفات",
"Total Files": "إجمالي الملفات",
"Total Size": "إجمالي الحجم",
"Quota": "الحصة",
"Used": "المستخدم",
"Files": "الملفات",
"Search files...": "ابحث في الملفات...",
"Newest First": "الأحدث أولاً",
"Oldest First": "الأقدم أولاً",
"Largest First": "الأكبر أولاً",
"Smallest First": "الأصغر أولاً",
"Name A-Z": "الاسم من أ إلى ي",
"Name Z-A": "الاسم من ي إلى أ",
"{{count}} selected_zero": "لا يوجد عناصر محددة",
"{{count}} selected_one": "عنصر واحد محدد",
"{{count}} selected_two": "عنصران محددان",
"{{count}} selected_few": "{{count}} عناصر محددة",
"{{count}} selected_many": "{{count}} عنصرًا محددًا",
"{{count}} selected_other": "{{count}} عنصر محدد",
"Delete Selected": "حذف المحدد",
"Created": "تاريخ الإنشاء",
"No files found": "لا توجد ملفات",
"No files uploaded yet": "لم يتم رفع أي ملفات بعد",
"files": "الملفات",
"Page {{current}} of {{total}}": "الصفحة {{current}} من {{total}}",
"Are you sure to delete {{count}} selected file(s)?_zero": "هل أنت متأكد من حذف العناصر المحددة؟ (لا توجد عناصر)",
"Are you sure to delete {{count}} selected file(s)?_one": "هل أنت متأكد من حذف ملف واحد محدد؟",
"Are you sure to delete {{count}} selected file(s)?_two": "هل أنت متأكد من حذف ملفين محددين؟",
"Are you sure to delete {{count}} selected file(s)?_few": "هل أنت متأكد من حذف {{count}} ملفات محددة؟",
"Are you sure to delete {{count}} selected file(s)?_many": "هل أنت متأكد من حذف {{count}} ملفًا محددًا؟",
"Are you sure to delete {{count}} selected file(s)?_other": "هل أنت متأكد من حذف {{count}} ملف محدد؟",
"Cloud Storage Usage": "استخدام التخزين السحابي",
"Rename Group": "إعادة تسمية المجموعة",
"From Directory": "من الدليل",
"Successfully imported {{count}} book(s)_zero": "لم يتم استيراد أي كتب",
"Successfully imported {{count}} book(s)_one": "تم استيراد كتاب واحد",
"Successfully imported {{count}} book(s)_two": "تم استيراد كتابين",
"Successfully imported {{count}} book(s)_few": "تم استيراد {{count}} كتب",
"Successfully imported {{count}} book(s)_many": "تم استيراد {{count}} كتابًا",
"Successfully imported {{count}} book(s)_other": "تم استيراد {{count}} كتاب",
"Count": "العدد",
"Start Page": "الصفحة الأولى",
"Search in OPDS Catalog...": "البحث في كتالوج OPDS...",
"Please log in to use advanced TTS features.": "يرجى تسجيل الدخول لاستخدام ميزات تحويل النص إلى كلام المتقدمة."
}
@@ -0,0 +1,769 @@
{
"Email address": "ইমেইল ঠিকানা",
"Your Password": "আপনার পাসওয়ার্ড",
"Your email address": "আপনার ইমেইল ঠিকানা",
"Your password": "আপনার পাসওয়ার্ড",
"Sign in": "সাইন ইন",
"Signing in...": "সাইন ইন করা হচ্ছে...",
"Sign in with {{provider}}": "{{provider}} দিয়ে সাইন ইন",
"Already have an account? Sign in": "ইতিমধ্যে অ্যাকাউন্ট আছে? সাইন ইন করুন",
"Create a Password": "একটি পাসওয়ার্ড তৈরি করুন",
"Sign up": "সাইন আপ",
"Signing up...": "সাইন আপ করা হচ্ছে...",
"Don't have an account? Sign up": "অ্যাকাউন্ট নেই? সাইন আপ করুন",
"Check your email for the confirmation link": "নিশ্চিতকরণ লিঙ্কের জন্য ইমেইল চেক করুন",
"Signing in ...": "সাইন ইন করা হচ্ছে...",
"Send a magic link email": "ম্যাজিক লিঙ্ক ইমেইল পাঠান",
"Check your email for the magic link": "ম্যাজিক লিঙ্কের জন্য ইমেইল চেক করুন",
"Send reset password instructions": "পাসওয়ার্ড রিসেট নির্দেশনা পাঠান",
"Sending reset instructions ...": "রিসেট নির্দেশনা পাঠানো হচ্ছে...",
"Forgot your password?": "পাসওয়ার্ড ভুলে গেছেন?",
"Check your email for the password reset link": "পাসওয়ার্ড রিসেট লিঙ্কের জন্য ইমেইল চেক করুন",
"Phone number": "ফোন নম্বর",
"Your phone number": "আপনার ফোন নম্বর",
"Token": "টোকেন",
"Your OTP token": "আপনার ওটিপি টোকেন",
"Verify token": "টোকেন যাচাই করুন",
"Sign in with Google": "গুগল দিয়ে সাইন ইন",
"Sign in with Apple": "অ্যাপল দিয়ে সাইন ইন",
"Sign in with GitHub": "গিটহাব দিয়ে সাইন ইন",
"New Password": "নতুন পাসওয়ার্ড",
"Your new password": "আপনার নতুন পাসওয়ার্ড",
"Update password": "পাসওয়ার্ড আপডেট করুন",
"Updating password ...": "পাসওয়ার্ড আপডেট করা হচ্ছে...",
"Your password has been updated": "আপনার পাসওয়ার্ড আপডেট হয়েছে",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "কিছু ভুল হয়েছে। চিন্তা করবেন না, আমাদের দল জানানো হয়েছে এবং আমরা সমাধানে কাজ করছি।",
"Error Details:": "ত্রুটির বিস্তারিত:",
"Try Again": "আবার চেষ্টা করুন",
"Go Back": "ফিরে যান",
"Your Library": "আপনার লাইব্রেরি",
"Need help?": "সাহায্য দরকার?",
"Contact Support": "সাপোর্টের সাথে যোগাযোগ",
"Open": "খুলুন",
"Group": "গ্রুপ",
"Details": "বিস্তারিত",
"Delete": "মুছুন",
"Cancel": "বাতিল",
"Confirm Deletion": "মুছে ফেলা নিশ্চিত করুন",
"Are you sure to delete {{count}} selected book(s)?_one": "আপনি কি নিশ্চিত যে নির্বাচিত বইটি মুছবেন?",
"Are you sure to delete {{count}} selected book(s)?_other": "আপনি কি নিশ্চিত যে {{count}}টি নির্বাচিত বই মুছবেন?",
"Deselect Book": "বই অনির্বাচিত করুন",
"Select Book": "বই নির্বাচন করুন",
"Show Book Details": "বইয়ের বিস্তারিত দেখান",
"Download Book": "বই ডাউনলোড করুন",
"Upload Book": "বই আপলোড করুন",
"Deselect Group": "গ্রুপ অনির্বাচিত করুন",
"Select Group": "গ্রুপ নির্বাচন করুন",
"Untitled Group": "নামবিহীন গ্রুপ",
"Group Books": "বই গ্রুপ করুন",
"Remove From Group": "গ্রুপ থেকে সরান",
"Create New Group": "নতুন গ্রুপ তৈরি করুন",
"Save": "সংরক্ষণ",
"Confirm": "নিশ্চিত করুন",
"From Local File": "স্থানীয় ফাইল থেকে",
"Search in {{count}} Book(s)..._one": "বইটিতে খুঁজুন...",
"Search in {{count}} Book(s)..._other": "{{count}}টি বইয়ে খুঁজুন...",
"Search Books...": "বই খুঁজুন...",
"Clear Search": "খোঁজ পরিষ্কার করুন",
"Import Books": "বই আমদানি করুন",
"Select Books": "বই নির্বাচন করুন",
"Deselect": "অনির্বাচিত করুন",
"Select All": "সব নির্বাচন করুন",
"Logged in as {{userDisplayName}}": "{{userDisplayName}} হিসেবে লগ ইন",
"Logged in": "লগ ইন করেছেন",
"Account": "অ্যাকাউন্ট",
"Sign In": "সাইন ইন",
"Auto Upload Books to Cloud": "স্বয়ংক্রিয় ক্লাউডে বই আপলোড",
"Auto Import on File Open": "ফাইল খোলার সময় স্বয়ংক্রিয় আমদানি",
"Open Last Book on Start": "শুরুতে শেষ বইটি খুলুন",
"Check Updates on Start": "শুরুতে আপডেট চেক করুন",
"Open Book in New Window": "নতুন উইন্ডোতে বই খুলুন",
"Fullscreen": "পূর্ণ স্ক্রিন",
"Always on Top": "সবসময় উপরে",
"Always Show Status Bar": "সবসময় স্ট্যাটাস বার দেখান",
"Keep Screen Awake": "স্ক্রিন জাগিয়ে রাখুন",
"Reload Page": "পৃষ্ঠা রিলোড করুন",
"Dark Mode": "ডার্ক মোড",
"Light Mode": "লাইট মোড",
"Auto Mode": "অটো মোড",
"Upgrade to Readest Premium": "রিডেস্ট প্রিমিয়ামে আপগ্রেড",
"Download Readest": "রিডেস্ট ডাউনলোড",
"About Readest": "রিডেস্ট সম্পর্কে",
"Help improve Readest": "রিডেস্ট উন্নত করতে সাহায্য করুন",
"Sharing anonymized statistics": "বেনামী পরিসংখ্যান শেয়ার করা",
"List": "তালিকা",
"Grid": "গ্রিড",
"Crop": "কাটুন",
"Fit": "ফিট",
"Title": "শিরোনাম",
"Author": "লেখক",
"Format": "ফরম্যাট",
"Date Read": "পড়ার তারিখ",
"Date Added": "যোগ করার তারিখ",
"Ascending": "ঊর্ধ্বক্রম",
"Descending": "অবতরণ ক্রম",
"Book Covers": "বইয়ের মলাট",
"Sort by...": "সাজানোর ভিত্তি...",
"No supported files found. Supported formats: {{formats}}": "কোন সমর্থিত ফাইল পাওয়া যায়নি। সমর্থিত ফরম্যাট: {{formats}}",
"No chapters detected": "কোন অধ্যায় শনাক্ত হয়নি।",
"Failed to parse the EPUB file": "EPUB ফাইল পার্স করতে ব্যর্থ।",
"This book format is not supported": "এই বই ফরম্যাট সমর্থিত নয়।",
"Failed to import book(s): {{filenames}}": "বই আমদানি ব্যর্থ: {{filenames}}",
"Book uploaded: {{title}}": "বই আপলোড হয়েছে: {{title}}",
"Insufficient storage quota": "অপর্যাপ্ত স্টোরেজ কোটা",
"Failed to upload book: {{title}}": "বই আপলোড ব্যর্থ: {{title}}",
"Book downloaded: {{title}}": "বই ডাউনলোড হয়েছে: {{title}}",
"Failed to download book: {{title}}": "বই ডাউনলোড ব্যর্থ: {{title}}",
"Book deleted: {{title}}": "বই মুছে ফেলা হয়েছে: {{title}}",
"Deleted cloud backup of the book: {{title}}": "বইয়ের ক্লাউড ব্যাকআপ মুছে ফেলা হয়েছে: {{title}}",
"Deleted local copy of the book: {{title}}": "বইয়ের স্থানীয় কপি মুছে ফেলা হয়েছে: {{title}}",
"Failed to delete book: {{title}}": "বই মুছতে ব্যর্থ: {{title}}",
"Failed to delete cloud backup of the book: {{title}}": "বইয়ের ক্লাউড ব্যাকআপ মুছতে ব্যর্থ: {{title}}",
"Failed to delete local copy of the book: {{title}}": "বইয়ের স্থানীয় কপি মুছতে ব্যর্থ: {{title}}",
"Welcome to your library. You can import your books here and read them anytime.": "আপনার লাইব্রেরিতে স্বাগতম। আপনি এখানে বই আমদানি করে যেকোনো সময় পড়তে পারেন।",
"Copied to notebook": "নোটবুকে কপি করা হয়েছে",
"No annotations to export": "রপ্তানি করার জন্য কোন টীকা নেই",
"Exported from Readest": "রিডেস্ট থেকে রপ্তানি করা হয়েছে",
"Highlights & Annotations": "হাইলাইট ও টীকা",
"Untitled": "নামবিহীন",
"Note": "নোট",
"Copied to clipboard": "ক্লিপবোর্ডে কপি করা হয়েছে",
"Copy": "কপি",
"Delete Highlight": "হাইলাইট মুছুন",
"Highlight": "হাইলাইট",
"Annotate": "টীকা",
"Search": "খুঁজুন",
"Dictionary": "অভিধান",
"Wikipedia": "উইকিপিডিয়া",
"Translate": "অনুবাদ",
"Speak": "বলুন",
"Login Required": "লগইন প্রয়োজন",
"Quota Exceeded": "কোটা অতিক্রম",
"Unable to fetch the translation. Please log in first and try again.": "অনুবাদ আনতে পারছি না। প্রথমে লগইন করুন এবং আবার চেষ্টা করুন।",
"Unable to fetch the translation. Try again later.": "অনুবাদ আনতে পারছি না। পরে আবার চেষ্টা করুন।",
"Original Text": "মূল টেক্সট",
"Auto Detect": "স্বয়ংক্রিয় শনাক্তকরণ",
"(detected)": "(শনাক্ত)",
"Translated Text": "অনূদিত টেক্সট",
"System Language": "সিস্টেম ভাষা",
"Loading...": "লোড হচ্ছে...",
"No translation available.": "কোন অনুবাদ উপলব্ধ নয়।",
"Translated by {{provider}}.": "{{provider}} দ্বারা অনূদিত।",
"Bookmark": "বুকমার্ক",
"Next Section": "পরবর্তী বিভাগ",
"Previous Section": "পূর্ববর্তী বিভাগ",
"Next Page": "পরবর্তী পৃষ্ঠা",
"Previous Page": "পূর্ববর্তী পৃষ্ঠা",
"Go Forward": "এগিয়ে যান",
"Small": "ছোট",
"Large": "বড়",
"Sync Conflict": "সিঙ্ক দ্বন্দ্ব",
"Sync reading progress from \"{{deviceName}}\"?": "\"{{deviceName}}\" থেকে পড়ার অগ্রগতি সিঙ্ক করবেন?",
"another device": "অন্য ডিভাইস",
"Local Progress": "স্থানীয় অগ্রগতি",
"Remote Progress": "দূরবর্তী অগ্রগতি",
"Failed to connect": "সংযোগ ব্যর্থ",
"Disconnected": "সংযোগ বিচ্ছিন্ন",
"KOReader Sync Settings": "KOReader সিঙ্ক সেটিংস",
"Sync as {{userDisplayName}}": "{{userDisplayName}} হিসেবে সিঙ্ক",
"Sync Server Connected": "সিঙ্ক সার্ভার সংযুক্ত",
"Sync Strategy": "সিঙ্ক কৌশল",
"Ask on conflict": "দ্বন্দ্বে জিজ্ঞাসা করুন",
"Always use latest": "সবসময় সর্বশেষ ব্যবহার করুন",
"Send changes only": "শুধু পরিবর্তন পাঠান",
"Receive changes only": "শুধু পরিবর্তন গ্রহণ করুন",
"Checksum Method": "চেকসাম পদ্ধতি",
"File Content (recommended)": "ফাইল কন্টেন্ট (সুপারিশকৃত)",
"File Name": "ফাইলের নাম",
"Device Name": "ডিভাইসের নাম",
"Connect to your KOReader Sync server.": "আপনার KOReader সিঙ্ক সার্ভারে সংযোগ করুন।",
"Server URL": "সার্ভার URL",
"Username": "ইউজারনেম",
"Your Username": "আপনার ইউজারনেম",
"Password": "পাসওয়ার্ড",
"Connect": "সংযোগ",
"Notebook": "নোটবুক",
"No notes match your search": "আপনার খোঁজের সাথে কোন নোট মিলছে না",
"Excerpts": "উদ্ধৃতি",
"Notes": "নোট",
"Add your notes here...": "এখানে আপনার নোট যোগ করুন...",
"Search notes and excerpts...": "নোট ও উদ্ধৃতি খুঁজুন...",
"{{time}} min left in chapter": "অধ্যায়ে {{time}} মিনিট বাকি",
"{{count}} pages left in chapter_one": "অধ্যায়ে ১ পৃষ্ঠা বাকি",
"{{count}} pages left in chapter_other": "অধ্যায়ে {{count}} পৃষ্ঠা বাকি",
"Theme Mode": "থিম মোড",
"Invert Image In Dark Mode": "ডার্ক মোডে ছবি উল্টান",
"Override Book Color": "বইয়ের রঙ পরিবর্তন",
"Theme Color": "থিম রঙ",
"Custom": "কাস্টম",
"Code Highlighting": "কোড হাইলাইটিং",
"Enable Highlighting": "হাইলাইটিং সক্রিয়",
"Code Language": "কোড ভাষা",
"Auto": "অটো",
"Scroll": "স্ক্রল",
"Scrolled Mode": "স্ক্রল মোড",
"Continuous Scroll": "ক্রমাগত স্ক্রল",
"Overlap Pixels": "ওভারল্যাপ পিক্সেল",
"Disable Double Click": "ডাবল ক্লিক নিষ্ক্রিয়",
"Volume Keys for Page Flip": "পৃষ্ঠা উল্টানোর জন্য ভলিউম কী",
"Animation": "অ্যানিমেশন",
"Paging Animation": "পৃষ্ঠা অ্যানিমেশন",
"Security": "নিরাপত্তা",
"Allow JavaScript": "জাভাস্ক্রিপ্ট অনুমতি",
"Enable only if you trust the file.": "শুধুমাত্র ফাইলে বিশ্বাস থাকলে সক্রিয় করুন।",
"Font": "ফন্ট",
"Custom Fonts": "কাস্টম ফন্ট",
"Cancel Delete": "মুছা বাতিল",
"Delete Font": "ফন্ট মুছুন",
"Import Font": "ফন্ট আমদানি",
"Tips": "টিপস",
"Supported font formats: .ttf, .otf, .woff, .woff2": "সমর্থিত ফন্ট ফরম্যাট: .ttf, .otf, .woff, .woff2",
"Custom fonts can be selected from the Font Face menu": "কাস্টম ফন্ট Font Face মেনু থেকে নির্বাচন করা যায়",
"Global Settings": "গ্লোবাল সেটিংস",
"Apply to All Books": "সব বইয়ে প্রয়োগ",
"Apply to This Book": "এই বইয়ে প্রয়োগ",
"Reset Settings": "সেটিংস রিসেট",
"Manage Custom Fonts": "কাস্টম ফন্ট ব্যবস্থাপনা",
"System Fonts": "সিস্টেম ফন্ট",
"Serif Font": "সেরিফ ফন্ট",
"Sans-Serif Font": "স্যান্স-সেরিফ ফন্ট",
"Override Book Font": "বইয়ের ফন্ট পরিবর্তন",
"Font Size": "ফন্ট সাইজ",
"Default Font Size": "ডিফল্ট ফন্ট সাইজ",
"Minimum Font Size": "সর্বনিম্ন ফন্ট সাইজ",
"Font Weight": "ফন্ট ওয়েট",
"Font Family": "ফন্ট ফ্যামিলি",
"Default Font": "ডিফল্ট ফন্ট",
"CJK Font": "CJK ফন্ট",
"Font Face": "ফন্ট ফেস",
"Monospace Font": "মনোস্পেস ফন্ট",
"Language": "ভাষা",
"Interface Language": "ইন্টারফেস ভাষা",
"Translation": "অনুবাদ",
"Enable Translation": "অনুবাদ সক্রিয়",
"Show Source Text": "উৎস টেক্সট দেখান",
"Translation Service": "অনুবাদ সেবা",
"Translate To": "অনুবাদ করুন",
"Override Book Layout": "বইয়ের লেআউট পরিবর্তন",
"Writing Mode": "লেখার মোড",
"Default": "ডিফল্ট",
"Horizontal Direction": "অনুভূমিক দিক",
"Vertical Direction": "উল্লম্ব দিক",
"RTL Direction": "RTL দিক",
"Border Frame": "বর্ডার ফ্রেম",
"Double Border": "ডাবল বর্ডার",
"Border Color": "বর্ডার রঙ",
"Paragraph": "অনুচ্ছেদ",
"Paragraph Margin": "অনুচ্ছেদ মার্জিন",
"Line Spacing": "লাইন স্পেসিং",
"Word Spacing": "শব্দ স্পেসিং",
"Letter Spacing": "অক্ষর স্পেসিং",
"Text Indent": "টেক্সট ইনডেন্ট",
"Full Justification": "পূর্ণ সারিবদ্ধতা",
"Hyphenation": "হাইফেনেশন",
"Page": "পৃষ্ঠা",
"Top Margin (px)": "উপরের মার্জিন (px)",
"Bottom Margin (px)": "নিচের মার্জিন (px)",
"Left Margin (px)": "বাম মার্জিন (px)",
"Right Margin (px)": "ডান মার্জিন (px)",
"Column Gap (%)": "কলাম গ্যাপ (%)",
"Maximum Number of Columns": "সর্বোচ্চ কলাম সংখ্যা",
"Maximum Column Height": "সর্বোচ্চ কলাম উচ্চতা",
"Maximum Column Width": "সর্বোচ্চ কলাম প্রস্থ",
"Header & Footer": "হেডার ও ফুটার",
"Show Header": "হেডার দেখান",
"Show Footer": "ফুটার দেখান",
"Show Remaining Time": "বাকি সময় দেখান",
"Show Remaining Pages": "বাকি পৃষ্ঠা দেখান",
"Show Reading Progress": "পড়ার অগ্রগতি দেখান",
"Reading Progress Style": "পড়ার অগ্রগতির স্টাইল",
"Page Number": "পৃষ্ঠা নম্বর",
"Percentage": "শতাংশ",
"Apply also in Scrolled Mode": "স্ক্রল মোডেও প্রয়োগ করুন",
"Screen": "স্ক্রিন",
"Orientation": "দিকবিন্যাস",
"Portrait": "পোর্ট্রেট",
"Landscape": "ল্যান্ডস্কেপ",
"Apply": "প্রয়োগ",
"Custom Content CSS": "কাস্টম কন্টেন্ট CSS",
"Enter CSS for book content styling...": "বই কন্টেন্ট স্টাইলিংয়ের জন্য CSS লিখুন...",
"Custom Reader UI CSS": "কাস্টম রিডার UI CSS",
"Enter CSS for reader interface styling...": "রিডার ইন্টারফেস স্টাইলিংয়ের জন্য CSS লিখুন...",
"Layout": "লেআউট",
"Color": "রঙ",
"Behavior": "আচরণ",
"Reset {{settings}}": "{{settings}} রিসেট",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "সারা বিশ্বটাই একটা মঞ্চ,\nআর সব নর-নারী কেবল অভিনেতা;\nতাদের আছে প্রস্থান ও প্রবেশ,\nআর একজন মানুষ তার জীবনে অনেক চরিত্র পালন করে,\nতার অভিনয় সাত যুগের।\n\n— উইলিয়াম শেক্সপিয়র",
"(from 'As You Like It', Act II)": "('অ্যাজ ইউ লাইক ইট', দ্বিতীয় অঙ্ক থেকে)",
"Custom Theme": "কাস্টম থিম",
"Theme Name": "থিমের নাম",
"Text Color": "টেক্সট রঙ",
"Background Color": "ব্যাকগ্রাউন্ড রঙ",
"Link Color": "লিঙ্ক রঙ",
"Preview": "প্রিভিউ",
"Font & Layout": "ফন্ট ও লেআউট",
"More Info": "আরো তথ্য",
"Parallel Read": "সমান্তরাল পড়া",
"Disable": "নিষ্ক্রিয়",
"Enable": "সক্রিয়",
"KOReader Sync": "KOReader সিঙ্ক",
"Push Progress": "অগ্রগতি পুশ",
"Pull Progress": "অগ্রগতি পুল",
"Export Annotations": "টীকা রপ্তানি",
"Sort TOC by Page": "পৃষ্ঠা অনুযায়ী TOC সাজান",
"Edit": "সম্পাদনা",
"Search...": "খুঁজুন...",
"Book": "বই",
"Chapter": "অধ্যায়",
"Match Case": "কেস মিলান",
"Match Whole Words": "পূর্ণ শব্দ মিলান",
"Match Diacritics": "ডায়াক্রিটিক্স মিলান",
"TOC": "সূচিপত্র",
"Table of Contents": "সূচিপত্র",
"Sidebar": "সাইডবার",
"Disable Translation": "অনুবাদ নিষ্ক্রিয়",
"TTS not supported for PDF": "PDF এর জন্য TTS সমর্থিত নয়",
"TTS not supported for this document": "এই ডকুমেন্টের জন্য TTS সমর্থিত নয়",
"No Timeout": "কোন টাইমআউট নেই",
"{{value}} minute": "{{value}} মিনিট",
"{{value}} minutes": "{{value}} মিনিট",
"{{value}} hour": "{{value}} ঘন্টা",
"{{value}} hours": "{{value}} ঘন্টা",
"Voices for {{lang}}": "{{lang}} এর জন্য কণ্ঠস্বর",
"Slow": "ধীর",
"Fast": "দ্রুত",
"{{engine}}: {{count}} voices_one": "{{engine}}: ১টি কণ্ঠস্বর",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}}টি কণ্ঠস্বর",
"Sign in to Sync": "সিঙ্কের জন্য সাইন ইন",
"Synced at {{time}}": "{{time}} এ সিঙ্ক হয়েছে",
"Never synced": "কখনো সিঙ্ক হয়নি",
"Reading Progress Synced": "পড়ার অগ্রগতি সিঙ্ক হয়েছে",
"Page {{page}} of {{total}} ({{percentage}}%)": "{{total}} এর {{page}} পৃষ্ঠা ({{percentage}}%)",
"Current position": "বর্তমান অবস্থান",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "প্রায় {{total}} এর {{page}} পৃষ্ঠা ({{percentage}}%)",
"Approximately {{percentage}}%": "প্রায় {{percentage}}%",
"Delete Your Account?": "আপনার অ্যাকাউন্ট মুছবেন?",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "এই কাজ পূর্বাবস্থায় ফেরানো যাবে না। ক্লাউডে আপনার সব ডেটা স্থায়ীভাবে মুছে যাবে।",
"Delete Permanently": "স্থায়ীভাবে মুছুন",
"Restore Purchase": "ক্রয় পুনরুদ্ধার",
"Manage Subscription": "সাবস্ক্রিপশন পরিচালনা",
"Reset Password": "পাসওয়ার্ড রিসেট",
"Sign Out": "সাইন আউট",
"Delete Account": "অ্যাকাউন্ট মুছুন",
"Upgrade to {{plan}}": "{{plan}} এ আপগ্রেড",
"Complete Your Subscription": "আপনার সাবস্ক্রিপশন সম্পূর্ণ করুন",
"Coming Soon": "শীঘ্রই আসছে",
"Upgrade to Plus or Pro": "প্লাস বা প্রো তে আপগ্রেড",
"Current Plan": "বর্তমান প্ল্যান",
"Plan Limits": "প্ল্যান সীমা",
"Failed to delete user. Please try again later.": "ইউজার মুছতে ব্যর্থ। পরে আবার চেষ্টা করুন।",
"Failed to create checkout session": "চেকআউট সেশন তৈরি করতে ব্যর্থ",
"No purchases found to restore.": "পুনরুদ্ধার করার জন্য কোন ক্রয় পাওয়া যায়নি।",
"Failed to restore purchases.": "ক্রয় পুনরুদ্ধার করতে ব্যর্থ।",
"Failed to manage subscription.": "সাবস্ক্রিপশন পরিচালনা করতে ব্যর্থ।",
"Failed to load subscription plans.": "সাবস্ক্রিপশন প্ল্যান লোড করতে ব্যর্থ।",
"Loading profile...": "প্রোফাইল লোড হচ্ছে...",
"Processing your payment...": "আপনার পেমেন্ট প্রক্রিয়া করা হচ্ছে...",
"Please wait while we confirm your subscription.": "আমরা আপনার সাবস্ক্রিপশন নিশ্চিত করার সময় অপেক্ষা করুন।",
"Payment Processing": "পেমেন্ট প্রক্রিয়াকরণ",
"Your payment is being processed. This usually takes a few moments.": "আপনার পেমেন্ট প্রক্রিয়া করা হচ্ছে। এটি সাধারণত কয়েক মুহূর্ত সময় নেয়।",
"Payment Failed": "পেমেন্ট ব্যর্থ",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "আমরা আপনার সাবস্ক্রিপশন প্রক্রিয়া করতে পারিনি। আবার চেষ্টা করুন বা সমস্যা অব্যাহত থাকলে সাপোর্টের সাথে যোগাযোগ করুন।",
"Back to Profile": "প্রোফাইলে ফিরুন",
"Subscription Successful!": "সাবস্ক্রিপশন সফল!",
"Thank you for your subscription! Your payment has been processed successfully.": "আপনার সাবস্ক্রিপশনের জন্য ধন্যবাদ! আপনার পেমেন্ট সফলভাবে প্রক্রিয়া করা হয়েছে।",
"Email:": "ইমেইল:",
"Plan:": "প্ল্যান:",
"Amount:": "পরিমাণ:",
"Go to Library": "লাইব্রেরিতে যান",
"Need help? Contact our support team at support@readest.com": "সাহায্য দরকার? support@readest.com এ আমাদের সাপোর্ট টিমের সাথে যোগাযোগ করুন",
"Free Plan": "ফ্রি প্ল্যান",
"month": "মাস",
"year": "বছর",
"Cross-Platform Sync": "ক্রস-প্ল্যাটফর্ম সিঙ্ক",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "আপনার সব ডিভাইসে লাইব্রেরি, অগ্রগতি, হাইলাইট এবং নোট নির্বিঘ্নে সিঙ্ক করুন—আর কখনো আপনার জায়গা হারাবেন না।",
"Customizable Reading": "কাস্টমাইজযোগ্য পড়া",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "নিখুঁত পড়ার অভিজ্ঞতার জন্য সামঞ্জস্যযোগ্য ফন্ট, লেআউট, থিম এবং উন্নত ডিসপ্লে সেটিংস দিয়ে প্রতিটি বিস্তারিত ব্যক্তিগতকরণ করুন।",
"AI Read Aloud": "AI পড়ে শোনানো",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "প্রাকৃতিক শোনা AI কণ্ঠস্বর দিয়ে হ্যান্ডস-ফ্রি পড়া উপভোগ করুন যা আপনার বইগুলোকে জীবন্ত করে তোলে।",
"AI Translations": "AI অনুবাদ",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "Google, Azure, বা DeepL এর শক্তি দিয়ে যেকোনো টেক্সট তাৎক্ষণিক অনুবাদ করুন—যেকোনো ভাষায় কন্টেন্ট বুঝুন।",
"Community Support": "কমিউনিটি সাপোর্ট",
"Connect with fellow readers and get help fast in our friendly community channels.": "সহ পাঠকদের সাথে যুক্ত হোন এবং আমাদের বন্ধুত্বপূর্ণ কমিউনিটি চ্যানেলে দ্রুত সাহায্য পান।",
"Cloud Sync Storage": "ক্লাউড সিঙ্ক স্টোরেজ",
"AI Translations (per day)": "AI অনুবাদ (প্রতিদিন)",
"Plus Plan": "প্লাস প্ল্যান",
"Includes All Free Plan Benefits": "সব ফ্রি প্ল্যান সুবিধা অন্তর্ভুক্ত",
"Unlimited AI Read Aloud Hours": "সীমাহীন AI পড়ে শোনানোর সময়",
"Listen without limits—convert as much text as you like into immersive audio.": "সীমা ছাড়াই শুনুন—যত খুশি টেক্সটকে নিমজ্জনকারী অডিওতে রূপান্তর করুন।",
"More AI Translations": "আরো AI অনুবাদ",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "আরো দৈনিক ব্যবহার এবং উন্নত অপশন দিয়ে উন্নত অনুবাদ ক্ষমতা আনলক করুন।",
"DeepL Pro Access": "DeepL Pro অ্যাক্সেস",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "উপলব্ধ সবচেয়ে নির্ভুল অনুবাদ ইঞ্জিন দিয়ে দৈনিক ১,০০,০০০ অক্ষর পর্যন্ত অনুবাদ করুন।",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "৫ GB ক্লাউড স্টোরেজ দিয়ে আপনার সম্পূর্ণ পড়ার সংগ্রহ নিরাপদে সংরক্ষণ এবং অ্যাক্সেস করুন।",
"Priority Support": "অগ্রাধিকার সাপোর্ট",
"Enjoy faster responses and dedicated assistance whenever you need help.": "যখনই সাহায্যের প্রয়োজন হয় দ্রুত প্রতিক্রিয়া এবং নিবেদিত সহায়তা উপভোগ করুন।",
"Pro Plan": "প্রো প্ল্যান",
"Includes All Plus Plan Benefits": "সব প্লাস প্ল্যান সুবিধা অন্তর্ভুক্ত",
"Early Feature Access": "আর্লি ফিচার অ্যাক্সেস",
"Be the first to explore new features, updates, and innovations before anyone else.": "অন্য কারো আগে নতুন ফিচার, আপডেট এবং উদ্ভাবন অন্বেষণ করার প্রথম হয়ে উঠুন।",
"Advanced AI Tools": "উন্নত AI টুলস",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "স্মার্ট পড়া, অনুবাদ এবং কন্টেন্ট আবিষ্কারের জন্য শক্তিশালী AI টুলস ব্যবহার করুন।",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "উপলব্ধ সবচেয়ে নির্ভুল অনুবাদ ইঞ্জিন দিয়ে দৈনিক ৫,০০,০০০ অক্ষর পর্যন্ত অনুবাদ করুন।",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "২০ GB ক্লাউড স্টোরেজ দিয়ে আপনার সম্পূর্ণ পড়ার সংগ্রহ নিরাপদে সংরক্ষণ এবং অ্যাক্সেস করুন।",
"Version {{version}}": "সংস্করণ {{version}}",
"Check Update": "আপডেট চেক করুন",
"Already the latest version": "ইতিমধ্যে সর্বশেষ সংস্করণ",
"Checking for updates...": "আপডেট চেক করা হচ্ছে...",
"Error checking for updates": "আপডেট চেক করতে ত্রুটি",
"Drop to Import Books": "বই আমদানি করতে ড্রপ করুন",
"Terms of Service": "সেবার শর্তাবলী",
"Privacy Policy": "গোপনীয়তা নীতি",
"Enter book title": "বইয়ের শিরোনাম লিখুন",
"Subtitle": "উপশিরোনাম",
"Enter book subtitle": "বইয়ের উপশিরোনাম লিখুন",
"Enter author name": "লেখকের নাম লিখুন",
"Series": "সিরিজ",
"Enter series name": "সিরিজের নাম লিখুন",
"Series Index": "সিরিজ ইনডেক্স",
"Enter series index": "সিরিজ ইনডেক্স লিখুন",
"Total in Series": "সিরিজের মোট",
"Enter total books in series": "সিরিজের মোট বই সংখ্যা লিখুন",
"Publisher": "প্রকাশক",
"Enter publisher": "প্রকাশক লিখুন",
"Publication Date": "প্রকাশনার তারিখ",
"YYYY or YYYY-MM-DD": "YYYY বা YYYY-MM-DD",
"Identifier": "শনাক্তকারী",
"Subjects": "বিষয়",
"Fiction, Science, History": "কল্পকাহিনী, বিজ্ঞান, ইতিহাস",
"Description": "বিবরণ",
"Enter book description": "বইয়ের বিবরণ লিখুন",
"Change cover image": "মলাট ছবি পরিবর্তন",
"Replace": "প্রতিস্থাপন",
"Unlock cover": "মলাট আনলক",
"Lock cover": "মলাট লক",
"Auto-Retrieve Metadata": "মেটাডেটা স্বয়ংক্রিয় পুনরুদ্ধার",
"Auto-Retrieve": "স্বয়ংক্রিয় পুনরুদ্ধার",
"Unlock all fields": "সব ফিল্ড আনলক",
"Unlock All": "সব আনলক",
"Lock all fields": "সব ফিল্ড লক",
"Lock All": "সব লক",
"Reset": "রিসেট",
"Are you sure to delete the selected book?": "আপনি কি নিশ্চিত যে নির্বাচিত বইটি মুছবেন?",
"Are you sure to delete the cloud backup of the selected book?": "আপনি কি নিশ্চিত যে নির্বাচিত বইয়ের ক্লাউড ব্যাকআপ মুছবেন?",
"Are you sure to delete the local copy of the selected book?": "আপনি কি নিশ্চিত যে নির্বাচিত বইয়ের স্থানীয় কপি মুছবেন?",
"Edit Metadata": "মেটাডেটা সম্পাদনা",
"Book Details": "বইয়ের বিস্তারিত",
"Unknown": "অজানা",
"Remove from Cloud & Device": "ক্লাউড ও ডিভাইস থেকে সরান",
"Remove from Cloud Only": "শুধু ক্লাউড থেকে সরান",
"Remove from Device Only": "শুধু ডিভাইস থেকে সরান",
"Published": "প্রকাশিত",
"Updated": "আপডেট হয়েছে",
"Added": "যোগ করা হয়েছে",
"File Size": "ফাইল সাইজ",
"No description available": "কোন বিবরণ উপলব্ধ নয়",
"Locked": "লক করা",
"Select Metadata Source": "মেটাডেটা সোর্স নির্বাচন",
"Keep manual input": "ম্যানুয়াল ইনপুট রাখুন",
"A new version of Readest is available!": "রিডেস্টের একটি নতুন সংস্করণ উপলব্ধ!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "রিডেস্ট {{newVersion}} উপলব্ধ (ইনস্টল করা সংস্করণ {{currentVersion}})।",
"Download and install now?": "এখনই ডাউনলোড এবং ইনস্টল করবেন?",
"Downloading {{downloaded}} of {{contentLength}}": "{{contentLength}} এর {{downloaded}} ডাউনলোড হচ্ছে",
"Download finished": "ডাউনলোড সম্পূর্ণ",
"DOWNLOAD & INSTALL": "ডাউনলোড ও ইনস্টল",
"Changelog": "পরিবর্তন লগ",
"Software Update": "সফটওয়্যার আপডেট",
"What's New in Readest": "রিডেস্টে নতুন কী",
"Select Files": "ফাইল নির্বাচন",
"Select Image": "ছবি নির্বাচন",
"Select Video": "ভিডিও নির্বাচন",
"Select Audio": "অডিও নির্বাচন",
"Select Fonts": "ফন্ট নির্বাচন",
"Storage": "স্টোরেজ",
"{{percentage}}% of Cloud Sync Space Used.": "ক্লাউড সিঙ্ক স্পেসের {{percentage}}% ব্যবহৃত।",
"Translation Characters": "অনুবাদ অক্ষর",
"{{percentage}}% of Daily Translation Characters Used.": "দৈনিক অনুবাদ অক্ষরের {{percentage}}% ব্যবহৃত।",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "দৈনিক অনুবাদ কোটা শেষ। AI অনুবাদ ব্যবহার চালিয়ে যেতে আপনার প্ল্যান আপগ্রেড করুন।",
"LXGW WenKai GB Screen": "LXGW WenKai GB Screen",
"LXGW WenKai TC": "LXGW WenKai TC",
"GuanKiapTsingKhai-T": "GuanKiapTsingKhai-T",
"Source Han Serif CN VF": "Source Han Serif CN VF",
"Huiwen-mincho": "Huiwen-mincho",
"KingHwa_OldSong": "KingHwa_OldSong",
"Google Books": "গুগল বুকস",
"Open Library": "ওপেন লাইব্রেরি",
"Azure Translator": "Azure অনুবাদক",
"DeepL": "DeepL",
"Google Translate": "গুগল ট্রান্সলেট",
"Yandex Translate": "ইয়ান্ডেক্স ট্রান্সলেট",
"Gray": "ধূসর",
"Sepia": "সেপিয়া",
"Grass": "ঘাস",
"Cherry": "চেরি",
"Sky": "আকাশ",
"Solarized": "সোলারাইজড",
"Gruvbox": "গ্রুভবক্স",
"Nord": "নর্ড",
"Contrast": "কন্ট্রাস্ট",
"Sunset": "সূর্যাস্ত",
"Reveal in Finder": "ফাইন্ডারে দেখান",
"Reveal in File Explorer": "ফাইল এক্সপ্লোরারে দেখান",
"Reveal in Folder": "ফোল্ডারে দেখান",
"Previous Paragraph": "পূর্ববর্তী অনুচ্ছেদ",
"Previous Sentence": "পূর্ববর্তী বাক্য",
"Pause": "বিরতি",
"Play": "চালান",
"Next Sentence": "পরবর্তী বাক্য",
"Next Paragraph": "পরবর্তী অনুচ্ছেদ",
"Separate Cover Page": "আলাদা কভার পৃষ্ঠা",
"Resize Notebook": "নোটবুকের আকার পরিবর্তন",
"Resize Sidebar": "সাইডবারের আকার পরিবর্তন",
"Get Help from the Readest Community": "রিডেস্ট কমিউনিটি থেকে সাহায্য নিন",
"Remove cover image": "মলাট ছবি সরান",
"Bookshelf": "বইয়ের তাক",
"View Menu": "মেনু দেখুন",
"Settings Menu": "সেটিংস মেনু",
"View account details and quota": "অ্যাকাউন্টের বিবরণ এবং কোটার তথ্য দেখুন",
"Library Header": "লাইব্রেরি হেডার",
"Book Content": "বইয়ের বিষয়বস্তু",
"Footer Bar": "ফুটার বার",
"Header Bar": "হেডার বার",
"View Options": "দেখার অপশন",
"Book Menu": "বইয়ের মেনু",
"Search Options": "অনুসন্ধানের অপশন",
"Close": "বন্ধ করুন",
"Delete Book Options": "বই মুছে ফেলার অপশন",
"ON": "চালু",
"OFF": "বন্ধ",
"Reading Progress": "পড়ার অগ্রগতি",
"Page Margin": "পৃষ্ঠার মার্জিন",
"Remove Bookmark": "বুকমার্ক সরান",
"Add Bookmark": "বুকমার্ক যোগ করুন",
"Books Content": "বইয়ের বিষয়বস্তু",
"Jump to Location": "অবস্থানে যান",
"Unpin Notebook": "ম্যাপ বই আনপিন করুন",
"Pin Notebook": "ম্যাপ বই পিন করুন",
"Hide Search Bar": "সার্চ বার লুকান",
"Show Search Bar": "সার্চ বার দেখান",
"On {{current}} of {{total}} page": "পৃষ্ঠা {{current}} এর {{total}} এ",
"Section Title": "অধ্যায়ের শিরোনাম",
"Decrease": "হ্রাস",
"Increase": "বৃদ্ধি",
"Settings Panels": "সেটিংস প্যানেল",
"Settings": "সেটিংস",
"Unpin Sidebar": "শার্টবার আনপিন করুন",
"Pin Sidebar": "শার্টবার পিন করুন",
"Toggle Sidebar": "শার্টবার টগল করুন",
"Toggle Translation": "অনুবাদ টগল করুন",
"Translation Disabled": "অনুবাদ অক্ষম",
"Minimize": "সঙ্কুচিত করুন",
"Maximize or Restore": "বৃহৎ করুন বা পুনরুদ্ধার করুন",
"Exit Parallel Read": "সমান্তরাল পড়া থেকে বেরিয়ে আসুন",
"Enter Parallel Read": "সমান্তরাল পড়ায় প্রবেশ করুন",
"Zoom Level": "জুম লেভেল",
"Zoom Out": "জুম আউট",
"Reset Zoom": "জুম রিসেট",
"Zoom In": "জুম ইন",
"Zoom Mode": "জুম মোড",
"Single Page": "একক পৃষ্ঠা",
"Auto Spread": "অটো স্প্রেড",
"Fit Page": "ফিট পৃষ্ঠা",
"Fit Width": "ফিট প্রস্থ",
"Failed to select directory": "ডিরেক্টরি নির্বাচন করতে ব্যর্থ",
"The new data directory must be different from the current one.": "নতুন ডেটা ডিরেক্টরি বর্তমানটির থেকে আলাদা হতে হবে।",
"Migration failed: {{error}}": "মাইগ্রেশন ব্যর্থ হয়েছে: {{error}}",
"Change Data Location": "ডেটা অবস্থান পরিবর্তন করুন",
"Current Data Location": "বর্তমান ডেটা অবস্থান",
"Total size: {{size}}": "মোট আকার: {{size}}",
"Calculating file info...": "ফাইলের তথ্য গণনা করা হচ্ছে...",
"New Data Location": "নতুন ডেটা অবস্থান",
"Choose Different Folder": "ভিন্ন ফোল্ডার নির্বাচন করুন",
"Choose New Folder": "নতুন ফোল্ডার নির্বাচন করুন",
"Migrating data...": "ডেটা স্থানান্তরিত হচ্ছে...",
"Copying: {{file}}": "কপি করা হচ্ছে: {{file}}",
"{{current}} of {{total}} files": "{{current}} এর {{total}} ফাইল",
"Migration completed successfully!": "মাইগ্রেশন সফলভাবে সম্পন্ন হয়েছে!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "আপনার ডেটা নতুন অবস্থানে স্থানান্তরিত হয়েছে। প্রক্রিয়া সম্পন্ন করতে দয়া করে অ্যাপ্লিকেশনটি পুনরায় চালু করুন।",
"Migration failed": "মাইগ্রেশন ব্যর্থ হয়েছে",
"Important Notice": "গুরুতর বিজ্ঞপ্তি",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "এটি আপনার সমস্ত অ্যাপ ডেটা নতুন অবস্থানে স্থানান্তরিত করবে। নিশ্চিত করুন যে গন্তব্যে পর্যাপ্ত ফ্রি স্পেস রয়েছে।",
"Restart App": "অ্যাপ পুনরায় চালু করুন",
"Start Migration": "মাইগ্রেশন শুরু করুন",
"Advanced Settings": "উন্নত সেটিংস",
"File count: {{size}}": "ফাইলের সংখ্যা: {{size}}",
"Background Read Aloud": "পটভূমিতে উচ্চস্বরে পড়ুন",
"Ready to read aloud": "উচ্চস্বরে পড়ার জন্য প্রস্তুত",
"Read Aloud": "উচ্চস্বরে পড়ুন",
"Screen Brightness": "স্ক্রিন উজ্জ্বলতা",
"Background Image": "ব্যাকগ্রাউন্ড ছবি",
"Import Image": "ছবি আমদানি করুন",
"Opacity": "স্বচ্ছতা",
"Size": "আকার",
"Cover": "ঢাকা",
"Contain": "ধারণ",
"{{number}} pages left in chapter": "অধ্যায়ে {{number}} পৃষ্ঠা বাকি",
"Device": "যন্ত্র",
"E-Ink Mode": "ই-ইঙ্ক মোড",
"Highlight Colors": "হাইলাইট রঙ",
"Auto Screen Brightness": "স্বয়ংক্রিয় স্ক্রিন উজ্জ্বলতা",
"Pagination": "পৃষ্ঠা বিন্যাস",
"Disable Double Tap": "ডাবল ট্যাপ অক্ষম করুন",
"Tap to Paginate": "পৃষ্ঠায় যেতে ট্যাপ করুন",
"Click to Paginate": "পৃষ্ঠায় যেতে ক্লিক করুন",
"Tap Both Sides": "দুই পাশে ট্যাপ করুন",
"Click Both Sides": "দুই পাশে ক্লিক করুন",
"Swap Tap Sides": "ট্যাপের পাশে পরিবর্তন করুন",
"Swap Click Sides": "ক্লিকের পাশে পরিবর্তন করুন",
"Source and Translated": "উৎস এবং অনূদিত",
"Translated Only": "শুধুমাত্র অনূদিত",
"Source Only": "শুধুমাত্র উৎস",
"TTS Text": "TTS টেক্সট",
"The book file is corrupted": "বইয়ের ফাইলটি ক্ষতিগ্রস্ত।",
"The book file is empty": "বইয়ের ফাইলটি খালি।",
"Failed to open the book file": "বইয়ের ফাইল খুলতে ব্যর্থ।",
"On-Demand Purchase": "অনুরোধে ক্রয়",
"Full Customization": "সম্পূর্ণ কাস্টমাইজেশন",
"Lifetime Plan": "জীবনকাল পরিকল্পনা",
"One-Time Payment": "এককালীন পেমেন্ট",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "নির্দিষ্ট বৈশিষ্ট্যগুলিতে সমস্ত ডিভাইসে জীবনকাল অ্যাক্সেস উপভোগ করতে এককালীন পেমেন্ট করুন। যখন আপনার প্রয়োজন তখনই নির্দিষ্ট বৈশিষ্ট্য বা পরিষেবাগুলি কিনুন।",
"Expand Cloud Sync Storage": "ক্লাউড সিঙ্ক স্টোরেজ বাড়ান",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "এককালীন ক্রয়ের মাধ্যমে আপনার ক্লাউড স্টোরেজ চিরকাল বাড়ান। প্রতিটি অতিরিক্ত ক্রয় আরও স্থান যোগ করে।",
"Unlock All Customization Options": "সমস্ত কাস্টমাইজেশন বিকল্প আনলক করুন",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "অতিরিক্ত থিম, ফন্ট, লেআউট বিকল্প এবং উচ্চস্বরে পড়া, অনুবাদক, ক্লাউড স্টোরেজ পরিষেবাগুলি আনলক করুন।",
"Purchase Successful!": "ক্রয় সফল!",
"lifetime": "জীবনকাল",
"Thank you for your purchase! Your payment has been processed successfully.": "আপনার ক্রয়ের জন্য ধন্যবাদ! আপনার পেমেন্ট সফলভাবে প্রক্রিয়া করা হয়েছে।",
"Order ID:": "অর্ডার আইডি:",
"TTS Highlighting": "টিটিএস হাইলাইটিং",
"Style": "শৈলী",
"Underline": "আন্ডারলাইন",
"Strikethrough": "কাটা লেখা",
"Squiggly": "ঢেউখেলানো দাগ",
"Outline": "বাহিরের রেখা",
"Save Current Color": "বর্তমান রঙ সংরক্ষণ করুন",
"Quick Colors": "দ্রুত রংসমূহ",
"Highlighter": "হাইলাইটার",
"Save Book Cover": "বইয়ের মলাট সংরক্ষণ করুন",
"Auto-save last book cover": "শেষ বইয়ের মলাট স্বয়ংক্রিয়ভাবে সংরক্ষণ করুন",
"Back": "পেছনে",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "নিশ্চিতকরণ ইমেল পাঠানো হয়েছে! পরিবর্তন নিশ্চিত করতে আপনার পুরানো এবং নতুন ইমেল ঠিকানা পরীক্ষা করুন।",
"Failed to update email": "ইমেল আপডেট করতে ব্যর্থ",
"New Email": "নতুন ইমেল",
"Your new email": "আপনার নতুন ইমেল",
"Updating email ...": "ইমেল আপডেট হচ্ছে ...",
"Update email": "ইমেল আপডেট করুন",
"Current email": "বর্তমান ইমেল",
"Update Email": "ইমেল আপডেট করুন",
"All": "সব",
"Unable to open book": "বই খুলতে অক্ষম",
"Punctuation": "বিরামচিহ্ন",
"Replace Quotation Marks": "উদ্ধৃতি চিহ্ন প্রতিস্থাপন করুন",
"Enabled only in vertical layout.": "শুধুমাত্র উল্লম্ব বিন্যাসে সক্রিয়।",
"No Conversion": "রূপান্তর নয়",
"Simplified to Traditional": "সরল → প্রথাগত",
"Traditional to Simplified": "প্রথাগত → সরল",
"Simplified to Traditional (Taiwan)": "সরল → প্রথাগত (তাইওয়ান)",
"Simplified to Traditional (Hong Kong)": "সরল → প্রথাগত (হংকং)",
"Simplified to Traditional (Taiwan), with phrases": "সরল → প্রথাগত (তাইওয়ান • বাক্য)",
"Traditional (Taiwan) to Simplified": "প্রথাগত (তাইওয়ান) → সরল",
"Traditional (Hong Kong) to Simplified": "প্রথাগত (হংকং) → সরল",
"Traditional (Taiwan) to Simplified, with phrases": "প্রথাগত (তাইওয়ান • বাক্য) → সরল",
"Convert Simplified and Traditional Chinese": "সরল/প্রথাগত রূপান্তর",
"Convert Mode": "রূপান্তর মোড",
"Failed to auto-save book cover for lock screen: {{error}}": "লক স্ক্রিনের জন্য বইয়ের মলাট স্বয়ংক্রিয়ভাবে সংরক্ষণ করতে ব্যর্থ: {{error}}",
"Download from Cloud": "ক্লাউড থেকে ডাউনলোড করুন",
"Upload to Cloud": "ক্লাউডে আপলোড করুন",
"Clear Custom Fonts": "কাস্টম ফন্টস মুছুন",
"Columns": "কলামস",
"OPDS Catalogs": "OPDS ক্যাটালগস",
"Adding LAN addresses is not supported in the web app version.": "ওয়েব অ্যাপ সংস্করণে LAN ঠিকানা যোগ করা সমর্থিত নয়।",
"Invalid OPDS catalog. Please check the URL.": "অবৈধ OPDS ক্যাটালগ। দয়া করে URL চেক করুন।",
"Browse and download books from online catalogs": "অনলাইন ক্যাটালগ থেকে বই ব্রাউজ এবং ডাউনলোড করুন",
"My Catalogs": "আমার ক্যাটালগস",
"Add Catalog": "ক্যাটালগ যোগ করুন",
"No catalogs yet": "এখনও কোন ক্যাটালগ নেই",
"Add your first OPDS catalog to start browsing books": "আপনার প্রথম OPDS ক্যাটালগ যোগ করুন বই ব্রাউজ শুরু করতে",
"Add Your First Catalog": "আপনার প্রথম ক্যাটালগ যোগ করুন",
"Browse": "ব্রাউজ করুন",
"Popular Catalogs": "জনপ্রিয় ক্যাটালগস",
"Add": "যোগ করুন",
"Add OPDS Catalog": "OPDS ক্যাটালগ যোগ করুন",
"Catalog Name": "ক্যাটালগের নাম",
"My Calibre Library": "আমার ক্যালিব্র লাইব্রেরি",
"OPDS URL": "OPDS URL",
"Username (optional)": "ব্যবহারকারীর নাম (ঐচ্ছিক)",
"Password (optional)": "পাসওয়ার্ড (ঐচ্ছিক)",
"Description (optional)": "বর্ণনা (ঐচ্ছিক)",
"A brief description of this catalog": "এই ক্যাটালগের সংক্ষিপ্ত বিবরণ",
"Validating...": "যাচাই করা হচ্ছে...",
"View All": "সব দেখুন",
"Forward": "ফরোয়ার্ড",
"Home": "হোম",
"{{count}} items_one": "{{count}} আইটেম",
"{{count}} items_other": "{{count}} আইটেম",
"Download completed": "ডাউনলোড সম্পন্ন হয়েছে",
"Download failed": "ডাউনলোড ব্যর্থ হয়েছে",
"Open Access": "ওপেন অ্যাক্সেস",
"Borrow": "ঋণ নিন",
"Buy": "কিনুন",
"Subscribe": "সাবস্ক্রাইব করুন",
"Sample": "নমুনা",
"Download": "ডাউনলোড",
"Open & Read": "খুলুন ও পড়ুন",
"Tags": "ট্যাগসমূহ",
"Tag": "ট্যাগ",
"First": "প্রথম",
"Previous": "পূর্ববর্তী",
"Next": "পরবর্তী",
"Last": "শেষ",
"Cannot Load Page": "পৃষ্ঠা লোড করা যায়নি",
"An error occurred": "একটি ত্রুটি ঘটেছে",
"Online Library": "অনলাইন লাইব্রেরি",
"URL must start with http:// or https://": "URL অবশ্যই http:// বা https:// দিয়ে শুরু হতে হবে",
"Title, Author, Tag, etc...": "শিরোনাম, লেখক, ট্যাগ, ইত্যাদি...",
"Query": "কোয়েরি",
"Subject": "বিষয়",
"Enter {{terms}}": "{{terms}} লিখুন",
"No search results found": "কোনও অনুসন্ধান ফলাফল পাওয়া যায়নি",
"Failed to load OPDS feed: {{status}} {{statusText}}": "OPDS ফিড লোড করতে ব্যর্থ: {{status}} {{statusText}}",
"Search in {{title}}": "{{title}} এ অনুসন্ধান করুন",
"Manage Storage": "স্টোরেজ ম্যানেজমেন্ট",
"Failed to load files": "ফাইল লোড করতে ব্যর্থ",
"Deleted {{count}} file(s)_one": "{{count}}টি ফাইল মুছে ফেলা হয়েছে",
"Deleted {{count}} file(s)_other": "{{count}}টি ফাইল মুছে ফেলা হয়েছে",
"Failed to delete {{count}} file(s)_one": "{{count}}টি ফাইল মুছতে ব্যর্থ",
"Failed to delete {{count}} file(s)_other": "{{count}}টি ফাইল মুছতে ব্যর্থ",
"Failed to delete files": "ফাইল মুছতে ব্যর্থ",
"Total Files": "মোট ফাইল",
"Total Size": "মোট আকার",
"Quota": "কোটা",
"Used": "ব্যবহৃত",
"Files": "ফাইল",
"Search files...": "ফাইল খুঁজুন...",
"Newest First": "নতুন আগে",
"Oldest First": "পুরনো আগে",
"Largest First": "বড় আগে",
"Smallest First": "ছোট আগে",
"Name A-Z": "নাম A-Z",
"Name Z-A": "নাম Z-A",
"{{count}} selected_one": "{{count}}টি নির্বাচিত",
"{{count}} selected_other": "{{count}}টি নির্বাচিত",
"Delete Selected": "নির্বাচিত মুছুন",
"Created": "তৈরি হয়েছে",
"No files found": "কোনো ফাইল পাওয়া যায়নি",
"No files uploaded yet": "এখনও কোনো ফাইল আপলোড করা হয়নি",
"files": "ফাইল",
"Page {{current}} of {{total}}": "{{total}}টির মধ্যে {{current}} পৃষ্ঠা",
"Are you sure to delete {{count}} selected file(s)?_one": "আপনি কি নিশ্চিত যে {{count}}টি নির্বাচিত ফাইল মুছতে চান?",
"Are you sure to delete {{count}} selected file(s)?_other": "আপনি কি নিশ্চিত যে {{count}}টি নির্বাচিত ফাইল মুছতে চান?",
"Cloud Storage Usage": "ক্লাউড স্টোরেজ ব্যবহৃত",
"Rename Group": "গ্রুপের নাম পরিবর্তন করুন",
"From Directory": "ডিরেক্টরি থেকে",
"Successfully imported {{count}} book(s)_one": "সফলভাবে ১টি বই আমদানি করা হয়েছে",
"Successfully imported {{count}} book(s)_other": "সফলভাবে {{count}}টি বই আমদানি করা হয়েছে",
"Count": "গণনা",
"Start Page": "শুরু পৃষ্ঠা",
"Search in OPDS Catalog...": "OPDS ক্যাটালগে অনুসন্ধান করুন...",
"Please log in to use advanced TTS features.": "উন্নত TTS বৈশিষ্ট্যগুলি ব্যবহার করতে লগইন করুন।"
}
@@ -0,0 +1,759 @@
{
"(detected)": "(བརྟག་དཔྱད་བྱུང་བ།)",
"About Readest": "Readest སྐོར།",
"Add your notes here...": "འདིར་ཁྱེད་ཀྱི་ཟིན་བྲིས་འདེབས་དང་།...",
"Animation": "འགུལ་རིས།",
"Annotate": "ཟིན་བྲིས།",
"Apply": "སྤྱོད་པ།",
"Auto Mode": "རང་འགུལ་བརྗོད་བྱ།",
"Behavior": "བྱ་སྤྱོད།",
"Book": "དཔེ་དེབ།",
"Bookmark": "དཔེ་རྟགས།",
"Cancel": "འདོར་བ།",
"Chapter": "ལེའུ།",
"Cherry": "ཆུ་འབྲས་མདོག",
"Color": "ཚོན་མདོག",
"Confirm": "གཏན་འཁེལ།",
"Confirm Deletion": "བསུབ་པ་གཏན་འཁེལ།",
"Copied to notebook": "ཟིན་དེབ་ཏུ་འདྲ་བཤུས་བྱས་ཟིན།",
"Copy": "འདྲ་བཤུས།",
"Dark Mode": "མདོག་ནག་པོའི་བརྗོད་བྱ།",
"Default": "སྔོན་སྒྲིག",
"Default Font": "སྔོན་སྒྲིག་ཡིག་གཟུགས།",
"Default Font Size": "སྔོན་སྒྲིག་ཡིག་ཆེ་ཆུང་།",
"Delete": "བསུབ་པ།",
"Delete Highlight": "འོག་ཐིག་བསུབ་པ།",
"Dictionary": "ཚིག་མཛོད།",
"Download Readest": "Readest ཕབ་ལེན།",
"Edit": "རྩོམ་སྒྲིག",
"Excerpts": "དྲངས་བཏུས།",
"Failed to import book(s): {{filenames}}": "དཔེ་དེབ་ནང་འདྲེན་བྱས་མ་ཐུབ། {{filenames}}",
"Fast": "མགྱོགས་པོ།",
"Font": "ཡིག་གཟུགས།",
"Font & Layout": "ཡིག་གཟུགས་དང་བཀོད་སྒྲིག",
"Font Face": "ཡིག་གཟུགས་ཀྱི་རྣམ་པ།",
"Font Family": "ཡིག་རིགས།",
"Font Size": "ཡིག་ཆེ་ཆུང་།",
"Full Justification": "གཡས་གཡོན་སྙོམས་པ།",
"Global Settings": "ཁྱོན་ཡོངས་སྒྲིག་བཀོད།",
"Go Back": "ཕྱིར་ལོག",
"Go Forward": "མདུན་སྐྱོད།",
"Grass": "རྩྭ་ལྗང་ཁུ།",
"Gray": "སྙིང་རུས་ཆུང་བ།",
"Gruvbox": "དྲོད་ལྡན་གོང་མདོག",
"Highlight": "འོག་ཐིག",
"Horizontal Direction": "འཕྲེད་རིམ།",
"Hyphenation": "ཡི་གེ་གཤགས་པ།",
"Import Books": "དཔེ་དེབ་ནང་འདྲེན།",
"Layout": "བཀོད་སྒྲིག",
"Light Mode": "མདོག་སྐྱ་བོའི་བརྗོད་བྱ།",
"Loading...": "འགུལ་སྐྱོང་བྱེད་བཞིན་པ།...",
"Logged in": "ནང་བསྐྱོད་བྱས་ཟིན།",
"Logged in as {{userDisplayName}}": "{{userDisplayName}} ནང་བསྐྱོད་བྱས་ཟིན།",
"Match Case": "ཡི་གེ་ཆེ་ཆུང་གི་དོ་མཚུངས།",
"Match Diacritics": "སྒྲ་གདངས་ཀྱི་དོ་མཚུངས།",
"Match Whole Words": "ཚིག་བྱང་ཆ་ཚང་གི་དོ་མཚུངས།",
"Maximum Number of Columns": "གྲལ་ཐིག་གི་གྲངས་ཀ།",
"Minimum Font Size": "ཡིག་ཆུང་ཤོས།",
"Monospace Font": "རྒྱ་ཁྱོན་འདྲ་བའི་ཡིག་གཟུགས།",
"More Info": "ཆ་འཕྲིན་དེ་བས།",
"Nord": "འོད་ཟེར་སྔོན་པོ།",
"Notebook": "ཟིན་དེབ།",
"Notes": "ཟིན་བྲིས།",
"Open": "ཁ་ཕྱེ་བ།",
"Original Text": "མགོ་ཡིག",
"Page": "ཤོག་ངོས།",
"Paging Animation": "ཤོག་ལྷེ་བསྒྱུར་བའི་འགུལ་རིས།",
"Paragraph": "དོན་ཚན།",
"Parallel Read": "གྲལ་སྤྲོད་ཀྱིས་ཀློག་པ།",
"Published": "དཔེ་སྐྲུན་བྱས་པའི་ཚེས་གྲངས།",
"Publisher": "དཔེ་སྐྲུན་ཁང་།",
"Reading Progress Synced": "ཀློག་པའི་ཡར་འཕེལ་སྐད་མཉམ་བྱས་ཟིན།",
"Reload Page": "ཤོག་ངོས་བསྐྱར་འགུལ་སྐྱོང་བྱ་དགོས།",
"Reveal in File Explorer": "ཡིག་ཆ་དོ་དམ་ཆས་ནང་མངོན་པ།",
"Reveal in Finder": "བལྟ་ཞིབ་ཆས་ནང་མངོན་པ།",
"Reveal in Folder": "ཡིག་ཁུག་ནང་མངོན་པ།",
"Sans-Serif Font": "མཐའ་ཐིག་མེད་པའི་ཡིག་གཟུགས།",
"Save": "ཉར་ཚགས།",
"Scrolled Mode": "འཁོར་རྒྱུག་རྣམ་པ།",
"Search": "འཚོལ་བཤེར།",
"Search Books...": "དཔེ་དེབ་འཚོལ་བཤེར།...",
"Search...": "འཚོལ་བཤེར།...",
"Select Book": "དཔེ་དེབ་འདེམས་པ།",
"Select Books": "དཔེ་དེབ་འདེམས་པ།",
"Sepia": "རྙིང་པའི་ཉམས་འགྱུར།",
"Serif Font": "མཐའ་ཐིག་ཡོད་པའི་ཡིག་གཟུགས།",
"Show Book Details": "དཔེ་དེབ་ཀྱི་གནས་ཚུལ་རྒྱས་པ་མངོན་པ།",
"Sidebar": "ཟུར་ངོས་ཀྱི་གྲལ་ཐིག",
"Sign In": "ནང་བསྐྱོད།",
"Sign Out": "ཕྱིར་བུད།",
"Sky": "མཁའ་དཀར།",
"Slow": "དལ་བ།",
"Solarized": "ཉི་འོད།",
"Speak": "སྒྲ་ཀློག",
"Subjects": "བརྗོད་བྱ།",
"System Fonts": "མ་ལག་གི་ཡིག་གཟུགས།",
"Theme Color": "བརྗོད་བྱའི་ཚོན་མདོག",
"Theme Mode": "བརྗོད་བྱའི་རྣམ་པ།",
"Translate": "སྒྱུར་བཅོས།",
"Translated Text": "སྒྱུར་ཡིག",
"Unknown": "མི་ཤེས་པ།",
"Untitled": "མགོ་མེད།",
"Updated": "བསྐྱར་བརྗེའི་ཚེས་གྲངས།",
"Version {{version}}": "ཐོན་རིམ {{version}}",
"Vertical Direction": "ཀྲིང་རིམ།",
"Welcome to your library. You can import your books here and read them anytime.": "དཔེ་མཛོད་སྟོང་པ་ཡིན། ཁྱེད་ཀྱིས་ཁྱེད་རང་གི་དཔེ་དེབ་ནང་འདྲེན་བྱས་ནས་དུས་དང་རྣམ་པ་ཀུན་ཏུ་ཀློག་ཐུབ།",
"Wikipedia": "ཝེ་ཁི་པི་ཌི་ཡ།",
"Writing Mode": "པར་སྒྲིག་གི་རྣམ་པ།",
"Your Library": "དཔེ་མཛོད།",
"TTS not supported for PDF": "PDF ཡིག་ཆར་ TTS རྒྱབ་སྐྱོར་མི་བྱེད།",
"Override Book Font": "དཔེ་དེབ་ཀྱི་ཡིག་གཟུགས་བརྗེ་བ།",
"Apply to All Books": "དཔེ་དེབ་ཡོད་རྒུར་སྤྱོད་པ།",
"Apply to This Book": "དཔེ་དེབ་འདིར་སྤྱོད་པ།",
"Unable to fetch the translation. Try again later.": "སྒྱུར་བཅོས་ལེན་ཐུབ་མེད། ཅུང་ཙམ་སྒུག་ནས་ཡང་བསྐྱར་ཚོད་ལྟ་བྱེད་རོགས།",
"Check Update": "བསྐྱར་བརྗེ་བརྟག་དཔྱད།",
"Already the latest version": "ད་ལྟ་ཐོན་རིམ་གསར་ཤོས་ཡིན།",
"Book Details": "དཔེ་དེབ་ཀྱི་གནས་ཚུལ་རྒྱས་པ།",
"From Local File": "ས་གནས་ཀྱི་ཡིག་ཆ་ནས་ནང་འདྲེན།",
"TOC": "དཀར་ཆག",
"Table of Contents": "དཀར་ཆག",
"Book uploaded: {{title}}": "དཔེ་དེབ་སྤྲད་ཟིན། {{title}}",
"Failed to upload book: {{title}}": "དཔེ་དེབ་སྤྲད་མ་ཐུབ། {{title}}",
"Book downloaded: {{title}}": "དཔེ་དེབ་ཕབ་ལེན་བྱས་ཟིན། {{title}}",
"Failed to download book: {{title}}": "དཔེ་དེབ་ཕབ་ལེན་བྱས་མ་ཐུབ། {{title}}",
"Upload Book": "དཔེ་དེབ་སྤྲད་པ།",
"Auto Upload Books to Cloud": "དཔེ་དེབ་རང་འགུལ་གྱིས་སྤྲི་དོན་ལ་སྤྲད་པ།",
"Book deleted: {{title}}": "དཔེ་དེབ་བསུབ་ཟིན། {{title}}",
"Failed to delete book: {{title}}": "དཔེ་དེབ་བསུབ་མ་ཐུབ། {{title}}",
"Check Updates on Start": "འགོ་སློང་སྐབས་བསྐྱར་བརྗེ་བརྟག་དཔྱད།",
"Insufficient storage quota": "སྤྲི་དོན་གྱི་ཉར་ཚགས་ས་ཁོངས་མི་འདང་།",
"Font Weight": "ཡིག་གཟུགས་ཀྱི་ལྗིད་ཚད།",
"Line Spacing": "ལོག་བར་གྱི་བར་ཐག",
"Word Spacing": "ཚིག་བར་གྱི་བར་ཐག",
"Letter Spacing": "ཡི་གེ་བར་གྱི་བར་ཐག",
"Text Indent": "ལོག་ཐོག་མའི་ནང་དུ་བསྐྱུར་བ།",
"Paragraph Margin": "དོན་ཚན་བར་གྱི་བར་ཐག",
"Override Book Layout": "པར་ངོས་ཀྱི་བཀོད་སྒྲིག་བརྗེ་བ།",
"Untitled Group": "མགོ་མེད་སྡེ་ཚན།",
"Group Books": "དཔེ་དེབ་སྡེ་ཚན་དུ་བསྡུ་བ།",
"Remove From Group": "སྡེ་ཚན་ནས་ཕྱིར་འཐེན།",
"Create New Group": "སྡེ་ཚན་གསར་པ་བཟོ་བ།",
"Deselect Book": "དཔེ་དེབ་འདེམས་པ་འདོར་བ།",
"Download Book": "དཔེ་དེབ་ཕབ་ལེན།",
"Deselect Group": "སྡེ་ཚན་འདེམས་པ་འདོར་བ།",
"Select Group": "སྡེ་ཚན་འདེམས་པ།",
"Keep Screen Awake": "བརྡ་ཁྱབ་ངོས་རྟག་ཏུ་འོད་ཟེར་འཕྲོ་བ།",
"Email address": "གློག་རྡུལ་ཡིག་ཟམ་གྱི་ཁ་བྱང་།",
"Your Password": "ཁྱེད་ཀྱི་གསང་ཨང་།",
"Your email address": "ཁྱེད་ཀྱི་གློག་རྡུལ་ཡིག་ཟམ་གྱི་ཁ་བྱང་།",
"Your password": "ཁྱེད་ཀྱི་གསང་ཨང་།",
"Sign in": "ནང་བསྐྱོད།",
"Signing in...": "ནང་བསྐྱོད་བྱེད་བཞིན་པ།...",
"Sign in with {{provider}}": "{{provider}} བེད་སྤྱད་ནས་ནང་བསྐྱོད།",
"Already have an account? Sign in": "གོ་མིང་ཡོད་ན་ནང་བསྐྱོད་བྱོས།",
"Create a Password": "གསང་ཨང་བཟོ་བ།",
"Sign up": "ཐོ་འགོད།",
"Signing up...": "ཐོ་འགོད་བྱེད་བཞིན་པ།...",
"Don't have an account? Sign up": "གོ་མིང་མེད་ན་ཐོ་འགོད་བྱོས།",
"Check your email for the confirmation link": "ཁྱེད་ཀྱི་གློག་རྡུལ་ཡིག་ཟམ་ནས་གཏན་འཁེལ་གྱི་སྦྲེལ་ཐག་ལ་བལྟ་དགོས།",
"Signing in ...": "ནང་བསྐྱོད་བྱེད་བཞིན་པ།...",
"Send a magic link email": "བྱ་བྱེད་སྦྲེལ་ཐག་གི་གློག་རྡུལ་ཡིག་ཟམ་སྤྲད་པ།",
"Check your email for the magic link": "ཁྱེད་ཀྱི་གློག་རྡུལ་ཡིག་ཟམ་ནས་བྱ་བྱེད་སྦྲེལ་ཐག་ལ་བལྟ་དགོས།",
"Send reset password instructions": "གསང་ཨང་བསྐྱར་སྒྲིག་གི་འགྲེལ་བཤད་སྤྲད་པ།",
"Sending reset instructions ...": "གསང་ཨང་བསྐྱར་སྒྲིག་གི་འགྲེལ་བཤད་སྤྲད་བཞིན་པ།...",
"Forgot your password?": "གསང་ཨང་བརྗེད་སོང་ངམ།",
"Check your email for the password reset link": "ཁྱེད་ཀྱི་གློག་རྡུལ་ཡིག་ཟམ་ནས་གསང་ཨང་བསྐྱར་སྒྲིག་གི་སྦྲེལ་ཐག་ལ་བལྟ་དགོས།",
"New Password": "གསང་ཨང་གསར་པ།",
"Your new password": "ཁྱེད་ཀྱི་གསང་ཨང་གསར་པ།",
"Update password": "གསང་ཨང་བསྐྱར་བརྗེ།",
"Updating password ...": "གསང་ཨང་བསྐྱར་བརྗེ་བཞིན་པ།...",
"Your password has been updated": "ཁྱེད་ཀྱི་གསང་ཨང་བསྐྱར་བརྗེ་ཟིན།",
"Phone number": "ཁ་པར་ཨང་གྲངས།",
"Your phone number": "ཁྱེད་ཀྱི་ཁ་པར་ཨང་གྲངས།",
"Token": "བཀོལ་ཐོགས།",
"Your OTP token": "ཁྱེད་ཀྱི་ OTP བཀོལ་ཐོགས།",
"Verify token": "བཀོལ་ཐོགས་བདེན་སྦྱོང་།",
"Sign in with Google": "Google བེད་སྤྱད་ནས་ནང་བསྐྱོད།",
"Sign in with Apple": "Apple བེད་སྤྱད་ནས་ནང་བསྐྱོད།",
"Sign in with GitHub": "GitHub བེད་སྤྱད་ནས་ནང་བསྐྱོད།",
"Account": "རྩིས་ཐོ།",
"Failed to delete user. Please try again later.": "སྤྱོད་མཁན་བསུབ་མ་ཐུབ། ཅུང་ཙམ་སྒུག་ནས་ཡང་བསྐྱར་ཚོད་ལྟ་བྱེད་རོགས།",
"Community Support": "སྡེ་ཁུལ་གྱི་རྒྱབ་སྐྱོར།",
"Priority Support": "གཙོ་རིམ་གྱི་རྒྱབ་སྐྱོར།",
"Loading profile...": "མི་སྒེར་གྱི་ཆ་འཕྲིན་འགུལ་སྐྱོང་བྱེད་བཞིན་པ།...",
"Delete Account": "རྩིས་ཐོ་བསུབ་པ།",
"Delete Your Account?": "ཁྱེད་ཀྱི་རྩིས་ཐོ་བསུབ་དགོས་སམ།",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "བྱ་སྤྱོད་འདི་ཕྱིར་འཐེན་བྱེད་ཐུབ་མེད། ཁྱེད་ཀྱིས་སྤྲི་དོན་ཐོག་གི་གཞི་གྲངས་ཡོད་རྒུ་རྟག་ཏུ་བསུབ་པར་འགྱུར།",
"Delete Permanently": "རྟག་ཏུ་བསུབ་པ།",
"RTL Direction": "གཡས་ནས་གཡོན་དུ།",
"Maximum Column Height": "གྲལ་ཐིག་མཐོ་ཤོས།",
"Maximum Column Width": "གྲལ་ཐིག་རྒྱ་ཆེ་ཤོས།",
"Continuous Scroll": "རྒྱུན་མཐུད་འཁོར་རྒྱུག",
"Fullscreen": "བརྡ་ཁྱབ་ངོས་ཆ་ཚང་།",
"No supported files found. Supported formats: {{formats}}": "རྒྱབ་སྐྱོར་བྱེད་པའི་ཡིག་ཆ་མ་རྙེད། རྒྱབ་སྐྱོར་བྱེད་པའི་རྣམ་པ། {{formats}}",
"Drop to Import Books": "འདྲུད་འཇོག་བྱས་ནས་དཔེ་དེབ་ནང་འདྲེན།",
"Custom": "རང་འགུལ་གྱིས་བཟོ་བ།",
"Custom Theme": "རང་འགུལ་གྱི་བརྗོད་བྱ།",
"Theme Name": "བརྗོད་བྱའི་མིང་།",
"Text Color": "ཡི་གེའི་ཚོན་མདོག",
"Background Color": "རྒྱབ་ལྗོངས་ཀྱི་ཚོན་མདོག",
"Preview": "སྔོན་ལྟ།",
"Contrast": "བསྡུར་བ།",
"Sunset": "ཉི་མ་ནུབ་པ།",
"Double Border": "ཤོག་ལྷེ་མངོན་པ།",
"Border Color": "ཤོག་ལྷེའི་ཚོན་མདོག",
"Border Frame": "ཤོག་ངོས་ཀྱི་ཤོག་ལྷེ།",
"Show Header": "ཤོག་ངོས་ཀྱི་མགོ་མངོན་པ།",
"Show Footer": "ཤོག་ངོས་ཀྱི་མཇུག་མངོན་པ།",
"Small": "ཆུང་བ།",
"Large": "ཆེ་བ།",
"Auto": "རང་འགུལ།",
"Language": "སྐད་ཡིག",
"No annotations to export": "ཕྱིར་འདོན་བྱ་རྒྱུའི་ཟིན་བྲིས་མེད།",
"Author": "རྩོམ་པ་པོ།",
"Exported from Readest": "Readest ནས་ཕྱིར་འདོན་བྱས་པ།",
"Highlights & Annotations": "འོག་ཐིག་དང་ཟིན་བྲིས།",
"Note": "ཟིན་བྲིས།",
"Copied to clipboard": "འདྲ་བཤུས་ལྡེ་མིག་ཏུ་བྱས་ཟིན།",
"Export Annotations": "ཟིན་བྲིས་ཕྱིར་འདོན།",
"Auto Import on File Open": "ཡིག་ཆ་ཁ་ཕྱེ་སྐབས་རང་འགུལ་གྱིས་ནང་འདྲེན།",
"LXGW WenKai GB Screen": "ཤ་ཝུ་ཝུན་ཁའེ།",
"LXGW WenKai TC": "ཤ་ཝུ་ཝུན་ཁའེ།",
"No chapters detected": "ལེའུ་བརྟག་དཔྱད་བྱུང་མེད།",
"Failed to parse the EPUB file": "EPUB ཡིག་ཆ་འགྲེལ་བཤད་བྱེད་ཐུབ་མེད།",
"This book format is not supported": "དཔེ་དེབ་ཀྱི་རྣམ་པ་འདི་རྒྱབ་སྐྱོར་མི་བྱེད།",
"Unable to fetch the translation. Please log in first and try again.": "སྒྱུར་བཅོས་ལེན་ཐུབ་མེད། ནང་བསྐྱོད་བྱས་རྗེས་ཡང་བསྐྱར་ཚོད་ལྟ་བྱེད་རོགས།",
"Group": "སྡེ་ཚན།",
"Always on Top": "སྒེའུ་ཁུང་གནས་སུ་བཀོད་པ།",
"No Timeout": "དུས་ཚོད་བཀག་པ།",
"{{value}} minute": "{{value}}སྐར་མ།",
"{{value}} minutes": "{{value}}སྐར་མ།",
"{{value}} hour": "{{value}}ཆུ་ཚོད།",
"{{value}} hours": "{{value}}ཆུ་ཚོད།",
"CJK Font": "རྒྱ་ཡིག་གི་ཡིག་གཟུགས།",
"Clear Search": "འཚོལ་བཤེར་བསལ་བ།",
"Header & Footer": "ཤོག་ངོས་ཀྱི་མགོ་དང་མཇུག",
"Apply also in Scrolled Mode": "འཁོར་རྒྱུག་རྣམ་པར་སྤྱོད་པ།",
"A new version of Readest is available!": "Readest ཐོན་རིམ་གསར་པ་བསྐྱར་བརྗེ་བྱ་རྒྱུ་ཡོད།",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Readest {{newVersion}} བསྐྱར་བརྗེ་བྱ་རྒྱུ་ཡོད།(བསྒྲིགས་ཟིན་པའི་ཐོན་རིམ {{currentVersion}}",
"Download and install now?": "ད་ལྟ་ཕབ་ལེན་དང་བསྒྲིགས་དགོས་སམ།",
"Downloading {{downloaded}} of {{contentLength}}": "ཕབ་ལེན་བྱེད་བཞིན་པ། {{downloaded}} / {{contentLength}}",
"Download finished": "ཕབ་ལེན་བྱས་ཚར།",
"DOWNLOAD & INSTALL": "ཕབ་ལེན་དང་བསྒྲིགས་པ།",
"Changelog": "བསྐྱར་བརྗེའི་ཟིན་ཐོ།",
"Software Update": "མཉེན་ཆས་བསྐྱར་བརྗེ།",
"Title": "དཔེ་དེབ་ཀྱི་མིང་།",
"Date Read": "ཀློག་པའི་ཚེས་གྲངས།",
"Date Added": "ཁ་སྣོན་བྱས་པའི་ཚེས་གྲངས།",
"Format": "རྣམ་པ།",
"Ascending": "འཕར་རིམ།",
"Descending": "འཕྲི་རིམ།",
"Sort by...": "རིམ་སྒྲིག་བྱེད་སྟངས།...",
"Added": "ཁ་སྣོན་བྱས་པའི་ཚེས་གྲངས།",
"GuanKiapTsingKhai-T": "ཡོན་ཞ་ཀྲིང་ཁའེ་-T",
"Description": "ངོ་སྤྲོད་བསྡུས་དོན།",
"No description available": "ད་རེས་ངོ་སྤྲོད་བསྡུས་དོན་མེད།",
"List": "ཐོ་རེའུ།",
"Grid": "དྲྭ་རྡལ།",
"(from 'As You Like It', Act II)": "《ཐམས་ཅད་དགའ་བ》ནས་དྲངས་པ། ལེའུ་གཉིས་པ།",
"Link Color": "སྦྲེལ་ཐག་གི་ཚོན་མདོག",
"Volume Keys for Page Flip": "སྒྲ་ཚད་ལྡེ་མིག་གིས་ཤོག་ལྷེ་བསྒྱུར་བ།",
"Screen": "བརྡ་ཁྱབ་ངོས།",
"Orientation": "བརྡ་ཁྱབ་ངོས་ཀྱི་ཁ་ཕྱོགས།",
"Portrait": "ཀྲིང་ངོས།",
"Landscape": "འཕྲེད་ངོས།",
"Open Last Book on Start": "འགོ་སློང་སྐབས་སྔོན་མར་ཀློག་པའི་དཔེ་དེབ་ཁ་ཕྱེ་བ།",
"Checking for updates...": "བསྐྱར་བརྗེ་བརྟག་དཔྱད་བྱེད་བཞིན་པ།...",
"Error checking for updates": "བསྐྱར་བརྗེ་བརྟག་དཔྱད་བྱེད་སྐབས་ནོར་འཁྲུལ་བྱུང་།",
"Details": "ཞིབ་ཕྲ།",
"File Size": "ཡིག་ཆའི་ཆེ་ཆུང་།",
"Auto Detect": "རང་འགུལ་གྱིས་བརྟག་དཔྱད།",
"Next Section": "ལེའུ་རྗེས་མ།",
"Previous Section": "ལེའུ་སྔོན་མ།",
"Next Page": "ཤོག་ལྷེ་རྗེས་མ།",
"Previous Page": "ཤོག་ལྷེ་སྔོན་མ།",
"Are you sure to delete {{count}} selected book(s)?_other": "ཁྱེད་ཀྱིས་འདེམས་ཟིན་པའི་དཔེ་དེབ་ {{count}} བསུབ་དགོས་སམ།",
"Are you sure to delete the selected book?": "ཁྱེད་ཀྱིས་འདེམས་ཟིན་པའི་དཔེ་དེབ་བསུབ་དགོས་སམ།",
"Deselect": "འདེམས་པ་འདོར་བ།",
"Select All": "ཚང་མ་འདེམས་པ།",
"No translation available.": "ད་རེས་སྤྱོད་རྒྱུའི་སྒྱུར་བཅོས་མེད།",
"Translated by {{provider}}.": "{{provider}} ནས་སྒྱུར་བཅོས་བྱས་པ།",
"DeepL": "DeepL",
"Google Translate": "Google Translate",
"Azure Translator": "Azure Translator",
"Invert Image In Dark Mode": "མདོག་ནག་པོའི་བརྗོད་བྱའི་འོག་ཏུ་པར་རིས་ཀྱི་ཚོན་མདོག་ལྡོག་པ།",
"Help improve Readest": "Readest ལེགས་བཅོས་ལ་རོགས་རམ་བྱེད་པ།",
"Sharing anonymized statistics": "མིང་མེད་ཀྱི་བསྡོམས་རྩིས་གཞི་གྲངས་མཉམ་སྤྱོད།",
"Interface Language": "མཐུད་ངོས་ཀྱི་སྐད་ཡིག",
"Translation": "སྒྱུར་བཅོས།",
"Enable Translation": "སྒྱུར་བཅོས་སྤྱོད་པ།",
"Translation Service": "སྒྱུར་བཅོས་ཞབས་ཞུ།",
"Translate To": "ནང་དུ་སྒྱུར་བ།",
"Disable Translation": "སྒྱུར་བཅོས་སྒོ་བརྒྱབ།",
"Scroll": "འཁོར་རྒྱུག",
"Overlap Pixels": "ལྷན་པའི་པིག་སེལ།",
"System Language": "མ་ལག་གི་སྐད་ཡིག",
"Security": "བདེ་འཇགས།",
"Allow JavaScript": "JavaScript ཆོག་མཆན།",
"Enable only if you trust the file.": "ཁྱེད་ཀྱིས་ཡིག་ཆ་འདིར་ཡིད་ཆེས་བྱེད་དུས་ཙམ་སྤྱོད་རྒྱུའི་གྲོས་འགལ།",
"Sort TOC by Page": "ཤོག་ཨང་ལྟར་དཀར་ཆག་རིམ་སྒྲིག་བྱེད་པ།",
"Search in {{count}} Book(s)..._other": "དཔེ་དེབ་ {{count}} ནང་འཚོལ་བཤེར་བྱེད་པ།...",
"No notes match your search": "མཐུན་པའི་ཟིན་བྲིས་མ་རྙེད།",
"Search notes and excerpts...": "ཟིན་བྲིས་འཚོལ་བཤེར།...",
"Sign in to Sync": "ནང་བསྐྱོད་བྱས་རྗེས་སྐད་མཉམ་བྱེད་པ།",
"Synced at {{time}}": "སྐད་མཉམ་བྱས་པའི་དུས་ཚོད། {{time}}",
"Never synced": "ནམ་ཡང་སྐད་མཉམ་བྱས་མ་མྱོང་།",
"Show Remaining Time": "ལྷག་མའི་དུས་ཚོད་མངོན་པ།",
"{{time}} min left in chapter": "ལེའུ་འདིར་ད་དུང་ {{time}} སྐར་མ་ལྷག་ཡོད།",
"Override Book Color": "དཔེ་དེབ་ཀྱི་ཚོན་མདོག་བརྗེ་བ།",
"Login Required": "ནང་བསྐྱོད་བྱ་དགོས།",
"Quota Exceeded": "ཚད་འཇལ་མི་འདང་།",
"{{percentage}}% of Daily Translation Characters Used.": "ཉིན་རེའི་སྒྱུར་བཅོས་ཀྱི་ཡི་གེའི་ {{percentage}}% སྤྱོད་ཟིན།",
"Translation Characters": "སྒྱུར་བཅོས་ཀྱི་ཡི་གེའི་གྲངས་ཀ།",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}} སྒྲ་རྣམ་པ།",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "ཅུང་ཙམ་གྱི་གནད་དོན་བྱུང་བ་རེད། སེམས་ཁྲལ་མ་བྱེད། ང་ཚོའི་ཚོགས་པས་བརྡ་ཐོ་དང་ལེན་བྱས་ཟིན་པ་དང་ད་ལྟ་ཞིག་གི་ནང་བཅོས་བྱེད་བཞིན་པ་རེད།",
"Error Details:": "ནོར་འཁྲུལ་གྱི་ཞིབ་ཕྲ།",
"Try Again": "ཡང་བསྐྱར་ཚོད་ལྟ།",
"Need help?": "རོགས་རམ་དགོས་སམ།",
"Contact Support": "ཞབས་འདེགས་པར་འབྲེལ་བ།",
"Code Highlighting": "ཨང་རྟགས་གསལ་བཀྲོལ།",
"Enable Highlighting": "གསལ་བཀྲོལ་སྤྱོད་པ།",
"Code Language": "ཨང་རྟགས་ཀྱི་སྐད་ཡིག",
"Top Margin (px)": "སྟེང་ངོས་ཀྱི་བར་ཐག",
"Bottom Margin (px)": "འོག་ངོས་ཀྱི་བར་ཐག",
"Right Margin (px)": "གཡས་ངོས་ཀྱི་བར་ཐག",
"Left Margin (px)": "གཡོན་ངོས་ཀྱི་བར་ཐག",
"Column Gap (%)": "གྲལ་ཐིག་བར་གྱི་བར་ཐག",
"Always Show Status Bar": "རྟག་ཏུ་གནས་ཚུལ་གྱི་གྲལ་ཐིག་མངོན་པ།",
"Custom Content CSS": "རང་འགུལ་གྱི་ནང་དོན་ CSS",
"Enter CSS for book content styling...": "དཔེ་དེབ་ཀྱི་ནང་དོན་གྱི་རྣམ་པའི་ CSS ནང་འཇུག་བྱོས།...",
"Custom Reader UI CSS": "རང་འགུལ་གྱི་མཐུད་ངོས་ CSS",
"Enter CSS for reader interface styling...": "ཀློག་ཆས་ཀྱི་མཐུད་ངོས་རྣམ་པའི་ CSS ནང་འཇུག་བྱོས།...",
"Crop": "བཏོག་པ།",
"Book Covers": "དཔེ་དེབ་ཀྱི་སྟོང་ངོས།",
"Fit": "མཐུན་སྒྲིག",
"Reset {{settings}}": "{{settings}} བསྐྱར་སྒྲིག",
"Reset Settings": "སྒྲིག་བཀོད་བསྐྱར་སྒྲིག",
"{{count}} pages left in chapter_other": "ལེའུ་འདིར་ད་དུང་ {{count}} ཤོག་ལྷེ་ལྷག་ཡོད།",
"Show Remaining Pages": "ལྷག་མའི་ཤོག་ལྷེའི་གྲངས་ཀ་མངོན་པ།",
"Source Han Serif CN VF": "སི་ཡོན་སུང་ཐི།",
"Huiwen-mincho": "ཧུའེ་ཝུན་མིང་ཁྲའོ་ཐི།",
"KingHwa_OldSong": "ཅིང་ཧྭ་ལའོ་སུང་ཐི།",
"Manage Subscription": "མཚམས་སྦྱོར་དོ་དམ།",
"Coming Soon": "ཉེ་བར་སྤྱོད་འགོ་འཛུགས་རྒྱུ།",
"Upgrade to {{plan}}": "{{plan}} ལ་རིམ་སྤོར་བྱེད་པ།",
"Upgrade to Plus or Pro": "Plus ཡང་ན་ Pro ལ་རིམ་སྤོར་བྱེད་པ།",
"Current Plan": "ད་ལྟའི་ཐུམ་སྒྲིལ།",
"Plan Limits": "ཐུམ་སྒྲིལ་གྱི་ཚད་བཀག",
"Processing your payment...": "དངུལ་སྤྲོད་པར་བརྟག་དཔྱད་བྱེད་བཞིན་པ།...",
"Please wait while we confirm your subscription.": "ཅུང་ཙམ་སྒུག་དང་། ང་ཚོས་ཁྱེད་ཀྱི་མཚམས་སྦྱོར་གཏན་འཁེལ་བྱེད་བཞིན་པ་རེད།",
"Payment Processing": "དངུལ་སྤྲོད་པར་བརྟག་དཔྱད་བྱེད་བཞིན་པ།",
"Your payment is being processed. This usually takes a few moments.": "ཁྱེད་ཀྱི་དངུལ་སྤྲོད་པར་བརྟག་དཔྱད་བྱེད་བཞིན་པ་ཡིན། སྤྱིར་ན་སྐར་ཆ་ཁ་ཤས་དགོས།",
"Payment Failed": "དངུལ་སྤྲོད་མ་ཐུབ།",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "ང་ཚོས་ཁྱེད་ཀྱི་མཚམས་སྦྱོར་བརྟག་དཔྱད་བྱེད་ཐུབ་མེད། ཡང་བསྐྱར་ཚོད་ལྟ་བྱོས། ཡང་ན་གནད་དོན་རྒྱུན་མཐུད་བྱུང་ན་རྒྱབ་སྐྱོར་ལ་འབྲེལ་བ་གནང་རོགས།",
"Back to Profile": "མི་སྒེར་གྱི་ཆ་འཕྲིན་ལ་ཕྱིར་ལོག",
"Subscription Successful!": "མཚམས་སྦྱོར་བྱས་ཐུབ།",
"Thank you for your subscription! Your payment has been processed successfully.": "ཁྱེད་ཀྱི་མཚམས་སྦྱོར་ལ་ཐུགས་རྗེ་ཆེ། ཁྱེད་ཀྱི་དངུལ་སྤྲོད་ཐུབ་སོང་།",
"Email:": "གློག་རྡུལ་ཡིག་ཟམ།",
"Plan:": "ཐུམ་སྒྲིལ།",
"Amount:": "དངུལ་གྲངས།",
"Go to Library": "དཔེ་མཛོད་ལ་འགྲོ།",
"Need help? Contact our support team at support@readest.com": "རོགས་རམ་དགོས་སམ། རྒྱབ་སྐྱོར་ཚོགས་པར་འབྲེལ་བ་གནང་རོགས། support@readest.com",
"Free Plan": "རིན་མེད་ཐུམ་སྒྲིལ།",
"month": "ཟླ་བ།",
"AI Translations (per day)": "AI སྒྱུར་བཅོས།(ཉིན་རེར།)",
"Plus Plan": "Plus ཐུམ་སྒྲིལ།",
"Includes All Free Plan Benefits": "རིན་མེད་ཐུམ་སྒྲིལ་གྱི་བྱེད་ནུས་ཚང་མ་ཚུད་ཡོད།",
"Pro Plan": "Pro ཐུམ་སྒྲིལ།",
"More AI Translations": "AI སྒྱུར་བཅོས་དེ་བས་མང་བ།",
"Complete Your Subscription": "ཁྱེད་ཀྱི་མཚམས་སྦྱོར་ལེགས་གྲུབ།",
"{{percentage}}% of Cloud Sync Space Used.": "སྤྲི་དོན་སྐད་མཉམ་གྱི་བར་སྟོང་གི་ {{percentage}}% སྤྱོད་ཟིན།",
"Cloud Sync Storage": "སྤྲི་དོན་སྐད་མཉམ་གྱི་བར་སྟོང་།",
"Disable": "སྒོ་བརྒྱབ།",
"Enable": "སྤྱོད་པ།",
"Upgrade to Readest Premium": "Readest Premium ལ་རིམ་སྤོར་བྱེད་པ།",
"Show Source Text": "མགོ་ཡིག་མངོན་པ།",
"Cross-Platform Sync": "ལས་སྟེགས་བརྒལ་བའི་སྐད་མཉམ།",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "སྒྲིག་ཆས་ཡོད་རྒུའི་བར་དུ་ཁྱེད་ཀྱི་དཔེ་མཛོད། ཡར་འཕེལ། མཚན་སྟོན་དང་ཟིན་བྲིས་བཅས་སྐད་མཉམ་བྱེད་པ།——ཀློག་པའི་གནས་ས་ནམ་ཡང་བོར་མི་སྲིད།",
"Customizable Reading": "མི་སྒེར་གྱི་ཀློག་ཚུལ།",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "འགྱུར་བཅོས་བྱེད་ཐུབ་པའི་ཡིག་གཟུགས། བཀོད་སྒྲིག བརྗོད་བྱ་དང་མཐོ་རིམ་གྱི་མངོན་པའི་སྒྲིག་བཀོད་བཅས་བརྒྱུད་ནས་ཞིབ་ཕྲ་རེ་རེ་མི་སྒེར་གྱི་རང་བཞིན་ལྡན་པར་བྱས་ཏེ། ངོ་མཚར་ཆེ་བའི་ཀློག་ཚུལ་ཞིག་ཐོབ།",
"AI Read Aloud": "AI སྒྲ་ཀློག",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "ལག་པ་གཉིས་ཐར་བའི་ཀློག་ཚུལ་ལོངས་སུ་སྤྱོད། རང་བཞིན་གྱི་ AI སྒྲ་སྐད་བེད་སྤྱད་ནས་དཔེ་དེབ་སླར་གསོ་བྱེད།",
"AI Translations": "AI སྒྱུར་བཅོས།",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "Google དང་ Azure ཡང་ན་ DeepL བཅས་ཀྱི་ནུས་པ་ཆེ་བའི་བྱེད་ནུས་བརྒྱུད་ནས་སྐད་ཡིག་གང་རུང་གི་ནང་དོན་དུས་ཐོག་ཏུ་སྒྱུར་བཅོས་བྱེད།",
"Connect with fellow readers and get help fast in our friendly community channels.": "ཀློག་པ་པ་གཞན་དང་མཉམ་འབྲེལ་བྱས་ཏེ། ང་ཚོའི་མཛའ་བརྩེའི་སྡེ་ཁུལ་གྱི་ཐོག་མཐུད་ནང་མྱུར་དུ་རོགས་རམ་ཐོབ།",
"Unlimited AI Read Aloud Hours": "AI སྒྲ་ཀློག་གི་དུས་ཚོད་ཚད་མེད།",
"Listen without limits—convert as much text as you like into immersive audio.": "ཡི་གེ་གང་འདོད་སྒྲ་སྐད་དུ་བསྒྱུར་བ།",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "སྒྱུར་བཅོས་ཀྱི་བྱེད་ནུས་ཇེ་མཐོར་གཏོང་བ། སྒྱུར་བཅོས་ཀྱི་ཚད་འཇལ་དེ་བས་མང་བ། མཐོ་རིམ་གྱི་འདེམས་གཞི།",
"DeepL Pro Access": "DeepL Pro ཀྱི་སྤྱོད་དབང་།",
"Enjoy faster responses and dedicated assistance whenever you need help.": "དུས་ཐོག་ཏུ་ལན་འདེབས་མགྱོགས་པོ་དང་ཆེད་སྤྱོད་ཀྱི་རོགས་རམ་ལོངས་སུ་སྤྱོད།",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "ཉིན་རེའི་སྒྱུར་བཅོས་ཀྱི་ཚད་འཇལ་ལ་སླེབས་འདུག ཐུམ་སྒྲིལ་རིམ་སྤོར་བྱས་ནས་ AI སྒྱུར་བཅོས་མུ་མཐུད་དུ་སྤྱོད།",
"Includes All Plus Plan Benefits": "Plus ཐུམ་སྒྲིལ་གྱི་བྱེད་ནུས་ཚང་མ་ཚུད་ཡོད།",
"Early Feature Access": "བྱེད་ནུས་གསར་པ་སྔོན་ལ་ཉམས་སུ་མྱོང་བ།",
"Be the first to explore new features, updates, and innovations before anyone else.": "བྱེད་ནུས་གསར་པ། བསྐྱར་བརྗེ་དང་གསར་གཏོད་བཅས་སྔོན་ལ་ཉམས་སུ་མྱོང་བ།",
"Advanced AI Tools": "མཐོ་རིམ་གྱི་ AI ལག་ཆ།",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "ནུས་པ་ཆེ་བའི་ AI ལག་ཆ་བེད་སྤྱད་ནས་ཤེས་ལྡན་གྱི་ཀློག་ཚུལ། སྒྱུར་བཅོས་དང་ནང་དོན་རྟོགས་པ་བཅས་མངོན་འགྱུར་བྱེད།",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "ཆེས་གནད་ལ་ཁེལ་བའི་སྒྱུར་བཅོས་འཕྲུལ་ཆས་བེད་སྤྱད་ནས་ཉིན་རེར་ཡིག་འབྲུ་ཁྲི་ཚོ 10 སྒྱུར་བཅོས་བྱེད་ཐུབ།",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "ཆེས་གནད་ལ་ཁེལ་བའི་སྒྱུར་བཅོས་འཕྲུལ་ཆས་བེད་སྤྱད་ནས་ཉིན་རེར་ཡིག་འབྲུ་ཁྲི་ཚོ 50 སྒྱུར་བཅོས་བྱེད་ཐུབ།",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "བདེ་འཇགས་ཀྱི་སྤྲི་དོན་ཉར་ཚགས་ 5GB བར་ཁྱབ་ཏུ་བེད་སྤྱད་ནས་ཁྱེད་ཀྱི་ཀློག་ཚུལ་ཡོད་རྒུ་ཉར་ཚགས་དང་སྤྱོད་པ།",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "བདེ་འཇགས་ཀྱི་སྤྲི་དོན་ཉར་ཚགས་ 20GB བར་ཁྱབ་ཏུ་བེད་སྤྱད་ནས་ཁྱེད་ཀྱི་ཀློག་ཚུལ་ཡོད་རྒུ་ཉར་ཚགས་དང་སྤྱོད་པ།",
"Deleted cloud backup of the book: {{title}}": "དཔེ་དེབ་ཀྱི་སྤྲི་དོན་གྱི་གསོག་ཉར་བསུབ་ཟིན། {{title}}",
"Are you sure to delete the cloud backup of the selected book?": "ཁྱེད་ཀྱིས་འདེམས་ཟིན་པའི་དཔེ་དེབ་ཀྱི་སྤྲི་དོན་གྱི་གསོག་ཉར་བསུབ་དགོས་སམ།",
"What's New in Readest": "Readest ཀྱི་བྱེད་ནུས་གསར་པ།",
"Enter book title": "དཔེ་དེབ་ཀྱི་མིང་ནང་འཇུག་བྱོས།",
"Subtitle": "ལེའུ་གཉིས་པའི་མགོ་བྱང་།",
"Enter book subtitle": "དཔེ་དེབ་ཀྱི་ལེའུ་གཉིས་པའི་མགོ་བྱང་ནང་འཇུག་བྱོས།",
"Enter author name": "རྩོམ་པ་པོའི་མིང་ནང་འཇུག་བྱོས།",
"Series": "རབས་རིམ།",
"Enter series name": "རབས་རིམ་གྱི་མིང་ནང་འཇུག་བྱོས།",
"Series Index": "རབས་རིམ་གྱི་ཨང་གྲངས།",
"Enter series index": "རབས་རིམ་གྱི་ཨང་གྲངས་ནང་འཇུག་བྱོས།",
"Total in Series": "རབས་རིམ་གྱི་བསྡོམས་གྲངས།",
"Enter total books in series": "རབས་རིམ་ནང་གི་དཔེ་དེབ་བསྡོམས་གྲངས་ནང་འཇུག་བྱོས།",
"Enter publisher": "དཔེ་སྐྲུན་ཁང་ནང་འཇུག་བྱོས།",
"Publication Date": "དཔེ་སྐྲུན་བྱས་པའི་ཚེས་གྲངས།",
"Identifier": "ངོས་འཛིན་རྟགས།",
"Enter book description": "དཔེ་དེབ་ཀྱི་ངོ་སྤྲོད་ནང་འཇུག་བྱོས།",
"Change cover image": "སྟོང་ངོས་ཀྱི་པར་རིས་བརྗེ་བ།",
"Replace": "བརྗེ་བ།",
"Unlock cover": "སྟོང་ངོས་སྒོ་ཕྱེ་བ།",
"Lock cover": "སྟོང་ངོས་བཀག་པ།",
"Auto-Retrieve Metadata": "རང་འགུལ་གྱིས་གཞི་གྲངས་ལེན་པ།",
"Auto-Retrieve": "རང་འགུལ་གྱིས་ལེན་པ།",
"Unlock all fields": "ཡིག་སྣེ་ཚང་མ་སྒོ་ཕྱེ་བ།",
"Unlock All": "ཚང་མ་སྒོ་ཕྱེ་བ།",
"Lock all fields": "ཡིག་སྣེ་ཚང་མ་བཀག་པ།",
"Lock All": "ཚང་མ་བཀག་པ།",
"Reset": "བསྐྱར་སྒྲིག",
"Edit Metadata": "གཞི་གྲངས་རྩོམ་སྒྲིག",
"Locked": "བཀག་ཟིན།",
"Select Metadata Source": "གཞི་གྲངས་ཀྱི་འབྱུང་ཁུངས་འདེམས་པ།",
"Keep manual input": "ལག་བཟོས་ནང་འཇུག་བྱས་པ་ཉར་བ།",
"Google Books": "Google དཔེ་མཛོད།",
"Open Library": "སྒོ་འབྱེད་དཔེ་ཁང་།",
"Fiction, Science, History": "སྒྲུང་གཏམ། ཚན་རིག ལོ་རྒྱུས།",
"Open Book in New Window": "སྒེའུ་ཁུང་གསར་པའི་ནང་དཔེ་དེབ་ཁ་ཕྱེ་བ།",
"Voices for {{lang}}": "{{lang}} གྱི་སྒྲ་སྐད།",
"Yandex Translate": "Yandex སྒྱུར་བཅོས།",
"YYYY or YYYY-MM-DD": "YYYY ཡང་ན་ YYYY-MM-DD",
"Restore Purchase": "ཉོ་སྒྲུབ་སླར་གསོ།",
"No purchases found to restore.": "སླར་གསོ་བྱ་རྒྱུའི་ཉོ་སྒྲུབ་མ་རྙེད།",
"Failed to restore purchases.": "ཉོ་སྒྲུབ་སླར་གསོ་བྱས་མ་ཐུབ།",
"Failed to manage subscription.": "མཚམས་སྦྱོར་དོ་དམ་བྱས་མ་ཐུབ།",
"Failed to load subscription plans.": "མཚམས་སྦྱོར་འཆར་གཞི་འགུལ་སྐྱོང་བྱས་མ་ཐུབ།",
"year": "ལོ།",
"Failed to create checkout session": "དངུལ་སྤྲོད་ཚོགས་འདུ་བཟོ་ཐུབ་མེད།",
"Storage": "སྤྲི་དོན་གྱི་བར་སྟོང་།",
"Terms of Service": "ཞབས་འདེགས་ཀྱི་ཆ་རྐྱེན།",
"Privacy Policy": "སྒེར་གསང་གི་སྲིད་ཇུས།",
"Disable Double Click": "ཐེངས་གཉིས་མནན་པ་སྒོ་བརྒྱབ།",
"TTS not supported for this document": "ཡིག་ཆ་འདིར་ TTS རྒྱབ་སྐྱོར་མི་བྱེད།",
"Reset Password": "གསང་ཨང་བསྐྱར་སྒྲིག",
"Show Reading Progress": "ཀློག་པའི་ཡར་འཕེལ་མངོན་པ།",
"Reading Progress Style": "ཀློག་པའི་ཡར་འཕེལ་གྱི་རྣམ་པ།",
"Page Number": "ཤོག་ཨང་།",
"Percentage": "བརྒྱ་ཆ།",
"Deleted local copy of the book: {{title}}": "དཔེ་དེབ་ཀྱི་ས་གནས་ཀྱི་འདྲ་བཤུས་བསུབ་ཟིན། {{title}}",
"Failed to delete cloud backup of the book: {{title}}": "དཔེ་དེབ་ཀྱི་སྤྲི་དོན་གྱི་གསོག་ཉར་བསུབ་ཐུབ་མེད། {{title}}",
"Failed to delete local copy of the book: {{title}}": "དཔེ་དེབ་ཀྱི་ས་གནས་ཀྱི་འདྲ་བཤུས་བསུབ་ཐུབ་མེད། {{title}}",
"Are you sure to delete the local copy of the selected book?": "ཁྱེད་ཀྱིས་འདེམས་ཟིན་པའི་དཔེ་དེབ་ཀྱི་ས་གནས་ཀྱི་འདྲ་བཤུས་བསུབ་དགོས་སམ།",
"Remove from Cloud & Device": "སྤྲི་དོན་དང་སྒྲིག་ཆས་ནས་ཕྱིར་འཐེན།",
"Remove from Cloud Only": "སྤྲི་དོན་ཐོག་ནས་ཕྱིར་འཐེན།",
"Remove from Device Only": "སྒྲིག་ཆས་ཐོག་ནས་ཕྱིར་འཐེན།",
"Failed to connect": "འབྲེལ་བ་བྱས་མ་ཐུབ།",
"Disconnected": "འབྲེལ་བ་བྱས་མ་ཐུབ།",
"KOReader Sync Settings": "KOReader སྤྲི་དོན་གཞི་འདེམས་པ།",
"Sync as {{userDisplayName}}": "ཁྱེད་ཀྱིས {{userDisplayName}} སྤྲི་དོན་གཞི་འདེམས་པ།",
"Sync Server Connected": "སྤྲི་དོན་སང་བཞིན་འདེམས་པ།",
"Sync Strategy": "སྤྲི་དོན་འབྱུང་ཁུངས།",
"Ask on conflict": "འབྱུང་ཁུངས་འདེམས་པ་བྱས་ནས་བརྗེ་བ།",
"Always use latest": "དེ་ལས་འབྱུང་ཁུངས་འདེམས་པ་བྱས་ནས་བརྗེ་བ།",
"Send changes only": "འབྱུང་ཁུངས་འདེམས་པ་བྱས་ནས་བརྗེ་བ།",
"Receive changes only": "འབྱུང་ཁུངས་འདེམས་པ་བྱས་ནས་བརྗེ་བ།",
"Checksum Method": "ཡིག་སྣེ་འབྱུང་ཁུངས།",
"File Content (recommended)": "ཡིག་སྣེ་འབྱུང་ཁུངས།",
"File Name": "ཡིག་སྣེ་འབྱུང་ཁུངས།",
"Device Name": "ཡིག་སྣེ་འབྱུང་ཁུངས།",
"Connect to your KOReader Sync server.": "ཁྱེད་ཀྱིས KOReader སྤྲི་དོན་སང་བཞིན་འདེམས་པ།",
"Server URL": "སང་བཞིན་འདེམས་པའི URL",
"Username": "ཁྱེད་ཀྱིས་འབྱུང་ཁུངས་འདེམས་པ།",
"Your Username": "ཁྱེད་ཀྱིས་འབྱུང་ཁུངས་འདེམས་པ།",
"Password": "གསང་ཨང་",
"Connect": "འབྲེལ་བ་བྱས་པ།",
"KOReader Sync": "KOReader སྤྲི་དོན་འདེམས་པ།",
"Sync Conflict": "སྤྲི་དོན་འབྱུང་ཁུངས།",
"Sync reading progress from \"{{deviceName}}\"?": "ཁྱེད་ཀྱིས \"{{deviceName}}\" སྤྲི་དོན་འབྱུང་ཁུངས་འདེམས་པ་བྱས་ནས་བརྗེ་བ།",
"another device": "གཞན་ཡིག་སྣེ།",
"Local Progress": "ཀུན་འབྱུང་ཁུངས།",
"Remote Progress": "བརྒྱབ་འབྱུང་ཁུངས།",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "འབྱུང་ཁུངས་འདེམས་པ་བྱས་ནས་བརྗེ་བ།",
"Page {{page}} of {{total}} ({{percentage}}%)": "ཤོག་ {{page}} དང་ {{total}} ({{percentage}}%)",
"Current position": "ད་ལྟའི་གནས་ས།",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "ཕྲན་བུ་ཤོག་ངོས་ {{page}} / {{total}} ({{percentage}}%)",
"Approximately {{percentage}}%": "ཕྲན་བུ་ {{percentage}}%",
"Custom Fonts": "རང་བཞིན་ཡིག་གཟུགས།",
"Cancel Delete": "སུབ་པ་འདོར་བ།",
"Import Font": "ཡིག་གཟུགས་འདྲེན་འཇུག",
"Delete Font": "ཡིག་གཟུགས་སུབ་པ།",
"Tips": "གསལ་འདེབས།",
"Custom fonts can be selected from the Font Face menu": "རང་བཞིན་ཡིག་གཟུགས་ནི་ཡིག་གཟུགས་ངོ་བོའི་ཟ་འབྲིང་ནས་འདེམས་ཆོག",
"Manage Custom Fonts": "རང་བཞིན་ཡིག་གཟུགས་འཛིན་སྐྱོང་།",
"Select Files": "ཡིག་ཆ་འདེམས་པ།",
"Select Image": "རི་མོ་འདེམས་པ།",
"Select Video": "བརྙན་ཟློས་འདེམས་པ།",
"Select Audio": "སྒྲ་ཟློས་འདེམས་པ།",
"Select Fonts": "ཡིག་གཟུགས་འདེམས་པ།",
"Supported font formats: .ttf, .otf, .woff, .woff2": "ཡིག་གཟུགས་འདེམས་པ་བྱས་ནས་བསྐྱར་བརྗེ་བ། ཡིག་གཟུགས་ཀྱི་སྒྲ་སྐད། .ttf, .otf, .woff, .woff2",
"Push Progress": "འདེགས་པའི་འཕེལ་རིམ།",
"Pull Progress": "འདྲུད་པའི་འཕེལ་རིམ།",
"Previous Paragraph": "སྔོན་གྱི་དོན་ཚན།",
"Previous Sentence": "སྔོན་གྱི་ཚིག་གྲུབ།",
"Pause": "སྐར་མ་འཇོག",
"Play": "གཏོང་བ།",
"Next Sentence": "རྗེས་ཀྱི་ཚིག་གྲུབ།",
"Next Paragraph": "རྗེས་ཀྱི་དོན་ཚན།",
"Separate Cover Page": "སྟོང་ངོས་གི་ཤོག་དཀར་པ།",
"Resize Notebook": "དེབ་སྣོད་གཅོད་སྒྲིག",
"Resize Sidebar": "གཡས་སྒོ་གཅོད་སྒྲིག",
"Get Help from the Readest Community": "Readest མཛའ་བརྩེའི་རོགས་རམ་ལོངས་སུ་རོགས་རམ་ཐོབ།",
"Remove cover image": "སྟོང་ངོས་ཀྱི་པར་རིས་ཕྱིར་འཐེན།",
"Bookshelf": "དེབ་སྡེབས་",
"View Menu": "མ་ལག་བལྟ་བ",
"Settings Menu": "སྒྲིག་སྟངས་མ་ལག",
"View account details and quota": "རྩིས་ཐོའི་རྒྱུ་ཆ་དང་ཚད་བརྡ་བལྟ་བ",
"Library Header": "དེབ་མཛོད་མགོ་ཡིག",
"Book Content": "དེབ་ནང་དོན",
"Footer Bar": "མཇུག་སྒམ་ཕྱོགས",
"Header Bar": "མགོ་སྒམ་ཕྱོགས",
"View Options": "བལྟ་བའི་གདམ་ཁ",
"Book Menu": "དེབ་ཀྱི་མ་ལག",
"Search Options": "འཚོལ་བའི་གདམ་ཁ",
"Close": "ཁ་རྒྱག",
"Delete Book Options": "དེབ་བཏོན་གཏང་གི་གདམ་ཁ",
"ON": "འབྱུང་ཁུངས",
"OFF": "བརྗེ་བ",
"Reading Progress": "ཀློག་པའི་ཡར་འཕེལ།",
"Page Margin": "ཤོག་གདོང་།",
"Remove Bookmark": "དེབ་གྲངས་འདོར་བ།",
"Add Bookmark": "དེབ་གྲངས་སྣོན་པ།",
"Books Content": "དེབ་ཀྱི་ནང་དོན།",
"Jump to Location": "གནས་ས་ལ་འགྲོ།",
"Unpin Notebook": "དེབ་སྣོད་བཤོལ་བ།",
"Pin Notebook": "དེབ་སྣོད་བཀར་བ།",
"Hide Search Bar": "འཚོལ་བཤེར་སྒོ་སྦེད།",
"Show Search Bar": "འཚོལ་བཤེར་སྒོ་སྟོན།",
"On {{current}} of {{total}} page": "ཤོག་ངོས་ {{total}} ནས་ {{current}} ལ།",
"Section Title": "དོན་ཚན་མགོ་མིང་།",
"Decrease": "མར་འབེབས།",
"Increase": "ཡར་འཕར།",
"Settings Panels": "སྒྲིག་སྟངས་གནས་སྟོན།",
"Settings": "སྒྲིག་སྟངས།",
"Unpin Sidebar": "ཟུར་སྒོ་བཤོལ་བ།",
"Pin Sidebar": "ཟུར་སྒོ་བཀར་བ།",
"Toggle Sidebar": "ཟུར་སྒོ་སྤོ་བ།",
"Toggle Translation": "ཡིག་སྒྱུར་སྤོ་བ།",
"Translation Disabled": "ཡིག་སྒྱུར་མེད།",
"Minimize": "ཆུང་དུ་བསྡུ།",
"Maximize or Restore": "ཆེན་པོ་བཟོ/གསོག།",
"Exit Parallel Read": "མཉམ་དུ་ཀློག་ཕྱིར་འཐེན།",
"Enter Parallel Read": "མཉམ་དུ་ཀློག་འཛུལ།",
"Zoom Level": "རྒྱབ་སྐོར་གྱི་གདམ་ཁ",
"Zoom Out": "རྒྱབ་སྐོར་བཏང་བ།",
"Reset Zoom": "རྒྱབ་སྐོར་རྩོལ་བ།",
"Zoom In": "རྒྱབ་སྐོར་འཕེལ་བ།",
"Zoom Mode": "རྒྱབ་སྐོར་སྤོ་བ།",
"Single Page": "དེབ་གཅིག",
"Auto Spread": "རང་འགུལ་སྤྲོད།",
"Fit Page": "དེབ་འདེམས་པ།",
"Fit Width": "ཁྱབ་སྒྲིག་འདེམས་པ།",
"Failed to select directory": "གནས་ས་འདེམས་པ་བྱས་མ་ཐུབ།",
"The new data directory must be different from the current one.": "གསར་བཅས་སྐོར་འདེམས་པ་གནས་ས་དང་མཉམ་འབྱུང་བར་བྱས་མ་ཐུབ།",
"Migration failed: {{error}}": "མཉམ་དུ་ཀློག་འཛུལ་བྱས་མ་ཐུབ།",
"Change Data Location": "གསར་བཅས་སྐོར་འདེམས་པ།",
"Current Data Location": "ད་ལྟ་བཅས་སྐོར་འདེམས་པ།",
"Total size: {{size}}": "དངོས་གནས་བཅས་: {{size}}",
"Calculating file info...": "དེབ་གནས་བཅས་པའི་གདམ་ཁ་བཟོ་བྱས་མ་ཐུབ།",
"New Data Location": "གསར་བཅས་སྐོར་འདེམས་པ།",
"Choose Different Folder": "གཞན་དེབ་སྣོད་བཀར་བ།",
"Choose New Folder": "གསར་བཅས་སྣོད་བཀར་བ།",
"Migrating data...": "དེབ་གནས་བཅས་པའི་སྤྱོད་བྱས་མ་ཐུབ།",
"Copying: {{file}}": "དེབ་གནས་བཅས་པའི་སྤྱོད་བྱས་མ་ཐུབ།",
"{{current}} of {{total}} files": "{{current}} དང་ {{total}} དེབ་གནས་བཅས་པའི་སྤྱོད་བྱས་མ་ཐུབ།",
"Migration completed successfully!": "མཉམ་དུ་ཀློག་འཛུལ་བྱས་མ་ཐུབ།",
"Your data has been moved to the new location. Please restart the application to complete the process.": "ཁྱོད་ཀྱི་དེབ་གནས་བཅས་པའི་སྤྱོད་བྱས་མ་ཐུབ།",
"Migration failed": "མཉམ་དུ་ཀློག་འཛུལ་བྱས་མ་ཐུབ།",
"Important Notice": "དོན་གཞི་བརྗེ་བ།",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "འདི་ནས་ཁྱོད་ཀྱི་ཨང་གཏོད་དེབ་གནས་བཅས་པའི་སྤྱོད་བྱས་མ་ཐུབ།",
"Restart App": "དེབ་ཀྱི་སྤྱོད་བྱས་མ་ཐུབ།",
"Start Migration": "མཉམ་དུ་ཀློག་འཛུལ་བྱས་མ་ཐུབ།",
"Advanced Settings": "དབང་བསྐྱོད་སྒྲིག་སྟངས།",
"File count: {{size}}": "དེབ་གནས་བཅས་པའི་ཨང་། {{size}}",
"Background Read Aloud": "གནས་སྟངས་ཀྱིས་ཀློག་བྱེད།",
"Ready to read aloud": "དེབ་ཀྱི་སྤྱོད་བྱས་མ་ཐུབ།",
"Read Aloud": "ཀློག་བྱེད།",
"Screen Brightness": "རྒྱབ་སྐོར་གྱི་འོད་ཟེར།",
"Background Image": "གནས་སྟངས་ཀྱི་རི་མོ།",
"Import Image": "དེབ་གནས་བཅས་པའི་སྤྱོད་བྱས་མ་ཐུབ།",
"Opacity": "སྤོ་སྐོར་གྱི་འོད་ཟེར།",
"Size": "ཨང་",
"Cover": "དེབ་གྱི་སྤྱོད་བྱས་མ་ཐུབ།",
"Contain": "འབྱོར་བ།",
"{{number}} pages left in chapter": "དོན་ཚན་ནང་ཤོག་ཨང་ {{number}} ལོག་གི་འདུག།",
"Device": "རྐྱབ་སྐོར",
"E-Ink Mode": "ཡིག་སྒྱུར་སྤོ་བ",
"Highlight Colors": "མདོག་ཚད་ཀྱི་བསྡུར་བ།",
"Auto Screen Brightness": "རྒྱབ་སྐོར་གྱི་འོད་ཟེར་རང་འགུལ།",
"Pagination": "ཤོག་གདོང་།",
"Disable Double Tap": "བརྒྱབ་གདོང་གཉིས་མ་འགྱོད།",
"Tap to Paginate": "ཤོག་གདོང་ལ་ཐོག་འགྲོ།",
"Click to Paginate": "ཤོག་གདོང་ལ་ཁྱེད་ལུས་འགྲོ།",
"Tap Both Sides": "གཡས་གཉིས་ལ་ཐོག་འགྲོ།",
"Click Both Sides": "གཡས་གཉིས་ལ་ཁྱེད་ལུས་འགྲོ།",
"Swap Tap Sides": "ཐོག་གཡས་གཉིས་བརྗེ་བ།",
"Swap Click Sides": "ཁྱེད་ལུས་གཡས་གཉིས་བརྗེ་བ།",
"Source and Translated": "ཡིག་སྒྱུར་སྤོ་བ།",
"Translated Only": "མདོག་ཚད་ཀྱི་བསྡུར་བ།",
"Source Only": "ཡིག་སྒྱུར་སྤོ་བ།",
"TTS Text": "TTS ཡིག",
"The book file is corrupted": "དེབ་གནས་བཅས་པའི་སྤྱོད་བྱས་མ་ཐུབ།",
"The book file is empty": "དེབ་གནས་བཅས་པའི་སྤྱོད་བྱས་མ་ཐུབ།",
"Failed to open the book file": "དེབ་གནས་བཅས་པའི་སྤྱོད་བྱས་མ་ཐུབ།",
"On-Demand Purchase": "অনুরোধে ক্রয়",
"Full Customization": "সম্পূর্ণ কাস্টমাইজেশন",
"Lifetime Plan": "জীবনকাল পরিকল্পনা",
"One-Time Payment": "এককালীন পেমেন্ট",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "নির্দিষ্ট বৈশিষ্ট্যগুলিতে সমস্ত ডিভাইসে জীবনকাল অ্যাক্সেস উপভোগ করতে এককালীন পেমেন্ট করুন। যখন আপনার প্রয়োজন তখনই নির্দিষ্ট বৈশিষ্ট্য বা পরিষেবাগুলি কিনুন।",
"Expand Cloud Sync Storage": "ক্লাউড সিঙ্ক স্টোরেজ বাড়ান",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "এককালীন ক্রয়ের মাধ্যমে আপনার ক্লাউড স্টোরেজ চিরকাল বাড়ান। প্রতিটি অতিরিক্ত ক্রয় আরও স্থান যোগ করে।",
"Unlock All Customization Options": "সমস্ত কাস্টমাইজেশন বিকল্প আনলক করুন",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "অতিরিক্ত থিম, ফন্ট, লেআউট বিকল্প এবং উচ্চস্বরে পড়া, অনুবাদক, ক্লাউড স্টোরেজ পরিষেবাগুলি আনলক করুন।",
"Purchase Successful!": "ক্রয় সফল!",
"lifetime": "জীবনকাল",
"Thank you for your purchase! Your payment has been processed successfully.": "আপনার ক্রয়ের জন্য ধন্যবাদ! আপনার পেমেন্ট সফলভাবে প্রক্রিয়াকৃত হয়েছে।",
"Order ID:": "অর্ডার আইডি:",
"TTS Highlighting": "ཡིག་འབྲུ་སྦྱོར་བའི་གསལ་བཤད།",
"Style": "བཟོ་ལྟ།",
"Underline": "འོག་ཐིག",
"Strikethrough": "འཐེན་ཐིག",
"Squiggly": "འཁྱོག་ཐིག",
"Outline": "མཐའ་ཐིག",
"Save Current Color": "མིག་སྔའི་ཚོན་གཏན་འཁེལ་བྱེད།",
"Quick Colors": "མྱུར་ཚོན།",
"Highlighter": "མདོག་ཚད་ཀྱི་བསྡུར་བ།",
"Save Book Cover": "དེབ་གནས་བཅས་པའི་སྤྱོད་བྱས་མ་ཐུབ།",
"Auto-save last book cover": "དེབ་གནས་བཅས་པའི་སྤྱོད་བྱས་མ་ཐུབ།",
"Back": "ལོག་བྱེད།",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "གཏན་འཁེལ་ཡིག་འཕྲིན་བཏང་ཡོད། ཡིག་འཕྲིན་རྣམས་གཉིས་ལ་བལྟས་ནས་བརྗེ་བ་དེ་གཏན་འཁེལ་བྱོས།",
"Failed to update email": "ཡིག་འཕྲིན་གསར་བསྒྱུར་ཕམ་པ།",
"New Email": "ཡིག་འཕྲིན་གསར་པ།",
"Your new email": "ཁྱེད་ཀྱི་ཡིག་འཕྲིན་གསར་པ།",
"Updating email ...": "ཡིག་འཕྲིན་གསར་བསྒྱུར་བཞིན་པ། ...",
"Update email": "ཡིག་འཕྲིན་གསར་བསྒྱུར།",
"Current email": "མིག་སྔའི་ཡིག་འཕྲིན།",
"Update Email": "ཡིག་འཕྲིན་གསར་བསྒྱུར།",
"All": "ཆེན་མོ།",
"Unable to open book": "དེབ་ཀྱི་སྤྱོད་བྱས་མ་ཐུབ།",
"Punctuation": "ཚིག་གྲུབ།",
"Replace Quotation Marks": "འདྲེན་འབྲེལ་མཐུད་ཐིག་བརྗེ་བ།",
"Enabled only in vertical layout.": "གཡས་སྒྲིག་ནང་མིང་བརྗེ་བ།",
"No Conversion": "བསྒྱུར་བཤེར་མེད་",
"Simplified to Traditional": "སྟོང་བཟོས → སྲོལ་རྒྱུན",
"Traditional to Simplified": "སྲོལ་རྒྱུན → སྟོང་བཟོས",
"Simplified to Traditional (Taiwan)": "སྟོང་བཟོས → སྲོལ་རྒྱུན (ཏའི་ཝན)",
"Simplified to Traditional (Hong Kong)": "སྟོང་བཟོས → སྲོལ་རྒྱུན (ཧོང་ཀོང)",
"Simplified to Traditional (Taiwan), with phrases": "སྟོང་བཟོས → སྲོལ་རྒྱུན (ཏའི་ཝན • ཚིག་ཕྲེང)",
"Traditional (Taiwan) to Simplified": "སྲོལ་རྒྱུན (ཏའི་ཝན) → སྟོང་བཟོས",
"Traditional (Hong Kong) to Simplified": "སྲོལ་རྒྱུན (ཧོང་ཀོང) → སྟོང་བཟོས",
"Traditional (Taiwan) to Simplified, with phrases": "སྲོལ་རྒྱུན (ཏའི་ཝན • ཚིག་ཕྲེང) → སྟོང་བཟོས",
"Convert Simplified and Traditional Chinese": "རྒྱ་ཡིག སྟོང་བཟོས/སྲོལ་རྒྱུན བསྒྱུར་བ",
"Convert Mode": "བསྒྱུར་བའི་རྣམ་པ",
"Failed to auto-save book cover for lock screen: {{error}}": "སྒྲོམ་སྒོར་དེབ་གནས་བཅས་པའི་སྤྱོད་བྱས་མ་ཐུབ།: {{error}}",
"Download from Cloud": "སྤྲིན་ནས་ཕབ་སྟེ་འབེབས་",
"Upload to Cloud": "སྤྲིན་ལ་ཡར་སྤེལ་",
"Clear Custom Fonts": "རང་བཞིན་ཡིག་གཟུགས་སུབ་པ།",
"Columns": "མཚན་ཉིད།",
"OPDS Catalogs": "OPDS གནས་ཚུལ།",
"Adding LAN addresses is not supported in the web app version.": "གནས་ཚུལ་དང་ལུས་སྐོར་གྱི་གྲོང་ཁྱེར་གྱི་གློག་འཕྲིན་ལས་མཐུན་པ་མེད།",
"Invalid OPDS catalog. Please check the URL.": "མི་འབྱུང་བའི OPDS གནས་ཚུལ། ཨེ་ཨོ་ཨེར་ལུས་སྐོར་བཟོ་བྱས།",
"Browse and download books from online catalogs": "དེབ་གནས་བཅས་པའི་གྲོང་ཁྱེར་ལས་དེབ་འདེམས་དང་ཕབ་སྟེ་འབེབས།",
"My Catalogs": "ངའི་དཀར་ཆག",
"Add Catalog": "དཀར་ཆག་ཁ་སྣོན་",
"No catalogs yet": "དཀར་ཆག་མེད་པས།",
"Add your first OPDS catalog to start browsing books": "དེབ་ལྟ་བཤེར་འགོ་བཙུགས་ནས་ དང་པོའི་ OPDS དཀར་ཆག་ཁ་སྣོན་གནང་།",
"Add Your First Catalog": "དཀར་ཆག་དང་པོ་ཁ་སྣོན་",
"Browse": "ལྟ་བཤེར་",
"Popular Catalogs": "མི་མང་མཐོང་བའི་དཀར་ཆག",
"Add": "ཁ་སྣོན་",
"Add OPDS Catalog": "OPDS དཀར་ཆག་ཁ་སྣོན་",
"Catalog Name": "དཀར་ཆག་མིང་",
"My Calibre Library": "ངའི Calibre དེབ་མཛོད་",
"OPDS URL": "OPDS URL",
"Username (optional)": "མིང་སྒྲོམ་ (འདེམས་རུང་)",
"Password (optional)": "གསང་ཚིག (འདེམས་རུང་)",
"Description (optional)": "འགྲེལ་བཤད་ (འདེམས་རུང་)",
"A brief description of this catalog": "དཀར་ཆག་འདིའི་གསལ་བཤད་ཐུང་ཐུང་",
"Validating...": "བདེན་སྦྱོར་བཞིན་...",
"View All": "ཡོངས་ལྟ་བ་",
"Forward": "མདུན་དུ་",
"Home": "གཙོ་ངོས་",
"{{count}} items_other": "{{count}} རྣམ་གྲངས་",
"Download completed": "ཕབ་ལེན་རྫོགས་སོང་།",
"Download failed": "ཕབ་ལེན་ཕམ་པ་",
"Open Access": "ཁ་ཕྱབ་ལྟ་བཤེར་",
"Borrow": "ལེན་པ་",
"Buy": "ཉོ་",
"Subscribe": "མཁོ་མངགས་",
"Sample": "དཔེ་དབང་",
"Download": "ཕབ་ལེན་",
"Open & Read": "ཁ་ཕྱེས་ནས་ཀློག་",
"Tags": "མཚོན་འགྲེལ་",
"Tag": "མཚོན་འགྲེལ་",
"First": "དང་པོ།",
"Previous": "སྔོན་མ།",
"Next": "རྗེས་མ།",
"Last": "མཐའ་མ།",
"Cannot Load Page": "ཤོག་ངོས་འགུལ་སྐྱོང་བྱེད་ཐུབ་མེད།",
"An error occurred": "ནོར་འཁྲུལ་ཞིག་བྱུང་སོང་།",
"Online Library": "དྲ་རྒྱུན་དེབ་མཛོད།",
"URL must start with http:// or https://": "URL ནི་ http:// ཡང་ https:// ནས་འགོ་བཙུགས་དགོ།",
"Title, Author, Tag, etc...": "མིང་།, རྩོམ་པ།, མཚོན་འགྲེལ།, དེ་ལས་སྐུགས་...",
"Query": "འཚོལ་ཞིབ་",
"Subject": "དོན་ཚན་",
"Enter {{terms}}": "{{terms}} ལ་འགྲོ།",
"No search results found": "འཚོལ་ཞིབ་རྫོགས་མ་ཐུབ།",
"Failed to load OPDS feed: {{status}} {{statusText}}": "OPDS འཕྲིན་འདེམས་བྱས་མ་ཐུབ།: {{status}} {{statusText}}",
"Search in {{title}}": "{{title}} ནང་འཚོལ།",
"Manage Storage": "སྣོད་གསོག་དོ་དམ་བྱེད་པ",
"Failed to load files": "ཡིག་ཆ་སྣོན་པ་ཕམ་པ",
"Deleted {{count}} file(s)_other": "ཡིག་ཆ་ {{count}} བསུབས་ཟིན་པ",
"Failed to delete {{count}} file(s)_other": "ཡིག་ཆ་ {{count}} བསུབས་པ་ཕམ་པ",
"Failed to delete files": "ཡིག་ཆ་བསུབས་པ་ཕམ་པ",
"Total Files": "ཡིག་ཆ་ཡོངས་བསྡོམས",
"Total Size": "ཆེས་ཆེར་ཆེ་ཆུང",
"Quota": "ཁུལ་ཚད",
"Used": "ལག་ལེན་བྱས་ཟིན་པ",
"Files": "ཡིག་ཆ",
"Search files...": "ཡིག་ཆ་འཚོལ...",
"Newest First": "གསར་ཤོས་སྔོན་དུ",
"Oldest First": "རྙིང་ཤོས་སྔོན་དུ",
"Largest First": "ཆེ་ཤོས་སྔོན་དུ",
"Smallest First": "ཆུང་ཤོས་སྔོན་དུ",
"Name A-Z": "མིང་ A-Z",
"Name Z-A": "མིང་ Z-A",
"{{count}} selected_other": "{{count}} ཡིག་ཆ་འདེམས་ཟིན་པ",
"Delete Selected": "འདེམས་པ་བསུབས་པ",
"Created": "སྤེལ་བྱས་ཟིན་པ",
"No files found": "ཡིག་ཆ་མ་རྙེད་པ",
"No files uploaded yet": "ད་ཚུན་ཡིག་ཆ་སྣོན་མི་འདུག",
"files": "ཡིག་ཆ",
"Page {{current}} of {{total}}": "ཤོག་ངོས་ {{total}} ནས་ {{current}}",
"Are you sure to delete {{count}} selected file(s)?_other": "ཁྱེད་ཀྱིས་འདེམས་པའི་ཡིག་ཆ་ {{count}} བསུབས་དགོས་པ་ངེས་ཡིན་ན?",
"Cloud Storage Usage": "སྤྲིན་གནས་སྣོད་གསོག་ལུས་སྐོར།",
"Rename Group": "ཚོགས་མིང་བསྒྱུར་བ།",
"From Directory": "སྐོར་འདེམས་པ་ནས།",
"Successfully imported {{count}} book(s)_other": "སྤྲིན་ནས་ཕབ་སྟེ་འབེབས་ {{count}} དེབ་འདེམས་སོང་",
"Count": "ཨང་",
"Start Page": "ཤོག་ངོས་དང་པོ",
"Search in OPDS Catalog...": "OPDS དཀར་ཆག་ནང་འཚོལ།...",
"Please log in to use advanced TTS features.": "དབང་བསྐྱོད་ཀྱི TTS རྣམ་པ་ཚུགས་སྤྱོད་བྱས་མ་ཐུབ།"
}
@@ -8,7 +8,6 @@
"Auto Mode": "Automatischer Modus",
"Behavior": "Verhalten",
"Book": "Buch",
"Book Cover": "Buchcover",
"Bookmark": "Lesezeichen",
"Cancel": "Abbrechen",
"Chapter": "Kapitel",
@@ -18,7 +17,6 @@
"Confirm Deletion": "Löschen bestätigen",
"Copied to notebook": "In Notizbuch kopiert",
"Copy": "Kopieren",
"Custom CSS": "Benutzerdefiniertes CSS",
"Dark Mode": "Dunkelmodus",
"Default": "Standard",
"Default Font": "Standardschriftart",
@@ -28,7 +26,6 @@
"Dictionary": "Wörterbuch",
"Download Readest": "Readest herunterladen",
"Edit": "Bearbeiten",
"Enter your custom CSS here...": "Geben Sie hier Ihr benutzerdefiniertes CSS ein...",
"Excerpts": "Auszüge",
"Failed to import book(s): {{filenames}}": "Fehler beim Importieren von Buch/Büchern: {{filenames}}",
"Fast": "Schnell",
@@ -48,7 +45,6 @@
"Horizontal Direction": "Horizontale Richtung",
"Hyphenation": "Silbentrennung",
"Import Books": "Bücher importieren",
"Language:": "Sprache:",
"Layout": "Layout",
"Light Mode": "Hellmodus",
"Loading...": "Wird geladen...",
@@ -69,9 +65,8 @@
"Page": "Seite",
"Paging Animation": "Blätter-Animation",
"Paragraph": "Absatz",
"Parallel Read": "Paralleles Lesen",
"Published:": "Veröffentlicht:",
"Publisher:": "Verlag:",
"Published": "Veröffentlicht",
"Publisher": "Verlag",
"Reading Progress Synced": "Lesevorgang synchronisiert",
"Reload Page": "Seite neu laden",
"Reveal in File Explorer": "Im Datei-Explorer anzeigen",
@@ -85,7 +80,6 @@
"Search...": "Suchen...",
"Select Book": "Buch auswählen",
"Select Books": "Bücher auswählen",
"Select Multiple Books": "Mehrere Bücher auswählen",
"Sepia": "Sepia",
"Serif Font": "Serifenschrift",
"Show Book Details": "Buchdetails anzeigen",
@@ -96,16 +90,15 @@
"Slow": "Langsam",
"Solarized": "Solarisiert",
"Speak": "Sprechen",
"Subjects:": "Themen:",
"Subjects": "Themen",
"System Fonts": "System-Schriftarten",
"TTS not supported in this device": "TTS wird auf diesem Gerät nicht unterstützt",
"Theme Color": "Themenfarbe",
"Theme Mode": "Themenmodus",
"Translate": "Übersetzen",
"Translated Text": "Übersetzter Text",
"Unknown": "Unbekannt",
"Untitled": "Ohne Titel",
"Updated:": "Aktualisiert:",
"Updated": "Aktualisiert",
"Version {{version}}": "Version {{version}}",
"Vertical Direction": "Vertikale Richtung",
"Welcome to your library. You can import your books here and read them anytime.": "Willkommen in Ihrer Bibliothek. Sie können hier Ihre Bücher importieren und jederzeit lesen.",
@@ -114,8 +107,6 @@
"Your Library": "Ihre Bibliothek",
"TTS not supported for PDF": "TTS wird für PDF nicht unterstützt",
"Override Book Font": "Buch-Schriftart überschreiben",
"Vertical Margins (px)": "Vertikale Ränder (px)",
"Horizontal Margins (%)": "Horizontale Ränder (%)",
"Apply to All Books": "Auf alle Bücher anwenden",
"Apply to This Book": "Auf dieses Buch anwenden",
"Unable to fetch the translation. Try again later.": "Übersetzung konnte nicht abgerufen werden. Versuchen Sie es später erneut.",
@@ -124,14 +115,13 @@
"Book Details": "Buchdetails",
"From Local File": "Aus lokaler Datei",
"TOC": "Inhaltsverzeichnis",
"Table of Contents": "Inhaltsverzeichnis",
"Book uploaded: {{title}}": "Buch hochgeladen: {{title}}",
"Failed to upload book: {{title}}": "Fehler beim Hochladen des Buches: {{title}}",
"Book downloaded: {{title}}": "Buch heruntergeladen: {{title}}",
"Failed to download book: {{title}}": "Fehler beim Herunterladen des Buches: {{title}}",
"Upload Book": "Buch hochladen",
"Auto Upload Books to Cloud": "Bücher automatisch hochladen",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% des Cloud-Speichers verwendet.",
"Storage": "Speicher",
"Book deleted: {{title}}": "Buch gelöscht: {{title}}",
"Failed to delete book: {{title}}": "Fehler beim Löschen des Buches: {{title}}",
"Check Updates on Start": "Aktualisierungen beim Start prüfen",
@@ -163,7 +153,7 @@
"Create a Password": "Passwort erstellen",
"Sign up": "Registrieren",
"Signing up...": "Registrierung...",
"Dont have an account? Sign up": "Kein Konto? Registrieren",
"Don't have an account? Sign up": "Kein Konto? Registrieren",
"Check your email for the confirmation link": "Überprüfen Sie Ihre E-Mails auf den Bestätigungslink",
"Signing in ...": "Anmeldung ...",
"Send a magic link email": "Magic-Link-E-Mail senden",
@@ -186,37 +176,14 @@
"Sign in with Apple": "Mit Apple anmelden",
"Sign in with GitHub": "Mit GitHub anmelden",
"Account": "Konto",
"Cloud Storage": "Cloud-Speicher",
"Failed to delete user. Please try again later.": "Benutzer konnte nicht gelöscht werden. Bitte versuchen Sie es später erneut.",
"Unlimited Offline/Online Reading": "Unbegrenztes Offline/Online Lesen",
"Unlimited Cloud Sync Devices": "Unbegrenzte Cloud-Synchronisierungsgeräte",
"Essential Text-to-Speech Voices": "Grundlegende Text-zu-Sprache-Stimmen",
"DeepL Free Access": "Kostenloser DeepL-Zugang",
"Community Support": "Community-Support",
"500 MB Cloud Sync Space": "500 MB Cloud-Synchronisierungsspeicher",
"Includes All Free Tier Benefits": "Beinhaltet alle Vorteile der kostenlosen Stufe",
"AI Summaries": "KI-Zusammenfassungen",
"AI Translations": "KI-Übersetzungen",
"Priority Support": "Bevorzugter Support",
"DeepL Pro Access": "DeepL Pro-Zugang",
"Expanded Text-to-Speech Voices": "Erweiterte Text-zu-Sprache-Stimmen",
"2000 MB Cloud Sync Space": "2000 MB Cloud-Synchronisierungsspeicher",
"Includes All Plus Tier Benefits": "Beinhaltet alle Vorteile der Plus-Stufe",
"Unlimited AI Summaries": "Unbegrenzte KI-Zusammenfassungen",
"Unlimited AI Translations": "Unbegrenzte KI-Übersetzungen",
"Unlimited DeepL Pro Access": "Unbegrenzter DeepL Pro-Zugang",
"Advanced AI Tools": "Fortgeschrittene KI-Tools",
"Early Feature Access": "Früher Zugang zu neuen Funktionen",
"10 GB Cloud Sync Space": "10 GB Cloud-Synchronisierungsspeicher",
"Loading profile...": "Profil wird geladen...",
"Features": "Funktionen",
"Delete Account": "Konto löschen",
"Delete Your Account?": "Ihr Konto löschen?",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "Diese Aktion kann nicht rückgängig gemacht werden. Alle Ihre Daten in der Cloud werden dauerhaft gelöscht.",
"Delete Permanently": "Dauerhaft löschen",
"Free Tier": "Kostenlose Stufe",
"Plus Tier": "Plus-Stufe",
"Pro Tier": "Pro-Stufe",
"RTL Direction": "RTL-Richtung",
"Maximum Column Height": "Maximale Spaltenhöhe",
"Maximum Column Width": "Maximale Spaltenbreite",
@@ -224,15 +191,15 @@
"Fullscreen": "Vollbild",
"No supported files found. Supported formats: {{formats}}": "Keine unterstützten Dateien gefunden. Unterstützte Formate: {{formats}}",
"Drop to Import Books": "Zum Importieren von Büchern ablegen",
"Custom": "Benutzerdefiniert",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n—William Shakespeare": "Die ganze Welt ist eine Bühne,\nUnd alle Männer und Frauen sind bloß Spieler;\nSie haben ihre Abgänge und ihre Auftritte,\nUnd ein Mann spielt in seinem Leben viele Rollen,\nSeine Taten sind sieben Zeitalter.\n\n—William Shakespeare",
"Custom": "Eigen",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "Die ganze Welt ist eine Bühne,\nUnd alle Männer und Frauen sind bloß Spieler;\nSie haben ihre Abgänge und ihre Auftritte,\nUnd ein Mann spielt in seinem Leben viele Rollen,\nSeine Taten sind sieben Zeitalter.\n\n— William Shakespeare",
"Custom Theme": "Benutzerdefiniertes Thema",
"Theme Name": "Themenname",
"Text Color": "Textfarbe",
"Background Color": "Hintergrundfarbe",
"Preview": "Vorschau",
"Contrast": "Kontrast",
"Sunset": "Sonnenuntergang",
"Sunset": "Abend",
"Double Border": "Doppelter Rand",
"Border Color": "Randfarbe",
"Border Frame": "Rahmenrand",
@@ -252,9 +219,9 @@
"Auto Import on File Open": "Automatischer Import beim Öffnen einer Datei",
"LXGW WenKai GB Screen": "LXGW WenKai SC",
"LXGW WenKai TC": "LXGW WenKai TC",
"No chapters detected.": "Keine Kapitel erkannt.",
"Failed to parse the EPUB file.": "Fehler beim Parsen der EPUB-Datei.",
"This book format is not supported.": "Dieses Buchformat wird nicht unterstützt.",
"No chapters detected": "Keine Kapitel erkannt",
"Failed to parse the EPUB file": "Fehler beim Parsen der EPUB-Datei",
"This book format is not supported": "Dieses Buchformat wird nicht unterstützt",
"Unable to fetch the translation. Please log in first and try again.": "Übersetzung konnte nicht abgerufen werden. Bitte zuerst anmelden und erneut versuchen.",
"Group": "Gruppieren",
"Always on Top": "Immer im Vordergrund",
@@ -267,13 +234,13 @@
"Clear Search": "Suche löschen",
"Header & Footer": "Kopf- & Fußzeile",
"Apply also in Scrolled Mode": "Auch im Scroll-Modus anwenden",
"A new version of Readest is Available!": "Eine neue Version von Readest ist verfügbar!",
"A new version of Readest is available!": "Eine neue Version von Readest ist verfügbar!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Readest {{newVersion}} ist verfügbar (installierte Version {{currentVersion}}).",
"Download and install now?": "Jetzt herunterladen und installieren?",
"Downloading {{downloaded}} of {{contentLength}}": "Herunterladen {{downloaded}} von {{contentLength}}",
"Download finished": "Download abgeschlossen",
"DOWNLOAD & INSTALL": "HERUNTERLADEN & INSTALLIEREN",
"Changelog:": "Änderungsprotokoll:",
"Changelog": "Änderungsprotokoll",
"Software Update": "Software-Update",
"Title": "Titel",
"Date Read": "Datum gelesen",
@@ -282,18 +249,15 @@
"Ascending": "Aufsteigend",
"Descending": "Absteigend",
"Sort by...": "Sortieren nach...",
"Added:": "Hinzugefügt:",
"Format:": "Format:",
"Added": "Hinzugefügt",
"GuanKiapTsingKhai-T": "GuanKiapTsingKhai-T",
"Description:": "Beschreibung:",
"Description": "Beschreibung",
"No description available": "Keine Beschreibung verfügbar",
"List": "Liste",
"Grid": "Raster",
"(from 'As You Like It', Act II)": "(aus 'Wie es euch gefällt', Akt II)",
"Link Color": "Linkfarbe",
"Volume Keys for Page Flip": "Volumen-Tasten für Seitenwechsel",
"Clicks for Page Flip": "Tippen zum Blättern",
"Swap Clicks Area": "Tippbereiche tauschen",
"Screen": "Bildschirm",
"Orientation": "Orientierung",
"Portrait": "Hochformat",
@@ -302,7 +266,7 @@
"Checking for updates...": "Auf Updates prüfen...",
"Error checking for updates": "Fehler beim Überprüfen auf Updates",
"Details": "Details",
"File Size:": "Dateigröße:",
"File Size": "Dateigröße",
"Auto Detect": "Automatisch erkennen",
"Next Section": "Nächster Abschnitt",
"Previous Section": "Vorheriger Abschnitt",
@@ -321,17 +285,485 @@
"Invert Image In Dark Mode": "Invertiere Bild im Dunkeln",
"Help improve Readest": "Readest verbessern helfen",
"Sharing anonymized statistics": "Anonymisierte Statistiken teilen",
"Interface Language": "Benutzeroberflächensprache",
"Interface Language": "UI-Sprache",
"Translation": "Übersetzung",
"Enable Translation": "Übersetzung aktivieren",
"Translation Service": "Übersetzungsdienst",
"Translation Service": "Übersetzer",
"Translate To": "Übersetzen nach",
"Disable Translation": "Übersetzung deaktivieren",
"Scroll": "Scrollen",
"Overlap Pixels": "Überlappungspixel",
"Click": "Tippen",
"System Language": "Systemsprache",
"Security": "Sicherheit",
"Allow JavaScript": "JavaScript zulassen",
"Enable only if you trust the file.": "Nur aktivieren, wenn Sie der Datei vertrauen."
"Enable only if you trust the file.": "Nur aktivieren, wenn Sie der Datei vertrauen.",
"Sort TOC by Page": "TOC nach Seite sortieren",
"Search in {{count}} Book(s)..._one": "Suche in {{count}} Buch...",
"Search in {{count}} Book(s)..._other": "Suche in {{count}} Büchern...",
"No notes match your search": "Noch keine Notizen gefunden",
"Search notes and excerpts...": "Notizen und Auszüge suchen...",
"Sign in to Sync": "Anmelden zum Synchronisieren",
"Synced at {{time}}": "Synchronisiert um {{time}}",
"Never synced": "Nie synchronisiert",
"Show Remaining Time": "Verbleibende Zeit anzeigen",
"{{time}} min left in chapter": "{{time}} min verbleibend im Kapitel",
"Override Book Color": "Farbe des Buches überschreiben",
"Login Required": "Anmeldung nötig",
"Quota Exceeded": "Limit überschritten",
"{{percentage}}% of Daily Translation Characters Used.": "{{percentage}}% der täglichen Übersetzungszeichen verwendet.",
"Translation Characters": "Übersetzungszeichen",
"{{engine}}: {{count}} voices_one": "{{engine}}: {{count}} Stimme",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}} Stimmen",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "Etwas ist schief gelaufen. Keine Sorge, unser Team wurde benachrichtigt und arbeitet an einer Lösung.",
"Error Details:": "Fehlerdetails:",
"Try Again": "Erneut versuchen",
"Need help?": "Brauchen Sie Hilfe?",
"Contact Support": "Support kontaktieren",
"Code Highlighting": "Code-Hervorhebung",
"Enable Highlighting": "Code-Hervorhebung aktivieren",
"Code Language": "Programmiersprache",
"Top Margin (px)": "Oberer Rand (px)",
"Bottom Margin (px)": "Unterer Rand (px)",
"Right Margin (px)": "Rechter Rand (px)",
"Left Margin (px)": "Linker Rand (px)",
"Column Gap (%)": "Spaltenabstand (%)",
"Always Show Status Bar": "Statusleiste immer anzeigen",
"Custom Content CSS": "Benutzerdefiniertes Inhalts-CSS",
"Enter CSS for book content styling...": "CSS für die Buchinhaltsgestaltung eingeben...",
"Custom Reader UI CSS": "Benutzerdefiniertes CSS für die Leseroberfläche",
"Enter CSS for reader interface styling...": "CSS für die Leseroberfläche eingeben...",
"Crop": "Zuschneiden",
"Book Covers": "Buchcover",
"Fit": "Anpassen",
"Reset {{settings}}": "{{settings}} zurücksetzen",
"Reset Settings": "Einstellungen zurücksetzen",
"{{count}} pages left in chapter_one": "{{count}} Seite verbleibend im Kapitel",
"{{count}} pages left in chapter_other": "{{count}} Seiten verbleibend im Kapitel",
"Show Remaining Pages": "Verbleibende Seiten anzeigen",
"Source Han Serif CN VF": "Source Han Serif",
"Huiwen-mincho": "Huiwen Mincho",
"KingHwa_OldSong": "KingHwa Song",
"Manage Subscription": "Abo verwalten",
"Coming Soon": "Demnächst verfügbar",
"Upgrade to {{plan}}": "Upgrade auf {{plan}}",
"Upgrade to Plus or Pro": "Upgrade auf Plus oder Pro",
"Current Plan": "Aktueller Tarif",
"Plan Limits": "Tariflimits",
"Processing your payment...": "Zahlung wird verarbeitet...",
"Please wait while we confirm your subscription.": "Bitte warten Sie, während wir Ihr Abo bestätigen.",
"Payment Processing": "Zahlung wird verarbeitet",
"Your payment is being processed. This usually takes a few moments.": "Ihre Zahlung wird verarbeitet. Dies dauert normalerweise nur wenige Augenblicke.",
"Payment Failed": "Zahlung fehlgeschlagen",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "Ihr Abo konnte nicht verarbeitet werden. Bitte versuchen Sie es erneut oder kontaktieren Sie den Support, falls das Problem weiterhin besteht.",
"Back to Profile": "Zurück zum Profil",
"Subscription Successful!": "Abo erfolgreich!",
"Thank you for your subscription! Your payment has been processed successfully.": "Vielen Dank für Ihr Abo! Die Zahlung wurde erfolgreich verarbeitet.",
"Email:": "E-Mail:",
"Plan:": "Tarif:",
"Amount:": "Betrag:",
"Go to Library": "Zur Bibliothek",
"Need help? Contact our support team at support@readest.com": "Brauchen Sie Hilfe? Kontaktieren Sie unser Support-Team unter support@readest.com",
"Free Plan": "Gratis-Tarif",
"month": "Monat",
"AI Translations (per day)": "KI-Übersetzungen (pro Tag)",
"Plus Plan": "Plus-Tarif",
"Includes All Free Plan Benefits": "Enthält alle Vorteile des Gratis-Tarifs",
"Pro Plan": "Pro-Tarif",
"More AI Translations": "Mehr KI-Übersetzungen",
"Complete Your Subscription": "Abschließen Sie Ihr Abonnement",
"{{percentage}}% of Cloud Sync Space Used.": "{{percentage}}% des Cloud-Synchronisierungsspeichers verwendet.",
"Cloud Sync Storage": "Cloud-Speicher",
"Parallel Read": "Paralleles Lesen",
"Disable": "Deaktivieren",
"Enable": "Aktivieren",
"Upgrade to Readest Premium": "Upgrade auf Readest Premium",
"Show Source Text": "Quelltext anzeigen",
"Cross-Platform Sync": "Plattformübergreifende Synchronisierung",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "Synchronisiere Bibliothek, Fortschritt und Notizen auf allen Geräten.",
"Customizable Reading": "Individuelles Lesen",
"AI Read Aloud": "KI-Vorlesen",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "Höre Bücher mit natürlichen KI-Stimmen.",
"AI Translations": "KI-Übersetzungen",
"Connect with fellow readers and get help fast in our friendly community channels.": "Tausche dich mit anderen aus und erhalte Hilfe.",
"Unlimited AI Read Aloud Hours": "Unbegrenzte Vorlesezeit",
"Listen without limits—convert as much text as you like into immersive audio.": "Beliebig viel Text in Audio umwandeln.",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "Erweitere Übersetzungen und tägliches Kontingent.",
"DeepL Pro Access": "DeepL Pro-Zugang",
"Enjoy faster responses and dedicated assistance whenever you need help.": "Erhalte schnellen, persönlichen Support.",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "Tageslimit erreicht. Upgrade nötig, um weiter zu übersetzen.",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "Personalisieren Sie jedes Detail mit anpassbaren Schriften, Layouts, Themes und erweiterten Anzeigeeinstellungen für das perfekte Leseerlebnis.",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "Übersetzen Sie jeden Text sofort mit der Kraft von Google, Azure oder DeepL—verstehen Sie Inhalte in jeder Sprache.",
"Includes All Plus Plan Benefits": "Enthält alle Plus-Plan-Vorteile",
"Early Feature Access": "Früher Zugang zu Features",
"Be the first to explore new features, updates, and innovations before anyone else.": "Entdecken Sie neue Features, Updates und Innovationen vor allen anderen.",
"Advanced AI Tools": "Erweiterte KI-Tools",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "Nutzen Sie leistungsstarke KI-Tools für intelligenteres Lesen, Übersetzen und Content-Discovery.",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "Übersetzen Sie täglich bis zu 100.000 Zeichen mit der genauesten verfügbaren Übersetzungsmaschine.",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "Übersetzen Sie täglich bis zu 500.000 Zeichen mit der genauesten verfügbaren Übersetzungsmaschine.",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "Speichern und greifen Sie sicher auf Ihre gesamte Lesekollektion mit bis zu 5 GB Cloud-Speicher zu.",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "Speichern und greifen Sie sicher auf Ihre gesamte Lesekollektion mit bis zu 20 GB Cloud-Speicher zu.",
"Deleted cloud backup of the book: {{title}}": "Gelöschte Cloud-Sicherung des Buches: {{title}}",
"Are you sure to delete the cloud backup of the selected book?": "Sind Sie sicher, dass Sie die Cloud-Sicherung des ausgewählten Buches löschen möchten?",
"What's New in Readest": "Was gibt es Neues in Readest",
"Enter book title": "Buchtitel eingeben",
"Subtitle": "Untertitel",
"Enter book subtitle": "Buchuntertitel eingeben",
"Enter author name": "Autorennamen eingeben",
"Series": "Serie",
"Enter series name": "Seriennamen eingeben",
"Series Index": "Seriennummer",
"Enter series index": "Seriennummer eingeben",
"Total in Series": "Gesamt in Serie",
"Enter total books in series": "Gesamtanzahl der Bücher in Serie eingeben",
"Enter publisher": "Verlag eingeben",
"Publication Date": "Veröffentlichungsdatum",
"Identifier": "Identifikator",
"Enter book description": "Buchbeschreibung eingeben",
"Change cover image": "Titelbild ändern",
"Replace": "Ersetzen",
"Unlock cover": "Titelbild entsperren",
"Lock cover": "Titelbild sperren",
"Auto-Retrieve Metadata": "Metadaten automatisch abrufen",
"Auto-Retrieve": "Automatisch abrufen",
"Unlock all fields": "Alle Felder entsperren",
"Unlock All": "Alle entsperren",
"Lock all fields": "Alle Felder sperren",
"Lock All": "Alle sperren",
"Reset": "Zurücksetzen",
"Edit Metadata": "Metadaten bearbeiten",
"Locked": "Gesperrt",
"Select Metadata Source": "Metadatenquelle auswählen",
"Keep manual input": "Manuelle Eingabe beibehalten",
"Google Books": "Google Books",
"Open Library": "Open Library",
"Fiction, Science, History": "Belletristik, Wissenschaft, Geschichte",
"Open Book in New Window": "Buch in neuem Fenster öffnen",
"Voices for {{lang}}": "Stimmen für {{lang}}",
"Yandex Translate": "Yandex Übersetzer",
"YYYY or YYYY-MM-DD": "YYYY oder YYYY-MM-DD",
"Restore Purchase": "Kauf wiederherstellen",
"No purchases found to restore.": "Keine Käufe zum Wiederherstellen gefunden.",
"Failed to restore purchases.": "Wiederherstellung der Käufe fehlgeschlagen.",
"Failed to manage subscription.": "Verwaltung des Abonnements fehlgeschlagen.",
"Failed to load subscription plans.": "Laden der Abonnementpläne fehlgeschlagen.",
"year": "Jahr",
"Failed to create checkout session": "Fehler beim Erstellen der Checkout-Sitzung",
"Storage": "Speicher",
"Terms of Service": "Allgemeine Geschäftsbedingungen",
"Privacy Policy": "Datenschutzbestimmungen",
"Disable Double Click": "Doppelklick deaktivieren",
"TTS not supported for this document": "TTS wird für dieses Dokument nicht unterstützt",
"Reset Password": "Passwort zurücksetzen",
"Show Reading Progress": "Lesefortschritt anzeigen",
"Reading Progress Style": "Lesefortschritt-Stil",
"Page Number": "Seitenzahl",
"Percentage": "Prozentsatz",
"Deleted local copy of the book: {{title}}": "Gelöschte lokale Kopie des Buches: {{title}}",
"Failed to delete cloud backup of the book: {{title}}": "Fehler beim Löschen der Cloud-Sicherung des Buches: {{title}}",
"Failed to delete local copy of the book: {{title}}": "Fehler beim Löschen der lokalen Kopie des Buches: {{title}}",
"Are you sure to delete the local copy of the selected book?": "Sind Sie sicher, dass Sie die lokale Kopie des ausgewählten Buches löschen möchten?",
"Remove from Cloud & Device": "Aus Cloud & Gerät entfernen",
"Remove from Cloud Only": "Nur aus der Cloud entfernen",
"Remove from Device Only": "Nur vom Gerät entfernen",
"Disconnected": "Getrennt",
"KOReader Sync Settings": "KOReader Sync-Einstellungen",
"Sync Strategy": "Sync-Strategie",
"Ask on conflict": "Bei Konflikten fragen",
"Always use latest": "Immer die neueste Version verwenden",
"Send changes only": "Nur Änderungen senden",
"Receive changes only": "Nur Änderungen empfangen",
"Checksum Method": "Prüfziffernverfahren",
"File Content (recommended)": "Dateiinhalte (empfohlen)",
"File Name": "Dateiname",
"Device Name": "Gerätename",
"Connect to your KOReader Sync server.": "Mit Ihrem KOReader Sync-Server verbinden.",
"Server URL": "Server-URL",
"Username": "Benutzername",
"Your Username": "Ihr Benutzername",
"Password": "Passwort",
"Connect": "Verbinden",
"KOReader Sync": "KOReader Sync",
"Sync Conflict": "Sync-Konflikt",
"Sync reading progress from \"{{deviceName}}\"?": "Lesefortschritt von \"{{deviceName}}\" synchronisieren?",
"another device": "ein anderes Gerät",
"Local Progress": "Lokaler Fortschritt",
"Remote Progress": "Entfernter Fortschritt",
"Page {{page}} of {{total}} ({{percentage}}%)": "Seite {{page}} von {{total}} ({{percentage}}%)",
"Current position": "Aktuelle Position",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "Ungefähr Seite {{page}} von {{total}} ({{percentage}}%)",
"Approximately {{percentage}}%": "Ungefähr {{percentage}}%",
"Failed to connect": "Verbindung fehlgeschlagen",
"Sync Server Connected": "Sync-Server verbunden",
"Sync as {{userDisplayName}}": "Sync als {{userDisplayName}}",
"Custom Fonts": "Benutzerdefinierte Schriftarten",
"Cancel Delete": "Löschen abbrechen",
"Import Font": "Schriftart importieren",
"Delete Font": "Schriftart löschen",
"Tips": "Tipps",
"Custom fonts can be selected from the Font Face menu": "Benutzerdefinierte Schriftarten können aus dem Schriftart-Menü ausgewählt werden",
"Manage Custom Fonts": "Benutzerdefinierte Schriftarten verwalten",
"Select Files": "Dateien auswählen",
"Select Image": "Bild auswählen",
"Select Video": "Video auswählen",
"Select Audio": "Audio auswählen",
"Select Fonts": "Schriftarten auswählen",
"Supported font formats: .ttf, .otf, .woff, .woff2": "Unterstützte Schriftartenformate: .ttf, .otf, .woff, .woff2",
"Push Progress": "Fortschritt senden",
"Pull Progress": "Fortschritt empfangen",
"Previous Paragraph": "Vorheriger Absatz",
"Previous Sentence": "Vorheriger Satz",
"Pause": "Pause",
"Play": "Wiedergabe",
"Next Sentence": "Nächster Satz",
"Next Paragraph": "Nächster Absatz",
"Separate Cover Page": "Titelseite separat anzeigen",
"Resize Notebook": "Notizbuchgröße ändern",
"Resize Sidebar": "Seitenleisten-Größe ändern",
"Get Help from the Readest Community": "Hilfe von der Readest-Community erhalten",
"Remove cover image": "Coverbild entfernen",
"Bookshelf": "Bücherregal",
"View Menu": "Menü anzeigen",
"Settings Menu": "Einstellungsmenü",
"View account details and quota": "Kontodetails und Kontingent anzeigen",
"Library Header": "Bibliothekskopf",
"Book Content": "Buchinhalt",
"Footer Bar": "Fußzeile",
"Header Bar": "Kopfzeile",
"View Options": "Ansichtsoptionen",
"Book Menu": "Buchmenü",
"Search Options": "Suchoptionen",
"Close": "Schließen",
"Delete Book Options": "Buch-Löschoptionen",
"ON": "EIN",
"OFF": "AUS",
"Reading Progress": "Lesefortschritt",
"Page Margin": "Seitenrand",
"Remove Bookmark": "Lesezeichen entfernen",
"Add Bookmark": "Lesezeichen hinzufügen",
"Books Content": "Buchinhalt",
"Jump to Location": "Zu Standort springen",
"Unpin Notebook": "Notizbuch lösen",
"Pin Notebook": "Notizbuch anheften",
"Hide Search Bar": "Suchleiste ausblenden",
"Show Search Bar": "Suchleiste einblenden",
"On {{current}} of {{total}} page": "Auf Seite {{current}} von {{total}}",
"Section Title": "Abschnittsüberschrift",
"Decrease": "Verringern",
"Increase": "Erhöhen",
"Settings Panels": "Einstellungsfenster",
"Settings": "Einstellungen",
"Unpin Sidebar": "Seitenleiste lösen",
"Pin Sidebar": "Seitenleiste anheften",
"Toggle Sidebar": "Seitenleiste umschalten",
"Toggle Translation": "Übersetzung umschalten",
"Translation Disabled": "Übersetzung deaktiviert",
"Minimize": "Minimieren",
"Maximize or Restore": "Maximieren oder Wiederherstellen",
"Exit Parallel Read": "Parallel Read beenden",
"Enter Parallel Read": "Parallel Read starten",
"Zoom Level": "Zoomstufe",
"Zoom Out": "Hineinzoomen",
"Reset Zoom": "Zoom zurücksetzen",
"Zoom In": "Herauszoomen",
"Zoom Mode": "Zoom-Modus",
"Single Page": "Einzelne Seite",
"Auto Spread": "Automatische Verbreitung",
"Fit Page": "Seite anpassen",
"Fit Width": "Breite anpassen",
"Failed to select directory": "Fehler beim Auswählen des Verzeichnisses",
"The new data directory must be different from the current one.": "Das neue Datenverzeichnis muss sich vom aktuellen unterscheiden.",
"Migration failed: {{error}}": "Migration fehlgeschlagen: {{error}}",
"Change Data Location": "Datenstandort ändern",
"Current Data Location": "Aktueller Datenstandort",
"Total size: {{size}}": "Gesamtgröße: {{size}}",
"Calculating file info...": "Dateiinformationen werden berechnet...",
"New Data Location": "Neuer Datenstandort",
"Choose Different Folder": "Anderen Ordner wählen",
"Choose New Folder": "Neuen Ordner wählen",
"Migrating data...": "Daten werden migriert...",
"Copying: {{file}}": "Kopiere: {{file}}",
"{{current}} of {{total}} files": "{{current}} von {{total}} Dateien",
"Migration completed successfully!": "Migration erfolgreich abgeschlossen!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "Ihre Daten wurden an den neuen Speicherort verschoben. Bitte starten Sie die Anwendung neu, um den Vorgang abzuschließen.",
"Migration failed": "Migration fehlgeschlagen",
"Important Notice": "Wichtiger Hinweis",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "Dies wird alle Ihre App-Daten an den neuen Speicherort verschieben. Stellen Sie sicher, dass das Ziel über ausreichend freien Speicherplatz verfügt.",
"Restart App": "App neu starten",
"Start Migration": "Migration starten",
"Advanced Settings": "Erweiterte Einstellungen",
"File count: {{size}}": "Dateianzahl: {{size}}",
"Background Read Aloud": "Hintergrund-Vorlesen",
"Ready to read aloud": "Bereit zum Vorlesen",
"Read Aloud": "Vorlesen",
"Screen Brightness": "Bildschirmhelligkeit",
"Background Image": "Hintergrundbild",
"Import Image": "Bild importieren",
"Opacity": "Opazität",
"Size": "Größe",
"Cover": "Cover",
"Contain": "Inhalt",
"{{number}} pages left in chapter": "{{number}} Seiten verbleibend im Kapitel",
"Device": "Gerät",
"E-Ink Mode": "E-Ink-Modus",
"Highlight Colors": "Hervorhebungsfarben",
"Auto Screen Brightness": "Automatische Bildschirmhelligkeit",
"Pagination": "Seitenumbruch",
"Disable Double Tap": "Doppeltippen deaktivieren",
"Tap to Paginate": "Tippen zum Blättern",
"Click to Paginate": "Klicken zum Blättern",
"Tap Both Sides": "Tippen Sie auf beide Seiten",
"Click Both Sides": "Klicken Sie auf beide Seiten",
"Swap Tap Sides": "Seiten für das Tippen tauschen",
"Swap Click Sides": "Seiten für das Klicken tauschen",
"Source and Translated": "Quell- und Übersetzungstext",
"Translated Only": "Nur Übersetzungstext",
"Source Only": "Nur Quelltext",
"TTS Text": "TTS-Text",
"The book file is corrupted": "Die Buchdatei ist beschädigt",
"The book file is empty": "Die Buchdatei ist leer",
"Failed to open the book file": "Fehler beim Öffnen der Buchdatei",
"On-Demand Purchase": "Kauf auf Anfrage",
"Full Customization": "Vollständige Anpassung",
"Lifetime Plan": "Lebenslange Planung",
"One-Time Payment": "Einmalige Zahlung",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "Zahlen Sie einmalig, um lebenslangen Zugriff auf bestimmte Funktionen auf allen Geräten zu genießen. Kaufen Sie bestimmte Funktionen oder Dienstleistungen nur, wenn Sie sie benötigen.",
"Expand Cloud Sync Storage": "Cloud-Synchronisierungs-Speicher erweitern",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "Erweitern Sie Ihren Cloud-Speicher für immer mit einem einmaligen Kauf. Jeder zusätzliche Kauf fügt mehr Speicherplatz hinzu.",
"Unlock All Customization Options": "Alle Anpassungsoptionen freischalten",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "Zusätzliche Themen, Schriftarten, Layoutoptionen und Vorlesefunktionen, Übersetzer, Cloud-Speicherdienste freischalten.",
"Purchase Successful!": "Kauf erfolgreich!",
"lifetime": "lebenslang",
"Thank you for your purchase! Your payment has been processed successfully.": "Danke für Ihren Kauf! Ihre Zahlung wurde erfolgreich verarbeitet.",
"Order ID:": "Bestell-ID:",
"TTS Highlighting": "TTS-Hervorhebung",
"Style": "Stil",
"Underline": "Unterstreichen",
"Strikethrough": "Durchgestrichen",
"Squiggly": "Wellig",
"Outline": "Umriss",
"Save Current Color": "Aktuelle Farbe speichern",
"Quick Colors": "Schnellfarben",
"Highlighter": "Textmarker",
"Save Book Cover": "Buchcover speichern",
"Auto-save last book cover": "Letztes Buchcover automatisch speichern",
"Back": "Zurück",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "Bestätigungs-E-Mail gesendet! Bitte überprüfe deine alte und neue E-Mail-Adresse, um die Änderung zu bestätigen.",
"Failed to update email": "E-Mail konnte nicht aktualisiert werden",
"New Email": "Neue E-Mail",
"Your new email": "Deine neue E-Mail-Adresse",
"Updating email ...": "E-Mail wird aktualisiert ...",
"Update email": "E-Mail aktualisieren",
"Current email": "Aktuelle E-Mail",
"Update Email": "E-Mail aktualisieren",
"All": "Alle",
"Unable to open book": "Buch kann nicht geöffnet werden",
"Punctuation": "Interpunktion",
"Replace Quotation Marks": "Anführungszeichen ersetzen",
"Enabled only in vertical layout.": "Nur im vertikalen Layout aktiviert.",
"No Conversion": "Keine Konvertierung",
"Simplified to Traditional": "Vereinfacht → Traditionell",
"Traditional to Simplified": "Traditionell → Vereinfacht",
"Simplified to Traditional (Taiwan)": "Vereinfacht → Traditionell (Taiwan)",
"Simplified to Traditional (Hong Kong)": "Vereinfacht → Traditionell (Hongkong)",
"Simplified to Traditional (Taiwan), with phrases": "Vereinfacht → Traditionell (Taiwan • Phrasen)",
"Traditional (Taiwan) to Simplified": "Traditionell (Taiwan) → Vereinfacht",
"Traditional (Hong Kong) to Simplified": "Traditionell (Hongkong) → Vereinfacht",
"Traditional (Taiwan) to Simplified, with phrases": "Traditionell (Taiwan • Phrasen) → Vereinfacht",
"Convert Simplified and Traditional Chinese": "Vereinfach./Traditionell konvertieren",
"Convert Mode": "Konvertierungsmodus",
"Failed to auto-save book cover for lock screen: {{error}}": "Automatisches Speichern des Buchcovers für den Sperrbildschirm fehlgeschlagen: {{error}}",
"Download from Cloud": "Aus der Cloud herunterladen",
"Upload to Cloud": "In die Cloud hochladen",
"Clear Custom Fonts": "Benutzerdefinierte Schriftarten löschen",
"Columns": "Spalten",
"OPDS Catalogs": "OPDS-Kataloge",
"Adding LAN addresses is not supported in the web app version.": "Das Hinzufügen von LAN-Adressen wird in der Web-App nicht unterstützt.",
"Invalid OPDS catalog. Please check the URL.": "Ungültiger OPDS-Katalog. Bitte überprüfe die URL.",
"Browse and download books from online catalogs": "Bücher aus Online-Katalogen durchsuchen und herunterladen",
"My Catalogs": "Meine Kataloge",
"Add Catalog": "Katalog hinzufügen",
"No catalogs yet": "Noch keine Kataloge",
"Add your first OPDS catalog to start browsing books": "Füge deinen ersten OPDS-Katalog hinzu, um Bücher zu durchsuchen.",
"Add Your First Catalog": "Ersten Katalog hinzufügen",
"Browse": "Durchsuchen",
"Popular Catalogs": "Beliebte Kataloge",
"Add": "Hinzufügen",
"Add OPDS Catalog": "OPDS-Katalog hinzufügen",
"Catalog Name": "Katalogname",
"My Calibre Library": "Meine Calibre-Bibliothek",
"OPDS URL": "OPDS-URL",
"Username (optional)": "Benutzername (optional)",
"Password (optional)": "Passwort (optional)",
"Description (optional)": "Beschreibung (optional)",
"A brief description of this catalog": "Kurzbeschreibung dieses Katalogs",
"Validating...": "Wird überprüft...",
"View All": "Alle anzeigen",
"Forward": "Weiter",
"Home": "Start",
"{{count}} items_one": "{{count}} Element",
"{{count}} items_other": "{{count}} Elemente",
"Download completed": "Download abgeschlossen",
"Download failed": "Download fehlgeschlagen",
"Open Access": "Offener Zugriff",
"Borrow": "Ausleihen",
"Buy": "Kaufen",
"Subscribe": "Abonnieren",
"Sample": "Leseprobe",
"Download": "Herunterladen",
"Open & Read": "Öffnen & Lesen",
"Tags": "Tags",
"Tag": "Tag",
"First": "Erste",
"Previous": "Vorherige",
"Next": "Nächste",
"Last": "Letzte",
"Cannot Load Page": "Seite kann nicht geladen werden",
"An error occurred": "Ein Fehler ist aufgetreten",
"Online Library": "Online-Bibliothek",
"URL must start with http:// or https://": "Die URL muss mit http:// oder https:// beginnen",
"Title, Author, Tag, etc...": "Titel, Autor, Tag, etc...",
"Query": "Suchbegriff",
"Subject": "Thema",
"Enter {{terms}}": "Gib {{terms}} ein",
"No search results found": "Keine Suchergebnisse gefunden",
"Failed to load OPDS feed: {{status}} {{statusText}}": "OPDS-Feed konnte nicht geladen werden: {{status}} {{statusText}}",
"Search in {{title}}": "Suche in {{title}}",
"Manage Storage": "Speicher verwalten",
"Failed to load files": "Dateien konnten nicht geladen werden",
"Deleted {{count}} file(s)_one": "{{count}} Datei gelöscht",
"Deleted {{count}} file(s)_other": "{{count}} Dateien gelöscht",
"Failed to delete {{count}} file(s)_one": "Löschen von {{count}} Datei fehlgeschlagen",
"Failed to delete {{count}} file(s)_other": "Löschen von {{count}} Dateien fehlgeschlagen",
"Failed to delete files": "Dateien konnten nicht gelöscht werden",
"Total Files": "Gesamtdateien",
"Total Size": "Gesamtgröße",
"Quota": "Kontingent",
"Used": "Verwendet",
"Files": "Dateien",
"Search files...": "Dateien suchen...",
"Newest First": "Neueste zuerst",
"Oldest First": "Älteste zuerst",
"Largest First": "Größte zuerst",
"Smallest First": "Kleinste zuerst",
"Name A-Z": "Name AZ",
"Name Z-A": "Name ZA",
"{{count}} selected_one": "{{count}} ausgewählt",
"{{count}} selected_other": "{{count}} ausgewählt",
"Delete Selected": "Ausgewählte löschen",
"Created": "Erstellt",
"No files found": "Keine Dateien gefunden",
"No files uploaded yet": "Noch keine Dateien hochgeladen",
"files": "Dateien",
"Page {{current}} of {{total}}": "Seite {{current}} von {{total}}",
"Are you sure to delete {{count}} selected file(s)?_one": "Möchten Sie {{count}} ausgewählte Datei wirklich löschen?",
"Are you sure to delete {{count}} selected file(s)?_other": "Möchten Sie {{count}} ausgewählte Dateien wirklich löschen?",
"Cloud Storage Usage": "Cloud-Speichernutzung",
"Rename Group": "Gruppe umbenennen",
"From Directory": "Aus Verzeichnis",
"Successfully imported {{count}} book(s)_one": "Erfolgreich 1 Buch importiert",
"Successfully imported {{count}} book(s)_other": "Erfolgreich {{count}} Bücher importiert",
"Count": "Anzahl",
"Start Page": "Startseite",
"Search in OPDS Catalog...": "Im OPDS-Katalog suchen...",
"Please log in to use advanced TTS features.": "Bitte melde dich an, um erweiterte TTS-Funktionen zu nutzen."
}
@@ -8,7 +8,6 @@
"Auto Mode": "Αυτόματη λειτουργία",
"Behavior": "Συμπεριφορά",
"Book": "Βιβλίο",
"Book Cover": "Εξώφυλλο βιβλίου",
"Bookmark": "Σελιδοδείκτης",
"Cancel": "Ακύρωση",
"Chapter": "Κεφάλαιο",
@@ -18,7 +17,6 @@
"Confirm Deletion": "Επιβεβαίωση διαγραφής",
"Copied to notebook": "Αντιγράφηκε στο σημειωματάριο",
"Copy": "Αντιγραφή",
"Custom CSS": "Προσαρμοσμένο CSS",
"Dark Mode": "Σκοτεινή λειτουργία",
"Default": "Προεπιλογή",
"Default Font": "Προεπιλεγμένη γραμματοσειρά",
@@ -28,7 +26,6 @@
"Dictionary": "Λεξικό",
"Download Readest": "Λήψη Readest",
"Edit": "Επεξεργασία",
"Enter your custom CSS here...": "Εισάγετε το προσαρμοσμένο CSS εδώ...",
"Excerpts": "Αποσπάσματα",
"Failed to import book(s): {{filenames}}": "Αποτυχία εισαγωγής βιβλίου(ων): {{filenames}}",
"Fast": "Γρήγορα",
@@ -48,7 +45,6 @@
"Horizontal Direction": "Οριζόντια κατεύθυνση",
"Hyphenation": "Συλλαβισμός",
"Import Books": "Εισαγωγή βιβλίων",
"Language:": "Γλώσσα:",
"Layout": "Διάταξη",
"Light Mode": "Φωτεινή λειτουργία",
"Loading...": "Φόρτωση...",
@@ -70,8 +66,8 @@
"Paging Animation": "Κινούμενα σχέδια σελιδοποίησης",
"Paragraph": "Παράγραφος",
"Parallel Read": "Παράλληλη ανάγνωση",
"Published:": "Δημοσιεύτηκε:",
"Publisher:": "Εκδότης:",
"Published": "Δημοσιεύτηκε",
"Publisher": "Εκδότης",
"Reading Progress Synced": "Ο συγχρονισμός προόδου ανάγνωσης ολοκληρώθηκε",
"Reload Page": "Επαναφόρτωση σελίδας",
"Reveal in File Explorer": "Εμφάνιση στον εξερευνητή αρχείων",
@@ -85,7 +81,6 @@
"Search...": "Αναζήτηση...",
"Select Book": "Επιλογή βιβλίου",
"Select Books": "Επιλογή βιβλίων",
"Select Multiple Books": "Επιλογή πολλαπλών βιβλίων",
"Sepia": "Σέπια",
"Serif Font": "Γραμματοσειρά Serif",
"Show Book Details": "Εμφάνιση λεπτομερειών βιβλίου",
@@ -96,16 +91,15 @@
"Slow": "Αργά",
"Solarized": "Solarized",
"Speak": "Ομιλία",
"Subjects:": "Θέματα:",
"Subjects": "Θέματα",
"System Fonts": "Γραμματοσειρές συστήματος",
"TTS not supported in this device": "Η μετατροπή κειμένου σε ομιλία δεν υποστηρίζεται σε αυτή τη συσκευή",
"Theme Color": "Χρώμα θέματος",
"Theme Mode": "Λειτουργία θέματος",
"Translate": "Μετάφραση",
"Translated Text": "Μεταφρασμένο κείμενο",
"Unknown": "Άγνωστο",
"Untitled": "Χωρίς τίτλο",
"Updated:": "Ενημερώθηκε:",
"Updated": "Ενημερώθηκε",
"Version {{version}}": "Έκδοση {{version}}",
"Vertical Direction": "Κάθετη κατεύθυνση",
"Welcome to your library. You can import your books here and read them anytime.": "Καλώς ήρθατε στη βιβλιοθήκη σας. Μπορείτε να εισάγετε τα βιβλία σας εδώ και να τα διαβάσετε οποιαδήποτε στιγμή.",
@@ -114,8 +108,6 @@
"Your Library": "Η βιβλιοθήκη σας",
"TTS not supported for PDF": "Η μετατροπή κειμένου σε ομιλία δεν υποστηρίζεται για αρχεία PDF",
"Override Book Font": "Παράκαμψη γραμματοσειράς βιβλίου",
"Vertical Margins (px)": "Κάθετα περιθώρια (px)",
"Horizontal Margins (%)": "Οριζόντια περιθώρια (%)",
"Apply to All Books": "Εφαρμογή σε όλα τα βιβλία",
"Apply to This Book": "Εφαρμογή σε αυτό το βιβλίο",
"Unable to fetch the translation. Try again later.": "Αδυναμία λήψης της μετάφρασης. Δοκιμάστε ξανά αργότερα.",
@@ -124,14 +116,13 @@
"Book Details": "Λεπτομέρειες βιβλίου",
"From Local File": "Από τοπικό αρχείο",
"TOC": "Πίνακας περιεχομένων",
"Table of Contents": "Πίνακας περιεχομένων",
"Book uploaded: {{title}}": "Το βιβλίο με τίτλο {{title}} ανέβηκε",
"Failed to upload book: {{title}}": "Αποτυχία ανέβασμα βιβλίου: {{title}}",
"Book downloaded: {{title}}": "Το βιβλίο με τίτλο {{title}} κατέβηκε",
"Failed to download book: {{title}}": "Αποτυχία λήψης βιβλίου: {{title}}",
"Upload Book": "Ανέβασμα βιβλίου",
"Auto Upload Books to Cloud": "Αυτόματη αποθήκευση στο cloud",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% της αποθήκευσης στο cloud χρησιμοποιήθηκε.",
"Storage": "Αποθήκευση",
"Book deleted: {{title}}": "Το βιβλίο με τίτλο {{title}} διαγράφηκε",
"Failed to delete book: {{title}}": "Αποτυχία διαγραφής βιβλίου: {{title}}",
"Check Updates on Start": "Αυτόματος έλεγχος ενημερώσεων",
@@ -163,7 +154,7 @@
"Create a Password": "Δημιουργία κωδικού πρόσβασης",
"Sign up": "Εγγραφή",
"Signing up...": "Εγγραφή...",
"Dont have an account? Sign up": "Δεν έχετε λογαριασμό; Εγγραφείτε",
"Don't have an account? Sign up": "Δεν έχετε λογαριασμό; Εγγραφείτε",
"Check your email for the confirmation link": "Ελέγξτε το email σας για τον σύνδεσμο επιβεβαίωσης",
"Signing in ...": "Σύνδεση ...",
"Send a magic link email": "Αποστολή email με μαγικό σύνδεσμο",
@@ -186,37 +177,14 @@
"Sign in with Apple": "Σύνδεση με Apple",
"Sign in with GitHub": "Σύνδεση με GitHub",
"Account": "Λογαριασμός",
"Cloud Storage": "Αποθηκευτικός χώρος Cloud",
"Failed to delete user. Please try again later.": "Αποτυχία διαγραφής χρήστη. Παρακαλώ δοκιμάστε ξανά αργότερα.",
"Unlimited Offline/Online Reading": "Απεριόριστη ανάγνωση εκτός/εντός σύνδεσης",
"Unlimited Cloud Sync Devices": "Απεριόριστες συσκευές συγχρονισμού Cloud",
"Essential Text-to-Speech Voices": "Βασικές φωνές μετατροπής κειμένου σε ομιλία",
"DeepL Free Access": "Δωρεάν πρόσβαση DeepL",
"Community Support": "Υποστήριξη κοινότητας",
"500 MB Cloud Sync Space": "500 MB χώρος συγχρονισμού Cloud",
"Includes All Free Tier Benefits": "Περιλαμβάνει όλα τα οφέλη της δωρεάν βαθμίδας",
"AI Summaries": "Περιλήψεις AI",
"AI Translations": "Μεταφράσεις AI",
"Priority Support": "Υποστήριξη προτεραιότητας",
"DeepL Pro Access": "Πρόσβαση DeepL Pro",
"Expanded Text-to-Speech Voices": "Διευρυμένες φωνές μετατροπής κειμένου σε ομιλία",
"2000 MB Cloud Sync Space": "2000 MB χώρος συγχρονισμού Cloud",
"Includes All Plus Tier Benefits": "Περιλαμβάνει όλα τα οφέλη της βαθμίδας Plus",
"Unlimited AI Summaries": "Απεριόριστες περιλήψεις AI",
"Unlimited AI Translations": "Απεριόριστες μεταφράσεις AI",
"Unlimited DeepL Pro Access": "Απεριόριστη πρόσβαση DeepL Pro",
"Advanced AI Tools": "Προηγμένα εργαλεία AI",
"Early Feature Access": "Πρώιμη πρόσβαση σε λειτουργίες",
"10 GB Cloud Sync Space": "10 GB χώρος συγχρονισμού Cloud",
"Loading profile...": "Φόρτωση προφίλ...",
"Features": "Χαρακτηριστικά",
"Delete Account": "Διαγραφή λογαριασμού",
"Delete Your Account?": "Διαγραφή του λογαριασμού σας;",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "Αυτή η ενέργεια δεν μπορεί να αναιρεθεί. Όλα τα δεδομένα σας στο cloud θα διαγραφούν μόνιμα.",
"Delete Permanently": "Μόνιμη διαγραφή",
"Free Tier": "Δωρεάν βαθμίδα",
"Plus Tier": "Βαθμίδα Plus",
"Pro Tier": "Βαθμίδα Pro",
"RTL Direction": "Κατεύθυνση RTL",
"Maximum Column Height": "Μέγιστο ύψος στήλης",
"Maximum Column Width": "Μέγιστο πλάτος στήλης",
@@ -225,7 +193,7 @@
"No supported files found. Supported formats: {{formats}}": "Δεν βρέθηκαν υποστηριζόμενα αρχεία. Υποστηριζόμενες μορφές: {{formats}}",
"Drop to Import Books": "Ρίξτε για εισαγωγή βιβλίων",
"Custom": "Προσαρμοσμένο",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n—William Shakespeare": "Όλος ο κόσμος είναι σκηνή,\nΚαι όλοι οι άνδρες και οι γυναίκες απλώς ηθοποιοί·\nΈχουν τις εξόδους και τις εισόδους τους,\nΚαι ένας άνθρωπος στον χρόνο του παίζει πολλούς ρόλους,\nΟι πράξεις του υπάρχουν σε επτά ηλικίες.\n\n— William Shakespeare",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "Όλος ο κόσμος είναι σκηνή,\nΚαι όλοι οι άνδρες και οι γυναίκες απλώς ηθοποιοί·\nΈχουν τις εξόδους και τις εισόδους τους,\nΚαι ένας άνθρωπος στον χρόνο του παίζει πολλούς ρόλους,\nΟι πράξεις του υπάρχουν σε επτά ηλικίες.\n\n— William Shakespeare",
"Custom Theme": "Προσαρμοσμένο θέμα",
"Theme Name": "Όνομα θέματος",
"Text Color": "Χρώμα κειμένου",
@@ -252,9 +220,9 @@
"Auto Import on File Open": "Αυτόματη εισαγωγή κατά το άνοιγμα αρχείου",
"LXGW WenKai GB Screen": "LXGW WenKai SC",
"LXGW WenKai TC": "LXGW WenKai TC",
"No chapters detected.": "Δεν εντοπίστηκαν κεφάλαια.",
"Failed to parse the EPUB file.": "Αποτυχία ανάλυσης του αρχείου EPUB.",
"This book format is not supported.": "Αυτή η μορφή βιβλίου δεν υποστηρίζεται.",
"No chapters detected": "Δεν εντοπίστηκαν κεφάλαια",
"Failed to parse the EPUB file": "Αποτυχία ανάλυσης του αρχείου EPUB",
"This book format is not supported": "Αυτή η μορφή βιβλίου δεν υποστηρίζεται",
"Unable to fetch the translation. Please log in first and try again.": "Αδυναμία λήψης της μετάφρασης. Παρακαλώ συνδεθείτε πρώτα και δοκιμάστε ξανά.",
"Group": "Ομάδα",
"Always on Top": "Πάντα στην κορυφή",
@@ -267,13 +235,13 @@
"Clear Search": "Καθαρισμός αναζήτησης",
"Header & Footer": "Κεφαλίδα & Υποσέλιδο",
"Apply also in Scrolled Mode": "Εφαρμογή και σε λειτουργία κύλισης",
"A new version of Readest is Available!": "Μια νέα έκδοση του Readest είναι διαθέσιμη!",
"A new version of Readest is available!": "Μια νέα έκδοση του Readest είναι διαθέσιμη!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Η έκδοση Readest {{newVersion}} είναι διαθέσιμη (έκδοση που είναι εγκατεστημένη {{currentVersion}}).",
"Download and install now?": "Θέλετε να την κατεβάσετε και να την εγκαταστήσετε τώρα;",
"Downloading {{downloaded}} of {{contentLength}}": "Κατεβάζω {{downloaded}} από {{contentLength}}",
"Download finished": "Η λήψη ολοκληρώθηκε",
"DOWNLOAD & INSTALL": "ΛΗΨΗ & ΕΓΚΑΤΑΣΤΑΣΗ",
"Changelog:": "Αλλαγές:",
"Changelog": "Αλλαγές",
"Software Update": "Ενημέρωση λογισμικού",
"Title": "Τίτλος",
"Date Read": "Ημερομηνία ανάγνωσης",
@@ -282,18 +250,15 @@
"Ascending": "Αύξουσα",
"Descending": "Φθίνουσα",
"Sort by...": "Ταξινόμηση κατά...",
"Added:": "Προστέθηκε:",
"Format:": "Μορφή:",
"Added": "Προστέθηκε",
"GuanKiapTsingKhai-T": "GuanKiapTsingKhai-T",
"Description:": "Περιγραφή:",
"Description": "Περιγραφή",
"No description available": "Δεν είναι διαθέσιμη καμία περιγραφή",
"List": "Λίστα",
"Grid": "Πλέγμα",
"(from 'As You Like It', Act II)": "('Όπως σας αρέσει', Πράξη II)",
"Link Color": "Χρώμα συνδέσμου",
"Volume Keys for Page Flip": "Ανατροπή με πλήκτρα έντασης",
"Clicks for Page Flip": "Κλικ για ανατροπή σελίδας",
"Swap Clicks Area": "Ανταλλαγή περιοχής κλικ",
"Screen": "Οθόνη",
"Orientation": "Προσανατολισμός",
"Portrait": "Πορτραίτο",
@@ -302,7 +267,7 @@
"Checking for updates...": "Έλεγχος για ενημερώσεις...",
"Error checking for updates": "Σφάλμα κατά τον έλεγχο για ενημερώσεις",
"Details": "Πληρ.",
"File Size:": "Μέγεθος αρχείου:",
"File Size": "Μέγεθος αρχείου",
"Auto Detect": "Αυτόματη ανίχνευση",
"Next Section": "Επόμενη ενότητα",
"Previous Section": "Προηγούμενη ενότητα",
@@ -329,9 +294,476 @@
"Disable Translation": "Απενεργοποίηση μετάφρασης",
"Scroll": "Κύλιση",
"Overlap Pixels": "Επικάλυψη εικονοστοιχείων",
"Click": "Κλικ",
"System Language": "Γλώσσα συστήματος",
"Security": "Ασφάλεια",
"Allow JavaScript": "Επιτρέψτε JavaScript",
"Enable only if you trust the file.": "Ενεργοποιήστε μόνο εάν εμπιστεύεστε το αρχείο."
"Enable only if you trust the file.": "Ενεργοποιήστε μόνο εάν εμπιστεύεστε το αρχείο.",
"Sort TOC by Page": "Ταξινόμηση TOC κατά σελίδα",
"Search in {{count}} Book(s)..._one": "Αναζήτηση σε {{count}} Βιβλίο...",
"Search in {{count}} Book(s)..._other": "Αναζήτηση σε {{count}} Βιβλία...",
"No notes match your search": "Καμία σημείωση δεν βρέθηκε",
"Search notes and excerpts...": "Αναζήτηση σημειώσεων...",
"Sign in to Sync": "Σύνδεση για συγχρονισμό",
"Synced at {{time}}": "Συγχρονίστηκε στις {{time}}",
"Never synced": "Ποτέ δεν συγχρονίστηκε",
"Show Remaining Time": "Εμφάνιση υπολειπόμενου χρόνου",
"{{time}} min left in chapter": "{{time}} λεπτά απομένουν στο κεφάλαιο",
"Override Book Color": "Παράκαμψη χρώματος βιβλίου",
"Login Required": "Απαιτείται σύνδεση",
"Quota Exceeded": "Υπέρβαση ορίου",
"{{percentage}}% of Daily Translation Characters Used.": "{{percentage}}% των ημερήσιων χαρακτήρων μετάφρασης χρησιμοποιήθηκαν.",
"Translation Characters": "Χαρακτήρες μετάφρασης",
"{{engine}}: {{count}} voices_one": "{{engine}}: {{count}} φωνή",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}} φωνές",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "Κάτι πήγε στραβά. Μην ανησυχείτε, η ομάδα μας έχει ενημερωθεί και εργαζόμαστε για μια λύση.",
"Error Details:": "Λεπτομέρειες σφάλματος:",
"Try Again": "Δοκιμάστε ξανά",
"Need help?": "Χρειάζεστε βοήθεια;",
"Contact Support": "Επικοινωνήστε με την υποστήριξη",
"Code Highlighting": "Επισήμανση κώδικα",
"Enable Highlighting": "Ενεργοποίηση επισήμανσης",
"Code Language": "Γλώσσα κώδικα",
"Top Margin (px)": "Πάνω περιθώριο (px)",
"Bottom Margin (px)": "Κάτω περιθώριο (px)",
"Right Margin (px)": "Δεξί περιθώριο (px)",
"Left Margin (px)": "Αριστερό περιθώριο (px)",
"Column Gap (%)": "Απόσταση στηλών (%)",
"Always Show Status Bar": "Πάντα εμφάνιση γραμμής κατάστασης",
"Custom Content CSS": "Προσαρμοσμένο CSS περιεχομένου",
"Enter CSS for book content styling...": "Εισαγάγετε CSS για στυλ περιεχομένου βιβλίου...",
"Custom Reader UI CSS": "Προσαρμοσμένο CSS διεπαφής αναγνώστη",
"Enter CSS for reader interface styling...": "Εισαγάγετε CSS για στυλ διεπαφής αναγνώστη...",
"Crop": "Περικοπή",
"Book Covers": "Εξώφυλλα βιβλίων",
"Fit": "Προσαρμογή",
"Reset {{settings}}": "Επαναφορά {{settings}}",
"Reset Settings": "Επαναφορά ρυθμίσεων",
"{{count}} pages left in chapter_one": "Μένει {{count}} σελίδα",
"{{count}} pages left in chapter_other": "Μένουν {{count}} σελίδες",
"Show Remaining Pages": "Εμφάνιση υπολοίπων",
"Source Han Serif CN VF": "Source Han Serif",
"Huiwen-mincho": "Huiwen Mincho",
"KingHwa_OldSong": "KingHwa Song",
"Manage Subscription": "Διαχείριση συνδρομής",
"Coming Soon": "Έρχεται σύντομα",
"Upgrade to {{plan}}": "Αναβάθμιση σε {{plan}}",
"Upgrade to Plus or Pro": "Αναβάθμιση σε Plus ή Pro",
"Current Plan": "Τρέχον πρόγραμμα",
"Plan Limits": "Όρια προγράμματος",
"Processing your payment...": "Επεξεργασία πληρωμής...",
"Please wait while we confirm your subscription.": "Παρακαλώ περιμένετε όσο επιβεβαιώνουμε τη συνδρομή σας.",
"Payment Processing": "Επεξεργασία πληρωμής",
"Your payment is being processed. This usually takes a few moments.": "Η πληρωμή σας επεξεργάζεται. Συνήθως διαρκεί λίγες στιγμές.",
"Payment Failed": "Η πληρωμή απέτυχε",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "Δεν ήταν δυνατή η επεξεργασία της συνδρομής σας. Παρακαλώ προσπαθήστε ξανά ή επικοινωνήστε με την υποστήριξη αν το πρόβλημα συνεχιστεί.",
"Back to Profile": "Επιστροφή στο προφίλ",
"Subscription Successful!": "Η συνδρομή ολοκληρώθηκε!",
"Thank you for your subscription! Your payment has been processed successfully.": "Σας ευχαριστούμε για τη συνδρομή σας! Η πληρωμή ολοκληρώθηκε με επιτυχία.",
"Email:": "Email:",
"Plan:": "Πρόγραμμα:",
"Amount:": "Ποσό:",
"Go to Library": "Μετάβαση στη βιβλιοθήκη",
"Need help? Contact our support team at support@readest.com": "Χρειάζεστε βοήθεια; Επικοινωνήστε με την υποστήριξη στο support@readest.com",
"Free Plan": "Δωρεάν πρόγραμμα",
"month": "μήνας",
"AI Translations (per day)": "Μεταφράσεις AI (ανά ημέρα)",
"Plus Plan": "Πρόγραμμα Plus",
"Includes All Free Plan Benefits": "Περιλαμβάνει όλα τα οφέλη του δωρεάν προγράμματος",
"Pro Plan": "Πρόγραμμα Pro",
"More AI Translations": "Περισσότερες μεταφράσεις AI",
"Complete Your Subscription": "Ολοκληρώστε τη συνδρομή σας",
"{{percentage}}% of Cloud Sync Space Used.": "{{percentage}}% του χώρου συγχρονισμού στο cloud χρησιμοποιήθηκε.",
"Cloud Sync Storage": "Χώρος συγχρονισμού cloud",
"Disable": "Απενεργοποίηση",
"Enable": "Ενεργοποίηση",
"Upgrade to Readest Premium": "Αναβάθμιση στο Readest Premium",
"Show Source Text": "Εμφάνιση αρχικού κειμένου",
"Cross-Platform Sync": "Συγχρονισμός σε όλες τις συσκευές",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "Συγχρονίστε βιβλία, πρόοδο και σημειώσεις σε όλες τις συσκευές.",
"Customizable Reading": "Προσαρμόσιμη ανάγνωση",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "Ρυθμίστε γραμματοσειρές, διάταξη και θέματα όπως θέλετε.",
"AI Read Aloud": "Ανάγνωση με AI",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "Ακούστε τα βιβλία σας με φυσικές φωνές AI.",
"AI Translations": "Μεταφράσεις με AI",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "Μεταφράστε άμεσα με Google, Azure ή DeepL.",
"Connect with fellow readers and get help fast in our friendly community channels.": "Συμμετέχετε στην κοινότητα για άμεση υποστήριξη.",
"Unlimited AI Read Aloud Hours": "Απεριόριστη ανάγνωση με AI",
"Listen without limits—convert as much text as you like into immersive audio.": "Απεριόριστη μετατροπή κειμένου σε ήχο.",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "Περισσότερες μεταφράσεις και δυνατότητες.",
"DeepL Pro Access": "Πρόσβαση στο DeepL Pro",
"Enjoy faster responses and dedicated assistance whenever you need help.": "Γρήγορη και άμεση υποστήριξη.",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "Έχετε φτάσει το ημερήσιο όριο. Κάντε αναβάθμιση για περισσότερες μεταφράσεις.",
"Includes All Plus Plan Benefits": "Περιλαμβάνει Όλα τα Οφέλη του Plus Πλάνου",
"Early Feature Access": "Πρόωρη Πρόσβαση σε Χαρακτηριστικά",
"Be the first to explore new features, updates, and innovations before anyone else.": "Εξερευνήστε πρώτοι νέα χαρακτηριστικά, ενημερώσεις και καινοτομίες.",
"Advanced AI Tools": "Προηγμένα Εργαλεία AI",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "Αξιοποιήστε ισχυρά εργαλεία AI για εξυπνότερη ανάγνωση, μετάφραση και ανακάλυψη περιεχομένου.",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "Μεταφράστε έως 100.000 χαρακτήρες ημερησίως με τη πιο ακριβή μηχανή μετάφρασης.",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "Μεταφράστε έως 500.000 χαρακτήρες ημερησίως με τη πιο ακριβή μηχανή μετάφρασης.",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "Αποθηκεύστε και αποκτήστε πρόσβαση στη συλλογή ανάγνωσης με έως 5 GB ασφαλή cloud αποθήκευση.",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "Αποθηκεύστε και αποκτήστε πρόσβαση στη συλλογή ανάγνωσης με έως 20 GB ασφαλή cloud αποθήκευση.",
"Deleted cloud backup of the book: {{title}}": "Διαγράφηκε το αντίγραφο ασφαλείας του βιβλίου: {{title}}",
"Are you sure to delete the cloud backup of the selected book?": "Είστε σίγουροι ότι θέλετε να διαγράψετε το αντίγραφο ασφαλείας του επιλεγμένου βιβλίου;",
"What's New in Readest": "Τι νέο υπάρχει στο Readest",
"Enter book title": "Εισάγετε τίτλο βιβλίου",
"Subtitle": "Υπότιτλος",
"Enter book subtitle": "Εισάγετε υπότιτλο βιβλίου",
"Enter author name": "Εισάγετε όνομα συγγραφέα",
"Series": "Σειρά",
"Enter series name": "Εισάγετε όνομα σειράς",
"Series Index": "Αριθμός σειράς",
"Enter series index": "Εισάγετε αριθμό σειράς",
"Total in Series": "Σύνολο στη σειρά",
"Enter total books in series": "Εισάγετε συνολικό αριθμό βιβλίων στη σειρά",
"Enter publisher": "Εισάγετε εκδότη",
"Publication Date": "Ημερομηνία έκδοσης",
"Identifier": "Αναγνωριστικό",
"Enter book description": "Εισάγετε περιγραφή βιβλίου",
"Change cover image": "Αλλαγή εικόνας εξωφύλλου",
"Replace": "Αντικατάσταση",
"Unlock cover": "Ξεκλείδωμα εξωφύλλου",
"Lock cover": "Κλείδωμα εξωφύλλου",
"Auto-Retrieve Metadata": "Αυτόματη ανάκτηση μεταδεδομένων",
"Auto-Retrieve": "Αυτόματη ανάκτηση",
"Unlock all fields": "Ξεκλείδωμα όλων των πεδίων",
"Unlock All": "Ξεκλείδωμα όλων",
"Lock all fields": "Κλείδωμα όλων των πεδίων",
"Lock All": "Κλείδωμα όλων",
"Reset": "Επαναφορά",
"Edit Metadata": "Επεξεργασία μεταδεδομένων",
"Locked": "Κλειδωμένο",
"Select Metadata Source": "Επιλέξτε πηγή μεταδεδομένων",
"Keep manual input": "Διατήρηση χειροκίνητης εισαγωγής",
"Google Books": "Google Books",
"Open Library": "Open Library",
"Fiction, Science, History": "Μυθοπλασία, Επιστήμη, Ιστορία",
"Open Book in New Window": "Άνοιγμα βιβλίου σε νέο παράθυρο",
"Voices for {{lang}}": "Φωνές για {{lang}}",
"Yandex Translate": "Μετάφραση Yandex",
"YYYY or YYYY-MM-DD": "YYYY ή YYYY-MM-DD",
"Restore Purchase": "Επαναφορά αγοράς",
"No purchases found to restore.": "Δεν βρέθηκαν αγορές για επαναφορά.",
"Failed to restore purchases.": "Αποτυχία επαναφοράς αγορών.",
"Failed to manage subscription.": "Αποτυχία διαχείρισης συνδρομής.",
"Failed to load subscription plans.": "Αποτυχία φόρτωσης σχεδίων συνδρομής.",
"year": "έτος",
"Failed to create checkout session": "Αποτυχία δημιουργίας συνεδρίας πληρωμής",
"Storage": "Αποθήκευση",
"Terms of Service": "Όροι χρήσης",
"Privacy Policy": "Πολιτική απορρήτου",
"Disable Double Click": "Απενεργοποίηση διπλού κλικ",
"TTS not supported for this document": "Η τεχνολογία TTS δεν υποστηρίζεται για αυτό το έγγραφο.",
"Reset Password": "Επαναφορά κωδικού",
"Show Reading Progress": "Εμφάνιση προόδου ανάγνωσης",
"Reading Progress Style": "Στυλ προόδου ανάγνωσης",
"Page Number": "Αριθμός σελίδας",
"Percentage": "Ποσοστό",
"Deleted local copy of the book: {{title}}": "Διαγράφηκε το τοπικό αντίγραφο του βιβλίου: {{title}}",
"Failed to delete cloud backup of the book: {{title}}": "Αποτυχία διαγραφής του αντιγράφου ασφαλείας του βιβλίου: {{title}}",
"Failed to delete local copy of the book: {{title}}": "Αποτυχία διαγραφής της τοπικής αντιγράφου του βιβλίου: {{title}}",
"Are you sure to delete the local copy of the selected book?": "Είστε σίγουροι ότι θέλετε να διαγράψετε την τοπική αντιγραφή του επιλεγμένου βιβλίου;",
"Remove from Cloud & Device": "Αφαίρεση από το Cloud & Device",
"Remove from Cloud Only": "Αφαίρεση μόνο από το Cloud",
"Remove from Device Only": "Αφαίρεση μόνο από το Device",
"Disconnected": "Αποσυνδεδεμένο",
"KOReader Sync Settings": "Ρυθμίσεις συγχρονισμού KOReader",
"Sync Strategy": "Στρατηγική συγχρονισμού",
"Ask on conflict": "Ρώτησε σε περίπτωση σύγκρουσης",
"Always use latest": "Χρησιμοποίησε πάντα την τελευταία έκδοση",
"Send changes only": "Αποστολή μόνο αλλαγών",
"Receive changes only": "Λήψη μόνο αλλαγών",
"Checksum Method": "Μέθοδος ελέγχου",
"File Content (recommended)": "Περιεχόμενο αρχείου (συνιστάται)",
"File Name": "Όνομα αρχείου",
"Device Name": "Όνομα συσκευής",
"Connect to your KOReader Sync server.": "Συνδεθείτε στον διακομιστή συγχρονισμού KOReader.",
"Server URL": "Διεύθυνση URL διακομιστή",
"Username": "Όνομα χρήστη",
"Your Username": "Το όνομα χρήστη σας",
"Password": "Κωδικός πρόσβασης",
"Connect": "Σύνδεση",
"KOReader Sync": "Συγχρονισμός KOReader",
"Sync Conflict": "Σύγκρουση συγχρονισμού",
"Sync reading progress from \"{{deviceName}}\"?": "Συγχρονίστε την πρόοδο ανάγνωσης από το \"{{deviceName}}\";",
"another device": "άλλη συσκευή",
"Local Progress": "Τοπική πρόοδος",
"Remote Progress": "Απομακρυσμένη πρόοδος",
"Page {{page}} of {{total}} ({{percentage}}%)": "Σελίδα {{page}} από {{total}} ({{percentage}}%)",
"Current position": "Τρέχουσα θέση",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "Περίπου σελίδα {{page}} από {{total}} ({{percentage}}%)",
"Approximately {{percentage}}%": "Περίπου {{percentage}}%",
"Failed to connect": "Αποτυχία σύνδεσης",
"Sync Server Connected": "Ο διακομιστής συγχρονισμού είναι συνδεδεμένος",
"Sync as {{userDisplayName}}": "Συγχρονισμός ως {{userDisplayName}}",
"Custom Fonts": "Προσαρμοσμένες Γραμματοσειρές",
"Cancel Delete": "Ακύρωση Διαγραφής",
"Import Font": "Εισαγωγή Γραμματοσειράς",
"Delete Font": "Διαγραφή Γραμματοσειράς",
"Tips": "Συμβουλές",
"Custom fonts can be selected from the Font Face menu": "Οι προσαρμοσμένες γραμματοσειρές μπορούν να επιλεγούν από το μενού Γραμματοσειράς",
"Manage Custom Fonts": "Διαχείριση Προσαρμοσμένων Γραμματοσειρών",
"Select Files": "Επιλογή Αρχείων",
"Select Image": "Επιλογή Εικόνας",
"Select Video": "Επιλογή Βίντεο",
"Select Audio": "Επιλογή Ήχου",
"Select Fonts": "Επιλογή Γραμματοσειρών",
"Supported font formats: .ttf, .otf, .woff, .woff2": "Υποστηριζόμενες μορφές γραμματοσειρών: .ttf, .otf, .woff, .woff2",
"Push Progress": "Αποστολή προόδου",
"Pull Progress": "Λήψη προόδου",
"Previous Paragraph": "Προηγούμενη παράγραφος",
"Previous Sentence": "Προηγούμενη πρόταση",
"Pause": "Παύση",
"Play": "Αναπαραγωγή",
"Next Sentence": "Επόμενη πρόταση",
"Next Paragraph": "Επόμενη παράγραφος",
"Separate Cover Page": "Ξεχωριστή σελίδα εξωφύλλου",
"Resize Notebook": "Αλλαγή μεγέθους σημειωματάριου",
"Resize Sidebar": "Αλλαγή μεγέθους πλαϊνής γραμμής",
"Get Help from the Readest Community": "Λάβετε βοήθεια από την κοινότητα Readest",
"Remove cover image": "Αφαίρεση εικόνας εξωφύλλου",
"Bookshelf": "Ράφι βιβλίων",
"View Menu": "Προβολή μενού",
"Settings Menu": "Μενού ρυθμίσεων",
"View account details and quota": "Προβολή στοιχείων λογαριασμού και ορίου",
"Library Header": "Κεφαλίδα βιβλιοθήκης",
"Book Content": "Περιεχόμενο βιβλίου",
"Footer Bar": "Γραμμή υποσέλιδου",
"Header Bar": "Γραμμή κεφαλίδας",
"View Options": "Επιλογές προβολής",
"Book Menu": "Μενού βιβλίου",
"Search Options": "Επιλογές αναζήτησης",
"Close": "Κλείσιμο",
"Delete Book Options": "Επιλογές διαγραφής βιβλίου",
"ON": "ΕΝΕΡΓΟΠΟΙΗΣΗ",
"OFF": "ΑΠΕΝΕΡΓΟΠΟΙΗΣΗ",
"Reading Progress": "Πρόοδος ανάγνωσης",
"Page Margin": "Περιθώριο σελίδας",
"Remove Bookmark": "Αφαίρεση σελιδοδείκτη",
"Add Bookmark": "Προσθήκη σελιδοδείκτη",
"Books Content": "Περιεχόμενο βιβλίων",
"Jump to Location": "Μετάβαση σε τοποθεσία",
"Unpin Notebook": "Αποκαθήλωση σημειωματάριου",
"Pin Notebook": "Καθήλωση σημειωματάριου",
"Hide Search Bar": "Απόκρυψη γραμμής αναζήτησης",
"Show Search Bar": "Εμφάνιση γραμμής αναζήτησης",
"On {{current}} of {{total}} page": "Στη σελίδα {{current}} από {{total}}",
"Section Title": "Τίτλος ενότητας",
"Decrease": "Μείωση",
"Increase": "Αύξηση",
"Settings Panels": "Πίνακες ρυθμίσεων",
"Settings": "Ρυθμίσεις",
"Unpin Sidebar": "Αποκαθήλωση πλαϊνής γραμμής",
"Pin Sidebar": "Καθήλωση πλαϊνής γραμμής",
"Toggle Sidebar": "Εναλλαγή πλαϊνής γραμμής",
"Toggle Translation": "Εναλλαγή μετάφρασης",
"Translation Disabled": "Η μετάφραση είναι απενεργοποιημένη",
"Minimize": "Ελαχιστοποίηση",
"Maximize or Restore": "Μεγιστοποίηση ή Επαναφορά",
"Exit Parallel Read": "Έξοδος από την παράλληλη ανάγνωση",
"Enter Parallel Read": "Είσοδος στην παράλληλη ανάγνωση",
"Zoom Level": "Επίπεδο ζουμ",
"Zoom Out": "Μείωση ζουμ",
"Reset Zoom": "Επαναφορά ζουμ",
"Zoom In": "Αύξηση ζουμ",
"Zoom Mode": "Λειτουργία ζουμ",
"Single Page": "Μοναδική σελίδα",
"Auto Spread": "Αυτόματη εξάπλωση",
"Fit Page": "Προσαρμογή σελίδας",
"Fit Width": "Προσαρμογή πλάτους",
"Failed to select directory": "Αποτυχία επιλογής καταλόγου",
"The new data directory must be different from the current one.": "Ο νέος κατάλογος δεδομένων πρέπει να είναι διαφορετικός από τον τρέχοντα.",
"Migration failed: {{error}}": "Η μετανάστευση απέτυχε: {{error}}",
"Change Data Location": "Αλλαγή τοποθεσίας δεδομένων",
"Current Data Location": "Τρέχουσα τοποθεσία δεδομένων",
"Total size: {{size}}": "Συνολικό μέγεθος: {{size}}",
"Calculating file info...": "Υπολογισμός πληροφοριών αρχείου...",
"New Data Location": "Νέα τοποθεσία δεδομένων",
"Choose Different Folder": "Επιλέξτε διαφορετικό φάκελο",
"Choose New Folder": "Επιλέξτε νέο φάκελο",
"Migrating data...": "Μεταφορά δεδομένων...",
"Copying: {{file}}": "Αντιγραφή: {{file}}",
"{{current}} of {{total}} files": "{{current}} από {{total}} αρχεία",
"Migration completed successfully!": "Η μετανάστευση ολοκληρώθηκε με επιτυχία!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "Τα δεδομένα σας έχουν μεταφερθεί στη νέα τοποθεσία. Παρακαλώ επανεκκινήστε την εφαρμογή για να ολοκληρώσετε τη διαδικασία.",
"Migration failed": "Η μετανάστευση απέτυχε",
"Important Notice": "Σημαντική ειδοποίηση",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "Αυτό θα μεταφέρει όλα τα δεδομένα της εφαρμογής σας στη νέα τοποθεσία. Βεβαιωθείτε ότι ο προορισμός έχει αρκετό ελεύθερο χώρο.",
"Restart App": "Επανεκκίνηση εφαρμογής",
"Start Migration": "Έναρξη μετανάστευσης",
"Advanced Settings": "Προηγμένες ρυθμίσεις",
"File count: {{size}}": "Αριθμός αρχείων: {{size}}",
"Background Read Aloud": "Ανάγνωση στο παρασκήνιο",
"Ready to read aloud": "Έτοιμο για ανάγνωση",
"Read Aloud": "Ανάγνωση",
"Screen Brightness": "Φωτεινότητα οθόνης",
"Background Image": "Εικόνα φόντου",
"Import Image": "Εισαγωγή εικόνας",
"Opacity": "Αδιαφάνεια",
"Size": "Μέγεθος",
"Cover": "Εξώφυλλο",
"Contain": "Περιέχει",
"{{number}} pages left in chapter": "Μένουν {{number}} σελίδες στο κεφάλαιο",
"Device": "Συσκευή",
"E-Ink Mode": "Λειτουργία E-Ink",
"Highlight Colors": "Χρώματα επισήμανσης",
"Auto Screen Brightness": "Αυτόματη φωτεινότητα οθόνης",
"Pagination": "Σελιδοποίηση",
"Disable Double Tap": "Απενεργοποίηση διπλού ταπ",
"Tap to Paginate": "Ταπ για σελιδοποίηση",
"Click to Paginate": "Κλικ για σελιδοποίηση",
"Tap Both Sides": "Ταπ και στις δύο πλευρές",
"Click Both Sides": "Κλικ και στις δύο πλευρές",
"Swap Tap Sides": "Ανταλλαγή πλευρών ταπ",
"Swap Click Sides": "Ανταλλαγή πλευρών κλικ",
"Source and Translated": "Πηγή και Μεταφρασμένο",
"Translated Only": "Μόνο Μεταφρασμένο",
"Source Only": "Μόνο πηγή",
"TTS Text": "Κείμενο TTS",
"The book file is corrupted": "Το αρχείο του βιβλίου είναι κατεστραμμένο",
"The book file is empty": "Το αρχείο του βιβλίου είναι κενό",
"Failed to open the book file": "Αποτυχία ανοίγματος του αρχείου βιβλίου",
"On-Demand Purchase": "Αγορά κατόπιν αιτήματος",
"Full Customization": "Πλήρης προσαρμογή",
"Lifetime Plan": "Σχέδιο ζωής",
"One-Time Payment": "Εφάπαξ πληρωμή",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "Κάντε μια εφάπαξ πληρωμή για να απολαύσετε διαρκή πρόσβαση σε συγκεκριμένες δυνατότητες σε όλες τις συσκευές. Αγοράστε συγκεκριμένες δυνατότητες ή υπηρεσίες μόνο όταν τις χρειάζεστε.",
"Expand Cloud Sync Storage": "Επέκταση αποθήκευσης συγχρονισμού Cloud",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "Επεκτείνετε την αποθήκευση cloud σας για πάντα με μια εφάπαξ αγορά. Κάθε επιπλέον αγορά προσθέτει περισσότερο χώρο.",
"Unlock All Customization Options": "Ξεκλειδώστε όλες τις επιλογές προσαρμογής",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "Ξεκλειδώστε επιπλέον θέματα, γραμματοσειρές, επιλογές διάταξης και δυνατότητες ανάγνωσης, μεταφραστές, υπηρεσίες αποθήκευσης cloud.",
"Purchase Successful!": "Η αγορά ήταν επιτυχής!",
"lifetime": "διαρκής",
"Thank you for your purchase! Your payment has been processed successfully.": "Σας ευχαριστούμε για την αγορά σας! Η πληρωμή σας έχει επεξεργαστεί με επιτυχία.",
"Order ID:": "Αριθμός παραγγελίας:",
"TTS Highlighting": "Επισήμανση TTS",
"Style": "Στυλ",
"Underline": "Υπογράμμιση",
"Strikethrough": "Διαγραμμένο",
"Squiggly": "Κυματιστό",
"Outline": "Περίγραμμα",
"Save Current Color": "Αποθήκευση τρέχουσας χρώματος",
"Quick Colors": "Γρήγορα χρώματα",
"Highlighter": "Υπογραμμιστής",
"Save Book Cover": "Αποθήκευση εξωφύλλου βιβλίου",
"Auto-save last book cover": "Αυτόματη αποθήκευση τελευταίου εξωφύλλου βιβλίου",
"Back": "Πίσω",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "Το email επιβεβαίωσης στάλθηκε! Παρακαλώ έλεγξε την παλιά και τη νέα σου διεύθυνση email για να επιβεβαιώσεις την αλλαγή.",
"Failed to update email": "Αποτυχία ενημέρωσης email",
"New Email": "Νέο email",
"Your new email": "Το νέο σου email",
"Updating email ...": "Ενημέρωση email ...",
"Update email": "Ενημέρωση email",
"Current email": "Τρέχον email",
"Update Email": "Ενημέρωση email",
"All": "Όλα",
"Unable to open book": "Αδύνατη η άνοιγμα του βιβλίου",
"Punctuation": "Στίξη",
"Replace Quotation Marks": "Αντικατάσταση εισαγωγικών",
"Enabled only in vertical layout.": "Ενεργοποιημένο μόνο σε κάθετη διάταξη.",
"No Conversion": "Χωρίς μετατροπή",
"Simplified to Traditional": "Απλοπ. → Παραδ.",
"Traditional to Simplified": "Παραδ. → Απλοπ.",
"Simplified to Traditional (Taiwan)": "Απλοπ. → Παραδ. (Ταϊβάν)",
"Simplified to Traditional (Hong Kong)": "Απλοπ. → Παραδ. (Χονγκ Κονγκ)",
"Simplified to Traditional (Taiwan), with phrases": "Απλοπ. → Παραδ. (Ταϊβάν • φράσεις)",
"Traditional (Taiwan) to Simplified": "Παραδ. (Ταϊβάν) → Απλοπ.",
"Traditional (Hong Kong) to Simplified": "Παραδ. (Χονγκ Κονγκ) → Απλοπ.",
"Traditional (Taiwan) to Simplified, with phrases": "Παραδ. (Ταϊβάν • φράσεις) → Απλοπ.",
"Convert Simplified and Traditional Chinese": "Μετατροπή Απλοπ./Παραδ. Κινέζικων",
"Convert Mode": "Λειτουργία μετατροπής",
"Failed to auto-save book cover for lock screen: {{error}}": "Αποτυχία αυτόματης αποθήκευσης εξωφύλλου βιβλίου για την οθόνη κλειδώματος: {{error}}",
"Download from Cloud": "Λήψη από το Cloud",
"Upload to Cloud": "Ανέβασμα στο Cloud",
"Clear Custom Fonts": "Καθαρισμός προσαρμοσμένων γραμματοσειρών",
"Columns": "Στήλες",
"OPDS Catalogs": "Κατάλογοι OPDS",
"Adding LAN addresses is not supported in the web app version.": "Η προσθήκη διευθύνσεων LAN δεν υποστηρίζεται στην έκδοση web της εφαρμογής.",
"Invalid OPDS catalog. Please check the URL.": "Μη έγκυρος κατάλογος OPDS. Ελέγξτε το URL.",
"Browse and download books from online catalogs": "Περιηγηθείτε και κατεβάστε βιβλία από online καταλόγους",
"My Catalogs": "Οι Κατάλογοί μου",
"Add Catalog": "Προσθήκη Καταλόγου",
"No catalogs yet": "Δεν υπάρχουν ακόμα κατάλογοι",
"Add your first OPDS catalog to start browsing books": "Προσθέστε τον πρώτο σας κατάλογο OPDS για να αρχίσετε την περιήγηση.",
"Add Your First Catalog": "Προσθήκη Πρώτου Καταλόγου",
"Browse": "Περιήγηση",
"Popular Catalogs": "Δημοφιλείς Κατάλογοι",
"Add": "Προσθήκη",
"Add OPDS Catalog": "Προσθήκη Καταλόγου OPDS",
"Catalog Name": "Όνομα Καταλόγου",
"My Calibre Library": "Η Βιβλιοθήκη μου στο Calibre",
"OPDS URL": "OPDS URL",
"Username (optional)": "Όνομα χρήστη (προαιρετικό)",
"Password (optional)": "Κωδικός πρόσβασης (προαιρετικό)",
"Description (optional)": "Περιγραφή (προαιρετική)",
"A brief description of this catalog": "Μια σύντομη περιγραφή του καταλόγου",
"Validating...": "Γίνεται έλεγχος...",
"View All": "Προβολή όλων",
"Forward": "Μπροστά",
"Home": "Αρχική",
"{{count}} items_one": "{{count}} στοιχείο",
"{{count}} items_other": "{{count}} στοιχεία",
"Download completed": "Η λήψη ολοκληρώθηκε",
"Download failed": "Η λήψη απέτυχε",
"Open Access": "Ανοιχτή πρόσβαση",
"Borrow": "Δανεισμός",
"Buy": "Αγορά",
"Subscribe": "Συνδρομή",
"Sample": "Δείγμα",
"Download": "Λήψη",
"Open & Read": "Άνοιγμα & Ανάγνωση",
"Tags": "Ετικέτες",
"Tag": "Ετικέτα",
"First": "Πρώτο",
"Previous": "Προηγούμενο",
"Next": "Επόμενο",
"Last": "Τελευταίο",
"Cannot Load Page": "Δεν είναι δυνατή η φόρτωση της σελίδας",
"An error occurred": "Προέκυψε σφάλμα",
"Online Library": "Online Βιβλιοθήκη",
"URL must start with http:// or https://": "Το URL πρέπει να ξεκινά με http:// ή https://",
"Title, Author, Tag, etc...": "Τίτλος, Συγγραφέας, Ετικέτα, κ.λπ...",
"Query": "Ερώτημα",
"Subject": "Θέμα",
"Enter {{terms}}": "Εισαγάγετε {{terms}}",
"No search results found": "Δεν βρέθηκαν αποτελέσματα αναζήτησης",
"Failed to load OPDS feed: {{status}} {{statusText}}": "Αποτυχία φόρτωσης ροής OPDS: {{status}} {{statusText}}",
"Search in {{title}}": "Αναζήτηση στο {{title}}",
"Manage Storage": "Διαχείριση αποθήκευσης",
"Failed to load files": "Αποτυχία φόρτωσης αρχείων",
"Deleted {{count}} file(s)_one": "Διαγράφηκε {{count}} αρχείο",
"Deleted {{count}} file(s)_other": "Διαγράφηκαν {{count}} αρχεία",
"Failed to delete {{count}} file(s)_one": "Αποτυχία διαγραφής {{count}} αρχείου",
"Failed to delete {{count}} file(s)_other": "Αποτυχία διαγραφής {{count}} αρχείων",
"Failed to delete files": "Αποτυχία διαγραφής αρχείων",
"Total Files": "Σύνολο αρχείων",
"Total Size": "Συνολικό μέγεθος",
"Quota": "Όριο",
"Used": "Χρησιμοποιήθηκε",
"Files": "Αρχεία",
"Search files...": "Αναζήτηση αρχείων...",
"Newest First": "Νεότερα πρώτα",
"Oldest First": "Παλαιότερα πρώτα",
"Largest First": "Μεγαλύτερα πρώτα",
"Smallest First": "Μικρότερα πρώτα",
"Name A-Z": "Όνομα AZ",
"Name Z-A": "Όνομα ZA",
"{{count}} selected_one": "{{count}} επιλεγμένο",
"{{count}} selected_other": "{{count}} επιλεγμένα",
"Delete Selected": "Διαγραφή επιλεγμένων",
"Created": "Δημιουργήθηκε",
"No files found": "Δεν βρέθηκαν αρχεία",
"No files uploaded yet": "Δεν έχουν ανέβει αρχεία ακόμη",
"files": "αρχεία",
"Page {{current}} of {{total}}": "Σελίδα {{current}} από {{total}}",
"Are you sure to delete {{count}} selected file(s)?_one": "Σίγουρα θέλετε να διαγράψετε {{count}} επιλεγμένο αρχείο;",
"Are you sure to delete {{count}} selected file(s)?_other": "Σίγουρα θέλετε να διαγράψετε {{count}} επιλεγμένα αρχεία;",
"Cloud Storage Usage": "Χρήση αποθήκευσης cloud",
"Rename Group": "Μετονομασία ομάδας",
"From Directory": "Από κατάλογο",
"Successfully imported {{count}} book(s)_one": "Επιτυχής εισαγωγή 1 βιβλίου",
"Successfully imported {{count}} book(s)_other": "Επιτυχής εισαγωγή {{count}} βιβλίων",
"Count": "Πλήθος",
"Start Page": "Αρχική Σελίδα",
"Search in OPDS Catalog...": "Αναζήτηση στον κατάλογο OPDS...",
"Please log in to use advanced TTS features.": "Παρακαλώ συνδεθείτε για να χρησιμοποιήσετε προηγμένες λειτουργίες TTS."
}
@@ -1,4 +1,23 @@
{
"LXGW WenKai GB Screen": "LXGW WenKai SC",
"LXGW WenKai TC": "LXGW WenKai TC"
"LXGW WenKai TC": "LXGW WenKai TC",
"Source Han Serif CN VF": "Source Han Serif",
"Huiwen-mincho": "Huiwen Mincho",
"KingHwa_OldSong": "KingHwa Song",
"Are you sure to delete {{count}} selected book(s)?_one": "Are you sure to delete {{count}} selected book?",
"Are you sure to delete {{count}} selected book(s)?_other": "Are you sure to delete {{count}} selected books?",
"Search in {{count}} Book(s)..._one": "Search in {{count}} book...",
"Search in {{count}} Book(s)..._other": "Search in {{count}} books...",
"{{count}} pages left in chapter_one": "{{count}} page left in chapter",
"{{count}} pages left in chapter_other": "{{count}} pages left in chapter",
"Deleted {{count}} file(s)_one": "Deleted {{count}} file",
"Deleted {{count}} file(s)_other": "Deleted {{count}} files",
"Failed to delete {{count}} file(s)_one": "Failed to delete {{count}} file",
"Failed to delete {{count}} file(s)_other": "Failed to delete {{count}} files",
"{{count}} selected_one": "{{count}} selected",
"{{count}} selected_other": "{{count}} selected",
"Are you sure to delete {{count}} selected file(s)?_one": "Are you sure to delete {{count}} selected file?",
"Are you sure to delete {{count}} selected file(s)?_other": "Are you sure to delete {{count}} selected files?",
"Successfully imported {{count}} book(s)_one": "Successfully imported {{count}} book",
"Successfully imported {{count}} book(s)_other": "Successfully imported {{count}} books"
}
@@ -8,7 +8,6 @@
"Auto Mode": "Modo automático",
"Behavior": "Comportamiento",
"Book": "Libro",
"Book Cover": "Portada del libro",
"Bookmark": "Marcador",
"Cancel": "Cancelar",
"Chapter": "Capítulo",
@@ -18,7 +17,6 @@
"Confirm Deletion": "Confirmar eliminación",
"Copied to notebook": "Copiado al cuaderno",
"Copy": "Copiar",
"Custom CSS": "CSS personalizado",
"Dark Mode": "Modo oscuro",
"Default": "Predeterminado",
"Default Font": "Fuente predeterminada",
@@ -28,7 +26,6 @@
"Dictionary": "Diccionario",
"Download Readest": "Descargar Readest",
"Edit": "Editar",
"Enter your custom CSS here...": "Introduce tu CSS personalizado aquí...",
"Excerpts": "Extractos",
"Failed to import book(s): {{filenames}}": "Error al importar libro(s): {{filenames}}",
"Fast": "Rápido",
@@ -48,7 +45,6 @@
"Horizontal Direction": "Dirección horizontal",
"Hyphenation": "Guionización",
"Import Books": "Importar libros",
"Language:": "Idioma:",
"Layout": "Diseño",
"Light Mode": "Modo claro",
"Loading...": "Cargando...",
@@ -70,9 +66,36 @@
"Paging Animation": "Animación de paginación",
"Paragraph": "Párrafo",
"Parallel Read": "Lectura paralela",
"Published:": "Publicado:",
"Publisher:": "Editorial:",
"Published": "Publicado",
"Publisher": "Editorial",
"KOReader Sync": "Sincronización con KOReader",
"KOReader Sync Settings": "Ajustes de Sincronización con KOReader",
"Your Username": "Tu nombre de usuario",
"Connect to your KOReader Sync server.": "Conéctate a tu servidor de KOReader Sync.",
"Server URL": "URL del Servidor",
"Username": "Usuario",
"Password": "Contraseña",
"Connect": "Conectar",
"Disconnected": "Desconectado",
"Sync Strategy": "Estrategia de sincronización",
"Ask on conflict": "Preguntar en caso de conflicto",
"Always use latest": "Usar siempre el más reciente",
"Send changes only": "Solo enviar cambios",
"Receive changes only": "Solo recibir cambios",
"Checksum Method": "Método de identificación",
"File Content (recommended)": "Contenido del archivo (recomendado)",
"File Name": "Nombre del archivo",
"Device Name": "Nombre del dispositivo",
"Reading Progress Synced": "Progreso de lectura sincronizado",
"Sync Conflict": "Conflicto de sincronización",
"Sync reading progress from \"{{deviceName}}\"?": "¿Quieres sincronizar el progreso de lectura desde el dispositivo \"{{deviceName}}\"?",
"Local Progress": "Progreso local",
"Remote Progress": "Progreso remoto",
"Page {{page}} of {{total}} ({{percentage}}%)": "Página {{page}} de {{total}} ({{percentage}}%)",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "Aproximadamente página {{page}} de {{total}} ({{percentage}}%)",
"Current position": "Posición actual",
"Approximately {{percentage}}%": "Aproximadamente {{percentage}}%",
"another device": "otro dispositivo",
"Reload Page": "Recargar página",
"Reveal in File Explorer": "Mostrar en el Explorador de archivos",
"Reveal in Finder": "Mostrar en Finder",
@@ -85,7 +108,6 @@
"Search...": "Buscar...",
"Select Book": "Seleccionar libro",
"Select Books": "Seleccionar libros",
"Select Multiple Books": "Seleccionar varios libros",
"Sepia": "Sepia",
"Serif Font": "Fuente serif",
"Show Book Details": "Mostrar detalles del libro",
@@ -96,16 +118,15 @@
"Slow": "Lento",
"Solarized": "Solarizado",
"Speak": "Leer",
"Subjects:": "Temas:",
"Subjects": "Temas",
"System Fonts": "Fuentes del sistema",
"TTS not supported in this device": "TTS no es compatible con este dispositivo",
"Theme Color": "Color del tema",
"Theme Mode": "Modo del tema",
"Translate": "Traducir",
"Translated Text": "Texto traducido",
"Unknown": "Desconocido",
"Untitled": "Sin título",
"Updated:": "Actualizado:",
"Updated": "Actualizado",
"Version {{version}}": "Versión {{version}}",
"Vertical Direction": "Dirección vertical",
"Welcome to your library. You can import your books here and read them anytime.": "Bienvenido a tu biblioteca. Puedes importar tus libros aquí y leerlos en cualquier momento.",
@@ -114,8 +135,6 @@
"Your Library": "Tu biblioteca",
"TTS not supported for PDF": "TTS no es compatible con PDF",
"Override Book Font": "Sobrescribir fuente del libro",
"Vertical Margins (px)": "Márgenes verticales (px)",
"Horizontal Margins (%)": "Márgenes horizontales (%)",
"Apply to All Books": "Aplicar a todos los libros",
"Apply to This Book": "Aplicar a este libro",
"Unable to fetch the translation. Try again later.": "No se puede obtener la traducción. Inténtalo de nuevo más tarde.",
@@ -124,14 +143,13 @@
"Book Details": "Detalles del libro",
"From Local File": "Desde archivo local",
"TOC": "Índice",
"Table of Contents": "Índice",
"Book uploaded: {{title}}": "Libro subido: {{title}}",
"Failed to upload book: {{title}}": "Error al subir libro: {{title}}",
"Book downloaded: {{title}}": "Libro descargado: {{title}}",
"Failed to download book: {{title}}": "Error al descargar libro: {{title}}",
"Upload Book": "Subir libro",
"Auto Upload Books to Cloud": "Subir libros automáticamente a la nube",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% del almacenamiento en la nube utilizado.",
"Storage": "Almacenamiento",
"Book deleted: {{title}}": "Libro eliminado: {{title}}",
"Failed to delete book: {{title}}": "Error al eliminar libro: {{title}}",
"Check Updates on Start": "Comprobar actualizaciones al iniciar",
@@ -163,7 +181,7 @@
"Create a Password": "Crear una contraseña",
"Sign up": "Registrarse",
"Signing up...": "Registrándose...",
"Dont have an account? Sign up": "¿No tienes una cuenta? Regístrate",
"Don't have an account? Sign up": "¿No tienes una cuenta? Regístrate",
"Check your email for the confirmation link": "Revisa tu correo electrónico para el enlace de confirmación",
"Signing in ...": "Iniciando sesión ...",
"Send a magic link email": "Enviar un enlace mágico por correo",
@@ -186,37 +204,14 @@
"Sign in with Apple": "Iniciar sesión con Apple",
"Sign in with GitHub": "Iniciar sesión con GitHub",
"Account": "Cuenta",
"Cloud Storage": "Almacenamiento en la nube",
"Failed to delete user. Please try again later.": "Error al eliminar usuario. Por favor, inténtelo de nuevo más tarde.",
"Unlimited Offline/Online Reading": "Lectura sin límites en línea/sin conexión",
"Unlimited Cloud Sync Devices": "Sincronización ilimitada de dispositivos en la nube",
"Essential Text-to-Speech Voices": "Voces esenciales de texto a voz",
"DeepL Free Access": "Acceso gratuito a DeepL",
"Community Support": "Soporte comunitario",
"500 MB Cloud Sync Space": "500 MB de espacio de sincronización en la nube",
"Includes All Free Tier Benefits": "Incluye todos los beneficios del nivel gratuito",
"AI Summaries": "Resúmenes con IA",
"AI Translations": "Traducciones con IA",
"Priority Support": "Soporte prioritario",
"DeepL Pro Access": "Acceso a DeepL Pro",
"Expanded Text-to-Speech Voices": "Voces ampliadas de texto a voz",
"2000 MB Cloud Sync Space": "2000 MB de espacio de sincronización en la nube",
"Includes All Plus Tier Benefits": "Incluye todos los beneficios del nivel Plus",
"Unlimited AI Summaries": "Resúmenes ilimitados con IA",
"Unlimited AI Translations": "Traducciones ilimitadas con IA",
"Unlimited DeepL Pro Access": "Acceso ilimitado a DeepL Pro",
"Advanced AI Tools": "Herramientas avanzadas de IA",
"Early Feature Access": "Acceso anticipado a funciones",
"10 GB Cloud Sync Space": "10 GB de espacio de sincronización en la nube",
"Loading profile...": "Cargando perfil...",
"Features": "Características",
"Delete Account": "Eliminar cuenta",
"Delete Your Account?": "¿Eliminar tu cuenta?",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "Esta acción no se puede deshacer. Todos tus datos en la nube se eliminarán permanentemente.",
"Delete Permanently": "Eliminar permanentemente",
"Free Tier": "Nivel gratuito",
"Plus Tier": "Nivel Plus",
"Pro Tier": "Nivel Pro",
"RTL Direction": "Dirección RTL",
"Maximum Column Height": "Altura máxima de columna",
"Maximum Column Width": "Ancho máximo de columna",
@@ -225,7 +220,7 @@
"No supported files found. Supported formats: {{formats}}": "No se encontraron archivos compatibles. Formatos compatibles: {{formats}}",
"Drop to Import Books": "Soltar para importar libros",
"Custom": "Personalizado",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n—William Shakespeare": "Todo el mundo es un escenario,\nY todos los hombres y mujeres son meros actores;\nTienen sus salidas y sus entradas,\nY un hombre en su tiempo interpreta muchos papeles,\nSus actos son siete edades.\n\n—William Shakespeare",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "Todo el mundo es un escenario,\nY todos los hombres y mujeres son meros actores;\nTienen sus salidas y sus entradas,\nY un hombre en su tiempo interpreta muchos papeles,\nSus actos son siete edades.\n\n— William Shakespeare",
"Custom Theme": "Tema personalizado",
"Theme Name": "Nombre del tema",
"Text Color": "Color del texto",
@@ -252,9 +247,9 @@
"Auto Import on File Open": "Importación automática al abrir archivo",
"LXGW WenKai GB Screen": "LXGW WenKai SC",
"LXGW WenKai TC": "LXGW WenKai TC",
"No chapters detected.": "No se detectaron capítulos.",
"Failed to parse the EPUB file.": "Error al analizar el archivo EPUB.",
"This book format is not supported.": "Este formato de libro no es compatible.",
"No chapters detected": "No se detectaron capítulos",
"Failed to parse the EPUB file": "Error al analizar el archivo EPUB",
"This book format is not supported": "Este formato de libro no es compatible",
"Unable to fetch the translation. Please log in first and try again.": "No se puede obtener la traducción. Por favor, inicia sesión primero e inténtalo de nuevo.",
"Group": "Grupo",
"Always on Top": "Siempre en la parte superior",
@@ -267,13 +262,13 @@
"Clear Search": "Limpiar búsqueda",
"Header & Footer": "Encabezado y pie de página",
"Apply also in Scrolled Mode": "Aplicar también en modo desplazamiento",
"A new version of Readest is Available!": "¡Una nueva versión de Readest está disponible!",
"A new version of Readest is available!": "¡Una nueva versión de Readest está disponible!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Readest {{newVersion}} está disponible (versión instalada {{currentVersion}}).",
"Download and install now?": "Descargar e instalar ahora?",
"Downloading {{downloaded}} of {{contentLength}}": "Descargando {{downloaded}} de {{contentLength}}",
"Download finished": "Descarga finalizada",
"DOWNLOAD & INSTALL": "DESCARGAR E INSTALAR",
"Changelog:": "Notas de la versión:",
"Changelog": "Notas de la versión",
"Software Update": "Actualización de software",
"Title": "Título",
"Date Read": "Fecha de lectura",
@@ -282,18 +277,15 @@
"Ascending": "Ascendente",
"Descending": "Descendente",
"Sort by...": "Ordenar por...",
"Added:": "Agregado:",
"Format:": "Formato:",
"Added": "Agregado",
"GuanKiapTsingKhai-T": "GuanKiapTsingKhai-T",
"Description:": "Descripción:",
"Description": "Descripción",
"No description available": "No hay descripción disponible",
"List": "Lista",
"Grid": "Cuadrícula",
"(from 'As You Like It', Act II)": "(de 'Como gustéis', Acto II)",
"Link Color": "Color del enlace",
"Volume Keys for Page Flip": "Botones de volumen para pasar página",
"Clicks for Page Flip": "Toques para pasar página",
"Swap Clicks Area": "Invertir zonas de toque",
"Screen": "Pantalla",
"Orientation": "Orientación",
"Portrait": "Vertical",
@@ -302,7 +294,7 @@
"Checking for updates...": "Comprobando actualizaciones...",
"Error checking for updates": "Error al comprobar actualizaciones",
"Details": "Detalles",
"File Size:": "Peso del archivo:",
"File Size": "Peso del archivo",
"Auto Detect": "Detección automática",
"Next Section": "Siguiente sección",
"Previous Section": "Sección anterior",
@@ -330,9 +322,458 @@
"Disable Translation": "Deshabilitar traducción",
"Scroll": "Desplazar",
"Overlap Pixels": "Superponer píxeles",
"Click": "Click",
"System Language": "Idioma del sistema",
"Security": "Seguridad",
"Allow JavaScript": "Permitir JavaScript",
"Enable only if you trust the file.": "Permitir solo si confías en el archivo."
"Enable only if you trust the file.": "Permitir solo si confías en el archivo.",
"Sort TOC by Page": "Ordenar TOC por página",
"Search in {{count}} Book(s)..._one": "Buscar en {{count}} libro...",
"Search in {{count}} Book(s)..._many": "Buscar en {{count}} libros...",
"Search in {{count}} Book(s)..._other": "Buscar en {{count}} libros...",
"No notes match your search": "No se encontraron notas",
"Search notes and excerpts...": "Buscar notas...",
"Sign in to Sync": "Inicia sesión para sincronizar",
"Synced at {{time}}": "Sincronizado a las {{time}}",
"Never synced": "Nunca sincronizado",
"Show Remaining Time": "Mostrar tiempo restante",
"{{time}} min left in chapter": "{{time}} min restantes en el capítulo",
"Override Book Color": "Sobre escribir color del libro",
"Login Required": "Iniciar sesión",
"Quota Exceeded": "Límite superado",
"{{percentage}}% of Daily Translation Characters Used.": "{{percentage}}% de caracteres de traducción diarios utilizados.",
"Translation Characters": "Caracteres de traducción",
"{{engine}}: {{count}} voices_one": "{{engine}}: {{count}} voz",
"{{engine}}: {{count}} voices_many": "{{engine}}: {{count}} voces",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}} voces",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "Algo salió mal. No te preocupes, nuestro equipo ha sido notificado y estamos trabajando en una solución.",
"Error Details:": "Detalles del error:",
"Try Again": "Intentar de nuevo",
"Need help?": "¿Necesitas ayuda?",
"Contact Support": "Contactar con soporte",
"Code Highlighting": "Resaltado de código",
"Enable Highlighting": "Activar resaltado",
"Code Language": "Lenguaje de código",
"Top Margin (px)": "Margen superior (px)",
"Bottom Margin (px)": "Margen inferior (px)",
"Right Margin (px)": "Margen derecho (px)",
"Left Margin (px)": "Margen izquierdo (px)",
"Column Gap (%)": "Espacio entre columnas (%)",
"Always Show Status Bar": "Mostrar siempre la barra de estado",
"Custom Content CSS": "CSS del contenido",
"Enter CSS for book content styling...": "Introduce CSS para el contenido del libro...",
"Custom Reader UI CSS": "CSS de la interfaz",
"Enter CSS for reader interface styling...": "Introduce CSS para la interfaz de lectura...",
"Crop": "Recortar",
"Book Covers": "Portadas de libros",
"Fit": "Encajar",
"Reset {{settings}}": "Restablecer {{settings}}",
"Reset Settings": "Restablecer configuración",
"{{count}} pages left in chapter_one": "{{count}} página restante en el capítulo",
"{{count}} pages left in chapter_many": "{{count}} páginas restantes en el capítulo",
"{{count}} pages left in chapter_other": "{{count}} páginas restantes en el capítulo",
"Show Remaining Pages": "Mostrar resto",
"Source Han Serif CN VF": "Source Han Serif",
"Huiwen-mincho": "Huiwen Mincho",
"KingHwa_OldSong": "KingHwa Song",
"Manage Subscription": "Gestionar suscripción",
"Coming Soon": "Próximamente",
"Upgrade to {{plan}}": "Actualizar a {{plan}}",
"Upgrade to Plus or Pro": "Actualizar a Plus o Pro",
"Current Plan": "Plan actual",
"Plan Limits": "Límites del plan",
"Processing your payment...": "Procesando tu pago...",
"Please wait while we confirm your subscription.": "Espera mientras confirmamos tu suscripción.",
"Payment Processing": "Procesando pago",
"Payment Failed": "El pago ha fallado",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "No pudimos procesar tu suscripción. Inténtalo de nuevo o contacta con soporte si el problema persiste.",
"Back to Profile": "Volver al perfil",
"Subscription Successful!": "¡Suscripción exitosa!",
"Thank you for your subscription! Your payment has been processed successfully.": "¡Gracias por tu suscripción! Tu pago se ha procesado correctamente.",
"Email:": "Correo electrónico:",
"Plan:": "Plan:",
"Amount:": "Importe:",
"Go to Library": "Ir a la biblioteca",
"Need help? Contact our support team at support@readest.com": "¿Necesitas ayuda? Contacta con nuestro equipo de soporte en support@readest.com",
"Free Plan": "Plan gratuito",
"month": "mes",
"AI Translations (per day)": "Traducciones con IA (por día)",
"Plus Plan": "Plan Plus",
"Includes All Free Plan Benefits": "Incluye todos los beneficios del plan gratuito",
"Pro Plan": "Plan Pro",
"More AI Translations": "Más traducciones con IA",
"Your payment is being processed. This usually takes a few moments.": "Tu pago se está procesando. Normalmente tarda unos momentos.",
"Complete Your Subscription": "Completa tu suscripción",
"{{percentage}}% of Cloud Sync Space Used.": "{{percentage}}% del espacio de sincronización en la nube utilizado.",
"Cloud Sync Storage": "Almacenamiento en la nube",
"Disable": "Desactivar",
"Enable": "Activar",
"Upgrade to Readest Premium": "Actualizar a Readest Premium",
"Show Source Text": "Mostrar texto fuente",
"Cross-Platform Sync": "Sincronización multiplataforma",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "Sincroniza tu biblioteca, progreso y notas en todos tus dispositivos.",
"Customizable Reading": "Lectura personalizable",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "Ajusta fuentes, diseño y temas a tu gusto.",
"AI Read Aloud": "Lectura en voz alta con IA",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "Escucha tus libros con voces IA naturales.",
"AI Translations": "Traducciones con IA",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "Traduce textos al instante con Google, Azure o DeepL.",
"Connect with fellow readers and get help fast in our friendly community channels.": "Únete a la comunidad y recibe ayuda rápidamente.",
"Unlimited AI Read Aloud Hours": "Lectura IA ilimitada",
"Listen without limits—convert as much text as you like into immersive audio.": "Convierte texto en audio sin límites.",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "Más traducciones y funciones avanzadas.",
"DeepL Pro Access": "Acceso a DeepL Pro",
"Enjoy faster responses and dedicated assistance whenever you need help.": "Soporte rápido y prioritario.",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "Has alcanzado tu límite diario. Mejora tu plan para más traducciones.",
"Includes All Plus Plan Benefits": "Incluye Todos los Beneficios del Plan Plus",
"Early Feature Access": "Acceso Anticipado a Funciones",
"Be the first to explore new features, updates, and innovations before anyone else.": "Explora primero nuevas funciones, actualizaciones e innovaciones antes que nadie.",
"Advanced AI Tools": "Herramientas de IA Avanzadas",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "Aprovecha herramientas de IA potentes para lectura inteligente, traducción y descubrimiento de contenido.",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "Traduce hasta 100,000 caracteres diarios con el motor de traducción más preciso disponible.",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "Traduce hasta 500,000 caracteres diarios con el motor de traducción más preciso disponible.",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "Almacena y accede de forma segura a toda tu colección de lectura con hasta 5 GB de almacenamiento en la nube.",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "Almacena y accede de forma segura a toda tu colección de lectura con hasta 20 GB de almacenamiento en la nube.",
"Deleted cloud backup of the book: {{title}}": "Respaldo en la nube del libro eliminado: {{title}}",
"Are you sure to delete the cloud backup of the selected book?": "¿Estás seguro de que deseas eliminar el respaldo en la nube del libro seleccionado?",
"What's New in Readest": "¿Qué hay de nuevo en Readest",
"Enter book title": "Ingresa el título del libro",
"Subtitle": "Subtítulo",
"Enter book subtitle": "Ingresa el subtítulo del libro",
"Enter author name": "Ingresa el nombre del autor",
"Series": "Serie",
"Enter series name": "Ingresa el nombre de la serie",
"Series Index": "Número de serie",
"Enter series index": "Ingresa el número de serie",
"Total in Series": "Total en la serie",
"Enter total books in series": "Ingresa el total de libros en la serie",
"Enter publisher": "Ingresa la editorial",
"Publication Date": "Fecha de publicación",
"Identifier": "Identificador",
"Enter book description": "Ingresa la descripción del libro",
"Change cover image": "Cambiar imagen de portada",
"Replace": "Reemplazar",
"Unlock cover": "Desbloquear portada",
"Lock cover": "Bloquear portada",
"Auto-Retrieve Metadata": "Recuperar metadatos automáticamente",
"Auto-Retrieve": "Recuperar automáticamente",
"Unlock all fields": "Desbloquear todos los campos",
"Unlock All": "Desbloquear todo",
"Lock all fields": "Bloquear todos los campos",
"Lock All": "Bloquear todo",
"Reset": "Restablecer",
"Edit Metadata": "Editar metadatos",
"Locked": "Bloqueado",
"Select Metadata Source": "Seleccionar fuente de metadatos",
"Keep manual input": "Mantener entrada manual",
"Google Books": "Google Books",
"Open Library": "Open Library",
"Fiction, Science, History": "Ficción, Ciencia, Historia",
"Open Book in New Window": "Abre el libro en una nueva ventana",
"Voices for {{lang}}": "Voces para {{lang}}",
"Yandex Translate": "Yandex Translate",
"YYYY or YYYY-MM-DD": "YYYY o YYYY-MM-DD",
"Restore Purchase": "Restaurar compra",
"No purchases found to restore.": "No se encontraron compras para restaurar.",
"Failed to restore purchases.": "Error al restaurar compras.",
"Failed to manage subscription.": "Error al gestionar la suscripción.",
"Failed to load subscription plans.": "Error al cargar los planes de suscripción.",
"year": "año",
"Failed to create checkout session": "Error al crear la sesión de pago",
"Storage": "Almacenamiento",
"Terms of Service": "Condiciones del servicio",
"Privacy Policy": "Política de privacidad",
"Disable Double Click": "Deshabilitar Doble Clic",
"TTS not supported for this document": "TTS no es compatible con este documento.",
"Reset Password": "Restablecer contraseña",
"Reading Progress Style": "Estilo de progreso de lectura",
"Percentage": "Porcentaje",
"Show Reading Progress": "Mostrar progreso de lectura",
"Page Number": "Número de página",
"Deleted local copy of the book: {{title}}": "Se eliminó la copia local del libro: {{title}}",
"Failed to delete cloud backup of the book: {{title}}": "Error al eliminar la copia de seguridad en la nube del libro: {{title}}",
"Failed to delete local copy of the book: {{title}}": "Error al eliminar la copia local del libro: {{title}}",
"Are you sure to delete the local copy of the selected book?": "¿Está seguro de que desea eliminar la copia local del libro seleccionado?",
"Remove from Cloud & Device": "Eliminar de la nube y del dispositivo",
"Remove from Cloud Only": "Eliminar solo de la nube",
"Remove from Device Only": "Eliminar solo del dispositivo",
"Failed to connect": "Error al conectar",
"Sync Server Connected": "Servidor de sincronización conectado",
"Sync as {{userDisplayName}}": "Sincronizar como {{userDisplayName}}",
"Custom Fonts": "Fuentes Personalizadas",
"Cancel Delete": "Cancelar Eliminación",
"Import Font": "Importar Fuente",
"Delete Font": "Eliminar Fuente",
"Tips": "Consejos",
"Custom fonts can be selected from the Font Face menu": "Las fuentes personalizadas se pueden seleccionar desde el menú de Tipografía",
"Manage Custom Fonts": "Administrar Fuentes Personalizadas",
"Select Files": "Seleccionar Archivos",
"Select Image": "Seleccionar Imagen",
"Select Video": "Seleccionar Video",
"Select Audio": "Seleccionar Audio",
"Select Fonts": "Seleccionar Fuentes",
"Supported font formats: .ttf, .otf, .woff, .woff2": "Formatos de fuente compatibles: .ttf, .otf, .woff, .woff2",
"Push Progress": "Empujar progreso",
"Pull Progress": "Tirar progreso",
"Previous Paragraph": "Párrafo anterior",
"Previous Sentence": "Oración anterior",
"Pause": "Pausar",
"Play": "Reproducir",
"Next Sentence": "Siguiente oración",
"Next Paragraph": "Siguiente párrafo",
"Separate Cover Page": "Portada separada",
"Resize Notebook": "Redimensionar cuaderno",
"Resize Sidebar": "Redimensionar barra lateral",
"Get Help from the Readest Community": "Obtén ayuda de la comunidad de Readest",
"Remove cover image": "Eliminar imagen de portada",
"Bookshelf": "Estantería",
"View Menu": "Menú de Vista",
"Settings Menu": "Menú de Configuración",
"View account details and quota": "Ver detalles de la cuenta y cuota",
"Library Header": "Encabezado de Biblioteca",
"Book Content": "Contenido del Libro",
"Footer Bar": "Barra de Pie de Página",
"Header Bar": "Barra de Encabezado",
"View Options": "Opciones de Vista",
"Book Menu": "Menú de Libro",
"Search Options": "Opciones de Búsqueda",
"Close": "Cerrar",
"Delete Book Options": "Opciones de Eliminar Libro",
"ON": "ENCENDIDO",
"OFF": "APAGADO",
"Reading Progress": "Progreso de Lectura",
"Page Margin": "Márgenes de Página",
"Remove Bookmark": "Eliminar Marcador",
"Add Bookmark": "Agregar Marcador",
"Books Content": "Contenido de Libros",
"Jump to Location": "Saltar a Ubicación",
"Unpin Notebook": "Desanclar Cuaderno",
"Pin Notebook": "Anclar Cuaderno",
"Hide Search Bar": "Ocultar Barra de Búsqueda",
"Show Search Bar": "Mostrar Barra de Búsqueda",
"On {{current}} of {{total}} page": "En {{current}} de {{total}} página",
"Section Title": "Título de Sección",
"Decrease": "Disminuir",
"Increase": "Aumentar",
"Settings Panels": "Paneles de Configuración",
"Settings": "Configuraciones",
"Unpin Sidebar": "Desanclar Barra Lateral",
"Pin Sidebar": "Anclar Barra Lateral",
"Toggle Sidebar": "Alternar Barra Lateral",
"Toggle Translation": "Alternar Traducción",
"Translation Disabled": "Traducción Deshabilitada",
"Minimize": "Minimizar",
"Maximize or Restore": "Maximizar o Restaurar",
"Exit Parallel Read": "Salir de Lectura Paralela",
"Enter Parallel Read": "Entrar en Lectura Paralela",
"Zoom Level": "Nivel de Zoom",
"Zoom Out": "Alejar",
"Reset Zoom": "Restablecer Zoom",
"Zoom In": "Acercar",
"Zoom Mode": "Modo de Zoom",
"Single Page": "Página Única",
"Auto Spread": "Distribución Automática",
"Fit Page": "Ajustar Página",
"Fit Width": "Ajustar Ancho",
"Failed to select directory": "Error al seleccionar el directorio",
"The new data directory must be different from the current one.": "El nuevo directorio de datos debe ser diferente del actual.",
"Migration failed: {{error}}": "La migración falló: {{error}}",
"Change Data Location": "Cambiar Ubicación de Datos",
"Current Data Location": "Ubicación Actual de Datos",
"Total size: {{size}}": "Tamaño total: {{size}}",
"Calculating file info...": "Calculando información del archivo...",
"New Data Location": "Nueva Ubicación de Datos",
"Choose Different Folder": "Elegir Carpeta Diferente",
"Choose New Folder": "Elegir Nueva Carpeta",
"Migrating data...": "Migrando datos...",
"Copying: {{file}}": "Copiando: {{file}}",
"{{current}} of {{total}} files": "{{current}} de {{total}} archivos",
"Migration completed successfully!": "¡Migración completada con éxito!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "Tus datos han sido movidos a la nueva ubicación. Por favor, reinicia la aplicación para completar el proceso.",
"Migration failed": "La migración falló",
"Important Notice": "Aviso Importante",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "Esto moverá todos los datos de tu aplicación a la nueva ubicación. Asegúrate de que el destino tenga suficiente espacio libre.",
"Restart App": "Reiniciar Aplicación",
"Start Migration": "Iniciar Migración",
"Advanced Settings": "Configuraciones Avanzadas",
"File count: {{size}}": "Número de archivos: {{size}}",
"Background Read Aloud": "Lectura en segundo plano",
"Ready to read aloud": "Listo para leer en voz alta",
"Read Aloud": "Leer en voz alta",
"Screen Brightness": "Brillo de pantalla",
"Background Image": "Imagen de fondo",
"Import Image": "Importar imagen",
"Opacity": "Opacidad",
"Size": "Tamaño",
"Cover": "Cubierta",
"Contain": "Contener",
"{{number}} pages left in chapter": "{{number}} páginas restantes en el capítulo",
"Device": "Dispositivo",
"E-Ink Mode": "Modo E-Ink",
"Highlight Colors": "Colores de resaltado",
"Auto Screen Brightness": "Brillo automático de pantalla",
"Pagination": "Paginación",
"Disable Double Tap": "Deshabilitar Doble Toque",
"Tap to Paginate": "Tocar para Paginación",
"Click to Paginate": "Hacer Clic para Paginación",
"Tap Both Sides": "Tocar Ambos Lados",
"Click Both Sides": "Hacer Clic en Ambos Lados",
"Swap Tap Sides": "Intercambiar Lados de Toque",
"Swap Click Sides": "Intercambiar Lados de Clic",
"Source and Translated": "Fuente y Traducido",
"Translated Only": "Solo Traducido",
"Source Only": "Solo Fuente",
"TTS Text": "TTS Texto",
"The book file is corrupted": "El archivo del libro está dañado",
"The book file is empty": "El archivo del libro está vacío",
"Failed to open the book file": "Error al abrir el archivo del libro",
"On-Demand Purchase": "Compra bajo demanda",
"Full Customization": "Personalización Completa",
"Lifetime Plan": "Plan de por vida",
"One-Time Payment": "Pago Único",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "Realiza un solo pago para disfrutar de acceso de por vida a funciones específicas en todos los dispositivos. Compra funciones o servicios específicos solo cuando los necesites.",
"Expand Cloud Sync Storage": "Expandir Almacenamiento de Sincronización en la Nube",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "Expande tu almacenamiento en la nube para siempre con una compra única. Cada compra adicional agrega más espacio.",
"Unlock All Customization Options": "Desbloquear Todas las Opciones de Personalización",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "Desbloquear temas adicionales, fuentes, opciones de diseño y funciones de lectura en voz alta, traductores, servicios de almacenamiento en la nube.",
"Purchase Successful!": "¡Compra Exitosa!",
"lifetime": "de por vida",
"Thank you for your purchase! Your payment has been processed successfully.": "¡Gracias por tu compra! Tu pago se ha procesado correctamente.",
"Order ID:": "ID de pedido:",
"TTS Highlighting": "TTS Resaltado",
"Style": "Estilo",
"Underline": "Subrayado",
"Strikethrough": "Tachado",
"Squiggly": "Ondulado",
"Outline": "Contorno",
"Save Current Color": "Guardar Color Actual",
"Quick Colors": "Colores Rápidos",
"Highlighter": "Resaltador",
"Save Book Cover": "Guardar Portada del Libro",
"Auto-save last book cover": "Guardar automáticamente la última portada del libro",
"Back": "Atrás",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "¡Correo de confirmación enviado! Por favor, revisa tus direcciones de correo electrónico antigua y nueva para confirmar el cambio.",
"Failed to update email": "Error al actualizar el correo electrónico",
"New Email": "Nuevo correo electrónico",
"Your new email": "Tu nuevo correo electrónico",
"Updating email ...": "Actualizando correo electrónico ...",
"Update email": "Actualizar correo electrónico",
"Current email": "Correo electrónico actual",
"Update Email": "Actualizar correo electrónico",
"All": "Todos",
"Unable to open book": "No se puede abrir el libro",
"Punctuation": "Signos de puntuación",
"Replace Quotation Marks": "Reemplazar comillas",
"Enabled only in vertical layout.": "Habilitado solo en diseño vertical.",
"No Conversion": "Sin conversión",
"Simplified to Traditional": "Simpl. → Trad.",
"Traditional to Simplified": "Trad. → Simpl.",
"Simplified to Traditional (Taiwan)": "Simpl. → Trad. (Taiwan)",
"Simplified to Traditional (Hong Kong)": "Simpl. → Trad. (Hong Kong)",
"Simplified to Traditional (Taiwan), with phrases": "Simpl. → Trad. (Taiwan • frases)",
"Traditional (Taiwan) to Simplified": "Trad. (Taiwan) → Simpl.",
"Traditional (Hong Kong) to Simplified": "Trad. (Hong Kong) → Simpl.",
"Traditional (Taiwan) to Simplified, with phrases": "Trad. (Taiwan • frases) → Simpl.",
"Convert Simplified and Traditional Chinese": "Convertir chino Simpl./Trad.",
"Convert Mode": "Modo de conversión",
"Failed to auto-save book cover for lock screen: {{error}}": "Error al guardar automáticamente la portada del libro para la pantalla de bloqueo: {{error}}",
"Download from Cloud": "Descargar desde la nube",
"Upload to Cloud": "Subir a la nube",
"Clear Custom Fonts": "Limpiar fuentes personalizadas",
"Columns": "Columnas",
"OPDS Catalogs": "Catálogos OPDS",
"Adding LAN addresses is not supported in the web app version.": "La versión web no permite añadir direcciones LAN.",
"Invalid OPDS catalog. Please check the URL.": "Catálogo OPDS no válido. Por favor, comprueba la URL.",
"Browse and download books from online catalogs": "Explora y descarga libros de catálogos en línea",
"My Catalogs": "Mis catálogos",
"Add Catalog": "Añadir catálogo",
"No catalogs yet": "Aún no hay catálogos",
"Add your first OPDS catalog to start browsing books": "Añade tu primer catálogo OPDS para empezar a explorar libros.",
"Add Your First Catalog": "Añadir primer catálogo",
"Browse": "Explorar",
"Popular Catalogs": "Catálogos populares",
"Add": "Añadir",
"Add OPDS Catalog": "Añadir catálogo OPDS",
"Catalog Name": "Nombre del catálogo",
"My Calibre Library": "Mi biblioteca Calibre",
"OPDS URL": "URL OPDS",
"Username (optional)": "Usuario (opcional)",
"Password (optional)": "Contraseña (opcional)",
"Description (optional)": "Descripción (opcional)",
"A brief description of this catalog": "Una breve descripción de este catálogo",
"Validating...": "Validando...",
"View All": "Ver todo",
"Forward": "Adelante",
"Home": "Inicio",
"{{count}} items_one": "{{count}} elemento",
"{{count}} items_many": "{{count}} elementos",
"{{count}} items_other": "{{count}} elementos",
"Download completed": "Descarga completa",
"Download failed": "Error en la descarga",
"Open Access": "Acceso abierto",
"Borrow": "Prestar",
"Buy": "Comprar",
"Subscribe": "Suscribirse",
"Sample": "Muestra",
"Download": "Descargar",
"Open & Read": "Abrir y leer",
"Tags": "Etiquetas",
"Tag": "Etiqueta",
"First": "Primero",
"Previous": "Anterior",
"Next": "Siguiente",
"Last": "Último",
"Cannot Load Page": "No se puede cargar la página",
"An error occurred": "Ocurrió un error",
"Online Library": "Biblioteca en línea",
"URL must start with http:// or https://": "URL debe comenzar con http:// o https://",
"Title, Author, Tag, etc...": "Titulo, Autor, Etiqueta, etc...",
"Query": "Consulta",
"Subject": "Asunto",
"Enter {{terms}}": "Ingrese {{terms}}",
"No search results found": "No se encontraron resultados de búsqueda",
"Failed to load OPDS feed: {{status}} {{statusText}}": "Error al cargar el feed OPDS: {{status}} {{statusText}}",
"Search in {{title}}": "Buscar en {{title}}",
"Manage Storage": "Administrar almacenamiento",
"Failed to load files": "Error al cargar los archivos",
"Deleted {{count}} file(s)_one": "Se eliminó {{count}} archivo",
"Deleted {{count}} file(s)_many": "Se eliminaron {{count}} archivos",
"Deleted {{count}} file(s)_other": "Se eliminaron {{count}} archivos",
"Failed to delete {{count}} file(s)_one": "Error al eliminar {{count}} archivo",
"Failed to delete {{count}} file(s)_many": "Error al eliminar {{count}} archivos",
"Failed to delete {{count}} file(s)_other": "Error al eliminar {{count}} archivos",
"Failed to delete files": "Error al eliminar los archivos",
"Total Files": "Total de archivos",
"Total Size": "Tamaño total",
"Quota": "Cuota",
"Used": "Usado",
"Files": "Archivos",
"Search files...": "Buscar archivos...",
"Newest First": "Más nuevos primero",
"Oldest First": "Más antiguos primero",
"Largest First": "Más grandes primero",
"Smallest First": "Más pequeños primero",
"Name A-Z": "Nombre AZ",
"Name Z-A": "Nombre ZA",
"{{count}} selected_one": "{{count}} seleccionado",
"{{count}} selected_many": "{{count}} seleccionados",
"{{count}} selected_other": "{{count}} seleccionados",
"Delete Selected": "Eliminar seleccionados",
"Created": "Creado",
"No files found": "No se encontraron archivos",
"No files uploaded yet": "Aún no se han subido archivos",
"files": "archivos",
"Page {{current}} of {{total}}": "Página {{current}} de {{total}}",
"Are you sure to delete {{count}} selected file(s)?_one": "¿Seguro que deseas eliminar {{count}} archivo seleccionado?",
"Are you sure to delete {{count}} selected file(s)?_many": "¿Seguro que deseas eliminar {{count}} archivos seleccionados?",
"Are you sure to delete {{count}} selected file(s)?_other": "¿Seguro que deseas eliminar {{count}} archivos seleccionados?",
"Cloud Storage Usage": "Uso de almacenamiento en la nube",
"Rename Group": "Renombrar grupo",
"From Directory": "Desde el directorio",
"Successfully imported {{count}} book(s)_one": "Se importó correctamente 1 libro",
"Successfully imported {{count}} book(s)_many": "Se importaron correctamente {{count}} libros",
"Successfully imported {{count}} book(s)_other": "Se importaron correctamente {{count}} libros",
"Count": "Cuenta",
"Start Page": "Página de inicio",
"Search in OPDS Catalog...": "Buscar en el catálogo OPDS...",
"Please log in to use advanced TTS features.": "Por favor, inicie sesión para usar funciones avanzadas de TTS."
}
@@ -0,0 +1,769 @@
{
"(detected)": "(تشخیص‌داده‌شده)",
"About Readest": "درباره‌ی Readest",
"Add your notes here...": "یادداشت‌های خود را اینجا اضافه کنید...",
"Animation": "انیمیشن",
"Annotate": "حاشیه‌نویسی",
"Apply": "اِعمال",
"Auto Mode": "حالت خودکار",
"Behavior": "رفتار",
"Book": "کتاب",
"Bookmark": "نشانک",
"Cancel": "لغو",
"Chapter": "فصل",
"Cherry": "گیلاسی",
"Color": "رنگ",
"Confirm": "تأیید",
"Confirm Deletion": "تأیید حذف",
"Copied to notebook": "به دفترچه یادداشت کپی شد",
"Copy": "کپی",
"Dark Mode": "حالت تاریک",
"Default": "پیش‌فرض",
"Default Font": "فونت پیش‌فرض",
"Default Font Size": "اندازه فونت پیش‌فرض",
"Delete": "حذف",
"Delete Highlight": "حذف هایلایت",
"Dictionary": "فرهنگ لغت",
"Download Readest": "دانلود Readest",
"Edit": "ویرایش",
"Excerpts": "گزیده‌ها",
"Failed to import book(s): {{filenames}}": "وارد کردن کتاب(ها) «{{filenames}}» ناموفق بود.",
"Fast": "سریع",
"Font": "فونت",
"Font & Layout": "فونت و چیدمان",
"Font Face": "نمای فونت",
"Font Family": "خانواده‌ی فونت",
"Font Size": "اندازه فونت",
"Full Justification": "تراز کامل",
"Global Settings": "تنظیمات سراسری",
"Go Back": "بازگشت",
"Go Forward": "رفتن به جلو",
"Grass": "چمنی",
"Gray": "خاکستری",
"Gruvbox": "Gruvbox",
"Highlight": "هایلایت",
"Horizontal Direction": "جهت افقی",
"Hyphenation": "تقسیم‌بندی کلمات",
"Import Books": "وارد کردن کتاب‌ها",
"Layout": "چیدمان",
"Light Mode": "حالت روشن",
"Loading...": "در حال بارگیری...",
"Logged in": "وارد شده‌اید",
"Logged in as {{userDisplayName}}": "شما با نام «{{userDisplayName}}» وارد شده‌اید",
"Match Case": "تطابق حروف بزرگ/کوچک",
"Match Diacritics": "تطابق اعراب",
"Match Whole Words": "تطابق کل کلمات",
"Maximum Number of Columns": "حداکثر تعداد ستون‌ها",
"Minimum Font Size": "حداقل اندازه فونت",
"Monospace Font": "فونت تک‌فاصله (Monospace)",
"More Info": "اطلاعات بیشتر",
"Nord": "Nord",
"Notebook": "دفترچه یادداشت",
"Notes": "یادداشت‌ها",
"Open": "باز کردن",
"Original Text": "متن اصلی",
"Page": "صفحه",
"Paging Animation": "انیمیشن ورق زدن",
"Paragraph": "پاراگراف",
"Published": "منتشر شده",
"Publisher": "ناشر",
"Reading Progress Synced": "وضعیت مطالعه همگام‌سازی شد",
"Reload Page": "بارگذاری مجدد صفحه",
"Reveal in File Explorer": "نمایش در کاوشگر فایل",
"Reveal in Finder": "نمایش در Finder",
"Reveal in Folder": "نمایش در پوشه",
"Sans-Serif Font": "فونت Sans-Serif",
"Save": "ذخیره",
"Scrolled Mode": "حالت پیمایشی",
"Search": "جستجو",
"Search Books...": "جستجوی کتاب‌ها...",
"Search...": "جستجو...",
"Select Book": "انتخاب کتاب",
"Select Books": "انتخاب کتاب‌ها",
"Sepia": "سپیا",
"Serif Font": "فونت Serif",
"Show Book Details": "نمایش جزئیات کتاب",
"Sidebar": "نوار کناری",
"Sign In": "ورود",
"Sign Out": "خروج",
"Sky": "آسمانی",
"Slow": "آهسته",
"Solarized": "آفتابی",
"Speak": "خواندن",
"Subjects": "موضوعات",
"System Fonts": "فونت‌های سیستم",
"Theme Color": "رنگ تم",
"Theme Mode": "حالت تم",
"Translate": "ترجمه",
"Translated Text": "متن ترجمه‌شده",
"Unknown": "ناشناخته",
"Untitled": "بدون عنوان",
"Updated": "به‌روزرسانی شده",
"Version {{version}}": "نسخه‌ی {{version}}",
"Vertical Direction": "جهت عمودی",
"Welcome to your library. You can import your books here and read them anytime.": "به کتابخانه‌تان خوش آمدید. می‌توانید کتاب‌هایتان را اینجا وارد کنید و هر زمان خواستید آن‌ها را بخوانید.",
"Wikipedia": "ویکی‌پدیا",
"Writing Mode": "حالت نوشتن",
"Your Library": "کتابخانه‌ی شما",
"TTS not supported for PDF": "قابلیت تبدیل متن به گفتار برای PDF پشتیبانی نمی‌شود",
"Override Book Font": "جایگزینی فونت کتاب",
"Apply to All Books": "اِعمال برای همه‌ی کتاب‌ها",
"Apply to This Book": "اِعمال برای این کتاب",
"Unable to fetch the translation. Try again later.": "نمی‌توان ترجمه را دریافت کرد. بعداً دوباره تلاش کنید.",
"Check Update": "بررسی به‌روزرسانی",
"Already the latest version": "آخرین نسخه نصب است.",
"Book Details": "جزئیات کتاب",
"From Local File": "از فایل محلی",
"TOC": "فهرست مطالب",
"Table of Contents": "فهرست مطالب",
"Book uploaded: {{title}}": "کتاب «{{title}}» آپلود شد.",
"Failed to upload book: {{title}}": "آپلود کتاب «{{title}}» ناموفق بود.",
"Book downloaded: {{title}}": "کتاب «{{title}}» دانلود شد.",
"Failed to download book: {{title}}": "دانلود کتاب «{{title}}» ناموفق بود.",
"Upload Book": "بارگذاری کتاب",
"Auto Upload Books to Cloud": "بارگذاری خودکار کتاب‌ها در فضای ابری",
"Book deleted: {{title}}": "کتاب «{{title}}» حذف شد.",
"Failed to delete book: {{title}}": "حذف کتاب «{{title}}» ناموفق بود.",
"Check Updates on Start": "بررسی به‌روزرسانی‌ها هنگام شروع",
"Insufficient storage quota": "سهمیه‌ی ذخیره‌سازی کافی نیست",
"Font Weight": "وزن فونت",
"Line Spacing": "فاصله‌ی خطوط",
"Word Spacing": "فاصله‌ی کلمات",
"Letter Spacing": "فاصله‌ی حروف",
"Text Indent": "تورفتگی متن",
"Paragraph Margin": "حاشیه‌ی پاراگراف",
"Override Book Layout": "جایگزینی چیدمان کتاب",
"Untitled Group": "گروه بدون عنوان",
"Group Books": "گروه‌بندی کتاب‌ها",
"Remove From Group": "حذف از گروه",
"Create New Group": "ایجاد گروه جدید",
"Deselect Book": "لغو انتخاب کتاب",
"Download Book": "دانلود کتاب",
"Deselect Group": "لغو انتخاب گروه",
"Select Group": "انتخاب گروه",
"Keep Screen Awake": "روشن نگه داشتن صفحه",
"Email address": "آدرس ایمیل",
"Your Password": "رمز عبور شما",
"Your email address": "آدرس ایمیل شما",
"Your password": "رمز عبور شما",
"Sign in": "ورود",
"Signing in...": "در حال ورود...",
"Sign in with {{provider}}": "ورود با {{provider}}",
"Already have an account? Sign in": "اگر از قبل حساب دارید، وارد شوید",
"Create a Password": "ایجاد رمز عبور",
"Sign up": "ثبت‌نام",
"Signing up...": "در حال ثبت‌نام...",
"Don't have an account? Sign up": "حساب کاربری ندارید؟ ثبت‌نام کنید",
"Check your email for the confirmation link": "ایمیل خود را برای لینک تأیید بررسی کنید",
"Signing in ...": "در حال ورود ...",
"Send a magic link email": "ارسال لینک جادویی به ایمیل",
"Check your email for the magic link": "ایمیل خود را برای دریافت لینک جادویی بررسی کنید",
"Send reset password instructions": "ارسال دستورالعمل بازنشانی رمز عبور",
"Sending reset instructions ...": "در حال ارسال دستورالعمل بازنشانی...",
"Forgot your password?": "رمز عبور خود را فراموش کرده‌اید؟",
"Check your email for the password reset link": "ایمیل خود را برای لینک بازنشانی رمز عبور بررسی کنید",
"New Password": "رمز عبور جدید",
"Your new password": "رمز عبور جدید شما",
"Update password": "به‌روزرسانی رمز عبور",
"Updating password ...": "در حال به‌روزرسانی رمز عبور...",
"Your password has been updated": "رمز عبور شما به‌روزرسانی شد",
"Phone number": "شماره تلفن",
"Your phone number": "شماره تلفن شما",
"Token": "توکن",
"Your OTP token": "کد یک‌بارمصرف شما",
"Verify token": "تأیید کد",
"Sign in with Google": "ورود با گوگل",
"Sign in with Apple": "ورود با اپل",
"Sign in with GitHub": "ورود با گیت‌هاب",
"Account": "حساب",
"Failed to delete user. Please try again later.": "حذف کاربر ناموفق بود. لطفاً بعداً دوباره تلاش کنید.",
"Community Support": "پشتیبانی جامعه",
"Priority Support": "پشتیبانی اولویت‌دار",
"Loading profile...": "در حال بارگذاری پروفایل...",
"Delete Account": "حذف حساب",
"Delete Your Account?": "حذف حساب کاربری؟",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "این عمل غیرقابل بازگشت است. تمام داده‌های شما در فضای ابری به‌طور دائمی حذف خواهند شد.",
"Delete Permanently": "حذف دائمی",
"RTL Direction": "جهت راست‌به‌چپ",
"Maximum Column Height": "حداکثر ارتفاع ستون",
"Maximum Column Width": "حداکثر عرض ستون",
"Continuous Scroll": "پیمایش مداوم",
"Fullscreen": "تمام‌صفحه",
"No supported files found. Supported formats: {{formats}}": "فایل پشتیبانی‌شده‌ای یافت نشد. فرمت‌های قابل پشتیبانی: {{formats}}",
"Drop to Import Books": "برای وارد کردن کتاب‌ها، فایل را رها کنید",
"Custom": "سفارشی",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "تمام دنیا صحنه‌ای است،\nو همه‌ی مردان و زنان تنها بازیگرانی بیش نیستند؛\nآن‌ها ورود و خروج خود را دارند،\nو هر آدمی در طول زمان نقش‌های بسیاری ایفا می‌کند،\nاعمال او هفت دوره‌اند.\n\n— ویلیام شکسپیر",
"Custom Theme": "تم سفارشی",
"Theme Name": "نام تم",
"Text Color": "رنگ متن",
"Background Color": "رنگ پس‌زمینه",
"Preview": "پیش‌نمایش",
"Contrast": "کنتراست",
"Sunset": "غروب",
"Double Border": "حاشیه‌ی دوبل",
"Border Color": "رنگ حاشیه",
"Border Frame": "قاب حاشیه",
"Show Header": "نمایش سربرگ",
"Show Footer": "نمایش پاورقی",
"Small": "کوچک",
"Large": "بزرگ",
"Auto": "خودکار",
"Language": "زبان",
"No annotations to export": "هیچ حاشیه‌نویسی‌ای برای خروجی‌گرفتن وجود ندارد",
"Author": "نویسنده",
"Exported from Readest": "خروجی‌گرفته‌شده از Readest",
"Highlights & Annotations": "هایلایت‌ها و حاشیه‌نویسی‌ها",
"Note": "یادداشت",
"Copied to clipboard": "به کلیپ‌بورد کپی شد",
"Export Annotations": "خروجی‌گرفتن از حاشیه‌نویسی‌ها",
"Auto Import on File Open": "وارد کردن خودکار هنگام باز کردن فایل",
"LXGW WenKai GB Screen": "LXGW WenKai GB Screen",
"LXGW WenKai TC": "LXGW WenKai TC",
"No chapters detected": "هیچ فصلی یافت نشد",
"Failed to parse the EPUB file": "خطا در پردازش فایل EPUB",
"This book format is not supported": "این فرمت کتاب پشتیبانی نمی‌شود",
"Unable to fetch the translation. Please log in first and try again.": "نمی‌توان ترجمه را دریافت کرد. لطفاً ابتدا وارد شوید و دوباره تلاش کنید.",
"Group": "گروه",
"Always on Top": "همیشه در بالاترین لایه پنجره‌ها",
"No Timeout": "بدون محدودیت زمانی",
"{{value}} minute": "{{value}} دقیقه",
"{{value}} minutes": "{{value}} دقیقه",
"{{value}} hour": "{{value}} ساعت",
"{{value}} hours": "{{value}} ساعت",
"CJK Font": "فونت CJK",
"Clear Search": "پاک کردن جستجو",
"Header & Footer": "سربرگ و پاورقی",
"Apply also in Scrolled Mode": "همچنین در حالت پیمایشی اِعمال شود",
"A new version of Readest is available!": "نسخه‌ی جدیدی از Readest در دسترس است!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "نسخه‌ی {{newVersion}} Readest در دسترس است (نسخه‌ی نصب‌شده: {{currentVersion}}).",
"Download and install now?": "الان دانلود و نصب شود؟",
"Downloading {{downloaded}} of {{contentLength}}": "در حال دانلود {{downloaded}} از {{contentLength}}",
"Download finished": "دانلود تکمیل شد",
"DOWNLOAD & INSTALL": "دانلود و نصب",
"Changelog": "لیست تغییرات",
"Software Update": "به‌روزرسانی نرم‌افزار",
"Title": "عنوان",
"Date Read": "تاریخ مطالعه",
"Date Added": "تاریخ اضافه‌شدن",
"Format": "نوع فرمت",
"Ascending": "صعودی",
"Descending": "نزولی",
"Sort by...": "مرتب‌سازی بر اساس...",
"Added": "افزوده شده",
"GuanKiapTsingKhai-T": "GuanKiapTsingKhai-T",
"Description": "توضیحات",
"No description available": "هیچ توضیحی موجود نیست",
"List": "لیست",
"Grid": "جدول",
"(from 'As You Like It', Act II)": "(از «همان‌طور که دوست دارید»، پرده‌ی دوم)",
"Link Color": "رنگ لینک",
"Volume Keys for Page Flip": "استفاده از کلیدهای صدا برای ورق زدن صفحه",
"Screen": "صفحه",
"Orientation": "جهت",
"Portrait": "عمودی",
"Landscape": "افقی",
"Open Last Book on Start": "باز کردن آخرین کتاب هنگام شروع برنامه",
"Checking for updates...": "در حال بررسی به‌روزرسانی‌ها...",
"Error checking for updates": "خطا در بررسی به‌روزرسانی‌ها",
"Details": "جزئیات",
"File Size": "حجم فایل",
"Auto Detect": "تشخیص خودکار",
"Next Section": "بخش بعدی",
"Previous Section": "بخش قبلی",
"Next Page": "صفحه‌ی بعد",
"Previous Page": "صفحه‌ی قبل",
"Are you sure to delete {{count}} selected book(s)?_one": "آیا از حذف {{count}} کتاب انتخاب‌شده مطمئن هستید؟",
"Are you sure to delete {{count}} selected book(s)?_other": "آیا از حذف {{count}} کتاب انتخاب‌شده مطمئن هستید؟",
"Are you sure to delete the selected book?": "آیا از حذف کتاب انتخاب‌شده مطمئن هستید؟",
"Deselect": "لغو انتخاب",
"Select All": "انتخاب همه",
"No translation available.": "هیچ ترجمه‌ای در دسترس نیست.",
"Translated by {{provider}}.": "ترجمه‌شده توسط {{provider}}.",
"DeepL": "DeepL",
"Google Translate": "ترجمه‌ی Google",
"Azure Translator": "مترجم Azure",
"Invert Image In Dark Mode": "معکوس کردن تصویر در حالت تاریک",
"Help improve Readest": "کمک به بهبود Readest",
"Sharing anonymized statistics": "اشتراک‌گذاری آمار ناشناس",
"Interface Language": "زبان برنامه",
"Translation": "ترجمه",
"Enable Translation": "فعال کردن ترجمه",
"Translation Service": "سرویس ترجمه",
"Translate To": "ترجمه به",
"Disable Translation": "غیرفعال کردن ترجمه",
"Scroll": "پیمایش",
"Overlap Pixels": "پیکسل‌های هم‌پوشانی",
"System Language": "زبان سیستم",
"Security": "امنیت",
"Allow JavaScript": "اجازه‌ی اجرای JavaScript",
"Enable only if you trust the file.": "فقط در صورتی فعال کنید که به فایل اعتماد دارید.",
"Sort TOC by Page": "مرتب‌سازی فهرست مطالب بر اساس صفحه",
"Search in {{count}} Book(s)..._one": "جستجو در {{count}} کتاب...",
"Search in {{count}} Book(s)..._other": "جستجو در {{count}} کتاب...",
"No notes match your search": "هیچ یادداشتی با جستجوی شما مطابقت ندارد",
"Search notes and excerpts...": "جستجوی یادداشت‌ها و گزیده‌ها...",
"Sign in to Sync": "برای همگام‌سازی وارد شوید",
"Synced at {{time}}": "همگام‌سازی شده در {{time}}",
"Never synced": "هرگز همگام‌سازی نشده",
"Show Remaining Time": "نمایش زمان باقی‌مانده",
"{{time}} min left in chapter": "{{time}} دقیقه تا انتهای فصل",
"Override Book Color": "جایگزینی رنگ کتاب",
"Login Required": "نیازمند ورود",
"Quota Exceeded": "سهمیه به پایان رسیده است",
"{{percentage}}% of Daily Translation Characters Used.": "{{percentage}}% از کاراکترهای ترجمه‌ی روزانه استفاده شده است.",
"Translation Characters": "کاراکترهای ترجمه",
"{{engine}}: {{count}} voices_one": "{{engine}}: {{count}} صدا",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}} صدا",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "مشکلی پیش آمد. نگران نباشید—تیم ما مطلع شد و در حال رفع مشکل است.",
"Error Details:": "جزئیات خطا:",
"Try Again": "دوباره تلاش کنید",
"Need help?": "به کمک نیاز دارید؟",
"Contact Support": "تماس با پشتیبانی",
"Code Highlighting": "هایلایت کد",
"Enable Highlighting": "فعال کردن هایلایت",
"Code Language": "زبان کد",
"Top Margin (px)": "حاشیه‌ی بالا (px)",
"Bottom Margin (px)": "حاشیه‌ی پایین (px)",
"Right Margin (px)": "حاشیه‌ی راست (px)",
"Left Margin (px)": "حاشیه‌ی چپ (px)",
"Column Gap (%)": "فاصله‌ی ستون (%)",
"Always Show Status Bar": "نمایش همیشگی نوار وضعیت",
"Custom Content CSS": "CSS محتوای سفارشی",
"Enter CSS for book content styling...": "CSS برای استایل محتوای کتاب وارد کنید...",
"Custom Reader UI CSS": "CSS رابط خواننده‌ی سفارشی",
"Enter CSS for reader interface styling...": "CSS برای استایل رابط خواننده وارد کنید...",
"Crop": "برش",
"Book Covers": "جلد کتاب‌ها",
"Fit": "متناسب",
"Reset {{settings}}": "بازنشانی {{settings}}",
"Reset Settings": "بازنشانی تنظیمات",
"{{count}} pages left in chapter_one": "{{count}} صفحه تا انتهای فصل",
"{{count}} pages left in chapter_other": "{{count}} صفحه تا انتهای فصل",
"Show Remaining Pages": "نمایش صفحات باقی‌مانده",
"Source Han Serif CN VF": "Source Han Serif CN VF",
"Huiwen-mincho": "Huiwen-mincho",
"KingHwa_OldSong": "KingHwa_OldSong",
"Manage Subscription": "مدیریت اشتراک",
"Coming Soon": "به‌زودی",
"Upgrade to {{plan}}": "ارتقاء به {{plan}}",
"Upgrade to Plus or Pro": "ارتقاء به Plus یا Pro",
"Current Plan": "طرح فعلی",
"Plan Limits": "محدودیت‌های طرح",
"Processing your payment...": "در حال پردازش پرداخت شما...",
"Please wait while we confirm your subscription.": "لطفاً تا تأیید اشتراک صبور باشید.",
"Payment Processing": "پردازش پرداخت",
"Your payment is being processed. This usually takes a few moments.": "پرداخت شما در حال پردازش است. معمولاً چند لحظه طول می‌کشد.",
"Payment Failed": "پرداخت ناموفق",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "نتوانستیم اشتراک شما را پردازش کنیم. لطفاً دوباره تلاش کنید یا در صورت ادامه‌ی مشکل با پشتیبانی تماس بگیرید.",
"Back to Profile": "بازگشت به پروفایل",
"Subscription Successful!": "اشتراک با موفقیت فعال شد!",
"Thank you for your subscription! Your payment has been processed successfully.": "از اشتراک شما سپاس‌گزاریم! پرداخت شما با موفقیت انجام شد.",
"Email:": "ایمیل:",
"Plan:": "طرح:",
"Amount:": "مبلغ:",
"Go to Library": "رفتن به کتابخانه",
"Need help? Contact our support team at support@readest.com": "نیاز به کمک دارید؟ با تیم پشتیبانی ما به آدرس support@readest.com تماس بگیرید",
"Free Plan": "طرح رایگان",
"month": "ماه",
"AI Translations (per day)": "ترجمه‌های هوش مصنوعی (در روز)",
"Plus Plan": "طرح Plus",
"Includes All Free Plan Benefits": "شامل تمام امکانات طرح رایگان",
"Pro Plan": "طرح Pro",
"More AI Translations": "ترجمه‌های هوش مصنوعی بیشتر",
"Complete Your Subscription": "تکمیل اشتراک",
"{{percentage}}% of Cloud Sync Space Used.": "{{percentage}}% از فضای همگام‌سازی ابری استفاده شده است.",
"Cloud Sync Storage": "ذخیره‌سازی همگام‌سازی ابری",
"Parallel Read": "خواندن موازی",
"Disable": "غیرفعال",
"Enable": "فعال",
"Upgrade to Readest Premium": "ارتقاء به Readest Premium",
"Show Source Text": "نمایش متن منبع",
"Cross-Platform Sync": "همگام‌سازی چندپلتفرمی",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "کتابخانه، وضعیت مطالعه، هایلایت‌ها و یادداشت‌های خود را بین همه‌ی دستگاه‌ها به‌صورت یکپارچه همگام‌سازی کنید — دیگر هرگز محل مطالعه‌تان را از دست ندهید.",
"Customizable Reading": "تجربه‌ی مطالعه شخصی‌سازی‌شده",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "همه‌چیز را با فونت‌ها، چیدمان‌ها، تِم‌ها و تنظیمات نمایش پیشرفته قابل تغییر کنید تا تجربه‌ی خواندنِ ایده‌آل خود را بسازید.",
"AI Read Aloud": "خواندن صوتی با هوش مصنوعی",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "از خواندن بدون دخالت دست با صداهای طبیعیِ هوش مصنوعی لذت ببرید که کتاب‌هایتان را جان می‌بخشند.",
"AI Translations": "ترجمه‌های هوش مصنوعی",
"Connect with fellow readers and get help fast in our friendly community channels.": "با دیگر خوانندگان ارتباط برقرار کنید و از کانال‌های دوستانه‌ی جامعه‌ی ما کمک بگیرید.",
"Unlimited AI Read Aloud Hours": "ساعات نامحدود خواندن صوتی با هوش مصنوعی",
"Listen without limits—convert as much text as you like into immersive audio.": "بدون محدودیت گوش دهید — هر میزان متن را که بخواهید می‌توانید به صدایی جذاب تبدیل کنید.",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "با استفاده‌ی روزانه‌ی بیشتر و گزینه‌های پیشرفته، قابلیت‌های ترجمه را افزایش دهید.",
"DeepL Pro Access": "دسترسی به DeepL Pro",
"Enjoy faster responses and dedicated assistance whenever you need help.": "از پاسخ‌های سریع‌تر و کمک اختصاصی هر زمان که نیاز دارید برخوردار شوید.",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "سهمیه‌ی ترجمه‌ی روزانه به پایان رسیده است. برای ادامه‌ی استفاده از ترجمه‌های هوش مصنوعی، طرح خود را ارتقاء دهید.",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "هر متنی را فوراً با قدرت Google، Azure یا DeepL ترجمه کنید — محتوای هر زبانی را بفهمید.",
"Includes All Plus Plan Benefits": "شامل تمام مزایای طرح Plus",
"Early Feature Access": "دسترسی زودهنگام به ویژگی‌ها",
"Be the first to explore new features, updates, and innovations before anyone else.": "اولین نفری باشید که ویژگی‌ها، به‌روزرسانی‌ها و نوآوری‌های جدید را تجربه می‌کنید.",
"Advanced AI Tools": "ابزارهای هوش مصنوعی پیشرفته",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "از ابزارهای قدرتمند هوش مصنوعی برای خواندن هوشمندتر، ترجمه و کشف محتوا بهره ببرید.",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "تا روزانه ۱۰۰٬۰۰۰ کاراکتر را با دقیق‌ترین ابزار ترجمه، ترجمه کنید.",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "تا روزانه ۵۰۰٬۰۰۰ کاراکتر را با دقیق‌ترین ابزار ترجمه، ترجمه کنید.",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "مجموعه‌ی خواندن خود را تا ۵ گیگابایت به‌صورت امن در فضای ابری ذخیره و دسترسی داشته باشید.",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "کل مجموعه‌ی خواندن خود را تا ۲۰ گیگابایت به‌صورت ایمن در فضای ابری ذخیره و دسترسی داشته باشید.",
"Deleted cloud backup of the book: {{title}}": "نسخه‌ی پشتیبان ابری کتاب «{{title}}» حذف شد.",
"Are you sure to delete the cloud backup of the selected book?": "آیا از حذف نسخه‌ی پشتیبان ابری کتاب انتخاب‌شده مطمئن هستید؟",
"What's New in Readest": "چه چیز تازه‌ای در Readest است",
"Enter book title": "عنوان کتاب را وارد کنید",
"Subtitle": "زیرعنوان",
"Enter book subtitle": "زیرعنوان کتاب را وارد کنید",
"Enter author name": "نام نویسنده را وارد کنید",
"Series": "سری",
"Enter series name": "نام سری را وارد کنید",
"Series Index": "شماره‌ی سری",
"Enter series index": "شماره‌ی سری را وارد کنید",
"Total in Series": "تعداد کل در سری",
"Enter total books in series": "تعداد کل کتاب‌ها در سری را وارد کنید",
"Enter publisher": "ناشر را وارد کنید",
"Publication Date": "تاریخ انتشار",
"Identifier": "شناسه",
"Enter book description": "توضیحات کتاب را وارد کنید",
"Change cover image": "تغییر تصویر جلد",
"Replace": "جایگزین",
"Unlock cover": "باز کردن قفل جلد",
"Lock cover": "قفل کردن جلد",
"Auto-Retrieve Metadata": "دریافت خودکار فراداده",
"Auto-Retrieve": "دریافت خودکار",
"Unlock all fields": "باز کردن قفل همه‌ی فیلدها",
"Unlock All": "باز کردن قفل همه",
"Lock all fields": "قفل کردن همه‌ی فیلدها",
"Lock All": "قفل کردن همه",
"Reset": "بازنشانی",
"Edit Metadata": "ویرایش فراداده",
"Locked": "قفل شده",
"Select Metadata Source": "انتخاب منبع فراداده",
"Keep manual input": "حفظ ورودی دستی",
"Google Books": "کتاب‌های گوگل",
"Open Library": "Open Library",
"Fiction, Science, History": "داستان، علم، تاریخ",
"Open Book in New Window": "باز کردن کتاب در پنجره‌ی جدید",
"Voices for {{lang}}": "صداها برای {{lang}}",
"Yandex Translate": "ترجمه‌ی Yandex",
"YYYY or YYYY-MM-DD": "YYYY یا YYYY-MM-DD",
"Restore Purchase": "بازیابی خرید",
"No purchases found to restore.": "هیچ خریدی برای بازیابی یافت نشد.",
"Failed to restore purchases.": "بازیابی خریدها ناموفق بود.",
"Failed to manage subscription.": "مدیریت اشتراک ناموفق بود.",
"Failed to load subscription plans.": "بارگذاری طرح‌های اشتراک ناموفق بود.",
"year": "سال",
"Failed to create checkout session": "ایجاد صفحه‌ی پرداخت ناموفق بود",
"Storage": "ذخیره‌سازی",
"Terms of Service": "شرایط و قوانین",
"Privacy Policy": "سیاست حفظ حریم خصوصی",
"Disable Double Click": "غیرفعال کردن کلیک دوبل",
"TTS not supported for this document": "قابلیت تبدیل متن به گفتار برای این سند پشتیبانی نمی‌شود",
"Reset Password": "بازنشانی رمز عبور",
"Show Reading Progress": "نمایش وضعیت مطالعه",
"Reading Progress Style": "سبک نمایش وضعیت مطالعه",
"Page Number": "شماره صفحه",
"Percentage": "درصد",
"Deleted local copy of the book: {{title}}": "نسخه‌ی محلی کتاب «{{title}}» حذف شد.",
"Failed to delete cloud backup of the book: {{title}}": "حذف نسخه‌ی پشتیبان ابری کتاب «{{title}}» ناموفق بود.",
"Failed to delete local copy of the book: {{title}}": "حذف نسخه‌ی محلی کتاب «{{title}}» ناموفق بود.",
"Are you sure to delete the local copy of the selected book?": "آیا از حذف نسخه‌ی محلی کتاب انتخاب‌شده مطمئن هستید؟",
"Remove from Cloud & Device": "حذف از فضای ابری و دستگاه",
"Remove from Cloud Only": "حذف فقط از فضای ابری",
"Remove from Device Only": "حذف فقط از دستگاه",
"Disconnected": "قطع اتصال",
"KOReader Sync Settings": "تنظیمات همگام‌سازی KOReader",
"Sync Strategy": "استراتژی همگام‌سازی",
"Ask on conflict": "پرسش هنگام تداخل",
"Always use latest": "همیشه از آخرین استفاده شود",
"Send changes only": "فقط ارسال تغییرات",
"Receive changes only": "فقط دریافت تغییرات",
"Checksum Method": "روش Checksum",
"File Content (recommended)": "محتوای فایل (توصیه‌شده)",
"File Name": "نام فایل",
"Device Name": "نام دستگاه",
"Connect to your KOReader Sync server.": "به سرور همگام‌سازی KOReader خود متصل شوید.",
"Server URL": "آدرس سرور",
"Username": "نام کاربری",
"Your Username": "نام کاربری شما",
"Password": "رمز عبور",
"Connect": "اتصال",
"KOReader Sync": "همگام‌سازی KOReader",
"Sync Conflict": "تداخل همگام‌سازی",
"Sync reading progress from \"{{deviceName}}\"?": "همگام‌سازی وضعیت مطالعه از «{{deviceName}}»؟",
"another device": "دستگاه دیگر",
"Local Progress": "وضعیت مطالعه محلی",
"Remote Progress": "وضعیت مطالعه از راه دور",
"Page {{page}} of {{total}} ({{percentage}}%)": "صفحه‌ی {{page}} از {{total}} ({{percentage}}%)",
"Current position": "موقعیت فعلی",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "تقریباً صفحه‌ی {{page}} از {{total}} ({{percentage}}%)",
"Approximately {{percentage}}%": "تقریباً {{percentage}}%",
"Failed to connect": "اتصال برقرار نشد",
"Sync Server Connected": "سرور همگام‌سازی متصل شد",
"Sync as {{userDisplayName}}": "همگام‌سازی به‌عنوان {{userDisplayName}}",
"Custom Fonts": "فونت‌های سفارشی",
"Cancel Delete": "لغو حذف",
"Import Font": "وارد کردن فونت",
"Delete Font": "حذف فونت",
"Tips": "نکات",
"Custom fonts can be selected from the Font Face menu": "فونت‌های سفارشی را می‌توان از منوی انتخاب فونت برگزید",
"Manage Custom Fonts": "مدیریت فونت‌های سفارشی",
"Select Files": "انتخاب فایل‌ها",
"Select Image": "انتخاب تصویر",
"Select Video": "انتخاب ویدیو",
"Select Audio": "انتخاب صوت",
"Select Fonts": "انتخاب فونت‌ها",
"Supported font formats: .ttf, .otf, .woff, .woff2": "فرمت‌های فونت پشتیبانی‌شده: .ttf, .otf, .woff, .woff2",
"Push Progress": "ارسال وضعیت مطالعه",
"Pull Progress": "دریافت وضعیت مطالعه",
"Previous Paragraph": "پاراگراف قبلی",
"Previous Sentence": "جمله‌ی قبلی",
"Pause": "توقف",
"Play": "پخش",
"Next Sentence": "جمله‌ی بعدی",
"Next Paragraph": "پاراگراف بعدی",
"Separate Cover Page": "جدا کردن صفحه‌ی جلد",
"Resize Notebook": "تغییر اندازه دفترچه یادداشت",
"Resize Sidebar": "تغییر اندازه نوار کناری",
"Get Help from the Readest Community": "دریافت کمک از جامعه‌ی Readest",
"Remove cover image": "حذف تصویر جلد",
"Bookshelf": "قفسه‌ی کتاب",
"View Menu": "نمایش منو",
"Settings Menu": "منوی تنظیمات",
"View account details and quota": "مشاهده‌ی جزئیات حساب و وضعیت سهمیه",
"Library Header": "سربرگ کتابخانه",
"Book Content": "محتوای کتاب",
"Footer Bar": "نوار پاورقی",
"Header Bar": "نوار سربرگ",
"View Options": "گزینه‌های نمایش",
"Book Menu": "منوی کتاب",
"Search Options": "گزینه‌های جستجو",
"Close": "بستن",
"Delete Book Options": "گزینه‌های حذف کتاب",
"ON": "روشن",
"OFF": "خاموش",
"Reading Progress": "وضعیت مطالعه",
"Page Margin": "حاشیه صفحه",
"Remove Bookmark": "حذف نشانک",
"Add Bookmark": "افزودن نشانک",
"Books Content": "محتوای کتاب‌ها",
"Jump to Location": "پرش به مکان",
"Unpin Notebook": "برداشتن سنجاق دفترچه یادداشت",
"Pin Notebook": "سنجاق کردن دفترچه یادداشت",
"Hide Search Bar": "پنهان کردن نوار جستجو",
"Show Search Bar": "نمایش نوار جستجو",
"On {{current}} of {{total}} page": "در صفحه‌ی {{current}} از {{total}}",
"Section Title": "عنوان بخش",
"Decrease": "کاهش",
"Increase": "افزایش",
"Settings Panels": "پنل‌های تنظیمات",
"Settings": "تنظیمات",
"Unpin Sidebar": "برداشتن سنجاق نوار کناری",
"Pin Sidebar": "سنجاق کردن نوار کناری",
"Toggle Sidebar": "تغییر وضعیت نوار کناری",
"Toggle Translation": "تغییر وضعیت ترجمه",
"Translation Disabled": "ترجمه غیرفعال است",
"Minimize": "کوچک کردن",
"Maximize or Restore": "بزرگ کردن یا بازگردانی",
"Exit Parallel Read": "خروج از خواندن موازی",
"Enter Parallel Read": "ورود به خواندن موازی",
"Zoom Level": "اندازه بزرگ‌نمایی",
"Zoom Out": "کوچک‌نمایی",
"Reset Zoom": "بازنشانی بزرگ‌نمایی",
"Zoom In": "بزرگ‌نمایی",
"Zoom Mode": "حالت بزرگ‌نمایی",
"Single Page": "تک‌صفحه‌ای",
"Auto Spread": "گسترش خودکار",
"Fit Page": "تناسب صفحه",
"Fit Width": "تناسب با عرض",
"Failed to select directory": "انتخاب مسیر ناموفق بود",
"The new data directory must be different from the current one.": "مسیر داده‌ی جدید باید با مسیر فعلی متفاوت باشد.",
"Migration failed: {{error}}": "انتقال ناموفق بود: {{error}}",
"Change Data Location": "تغییر محل داده‌ها",
"Current Data Location": "محل فعلی داده‌ها",
"Total size: {{size}}": "حجم کل: {{size}}",
"Calculating file info...": "در حال محاسبه‌ی اطلاعات فایل...",
"New Data Location": "محل جدید داده‌ها",
"Choose Different Folder": "انتخاب پوشه‌ی دیگر",
"Choose New Folder": "انتخاب پوشه‌ی جدید",
"Migrating data...": "در حال انتقال داده‌ها...",
"Copying: {{file}}": "در حال کپی‌کردن: {{file}}",
"{{current}} of {{total}} files": "{{current}} از {{total}} فایل‌ها",
"Migration completed successfully!": "انتقال با موفقیت انجام شد!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "داده‌های شما به محل جدید منتقل شدند. لطفاً برای تکمیل فرایند، برنامه را مجدداً راه‌اندازی کنید.",
"Migration failed": "انتقال ناموفق بود",
"Important Notice": "اطلاعیه‌ی مهم",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "این کار، همه‌ی داده‌های برنامه را به محل جدید منتقل خواهد کرد. مطمئن شوید که در مقصد، فضای کافی وجود دارد.",
"Restart App": "راه‌اندازی مجدد برنامه",
"Start Migration": "شروع انتقال",
"Advanced Settings": "تنظیمات پیشرفته",
"File count: {{size}}": "تعداد فایل‌ها: {{size}}",
"Background Read Aloud": "خواندن با صدای بلند در پس‌زمینه",
"Ready to read aloud": "آماده برای خواندن با صدای بلند",
"Read Aloud": "خواندن با صدای بلند",
"Screen Brightness": "روشنایی صفحه",
"Background Image": "تصویر پس‌زمینه",
"Import Image": "وارد کردن تصویر",
"Opacity": "شفافیت",
"Size": "اندازه",
"Cover": "جلد",
"Contain": "شامل",
"{{number}} pages left in chapter": "{{number}} صفحه تا انتهای فصل",
"Device": "دستگاه",
"E-Ink Mode": "حالت E-Ink",
"Highlight Colors": "رنگ‌های هایلایت",
"Auto Screen Brightness": "روشنایی خودکار صفحه",
"Pagination": "صفحه‌بندی",
"Disable Double Tap": "غیرفعال کردن کلیک دوبل",
"Tap to Paginate": "ضربه برای صفحه‌بندی",
"Click to Paginate": "کلیک برای صفحه‌بندی",
"Tap Both Sides": "ضربه هر دو طرف",
"Click Both Sides": "کلیک هر دو طرف",
"Swap Tap Sides": "جابجایی طرف‌های ضربه",
"Swap Click Sides": "جابجایی طرف‌های کلیک",
"Source and Translated": "منبع و ترجمه شده",
"Translated Only": "فقط ترجمه شده",
"Source Only": "فقط منبع",
"TTS Text": "متن TTS",
"The book file is corrupted": "فایل کتاب خراب است",
"The book file is empty": "فایل کتاب خالی است",
"Failed to open the book file": "خطا در باز کردن فایل کتاب",
"On-Demand Purchase": "خرید سفارشی",
"Full Customization": "سفارشی‌سازی کامل",
"Lifetime Plan": "طرح مادام‌العمر",
"One-Time Payment": "پرداخت یک‌باره",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "یک پرداخت یک‌باره انجام دهید تا به‌صورت مادام‌العمر به ویژگی‌های خاص در تمام دستگاه‌ها دسترسی پیدا کنید. فقط زمانی که به ویژگی‌ها یا خدمات خاصی نیاز دارید، آن‌ها را خریداری کنید.",
"Expand Cloud Sync Storage": "گسترش فضای همگام‌سازی ابری",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "فضای ابری خود را به‌صورت دائمی با یک خرید یک‌باره گسترش دهید. هر خرید اضافی فضای بیشتری اضافه می‌کند.",
"Unlock All Customization Options": "باز کردن تمام گزینه‌های سفارشی‌سازی",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "باز کردن تم‌ها، فونت‌ها، گزینه‌های چیدمان و خواندن با صدای بلند، مترجم‌ها، خدمات ذخیره‌سازی ابری اضافی.",
"Purchase Successful!": "خرید با موفقیت انجام شد!",
"lifetime": "مادام‌العمر",
"Thank you for your purchase! Your payment has been processed successfully.": "از خرید شما متشکریم! پرداخت شما با موفقیت انجام شد.",
"Order ID:": "شناسه سفارش:",
"TTS Highlighting": "هایلایت TTS",
"Style": "سبک",
"Underline": "خط زیرین",
"Strikethrough": "خط‌خورده",
"Squiggly": "خط‌موج‌دار",
"Outline": "خط‌کشی",
"Save Current Color": "ذخیره رنگ فعلی",
"Quick Colors": "رنگ‌های سریع",
"Highlighter": "ماژیک هایلایت",
"Save Book Cover": "ذخیره جلد کتاب",
"Auto-save last book cover": "ذخیره خودکار آخرین جلد کتاب",
"Back": "بازگشت",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "ایمیل تأیید ارسال شد! لطفاً ایمیل قدیمی و جدید خود را بررسی کنید تا تغییر را تأیید نمایید.",
"Failed to update email": "به‌روزرسانی ایمیل ناموفق بود",
"New Email": "ایمیل جدید",
"Your new email": "ایمیل جدید شما",
"Updating email ...": "در حال به‌روزرسانی ایمیل ...",
"Update email": "به‌روزرسانی ایمیل",
"Current email": "ایمیل فعلی",
"Update Email": "به‌روزرسانی ایمیل",
"All": "همه",
"Unable to open book": "قادر به باز کردن کتاب نیست",
"Punctuation": "علامت نگارشی",
"Replace Quotation Marks": "جایگزینی علامت نقل قول",
"Enabled only in vertical layout.": "فقط در طرح عمودی فعال است.",
"No Conversion": "بدون تبدیل",
"Simplified to Traditional": "ساده → سنتی",
"Traditional to Simplified": "سنتی → ساده",
"Simplified to Traditional (Taiwan)": "ساده → سنتی (تایوان)",
"Simplified to Traditional (Hong Kong)": "ساده → سنتی (هنگ‌کنگ)",
"Simplified to Traditional (Taiwan), with phrases": "ساده → سنتی (تایوان • عبارات)",
"Traditional (Taiwan) to Simplified": "سنتی (تایوان) → ساده",
"Traditional (Hong Kong) to Simplified": "سنتی (هنگ‌کنگ) → ساده",
"Traditional (Taiwan) to Simplified, with phrases": "سنتی (تایوان • عبارات) → ساده",
"Convert Simplified and Traditional Chinese": "تبدیل چینی ساده/سنتی",
"Convert Mode": "حالت تبدیل",
"Failed to auto-save book cover for lock screen: {{error}}": "ذخیره‌ی خودکار جلد کتاب برای صفحه‌ی قفل ناموفق بود: {{error}}",
"Download from Cloud": "دانلود از فضای ابری",
"Upload to Cloud": "آپلود به فضای ابری",
"Clear Custom Fonts": "پاک‌کردن فونت‌های سفارشی",
"Columns": "ستون‌ها",
"OPDS Catalogs": "فهرست‌های OPDS",
"Adding LAN addresses is not supported in the web app version.": "افزودن آدرس‌های LAN در نسخه وب پشتیبانی نمی‌شود.",
"Invalid OPDS catalog. Please check the URL.": "فهرست OPDS نامعتبر است. لطفاً آدرس را بررسی کنید.",
"Browse and download books from online catalogs": "مرور و دانلود کتاب‌ها از فهرست‌های آنلاین",
"My Catalogs": "فهرست‌های من",
"Add Catalog": "افزودن فهرست",
"No catalogs yet": "هنوز فهرستی وجود ندارد",
"Add your first OPDS catalog to start browsing books": "برای شروع مرور کتاب‌ها، اولین فهرست OPDS خود را اضافه کنید.",
"Add Your First Catalog": "افزودن اولین فهرست",
"Browse": "مرور",
"Popular Catalogs": "فهرست‌های محبوب",
"Add": "افزودن",
"Add OPDS Catalog": "افزودن فهرست OPDS",
"Catalog Name": "نام فهرست",
"My Calibre Library": "کتابخانه Calibre من",
"OPDS URL": "آدرس OPDS",
"Username (optional)": "نام کاربری (اختیاری)",
"Password (optional)": "رمز عبور (اختیاری)",
"Description (optional)": "توضیحات (اختیاری)",
"A brief description of this catalog": "توضیح کوتاهی درباره این فهرست",
"Validating...": "در حال بررسی...",
"View All": "مشاهده همه",
"Forward": "بعدی",
"Home": "خانه",
"{{count}} items_one": "{{count}} مورد",
"{{count}} items_other": "{{count}} مورد",
"Download completed": "دانلود کامل شد",
"Download failed": "دانلود ناموفق بود",
"Open Access": "دسترسی آزاد",
"Borrow": "امانت گرفتن",
"Buy": "خرید",
"Subscribe": "اشتراک",
"Sample": "نمونه",
"Download": "دانلود",
"Open & Read": "باز کردن و خواندن",
"Tags": "برچسب‌ها",
"Tag": "برچسب",
"First": "اولین",
"Previous": "قبلی",
"Next": "بعدی",
"Last": "آخرین",
"Cannot Load Page": "بارگذاری صفحه امکان‌پذیر نیست",
"An error occurred": "خطایی رخ داد",
"Online Library": "کتابخانه آنلاین",
"URL must start with http:// or https://": "آدرس باید با http:// یا https:// شروع شود",
"Title, Author, Tag, etc...": "عنوان، نویسنده، برچسب و غیره...",
"Query": "پرس‌وجو",
"Subject": "موضوع",
"Enter {{terms}}": "وارد کردن {{terms}}",
"No search results found": "هیچ نتیجه‌ای یافت نشد",
"Failed to load OPDS feed: {{status}} {{statusText}}": "بارگذاری فید OPDS ناموفق بود: {{status}} {{statusText}}",
"Search in {{title}}": "جستجو در {{title}}",
"Manage Storage": "مدیریت فضای ذخیره‌سازی",
"Failed to load files": "بارگیری فایل‌ها ناموفق بود",
"Deleted {{count}} file(s)_one": "{{count}} فایل حذف شد",
"Deleted {{count}} file(s)_other": "{{count}} فایل حذف شدند",
"Failed to delete {{count}} file(s)_one": "حذف {{count}} فایل ناموفق بود",
"Failed to delete {{count}} file(s)_other": "حذف {{count}} فایل ناموفق بود",
"Failed to delete files": "حذف فایل‌ها ناموفق بود",
"Total Files": "کل فایل‌ها",
"Total Size": "اندازه کل",
"Quota": "سهمیه",
"Used": "استفاده‌شده",
"Files": "فایل‌ها",
"Search files...": "جستجوی فایل‌ها...",
"Newest First": "جدیدترین‌ها",
"Oldest First": "قدیمی‌ترین‌ها",
"Largest First": "بزرگ‌ترین‌ها",
"Smallest First": "کوچک‌ترین‌ها",
"Name A-Z": "نام AZ",
"Name Z-A": "نام ZA",
"{{count}} selected_one": "{{count}} مورد انتخاب شد",
"{{count}} selected_other": "{{count}} مورد انتخاب شدند",
"Delete Selected": "حذف موارد انتخاب‌شده",
"Created": "ایجاد شده",
"No files found": "هیچ فایلی پیدا نشد",
"No files uploaded yet": "هنوز فایلی بارگذاری نشده است",
"files": "فایل‌ها",
"Page {{current}} of {{total}}": "صفحه {{current}} از {{total}}",
"Are you sure to delete {{count}} selected file(s)?_one": "آیا از حذف {{count}} فایل انتخاب‌شده مطمئن هستید؟",
"Are you sure to delete {{count}} selected file(s)?_other": "آیا از حذف {{count}} فایل انتخاب‌شده مطمئن هستید؟",
"Cloud Storage Usage": "استفاده از فضای ذخیره‌سازی ابری",
"Rename Group": "تغییر نام گروه",
"From Directory": "از مسیر",
"Successfully imported {{count}} book(s)_one": "با موفقیت 1 کتاب وارد شد",
"Successfully imported {{count}} book(s)_other": "با موفقیت {{count}} کتاب وارد شد",
"Count": "تعداد",
"Start Page": "صفحه شروع",
"Search in OPDS Catalog...": "جستجو در فهرست OPDS...",
"Please log in to use advanced TTS features.": "لطفاً برای استفاده از ویژگی‌های پیشرفته TTS وارد شوید."
}
@@ -8,7 +8,6 @@
"Auto Mode": "Mode automatique",
"Behavior": "Comportement",
"Book": "Livre",
"Book Cover": "Couverture du livre",
"Bookmark": "Signet",
"Cancel": "Annuler",
"Chapter": "Chapitre",
@@ -18,7 +17,6 @@
"Confirm Deletion": "Confirmer la suppression",
"Copied to notebook": "Copié dans le carnet de notes",
"Copy": "Copier",
"Custom CSS": "CSS personnalisé",
"Dark Mode": "Mode sombre",
"Default": "Par défaut",
"Default Font": "Police par défaut",
@@ -28,7 +26,6 @@
"Dictionary": "Dictionnaire",
"Download Readest": "Télécharger Readest",
"Edit": "Modifier",
"Enter your custom CSS here...": "Saisissez votre CSS personnalisé ici...",
"Excerpts": "Extraits",
"Failed to import book(s): {{filenames}}": "Échec de l'importation du/des livre(s) : {{filenames}}",
"Fast": "Rapide",
@@ -48,7 +45,6 @@
"Horizontal Direction": "Direction horizontale",
"Hyphenation": "Césure",
"Import Books": "Importer des livres",
"Language:": "Langue :",
"Layout": "Mise en page",
"Light Mode": "Mode clair",
"Loading...": "Chargement...",
@@ -70,8 +66,8 @@
"Paging Animation": "Animation de page",
"Paragraph": "Paragraphe",
"Parallel Read": "Lecture parallèle",
"Published:": "Publié :",
"Publisher:": "Éditeur :",
"Published": "Publié",
"Publisher": "Éditeur",
"Reading Progress Synced": "Progression de lecture synchronisée",
"Reload Page": "Recharger la page",
"Reveal in File Explorer": "Afficher dans l'explorateur de fichiers",
@@ -85,7 +81,6 @@
"Search...": "Rechercher...",
"Select Book": "Sélectionner un livre",
"Select Books": "Sélectionner des livres",
"Select Multiple Books": "Sélectionner plusieurs livres",
"Sepia": "Sépia",
"Serif Font": "Police avec empattement",
"Show Book Details": "Afficher les détails du livre",
@@ -96,16 +91,15 @@
"Slow": "Lent",
"Solarized": "Solarisé",
"Speak": "Lire",
"Subjects:": "Sujets :",
"Subjects": "Sujets",
"System Fonts": "Polices système",
"TTS not supported in this device": "La synthèse vocale n'est pas prise en charge sur cet appareil",
"Theme Color": "Couleur du thème",
"Theme Mode": "Mode du thème",
"Translate": "Traduire",
"Translated Text": "Texte traduit",
"Unknown": "Inconnu",
"Untitled": "Sans titre",
"Updated:": "Mis à jour :",
"Updated": "Mis à jour",
"Version {{version}}": "Version {{version}}",
"Vertical Direction": "Direction verticale",
"Welcome to your library. You can import your books here and read them anytime.": "Bienvenue dans votre bibliothèque. Vous pouvez importer vos livres ici et les lire à tout moment.",
@@ -114,8 +108,6 @@
"Your Library": "Votre bibliothèque",
"TTS not supported for PDF": "La synthèse vocale n'est pas prise en charge pour les fichiers PDF",
"Override Book Font": "Remplacer la police du livre",
"Vertical Margins (px)": "Marges verticales (px)",
"Horizontal Margins (%)": "Marges horizontales (%)",
"Apply to All Books": "Appliquer à tous les livres",
"Apply to This Book": "Appliquer à ce livre",
"Unable to fetch the translation. Try again later.": "Impossible de récupérer la traduction. Réessayez plus tard.",
@@ -124,14 +116,13 @@
"Book Details": "Détails du livre",
"From Local File": "Depuis un fichier local",
"TOC": "Table des matières",
"Table of Contents": "Table des matières",
"Book uploaded: {{title}}": "Livre téléchargé : {{title}}",
"Failed to upload book: {{title}}": "Échec du téléchargement du livre : {{title}}",
"Book downloaded: {{title}}": "Livre téléchargé : {{title}}",
"Failed to download book: {{title}}": "Échec du téléchargement du livre : {{title}}",
"Upload Book": "Télécharger un livre",
"Auto Upload Books to Cloud": "Télécharger automatiquement les livres dans le cloud",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% de l'espace de stockage dans le cloud utilisé.",
"Storage": "Stockage",
"Book deleted: {{title}}": "Livre supprimé : {{title}}",
"Failed to delete book: {{title}}": "Échec de la suppression du livre : {{title}}",
"Check Updates on Start": "Vérifier les mises à jour au démarrage",
@@ -163,7 +154,6 @@
"Create a Password": "Créer un mot de passe",
"Sign up": "S'inscrire",
"Signing up...": "Inscription en cours...",
"Dont have an account? Sign up": "Vous n'avez pas de compte ? Inscrivez-vous",
"Check your email for the confirmation link": "Vérifiez votre e-mail pour le lien de confirmation",
"Signing in ...": "Connexion en cours ...",
"Send a magic link email": "Envoyer un e-mail avec un lien magique",
@@ -186,37 +176,14 @@
"Sign in with Apple": "Se connecter avec Apple",
"Sign in with GitHub": "Se connecter avec GitHub",
"Account": "Compte",
"Cloud Storage": "Stockage cloud",
"Failed to delete user. Please try again later.": "Échec de la suppression de l'utilisateur. Veuillez réessayer plus tard.",
"Unlimited Offline/Online Reading": "Lecture illimitée hors ligne/en ligne",
"Unlimited Cloud Sync Devices": "Synchronisation cloud sur appareils illimitée",
"Essential Text-to-Speech Voices": "Voix de synthèse vocale essentielles",
"DeepL Free Access": "Accès gratuit à DeepL",
"Community Support": "Support communautaire",
"500 MB Cloud Sync Space": "500 Mo d'espace de synchronisation cloud",
"Includes All Free Tier Benefits": "Inclut tous les avantages du niveau gratuit",
"AI Summaries": "Résumés par IA",
"AI Translations": "Traductions par IA",
"Priority Support": "Support prioritaire",
"DeepL Pro Access": "Accès à DeepL Pro",
"Expanded Text-to-Speech Voices": "Voix de synthèse vocale étendues",
"2000 MB Cloud Sync Space": "2000 Mo d'espace de synchronisation cloud",
"Includes All Plus Tier Benefits": "Inclut tous les avantages du niveau Plus",
"Unlimited AI Summaries": "Résumés par IA illimités",
"Unlimited AI Translations": "Traductions par IA illimitées",
"Unlimited DeepL Pro Access": "Accès illimité à DeepL Pro",
"Advanced AI Tools": "Outils IA avancés",
"Early Feature Access": "Accès anticipé aux fonctionnalités",
"10 GB Cloud Sync Space": "10 Go d'espace de synchronisation cloud",
"Loading profile...": "Chargement du profil...",
"Features": "Fonctionnalités",
"Delete Account": "Supprimer le compte",
"Delete Your Account?": "Supprimer votre compte ?",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "Cette action est irréversible. Toutes vos données dans le cloud seront définitivement supprimées.",
"Delete Permanently": "Supprimer définitivement",
"Free Tier": "Niveau gratuit",
"Plus Tier": "Niveau Plus",
"Pro Tier": "Niveau Pro",
"RTL Direction": "Direction RTL",
"Maximum Column Height": "Hauteur maximale de colonne",
"Maximum Column Width": "Largeur maximale de colonne",
@@ -225,7 +192,7 @@
"No supported files found. Supported formats: {{formats}}": "Aucun fichier pris en charge trouvé. Formats pris en charge : {{formats}}",
"Drop to Import Books": "Déposez pour importer des livres",
"Custom": "Personnalisé",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n—William Shakespeare": "Le monde entier est un théâtre,\nEt tous les hommes et les femmes ne sont que des acteurs ;\nIls ont leurs sorties et leurs entrées,\nEt un homme, dans sa vie, joue de nombreux rôles,\nSes actes étant sept âges.\n\n— William Shakespeare",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "Le monde entier est un théâtre,\nEt tous les hommes et les femmes ne sont que des acteurs ;\nIls ont leurs sorties et leurs entrées,\nEt un homme, dans sa vie, joue de nombreux rôles,\nSes actes étant sept âges.\n\n— William Shakespeare",
"Custom Theme": "Thème personnalisé",
"Theme Name": "Nom du thème",
"Text Color": "Couleur du texte",
@@ -252,9 +219,9 @@
"Auto Import on File Open": "Importation automatique à l'ouverture du fichier",
"LXGW WenKai GB Screen": "LXGW WenKai SC",
"LXGW WenKai TC": "LXGW WenKai TC",
"No chapters detected.": "Aucun chapitre détecté.",
"Failed to parse the EPUB file.": "Échec de l'analyse du fichier EPUB.",
"This book format is not supported.": "Ce format de livre n'est pas pris en charge.",
"No chapters detected": "Aucun chapitre détecté",
"Failed to parse the EPUB file": "Échec de l'analyse du fichier EPUB",
"This book format is not supported": "Ce format de livre n'est pas pris en charge",
"Unable to fetch the translation. Please log in first and try again.": "Impossible de récupérer la traduction. Veuillez d'abord vous connecter et réessayer.",
"Group": "Groupe",
"Always on Top": "Toujours au-dessus",
@@ -267,13 +234,13 @@
"Clear Search": "Effacer la recherche",
"Header & Footer": "En-tête et pied de page",
"Apply also in Scrolled Mode": "Appliquer également en mode défilement",
"A new version of Readest is Available!": "Avis de mise à jour",
"A new version of Readest is available!": "Avis de mise à jour",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Readest {{newVersion}} est disponible (version installée {{currentVersion}}).",
"Download and install now?": "Télécharger et installer maintenant ?",
"Downloading {{downloaded}} of {{contentLength}}": "Téléchargement {{downloaded}} sur {{contentLength}}",
"Download finished": "Téléchargement terminé",
"DOWNLOAD & INSTALL": "TÉLÉCHARGER ET INSTALLER",
"Changelog:": "Journal des modifications :",
"Changelog": "Journal des modifications",
"Software Update": "Mise à jour logicielle",
"Title": "Titre",
"Date Read": "Date de lecture",
@@ -282,18 +249,15 @@
"Ascending": "Ascendant",
"Descending": "Descendant",
"Sort by...": "Trier par...",
"Added:": "Ajouté :",
"Format:": "Format :",
"Added": "Ajouté",
"GuanKiapTsingKhai-T": "GuanKiapTsingKhai-T",
"Description:": "Description :",
"Description": "Description",
"No description available": "Aucune description disponible",
"List": "Liste",
"Grid": "Grille",
"(from 'As You Like It', Act II)": "(de 'Comme il vous plaira', Acte II)",
"Link Color": "Couleur du lien",
"Volume Keys for Page Flip": "Boutons volume pour tourner la page",
"Clicks for Page Flip": "Taps pour tourner la page",
"Swap Clicks Area": "Inverser zones de tap",
"Screen": "Écran",
"Orientation": "Orientation",
"Portrait": "Portrait",
@@ -302,7 +266,7 @@
"Checking for updates...": "Vérification des mises à jour...",
"Error checking for updates": "Erreur lors de la vérification des mises à jour",
"Details": "Détails",
"File Size:": "Taille du fichier :",
"File Size": "Taille du fichier",
"Auto Detect": "Détection automatique",
"Next Section": "Section suivante",
"Previous Section": "Section précédente",
@@ -330,9 +294,486 @@
"Disable Translation": " désactiver la traduction",
"Scroll": "Défilement",
"Overlap Pixels": "Pixels de chevauchement",
"Click": "Cliquer",
"System Language": "Langue du système",
"Security": "Sécurité",
"Allow JavaScript": "Autoriser JavaScript",
"Enable only if you trust the file.": "Activer uniquement si vous faites confiance au fichier."
"Enable only if you trust the file.": "Activer uniquement si vous faites confiance au fichier.",
"Sort TOC by Page": "Tris la table des matières par page",
"Search in {{count}} Book(s)..._one": "Rechercher dans {{count}} Livre...",
"Search in {{count}} Book(s)..._many": "Rechercher dans {{count}} Livres...",
"Search in {{count}} Book(s)..._other": "Rechercher dans {{count}} Livres...",
"No notes match your search": "Aucune note trouvée",
"Search notes and excerpts...": "Rechercher des notes...",
"Sign in to Sync": "Connectez-vous pour synchroniser",
"Synced at {{time}}": "Synchronisé à {{time}}",
"Never synced": "Jamais synchronisé",
"Show Remaining Time": "Afficher le temps restant",
"{{time}} min left in chapter": "{{time}} min restant dans le chapitre",
"Override Book Color": "Remplacer la couleur du livre",
"Login Required": "Connexion requise",
"Quota Exceeded": "Quota dépassé",
"{{percentage}}% of Daily Translation Characters Used.": "{{percentage}}% des caractères de traduction quotidiens utilisés.",
"Translation Characters": "Caractères de traduction",
"{{engine}}: {{count}} voices_one": "{{engine}} : {{count}} voix",
"{{engine}}: {{count}} voices_many": "{{engine}} : {{count}} voix",
"{{engine}}: {{count}} voices_other": "{{engine}} : {{count}} voix",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "Quelque chose s'est mal passé. Ne vous inquiétez pas, notre équipe a été informée et nous travaillons sur une solution.",
"Error Details:": "Erreur :",
"Try Again": "Réessayer",
"Need help?": "Besoin d'aide ?",
"Contact Support": "Contacter le support",
"Code Highlighting": "Coloration syntaxique",
"Enable Highlighting": "Activer la coloration syntaxique",
"Code Language": "Langage de programmation",
"Top Margin (px)": "Marge supérieure (px)",
"Bottom Margin (px)": "Marge inférieure (px)",
"Right Margin (px)": "Marge droite (px)",
"Left Margin (px)": "Marge gauche (px)",
"Column Gap (%)": "Espacement des colonnes (%)",
"Always Show Status Bar": "Afficher toujours la barre d'état",
"Custom Content CSS": "CSS du contenu",
"Enter CSS for book content styling...": "Saisissez le CSS pour le contenu du livre...",
"Custom Reader UI CSS": "CSS de linterface",
"Enter CSS for reader interface styling...": "Saisissez le CSS pour linterface de lecture...",
"Crop": "Rogner",
"Book Covers": "Couvertures de livres",
"Fit": "Adapter",
"Reset {{settings}}": "Réinitialiser {{settings}}",
"Reset Settings": "Réinitialiser les paramètres",
"{{count}} pages left in chapter_one": "{{count}} page restant dans le chapitre",
"{{count}} pages left in chapter_many": "{{count}} pages restantes dans le chapitre",
"{{count}} pages left in chapter_other": "{{count}} pages restantes dans le chapitre",
"Show Remaining Pages": "Voir restantes",
"Source Han Serif CN VF": "Source Han Serif",
"Huiwen-mincho": "Huiwen Mincho",
"KingHwa_OldSong": "KingHwa Song",
"Manage Subscription": "Gérer labonnement",
"Coming Soon": "Bientôt disponible",
"Upgrade to {{plan}}": "Passer à {{plan}}",
"Upgrade to Plus or Pro": "Passer à Plus ou Pro",
"Current Plan": "Abonnement actuel",
"Plan Limits": "Limites de labonnement",
"Processing your payment...": "Traitement de votre paiement...",
"Please wait while we confirm your subscription.": "Veuillez patienter pendant la confirmation de votre abonnement.",
"Payment Processing": "Traitement du paiement",
"Your payment is being processed. This usually takes a few moments.": "Votre paiement est en cours de traitement. Cela prend généralement quelques instants.",
"Payment Failed": "Le paiement a échoué",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "Nous navons pas pu traiter votre abonnement. Veuillez réessayer ou contacter le support si le problème persiste.",
"Back to Profile": "Retour au profil",
"Subscription Successful!": "Abonnement réussi!",
"Thank you for your subscription! Your payment has been processed successfully.": "Merci pour votre abonnement! Votre paiement a été traité avec succès.",
"Email:": "E-mail:",
"Plan:": "Abonnement:",
"Amount:": "Montant:",
"Go to Library": "Aller à la bibliothèque",
"Need help? Contact our support team at support@readest.com": "Besoin daide? Contactez notre équipe à support@readest.com",
"Free Plan": "Abonnement gratuit",
"month": "mois",
"AI Translations (per day)": "Traductions IA (par jour)",
"Plus Plan": "Abonnement Plus",
"Includes All Free Plan Benefits": "Inclut tous les avantages de labonnement gratuit",
"Pro Plan": "Abonnement Pro",
"More AI Translations": "Plus de traductions IA",
"Complete Your Subscription": "Complétez votre abonnement",
"{{percentage}}% of Cloud Sync Space Used.": "{{percentage}}% de lespace de synchronisation cloud utilisé.",
"Cloud Sync Storage": "Stockage de synchronisation cloud",
"Disable": "Désactiver",
"Enable": "Activer",
"Upgrade to Readest Premium": "Passer à Readest Premium",
"Show Source Text": "Afficher le texte source",
"Cross-Platform Sync": "Synchronisation multiplateforme",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "Synchronisez bibliothèque, progrès et notes sur tous vos appareils.",
"Customizable Reading": "Lecture personnalisable",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "Ajustez polices, thèmes et mise en page à votre goût.",
"AI Read Aloud": "Lecture vocale IA",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "Écoutez vos livres avec des voix naturelles IA.",
"AI Translations": "Traductions IA",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "Traduisez instantanément avec Google, Azure ou DeepL.",
"Connect with fellow readers and get help fast in our friendly community channels.": "Rejoignez la communauté et recevez de laide rapidement.",
"Unlimited AI Read Aloud Hours": "Lecture IA illimitée",
"Listen without limits—convert as much text as you like into immersive audio.": "Convertissez le texte en audio sans limite.",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "Plus de traductions et doptions avancées.",
"DeepL Pro Access": "Accès DeepL Pro",
"Enjoy faster responses and dedicated assistance whenever you need help.": "Support prioritaire et réponses rapides.",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "Limite quotidienne atteinte. Passez à un plan supérieur pour continuer.",
"Includes All Plus Plan Benefits": "Inclut Tous les Avantages du Plan Plus",
"Early Feature Access": "Accès Anticipé aux Fonctionnalités",
"Be the first to explore new features, updates, and innovations before anyone else.": "Explorez en premier les nouvelles fonctionnalités, mises à jour et innovations.",
"Advanced AI Tools": "Outils IA Avancés",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "Exploitez des outils IA puissants pour une lecture intelligente, traduction et découverte de contenu.",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "Traduisez jusqu'à 100 000 caractères par jour avec le moteur de traduction le plus précis.",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "Traduisez jusqu'à 500 000 caractères par jour avec le moteur de traduction le plus précis.",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "Stockez et accédez en sécurité à votre collection de lecture avec jusqu'à 5 GB de stockage cloud.",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "Stockez et accédez en sécurité à votre collection de lecture avec jusqu'à 20 GB de stockage cloud.",
"Deleted cloud backup of the book: {{title}}": "Suppression de la sauvegarde cloud du livre : {{title}}",
"Are you sure to delete the cloud backup of the selected book?": "Êtes-vous sûr de vouloir supprimer la sauvegarde cloud du livre sélectionné ?",
"Don't have an account? Sign up": "Vous n'avez pas de compte ? Inscrivez-vous",
"What's New in Readest": "Quoi de neuf dans Readest",
"Enter book title": "Saisir le titre du livre",
"Subtitle": "Sous-titre",
"Enter book subtitle": "Saisir le sous-titre du livre",
"Enter author name": "Saisir le nom de l'auteur",
"Series": "Série",
"Enter series name": "Saisir le nom de la série",
"Series Index": "Numéro de série",
"Enter series index": "Saisir le numéro de série",
"Total in Series": "Total dans la série",
"Enter total books in series": "Saisir le nombre total de livres dans la série",
"Enter publisher": "Saisir l'éditeur",
"Publication Date": "Date de publication",
"Identifier": "Identifiant",
"Enter book description": "Saisir la description du livre",
"Change cover image": "Changer l'image de couverture",
"Replace": "Remplacer",
"Unlock cover": "Déverrouiller la couverture",
"Lock cover": "Verrouiller la couverture",
"Auto-Retrieve Metadata": "Récupérer les métadonnées automatiquement",
"Auto-Retrieve": "Récupération automatique",
"Unlock all fields": "Déverrouiller tous les champs",
"Unlock All": "Tout déverrouiller",
"Lock all fields": "Verrouiller tous les champs",
"Lock All": "Tout verrouiller",
"Reset": "Réinitialiser",
"Edit Metadata": "Modifier les métadonnées",
"Locked": "Verrouillé",
"Select Metadata Source": "Sélectionner la source des métadonnées",
"Keep manual input": "Conserver la saisie manuelle",
"Google Books": "Google Books",
"Open Library": "Open Library",
"Fiction, Science, History": "Fiction, Science, Histoire",
"Open Book in New Window": "Ouvrir dans une nouvelle fenêtre",
"Voices for {{lang}}": "Voix pour {{lang}}",
"Yandex Translate": "Yandex Traduction",
"YYYY or YYYY-MM-DD": "YYYY ou YYYY-MM-DD",
"Restore Purchase": "Restaurer l'achat",
"No purchases found to restore.": "Aucun achat trouvé à restaurer.",
"Failed to restore purchases.": "Échec de la restauration des achats.",
"Failed to manage subscription.": "Échec de la gestion de l'abonnement.",
"Failed to load subscription plans.": "Échec du chargement des plans d'abonnement.",
"year": "année",
"Failed to create checkout session": "Échec de la création de la session de paiement",
"Storage": "Stockage",
"Terms of Service": "Conditions d'utilisation",
"Privacy Policy": "Politique de confidentialité",
"Disable Double Click": "Désactiver le double-clic",
"TTS not supported for this document": "TTS non pris en charge pour ce document",
"Reset Password": "Nouveau mot de passe",
"Show Reading Progress": "Afficher la progression",
"Reading Progress Style": "Style de progression",
"Page Number": "Numéro de page",
"Percentage": "Pourcentage",
"Deleted local copy of the book: {{title}}": "Suppression de la copie locale du livre : {{title}}",
"Failed to delete cloud backup of the book: {{title}}": "Échec de la suppression de la sauvegarde cloud du livre : {{title}}",
"Failed to delete local copy of the book: {{title}}": "Échec de la suppression de la copie locale du livre : {{title}}",
"Are you sure to delete the local copy of the selected book?": "Êtes-vous sûr de vouloir supprimer la copie locale du livre sélectionné ?",
"Remove from Cloud & Device": "Supprimer du Cloud & de l'appareil",
"Remove from Cloud Only": "Supprimer uniquement du Cloud",
"Remove from Device Only": "Supprimer uniquement de l'appareil",
"Disconnected": "Déconnecté",
"KOReader Sync Settings": "Paramètres de synchronisation KOReader",
"Sync Strategy": "Stratégie de synchronisation",
"Ask on conflict": "Demander en cas de conflit",
"Always use latest": "Toujours utiliser la dernière version",
"Send changes only": "Envoyer uniquement les modifications",
"Receive changes only": "Recevoir uniquement les modifications",
"Checksum Method": "Méthode de somme de contrôle",
"File Content (recommended)": "Contenu du fichier (recommandé)",
"File Name": "Nom du fichier",
"Device Name": "Nom de l'appareil",
"Connect to your KOReader Sync server.": "Connectez-vous à votre serveur de synchronisation KOReader.",
"Server URL": "URL du serveur",
"Username": "Nom d'utilisateur",
"Your Username": "Votre nom d'utilisateur",
"Password": "Mot de passe",
"Connect": "Connecter",
"KOReader Sync": "Synchronisation KOReader",
"Sync Conflict": "Conflit de synchronisation",
"Sync reading progress from \"{{deviceName}}\"?": "Synchroniser la progression de lecture depuis \"{{deviceName}}\"?",
"another device": "un autre appareil",
"Local Progress": "Progression locale",
"Remote Progress": "Progression distante",
"Page {{page}} of {{total}} ({{percentage}}%)": "Page {{page}} sur {{total}} ({{percentage}}%)",
"Current position": "Position actuelle",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "Environ page {{page}} sur {{total}} ({{percentage}}%)",
"Approximately {{percentage}}%": "Environ {{percentage}}%",
"Failed to connect": "Échec de la connexion",
"Sync Server Connected": "Serveur de synchronisation connecté",
"Sync as {{userDisplayName}}": "Synchroniser en tant que {{userDisplayName}}",
"Custom Fonts": "Polices Personnalisées",
"Cancel Delete": "Annuler la Suppression",
"Import Font": "Importer une Police",
"Delete Font": "Supprimer la Police",
"Tips": "Conseils",
"Custom fonts can be selected from the Font Face menu": "Les polices personnalisées peuvent être sélectionnées depuis le menu Police",
"Manage Custom Fonts": "Gérer les Polices Personnalisées",
"Select Files": "Sélectionner des Fichiers",
"Select Image": "Sélectionner une Image",
"Select Video": "Sélectionner une Vidéo",
"Select Audio": "Sélectionner un Audio",
"Select Fonts": "Sélectionner des Polices",
"Supported font formats: .ttf, .otf, .woff, .woff2": "Formats de police pris en charge : .ttf, .otf, .woff, .woff2",
"Push Progress": "Pousser la Progression",
"Pull Progress": "Tirer la Progression",
"Previous Paragraph": "Paragraphe précédent",
"Previous Sentence": "Phrase précédente",
"Pause": "Pause",
"Play": "Lecture",
"Next Sentence": "Phrase suivante",
"Next Paragraph": "Paragraphe suivant",
"Separate Cover Page": "Page de couverture séparée",
"Resize Notebook": "Redimensionner le Carnet",
"Resize Sidebar": "Redimensionner la Barre Latérale",
"Get Help from the Readest Community": "Obtenir de l'aide de la communauté Readest",
"Remove cover image": "Supprimer l'image de couverture",
"Bookshelf": "Étagère à livres",
"View Menu": "Menu d'affichage",
"Settings Menu": "Menu des paramètres",
"View account details and quota": "Voir les détails du compte et le quota",
"Library Header": "En-tête de la bibliothèque",
"Book Content": "Contenu du livre",
"Footer Bar": "Barre de pied de page",
"Header Bar": "Barre d'en-tête",
"View Options": "Options d'affichage",
"Book Menu": "Menu du livre",
"Search Options": "Options de recherche",
"Close": "Fermer",
"Delete Book Options": "Options de suppression du livre",
"ON": "ACTIVER",
"OFF": "DÉSACTIVER",
"Reading Progress": "Progression de lecture",
"Page Margin": "Marge de page",
"Remove Bookmark": "Supprimer le Marque-page",
"Add Bookmark": "Ajouter un Marque-page",
"Books Content": "Contenu des Livres",
"Jump to Location": "Aller à l'Emplacement",
"Unpin Notebook": "Détacher le Carnet",
"Pin Notebook": "Épingler le Carnet",
"Hide Search Bar": "Masquer la Barre de Recherche",
"Show Search Bar": "Afficher la Barre de Recherche",
"On {{current}} of {{total}} page": "Sur {{current}} de {{total}} page",
"Section Title": "Titre de Section",
"Decrease": "Diminuer",
"Increase": "Augmenter",
"Settings Panels": "Panneaux de Configuration",
"Settings": "Paramètres",
"Unpin Sidebar": "Détacher la Barre Latérale",
"Pin Sidebar": "Épingler la Barre Latérale",
"Toggle Sidebar": "Alternar la Barre Latérale",
"Toggle Translation": "Alternar Traduction",
"Translation Disabled": "Traduction Désactivée",
"Minimize": "Minimiser",
"Maximize or Restore": "Maximiser ou Restaurer",
"Exit Parallel Read": "Quitter la Lecture Parallèle",
"Enter Parallel Read": "Entrer dans la Lecture Parallèle",
"Zoom Level": "Zoom",
"Zoom Out": "Réduire le Zoom",
"Reset Zoom": "Réinitialiser le Zoom",
"Zoom In": "Agrandir le Zoom",
"Zoom Mode": "Mode Zoom",
"Single Page": "Page Unique",
"Auto Spread": "Répartition Automatique",
"Fit Page": "Ajuster la Page",
"Fit Width": "Ajuster la Largeur",
"Failed to select directory": "Échec de la sélection du répertoire",
"The new data directory must be different from the current one.": "Le nouveau répertoire de données doit être différent de l'actuel.",
"Migration failed: {{error}}": "La migration a échoué : {{error}}",
"Change Data Location": "Changer l'Emplacement des Données",
"Current Data Location": "Emplacement Actuel des Données",
"Total size: {{size}}": "Taille totale : {{size}}",
"Calculating file info...": "Calcul des informations sur le fichier...",
"New Data Location": "Nouvel Emplacement des Données",
"Choose Different Folder": "Choisir un Dossier Différent",
"Choose New Folder": "Choisir un Nouveau Dossier",
"Migrating data...": "Migration des données...",
"Copying: {{file}}": "Copie : {{file}}",
"{{current}} of {{total}} files": "{{current}} sur {{total}} fichiers",
"Migration completed successfully!": "Migration terminée avec succès !",
"Your data has been moved to the new location. Please restart the application to complete the process.": "Vos données ont été déplacées vers le nouvel emplacement. Veuillez redémarrer l'application pour terminer le processus.",
"Migration failed": "La migration a échoué",
"Important Notice": "Avis Important",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "Cela déplacera toutes vos données d'application vers le nouvel emplacement. Assurez-vous que la destination dispose de suffisamment d'espace libre.",
"Restart App": "Redémarrer l'Application",
"Start Migration": "Démarrer la Migration",
"Advanced Settings": "Paramètres Avancés",
"File count: {{size}}": "Nombre de fichiers : {{size}}",
"Background Read Aloud": "Lecture Vocale en Arrière-Plan",
"Ready to read aloud": "Prêt à lire à haute voix",
"Read Aloud": "Lire à haute voix",
"Screen Brightness": "Luminosité de l'Écran",
"Background Image": "Image de Fond",
"Import Image": "Importer une Image",
"Opacity": "Opacité",
"Size": "Taille",
"Cover": "Couverture",
"Contain": "Contenir",
"{{number}} pages left in chapter": "{{number}} pages restantes dans le chapitre",
"Device": "Appareil",
"E-Ink Mode": "Mode E-Ink",
"Highlight Colors": "Couleurs de Surlignage",
"Auto Screen Brightness": "Luminosité Automatique de l'Écran",
"Pagination": "Pagination",
"Disable Double Tap": "Désactiver le Double Tap",
"Tap to Paginate": "Tapoter pour Paginater",
"Click to Paginate": "Cliquer pour Paginater",
"Tap Both Sides": "Tapoter des Deux Côtés",
"Click Both Sides": "Cliquer des Deux Côtés",
"Swap Tap Sides": "Échanger les Côtés de Tap",
"Swap Click Sides": "Échanger les Côtés de Clic",
"Source and Translated": "Source et Traduit",
"Translated Only": "Traduit Seulement",
"Source Only": "Source Seulement",
"TTS Text": "TTS Texte",
"The book file is corrupted": "Le fichier du livre est corrompu",
"The book file is empty": "Le fichier du livre est vide",
"Failed to open the book file": "Échec de l'ouverture du fichier du livre",
"On-Demand Purchase": "Achat à la Demande",
"Full Customization": "Personnalisation Complète",
"Lifetime Plan": "Plan de Vie",
"One-Time Payment": "Paiement Unique",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "Effectuez un paiement unique pour profiter d'un accès à vie à des fonctionnalités spécifiques sur tous les appareils. Achetez des fonctionnalités ou des services spécifiques uniquement lorsque vous en avez besoin.",
"Expand Cloud Sync Storage": "Étendre le Stockage de Synchronisation Cloud",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "Étendez votre stockage cloud pour toujours avec un achat unique. Chaque achat supplémentaire ajoute plus d'espace.",
"Unlock All Customization Options": "Débloquer Toutes les Options de Personnalisation",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "Débloquer des thèmes supplémentaires, des polices, des options de mise en page et des fonctions de lecture à haute voix, des traducteurs, des services de stockage cloud.",
"Purchase Successful!": "Achat Réussi!",
"lifetime": "à vie",
"Thank you for your purchase! Your payment has been processed successfully.": "Merci pour votre achat ! Votre paiement a été traité avec succès.",
"Order ID:": "ID de commande :",
"TTS Highlighting": "Surbrillance TTS",
"Style": "Style",
"Underline": "Souligner",
"Strikethrough": "Barré",
"Squiggly": "Ondulé",
"Outline": "Contour",
"Save Current Color": "Enregistrer la Couleur Actuelle",
"Quick Colors": "Couleurs Rapides",
"Highlighter": "Surligneur",
"Save Book Cover": "Enregistrer la Couverture du Livre",
"Auto-save last book cover": "Enregistrer automatiquement la dernière couverture du livre",
"Back": "Retour",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "E-mail de confirmation envoyé ! Veuillez vérifier vos anciennes et nouvelles adresses e-mail pour confirmer le changement.",
"Failed to update email": "Échec de la mise à jour de le-mail",
"New Email": "Nouvel e-mail",
"Your new email": "Votre nouvel e-mail",
"Updating email ...": "Mise à jour de le-mail ...",
"Update email": "Mettre à jour le-mail",
"Current email": "E-mail actuel",
"Update Email": "Mettre à jour le-mail",
"All": "Tous",
"Unable to open book": "Impossible d'ouvrir le livre",
"Punctuation": "Ponctuation",
"Replace Quotation Marks": "Remplacer les guillemets",
"Enabled only in vertical layout.": "Activé uniquement en disposition verticale.",
"No Conversion": "Pas de conversion",
"Simplified to Traditional": "Simp. → Trad.",
"Traditional to Simplified": "Trad. → Simp.",
"Simplified to Traditional (Taiwan)": "Simp. → Trad. (Taïwan)",
"Simplified to Traditional (Hong Kong)": "Simp. → Trad. (Hong Kong)",
"Simplified to Traditional (Taiwan), with phrases": "Simp. → Trad. (Taïwan • phrases)",
"Traditional (Taiwan) to Simplified": "Trad. (Taïwan) → Simp.",
"Traditional (Hong Kong) to Simplified": "Trad. (Hong Kong) → Simp.",
"Traditional (Taiwan) to Simplified, with phrases": "Trad. (Taïwan • phrases) → Simp.",
"Convert Simplified and Traditional Chinese": "Convertir chinois simp./trad.",
"Convert Mode": "Mode de conversion",
"Failed to auto-save book cover for lock screen: {{error}}": "Échec de l'enregistrement automatique de la couverture du livre pour l'écran de verrouillage : {{error}}",
"Download from Cloud": "Télécharger depuis le Cloud",
"Upload to Cloud": "Téléverser vers le Cloud",
"Clear Custom Fonts": "Effacer les Polices Personnalisées",
"Columns": "Colonnes",
"OPDS Catalogs": "Catalogues OPDS",
"Adding LAN addresses is not supported in the web app version.": "Lajout dadresses LAN nest pas pris en charge dans la version web.",
"Invalid OPDS catalog. Please check the URL.": "Catalogue OPDS invalide. Veuillez vérifier lURL.",
"Browse and download books from online catalogs": "Parcourez et téléchargez des livres depuis des catalogues en ligne",
"My Catalogs": "Mes catalogues",
"Add Catalog": "Ajouter un catalogue",
"No catalogs yet": "Aucun catalogue pour le moment",
"Add your first OPDS catalog to start browsing books": "Ajoutez votre premier catalogue OPDS pour commencer à parcourir des livres.",
"Add Your First Catalog": "Ajouter votre premier catalogue",
"Browse": "Parcourir",
"Popular Catalogs": "Catalogues populaires",
"Add": "Ajouter",
"Add OPDS Catalog": "Ajouter un catalogue OPDS",
"Catalog Name": "Nom du catalogue",
"My Calibre Library": "Ma bibliothèque Calibre",
"OPDS URL": "URL OPDS",
"Username (optional)": "Nom dutilisateur (optionnel)",
"Password (optional)": "Mot de passe (optionnel)",
"Description (optional)": "Description (optionnelle)",
"A brief description of this catalog": "Brève description de ce catalogue",
"Validating...": "Validation...",
"View All": "Tout afficher",
"Forward": "Suivant",
"Home": "Accueil",
"{{count}} items_one": "{{count}} élément",
"{{count}} items_many": "{{count}} éléments",
"{{count}} items_other": "{{count}} éléments",
"Download completed": "Téléchargement terminé",
"Download failed": "Échec du téléchargement",
"Open Access": "Accès libre",
"Borrow": "Emprunter",
"Buy": "Acheter",
"Subscribe": "Sabonner",
"Sample": "Extrait",
"Download": "Télécharger",
"Open & Read": "Ouvrir et lire",
"Tags": "Tags",
"Tag": "Tag",
"First": "Premier",
"Previous": "Précédent",
"Next": "Suivant",
"Last": "Dernier",
"Cannot Load Page": "Impossible de charger la page",
"An error occurred": "Une erreur est survenue",
"Online Library": "Bibliothèque en ligne",
"URL must start with http:// or https://": "URL doit commencer par http:// ou https://",
"Title, Author, Tag, etc...": "Titre, Auteur, Tag, etc...",
"Query": "Requête",
"Subject": "Sujet",
"Enter {{terms}}": "Entrez {{terms}}",
"No search results found": "Aucun résultat trouvé",
"Failed to load OPDS feed: {{status}} {{statusText}}": "Échec du chargement du flux OPDS : {{status}} {{statusText}}",
"Search in {{title}}": "Rechercher dans {{title}}",
"Manage Storage": "Gérer le stockage",
"Failed to load files": "Échec du chargement des fichiers",
"Deleted {{count}} file(s)_one": "{{count}} fichier supprimé",
"Deleted {{count}} file(s)_many": "{{count}} fichiers supprimés",
"Deleted {{count}} file(s)_other": "{{count}} fichiers supprimés",
"Failed to delete {{count}} file(s)_one": "Échec de la suppression de {{count}} fichier",
"Failed to delete {{count}} file(s)_many": "Échec de la suppression de {{count}} fichiers",
"Failed to delete {{count}} file(s)_other": "Échec de la suppression de {{count}} fichiers",
"Failed to delete files": "Échec de la suppression des fichiers",
"Total Files": "Nombre total de fichiers",
"Total Size": "Taille totale",
"Quota": "Quota",
"Used": "Utilisé",
"Files": "Fichiers",
"Search files...": "Rechercher des fichiers...",
"Newest First": "Les plus récents",
"Oldest First": "Les plus anciens",
"Largest First": "Les plus volumineux",
"Smallest First": "Les moins volumineux",
"Name A-Z": "Nom A-Z",
"Name Z-A": "Nom Z-A",
"{{count}} selected_one": "{{count}} sélectionné",
"{{count}} selected_many": "{{count}} sélectionnés",
"{{count}} selected_other": "{{count}} sélectionnés",
"Delete Selected": "Supprimer la sélection",
"Created": "Créé",
"No files found": "Aucun fichier trouvé",
"No files uploaded yet": "Aucun fichier téléchargé pour le moment",
"files": "fichiers",
"Page {{current}} of {{total}}": "Page {{current}} sur {{total}}",
"Are you sure to delete {{count}} selected file(s)?_one": "Voulez-vous vraiment supprimer {{count}} fichier sélectionné ?",
"Are you sure to delete {{count}} selected file(s)?_many": "Voulez-vous vraiment supprimer {{count}} fichiers sélectionnés ?",
"Are you sure to delete {{count}} selected file(s)?_other": "Voulez-vous vraiment supprimer {{count}} fichiers sélectionnés ?",
"Cloud Storage Usage": "Utilisation du stockage cloud",
"Rename Group": "Renommer le groupe",
"From Directory": "Depuis le répertoire",
"Successfully imported {{count}} book(s)_one": "Importation réussie de 1 livre",
"Successfully imported {{count}} book(s)_many": "Importation réussie de {{count}} livres",
"Successfully imported {{count}} book(s)_other": "Importation réussie de {{count}} livres",
"Count": "Nombre",
"Start Page": "Page de départ",
"Search in OPDS Catalog...": "Rechercher dans le catalogue OPDS...",
"Please log in to use advanced TTS features.": "Veuillez vous connecter pour utiliser les fonctionnalités avancées de TTS."
}
@@ -8,7 +8,6 @@
"Auto Mode": "स्वचालित मोड",
"Behavior": "व्यवहार",
"Book": "पुस्तक",
"Book Cover": "पुस्तक का कवर",
"Bookmark": "बुकमार्क",
"Cancel": "रद्द करें",
"Chapter": "अध्याय",
@@ -18,7 +17,6 @@
"Confirm Deletion": "हटाने की पुष्टि करें",
"Copied to notebook": "नोटबुक में कॉपी किया गया",
"Copy": "कॉपी",
"Custom CSS": "कस्टम CSS",
"Dark Mode": "डार्क मोड",
"Default": "डिफ़ॉल्ट",
"Default Font": "डिफ़ॉल्ट फ़ॉन्ट",
@@ -28,7 +26,6 @@
"Dictionary": "शब्दकोश",
"Download Readest": "Readest डाउनलोड करें",
"Edit": "संपादित करें",
"Enter your custom CSS here...": "अपना कस्टम CSS यहां दर्ज करें...",
"Excerpts": "अंश",
"Failed to import book(s): {{filenames}}": "पुस्तक(ें) आयात करने में विफल: {{filenames}}",
"Fast": "तेज़",
@@ -48,7 +45,6 @@
"Horizontal Direction": "क्षैतिज दिशा",
"Hyphenation": "हाइफ़नेशन",
"Import Books": "पुस्तकें आयात करें",
"Language:": "भाषा:",
"Layout": "लेआउट",
"Light Mode": "लाइट मोड",
"Loading...": "लोड हो रहा है...",
@@ -70,8 +66,8 @@
"Paging Animation": "पेजिंग एनीमेशन",
"Paragraph": "पैराग्राफ",
"Parallel Read": "समानांतर पढ़ें",
"Published:": "प्रकाशित:",
"Publisher:": "प्रकाशक:",
"Published": "प्रकाशित",
"Publisher": "प्रकाशक",
"Reading Progress Synced": "पढ़ने की प्रगति सिंक की गई",
"Reload Page": "पृष्ठ रीलोड करें",
"Reveal in File Explorer": "फ़ाइल एक्सप्लोरर में दिखाएं",
@@ -85,7 +81,6 @@
"Search...": "खोजें...",
"Select Book": "पुस्तक चुनें",
"Select Books": "पुस्तकें चुनें",
"Select Multiple Books": "कई पुस्तकें चुनें",
"Sepia": "सेपिया",
"Serif Font": "सेरिफ फ़ॉन्ट",
"Show Book Details": "पुस्तक विवरण दिखाएं",
@@ -96,16 +91,15 @@
"Slow": "धीमा",
"Solarized": "सोलराइज्ड",
"Speak": "बोलें",
"Subjects:": "विषय:",
"Subjects": "विषय",
"System Fonts": "सिस्टम फ़ॉन्ट्स",
"TTS not supported in this device": "यह डिवाइस TTS का समर्थन नहीं करता",
"Theme Color": "थीम रंग",
"Theme Mode": "थीम मोड",
"Translate": "अनुवाद करें",
"Translated Text": "अनुवादित पाठ",
"Unknown": "अज्ञात",
"Untitled": "शीर्षकहीन",
"Updated:": "अपडेट किया गया:",
"Updated": "अपडेट किया गया",
"Version {{version}}": "संस्करण {{version}}",
"Vertical Direction": "ऊर्ध्वाधर दिशा",
"Welcome to your library. You can import your books here and read them anytime.": "आपकी लाइब्रेरी में आपका स्वागत है। आप यहां अपनी पुस्तकें आयात कर सकते हैं और कभी भी पढ़ सकते हैं।",
@@ -114,8 +108,6 @@
"Your Library": "आपकी लाइब्रेरी",
"TTS not supported for PDF": "PDF के लिए TTS समर्थित नहीं है",
"Override Book Font": "पुस्तक फ़ॉन्ट ओवरराइड करें",
"Vertical Margins (px)": "ऊर्ध्वाधर मार्जिन (px)",
"Horizontal Margins (%)": "क्षैतिज मार्जिन (%)",
"Apply to All Books": "सभी पुस्तकों पर लागू करें",
"Apply to This Book": "इस पुस्तक पर लागू करें",
"Unable to fetch the translation. Try again later.": "अनुवाद प्राप्त करने में असमर्थ। बाद में पुनः प्रयास करें।",
@@ -124,14 +116,13 @@
"Book Details": "पुस्तक विवरण",
"From Local File": "स्थानीय फ़ाइल से",
"TOC": "सामग्री",
"Table of Contents": "सामग्री",
"Book uploaded: {{title}}": "पुस्तक अपलोड की गई: {{title}}",
"Failed to upload book: {{title}}": "पुस्तक अपलोड करने में विफल: {{title}}",
"Book downloaded: {{title}}": "पुस्तक डाउनलोड की गई: {{title}}",
"Failed to download book: {{title}}": "पुस्तक डाउनलोड करने में विफल: {{title}}",
"Upload Book": "पुस्तक अपलोड करें",
"Auto Upload Books to Cloud": "पुस्तकें बादल में स्वचालित रूप से अपलोड करें",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% क्लाउड स्टोरेज का उपयोग किया गया है।",
"Storage": "स्टोरेज",
"Book deleted: {{title}}": "पुस्तक हटाई गई: {{title}}",
"Failed to delete book: {{title}}": "पुस्तक हटाने में विफल: {{title}}",
"Check Updates on Start": "शुरू में अपडेट जांचें",
@@ -163,7 +154,7 @@
"Create a Password": "पासवर्ड बनाएं",
"Sign up": "साइन अप करें",
"Signing up...": "साइन अप हो रहा है...",
"Dont have an account? Sign up": "कोई खाता नहीं है? साइन अप करें",
"Don't have an account? Sign up": "कोई खाता नहीं है? साइन अप करें",
"Check your email for the confirmation link": "पुष्टि लिंक के लिए अपना ईमेल जांचें",
"Signing in ...": "साइन इन हो रहा है ...",
"Send a magic link email": "जादू लिंक ईमेल भेजें",
@@ -186,37 +177,14 @@
"Sign in with Apple": "Apple के साथ साइन इन करें",
"Sign in with GitHub": "GitHub के साथ साइन इन करें",
"Account": "खाता",
"Cloud Storage": "क्लाउड स्टोरेज",
"Failed to delete user. Please try again later.": "उपयोगकर्ता को हटाने में विफल। कृपया बाद में पुनः प्रयास करें।",
"Unlimited Offline/Online Reading": "असीमित ऑफलाइन/ऑनलाइन पढ़ना",
"Unlimited Cloud Sync Devices": "असीमित क्लाउड सिंक उपकरण",
"Essential Text-to-Speech Voices": "आवश्यक टेक्स्ट-टू-स्पीच आवाज़ें",
"DeepL Free Access": "DeepL मुफ्त पहुंच",
"Community Support": "सामुदायिक सहायता",
"500 MB Cloud Sync Space": "500 MB क्लाउड सिंक स्पेस",
"Includes All Free Tier Benefits": "सभी फ्री टियर लाभ शामिल हैं",
"AI Summaries": "AI सारांश",
"AI Translations": "AI अनुवाद",
"Priority Support": "प्राथमिकता सहायता",
"DeepL Pro Access": "DeepL प्रो पहुंच",
"Expanded Text-to-Speech Voices": "विस्तारित टेक्स्ट-टू-स्पीच आवाज़ें",
"2000 MB Cloud Sync Space": "2000 MB क्लाउड सिंक स्पेस",
"Includes All Plus Tier Benefits": "सभी प्लस टियर लाभ शामिल हैं",
"Unlimited AI Summaries": "असीमित AI सारांश",
"Unlimited AI Translations": "असीमित AI अनुवाद",
"Unlimited DeepL Pro Access": "असीमित DeepL प्रो पहुंच",
"Advanced AI Tools": "उन्नत AI टूल्स",
"Early Feature Access": "प्रारंभिक फीचर पहुंच",
"10 GB Cloud Sync Space": "10 GB क्लाउड सिंक स्पेस",
"Loading profile...": "प्रोफ़ाइल लोड हो रहा है...",
"Features": "विशेषताएं",
"Delete Account": "खाता हटाएं",
"Delete Your Account?": "अपना खाता हटाएं?",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "यह क्रिया पूर्ववत नहीं की जा सकती। क्लाउड में आपका सभी डेटा स्थायी रूप से हटा दिया जाएगा।",
"Delete Permanently": "स्थायी रूप से हटाएं",
"Free Tier": "फ्री टियर",
"Plus Tier": "प्लस टियर",
"Pro Tier": "प्रो टियर",
"RTL Direction": "RTL दिशा",
"Maximum Column Height": "कॉलम की अधिकतम ऊँचाई",
"Maximum Column Width": "कॉलम की अधिकतम चौड़ाई",
@@ -225,7 +193,7 @@
"No supported files found. Supported formats: {{formats}}": "कोई समर्थित फ़ाइलें नहीं मिलीं। समर्थित प्रारूप: {{formats}}",
"Drop to Import Books": "पुस्तकें आयात करने के लिए छोड़ें",
"Custom": "कस्टम",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n—William Shakespeare": "पूरी दुनिया एक स्टेज है,\nऔर सभी आदमी और महिलाएँ केवल अभिनेता हैं;\nउनके निकास और प्रवेश होते हैं,\nऔर एक आदमी अपने समय में कई भूमिकाएँ निभाता है,\nउसके कार्य सात युग होते हैं।\n\n— विलियम शेक्सपियर",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "पूरी दुनिया एक स्टेज है,\nऔर सभी आदमी और महिलाएँ केवल अभिनेता हैं;\nउनके निकास और प्रवेश होते हैं,\nऔर एक आदमी अपने समय में कई भूमिकाएँ निभाता है,\nउसके कार्य सात युग होते हैं।\n\n— विलियम शेक्सपियर",
"Custom Theme": "कस्टम थीम",
"Theme Name": "थीम का नाम",
"Text Color": "टेक्स्ट रंग",
@@ -252,9 +220,9 @@
"Auto Import on File Open": "फ़ाइल खोलने पर स्वचालित आयात",
"LXGW WenKai GB Screen": "LXGW WenKai SC",
"LXGW WenKai TC": "LXGW WenKai TC",
"No chapters detected.": "कोई अध्याय नहीं मिला।",
"Failed to parse the EPUB file.": "EPUB फ़ाइल को पार्स करने में विफल।",
"This book format is not supported.": "यह पुस्तक प्रारूप समर्थित नहीं है।",
"No chapters detected": "कोई अध्याय नहीं मिला।",
"Failed to parse the EPUB file": "EPUB फ़ाइल को पार्स करने में विफल।",
"This book format is not supported": "यह पुस्तक प्रारूप समर्थित नहीं है।",
"Unable to fetch the translation. Please log in first and try again.": "अनुवाद प्राप्त करने में असमर्थ। कृपया पहले लॉग इन करें और पुनः प्रयास करें।",
"Group": "समूह",
"Always on Top": "सर्वोच्च पर हमेशा",
@@ -267,13 +235,13 @@
"Clear Search": "खोज साफ करें",
"Header & Footer": "हेडर और फ़ुटर",
"Apply also in Scrolled Mode": "स्क्रॉल मोड में भी लागू करें",
"A new version of Readest is Available!": "Readest का एक नया संस्करण उपलब्ध है!",
"A new version of Readest is available!": "Readest का एक नया संस्करण उपलब्ध है!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Readest {{newVersion}} उपलब्ध है (स्थापित संस्करण {{currentVersion}})।",
"Download and install now?": "अब डाउनलोड और इंस्टॉल करें?",
"Downloading {{downloaded}} of {{contentLength}}": "डाउनलोड कर रहा है {{downloaded}} का {{contentLength}}",
"Download finished": "डाउनलोड पूरा हुआ",
"DOWNLOAD & INSTALL": "डाउनलोड और इंस्टॉल करें",
"Changelog:": "चेंजलॉग:",
"Changelog": "चेंजलॉग",
"Software Update": "सॉफ़्टवेयर अपडेट",
"Title": "शीर्षक",
"Date Read": "पढ़ने की तारीख",
@@ -282,18 +250,15 @@
"Ascending": "आरोही",
"Descending": "अवरोही",
"Sort by...": "द्वारा क्रमबद्ध करें...",
"Added:": "जोड़ा गया:",
"Format:": "फॉर्मेट:",
"Added": "जोड़ा गया",
"GuanKiapTsingKhai-T": "GuanKiapTsingKhai-T",
"Description:": "विवरण:",
"Description": "विवरण",
"No description available": "कोई विवरण उपलब्ध नहीं है",
"List": "सूची",
"Grid": "ग्रिड",
"(from 'As You Like It', Act II)": "('जैसा आप इसे पसंद करते हैं', अधिनियम II)",
"Link Color": "लिंक रंग",
"Volume Keys for Page Flip": "पृष्ठ फ़्लिप के लिए वॉल्यूम कुंजियाँ",
"Clicks for Page Flip": "पृष्ठ फ़्लिप के लिए क्लिक करें",
"Swap Clicks Area": "क्लिक क्षेत्र स्वैप करें",
"Screen": "स्क्रीन",
"Orientation": "अवयव",
"Portrait": "पोर्ट्रेट",
@@ -302,7 +267,7 @@
"Checking for updates...": "अपडेट की जांच कर रहा है...",
"Error checking for updates": "अपडेट की जांच करते समय त्रुटि",
"Details": "विवरण",
"File Size:": "फ़ाइल आकार:",
"File Size": "फ़ाइल आकार",
"Auto Detect": "स्वचालित पहचान",
"Next Section": "अगला अनुभाग",
"Previous Section": "पिछला अनुभाग",
@@ -329,9 +294,476 @@
"Disable Translation": "अनुवाद अक्षम करें",
"Scroll": "स्क्रॉल",
"Overlap Pixels": "ओवरलैप पिक्सेल",
"Click": "क्लिक करें",
"System Language": "सिस्टम भाषा",
"Security": "सुरक्षा",
"Allow JavaScript": "जावास्क्रिप्ट की अनुमति दें",
"Enable only if you trust the file.": "केवल तभी सक्षम करें जब आप फ़ाइल पर भरोसा करते हों।"
"Enable only if you trust the file.": "केवल तभी सक्षम करें जब आप फ़ाइल पर भरोसा करते हों।",
"Sort TOC by Page": "सामग्री को पृष्ठ द्वारा क्रमबद्ध करें",
"Search in {{count}} Book(s)..._one": "{{count}} पुस्तक में खोजें...",
"Search in {{count}} Book(s)..._other": "{{count}} पुस्तकों में खोजें...",
"No notes match your search": "कोई नोट्स नहीं मिले",
"Search notes and excerpts...": "नोट्स खोजें...",
"Sign in to Sync": "सिंक करने के लिए साइन इन करें",
"Synced at {{time}}": "{{time}} पर सिंक किया गया",
"Never synced": "कभी सिंक नहीं किया गया",
"Show Remaining Time": "शेष समय दिखाएं",
"{{time}} min left in chapter": "{{time}} मिनट शेष अध्याय में",
"Override Book Color": "पुस्तक रंग ओवरराइड करें",
"Login Required": "लॉगिन ज़रूरी",
"Quota Exceeded": "सीमा पार",
"{{percentage}}% of Daily Translation Characters Used.": "{{percentage}}% दैनिक अनुवाद वर्णों का उपयोग किया गया है।",
"Translation Characters": "अनुवाद वर्ण",
"{{engine}}: {{count}} voices_one": "{{engine}}: {{count}} आवाज़",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}} आवाज़ें",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "कुछ गलत हो गया। चिंता न करें, हमारी टीम को सूचित कर दिया गया है और हम एक समाधान पर काम कर रहे हैं।",
"Error Details:": "त्रुटि विवरण:",
"Try Again": "फिर से प्रयास करें",
"Need help?": "मदद चाहिए?",
"Contact Support": "सहायता से संपर्क करें",
"Code Highlighting": "कोड हाइलाइटिंग",
"Enable Highlighting": "हाइलाइटिंग सक्षम करें",
"Code Language": "कोड भाषा",
"Top Margin (px)": "ऊपरी हाशिया (px)",
"Bottom Margin (px)": "निचला हाशिया (px)",
"Right Margin (px)": "दायां हाशिया (px)",
"Left Margin (px)": "बायां हाशिया (px)",
"Column Gap (%)": "स्तंभों के बीच की दूरी (%)",
"Always Show Status Bar": "स्थिति पट्टी हमेशा दिखाएं",
"Custom Content CSS": "सामग्री का CSS",
"Enter CSS for book content styling...": "पुस्तक सामग्री के लिए CSS दर्ज करें...",
"Custom Reader UI CSS": "इंटरफ़ेस का CSS",
"Enter CSS for reader interface styling...": "रीडर इंटरफ़ेस के लिए CSS दर्ज करें...",
"Crop": "काटें",
"Book Covers": "पुस्तक कवर",
"Fit": "फिट",
"Reset {{settings}}": "रीसेट {{settings}}",
"Reset Settings": "सेटिंग्स रीसेट करें",
"{{count}} pages left in chapter_one": "इस अध्याय में {{count}} पृष्ठ शेष हैं",
"{{count}} pages left in chapter_other": "इस अध्याय में {{count}} पृष्ठ शेष हैं",
"Show Remaining Pages": "शेष पृष्ठ दिखाएँ",
"Source Han Serif CN VF": "Source Han Serif",
"Huiwen-mincho": "Huiwen Mincho",
"KingHwa_OldSong": "KingHwa Song",
"Manage Subscription": "सदस्यता प्रबंधित करें",
"Coming Soon": "जल्द आ रहा है",
"Upgrade to {{plan}}": "{{plan}} में अपग्रेड करें",
"Upgrade to Plus or Pro": "Plus या Pro में अपग्रेड करें",
"Current Plan": "वर्तमान योजना",
"Plan Limits": "योजना की सीमाएँ",
"Processing your payment...": "आपका भुगतान संसाधित हो रहा है...",
"Please wait while we confirm your subscription.": "कृपया प्रतीक्षा करें, हम आपकी सदस्यता की पुष्टि कर रहे हैं।",
"Payment Processing": "भुगतान संसाधित हो रहा है",
"Your payment is being processed. This usually takes a few moments.": "आपका भुगतान संसाधित हो रहा है। इसमें कुछ क्षण लग सकते हैं।",
"Payment Failed": "भुगतान विफल",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "हम आपकी सदस्यता संसाधित नहीं कर सके। कृपया पुनः प्रयास करें या समस्या बने रहने पर सहायता से संपर्क करें।",
"Back to Profile": "प्रोफ़ाइल पर वापस जाएँ",
"Subscription Successful!": "सदस्यता सफल हुई!",
"Thank you for your subscription! Your payment has been processed successfully.": "आपकी सदस्यता के लिए धन्यवाद! आपका भुगतान सफलतापूर्वक संसाधित हो गया है।",
"Email:": "ईमेल:",
"Plan:": "योजना:",
"Amount:": "राशि:",
"Go to Library": "लाइब्रेरी पर जाएँ",
"Need help? Contact our support team at support@readest.com": "मदद चाहिए? हमारी सहायता टीम से संपर्क करें: support@readest.com",
"Free Plan": "मुफ्त योजना",
"month": "महीना",
"AI Translations (per day)": "AI अनुवाद (प्रतिदिन)",
"Plus Plan": "Plus योजना",
"Includes All Free Plan Benefits": "सभी मुफ्त योजना के लाभ शामिल हैं",
"Pro Plan": "Pro योजना",
"More AI Translations": "और अधिक AI अनुवाद",
"Complete Your Subscription": "अपनी सदस्यता पूरी करें",
"{{percentage}}% of Cloud Sync Space Used.": "{{percentage}}% क्लाउड सिंक स्पेस का उपयोग किया गया है।",
"Cloud Sync Storage": "क्लाउड सिंक स्टोरेज",
"Disable": "अक्षम करें",
"Enable": "सक्षम करें",
"Upgrade to Readest Premium": "Readest प्रीमियम में अपग्रेड करें",
"Show Source Text": "मूल पाठ दिखाएं",
"Cross-Platform Sync": "क्रॉस-प्लेटफ़ॉर्म सिंक",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "सभी डिवाइस पर लाइब्रेरी, प्रगति और नोट सिंक करें।",
"Customizable Reading": "अनुकूलन योग्य पढ़ाई",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "फॉन्ट, लेआउट और थीम अपनी पसंद से बदलें।",
"AI Read Aloud": "एआई वाचन",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "प्राकृतिक एआई आवाज़ों में किताबें सुनें।",
"AI Translations": "एआई अनुवाद",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "Google, Azure या DeepL से तुरंत अनुवाद करें।",
"Connect with fellow readers and get help fast in our friendly community channels.": "समुदाय से जुड़ें और सहायता पाएं।",
"Unlimited AI Read Aloud Hours": "असीमित एआई वाचन",
"Listen without limits—convert as much text as you like into immersive audio.": "जितना चाहें उतना ऑडियो में सुनें।",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "अधिक अनुवाद और उन्नत विकल्प पाएं।",
"DeepL Pro Access": "DeepL प्रो एक्सेस",
"Enjoy faster responses and dedicated assistance whenever you need help.": "प्राथमिक सहायता पाएं।",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "दैनिक सीमा पूरी हुई। योजना बढ़ाएं।",
"Includes All Plus Plan Benefits": "सभी प्लस प्लान लाभ शामिल",
"Early Feature Access": "नई सुविधाओं की पहले पहुंच",
"Be the first to explore new features, updates, and innovations before anyone else.": "नई सुविधाएं, अपडेट और नवाचार सबसे पहले देखें।",
"Advanced AI Tools": "उन्नत AI उपकरण",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "स्मार्ट पढ़ने, अनुवाद और कंटेंट खोजने के लिए शक्तिशाली AI उपकरण का उपयोग करें।",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "सबसे सटीक अनुवाद इंजन के साथ दैनिक 1 लाख तक अक्षर अनुवाद करें।",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "सबसे सटीक अनुवाद इंजन के साथ दैनिक 5 लाख तक अक्षर अनुवाद करें।",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "5 GB सुरक्षित क्लाउड स्टोरेज के साथ अपना संपूर्ण पठन संग्रह संग्रहीत करें।",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "20 GB सुरक्षित क्लाउड स्टोरेज के साथ अपना संपूर्ण पठन संग्रह संग्रहीत करें।",
"Deleted cloud backup of the book: {{title}}": "पुस्तक का क्लाउड बैकअप हटाया गया: {{title}}",
"Are you sure to delete the cloud backup of the selected book?": "क्या आप सुनिश्चित हैं कि आप चयनित पुस्तक का क्लाउड बैकअप हटाना चाहते हैं?",
"What's New in Readest": "Readest में नया क्या है",
"Enter book title": "पुस्तक का शीर्षक दर्ज करें",
"Subtitle": "उपशीर्षक",
"Enter book subtitle": "पुस्तक का उपशीर्षक दर्ज करें",
"Enter author name": "लेखक का नाम दर्ज करें",
"Series": "श्रृंखला",
"Enter series name": "श्रृंखला का नाम दर्ज करें",
"Series Index": "श्रृंखला संख्या",
"Enter series index": "श्रृंखला संख्या दर्ज करें",
"Total in Series": "श्रृंखला में कुल",
"Enter total books in series": "श्रृंखला में कुल पुस्तकों की संख्या दर्ज करें",
"Enter publisher": "प्रकाशक का नाम दर्ज करें",
"Publication Date": "प्रकाशन दिनांक",
"Identifier": "पहचानकर्ता",
"Enter book description": "पुस्तक का विवरण दर्ज करें",
"Change cover image": "कवर इमेज बदलें",
"Replace": "बदलें",
"Unlock cover": "कवर अनलॉक करें",
"Lock cover": "कवर लॉक करें",
"Auto-Retrieve Metadata": "मेटाडेटा स्वचालित रूप से प्राप्त करें",
"Auto-Retrieve": "स्वचालित प्राप्ति",
"Unlock all fields": "सभी फील्ड अनलॉक करें",
"Unlock All": "सभी अनलॉक करें",
"Lock all fields": "सभी फील्ड लॉक करें",
"Lock All": "सभी लॉक करें",
"Reset": "रीसेट",
"Edit Metadata": "मेटाडेटा संपादित करें",
"Locked": "लॉक है",
"Select Metadata Source": "मेटाडेटा स्रोत चुनें",
"Keep manual input": "मैन्युअल इनपुट रखें",
"Google Books": "गूगल बुक्स",
"Open Library": "ओपन लाइब्रेरी",
"Fiction, Science, History": "काल्पनिक, विज्ञान, इतिहास",
"Open Book in New Window": "नई विंडो में पुस्तक खोलें",
"Voices for {{lang}}": "{{lang}} के लिए आवाज़ें",
"Yandex Translate": "यांडेक्स अनुवाद",
"YYYY or YYYY-MM-DD": "YYYY या YYYY-MM-DD",
"Restore Purchase": "खरीदारी पुनर्स्थापित करें",
"No purchases found to restore.": "पुनर्स्थापित करने के लिए कोई खरीदारी नहीं मिली।",
"Failed to restore purchases.": "खरीदारी पुनर्स्थापित करने में विफल।",
"Failed to manage subscription.": "सदस्यता प्रबंधित करने में विफल।",
"Failed to load subscription plans.": "सदस्यता योजनाएँ लोड करने में विफल।",
"year": "वर्ष",
"Failed to create checkout session": "चेकआउट सत्र बनाने में विफल",
"Storage": "भंडारण",
"Terms of Service": "सेवा की शर्तें",
"Privacy Policy": "गोपनीयता नीति",
"Disable Double Click": "डबल क्लिक अक्षम करें",
"TTS not supported for this document": "TTS इस दस्तावेज़ के लिए समर्थित नहीं है",
"Reset Password": "पासवर्ड रीसेट करें",
"Show Reading Progress": "पढ़ने की प्रगति दिखाएं",
"Reading Progress Style": "पढ़ने की प्रगति शैली",
"Page Number": "पृष्ठ संख्या",
"Percentage": "प्रतिशत",
"Deleted local copy of the book: {{title}}": "पुस्तक की स्थानीय प्रति हटाई गई: {{title}}",
"Failed to delete cloud backup of the book: {{title}}": "पुस्तक का क्लाउड बैकअप हटाने में विफल: {{title}}",
"Failed to delete local copy of the book: {{title}}": "पुस्तक की स्थानीय प्रति हटाने में विफल: {{title}}",
"Are you sure to delete the local copy of the selected book?": "क्या आप सुनिश्चित हैं कि आप चयनित पुस्तक की स्थानीय प्रति हटाना चाहते हैं?",
"Remove from Cloud & Device": "क्लाउड और डिवाइस से हटाएँ",
"Remove from Cloud Only": "केवल क्लाउड से हटाएँ",
"Remove from Device Only": "केवल डिवाइस से हटाएँ",
"Disconnected": "अविचलित",
"KOReader Sync Settings": "KOReader सिंक सेटिंग्स",
"Sync Strategy": "सिंक रणनीति",
"Ask on conflict": "संघर्ष पर पूछें",
"Always use latest": "हमेशा नवीनतम का उपयोग करें",
"Send changes only": "केवल परिवर्तन भेजें",
"Receive changes only": "केवल परिवर्तन प्राप्त करें",
"Checksum Method": "चेकसम विधि",
"File Content (recommended)": "फाइल सामग्री (अनुशंसित)",
"File Name": "फाइल नाम",
"Device Name": "डिवाइस नाम",
"Connect to your KOReader Sync server.": "अपने KOReader सिंक सर्वर से कनेक्ट करें।",
"Server URL": "सर्वर यूआरएल",
"Username": "उपयोगकर्ता नाम",
"Your Username": "आपका उपयोगकर्ता नाम",
"Password": "पासवर्ड",
"Connect": "कनेक्ट करें",
"KOReader Sync": "KOReader सिंक",
"Sync Conflict": "सिंक संघर्ष",
"Sync reading progress from \"{{deviceName}}\"?": "क्या आप \"{{deviceName}}\" से पढ़ने की प्रगति को सिंक करना चाहते हैं?",
"another device": "दूसरा डिवाइस",
"Local Progress": "स्थानीय प्रगति",
"Remote Progress": "दूरस्थ प्रगति",
"Page {{page}} of {{total}} ({{percentage}}%)": "पृष्ठ {{page}} कुल {{total}} ({{percentage}}%)",
"Current position": "वर्तमान स्थिति",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "लगभग पृष्ठ {{page}} कुल {{total}} ({{percentage}}%)",
"Approximately {{percentage}}%": "लगभग {{percentage}}%",
"Failed to connect": "कनेक्ट करने में विफल",
"Sync Server Connected": "सिंक सर्वर कनेक्टेड",
"Sync as {{userDisplayName}}": "सिंक के रूप में {{userDisplayName}}",
"Custom Fonts": "कस्टम फ़ॉन्ट",
"Cancel Delete": "डिलीट रद्द करें",
"Import Font": "फ़ॉन्ट आयात करें",
"Delete Font": "फ़ॉन्ट डिलीट करें",
"Tips": "सुझाव",
"Custom fonts can be selected from the Font Face menu": "कस्टम फ़ॉन्ट को फ़ॉन्ट फेस मेनू से चुना जा सकता है",
"Manage Custom Fonts": "कस्टम फ़ॉन्ट प्रबंधन",
"Select Files": "फ़ाइलें चुनें",
"Select Image": "छवि चुनें",
"Select Video": "वीडियो चुनें",
"Select Audio": "ऑडियो चुनें",
"Select Fonts": "फ़ॉन्ट चुनें",
"Supported font formats: .ttf, .otf, .woff, .woff2": "समर्थित फ़ॉन्ट प्रारूप: .ttf, .otf, .woff, .woff2",
"Push Progress": "पुश प्रगति",
"Pull Progress": "पुल प्रगति",
"Previous Paragraph": "पिछला पैराग्राफ",
"Previous Sentence": "पिछला वाक्य",
"Pause": "रोकें",
"Play": "चलाएं",
"Next Sentence": "अगला वाक्य",
"Next Paragraph": "अगला पैराग्राफ",
"Separate Cover Page": "अलग कवर पृष्ठ",
"Resize Notebook": "नोटबुक का आकार बदलें",
"Resize Sidebar": "साइडबार का आकार बदलें",
"Get Help from the Readest Community": "Readest समुदाय से मदद लें",
"Remove cover image": "कवर इमेज हटाएं",
"Bookshelf": "पुस्तक शेल्फ",
"View Menu": "मेनू देखें",
"Settings Menu": "सेटिंग्स मेनू",
"View account details and quota": "खाता विवरण और कोटा देखें",
"Library Header": "पुस्तकालय शीर्षक",
"Book Content": "पुस्तक की सामग्री",
"Footer Bar": "फुटर बार",
"Header Bar": "हेडर बार",
"View Options": "देखने के विकल्प",
"Book Menu": "पुस्तक मेनू",
"Search Options": "खोज विकल्प",
"Close": "बंद करें",
"Delete Book Options": "पुस्तक हटाने के विकल्प",
"ON": "चालू",
"OFF": "बंद",
"Reading Progress": "पढ़ने की प्रगति",
"Page Margin": "पृष्ठ का मार्जिन",
"Remove Bookmark": "मार्कर हटाएं",
"Add Bookmark": "मार्कर जोड़ें",
"Books Content": "पुस्तकों की सामग्री",
"Jump to Location": "स्थान पर जाएं",
"Unpin Notebook": "नोटबुक अनपिन करें",
"Pin Notebook": "नोटबुक पिन करें",
"Hide Search Bar": "खोज बार छिपाएं",
"Show Search Bar": "खोज बार दिखाएं",
"On {{current}} of {{total}} page": "पृष्ठ {{current}} कुल {{total}} पर",
"Section Title": "अनुभाग शीर्षक",
"Decrease": "कम करें",
"Increase": "बढ़ाएं",
"Settings Panels": "सेटिंग्स पैनल",
"Settings": "सेटिंग्स",
"Unpin Sidebar": "साइडबार अनपिन करें",
"Pin Sidebar": "साइडबार पिन करें",
"Toggle Sidebar": "साइडबार टॉगल करें",
"Toggle Translation": "अनुवाद टॉगल करें",
"Translation Disabled": "अनुवाद अक्षम",
"Minimize": "न्यूनतम करें",
"Maximize or Restore": "अधिकतम या पुनर्स्थापित करें",
"Exit Parallel Read": "पैरालल रीड से बाहर निकलें",
"Enter Parallel Read": "पैरालल रीड में प्रवेश करें",
"Zoom Level": "ज़ूम स्तर",
"Zoom Out": "ज़ूम आउट",
"Reset Zoom": "ज़ूम रीसेट करें",
"Zoom In": "ज़ूम इन",
"Zoom Mode": "ज़ूम मोड",
"Single Page": "एकल पृष्ठ",
"Auto Spread": "स्वचालित फैलाव",
"Fit Page": "पृष्ठ में फिट करें",
"Fit Width": "चौड़ाई में फिट करें",
"Failed to select directory": "निर्देशिका का चयन करने में विफल",
"The new data directory must be different from the current one.": "नया डेटा निर्देशिका वर्तमान से भिन्न होना चाहिए।",
"Migration failed: {{error}}": "माइग्रेशन विफल: {{error}}",
"Change Data Location": "डेटा स्थान बदलें",
"Current Data Location": "वर्तमान डेटा स्थान",
"Total size: {{size}}": "कुल आकार: {{size}}",
"Calculating file info...": "फ़ाइल जानकारी की गणना कर रहे हैं...",
"New Data Location": "नया डेटा स्थान",
"Choose Different Folder": "विभिन्न फ़ोल्डर चुनें",
"Choose New Folder": "नया फ़ोल्डर चुनें",
"Migrating data...": "डेटा माइग्रेट कर रहे हैं...",
"Copying: {{file}}": "कॉपी कर रहे हैं: {{file}}",
"{{current}} of {{total}} files": "{{current}} में से {{total}} फ़ाइलें",
"Migration completed successfully!": "माइग्रेशन सफलतापूर्वक पूरा हुआ!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "आपका डेटा नए स्थान पर स्थानांतरित कर दिया गया है। कृपया प्रक्रिया को पूरा करने के लिए एप्लिकेशन को पुनरारंभ करें।",
"Migration failed": "माइग्रेशन विफल",
"Important Notice": "महत्वपूर्ण सूचना",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "यह आपके सभी ऐप डेटा को नए स्थान पर स्थानांतरित कर देगा। सुनिश्चित करें कि गंतव्य में पर्याप्त खाली स्थान है।",
"Restart App": "एप्लिकेशन पुनरारंभ करें",
"Start Migration": "माइग्रेशन प्रारंभ करें",
"Advanced Settings": "उन्नत सेटिंग्स",
"File count: {{size}}": "फ़ाइलों की संख्या: {{size}}",
"Background Read Aloud": "पृष्ठभूमि में वाचन",
"Ready to read aloud": "उच्च स्वर में पढ़ने के लिए तैयार",
"Read Aloud": "उच्च स्वर में पढ़ें",
"Screen Brightness": "स्क्रीन ब्राइटनेस",
"Background Image": "पृष्ठभूमि छवि",
"Import Image": "छवि आयात करें",
"Opacity": "अस्पष्टता",
"Size": "आकार",
"Cover": "कवर",
"Contain": "समाहित करें",
"{{number}} pages left in chapter": "इस अध्याय में {{number}} पृष्ठ शेष हैं",
"Device": "डिवाइस",
"E-Ink Mode": "ई-इंक मोड",
"Highlight Colors": "हाइलाइट रंग",
"Auto Screen Brightness": "स्वचालित स्क्रीन ब्राइटनेस",
"Pagination": "पृष्ठांकन",
"Disable Double Tap": "डबल टैप अक्षम करें",
"Tap to Paginate": "पृष्ठांकन के लिए टैप करें",
"Click to Paginate": "पृष्ठांकन के लिए क्लिक करें",
"Tap Both Sides": "दोनों पक्षों पर टैप करें",
"Click Both Sides": "दोनों पक्षों पर क्लिक करें",
"Swap Tap Sides": "स्वैप टैप साइड्स",
"Swap Click Sides": "स्वैप क्लिक साइड्स",
"Source and Translated": "स्रोत और अनुवादित",
"Translated Only": "केवल अनुवादित",
"Source Only": "केवल स्रोत",
"TTS Text": "TTS टेक्स्ट",
"The book file is corrupted": "पुस्तक फ़ाइल भ्रष्ट है।",
"The book file is empty": "पुस्तक फ़ाइल खाली है।",
"Failed to open the book file": "पुस्तक फ़ाइल खोलने में विफल।",
"On-Demand Purchase": "आवश्यकता के अनुसार खरीदारी",
"Full Customization": "पूर्ण अनुकूलन",
"Lifetime Plan": "जीवनकाल योजना",
"One-Time Payment": "एक बार का भुगतान",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "सभी उपकरणों पर विशिष्ट सुविधाओं तक जीवनकाल पहुंच का आनंद लेने के लिए एक बार का भुगतान करें। जब आपको उनकी आवश्यकता हो, तो केवल विशिष्ट सुविधाओं या सेवाओं को खरीदें।",
"Expand Cloud Sync Storage": "क्लाउड सिंक स्टोरेज का विस्तार करें",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "एक बार के खरीदारी के साथ अपने क्लाउड स्टोरेज का विस्तार करें। प्रत्येक अतिरिक्त खरीदारी अधिक स्थान जोड़ती है।",
"Unlock All Customization Options": "सभी अनुकूलन विकल्प अनलॉक करें",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "अतिरिक्त थीम, फ़ॉन्ट, लेआउट विकल्प और पढ़ने के लिए, अनुवादक, क्लाउड स्टोरेज सेवाएँ अनलॉक करें।",
"Purchase Successful!": "खरीदारी सफल!",
"lifetime": "जीवनकाल",
"Thank you for your purchase! Your payment has been processed successfully.": "आपकी खरीदारी के लिए धन्यवाद! आपका भुगतान सफलतापूर्वक संसाधित हो गया है।",
"Order ID:": "ऑर्डर आईडी:",
"TTS Highlighting": "TTS हाइलाइटिंग",
"Style": "शैली",
"Underline": "रेखांकित",
"Strikethrough": "रेखांकित करें",
"Squiggly": "स्क्विगली",
"Outline": "आउटलाइन",
"Save Current Color": "वर्तमान रंग सहेजें",
"Quick Colors": "त्वरित रंग",
"Highlighter": "हाइलाइटर",
"Save Book Cover": "बुक कवर सहेजें",
"Auto-save last book cover": "अंतिम पुस्तक कवर को स्वचालित रूप से सहेजें",
"Back": "वापस",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "पुष्टिकरण ईमेल भेज दिया गया है! कृपया परिवर्तन की पुष्टि करने के लिए अपना पुराना और नया ईमेल पता जांचें।",
"Failed to update email": "ईमेल अपडेट करने में विफल",
"New Email": "नया ईमेल",
"Your new email": "आपका नया ईमेल",
"Updating email ...": "ईमेल अपडेट किया जा रहा है ...",
"Update email": "ईमेल अपडेट करें",
"Current email": "वर्तमान ईमेल",
"Update Email": "ईमेल अपडेट करें",
"All": "सभी",
"Unable to open book": "पुस्तक खोलने में असमर्थ",
"Punctuation": "विराम चिह्न",
"Replace Quotation Marks": "उद्धरण चिह्न बदलें",
"Enabled only in vertical layout.": "केवल ऊर्ध्वाधर लेआउट में सक्षम।",
"No Conversion": "कोई रूपांतरण नहीं",
"Simplified to Traditional": "सरलीकृत → पारंपरिक",
"Traditional to Simplified": "पारंपरिक → सरलीकृत",
"Simplified to Traditional (Taiwan)": "सरलीकृत → पारंपरिक (ताइवान)",
"Simplified to Traditional (Hong Kong)": "सरलीकृत → पारंपरिक (हांगकांग)",
"Simplified to Traditional (Taiwan), with phrases": "सरलीकृत → पारंपरिक (ताइवान • वाक्यांश)",
"Traditional (Taiwan) to Simplified": "पारंपरिक (ताइवान) → सरलीकृत",
"Traditional (Hong Kong) to Simplified": "पारंपरिक (हांगकांग) → सरलीकृत",
"Traditional (Taiwan) to Simplified, with phrases": "पारंपरिक (ताइवान • वाक्यांश) → सरलीकृत",
"Convert Simplified and Traditional Chinese": "सरलीकृत/पारंपरिक चीनी रूपांतरण",
"Convert Mode": "रूपांतरण मोड",
"Failed to auto-save book cover for lock screen: {{error}}": "लॉक स्क्रीन के लिए पुस्तक कवर स्वचालित रूप से सहेजने में विफल: {{error}}",
"Download from Cloud": "क्लाउड से डाउनलोड करें",
"Upload to Cloud": "क्लाउड पर अपलोड करें",
"Clear Custom Fonts": "कस्टम फ़ॉन्ट साफ़ करें",
"Columns": "कॉलम",
"OPDS Catalogs": "OPDS कैटलॉग",
"Adding LAN addresses is not supported in the web app version.": "वेब ऐप संस्करण में LAN पता जोड़ना समर्थित नहीं है।",
"Invalid OPDS catalog. Please check the URL.": "अमान्य OPDS कैटलॉग। कृपया URL जांचें।",
"Browse and download books from online catalogs": "ऑनलाइन कैटलॉग से किताबें ब्राउज़ और डाउनलोड करें",
"My Catalogs": "मेरे कैटलॉग",
"Add Catalog": "कैटलॉग जोड़ें",
"No catalogs yet": "अभी कोई कैटलॉग नहीं",
"Add your first OPDS catalog to start browsing books": "किताबें ब्राउज़ करने के लिए अपना पहला OPDS कैटलॉग जोड़ें",
"Add Your First Catalog": "अपना पहला कैटलॉग जोड़ें",
"Browse": "ब्राउज़",
"Popular Catalogs": "लोकप्रिय कैटलॉग",
"Add": "जोड़ें",
"Add OPDS Catalog": "OPDS कैटलॉग जोड़ें",
"Catalog Name": "कैटलॉग नाम",
"My Calibre Library": "मेरी Calibre लाइब्रेरी",
"OPDS URL": "OPDS URL",
"Username (optional)": "यूज़रनेम (वैकल्पिक)",
"Password (optional)": "पासवर्ड (वैकल्पिक)",
"Description (optional)": "विवरण (वैकल्पिक)",
"A brief description of this catalog": "इस कैटलॉग का संक्षिप्त विवरण",
"Validating...": "मान्य किया जा रहा है...",
"View All": "सभी देखें",
"Forward": "आगे",
"Home": "होम",
"{{count}} items_one": "{{count}} आइटम",
"{{count}} items_other": "{{count}} आइटम",
"Download completed": "डाउनलोड पूरा हुआ",
"Download failed": "डाउनलोड विफल हुआ",
"Open Access": "ओपन एक्सेस",
"Borrow": "उधार लें",
"Buy": "खरीदें",
"Subscribe": "सदस्यता लें",
"Sample": "नमूना",
"Download": "डाउनलोड",
"Open & Read": "खोलें और पढ़ें",
"Tags": "टैग",
"Tag": "टैग",
"First": "पहला",
"Previous": "पिछला",
"Next": "अगला",
"Last": "अंतिम",
"Cannot Load Page": "पृष्ठ लोड नहीं किया जा सका",
"An error occurred": "एक त्रुटि हुई",
"Online Library": "ऑनलाइन लाइब्रेरी",
"URL must start with http:// or https://": "URL http:// या https:// से शुरू होना चाहिए",
"Title, Author, Tag, etc...": "शीर्षक, लेखक, टैग, आदि...",
"Query": "प्रश्न",
"Subject": "विषय",
"Enter {{terms}}": "{{terms}} दर्ज करें",
"No search results found": "कोई खोज परिणाम नहीं मिला",
"Failed to load OPDS feed: {{status}} {{statusText}}": "OPDS फ़ीड लोड करने में विफल: {{status}} {{statusText}}",
"Search in {{title}}": "{{title}} में खोजें",
"Manage Storage": "स्टोरेज प्रबंधित करें",
"Failed to load files": "फ़ाइलें लोड करने में विफल",
"Deleted {{count}} file(s)_one": "{{count}} फ़ाइल हटाई गई",
"Deleted {{count}} file(s)_other": "{{count}} फ़ाइलें हटाई गईं",
"Failed to delete {{count}} file(s)_one": "{{count}} फ़ाइल हटाने में विफल",
"Failed to delete {{count}} file(s)_other": "{{count}} फ़ाइलें हटाने में विफल",
"Failed to delete files": "फ़ाइलें हटाने में विफल",
"Total Files": "कुल फ़ाइलें",
"Total Size": "कुल आकार",
"Quota": "कोटा",
"Used": "उपयोग किया गया",
"Files": "फ़ाइलें",
"Search files...": "फ़ाइलें खोजें...",
"Newest First": "नवीनतम पहले",
"Oldest First": "सबसे पुराने पहले",
"Largest First": "सबसे बड़ी पहले",
"Smallest First": "सबसे छोटी पहले",
"Name A-Z": "नाम A-Z",
"Name Z-A": "नाम Z-A",
"{{count}} selected_one": "{{count}} चयनित",
"{{count}} selected_other": "{{count}} चयनित",
"Delete Selected": "चयनित हटाएँ",
"Created": "बनाई गई",
"No files found": "कोई फ़ाइल नहीं मिली",
"No files uploaded yet": "अभी तक कोई फ़ाइल अपलोड नहीं की गई",
"files": "फ़ाइलें",
"Page {{current}} of {{total}}": "पृष्ठ {{current}} / {{total}}",
"Are you sure to delete {{count}} selected file(s)?_one": "क्या आप वाकई {{count}} चयनित फ़ाइल हटाना चाहते हैं?",
"Are you sure to delete {{count}} selected file(s)?_other": "क्या आप वाकई {{count}} चयनित फ़ाइलें हटाना चाहते हैं?",
"Cloud Storage Usage": "क्लाउड स्टोरेज उपयोग",
"Rename Group": "समूह का नाम बदलें",
"From Directory": "निर्देशिका से",
"Successfully imported {{count}} book(s)_one": "सफलतापूर्वक 1 पुस्तक आयात की गई",
"Successfully imported {{count}} book(s)_other": "सफलतापूर्वक {{count}} पुस्तकों का आयात किया गया",
"Count": "गणना",
"Start Page": "प्रारंभ पृष्ठ",
"Search in OPDS Catalog...": "OPDS कैटलॉग में खोजें...",
"Please log in to use advanced TTS features.": "उन्नत TTS सुविधाओं का उपयोग करने के लिए कृपया लॉग इन करें।"
}
@@ -8,7 +8,6 @@
"Auto Mode": "Mode Otomatis",
"Behavior": "Perilaku",
"Book": "Buku",
"Book Cover": "Sampul Buku",
"Bookmark": "Penanda",
"Cancel": "Batal",
"Chapter": "Bab",
@@ -18,7 +17,6 @@
"Confirm Deletion": "Konfirmasi Penghapusan",
"Copied to notebook": "Disalin ke buku catatan",
"Copy": "Salin",
"Custom CSS": "CSS Kustom",
"Dark Mode": "Mode Gelap",
"Default": "Default",
"Default Font": "Font Default",
@@ -28,7 +26,6 @@
"Dictionary": "Kamus",
"Download Readest": "Unduh Readest",
"Edit": "Edit",
"Enter your custom CSS here...": "Masukkan CSS kustom Anda di sini...",
"Excerpts": "Kutipan",
"Failed to import book(s): {{filenames}}": "Gagal mengimpor buku: {{filenames}}",
"Fast": "Cepat",
@@ -48,7 +45,6 @@
"Horizontal Direction": "Arah Horizontal",
"Hyphenation": "Pemenggalan Kata",
"Import Books": "Impor Buku",
"Language:": "Bahasa:",
"Layout": "Tata Letak",
"Light Mode": "Mode Terang",
"Loading...": "Memuat...",
@@ -70,8 +66,8 @@
"Paging Animation": "Animasi Halaman",
"Paragraph": "Paragraf",
"Parallel Read": "Baca Paralel",
"Published:": "Diterbitkan:",
"Publisher:": "Penerbit:",
"Published": "Diterbitkan",
"Publisher": "Penerbit",
"Reading Progress Synced": "Progres membaca disinkronkan",
"Reload Page": "Muat Ulang Halaman",
"Reveal in File Explorer": "Tampilkan di File Explorer",
@@ -85,7 +81,6 @@
"Search...": "Cari...",
"Select Book": "Pilih Buku",
"Select Books": "Pilih buku",
"Select Multiple Books": "Pilih beberapa buku",
"Sepia": "Sepia",
"Serif Font": "Font Serif",
"Show Book Details": "Tampilkan Detail Buku",
@@ -96,16 +91,15 @@
"Slow": "Lambat",
"Solarized": "Solarized",
"Speak": "Bicara",
"Subjects:": "Subjek:",
"Subjects": "Subjek",
"System Fonts": "Font Sistem",
"TTS not supported in this device": "TTS tidak didukung di perangkat ini",
"Theme Color": "Warna Tema",
"Theme Mode": "Mode Tema",
"Translate": "Terjemahkan",
"Translated Text": "Teks Terjemahan",
"Unknown": "Tidak Diketahui",
"Untitled": "Tanpa Judul",
"Updated:": "Diperbarui:",
"Updated": "Diperbarui",
"Version {{version}}": "Versi {{version}}",
"Vertical Direction": "Arah Vertikal",
"Welcome to your library. You can import your books here and read them anytime.": "Selamat datang di perpustakaan Anda. Anda dapat mengimpor buku-buku Anda di sini dan membacanya kapan saja.",
@@ -114,8 +108,6 @@
"Your Library": "Perpustakaan Anda",
"TTS not supported for PDF": "TTS tidak didukung untuk PDF",
"Override Book Font": "Ganti Font Buku",
"Vertical Margins (px)": "Margin Vertikal (px)",
"Horizontal Margins (%)": "Margin Horizontal (%)",
"Apply to All Books": "Terapkan ke semua buku",
"Apply to This Book": "Terapkan ke buku ini",
"Unable to fetch the translation. Try again later.": "Tidak dapat mengambil terjemahan. Coba lagi nanti.",
@@ -124,14 +116,13 @@
"Book Details": "Detail Buku",
"From Local File": "Dari file lokal",
"TOC": "Daftar Isi",
"Table of Contents": "Daftar Isi",
"Book uploaded: {{title}}": "Buku diunggah: {{title}}",
"Failed to upload book: {{title}}": "Gagal mengunggah buku: {{title}}",
"Book downloaded: {{title}}": "Buku diunduh: {{title}}",
"Failed to download book: {{title}}": "Gagal mengunduh buku: {{title}}",
"Upload Book": "Unggah Buku",
"Auto Upload Books to Cloud": "Unggah Buku Otomatis ke Cloud",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% dari Penyimpanan Cloud Digunakan.",
"Storage": "Penyimpanan",
"Book deleted: {{title}}": "Buku dihapus: {{title}}",
"Failed to delete book: {{title}}": "Gagal menghapus buku: {{title}}",
"Check Updates on Start": "Periksa Pembaruan saat Memulai",
@@ -163,7 +154,7 @@
"Create a Password": "Buat kata sandi",
"Sign up": "Daftar",
"Signing up...": "Sedang mendaftar...",
"Dont have an account? Sign up": "Belum punya akun? Daftar",
"Don't have an account? Sign up": "Belum punya akun? Daftar",
"Check your email for the confirmation link": "Periksa email Anda untuk tautan konfirmasi",
"Signing in ...": "Sedang masuk ...",
"Send a magic link email": "Kirim email tautan ajaib",
@@ -186,37 +177,14 @@
"Sign in with Apple": "Masuk dengan Apple",
"Sign in with GitHub": "Masuk dengan GitHub",
"Account": "Akun",
"Cloud Storage": "Penyimpanan Cloud",
"Failed to delete user. Please try again later.": "Gagal menghapus pengguna. Silakan coba lagi nanti.",
"Unlimited Offline/Online Reading": "Membaca Offline/Online Tanpa Batas",
"Unlimited Cloud Sync Devices": "Perangkat Sinkronisasi Cloud Tanpa Batas",
"Essential Text-to-Speech Voices": "Suara Text-to-Speech Esensial",
"DeepL Free Access": "Akses DeepL Gratis",
"Community Support": "Dukungan Komunitas",
"500 MB Cloud Sync Space": "Ruang Sinkronisasi Cloud 500 MB",
"Includes All Free Tier Benefits": "Termasuk Semua Manfaat Tingkat Gratis",
"AI Summaries": "Ringkasan AI",
"AI Translations": "Terjemahan AI",
"Priority Support": "Dukungan Prioritas",
"DeepL Pro Access": "Akses DeepL Pro",
"Expanded Text-to-Speech Voices": "Suara Text-to-Speech yang Diperluas",
"2000 MB Cloud Sync Space": "Ruang Sinkronisasi Cloud 2000 MB",
"Includes All Plus Tier Benefits": "Termasuk Semua Manfaat Tingkat Plus",
"Unlimited AI Summaries": "Ringkasan AI Tanpa Batas",
"Unlimited AI Translations": "Terjemahan AI Tanpa Batas",
"Unlimited DeepL Pro Access": "Akses DeepL Pro Tanpa Batas",
"Advanced AI Tools": "Alat AI Lanjutan",
"Early Feature Access": "Akses Fitur Awal",
"10 GB Cloud Sync Space": "Ruang Sinkronisasi Cloud 10 GB",
"Loading profile...": "Memuat profil...",
"Features": "Fitur",
"Delete Account": "Hapus Akun",
"Delete Your Account?": "Hapus Akun Anda?",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "Tindakan ini tidak dapat dibatalkan. Semua data Anda di cloud akan dihapus secara permanen.",
"Delete Permanently": "Hapus Secara Permanen",
"Free Tier": "Tingkat Gratis",
"Plus Tier": "Tingkat Plus",
"Pro Tier": "Tingkat Pro",
"RTL Direction": "Arah RTL",
"Maximum Column Height": "Tinggi Kolom Maksimum",
"Maximum Column Width": "Lebar Kolom Maksimum",
@@ -225,7 +193,7 @@
"No supported files found. Supported formats: {{formats}}": "Tidak ada file yang didukung ditemukan. Format yang didukung: {{formats}}",
"Drop to Import Books": "Jatuhkan untuk Mengimpor Buku",
"Custom": "Kustom",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n—William Shakespeare": "Seluruh dunia adalah panggung,\nDan semua pria dan wanita hanyalah pemain;\nMereka memiliki keluar dan masuk mereka,\nDan seorang pria dalam hidupnya memainkan banyak peran,\nTindakannya ada tujuh zaman.\n\n— William Shakespeare",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "Seluruh dunia adalah panggung,\nDan semua pria dan wanita hanyalah pemain;\nMereka memiliki keluar dan masuk mereka,\nDan seorang pria dalam hidupnya memainkan banyak peran,\nTindakannya ada tujuh zaman.\n\n— William Shakespeare",
"Custom Theme": "Tema Kustom",
"Theme Name": "Nama Tema",
"Text Color": "Warna Teks",
@@ -252,9 +220,9 @@
"Auto Import on File Open": "Impor Otomatis saat File Dibuka",
"LXGW WenKai GB Screen": "LXGW WenKai SC",
"LXGW WenKai TC": "LXGW WenKai TC",
"No chapters detected.": "Tidak ada bab yang terdeteksi.",
"Failed to parse the EPUB file.": "Gagal mengurai file EPUB.",
"This book format is not supported.": "Format buku ini tidak didukung.",
"No chapters detected": "Tidak ada bab yang terdeteksi",
"Failed to parse the EPUB file": "Gagal mengurai file EPUB",
"This book format is not supported": "Format buku ini tidak didukung",
"Unable to fetch the translation. Please log in first and try again.": "Tidak dapat mengambil terjemahan. Silakan masuk terlebih dahulu dan coba lagi.",
"Group": "Grup",
"Always on Top": "Selalu di Atas",
@@ -267,13 +235,13 @@
"Clear Search": "Hapus Pencarian",
"Header & Footer": "Header & Footer",
"Apply also in Scrolled Mode": "Terapkan juga di Mode Gulir",
"A new version of Readest is Available!": "Versi baru Readest Tersedia!",
"A new version of Readest is available!": "Versi baru Readest Tersedia!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Readest {{newVersion}} tersedia (versi terinstal {{currentVersion}}).",
"Download and install now?": "Unduh dan instal sekarang?",
"Downloading {{downloaded}} of {{contentLength}}": "Mengunduh {{downloaded}} dari {{contentLength}}",
"Download finished": "Unduhan selesai",
"DOWNLOAD & INSTALL": "UNDUH & INSTAL",
"Changelog:": "Catatan Perubahan:",
"Changelog": "Catatan Perubahan",
"Software Update": "Pembaruan Perangkat Lunak",
"Title": "Judul",
"Date Read": "Tanggal Dibaca",
@@ -282,18 +250,15 @@
"Ascending": "Naik",
"Descending": "Turun",
"Sort by...": "Urutkan berdasarkan...",
"Added:": "Ditambahkan:",
"Format:": "Format:",
"Added": "Ditambahkan",
"GuanKiapTsingKhai-T": "GuanKiapTsingKhai-T",
"Description:": "Deskripsi:",
"Description": "Deskripsi",
"No description available": "Tidak ada deskripsi yang tersedia",
"List": "Daftar",
"Grid": "Jala",
"(from 'As You Like It', Act II)": "(dari 'Seperti yang Anda Inginkan', Bab II)",
"Link Color": "Warna Tautan",
"Volume Keys for Page Flip": "Volume Keys untuk Pembalikan Halaman",
"Clicks for Page Flip": "Klik untuk Pembalikan Halaman",
"Swap Clicks Area": "Area Klik Tukar",
"Screen": "Screen",
"Orientation": "Orientasi",
"Portrait": "Potret",
@@ -302,7 +267,7 @@
"Checking for updates...": "Memeriksa pembaruan...",
"Error checking for updates": "Kesalahan saat memeriksa pembaruan",
"Details": "Detail",
"File Size:": "Ukuran File:",
"File Size": "Ukuran File",
"Auto Detect": "Deteksi Otomatis",
"Next Section": "Bagian Selanjutnya",
"Previous Section": "Bagian Sebelumnya",
@@ -328,9 +293,467 @@
"Disable Translation": "Nonaktifkan Terjemahan",
"Scroll": "Scroll",
"Overlap Pixels": "Overlap Piksel",
"Click": "Klik",
"System Language": "Bahasa Sistem",
"Security": "Keamanan",
"Allow JavaScript": "Izinkan JavaScript",
"Enable only if you trust the file.": "Aktifkan hanya jika Anda mempercayai file tersebut."
"Enable only if you trust the file.": "Aktifkan hanya jika Anda mempercayai file tersebut.",
"Sort TOC by Page": "Urutkan TOC berdasarkan Halaman",
"Search in {{count}} Book(s)..._other": "Cari di {{count}} Buku...",
"No notes match your search": "Tidak ada catatan ditemukan",
"Search notes and excerpts...": "Cari catatan...",
"Sign in to Sync": "Masuk untuk Sinkronisasi",
"Synced at {{time}}": "Disinkronkan pada {{time}}",
"Never synced": "Belum pernah disinkronkan",
"Show Remaining Time": "Perlihatkan Waktu Tersisa",
"{{time}} min left in chapter": "{{time}} menit tersisa di bab",
"Override Book Color": "Ubah Warna Buku",
"Login Required": "Perlu masuk",
"Quota Exceeded": "Kuota terlampaui",
"{{percentage}}% of Daily Translation Characters Used.": "{{percentage}}% dari Karakter Terjemahan Harian Digunakan.",
"Translation Characters": "Karakter Terjemahan",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}} suara",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "Terjadi kesalahan. Jangan khawatir, tim kami telah diberitahu dan kami sedang bekerja untuk memperbaikinya.",
"Error Details:": "Rincian Kesalahan:",
"Try Again": "Coba Lagi",
"Need help?": "Butuh bantuan?",
"Contact Support": "Hubungi Dukungan",
"Code Highlighting": "Penyorotan Kode",
"Enable Highlighting": "Aktifkan Penyorotan",
"Code Language": "Bahasa Kode",
"Top Margin (px)": "Margin Atas (px)",
"Bottom Margin (px)": "Margin Bawah (px)",
"Right Margin (px)": "Margin Kanan (px)",
"Left Margin (px)": "Margin Kiri (px)",
"Column Gap (%)": "Jarak Antar Kolom (%)",
"Always Show Status Bar": "Selalu Tampilkan Bilah Status",
"Custom Content CSS": "CSS konten",
"Enter CSS for book content styling...": "Masukkan CSS untuk gaya konten buku...",
"Custom Reader UI CSS": "CSS antarmuka",
"Enter CSS for reader interface styling...": "Masukkan CSS untuk gaya antarmuka pembaca...",
"Crop": "Potong",
"Book Covers": "Sampul Buku",
"Fit": "Pas",
"Reset {{settings}}": "Atur Ulang {{settings}}",
"Reset Settings": "Atur Ulang Pengaturan",
"{{count}} pages left in chapter_other": "{{count}} halaman tersisa di bab ini",
"Show Remaining Pages": "Tampilkan halaman tersisa",
"Source Han Serif CN VF": "Source Han Serif",
"Huiwen-mincho": "Huiwen Mincho",
"KingHwa_OldSong": "KingHwa Song",
"Manage Subscription": "Kelola Langganan",
"Coming Soon": "Segera Hadir",
"Upgrade to {{plan}}": "Tingkatkan ke {{plan}}",
"Upgrade to Plus or Pro": "Tingkatkan ke Plus atau Pro",
"Current Plan": "Paket Saat Ini",
"Plan Limits": "Batas Paket",
"Processing your payment...": "Memproses pembayaran Anda...",
"Please wait while we confirm your subscription.": "Mohon tunggu saat kami mengonfirmasi langganan Anda.",
"Payment Processing": "Memproses Pembayaran",
"Your payment is being processed. This usually takes a few moments.": "Pembayaran Anda sedang diproses. Ini biasanya memerlukan beberapa saat.",
"Payment Failed": "Pembayaran Gagal",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "Kami tidak dapat memproses langganan Anda. Silakan coba lagi atau hubungi dukungan jika masalah berlanjut.",
"Back to Profile": "Kembali ke Profil",
"Subscription Successful!": "Langganan Berhasil!",
"Thank you for your subscription! Your payment has been processed successfully.": "Terima kasih atas langganan Anda! Pembayaran Anda telah berhasil diproses.",
"Email:": "Email:",
"Plan:": "Paket:",
"Amount:": "Jumlah:",
"Go to Library": "Pergi ke Perpustakaan",
"Need help? Contact our support team at support@readest.com": "Perlu bantuan? Hubungi tim dukungan kami di support@readest.com",
"Free Plan": "Paket Gratis",
"month": "bulan",
"AI Translations (per day)": "Terjemahan AI (per hari)",
"Plus Plan": "Paket Plus",
"Includes All Free Plan Benefits": "Termasuk Semua Manfaat Paket Gratis",
"Pro Plan": "Paket Pro",
"More AI Translations": "Lebih Banyak Terjemahan AI",
"Complete Your Subscription": "Selesaikan Langganan Anda",
"{{percentage}}% of Cloud Sync Space Used.": "{{percentage}}% ruang sinkronisasi cloud terpakai",
"Cloud Sync Storage": "Penyimpanan Sinkronisasi Cloud",
"Disable": "Nonaktifkan",
"Enable": "Aktifkan",
"Upgrade to Readest Premium": "Tingkatkan ke Readest Premium",
"Show Source Text": "Perlihatkan Teks Sumber",
"Cross-Platform Sync": "Sinkronisasi Lintas Platform",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "Sinkronkan pustaka, kemajuan, dan catatan di semua perangkat Anda.",
"Customizable Reading": "Membaca yang Dapat Disesuaikan",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "Atur font, tata letak, dan tema sesuai keinginan.",
"AI Read Aloud": "Pembacaan AI",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "Dengarkan buku dengan suara AI alami.",
"AI Translations": "Terjemahan AI",
"Connect with fellow readers and get help fast in our friendly community channels.": "Terhubung dengan komunitas dan dapatkan bantuan cepat.",
"Unlimited AI Read Aloud Hours": "Waktu Baca AI Tanpa Batas",
"Listen without limits—convert as much text as you like into immersive audio.": "Dengarkan sebanyak yang Anda mau tanpa batas.",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "Dapatkan lebih banyak kuota dan fitur terjemahan lanjutan.",
"DeepL Pro Access": "Akses DeepL Pro",
"Enjoy faster responses and dedicated assistance whenever you need help.": "Nikmati dukungan prioritas kapan saja.",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "Kuota harian habis. Tingkatkan paket Anda untuk lanjut.",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "Terjemahkan teks apa pun secara instan dengan kekuatan Google, Azure, atau DeepL—pahami konten dalam bahasa apa pun.",
"Includes All Plus Plan Benefits": "Termasuk Semua Manfaat Paket Plus",
"Early Feature Access": "Akses Fitur Lebih Awal",
"Be the first to explore new features, updates, and innovations before anyone else.": "Jadi yang pertama menjelajahi fitur baru, pembaruan, dan inovasi.",
"Advanced AI Tools": "Alat AI Canggih",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "Manfaatkan alat AI canggih untuk membaca cerdas, terjemahan, dan penemuan konten.",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "Terjemahkan hingga 100.000 karakter harian dengan mesin terjemahan paling akurat.",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "Terjemahkan hingga 500.000 karakter harian dengan mesin terjemahan paling akurat.",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "Simpan dan akses koleksi bacaan lengkap dengan aman menggunakan penyimpanan cloud 5 GB.",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "Simpan dan akses koleksi bacaan lengkap dengan aman menggunakan penyimpanan cloud 20 GB.",
"Deleted cloud backup of the book: {{title}}": "Cadangan cloud buku dihapus: {{title}}",
"Are you sure to delete the cloud backup of the selected book?": "Apakah Anda yakin ingin menghapus cadangan cloud dari buku yang dipilih?",
"What's New in Readest": "Yang Baru di Readest",
"Enter book title": "Masukkan judul buku",
"Subtitle": "Subjudul",
"Enter book subtitle": "Masukkan subjudul buku",
"Enter author name": "Masukkan nama penulis",
"Series": "Seri",
"Enter series name": "Masukkan nama seri",
"Series Index": "Nomor seri",
"Enter series index": "Masukkan nomor seri",
"Total in Series": "Total dalam seri",
"Enter total books in series": "Masukkan total buku dalam seri",
"Enter publisher": "Masukkan penerbit",
"Publication Date": "Tanggal terbit",
"Identifier": "Pengidentifikasi",
"Enter book description": "Masukkan deskripsi buku",
"Change cover image": "Ubah gambar sampul",
"Replace": "Ganti",
"Unlock cover": "Buka kunci sampul",
"Lock cover": "Kunci sampul",
"Auto-Retrieve Metadata": "Ambil metadata otomatis",
"Auto-Retrieve": "Ambil otomatis",
"Unlock all fields": "Buka kunci semua field",
"Unlock All": "Buka semua",
"Lock all fields": "Kunci semua field",
"Lock All": "Kunci semua",
"Reset": "Reset",
"Edit Metadata": "Edit metadata",
"Locked": "Terkunci",
"Select Metadata Source": "Pilih sumber metadata",
"Keep manual input": "Pertahankan input manual",
"Google Books": "Google Books",
"Open Library": "Open Library",
"Fiction, Science, History": "Fiksi, Sains, Sejarah",
"Open Book in New Window": "Buka Buku di Jendela Baru",
"Voices for {{lang}}": "Suara untuk {{lang}}",
"Yandex Translate": "Yandex Translate",
"YYYY or YYYY-MM-DD": "YYYY atau YYYY-MM-DD",
"Restore Purchase": "Pulihkan Pembelian",
"No purchases found to restore.": "Tidak ada pembelian yang ditemukan untuk dipulihkan.",
"Failed to restore purchases.": "Gagal memulihkan pembelian.",
"Failed to manage subscription.": "Gagal mengelola langganan.",
"Failed to load subscription plans.": "Gagal memuat rencana langganan.",
"year": "tahun",
"Failed to create checkout session": "Gagal membuat sesi checkout",
"Storage": "Penyimpanan",
"Terms of Service": "Ketentuan Layanan",
"Privacy Policy": "Kebijakan Privasi",
"Disable Double Click": "Nonaktifkan Klik Ganda",
"TTS not supported for this document": "TTS tidak didukung untuk dokumen ini",
"Reset Password": "Reset Kata Sandi",
"Show Reading Progress": "Perlihatkan Progres Membaca",
"Reading Progress Style": "Gaya Progres Membaca",
"Page Number": "Nomor Halaman",
"Percentage": "Persentase",
"Deleted local copy of the book: {{title}}": "Salinan lokal buku dihapus: {{title}}",
"Failed to delete cloud backup of the book: {{title}}": "Gagal menghapus cadangan cloud buku: {{title}}",
"Failed to delete local copy of the book: {{title}}": "Gagal menghapus salinan lokal buku: {{title}}",
"Are you sure to delete the local copy of the selected book?": "Apakah Anda yakin ingin menghapus salinan lokal buku yang dipilih?",
"Remove from Cloud & Device": "Hapus dari Cloud & Perangkat",
"Remove from Cloud Only": "Hapus dari Cloud Saja",
"Remove from Device Only": "Hapus dari Perangkat Saja",
"Disconnected": "Terputus",
"KOReader Sync Settings": "Pengaturan Sinkronisasi KOReader",
"Sync Strategy": "Strategi Sinkronisasi",
"Ask on conflict": "Tanya saat terjadi konflik",
"Always use latest": "Selalu gunakan yang terbaru",
"Send changes only": "Kirim perubahan saja",
"Receive changes only": "Terima perubahan saja",
"Checksum Method": "Metode Checksum",
"File Content (recommended)": "Konten File (disarankan)",
"File Name": "Nama File",
"Device Name": "Nama Perangkat",
"Connect to your KOReader Sync server.": "Hubungkan ke server Sinkronisasi KOReader Anda.",
"Server URL": "URL Server",
"Username": "Nama Pengguna",
"Your Username": "Nama Pengguna Anda",
"Password": "Kata Sandi",
"Connect": "Hubungkan",
"KOReader Sync": "Sinkronisasi KOReader",
"Sync Conflict": "Konflik Sinkronisasi",
"Sync reading progress from \"{{deviceName}}\"?": "Sinkronkan progres membaca dari \"{{deviceName}}\"?",
"another device": "perangkat lain",
"Local Progress": "Progres Lokal",
"Remote Progress": "Progres Jarak Jauh",
"Page {{page}} of {{total}} ({{percentage}}%)": "Halaman {{page}} dari {{total}} ({{percentage}}%)",
"Current position": "Posisi Saat Ini",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "Sekitar halaman {{page}} dari {{total}} ({{percentage}}%)",
"Approximately {{percentage}}%": "Sekitar {{percentage}}%",
"Failed to connect": "Gagal terhubung",
"Sync Server Connected": "Server sinkronisasi terhubung",
"Sync as {{userDisplayName}}": "Sinkronkan sebagai {{userDisplayName}}",
"Custom Fonts": "Font Kustom",
"Cancel Delete": "Batal Hapus",
"Import Font": "Impor Font",
"Delete Font": "Hapus Font",
"Tips": "Tips",
"Custom fonts can be selected from the Font Face menu": "Font kustom dapat dipilih dari menu Font Face",
"Manage Custom Fonts": "Kelola Font Kustom",
"Select Files": "Pilih File",
"Select Image": "Pilih Gambar",
"Select Video": "Pilih Video",
"Select Audio": "Pilih Audio",
"Select Fonts": "Pilih Font",
"Supported font formats: .ttf, .otf, .woff, .woff2": "Format font yang didukung: .ttf, .otf, .woff, .woff2",
"Push Progress": "Dorong Progres",
"Pull Progress": "Tarik Progres",
"Previous Paragraph": "Paragraf Sebelumnya",
"Previous Sentence": "Kalimat Sebelumnya",
"Pause": "Jeda",
"Play": "Putar",
"Next Sentence": "Kalimat Berikutnya",
"Next Paragraph": "Paragraf Berikutnya",
"Separate Cover Page": "Halaman Sampul Terpisah",
"Resize Notebook": "Ubah Ukuran Buku Catatan",
"Resize Sidebar": "Ubah Ukuran Bilah Samping",
"Get Help from the Readest Community": "Dapatkan Bantuan dari Komunitas Readest",
"Remove cover image": "Hapus gambar sampul",
"Bookshelf": "Rak Buku",
"View Menu": "Lihat Menu",
"Settings Menu": "Menu Pengaturan",
"View account details and quota": "Lihat detail akun dan kuota",
"Library Header": "Header Perpustakaan",
"Book Content": "Isi Buku",
"Footer Bar": "Bilah Footer",
"Header Bar": "Bilah Header",
"View Options": "Opsi Tampilan",
"Book Menu": "Menu Buku",
"Search Options": "Opsi Pencarian",
"Close": "Tutup",
"Delete Book Options": "Opsi Hapus Buku",
"ON": "AKTIF",
"OFF": "TIDAK AKTIF",
"Reading Progress": "Progres Membaca",
"Page Margin": "Margin Halaman",
"Remove Bookmark": "Hapus Penanda",
"Add Bookmark": "Tambahkan Penanda",
"Books Content": "Isi Buku",
"Jump to Location": "Lompat ke Lokasi",
"Unpin Notebook": "Batal Pin Notebook",
"Pin Notebook": "Pin Notebook",
"Hide Search Bar": "Sembunyikan Bilah Pencarian",
"Show Search Bar": "Tampilkan Bilah Pencarian",
"On {{current}} of {{total}} page": "Pada {{current}} dari {{total}} halaman",
"Section Title": "Judul Bagian",
"Decrease": "Kecilkan",
"Increase": "Besarakan",
"Settings Panels": "Panel Pengaturan",
"Settings": "Pengaturan",
"Unpin Sidebar": "Batal Pin Bilah Samping",
"Pin Sidebar": "Pin Bilah Samping",
"Toggle Sidebar": "Toggel Bilah Samping",
"Toggle Translation": "Toggel Terjemahan",
"Translation Disabled": "Terjemahan Dinonaktifkan",
"Minimize": "Minimalkan",
"Maximize or Restore": "Maksimalkan atau Pulihkan",
"Exit Parallel Read": "Keluar dari Baca Paralel",
"Enter Parallel Read": "Masuk ke Baca Paralel",
"Zoom Level": "Level Zoom",
"Zoom Out": "Perbesar Zoom",
"Reset Zoom": "Reset Zoom",
"Zoom In": "Perkecil Zoom",
"Zoom Mode": "Mode Zoom",
"Single Page": "Halaman Tunggal",
"Auto Spread": "Penyebaran Otomatis",
"Fit Page": "Sesuaikan Halaman",
"Fit Width": "Sesuaikan Lebar",
"Failed to select directory": "Gagal memilih direktori",
"The new data directory must be different from the current one.": "Direktori data baru harus berbeda dari yang saat ini.",
"Migration failed: {{error}}": "Migrasi gagal: {{error}}",
"Change Data Location": "Ubah Lokasi Data",
"Current Data Location": "Lokasi Data Saat Ini",
"Total size: {{size}}": "Ukuran total: {{size}}",
"Calculating file info...": "Menghitung informasi file...",
"New Data Location": "Lokasi Data Baru",
"Choose Different Folder": "Pilih Folder Berbeda",
"Choose New Folder": "Pilih Folder Baru",
"Migrating data...": "Migrasi data...",
"Copying: {{file}}": "Menyalin: {{file}}",
"{{current}} of {{total}} files": "{{current}} dari {{total}} file",
"Migration completed successfully!": "Migrasi selesai dengan sukses!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "Data Anda telah dipindahkan ke lokasi baru. Silakan restart aplikasi untuk menyelesaikan proses.",
"Migration failed": "Migrasi gagal",
"Important Notice": "Pemberitahuan Penting",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "Ini akan memindahkan semua data aplikasi Anda ke lokasi baru. Pastikan tujuan memiliki cukup ruang kosong.",
"Restart App": "Restart Aplikasi",
"Start Migration": "Mulai Migrasi",
"Advanced Settings": "Pengaturan Lanjutan",
"File count: {{size}}": "Jumlah file: {{size}}",
"Background Read Aloud": "Bacakan Latar Belakang",
"Ready to read aloud": "Siap untuk dibacakan",
"Read Aloud": "Bacakan",
"Screen Brightness": "Kecerahan Layar",
"Background Image": "Gambar Latar Belakang",
"Import Image": "Impor Gambar",
"Opacity": "Keburaman",
"Size": "Ukuran",
"Cover": "Sampul",
"Contain": "Mengandung",
"{{number}} pages left in chapter": "{{number}} halaman tersisa di bab",
"Device": "Perangkat",
"E-Ink Mode": "Mode E-Ink",
"Highlight Colors": "Warna Sorotan",
"Auto Screen Brightness": "Auto Kecerahan Layar",
"Pagination": "Paginasi",
"Disable Double Tap": "Nonaktifkan Ketuk Ganda",
"Tap to Paginate": "Ketuk untuk Paginasi",
"Click to Paginate": "Klik untuk Paginasi",
"Tap Both Sides": "Ketuk Kedua Sisi",
"Click Both Sides": "Klik Kedua Sisi",
"Swap Tap Sides": "Tukar Sisi Ketuk",
"Swap Click Sides": "Tukar Sisi Klik",
"Source and Translated": "Sumber dan Terjemahan",
"Translated Only": "Hanya Terjemahan",
"Source Only": "Hanya Sumber",
"TTS Text": "Teks TTS",
"The book file is corrupted": "File buku rusak",
"The book file is empty": "File buku kosong",
"Failed to open the book file": "Gagal membuka file buku",
"On-Demand Purchase": "Pembelian Sesuai Permintaan",
"Full Customization": "Kustomisasi Penuh",
"Lifetime Plan": "Rencana Seumur Hidup",
"One-Time Payment": "Pembayaran Sekali",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "Lakukan pembayaran sekali untuk menikmati akses seumur hidup ke fitur tertentu di semua perangkat. Beli fitur atau layanan tertentu hanya saat Anda membutuhkannya.",
"Expand Cloud Sync Storage": "Perluas Penyimpanan Sinkronisasi Cloud",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "Perluas penyimpanan cloud Anda selamanya dengan pembelian sekali. Setiap pembelian tambahan menambah lebih banyak ruang.",
"Unlock All Customization Options": "Buka Semua Opsi Kustomisasi",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "Buka tema tambahan, font, opsi tata letak, dan baca nyaring, penerjemah, layanan penyimpanan cloud.",
"Purchase Successful!": "Pembelian Berhasil!",
"lifetime": "seumur hidup",
"Thank you for your purchase! Your payment has been processed successfully.": "Terima kasih atas pembelian Anda! Pembayaran Anda telah berhasil diproses.",
"Order ID:": "ID Pesanan:",
"TTS Highlighting": "TTS Menyorot",
"Style": "Gaya",
"Underline": "Garisan Bawah",
"Strikethrough": "Garis Tengah",
"Squiggly": "Bergelombang",
"Outline": "Garis Besar",
"Save Current Color": "Simpan Warna Saat Ini",
"Quick Colors": "Warna Cepat",
"Highlighter": "Penyorot",
"Save Book Cover": "Simpan Sampul Buku",
"Auto-save last book cover": "Simpan otomatis sampul buku terakhir",
"Back": "Kembali",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "Email konfirmasi telah dikirim! Silakan periksa alamat email lama dan baru Anda untuk mengonfirmasi perubahan.",
"Failed to update email": "Gagal memperbarui email",
"New Email": "Email baru",
"Your new email": "Email baru Anda",
"Updating email ...": "Memperbarui email ...",
"Update email": "Perbarui email",
"Current email": "Email saat ini",
"Update Email": "Perbarui email",
"All": "Semua",
"Unable to open book": "Tidak dapat membuka buku",
"Punctuation": "Tanda Baca",
"Replace Quotation Marks": "Ganti Tanda Kutip",
"Enabled only in vertical layout.": "Hanya diaktifkan dalam tata letak vertikal.",
"No Conversion": "Tanpa konversi",
"Simplified to Traditional": "Sederhana → Tradisional",
"Traditional to Simplified": "Tradisional → Sederhana",
"Simplified to Traditional (Taiwan)": "Sederhana → Tradisional (Taiwan)",
"Simplified to Traditional (Hong Kong)": "Sederhana → Tradisional (Hong Kong)",
"Simplified to Traditional (Taiwan), with phrases": "Sederhana → Tradisional (Taiwan • frasa)",
"Traditional (Taiwan) to Simplified": "Tradisional (Taiwan) → Sederhana",
"Traditional (Hong Kong) to Simplified": "Tradisional (Hong Kong) → Sederhana",
"Traditional (Taiwan) to Simplified, with phrases": "Tradisional (Taiwan • frasa) → Sederhana",
"Convert Simplified and Traditional Chinese": "Konversi Tionghoa Sederhana/Tradisional",
"Convert Mode": "Mode Konversi",
"Failed to auto-save book cover for lock screen: {{error}}": "Gagal menyimpan otomatis sampul buku untuk layar kunci: {{error}}",
"Download from Cloud": "Unduh dari Cloud",
"Upload to Cloud": "Unggah ke Cloud",
"Clear Custom Fonts": "Bersihkan Font Kustom",
"Columns": "Kolom",
"OPDS Catalogs": "Katalog OPDS",
"Adding LAN addresses is not supported in the web app version.": "Menambahkan alamat LAN tidak didukung di versi web.",
"Invalid OPDS catalog. Please check the URL.": "Katalog OPDS tidak valid. Silakan periksa URL-nya.",
"Browse and download books from online catalogs": "Jelajahi dan unduh buku dari katalog online",
"My Catalogs": "Katalog Saya",
"Add Catalog": "Tambah Katalog",
"No catalogs yet": "Belum ada katalog",
"Add your first OPDS catalog to start browsing books": "Tambahkan katalog OPDS pertama Anda untuk mulai menjelajahi buku",
"Add Your First Catalog": "Tambah Katalog Pertama Anda",
"Browse": "Jelajahi",
"Popular Catalogs": "Katalog Populer",
"Add": "Tambah",
"Add OPDS Catalog": "Tambah Katalog OPDS",
"Catalog Name": "Nama Katalog",
"My Calibre Library": "Perpustakaan Calibre Saya",
"OPDS URL": "URL OPDS",
"Username (optional)": "Username (opsional)",
"Password (optional)": "Password (opsional)",
"Description (optional)": "Deskripsi (opsional)",
"A brief description of this catalog": "Deskripsi singkat untuk katalog ini",
"Validating...": "Memvalidasi...",
"View All": "Lihat Semua",
"Forward": "Maju",
"Home": "Beranda",
"{{count}} items_other": "{{count}} item",
"Download completed": "Unduhan selesai",
"Download failed": "Unduhan gagal",
"Open Access": "Akses Terbuka",
"Borrow": "Pinjam",
"Buy": "Beli",
"Subscribe": "Berlangganan",
"Sample": "Contoh",
"Download": "Unduh",
"Open & Read": "Buka & Baca",
"Tags": "Tag",
"Tag": "Tag",
"First": "Pertama",
"Previous": "Sebelumnya",
"Next": "Berikutnya",
"Last": "Terakhir",
"Cannot Load Page": "Tidak dapat memuat halaman",
"An error occurred": "Terjadi kesalahan",
"Online Library": "Perpustakaan Online",
"URL must start with http:// or https://": "URL harus diawali dengan http:// atau https://",
"Title, Author, Tag, etc...": "Judul, Penulis, Tag, dll...",
"Query": "Kueri",
"Subject": "Subjek",
"Enter {{terms}}": "Masukkan {{terms}}",
"No search results found": "Tidak ada hasil pencarian ditemukan",
"Failed to load OPDS feed: {{status}} {{statusText}}": "Gagal memuat feed OPDS: {{status}} {{statusText}}",
"Search in {{title}}": "Cari di {{title}}",
"Manage Storage": "Kelola Penyimpanan",
"Failed to load files": "Gagal memuat file",
"Deleted {{count}} file(s)_other": "{{count}} file dihapus",
"Failed to delete {{count}} file(s)_other": "Gagal menghapus {{count}} file",
"Failed to delete files": "Gagal menghapus file",
"Total Files": "Total File",
"Total Size": "Total Ukuran",
"Quota": "Kuota",
"Used": "Digunakan",
"Files": "File",
"Search files...": "Cari file...",
"Newest First": "Terbaru",
"Oldest First": "Terlama",
"Largest First": "Terbesar",
"Smallest First": "Terkecil",
"Name A-Z": "Nama A-Z",
"Name Z-A": "Nama Z-A",
"{{count}} selected_other": "{{count}} dipilih",
"Delete Selected": "Hapus yang Dipilih",
"Created": "Dibuat",
"No files found": "Tidak ada file ditemukan",
"No files uploaded yet": "Belum ada file diunggah",
"files": "file",
"Page {{current}} of {{total}}": "Halaman {{current}} dari {{total}}",
"Are you sure to delete {{count}} selected file(s)?_other": "Yakin ingin menghapus {{count}} file yang dipilih?",
"Cloud Storage Usage": "Penggunaan Penyimpanan Cloud",
"Rename Group": "Ganti Nama Grup",
"From Directory": "Dari Direktori",
"Successfully imported {{count}} book(s)_other": "Berhasil mengimpor {{count}} buku",
"Count": "Jumlah",
"Start Page": "Halaman Awal",
"Search in OPDS Catalog...": "Cari di Katalog OPDS...",
"Please log in to use advanced TTS features.": "Silakan masuk untuk menggunakan fitur TTS lanjutan."
}
@@ -8,7 +8,6 @@
"Auto Mode": "Modalità automatica",
"Behavior": "Comportamento",
"Book": "Libro",
"Book Cover": "Copertina",
"Bookmark": "Segnalibro",
"Cancel": "Annulla",
"Chapter": "Capitolo",
@@ -18,7 +17,6 @@
"Confirm Deletion": "Conferma eliminazione",
"Copied to notebook": "Copiato nel quaderno",
"Copy": "Copia",
"Custom CSS": "CSS personalizzato",
"Dark Mode": "Modalità scura",
"Default": "Predefinito",
"Default Font": "Font predefinito",
@@ -28,7 +26,6 @@
"Dictionary": "Dizionario",
"Download Readest": "Scarica Readest",
"Edit": "Modifica",
"Enter your custom CSS here...": "Inserisci qui il tuo CSS personalizzato...",
"Excerpts": "Estratti",
"Failed to import book(s): {{filenames}}": "Impossibile importare il/i libro/i: {{filenames}}",
"Fast": "Veloce",
@@ -48,7 +45,6 @@
"Horizontal Direction": "Direzione orizzontale",
"Hyphenation": "Sillabazione",
"Import Books": "Importa libri",
"Language:": "Lingua:",
"Layout": "Layout",
"Light Mode": "Modalità chiara",
"Loading...": "Caricamento...",
@@ -70,8 +66,8 @@
"Paging Animation": "Animazione cambio pagina",
"Paragraph": "Paragrafo",
"Parallel Read": "Lettura parallela",
"Published:": "Pubblicato:",
"Publisher:": "Editore:",
"Published": "Pubblicato",
"Publisher": "Editore",
"Reading Progress Synced": "Progresso lettura sincronizzato",
"Reload Page": "Ricarica pagina",
"Reveal in File Explorer": "Mostra in Esplora file",
@@ -85,7 +81,6 @@
"Search...": "Cerca...",
"Select Book": "Seleziona libro",
"Select Books": "Seleziona libri",
"Select Multiple Books": "Seleziona più libri",
"Sepia": "Seppia",
"Serif Font": "Font serif",
"Show Book Details": "Mostra dettagli libro",
@@ -96,16 +91,15 @@
"Slow": "Lento",
"Solarized": "Solarizzato",
"Speak": "Leggi",
"Subjects:": "Argomenti:",
"Subjects": "Argomenti",
"System Fonts": "Font di sistema",
"TTS not supported in this device": "TTS non supportato su questo dispositivo",
"Theme Color": "Colore tema",
"Theme Mode": "Modalità tema",
"Translate": "Traduci",
"Translated Text": "Testo tradotto",
"Unknown": "Sconosciuto",
"Untitled": "Senza titolo",
"Updated:": "Aggiornato:",
"Updated": "Aggiornato",
"Version {{version}}": "Versione {{version}}",
"Vertical Direction": "Direzione verticale",
"Welcome to your library. You can import your books here and read them anytime.": "Benvenuto nella tua biblioteca. Puoi importare i tuoi libri qui e leggerli in qualsiasi momento.",
@@ -114,8 +108,6 @@
"Your Library": "La tua biblioteca",
"TTS not supported for PDF": "TTS non supportato per PDF",
"Override Book Font": "Sovrascrivi font libro",
"Vertical Margins (px)": "Margini verticali (px)",
"Horizontal Margins (%)": "Margini orizzontali (%)",
"Apply to All Books": "Applica a tutti i libri",
"Apply to This Book": "Applica a questo libro",
"Unable to fetch the translation. Try again later.": "Impossibile recuperare la traduzione. Riprova più tardi.",
@@ -124,14 +116,13 @@
"Book Details": "Dettagli libro",
"From Local File": "Da file locale",
"TOC": "Sommario",
"Table of Contents": "Sommario",
"Book uploaded: {{title}}": "Libro caricato: {{title}}",
"Failed to upload book: {{title}}": "Caricamento libro non riuscito: {{title}}",
"Book downloaded: {{title}}": "Libro scaricato: {{title}}",
"Failed to download book: {{title}}": "Download libro non riuscito: {{title}}",
"Upload Book": "Carica libro",
"Auto Upload Books to Cloud": "Carica libri automaticamente su cloud",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% dello spazio di archiviazione cloud utilizzato.",
"Storage": "Archiviazione",
"Book deleted: {{title}}": "Libro eliminato: {{title}}",
"Failed to delete book: {{title}}": "Eliminazione libro non riuscita: {{title}}",
"Check Updates on Start": "Controlla aggiornamenti all'avvio",
@@ -163,7 +154,7 @@
"Create a Password": "Crea una password",
"Sign up": "Registrati",
"Signing up...": "Registrazione in corso...",
"Dont have an account? Sign up": "Non hai un account? Registrati",
"Don't have an account? Sign up": "Non hai un account? Registrati",
"Check your email for the confirmation link": "Controlla la tua email per il link di conferma",
"Signing in ...": "Accesso in corso ...",
"Send a magic link email": "Invia un'email con link magico",
@@ -186,37 +177,14 @@
"Sign in with Apple": "Accedi con Apple",
"Sign in with GitHub": "Accedi con GitHub",
"Account": "Account",
"Cloud Storage": "Archiviazione Cloud",
"Failed to delete user. Please try again later.": "Impossibile eliminare l'utente. Riprova più tardi.",
"Unlimited Offline/Online Reading": "Lettura offline/online illimitata",
"Unlimited Cloud Sync Devices": "Sincronizzazione cloud su dispositivi illimitati",
"Essential Text-to-Speech Voices": "Voci essenziali di sintesi vocale",
"DeepL Free Access": "Accesso gratuito a DeepL",
"Community Support": "Supporto della community",
"500 MB Cloud Sync Space": "500 MB di spazio di sincronizzazione cloud",
"Includes All Free Tier Benefits": "Include tutti i vantaggi del piano gratuito",
"AI Summaries": "Riassunti AI",
"AI Translations": "Traduzioni AI",
"Priority Support": "Supporto prioritario",
"DeepL Pro Access": "Accesso a DeepL Pro",
"Expanded Text-to-Speech Voices": "Voci di sintesi vocale ampliate",
"2000 MB Cloud Sync Space": "2000 MB di spazio di sincronizzazione cloud",
"Includes All Plus Tier Benefits": "Include tutti i vantaggi del piano Plus",
"Unlimited AI Summaries": "Riassunti AI illimitati",
"Unlimited AI Translations": "Traduzioni AI illimitate",
"Unlimited DeepL Pro Access": "Accesso illimitato a DeepL Pro",
"Advanced AI Tools": "Strumenti AI avanzati",
"Early Feature Access": "Accesso anticipato alle funzionalità",
"10 GB Cloud Sync Space": "10 GB di spazio di sincronizzazione cloud",
"Loading profile...": "Caricamento profilo...",
"Features": "Funzionalità",
"Delete Account": "Elimina account",
"Delete Your Account?": "Eliminare il tuo account?",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "Questa azione non può essere annullata. Tutti i tuoi dati nel cloud verranno eliminati definitivamente.",
"Delete Permanently": "Elimina definitivamente",
"Free Tier": "Piano gratuito",
"Plus Tier": "Piano Plus",
"Pro Tier": "Piano Pro",
"RTL Direction": "Direzione RTL",
"Maximum Column Height": "Altezza massima colonna",
"Maximum Column Width": "Larghezza massima colonna",
@@ -225,7 +193,7 @@
"No supported files found. Supported formats: {{formats}}": "Nessun file supportato trovato. Formati supportati: {{formats}}",
"Drop to Import Books": "Rilascia per importare libri",
"Custom": "Personalizzato",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n—William Shakespeare": "Tutto il mondo è un palcoscenico,\nE tutti gli uomini e le donne sono solo attori;\nHanno le loro uscite e le loro entrate,\nE un uomo nella sua vita interpreta molte parti,\nI suoi atti sono sette età.\n\n— William Shakespeare",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "Tutto il mondo è un palcoscenico,\nE tutti gli uomini e le donne sono solo attori;\nHanno le loro uscite e le loro entrate,\nE un uomo nella sua vita interpreta molte parti,\nI suoi atti sono sette età.\n\n— William Shakespeare",
"Custom Theme": "Tema personalizzato",
"Theme Name": "Nome tema",
"Text Color": "Colore testo",
@@ -252,9 +220,9 @@
"Auto Import on File Open": "Importazione automatica all'apertura del file",
"LXGW WenKai GB Screen": "LXGW WenKai SC",
"LXGW WenKai TC": "LXGW WenKai TC",
"No chapters detected.": "Nessun capitolo rilevato.",
"Failed to parse the EPUB file.": "Impossibile analizzare il file EPUB.",
"This book format is not supported.": "Questo formato di libro non è supportato.",
"No chapters detected": "Nessun capitolo rilevato",
"Failed to parse the EPUB file": "Impossibile analizzare il file EPUB",
"This book format is not supported": "Questo formato di libro non è supportato",
"Unable to fetch the translation. Please log in first and try again.": "Impossibile recuperare la traduzione. Accedi prima e riprova.",
"Group": "Gruppo",
"Always on Top": "Sempre in primo piano",
@@ -267,13 +235,13 @@
"Clear Search": "Cancella ricerca",
"Header & Footer": "Intestazione e piè di pagina",
"Apply also in Scrolled Mode": "Applica anche in modalità scorrimento",
"A new version of Readest is Available!": "È disponibile una nuova versione di Readest!",
"A new version of Readest is available!": "È disponibile una nuova versione di Readest!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Readest {{newVersion}} è disponibile (versione installata {{currentVersion}}).",
"Download and install now?": "Scarica e installa ora?",
"Downloading {{downloaded}} of {{contentLength}}": "Scaricando {{downloaded}} di {{contentLength}}",
"Download finished": "Download completato",
"DOWNLOAD & INSTALL": "SCARICA E INSTALLA",
"Changelog:": "Note di rilascio:",
"Changelog": "Note di rilascio",
"Software Update": "Aggiornamento software",
"Title": "Titolo",
"Date Read": "Data di lettura",
@@ -282,18 +250,15 @@
"Ascending": "Crescente",
"Descending": "Decrescente",
"Sort by...": "Ordina per...",
"Added:": "Aggiunto:",
"Format:": "Formato:",
"Added": "Aggiunto",
"GuanKiapTsingKhai-T": "GuanKiapTsingKhai-T",
"Description:": "Descrizione:",
"Description": "Descrizione",
"No description available": "Nessuna descrizione disponibile",
"List": "Elenco",
"Grid": "Griglia",
"(from 'As You Like It', Act II)": "(da 'Come vi piace', Atto II)",
"Link Color": "Colore link",
"Volume Keys for Page Flip": "Tasti volume per girare pagina",
"Clicks for Page Flip": "Clic per girare pagina",
"Swap Clicks Area": "Inverti area dei clic",
"Screen": "Schermo",
"Orientation": "Orientamento",
"Portrait": "Ritratto",
@@ -302,7 +267,7 @@
"Checking for updates...": "Controllo aggiornamenti...",
"Error checking for updates": "Errore durante il controllo degli aggiornamenti",
"Details": "Dettagli",
"File Size:": "Dimensione file:",
"File Size": "Dimensione file",
"Auto Detect": "Rilevamento automatico",
"Next Section": "Sezione successiva",
"Previous Section": "Sezione precedente",
@@ -330,9 +295,485 @@
"Disable Translation": "Disabilita traduzione",
"Scroll": "Scorri",
"Overlap Pixels": "Pixel di sovrapposizione",
"Click": "Fai clic",
"System Language": "Lingua di sistema",
"Security": "Security",
"Allow JavaScript": "Consenti JavaScript",
"Enable only if you trust the file.": "Abilita solo se ti fidi del file."
"Enable only if you trust the file.": "Abilita solo se ti fidi del file.",
"Sort TOC by Page": "Ordina sommario per pagina",
"Search in {{count}} Book(s)..._one": "Cerca in {{count}} libro...",
"Search in {{count}} Book(s)..._many": "Cerca in {{count}} libri...",
"Search in {{count}} Book(s)..._other": "Cerca in {{count}} libri...",
"No notes match your search": "Nessuna nota trovata",
"Search notes and excerpts...": "Cerca nelle note...",
"Sign in to Sync": "Accedi per sincronizzare",
"Synced at {{time}}": "Sincronizzato alle {{time}}",
"Never synced": "Mai sincronizzato",
"Show Remaining Time": "Mostra tempo rimanente",
"{{time}} min left in chapter": "{{time}} min rimasti nel capitolo",
"Override Book Color": "Override colore libro",
"Login Required": "Accesso richiesto",
"Quota Exceeded": "Limite superato",
"{{percentage}}% of Daily Translation Characters Used.": "{{percentage}}% dei caratteri di traduzione giornalieri utilizzati.",
"Translation Characters": "Caratteri di traduzione",
"{{engine}}: {{count}} voices_one": "{{engine}}: {{count}} voce",
"{{engine}}: {{count}} voices_many": "{{engine}}: {{count}} voci",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}} voci",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "Qualcosa è andato storto. Non preoccuparti, il nostro team è stato avvisato e stiamo lavorando a una soluzione.",
"Error Details:": "Dettagli errore:",
"Try Again": "Riprova",
"Need help?": "Hai bisogno di aiuto?",
"Contact Support": "Contatta il supporto",
"Code Highlighting": "Evidenziazione codice",
"Enable Highlighting": "Abilita evidenziazione",
"Code Language": "Tipo di codice",
"Top Margin (px)": "Margine Superiore (px)",
"Bottom Margin (px)": "Margine Inferiore (px)",
"Right Margin (px)": "Margine Destro (px)",
"Left Margin (px)": "Margine Sinistro (px)",
"Column Gap (%)": "Spazio tra Colonne (%)",
"Always Show Status Bar": "Mostra sempre la barra di stato",
"Custom Content CSS": "CSS contenuto",
"Enter CSS for book content styling...": "Inserisci il CSS per il contenuto del libro...",
"Custom Reader UI CSS": "CSS interfaccia",
"Enter CSS for reader interface styling...": "Inserisci il CSS per l'interfaccia di lettura...",
"Crop": "Ritaglia",
"Book Covers": "Copertine libri",
"Fit": "Adatta",
"Reset {{settings}}": "Reimposta {{settings}}",
"Reset Settings": "Reimposta impostazioni",
"{{count}} pages left in chapter_one": "{{count}} pagina rimasta nel capitolo",
"{{count}} pages left in chapter_many": "{{count}} pagine rimaste nel capitolo",
"{{count}} pages left in chapter_other": "{{count}} pagine rimaste nel capitolo",
"Show Remaining Pages": "Mostra pagine rimanenti",
"Source Han Serif CN VF": "Source Han Serif",
"Huiwen-mincho": "Huiwen Mincho",
"KingHwa_OldSong": "KingHwa Song",
"Manage Subscription": "Gestisci Abbonamento",
"Coming Soon": "Prossimamente",
"Upgrade to {{plan}}": "Aggiorna a {{plan}}",
"Upgrade to Plus or Pro": "Aggiorna a Plus o Pro",
"Current Plan": "Piano Attuale",
"Plan Limits": "Limiti del Piano",
"Processing your payment...": "Elaborazione del pagamento...",
"Please wait while we confirm your subscription.": "Attendi mentre confermiamo il tuo abbonamento.",
"Payment Processing": "Elaborazione Pagamento",
"Your payment is being processed. This usually takes a few moments.": "Il tuo pagamento è in elaborazione. Di solito richiede pochi istanti.",
"Payment Failed": "Pagamento Fallito",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "Non è stato possibile elaborare l'abbonamento. Riprova o contatta il supporto se il problema persiste.",
"Back to Profile": "Torna al Profilo",
"Subscription Successful!": "Abbonamento Avvenuto con Successo!",
"Thank you for your subscription! Your payment has been processed successfully.": "Grazie per l'abbonamento! Il pagamento è stato elaborato con successo.",
"Email:": "Email:",
"Plan:": "Piano:",
"Amount:": "Importo:",
"Go to Library": "Vai alla Libreria",
"Need help? Contact our support team at support@readest.com": "Hai bisogno di aiuto? Contatta il nostro supporto a support@readest.com",
"Free Plan": "Piano Gratuito",
"month": "mese",
"AI Translations (per day)": "Traduzioni AI (al giorno)",
"Plus Plan": "Piano Plus",
"Includes All Free Plan Benefits": "Include Tutti i Vantaggi del Piano Gratuito",
"Pro Plan": "Piano Pro",
"More AI Translations": "Più Traduzioni AI",
"Complete Your Subscription": "Completa l'abbonamento",
"{{percentage}}% of Cloud Sync Space Used.": "{{percentage}}% dello spazio cloud usato",
"Cloud Sync Storage": "Spazio cloud",
"Disable": "Disabilita",
"Enable": "Abilita",
"Upgrade to Readest Premium": "Aggiorna a Readest Premium",
"Show Source Text": "Mostra Testo Originale",
"Cross-Platform Sync": "Sincronizzazione Multipiattaforma",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "Sincronizza libreria, progressi e note su tutti i tuoi dispositivi.",
"Customizable Reading": "Lettura Personalizzabile",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "Personalizza font, layout e temi come preferisci.",
"AI Read Aloud": "Lettura AI",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "Ascolta i libri con voci AI naturali.",
"AI Translations": "Traduzioni AI",
"Connect with fellow readers and get help fast in our friendly community channels.": "Connettiti con la community e ricevi supporto rapido.",
"Unlimited AI Read Aloud Hours": "Lettura AI Illimitata",
"Listen without limits—convert as much text as you like into immersive audio.": "Ascolta senza limiti quanto vuoi.",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "Sblocca traduzioni avanzate e più utilizzo giornaliero.",
"DeepL Pro Access": "Accesso DeepL Pro",
"Enjoy faster responses and dedicated assistance whenever you need help.": "Ricevi supporto prioritario quando serve.",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "Quota giornaliera esaurita. Passa a un piano superiore per continuare.",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "Traduci qualsiasi testo istantaneamente con la potenza di Google, Azure o DeepL—comprendi contenuti in qualsiasi lingua.",
"Includes All Plus Plan Benefits": "Include Tutti i Vantaggi del Piano Plus",
"Early Feature Access": "Accesso Anticipato alle Funzionalità",
"Be the first to explore new features, updates, and innovations before anyone else.": "Esplora per primo nuove funzionalità, aggiornamenti e innovazioni.",
"Advanced AI Tools": "Strumenti AI Avanzati",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "Sfrutta potenti strumenti AI per lettura intelligente, traduzione e scoperta di contenuti.",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "Traduci fino a 100.000 caratteri al giorno con il motore di traduzione più accurato.",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "Traduci fino a 500.000 caratteri al giorno con il motore di traduzione più accurato.",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "Archivia e accedi in sicurezza alla tua intera collezione di lettura con fino a 5 GB di storage cloud.",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "Archivia e accedi in sicurezza alla tua intera collezione di lettura con fino a 20 GB di storage cloud.",
"Deleted cloud backup of the book: {{title}}": "Backup cloud del libro eliminato: {{title}}",
"Are you sure to delete the cloud backup of the selected book?": "Sei sicuro di voler eliminare il backup cloud del libro selezionato?",
"What's New in Readest": "Novità in Readest",
"Enter book title": "Inserisci il titolo del libro",
"Subtitle": "Sottotitolo",
"Enter book subtitle": "Inserisci il sottotitolo del libro",
"Enter author name": "Inserisci il nome dell'autore",
"Series": "Serie",
"Enter series name": "Inserisci il nome della serie",
"Series Index": "Numero della serie",
"Enter series index": "Inserisci il numero della serie",
"Total in Series": "Totale nella serie",
"Enter total books in series": "Inserisci il numero totale di libri nella serie",
"Enter publisher": "Inserisci l'editore",
"Publication Date": "Data di pubblicazione",
"Identifier": "Identificatore",
"Enter book description": "Inserisci la descrizione del libro",
"Change cover image": "Cambia immagine di copertina",
"Replace": "Sostituisci",
"Unlock cover": "Sblocca copertina",
"Lock cover": "Blocca copertina",
"Auto-Retrieve Metadata": "Recupera metadati automaticamente",
"Auto-Retrieve": "Recupero automatico",
"Unlock all fields": "Sblocca tutti i campi",
"Unlock All": "Sblocca tutto",
"Lock all fields": "Blocca tutti i campi",
"Lock All": "Blocca tutto",
"Reset": "Ripristina",
"Edit Metadata": "Modifica metadati",
"Locked": "Bloccato",
"Select Metadata Source": "Seleziona fonte metadati",
"Keep manual input": "Mantieni input manuale",
"Google Books": "Google Books",
"Open Library": "Open Library",
"Fiction, Science, History": "Narrativa, Scienza, Storia",
"Open Book in New Window": "Apri libro in una nuova finestra",
"Voices for {{lang}}": "Voci per {{lang}}",
"Yandex Translate": "Yandex Translate",
"YYYY or YYYY-MM-DD": "AAAA o AAAA-MM-GG",
"Restore Purchase": "Ripristina acquisto",
"No purchases found to restore.": "Nessun acquisto trovato da ripristinare.",
"Failed to restore purchases.": "Impossibile ripristinare gli acquisti.",
"Failed to manage subscription.": "Impossibile gestire l'abbonamento.",
"Failed to load subscription plans.": "Impossibile caricare i piani di abbonamento.",
"year": "anno",
"Failed to create checkout session": "Impossibile creare la sessione di checkout",
"Storage": "Archiviazione",
"Terms of Service": "Termini di servizio",
"Privacy Policy": "Informativa sulla privacy",
"Disable Double Click": "Disabilita Doppio Clic",
"TTS not supported for this document": "TTS non supportato per questo documento",
"Reset Password": "Reimposta Password",
"Show Reading Progress": "Mostra Progresso Lettura",
"Reading Progress Style": "Stile di Progresso Lettura",
"Page Number": "Numero di Pagina",
"Percentage": "Percentuale",
"Deleted local copy of the book: {{title}}": "Copie locale del libro eliminata: {{title}}",
"Failed to delete cloud backup of the book: {{title}}": "Impossibile eliminare il backup cloud del libro: {{title}}",
"Failed to delete local copy of the book: {{title}}": "Impossibile eliminare la copia locale del libro: {{title}}",
"Are you sure to delete the local copy of the selected book?": "Sei sicuro di voler eliminare la copia locale del libro selezionato?",
"Remove from Cloud & Device": "Rimuovi da Cloud & Dispositivo",
"Remove from Cloud Only": "Rimuovi solo da Cloud",
"Remove from Device Only": "Rimuovi solo da Dispositivo",
"Disconnected": "Disconnesso",
"KOReader Sync Settings": "Impostazioni di Sincronizzazione KOReader",
"Sync Strategy": "Strategia di Sincronizzazione",
"Ask on conflict": "Chiedi in caso di conflitto",
"Always use latest": "Usa sempre l'ultima versione",
"Send changes only": "Invia solo le modifiche",
"Receive changes only": "Ricevi solo le modifiche",
"Checksum Method": "Metodo di Controllo",
"File Content (recommended)": "Contenuto del File (consigliato)",
"File Name": "Nome del File",
"Device Name": "Nome del Dispositivo",
"Connect to your KOReader Sync server.": "Connettiti al tuo server KOReader Sync.",
"Server URL": "URL del Server",
"Username": "Nome Utente",
"Your Username": "Il tuo Nome Utente",
"Password": "Password",
"Connect": "Connetti",
"KOReader Sync": "KOReader Sync",
"Sync Conflict": "Conflitto di Sincronizzazione",
"Sync reading progress from \"{{deviceName}}\"?": "Sincronizzare il progresso di lettura da \"{{deviceName}}\"?",
"another device": "un altro dispositivo",
"Local Progress": "Progresso Locale",
"Remote Progress": "Progresso Remoto",
"Page {{page}} of {{total}} ({{percentage}}%)": "Pagina {{page}} di {{total}} ({{percentage}}%)",
"Current position": "Posizione Corrente",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "Circa pagina {{page}} di {{total}} ({{percentage}}%)",
"Approximately {{percentage}}%": "Circa {{percentage}}%",
"Failed to connect": "Impossibile connettersi",
"Sync Server Connected": "Server di sincronizzazione connesso",
"Sync as {{userDisplayName}}": "Sincronizza come {{userDisplayName}}",
"Custom Fonts": "Font Personalizzati",
"Cancel Delete": "Annulla Eliminazione",
"Import Font": "Importa Font",
"Delete Font": "Elimina Font",
"Tips": "Suggerimenti",
"Custom fonts can be selected from the Font Face menu": "I font personalizzati possono essere selezionati dal menu Carattere",
"Manage Custom Fonts": "Gestisci Font Personalizzati",
"Select Files": "Seleziona File",
"Select Image": "Seleziona Immagine",
"Select Video": "Seleziona Video",
"Select Audio": "Seleziona Audio",
"Select Fonts": "Seleziona Font",
"Supported font formats: .ttf, .otf, .woff, .woff2": "Formati di font supportati: .ttf, .otf, .woff, .woff2",
"Push Progress": "Progresso push",
"Pull Progress": "Progresso pull",
"Previous Paragraph": "Paragrafo precedente",
"Previous Sentence": "Frase precedente",
"Pause": "Pausa",
"Play": "Riproduci",
"Next Sentence": "Frase successiva",
"Next Paragraph": "Paragrafo successivo",
"Separate Cover Page": "Pagina di copertina separata",
"Resize Notebook": "Ridimensiona quaderno",
"Resize Sidebar": "Ridimensiona barra laterale",
"Get Help from the Readest Community": "Ottieni aiuto dalla community di Readest",
"Remove cover image": "Rimuovi immagine di copertina",
"Bookshelf": "Scaffale dei libri",
"View Menu": "Visualizza menu",
"Settings Menu": "Menu impostazioni",
"View account details and quota": "Visualizza dettagli account e quota",
"Library Header": "Intestazione biblioteca",
"Book Content": "Contenuto del libro",
"Footer Bar": "Barra piè di pagina",
"Header Bar": "Barra intestazione",
"View Options": "Opzioni di visualizzazione",
"Book Menu": "Menu libro",
"Search Options": "Opzioni di ricerca",
"Close": "Chiudi",
"Delete Book Options": "Opzioni di eliminazione libro",
"ON": "ATTIVO",
"OFF": "DISATTIVO",
"Reading Progress": "Progresso di lettura",
"Page Margin": "Margine di pagina",
"Remove Bookmark": "Rimuovi Segnalibro",
"Add Bookmark": "Aggiungi Segnalibro",
"Books Content": "Contenuto dei Libri",
"Jump to Location": "Salta alla Posizione",
"Unpin Notebook": "Sblocca Quaderno",
"Pin Notebook": "Blocca Quaderno",
"Hide Search Bar": "Nascondi Barra di Ricerca",
"Show Search Bar": "Mostra Barra di Ricerca",
"On {{current}} of {{total}} page": "A pagina {{current}} di {{total}}",
"Section Title": "Titolo Sezione",
"Decrease": "Diminuisci",
"Increase": "Aumenta",
"Settings Panels": "Pannelli di Impostazione",
"Settings": "Impostazioni",
"Unpin Sidebar": "Sblocca Bilah Samping",
"Pin Sidebar": "Blocca Bilah Samping",
"Toggle Sidebar": "Toggel Bilah Samping",
"Toggle Translation": "Toggel Terjemahan",
"Translation Disabled": "Terjemahan Dinonaktifkan",
"Minimize": "Minimalkan",
"Maximize or Restore": "Maksimalkan atau Pulihkan",
"Exit Parallel Read": "Esci dalla lettura parallela",
"Enter Parallel Read": "Entra nella lettura parallela",
"Zoom Level": "Livello di zoom",
"Zoom Out": "Riduci zoom",
"Reset Zoom": "Ripristina zoom",
"Zoom In": "Inganna zoom",
"Zoom Mode": "Modalità zoom",
"Single Page": "Pagina singola",
"Auto Spread": "Distribuzione automatica",
"Fit Page": "Adatta pagina",
"Fit Width": "Adatta larghezza",
"Failed to select directory": "Impossibile selezionare la directory",
"The new data directory must be different from the current one.": "La nuova directory dei dati deve essere diversa da quella attuale.",
"Migration failed: {{error}}": "Migrzione fallita: {{error}}",
"Change Data Location": "Cambia posizione dei dati",
"Current Data Location": "Posizione attuale dei dati",
"Total size: {{size}}": "Dimensione totale: {{size}}",
"Calculating file info...": "Calcolo informazioni file...",
"New Data Location": "Nuova posizione dei dati",
"Choose Different Folder": "Scegli una cartella diversa",
"Choose New Folder": "Scegli una nuova cartella",
"Migrating data...": "Migrando dati...",
"Copying: {{file}}": "Copia in corso: {{file}}",
"{{current}} of {{total}} files": "{{current}} di {{total}} file",
"Migration completed successfully!": "Migrzione completata con successo!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "I tuoi dati sono stati spostati nella nuova posizione. Riavvia l'applicazione per completare il processo.",
"Migration failed": "Migrzione fallita",
"Important Notice": "Avviso Importante",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "Questo sposterà tutti i dati dell'app nella nuova posizione. Assicurati che la destinazione abbia spazio libero sufficiente.",
"Restart App": "Riavvia App",
"Start Migration": "Inizia Migrazione",
"Advanced Settings": "Impostazioni Avanzate",
"File count: {{size}}": "Conteggio file: {{size}}",
"Background Read Aloud": "Riproduzione in background",
"Ready to read aloud": "Pronto per la lettura ad alta voce",
"Read Aloud": "Leggi ad alta voce",
"Screen Brightness": "Luminosità dello schermo",
"Background Image": "Immagine di sfondo",
"Import Image": "Importa immagine",
"Opacity": "Opacità",
"Size": "Dimensione",
"Cover": "Copertura",
"Contain": "Contenere",
"{{number}} pages left in chapter": "{{number}} pagine rimaste nel capitolo",
"Device": "Dispositivo",
"E-Ink Mode": "Modalità E-Ink",
"Highlight Colors": "Colori Evidenziazione",
"Auto Screen Brightness": "Luminosità schermo automatica",
"Pagination": "Impaginazione",
"Disable Double Tap": "Disabilita Doppio Tap",
"Tap to Paginate": "Tocca per Impaginare",
"Click to Paginate": "Clicca per Impaginare",
"Tap Both Sides": "Tocca Entrambi i Lati",
"Click Both Sides": "Clicca Entrambi i Lati",
"Swap Tap Sides": "Scambia Sides Tap",
"Swap Click Sides": "Scambia Sides Click",
"Source and Translated": "Fonte e Tradotto",
"Translated Only": "Solo Tradotto",
"Source Only": "Solo Fonte",
"TTS Text": "Testo TTS",
"The book file is corrupted": "Il file del libro è danneggiato",
"The book file is empty": "Il file del libro è vuoto",
"Failed to open the book file": "Impossibile aprire il file del libro",
"On-Demand Purchase": "Acquisto su Richiesta",
"Full Customization": "Personalizzazione Completa",
"Lifetime Plan": "Piano a Vita",
"One-Time Payment": "Pagamento Una Tantum",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "Effettua un pagamento una tantum per godere dell'accesso a vita a funzionalità specifiche su tutti i dispositivi. Acquista funzionalità o servizi specifici solo quando ne hai bisogno.",
"Expand Cloud Sync Storage": "Espandi Spazio di Archiviazione Cloud",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "Espandi il tuo spazio di archiviazione cloud per sempre con un acquisto una tantum. Ogni acquisto aggiuntivo aumenta lo spazio.",
"Unlock All Customization Options": "Sblocca Tutte le Opzioni di Personalizzazione",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "Sblocca temi aggiuntivi, font, opzioni di layout e lettura ad alta voce, traduttori, servizi di archiviazione cloud.",
"Purchase Successful!": "Acquisto Riuscito!",
"lifetime": "a vita",
"Thank you for your purchase! Your payment has been processed successfully.": "Grazie per il tuo acquisto! Il pagamento è stato elaborato con successo.",
"Order ID:": "ID Ordine:",
"TTS Highlighting": "Evidenziazione TTS",
"Style": "Stile",
"Underline": "Sottolineato",
"Strikethrough": "Barrato",
"Squiggly": "Ondulato",
"Outline": "Contorno",
"Save Current Color": "Salva Colore Corrente",
"Quick Colors": "Colori Veloci",
"Highlighter": "Evidenziatore",
"Save Book Cover": "Salva Copertina del Libro",
"Auto-save last book cover": "Salva automaticamente l'ultima copertina del libro",
"Back": "Indietro",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "Email di conferma inviata! Controlla il tuo vecchio e nuovo indirizzo email per confermare la modifica.",
"Failed to update email": "Aggiornamento dell'email non riuscito",
"New Email": "Nuova email",
"Your new email": "La tua nuova email",
"Updating email ...": "Aggiornamento dell'email ...",
"Update email": "Aggiorna email",
"Current email": "Email attuale",
"Update Email": "Aggiorna email",
"All": "Tutti",
"Unable to open book": "Impossibile aprire il libro",
"Punctuation": "Segni di punteggiatura",
"Replace Quotation Marks": "Sostituisci le virgolette",
"Enabled only in vertical layout.": "Abilitato solo in layout verticale.",
"No Conversion": "Nessuna conversione",
"Simplified to Traditional": "Semplificato → Tradizionale",
"Traditional to Simplified": "Tradizionale → Semplificato",
"Simplified to Traditional (Taiwan)": "Semplificato → Tradizionale (Taiwan)",
"Simplified to Traditional (Hong Kong)": "Semplificato → Tradizionale (Hong Kong)",
"Simplified to Traditional (Taiwan), with phrases": "Semplificato → Tradizionale (Taiwan • frasi)",
"Traditional (Taiwan) to Simplified": "Tradizionale (Taiwan) → Semplificato",
"Traditional (Hong Kong) to Simplified": "Tradizionale (Hong Kong) → Semplificato",
"Traditional (Taiwan) to Simplified, with phrases": "Tradizionale (Taiwan • frasi) → Semplificato",
"Convert Simplified and Traditional Chinese": "Converti Cinese Semplificato/Tradizionale",
"Convert Mode": "Modalità conversione",
"Failed to auto-save book cover for lock screen: {{error}}": "Impossibile salvare automaticamente la copertina del libro per la schermata di blocco: {{error}}",
"Download from Cloud": "Scarica dal Cloud",
"Upload to Cloud": "Carica sul Cloud",
"Clear Custom Fonts": "Pulisci Font Personalizzati",
"Columns": "Colonne",
"OPDS Catalogs": "Cataloghi OPDS",
"Adding LAN addresses is not supported in the web app version.": "L'aggiunta di indirizzi LAN non è supportata nella versione web.",
"Invalid OPDS catalog. Please check the URL.": "Catalogo OPDS non valido. Controlla l'URL.",
"Browse and download books from online catalogs": "Sfoglia e scarica libri dai cataloghi online",
"My Catalogs": "I miei cataloghi",
"Add Catalog": "Aggiungi catalogo",
"No catalogs yet": "Nessun catalogo",
"Add your first OPDS catalog to start browsing books": "Aggiungi il tuo primo catalogo OPDS per iniziare a sfogliare i libri",
"Add Your First Catalog": "Aggiungi il tuo primo catalogo",
"Browse": "Sfoglia",
"Popular Catalogs": "Cataloghi popolari",
"Add": "Aggiungi",
"Add OPDS Catalog": "Aggiungi catalogo OPDS",
"Catalog Name": "Nome del catalogo",
"My Calibre Library": "La mia libreria Calibre",
"OPDS URL": "URL OPDS",
"Username (optional)": "Username (opzionale)",
"Password (optional)": "Password (opzionale)",
"Description (optional)": "Descrizione (opzionale)",
"A brief description of this catalog": "Breve descrizione del catalogo",
"Validating...": "Convalida in corso...",
"View All": "Vedi tutto",
"Forward": "Avanti",
"Home": "Home",
"{{count}} items_one": "{{count}} elemento",
"{{count}} items_many": "{{count}} elementi",
"{{count}} items_other": "{{count}} elementi",
"Download completed": "Download completato",
"Download failed": "Download non riuscito",
"Open Access": "Accesso libero",
"Borrow": "Prendi in prestito",
"Buy": "Acquista",
"Subscribe": "Abbonati",
"Sample": "Anteprima",
"Download": "Scarica",
"Open & Read": "Apri e leggi",
"Tags": "Tag",
"Tag": "Tag",
"First": "Primo",
"Previous": "Precedente",
"Next": "Successivo",
"Last": "Ultimo",
"Cannot Load Page": "Impossibile caricare la pagina",
"An error occurred": "Si è verificato un errore",
"Online Library": "Libreria online",
"URL must start with http:// or https://": "URL deve iniziare con http:// o https://",
"Title, Author, Tag, etc...": "Titolo, Autore, Tag, ecc...",
"Query": "Query",
"Subject": "Soggetto",
"Enter {{terms}}": "Inserisci {{terms}}",
"No search results found": "Nessun risultato di ricerca trovato",
"Failed to load OPDS feed: {{status}} {{statusText}}": "Impossibile caricare il feed OPDS: {{status}} {{statusText}}",
"Search in {{title}}": "Cerca in {{title}}",
"Manage Storage": "Gestisci archiviazione",
"Failed to load files": "Impossibile caricare i file",
"Deleted {{count}} file(s)_one": "È stato eliminato {{count}} file",
"Deleted {{count}} file(s)_many": "Sono stati eliminati {{count}} file",
"Deleted {{count}} file(s)_other": "Sono stati eliminati {{count}} file",
"Failed to delete {{count}} file(s)_one": "Impossibile eliminare {{count}} file",
"Failed to delete {{count}} file(s)_many": "Impossibile eliminare {{count}} file",
"Failed to delete {{count}} file(s)_other": "Impossibile eliminare {{count}} file",
"Failed to delete files": "Impossibile eliminare i file",
"Total Files": "File totali",
"Total Size": "Dimensione totale",
"Quota": "Quota",
"Used": "Utilizzato",
"Files": "File",
"Search files...": "Cerca file...",
"Newest First": "Più recenti",
"Oldest First": "Più vecchi",
"Largest First": "Più grandi",
"Smallest First": "Più piccoli",
"Name A-Z": "Nome A-Z",
"Name Z-A": "Nome Z-A",
"{{count}} selected_one": "{{count}} selezionato",
"{{count}} selected_many": "{{count}} selezionati",
"{{count}} selected_other": "{{count}} selezionati",
"Delete Selected": "Elimina selezionati",
"Created": "Creato",
"No files found": "Nessun file trovato",
"No files uploaded yet": "Nessun file caricato",
"files": "file",
"Page {{current}} of {{total}}": "Pagina {{current}} di {{total}}",
"Are you sure to delete {{count}} selected file(s)?_one": "Sei sicuro di voler eliminare {{count}} file selezionato?",
"Are you sure to delete {{count}} selected file(s)?_many": "Sei sicuro di voler eliminare {{count}} file selezionati?",
"Are you sure to delete {{count}} selected file(s)?_other": "Sei sicuro di voler eliminare {{count}} file selezionati?",
"Cloud Storage Usage": "Utilizzo archiviazione cloud",
"Rename Group": "Rinomina gruppo",
"From Directory": "Da directory",
"Successfully imported {{count}} book(s)_one": "Importato con successo 1 libro",
"Successfully imported {{count}} book(s)_many": "Importati con successo {{count}} libri",
"Successfully imported {{count}} book(s)_other": "Importati con successo {{count}} libri",
"Count": "Conteggio",
"Start Page": "Pagina iniziale",
"Search in OPDS Catalog...": "Cerca nel catalogo OPDS...",
"Please log in to use advanced TTS features.": "Effettua il login per utilizzare le funzionalità TTS avanzate."
}
@@ -8,7 +8,6 @@
"Auto Mode": "自動モード",
"Behavior": "動作",
"Book": "書籍",
"Book Cover": "表紙",
"Bookmark": "ブックマーク",
"Cancel": "キャンセル",
"Chapter": "章",
@@ -18,7 +17,6 @@
"Confirm Deletion": "削除の確認",
"Copied to notebook": "ノートブックにコピー",
"Copy": "コピー",
"Custom CSS": "カスタムCSS",
"Dark Mode": "ダークモード",
"Default": "デフォルト",
"Default Font": "デフォルトフォント",
@@ -28,7 +26,6 @@
"Dictionary": "辞書",
"Download Readest": "Readestをダウンロード",
"Edit": "編集",
"Enter your custom CSS here...": "ここにカスタムCSSを入力...",
"Excerpts": "抜粋",
"Failed to import book(s): {{filenames}}": "書籍のインポートに失敗しました:{{filenames}}",
"Fast": "高速",
@@ -48,7 +45,6 @@
"Horizontal Direction": "横書",
"Hyphenation": "ハイフネーション",
"Import Books": "書籍をインポート",
"Language:": "言語:",
"Layout": "レイアウト",
"Light Mode": "ライトモード",
"Loading...": "読み込み中...",
@@ -70,8 +66,8 @@
"Paging Animation": "ページめくりアニメーション",
"Paragraph": "段落",
"Parallel Read": "並列読書",
"Published:": "出版日",
"Publisher:": "出版社",
"Published": "出版日",
"Publisher": "出版社",
"Reading Progress Synced": "読書進捗が同期されました",
"Reload Page": "ページを再読み込み",
"Reveal in File Explorer": "エクスプローラーで表示",
@@ -85,7 +81,6 @@
"Search...": "検索...",
"Select Book": "書籍を選択",
"Select Books": "書籍を選択",
"Select Multiple Books": "複数の書籍を選択",
"Sepia": "セピア",
"Serif Font": "セリフ体",
"Show Book Details": "書籍の詳細を表示",
@@ -96,16 +91,15 @@
"Slow": "低速",
"Solarized": "ソーラライズド",
"Speak": "読み上げ",
"Subjects:": "主題",
"Subjects": "主題",
"System Fonts": "システムフォント",
"TTS not supported in this device": "このデバイスではTTSがサポートされていません",
"Theme Color": "テーマカラー",
"Theme Mode": "テーマモード",
"Translate": "翻訳",
"Translated Text": "翻訳されたテキスト",
"Unknown": "不明",
"Untitled": "無題",
"Updated:": "更新日",
"Updated": "更新日",
"Version {{version}}": "バージョン {{version}}",
"Vertical Direction": "縦書",
"Welcome to your library. You can import your books here and read them anytime.": "ライブラリーへようこそ。ここに書籍をインポートして、いつでも読むことができます。",
@@ -114,8 +108,6 @@
"Your Library": "ライブラリー",
"TTS not supported for PDF": "PDFではTTSがサポートされていません",
"Override Book Font": "書籍フォントを上書き",
"Vertical Margins (px)": "縦マージン(px",
"Horizontal Margins (%)": "横マージン(%",
"Apply to All Books": "すべての書籍に適用",
"Apply to This Book": "この書籍に適用",
"Unable to fetch the translation. Try again later.": "翻訳を取得できません。後で再試行してください。",
@@ -124,14 +116,13 @@
"Book Details": "書籍の詳細",
"From Local File": "ローカルファイルから",
"TOC": "目次",
"Table of Contents": "目次",
"Book uploaded: {{title}}": "書籍がアップロードされました:{{title}}",
"Failed to upload book: {{title}}": "書籍のアップロードに失敗しました:{{title}}",
"Book downloaded: {{title}}": "書籍がダウンロードされました:{{title}}",
"Failed to download book: {{title}}": "書籍のダウンロードに失敗しました:{{title}}",
"Upload Book": "書籍をアップロード",
"Auto Upload Books to Cloud": "書籍を自動的にクラウドにアップロード",
"{{percentage}}% of Cloud Storage Used.": "クラウドストレージの{{percentage}}%が使用されています。",
"Storage": "ストレージ",
"Book deleted: {{title}}": "書籍が削除されました:{{title}}",
"Failed to delete book: {{title}}": "書籍の削除に失敗しました:{{title}}",
"Check Updates on Start": "開始時に更新を確認",
@@ -163,7 +154,7 @@
"Create a Password": "パスワードを作成",
"Sign up": "サインアップ",
"Signing up...": "サインアップ中...",
"Dont have an account? Sign up": "アカウントをお持ちでないですか? サインアップ",
"Don't have an account? Sign up": "アカウントをお持ちでないですか? サインアップ",
"Check your email for the confirmation link": "確認リンクのためにメールを確認してください",
"Signing in ...": "サインイン中 ...",
"Send a magic link email": "マジックリンクメールを送信",
@@ -186,37 +177,14 @@
"Sign in with Apple": "Appleでサインイン",
"Sign in with GitHub": "GitHubでサインイン",
"Account": "アカウント",
"Cloud Storage": "クラウドストレージ",
"Failed to delete user. Please try again later.": "ユーザーの削除に失敗しました。後ほど再試行してください。",
"Unlimited Offline/Online Reading": "無制限のオフライン/オンライン読書",
"Unlimited Cloud Sync Devices": "無制限のクラウド同期デバイス",
"Essential Text-to-Speech Voices": "基本的な音声合成ボイス",
"DeepL Free Access": "DeepL無料アクセス",
"Community Support": "コミュニティサポート",
"500 MB Cloud Sync Space": "500 MBのクラウド同期スペース",
"Includes All Free Tier Benefits": "無料プランの全特典を含む",
"AI Summaries": "AI要約",
"AI Translations": "AI翻訳",
"Priority Support": "優先サポート",
"DeepL Pro Access": "DeepL Proアクセス",
"Expanded Text-to-Speech Voices": "拡張された音声合成ボイス",
"2000 MB Cloud Sync Space": "2000 MBのクラウド同期スペース",
"Includes All Plus Tier Benefits": "Plusプランの全特典を含む",
"Unlimited AI Summaries": "無制限のAI要約",
"Unlimited AI Translations": "無制限のAI翻訳",
"Unlimited DeepL Pro Access": "無制限のDeepL Proアクセス",
"Advanced AI Tools": "高度なAIツール",
"Early Feature Access": "新機能への早期アクセス",
"10 GB Cloud Sync Space": "10 GBのクラウド同期スペース",
"Loading profile...": "プロフィール読み込み中...",
"Features": "機能",
"Delete Account": "アカウント削除",
"Delete Your Account?": "アカウントを削除しますか?",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "この操作は元に戻せません。クラウド上のすべてのデータが完全に削除されます。",
"Delete Permanently": "完全に削除",
"Free Tier": "無料プラン",
"Plus Tier": "Plusプラン",
"Pro Tier": "Proプラン",
"RTL Direction": "RTL方向",
"Maximum Column Height": "最大列高",
"Maximum Column Width": "最大列幅",
@@ -225,7 +193,7 @@
"No supported files found. Supported formats: {{formats}}": "サポートされているファイルが見つかりません。サポートされている形式:{{formats}}",
"Drop to Import Books": "書籍をインポートするにはドロップ",
"Custom": "カスタム",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n—William Shakespeare": "全世界は舞台であり、\nそしてすべての男性と女性は単なる役者です。\n彼らは出入り口を持っており、\nそして一人の男性は時に多くの役を演じます。\n彼の行為は七つの時代です。\n\n— ウィリアム・シェイクスピア",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "全世界は舞台であり、\nそしてすべての男性と女性は単なる役者です。\n彼らは出入り口を持っており、\nそして一人の男性は時に多くの役を演じます。\n彼の行為は七つの時代です。\n\n— ウィリアム・シェイクスピア",
"Custom Theme": "カスタムテーマ",
"Theme Name": "テーマ名",
"Text Color": "テキストカラー",
@@ -252,9 +220,9 @@
"Auto Import on File Open": "ファイルを開くと自動インポート",
"LXGW WenKai GB Screen": "LXGW WenKai SC",
"LXGW WenKai TC": "LXGW WenKai TC",
"No chapters detected.": "章が検出されません",
"Failed to parse the EPUB file.": "EPUBファイルの解析に失敗しました",
"This book format is not supported.": "この書籍形式はサポートされていません",
"No chapters detected": "章が検出されません",
"Failed to parse the EPUB file": "EPUBファイルの解析に失敗しました",
"This book format is not supported": "この書籍形式はサポートされていません",
"Unable to fetch the translation. Please log in first and try again.": "翻訳を取得できません。まずログインして再試行してください。",
"Group": "グループ",
"Always on Top": "常に最前面",
@@ -267,13 +235,13 @@
"Clear Search": "検索をクリア",
"Header & Footer": "ヘッダーとフッター",
"Apply also in Scrolled Mode": "スクロールモードでも適用",
"A new version of Readest is Available!": "新しいバージョンのReadestが利用可能です!",
"A new version of Readest is available!": "新しいバージョンのReadestが利用可能です!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Readest {{newVersion}}が利用可能です(インストールされたバージョン{{currentVersion}})。",
"Download and install now?": "今すぐダウンロードしてインストールしますか?",
"Downloading {{downloaded}} of {{contentLength}}": "ダウンロード中 {{downloaded}} / {{contentLength}}",
"Download finished": "ダウンロード完了",
"DOWNLOAD & INSTALL": "更新",
"Changelog:": "変更ログ",
"Changelog": "変更ログ",
"Software Update": "ソフトウェアの更新",
"Title": "タイトル",
"Date Read": "読書日",
@@ -282,18 +250,15 @@
"Ascending": "昇順",
"Descending": "降順",
"Sort by...": "並べ替え...",
"Added:": "追加日",
"Format:": "形式:",
"Added": "追加日",
"GuanKiapTsingKhai-T": "GuanKiapTsingKhai-T",
"Description:": "説明",
"Description": "説明",
"No description available": "説明はありません",
"List": "リスト",
"Grid": "グリッド",
"(from 'As You Like It', Act II)": "(「お気に召すまま」第2幕)",
"Link Color": "リンクカラー",
"Volume Keys for Page Flip": "音量キーでページめくり",
"Clicks for Page Flip": "タップでページめくり",
"Swap Clicks Area": "タップ領域を入れ替え",
"Screen": "画面",
"Orientation": "向き",
"Portrait": "縦",
@@ -302,7 +267,7 @@
"Checking for updates...": "更新を確認中...",
"Error checking for updates": "更新の確認中にエラーが発生しました",
"Details": "詳細",
"File Size:": "ファイルサイズ",
"File Size": "ファイルサイズ",
"Auto Detect": "自動検出",
"Next Section": "次のセクション",
"Previous Section": "前のセクション",
@@ -328,9 +293,467 @@
"Disable Translation": "翻訳を無効にする",
"Scroll": "スクロール",
"Overlap Pixels": "重なりピクセル",
"Click": "クリック",
"System Language": "システム言語",
"Security": "セキュリティ",
"Allow JavaScript": "JavaScriptを許可",
"Enable only if you trust the file.": "ファイルを信頼する場合にのみ有効にしてください。"
"Enable only if you trust the file.": "ファイルを信頼する場合にのみ有効にしてください。",
"Sort TOC by Page": "目次をページで並べ替え",
"Search in {{count}} Book(s)..._other": "{{count}}冊の本を検索...",
"No notes match your search": "ノートが見つかりません",
"Search notes and excerpts...": "ノートを検索...",
"Sign in to Sync": "同期するにはサインイン",
"Synced at {{time}}": "{{time}} に同期済み",
"Never synced": "まだ同期されていません",
"Show Remaining Time": "残り時間を表示",
"{{time}} min left in chapter": "{{time}}分残り",
"Override Book Color": "書籍の色を上書き",
"Login Required": "ログイン必須",
"Quota Exceeded": "上限超過",
"{{percentage}}% of Daily Translation Characters Used.": "日次翻訳文字数の使用量は{{percentage}}%です。",
"Translation Characters": "翻訳文字数",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}}音声",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "何か問題が発生しました。心配しないでください。私たちのチームが通知を受けており、修正に取り組んでいます。",
"Error Details:": "エラーの詳細:",
"Try Again": "再試行",
"Need help?": "ヘルプが必要ですか?",
"Contact Support": "サポートに連絡",
"Code Highlighting": "コードハイライト",
"Enable Highlighting": "ハイライトを有効にする",
"Code Language": "コード言語",
"Top Margin (px)": "上マージン (px)",
"Bottom Margin (px)": "下マージン (px)",
"Right Margin (px)": "右マージン (px)",
"Left Margin (px)": "左マージン (px)",
"Column Gap (%)": "列間の間隔 (%)",
"Always Show Status Bar": "ステータスバーを常に表示",
"Custom Content CSS": "コンテンツCSS",
"Enter CSS for book content styling...": "本のコンテンツ用CSSを入力...",
"Custom Reader UI CSS": "リーダーUIのCSS",
"Enter CSS for reader interface styling...": "リーダーインターフェース用CSSを入力...",
"Crop": "トリミング",
"Book Covers": "書籍の表紙",
"Fit": "フィット",
"Reset {{settings}}": "{{settings}}をリセット",
"Reset Settings": "設定をリセット",
"{{count}} pages left in chapter_other": "{{count}} ページ残り",
"Show Remaining Pages": "残りを表示",
"Source Han Serif CN VF": "Source Han Serif",
"Huiwen-mincho": "Huiwen Mincho",
"KingHwa_OldSong": "KingHwa Song",
"Manage Subscription": "サブスクリプションを管理",
"Coming Soon": "近日公開",
"Upgrade to {{plan}}": "{{plan}} にアップグレード",
"Upgrade to Plus or Pro": "Plus または Pro にアップグレード",
"Current Plan": "現在のプラン",
"Plan Limits": "プランの上限",
"Processing your payment...": "お支払いを処理中...",
"Please wait while we confirm your subscription.": "サブスクリプションを確認しています。しばらくお待ちください。",
"Payment Processing": "支払いを処理中",
"Your payment is being processed. This usually takes a few moments.": "お支払いを処理しています。通常、数秒かかります。",
"Payment Failed": "支払いに失敗しました",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "サブスクリプションを処理できませんでした。再度お試しいただくか、問題が続く場合はサポートにお問い合わせください。",
"Back to Profile": "プロフィールに戻る",
"Subscription Successful!": "サブスクリプションが完了しました!",
"Thank you for your subscription! Your payment has been processed successfully.": "ご登録ありがとうございます!お支払いが正常に処理されました。",
"Email:": "メール:",
"Plan:": "プラン:",
"Amount:": "金額:",
"Go to Library": "ライブラリへ移動",
"Need help? Contact our support team at support@readest.com": "サポートが必要ですか? support@readest.com までお問い合わせください。",
"Free Plan": "無料プラン",
"month": "月",
"AI Translations (per day)": "AI翻訳(1日あたり)",
"Plus Plan": "Plusプラン",
"Includes All Free Plan Benefits": "無料プランの全特典を含む",
"Pro Plan": "Proプラン",
"More AI Translations": "さらに多くのAI翻訳",
"Complete Your Subscription": "サブスクリプションを完了する",
"{{percentage}}% of Cloud Sync Space Used.": "クラウド同期スペースの使用量は{{percentage}}%です。",
"Cloud Sync Storage": "クラウド同期容量",
"Disable": "無効にする",
"Enable": "有効にする",
"Upgrade to Readest Premium": "Readest Premiumにアップグレード",
"Show Source Text": "原文を表示",
"Cross-Platform Sync": "クロスプラットフォーム同期",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "ライブラリや進捗、メモを全デバイスで同期。",
"Customizable Reading": "カスタマイズ可能な読書",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "フォントやレイアウト、テーマを自由に調整。",
"AI Read Aloud": "AI音声読み上げ",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "自然なAI音声で本を聴く。",
"AI Translations": "AI翻訳",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "Google、Azure、DeepLで即時翻訳。",
"Connect with fellow readers and get help fast in our friendly community channels.": "コミュニティで交流・サポートを利用。",
"Unlimited AI Read Aloud Hours": "無制限のAI読み上げ",
"Listen without limits—convert as much text as you like into immersive audio.": "制限なくテキストを音声化。",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "高度な翻訳機能を利用可能に。",
"DeepL Pro Access": "DeepL Pro利用",
"Enjoy faster responses and dedicated assistance whenever you need help.": "優先サポートを利用可能。",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "翻訳上限に達しました。アップグレードで継続可能です。",
"Includes All Plus Plan Benefits": "Plusプランの全特典を含む",
"Early Feature Access": "新機能への先行アクセス",
"Be the first to explore new features, updates, and innovations before anyone else.": "新機能、アップデート、革新を誰よりも先に体験。",
"Advanced AI Tools": "高度なAIツール",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "スマートな読書、翻訳、コンテンツ発見のための強力なAIツールを活用。",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "最も正確な翻訳エンジンで1日最大10万文字を翻訳。",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "最も正確な翻訳エンジンで1日最大50万文字を翻訳。",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "最大5GBの安全なクラウドストレージで読書コレクション全体を保存・アクセス。",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "最大20GBの安全なクラウドストレージで読書コレクション全体を保存・アクセス。",
"Deleted cloud backup of the book: {{title}}": "書籍のクラウドバックアップを削除しました:{{title}}",
"Are you sure to delete the cloud backup of the selected book?": "選択した書籍のクラウドバックアップを削除してもよろしいですか?",
"What's New in Readest": "Readestの新機能",
"Enter book title": "本のタイトルを入力",
"Subtitle": "サブタイトル",
"Enter book subtitle": "本のサブタイトルを入力",
"Enter author name": "著者名を入力",
"Series": "シリーズ",
"Enter series name": "シリーズ名を入力",
"Series Index": "シリーズ番号",
"Enter series index": "シリーズ番号を入力",
"Total in Series": "シリーズ総数",
"Enter total books in series": "シリーズの総冊数を入力",
"Enter publisher": "出版社を入力",
"Publication Date": "出版日",
"Identifier": "識別子",
"Enter book description": "本の説明を入力",
"Change cover image": "表紙画像を変更",
"Replace": "置き換え",
"Unlock cover": "表紙のロックを解除",
"Lock cover": "表紙をロック",
"Auto-Retrieve Metadata": "メタデータを自動取得",
"Auto-Retrieve": "自動取得",
"Unlock all fields": "すべてのフィールドのロックを解除",
"Unlock All": "すべてロック解除",
"Lock all fields": "すべてのフィールドをロック",
"Lock All": "すべてロック",
"Reset": "リセット",
"Edit Metadata": "メタデータを編集",
"Locked": "ロック中",
"Select Metadata Source": "メタデータソースを選択",
"Keep manual input": "手動入力を保持",
"Google Books": "Google Books",
"Open Library": "Open Library",
"Fiction, Science, History": "小説、科学、歴史",
"Open Book in New Window": "新しいウィンドウで本を開く",
"Voices for {{lang}}": "{{lang}}の音声",
"Yandex Translate": "Yandex翻訳",
"YYYY or YYYY-MM-DD": "YYYYまたはYYYY-MM-DD",
"Restore Purchase": "購入を復元",
"No purchases found to restore.": "復元する購入が見つかりません。",
"Failed to restore purchases.": "購入の復元に失敗しました。",
"Failed to manage subscription.": "サブスクリプションの管理に失敗しました。",
"Failed to load subscription plans.": "サブスクリプションプランの読み込みに失敗しました。",
"year": "年",
"Failed to create checkout session": "チェックアウトセッションの作成に失敗しました",
"Storage": "ストレージ",
"Terms of Service": "利用規約",
"Privacy Policy": "プライバシーポリシー",
"Disable Double Click": "ダブルクリック無効",
"TTS not supported for this document": "TTSはこのドキュメントではサポートされていません",
"Reset Password": "パスワードをリセット",
"Show Reading Progress": "読書進捗を表示",
"Reading Progress Style": "読書進捗スタイル",
"Page Number": "ページ番号",
"Percentage": "パーセンテージ",
"Deleted local copy of the book: {{title}}": "書籍のローカルコピーを削除しました:{{title}}",
"Failed to delete cloud backup of the book: {{title}}": "書籍のクラウドバックアップの削除に失敗しました:{{title}}",
"Failed to delete local copy of the book: {{title}}": "書籍のローカルコピーの削除に失敗しました:{{title}}",
"Are you sure to delete the local copy of the selected book?": "選択した書籍のローカルコピーを削除してもよろしいですか?",
"Remove from Cloud & Device": "クラウドとデバイスから削除",
"Remove from Cloud Only": "クラウドからのみ削除",
"Remove from Device Only": "デバイスからのみ削除",
"Disconnected": "切断されました",
"KOReader Sync Settings": "KOReader Sync設定",
"Sync Strategy": "同期戦略",
"Ask on conflict": "競合時に確認",
"Always use latest": "最新を常に使用",
"Send changes only": "変更のみを送信",
"Receive changes only": "変更のみを受信",
"Checksum Method": "チェックサム方式",
"File Content (recommended)": "ファイル内容(推奨)",
"File Name": "ファイル名",
"Device Name": "デバイス名",
"Connect to your KOReader Sync server.": "KOReader Syncサーバーに接続します。",
"Server URL": "サーバーURL",
"Username": "ユーザー名",
"Your Username": "あなたのユーザー名",
"Password": "パスワード",
"Connect": "接続",
"KOReader Sync": "KOReader Sync",
"Sync Conflict": "同期競合",
"Sync reading progress from \"{{deviceName}}\"?": "{{deviceName}}から読書進捗を同期しますか?",
"another device": "別のデバイス",
"Local Progress": "ローカル進捗",
"Remote Progress": "リモート進捗",
"Page {{page}} of {{total}} ({{percentage}}%)": "ページ {{page}} / {{total}} ({{percentage}}%)",
"Current position": "現在の位置",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "おおよそページ {{page}} / {{total}} ({{percentage}}%)",
"Approximately {{percentage}}%": "おおよそ {{percentage}}%",
"Failed to connect": "接続に失敗しました",
"Sync Server Connected": "同期サーバーに接続されました",
"Sync as {{userDisplayName}}": "{{userDisplayName}} として同期",
"Custom Fonts": "カスタムフォント",
"Cancel Delete": "削除をキャンセル",
"Import Font": "フォントをインポート",
"Delete Font": "フォントを削除",
"Tips": "ヒント",
"Custom fonts can be selected from the Font Face menu": "カスタムフォントは書体メニューから選択できます",
"Manage Custom Fonts": "カスタムフォント管理",
"Select Files": "ファイルを選択",
"Select Image": "画像を選択",
"Select Video": "動画を選択",
"Select Audio": "音声を選択",
"Select Fonts": "フォントを選択",
"Supported font formats: .ttf, .otf, .woff, .woff2": "サポートされているフォント形式:.ttf, .otf, .woff, .woff2",
"Push Progress": "進捗をプッシュ",
"Pull Progress": "進捗をプル",
"Previous Paragraph": "前の段落",
"Previous Sentence": "前の文",
"Pause": "一時停止",
"Play": "再生",
"Next Sentence": "次の文",
"Next Paragraph": "次の段落",
"Separate Cover Page": "別の表紙ページ",
"Resize Notebook": "ノートのサイズ変更",
"Resize Sidebar": "サイドバーのサイズ変更",
"Get Help from the Readest Community": "Readestコミュニティからヘルプを得る",
"Remove cover image": "表紙画像を削除",
"Bookshelf": "本棚",
"View Menu": "メニューを表示",
"Settings Menu": "設定メニュー",
"View account details and quota": "アカウントの詳細とクォータを表示",
"Library Header": "ライブラリヘッダー",
"Book Content": "本の内容",
"Footer Bar": "フッターバー",
"Header Bar": "ヘッダーバー",
"View Options": "表示オプション",
"Book Menu": "本のメニュー",
"Search Options": "検索オプション",
"Close": "閉じる",
"Delete Book Options": "本の削除オプション",
"ON": "オン",
"OFF": "オフ",
"Reading Progress": "読書進捗",
"Page Margin": "ページマージン",
"Remove Bookmark": "ブックマークを削除",
"Add Bookmark": "ブックマークを追加",
"Books Content": "本の内容",
"Jump to Location": "位置にジャンプ",
"Unpin Notebook": "ノートブックのピン留めを解除",
"Pin Notebook": "ノートブックをピン留め",
"Hide Search Bar": "検索バーを隠す",
"Show Search Bar": "検索バーを表示",
"On {{current}} of {{total}} page": "ページ {{current}} / {{total}}",
"Section Title": "セクションタイトル",
"Decrease": "減少",
"Increase": "増加",
"Settings Panels": "設定パネル",
"Settings": "設定",
"Unpin Sidebar": "サイドバーのピン留めを解除",
"Pin Sidebar": "サイドバーをピン留め",
"Toggle Sidebar": "サイドバーの切り替え",
"Toggle Translation": "翻訳の切り替え",
"Translation Disabled": "翻訳が無効化されました",
"Minimize": "最小化",
"Maximize or Restore": "最大化または復元",
"Exit Parallel Read": "並行読書を終了",
"Enter Parallel Read": "並行読書に入る",
"Zoom Level": "ズームレベル",
"Zoom Out": "ズームアウト",
"Reset Zoom": "ズームリセット",
"Zoom In": "ズームイン",
"Zoom Mode": "ズームモード",
"Single Page": "シングルページ",
"Auto Spread": "自動スプレッド",
"Fit Page": "ページに合わせる",
"Fit Width": "幅に合わせる",
"Failed to select directory": "ディレクトリの選択に失敗しました",
"The new data directory must be different from the current one.": "新しいデータディレクトリは現在のものと異なる必要があります。",
"Migration failed: {{error}}": "移行に失敗しました: {{error}}",
"Change Data Location": "データの場所を変更",
"Current Data Location": "現在のデータの場所",
"Total size: {{size}}": "合計サイズ: {{size}}",
"Calculating file info...": "ファイル情報を計算中...",
"New Data Location": "新しいデータの場所",
"Choose Different Folder": "別のフォルダーを選択",
"Choose New Folder": "新しいフォルダーを選択",
"Migrating data...": "データを移行中...",
"Copying: {{file}}": "コピー中: {{file}}",
"{{current}} of {{total}} files": "{{current}} / {{total}} ファイル",
"Migration completed successfully!": "移行が成功しました!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "データは新しい場所に移動されました。プロセスを完了するにはアプリケーションを再起動してください。",
"Migration failed": "移行に失敗しました",
"Important Notice": "重要なお知らせ",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "これにより、すべてのアプリデータが新しい場所に移動されます。宛先に十分な空き容量があることを確認してください。",
"Restart App": "アプリを再起動",
"Start Migration": "移行を開始",
"Advanced Settings": "詳細設定",
"File count: {{size}}": "ファイル数: {{size}}",
"Background Read Aloud": "バックグラウンド読み上げ",
"Ready to read aloud": "読み上げの準備ができました",
"Read Aloud": "読み上げ",
"Screen Brightness": "画面の明るさ",
"Background Image": "背景画像",
"Import Image": "画像をインポート",
"Opacity": "不透明度",
"Size": "サイズ",
"Cover": "カバー",
"Contain": "含む",
"{{number}} pages left in chapter": "章に{{number}}ページ残り",
"Device": "デバイス",
"E-Ink Mode": "E-Inkモード",
"Highlight Colors": "ハイライトカラー",
"Auto Screen Brightness": "自動画面の明るさ",
"Pagination": "ページネーション",
"Disable Double Tap": "ダブルタップを無効にする",
"Tap to Paginate": "タップしてページを切り替える",
"Click to Paginate": "クリックしてページを切り替える",
"Tap Both Sides": "両側をタップ",
"Click Both Sides": "両側をクリック",
"Swap Tap Sides": "タップサイドを入れ替える",
"Swap Click Sides": "クリックサイドを入れ替える",
"Source and Translated": "原文と翻訳",
"Translated Only": "翻訳のみ",
"Source Only": "原文のみ",
"TTS Text": "TTSテキスト",
"The book file is corrupted": "本のファイルが破損しています",
"The book file is empty": "本のファイルが空です",
"Failed to open the book file": "本のファイルを開くことができませんでした",
"On-Demand Purchase": "オンデマンド購入",
"Full Customization": "フルカスタマイズ",
"Lifetime Plan": "ライフタイムプラン",
"One-Time Payment": "ワンタイムペイメント",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "すべてのデバイスで特定の機能にライフタイムアクセスを楽しむために、1回の支払いを行います。必要なときにのみ特定の機能やサービスを購入します。",
"Expand Cloud Sync Storage": "クラウド同期ストレージを拡張",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "1回の購入でクラウドストレージを永遠に拡張します。追加の購入ごとに、さらに多くのスペースが追加されます。",
"Unlock All Customization Options": "すべてのカスタマイズオプションを解除",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "追加のテーマ、フォント、レイアウトオプション、読み上げ、翻訳者、クラウドストレージサービスを解除します。",
"Purchase Successful!": "購入成功!",
"lifetime": "ライフタイム",
"Thank you for your purchase! Your payment has been processed successfully.": "ご購入ありがとうございます!お支払いが正常に処理されました。",
"Order ID:": "購入ID",
"TTS Highlighting": "TTSハイライト",
"Style": "スタイル",
"Underline": "下線",
"Strikethrough": "取り消し線",
"Squiggly": "波線",
"Outline": "アウトライン",
"Save Current Color": "現在の色を保存",
"Quick Colors": "クイックカラー",
"Highlighter": "蛍光ペン",
"Save Book Cover": "本のカバーを保存",
"Auto-save last book cover": "最後の本のカバーを自動保存",
"Back": "戻る",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "確認メールを送信しました。変更を確認するために、古いメールアドレスと新しいメールアドレスを確認してください。",
"Failed to update email": "メールの更新に失敗しました",
"New Email": "新しいメールアドレス",
"Your new email": "あなたの新しいメールアドレス",
"Updating email ...": "メールを更新しています ...",
"Update email": "メールを更新",
"Current email": "現在のメールアドレス",
"Update Email": "メールを更新",
"All": "すべて",
"Unable to open book": "本を開くことができません",
"Punctuation": "句読点",
"Replace Quotation Marks": "引用符を置き換える",
"Enabled only in vertical layout.": "縦書きレイアウトでのみ有効です。",
"No Conversion": "変換なし",
"Simplified to Traditional": "簡体字 → 繁体字",
"Traditional to Simplified": "繁体字 → 簡体字",
"Simplified to Traditional (Taiwan)": "簡体字 → 繁体字(台湾)",
"Simplified to Traditional (Hong Kong)": "簡体字 → 繁体字(香港)",
"Simplified to Traditional (Taiwan), with phrases": "簡体字 → 繁体字(台湾)• フレーズ",
"Traditional (Taiwan) to Simplified": "繁体字(台湾) → 簡体字",
"Traditional (Hong Kong) to Simplified": "繁体字(香港) → 簡体字",
"Traditional (Taiwan) to Simplified, with phrases": "繁体字(台湾) → 簡体字 • フレーズ",
"Convert Simplified and Traditional Chinese": "簡体字/繁体字変換",
"Convert Mode": "変換モード",
"Failed to auto-save book cover for lock screen: {{error}}": "ロック画面の本のカバーの自動保存に失敗しました:{{error}}",
"Download from Cloud": "クラウドからダウンロード",
"Upload to Cloud": "クラウドにアップロード",
"Clear Custom Fonts": "カスタムフォントをクリア",
"Columns": "列",
"OPDS Catalogs": "OPDSカタログ",
"Adding LAN addresses is not supported in the web app version.": "Webアプリ版ではLANアドレスの追加はサポートされていません。",
"Invalid OPDS catalog. Please check the URL.": "無効なOPDSカタログです。URLを確認してください。",
"Browse and download books from online catalogs": "オンラインカタログから本を閲覧・ダウンロード",
"My Catalogs": "マイカタログ",
"Add Catalog": "カタログを追加",
"No catalogs yet": "まだカタログはありません",
"Add your first OPDS catalog to start browsing books": "本を閲覧するには、最初のOPDSカタログを追加してください。",
"Add Your First Catalog": "最初のカタログを追加",
"Browse": "閲覧",
"Popular Catalogs": "人気カタログ",
"Add": "追加",
"Add OPDS Catalog": "OPDSカタログを追加",
"Catalog Name": "カタログ名",
"My Calibre Library": "私のCalibreライブラリ",
"OPDS URL": "OPDS URL",
"Username (optional)": "ユーザー名(任意)",
"Password (optional)": "パスワード(任意)",
"Description (optional)": "説明(任意)",
"A brief description of this catalog": "このカタログの簡単な説明",
"Validating...": "検証中...",
"View All": "すべて表示",
"Forward": "進む",
"Home": "ホーム",
"{{count}} items_other": "{{count}} 件",
"Download completed": "ダウンロード完了",
"Download failed": "ダウンロード失敗",
"Open Access": "オープンアクセス",
"Borrow": "借りる",
"Buy": "購入",
"Subscribe": "購読",
"Sample": "サンプル",
"Download": "ダウンロード",
"Open & Read": "開いて読む",
"Tags": "タグ",
"Tag": "タグ",
"First": "最初",
"Previous": "前へ",
"Next": "次へ",
"Last": "最後",
"Cannot Load Page": "ページを読み込めません",
"An error occurred": "エラーが発生しました",
"Online Library": "オンラインライブラリ",
"URL must start with http:// or https://": "URLはhttp://またはhttps://で始まる必要があります",
"Title, Author, Tag, etc...": "タイトル、著者、タグなど...",
"Query": "クエリ",
"Subject": "件名",
"Enter {{terms}}": "{{terms}}を入力してください",
"No search results found": "検索結果が見つかりません",
"Failed to load OPDS feed: {{status}} {{statusText}}": "OPDSフィードの読み込みに失敗しました: {{status}} {{statusText}}",
"Search in {{title}}": "{{title}}内を検索",
"Manage Storage": "ストレージ管理",
"Failed to load files": "ファイルの読み込みに失敗しました",
"Deleted {{count}} file(s)_other": "{{count}} 件のファイルを削除しました",
"Failed to delete {{count}} file(s)_other": "{{count}} 件のファイルの削除に失敗しました",
"Failed to delete files": "ファイルの削除に失敗しました",
"Total Files": "ファイル合計",
"Total Size": "合計サイズ",
"Quota": "容量制限",
"Used": "使用済み",
"Files": "ファイル",
"Search files...": "ファイルを検索...",
"Newest First": "新しい順",
"Oldest First": "古い順",
"Largest First": "大きい順",
"Smallest First": "小さい順",
"Name A-Z": "名前 A-Z",
"Name Z-A": "名前 Z-A",
"{{count}} selected_other": "{{count}} 件選択済み",
"Delete Selected": "選択した項目を削除",
"Created": "作成日",
"No files found": "ファイルが見つかりません",
"No files uploaded yet": "まだファイルがアップロードされていません",
"files": "ファイル",
"Page {{current}} of {{total}}": "ページ {{current}} / {{total}}",
"Are you sure to delete {{count}} selected file(s)?_other": "選択した {{count}} 件のファイルを削除してもよろしいですか?",
"Cloud Storage Usage": "クラウドストレージ使用量",
"Rename Group": "グループ名を変更",
"From Directory": "ディレクトリから",
"Successfully imported {{count}} book(s)_other": "成功裏に{{count}}冊の本をインポートしました",
"Count": "件数",
"Start Page": "開始ページ",
"Search in OPDS Catalog...": "OPDSカタログ内を検索...",
"Please log in to use advanced TTS features.": "高度なTTS機能を使用するにはログインしてください。"
}
@@ -8,7 +8,6 @@
"Auto Mode": "자동 모드",
"Behavior": "동작",
"Book": "책",
"Book Cover": "책 표지",
"Bookmark": "북마크",
"Cancel": "취소",
"Chapter": "챕터",
@@ -18,7 +17,6 @@
"Confirm Deletion": "삭제 확인",
"Copied to notebook": "노트북에 복사됨",
"Copy": "복사",
"Custom CSS": "사용자 정의 CSS",
"Dark Mode": "다크 모드",
"Default": "기본값",
"Default Font": "기본 글꼴",
@@ -28,7 +26,6 @@
"Dictionary": "사전",
"Download Readest": "Readest 다운로드",
"Edit": "편집",
"Enter your custom CSS here...": "여기에 사용자 정의 CSS를 입력하세요...",
"Excerpts": "발췌",
"Failed to import book(s): {{filenames}}": "책 가져오기 실패: {{filenames}}",
"Fast": "빠름",
@@ -48,7 +45,6 @@
"Horizontal Direction": "수평 방향",
"Hyphenation": "하이픈 넣기",
"Import Books": "책 가져오기",
"Language:": "언어:",
"Layout": "레이아웃",
"Light Mode": "라이트 모드",
"Loading...": "로딩 중...",
@@ -70,8 +66,8 @@
"Paging Animation": "페이지 넘김 애니메이션",
"Paragraph": "단락",
"Parallel Read": "병렬 읽기",
"Published:": "출판일:",
"Publisher:": "출판사:",
"Published": "출판일",
"Publisher": "출판사",
"Reading Progress Synced": "읽기 진행 상황 동기화됨",
"Reload Page": "페이지 새로고침",
"Reveal in File Explorer": "파일 탐색기에서 표시",
@@ -85,7 +81,6 @@
"Search...": "검색...",
"Select Book": "책 선택",
"Select Books": "책 선택",
"Select Multiple Books": "여러 책 선택",
"Sepia": "세피아",
"Serif Font": "세리프체",
"Show Book Details": "책 세부 정보 표시",
@@ -96,16 +91,15 @@
"Slow": "느림",
"Solarized": "솔라라이즈드",
"Speak": "말하기",
"Subjects:": "주제:",
"Subjects": "주제",
"System Fonts": "시스템 글꼴",
"TTS not supported in this device": "이 장치에서 TTS가 지원되지 않음",
"Theme Color": "테마 색상",
"Theme Mode": "테마 모드",
"Translate": "번역",
"Translated Text": "번역된 텍스트",
"Unknown": "알 수 없음",
"Untitled": "제목 없음",
"Updated:": "업데이트일:",
"Updated": "업데이트일",
"Version {{version}}": "버전 {{version}}",
"Vertical Direction": "수직 방향",
"Welcome to your library. You can import your books here and read them anytime.": "내 서재에 오신 것을 환영합니다. 여기에서 책을 가져와 언제든지 읽을 수 있습니다.",
@@ -114,8 +108,6 @@
"Your Library": "내 서재",
"TTS not supported for PDF": "PDF에서 TTS가 지원되지 않음",
"Override Book Font": "책 글꼴 덮어쓰기",
"Vertical Margins (px)": "수직 여백 (px)",
"Horizontal Margins (%)": "수평 여백 (%)",
"Apply to All Books": "모든 책에 적용",
"Apply to This Book": "이 책에 적용",
"Unable to fetch the translation. Try again later.": "번역을 가져올 수 없습니다. 나중에 다시 시도하세요.",
@@ -124,14 +116,13 @@
"Book Details": "책 세부 정보",
"From Local File": "로컬 파일에서",
"TOC": "목차",
"Table of Contents": "목차",
"Book uploaded: {{title}}": "책 업로드됨: {{title}}",
"Failed to upload book: {{title}}": "책 업로드 실패: {{title}}",
"Book downloaded: {{title}}": "책 다운로드됨: {{title}}",
"Failed to download book: {{title}}": "책 다운로드 실패: {{title}}",
"Upload Book": "책 업로드",
"Auto Upload Books to Cloud": "책 자동으로 클라우드에 업로드",
"{{percentage}}% of Cloud Storage Used.": "클라우드 저장소 사용량 {{percentage}}%.",
"Storage": "저장소",
"Book deleted: {{title}}": "책 삭제됨: {{title}}",
"Failed to delete book: {{title}}": "책 삭제 실패: {{title}}",
"Check Updates on Start": "시작 시 업데이트 확인",
@@ -163,7 +154,7 @@
"Create a Password": "비밀번호 만들기",
"Sign up": "회원가입",
"Signing up...": "회원가입 중...",
"Dont have an account? Sign up": "계정이 없습니까? 회원가입",
"Don't have an account? Sign up": "계정이 없습니까? 회원가입",
"Check your email for the confirmation link": "확인 링크를 위해 이메일을 확인하세요",
"Signing in ...": "로그인 중 ...",
"Send a magic link email": "마법의 링크 이메일 보내기",
@@ -186,37 +177,14 @@
"Sign in with Apple": "Apple로 로그인",
"Sign in with GitHub": "GitHub로 로그인",
"Account": "계정",
"Cloud Storage": "클라우드 스토리지",
"Failed to delete user. Please try again later.": "사용자 삭제에 실패했습니다. 나중에 다시 시도해 주세요.",
"Unlimited Offline/Online Reading": "무제한 오프라인/온라인 읽기",
"Unlimited Cloud Sync Devices": "무제한 클라우드 동기화 기기",
"Essential Text-to-Speech Voices": "필수 텍스트 음성 변환 목소리",
"DeepL Free Access": "DeepL 무료 접근",
"Community Support": "커뮤니티 지원",
"500 MB Cloud Sync Space": "500 MB 클라우드 동기화 공간",
"Includes All Free Tier Benefits": "무료 등급의 모든 혜택 포함",
"AI Summaries": "AI 요약",
"AI Translations": "AI 번역",
"Priority Support": "우선 지원",
"DeepL Pro Access": "DeepL 프로 접근",
"Expanded Text-to-Speech Voices": "확장된 텍스트 음성 변환 목소리",
"2000 MB Cloud Sync Space": "2000 MB 클라우드 동기화 공간",
"Includes All Plus Tier Benefits": "플러스 등급의 모든 혜택 포함",
"Unlimited AI Summaries": "무제한 AI 요약",
"Unlimited AI Translations": "무제한 AI 번역",
"Unlimited DeepL Pro Access": "무제한 DeepL 프로 접근",
"Advanced AI Tools": "고급 AI 도구",
"Early Feature Access": "신기능 조기 접근",
"10 GB Cloud Sync Space": "10 GB 클라우드 동기화 공간",
"Loading profile...": "프로필 로딩 중...",
"Features": "기능",
"Delete Account": "계정 삭제",
"Delete Your Account?": "계정을 삭제하시겠습니까?",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "이 작업은 취소할 수 없습니다. 클라우드에 있는 모든 데이터가 영구적으로 삭제됩니다.",
"Delete Permanently": "영구 삭제",
"Free Tier": "무료 등급",
"Plus Tier": "플러스 등급",
"Pro Tier": "프로 등급",
"RTL Direction": "RTL 방향",
"Maximum Column Height": "최대 열 높이",
"Maximum Column Width": "최대 열 너비",
@@ -225,7 +193,7 @@
"No supported files found. Supported formats: {{formats}}": "지원되는 파일이 없습니다. 지원되는 형식: {{formats}}",
"Drop to Import Books": "책 가져오기 위해 드롭",
"Custom": "사용자 정의",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n—William Shakespeare": "세상은 무대이며,\n그리고 모든 남자와 여자는 단지 배우일 뿐입니다;\n그들은 나가는 곳과 들어오는 곳이 있으며,\n그리고 한 남자는 그의 시간에 많은 역할을 합니다,\n그의 행동은 일곱 시대입니다.\n\n— 윌리엄 셰익스피어",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "세상은 무대이며,\n그리고 모든 남자와 여자는 단지 배우일 뿐입니다;\n그들은 나가는 곳과 들어오는 곳이 있으며,\n그리고 한 남자는 그의 시간에 많은 역할을 합니다,\n그의 행동은 일곱 시대입니다.\n\n— 윌리엄 셰익스피어",
"Custom Theme": "사용자 정의 테마",
"Theme Name": "테마 이름",
"Text Color": "텍스트 색상",
@@ -252,9 +220,9 @@
"Auto Import on File Open": "파일 열 때 자동 가져오기",
"LXGW WenKai GB Screen": "LXGW WenKai SC",
"LXGW WenKai TC": "LXGW WenKai TC",
"No chapters detected.": "장 발견되지 않음.",
"Failed to parse the EPUB file.": "EPUB 파일 구문 분석 실패.",
"This book format is not supported.": "이 책 형식은 지원되지 않습니다.",
"No chapters detected": "장 발견되지 않음",
"Failed to parse the EPUB file": "EPUB 파일 구문 분석 실패",
"This book format is not supported": "이 책 형식은 지원되지 않습니다",
"Unable to fetch the translation. Please log in first and try again.": "번역을 가져올 수 없습니다. 먼저 로그인하고 다시 시도하세요.",
"Group": "그룹",
"Always on Top": "항상 위에",
@@ -267,13 +235,13 @@
"Clear Search": "검색 지우기",
"Header & Footer": "헤더 및 푸터",
"Apply also in Scrolled Mode": "스크롤 모드에서도 적용",
"A new version of Readest is Available!": "Readest의 새 버전이 있습니다!",
"A new version of Readest is available!": "Readest의 새 버전이 있습니다!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Readest {{newVersion}}가 사용 가능 (설치된 버전 {{currentVersion}}).",
"Download and install now?": "지금 다운로드하고 설치하시겠습니까?",
"Downloading {{downloaded}} of {{contentLength}}": "다운로드 중 {{downloaded}} / {{contentLength}}",
"Download finished": "다운로드 완료",
"DOWNLOAD & INSTALL": "다운로드 및 설치",
"Changelog:": "변경 로그:",
"Changelog": "변경 로그",
"Software Update": "소프트웨어 업데이트",
"Title": "제목",
"Date Read": "읽은 날짜",
@@ -282,18 +250,15 @@
"Ascending": "오름차순",
"Descending": "내림차순",
"Sort by...": "정렬 기준...",
"Added:": "추가됨:",
"Format:": "형식:",
"Added": "추가됨",
"GuanKiapTsingKhai-T": "GuanKiapTsingKhai-T",
"Description:": "설명:",
"Description": "설명",
"No description available": "설명 없음",
"List": "목록",
"Grid": "격자",
"(from 'As You Like It', Act II)": "(당신이 좋아하는 대로, 2막)",
"Link Color": "링크 색상",
"Volume Keys for Page Flip": "페이지 넘김을 위한 볼륨 키",
"Clicks for Page Flip": "페이지 넘김을 위한 클릭",
"Swap Clicks Area": "클릭 영역 교환",
"Screen": "화면",
"Orientation": "방향",
"Portrait": "세로",
@@ -302,7 +267,7 @@
"Checking for updates...": "업데이트 확인 중...",
"Error checking for updates": "업데이트 확인 중 오류 발생",
"Details": "세부정보",
"File Size:": "파일 크기:",
"File Size": "파일 크기",
"Auto Detect": "자동 감지",
"Next Section": "다음 섹션",
"Previous Section": "이전 섹션",
@@ -328,9 +293,467 @@
"Disable Translation": "번역 비활성화",
"Scroll": "스크롤",
"Overlap Pixels": "겹치는 픽셀",
"Click": "클릭",
"System Language": "시스템 언어",
"Security": "보안",
"Allow JavaScript": "JavaScript 허용",
"Enable only if you trust the file.": "파일을 신뢰하는 경우에만 활성화하세요."
"Enable only if you trust the file.": "파일을 신뢰하는 경우에만 활성화하세요.",
"Sort TOC by Page": "목차를 페이지별로 정렬",
"Search in {{count}} Book(s)..._other": "{{count}}권의 책에서 검색...",
"No notes match your search": "일치하는 노트가 없습니다",
"Search notes and excerpts...": "노트 검색...",
"Sign in to Sync": "동기화를 위해 로그인하세요",
"Synced at {{time}}": "{{time}}에 동기화됨",
"Never synced": "동기화된 적 없음",
"Show Remaining Time": "남은 시간 표시",
"{{time}} min left in chapter": "{{time}}분 남음",
"Override Book Color": "책 색상 덮어쓰기",
"Login Required": "로그인 필요",
"Quota Exceeded": "한도 초과",
"{{percentage}}% of Daily Translation Characters Used.": "일일 번역 문자 사용량 {{percentage}}%.",
"Translation Characters": "번역 문자",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}}개의 음성",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "문제가 발생했습니다. 걱정하지 마세요, 저희 팀이 이미 알림을 받았으며 해결 작업을 진행 중입니다.",
"Error Details:": "오류 세부사항:",
"Try Again": "다시 시도",
"Need help?": "도움이 필요하신가요?",
"Contact Support": "지원팀에 문의",
"Code Highlighting": "코드 하이라이팅",
"Enable Highlighting": "하이라이팅 활성화",
"Code Language": "코드 언어",
"Top Margin (px)": "위쪽 여백 (px)",
"Bottom Margin (px)": "아래쪽 여백 (px)",
"Right Margin (px)": "오른쪽 여백 (px)",
"Left Margin (px)": "왼쪽 여백 (px)",
"Column Gap (%)": "열 간격 (%)",
"Always Show Status Bar": "상태 표시줄 항상 표시",
"Custom Content CSS": "콘텐츠 CSS",
"Enter CSS for book content styling...": "도서 콘텐츠 스타일을 위한 CSS 입력...",
"Custom Reader UI CSS": "리더 UI CSS",
"Enter CSS for reader interface styling...": "리더 인터페이스 스타일용 CSS 입력...",
"Crop": "자르기",
"Book Covers": "책 표지",
"Fit": "맞춤",
"Reset {{settings}}": "{{settings}} 재설정",
"Reset Settings": "설정 재설정",
"{{count}} pages left in chapter_other": "남은 페이지 {{count}}장",
"Show Remaining Pages": "남은 페이지 보기",
"Source Han Serif CN VF": "Source Han Serif",
"Huiwen-mincho": "Huiwen Mincho",
"KingHwa_OldSong": "KingHwa Song",
"Manage Subscription": "구독 관리",
"Coming Soon": "곧 출시 예정",
"Upgrade to {{plan}}": "{{plan}}로 업그레이드",
"Upgrade to Plus or Pro": "Plus 또는 Pro로 업그레이드",
"Current Plan": "현재 요금제",
"Plan Limits": "요금제 한도",
"Processing your payment...": "결제를 처리 중입니다...",
"Please wait while we confirm your subscription.": "구독을 확인하는 중입니다. 잠시만 기다려주세요.",
"Payment Processing": "결제 처리 중",
"Your payment is being processed. This usually takes a few moments.": "결제가 처리되고 있습니다. 잠시만 기다려주세요.",
"Payment Failed": "결제 실패",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "구독을 처리할 수 없습니다. 다시 시도하거나 문제가 계속되면 지원팀에 문의해주세요.",
"Back to Profile": "프로필로 돌아가기",
"Subscription Successful!": "구독이 완료되었습니다!",
"Thank you for your subscription! Your payment has been processed successfully.": "구독해주셔서 감사합니다! 결제가 성공적으로 처리되었습니다.",
"Email:": "이메일:",
"Plan:": "요금제:",
"Amount:": "금액:",
"Go to Library": "라이브러리로 이동",
"Need help? Contact our support team at support@readest.com": "도움이 필요하시면 support@readest.com으로 문의해주세요.",
"Free Plan": "무료 요금제",
"month": "월",
"AI Translations (per day)": "AI 번역 (일 기준)",
"Plus Plan": "Plus 요금제",
"Includes All Free Plan Benefits": "무료 요금제의 모든 혜택 포함",
"Pro Plan": "Pro 요금제",
"More AI Translations": "더 많은 AI 번역",
"Complete Your Subscription": "구독 완료",
"{{percentage}}% of Cloud Sync Space Used.": "{{percentage}}%의 클라우드 동기화 공간 사용됨.",
"Cloud Sync Storage": "클라우드 저장 공간",
"Disable": "비활성화",
"Enable": "활성화",
"Upgrade to Readest Premium": "Readest Premium으로 업그레이드",
"Show Source Text": "원본 텍스트 표시",
"Cross-Platform Sync": "크로스 플랫폼 동기화",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "라이브러리와 진행 상황을 모든 기기에서 동기화합니다.",
"Customizable Reading": "맞춤형 읽기",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "폰트, 레이아웃, 테마를 자유롭게 조정하세요.",
"AI Read Aloud": "AI 음성 읽기",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "자연스러운 AI 음성으로 책을 들어보세요.",
"AI Translations": "AI 번역",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "Google, Azure, DeepL로 즉시 번역합니다.",
"Connect with fellow readers and get help fast in our friendly community channels.": "커뮤니티에서 도움과 소통을 즐기세요.",
"Unlimited AI Read Aloud Hours": "무제한 AI 음성 읽기",
"Listen without limits—convert as much text as you like into immersive audio.": "제한 없이 텍스트를 음성으로 변환하세요.",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "고급 번역 기능을 더 많이 이용하세요.",
"DeepL Pro Access": "DeepL Pro 이용",
"Enjoy faster responses and dedicated assistance whenever you need help.": "우선 지원을 이용하세요.",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "일일 번역 한도에 도달했습니다. 업그레이드하여 계속 사용하세요.",
"Includes All Plus Plan Benefits": "모든 플러스 플랜 혜택 포함",
"Early Feature Access": "신기능 우선 액세스",
"Be the first to explore new features, updates, and innovations before anyone else.": "새로운 기능, 업데이트, 혁신을 누구보다 먼저 체험하세요.",
"Advanced AI Tools": "고급 AI 도구",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "스마트한 독서, 번역, 콘텐츠 발견을 위한 강력한 AI 도구를 활용하세요.",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "가장 정확한 번역 엔진으로 매일 최대 10만 자를 번역하세요.",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "가장 정확한 번역 엔진으로 매일 최대 50만 자를 번역하세요.",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "최대 5GB의 안전한 클라우드 저장소로 전체 독서 컬렉션을 저장하고 액세스하세요.",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "최대 20GB의 안전한 클라우드 저장소로 전체 독서 컬렉션을 저장하고 액세스하세요.",
"Deleted cloud backup of the book: {{title}}": "책의 클라우드 백업이 삭제됨: {{title}}",
"Are you sure to delete the cloud backup of the selected book?": "선택한 책의 클라우드 백업을 삭제하시겠습니까?",
"What's New in Readest": "Readest의 새로운 기능",
"Enter book title": "도서 제목 입력",
"Subtitle": "부제목",
"Enter book subtitle": "도서 부제목 입력",
"Enter author name": "저자명 입력",
"Series": "시리즈",
"Enter series name": "시리즈명 입력",
"Series Index": "시리즈 번호",
"Enter series index": "시리즈 번호 입력",
"Total in Series": "시리즈 총권수",
"Enter total books in series": "시리즈 총 도서 수 입력",
"Enter publisher": "출판사 입력",
"Publication Date": "출간일",
"Identifier": "식별자",
"Enter book description": "도서 설명 입력",
"Change cover image": "표지 이미지 변경",
"Replace": "교체",
"Unlock cover": "표지 잠금 해제",
"Lock cover": "표지 잠금",
"Auto-Retrieve Metadata": "메타데이터 자동 검색",
"Auto-Retrieve": "자동 검색",
"Unlock all fields": "모든 필드 잠금 해제",
"Unlock All": "모두 잠금 해제",
"Lock all fields": "모든 필드 잠금",
"Lock All": "모두 잠금",
"Reset": "초기화",
"Edit Metadata": "메타데이터 편집",
"Locked": "잠김",
"Select Metadata Source": "메타데이터 소스 선택",
"Keep manual input": "수동 입력 유지",
"Google Books": "구글 북스",
"Open Library": "오픈 라이브러리",
"Fiction, Science, History": "소설, 과학, 역사",
"Open Book in New Window": "새 창에서 책 열기",
"Voices for {{lang}}": "{{lang}}의 음성",
"Yandex Translate": "Yandex 번역",
"YYYY or YYYY-MM-DD": "YYYY 또는 YYYY-MM-DD",
"Restore Purchase": "구매 복원",
"No purchases found to restore.": "복원할 구매가 없습니다.",
"Failed to restore purchases.": "구매 복원에 실패했습니다.",
"Failed to manage subscription.": "구독 관리에 실패했습니다.",
"Failed to load subscription plans.": "구독 플랜 로드에 실패했습니다.",
"year": "년",
"Failed to create checkout session": "체크아웃 세션 생성 실패",
"Storage": "저장소",
"Terms of Service": "서비스 약관",
"Privacy Policy": "개인정보 보호정책",
"Disable Double Click": "더블 클릭 비활성화",
"TTS not supported for this document": "TTS가 이 문서에서 지원되지 않습니다",
"Reset Password": "비밀번호 재설정",
"Show Reading Progress": "읽기 진행 상황 표시",
"Reading Progress Style": "읽기 진행 상황 스타일",
"Page Number": "페이지 번호",
"Percentage": "백분율",
"Deleted local copy of the book: {{title}}": "책의 로컬 사본이 삭제됨: {{title}}",
"Failed to delete cloud backup of the book: {{title}}": "책의 클라우드 백업 삭제에 실패했습니다: {{title}}",
"Failed to delete local copy of the book: {{title}}": "책의 로컬 사본 삭제에 실패했습니다: {{title}}",
"Are you sure to delete the local copy of the selected book?": "선택한 책의 로컬 사본을 삭제하시겠습니까?",
"Remove from Cloud & Device": "클라우드 및 장치에서 제거",
"Remove from Cloud Only": "클라우드에서만 제거",
"Remove from Device Only": "장치에서만 제거",
"Disconnected": "연결 끊김",
"KOReader Sync Settings": "KOReader Sync 설정",
"Sync Strategy": "동기화 전략",
"Ask on conflict": "충돌 시 묻기",
"Always use latest": "항상 최신 버전 사용",
"Send changes only": "변경 사항만 전송",
"Receive changes only": "변경 사항만 수신",
"Checksum Method": "체크섬 방법",
"File Content (recommended)": "파일 내용 (권장)",
"File Name": "파일 이름",
"Device Name": "장치 이름",
"Connect to your KOReader Sync server.": "KOReader Sync 서버에 연결합니다.",
"Server URL": "서버 URL",
"Username": "사용자 이름",
"Your Username": "당신의 사용자 이름",
"Password": "비밀번호",
"Connect": "연결",
"KOReader Sync": "KOReader Sync",
"Sync Conflict": "동기화 충돌",
"Sync reading progress from \"{{deviceName}}\"?": " \"{{deviceName}}\"에서 읽기 진행 상황을 동기화하시겠습니까?",
"another device": "다른 장치",
"Local Progress": "로컬 진행 상황",
"Remote Progress": "원격 진행 상황",
"Page {{page}} of {{total}} ({{percentage}}%)": "페이지 {{page}} / {{total}} ({{percentage}}%)",
"Current position": "현재 위치",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "대략 페이지 {{page}} / {{total}} ({{percentage}}%)",
"Approximately {{percentage}}%": "대략 {{percentage}}%",
"Failed to connect": "연결 실패",
"Sync Server Connected": "동기화 서버에 연결됨",
"Sync as {{userDisplayName}}": "{{userDisplayName}}로 동기화",
"Custom Fonts": "사용자 정의 글꼴",
"Cancel Delete": "삭제 취소",
"Import Font": "글꼴 가져오기",
"Delete Font": "글꼴 삭제",
"Tips": "팁",
"Custom fonts can be selected from the Font Face menu": "사용자 정의 글꼴은 글꼴 메뉴에서 선택할 수 있습니다",
"Manage Custom Fonts": "사용자 정의 글꼴 관리",
"Select Files": "파일 선택",
"Select Image": "이미지 선택",
"Select Video": "동영상 선택",
"Select Audio": "오디오 선택",
"Select Fonts": "글꼴 선택",
"Supported font formats: .ttf, .otf, .woff, .woff2": "지원되는 글꼴 형식: .ttf, .otf, .woff, .woff2",
"Push Progress": "진행 상황 푸시",
"Pull Progress": "진행 상황 끌어오기",
"Previous Paragraph": "이전 단락",
"Previous Sentence": "이전 문장",
"Pause": "일시정지",
"Play": "재생",
"Next Sentence": "다음 문장",
"Next Paragraph": "다음 단락",
"Separate Cover Page": "별도의 표지 페이지",
"Resize Notebook": "노트북 크기 조정",
"Resize Sidebar": "사이드바 크기 조정",
"Get Help from the Readest Community": "Readest 커뮤니티에서 도움 받기",
"Remove cover image": "표지 이미지 제거",
"Bookshelf": "책장",
"View Menu": "메뉴 보기",
"Settings Menu": "설정 메뉴",
"View account details and quota": "계정 세부정보 및 할당량 보기",
"Library Header": "라이브러리 헤더",
"Book Content": "도서 내용",
"Footer Bar": "푸터 바",
"Header Bar": "헤더 바",
"View Options": "보기 옵션",
"Book Menu": "도서 메뉴",
"Search Options": "검색 옵션",
"Close": "닫기",
"Delete Book Options": "도서 삭제 옵션",
"ON": "켜기",
"OFF": "끄기",
"Reading Progress": "읽기 진행 상황",
"Page Margin": "페이지 여백",
"Remove Bookmark": "북마크 제거",
"Add Bookmark": "북마크 추가",
"Books Content": "책 내용",
"Jump to Location": "위치로 이동",
"Unpin Notebook": "노트북 고정 해제",
"Pin Notebook": "노트북 고정",
"Hide Search Bar": "검색 바 숨기기",
"Show Search Bar": "검색 바 표시",
"On {{current}} of {{total}} page": "페이지 {{current}} / {{total}}",
"Section Title": "섹션 제목",
"Decrease": "감소",
"Increase": "증가",
"Settings Panels": "설정 패널",
"Settings": "설정",
"Unpin Sidebar": "사이드바 고정 해제",
"Pin Sidebar": "사이드바 고정",
"Toggle Sidebar": "사이드바 전환",
"Toggle Translation": "번역 전환",
"Translation Disabled": "번역 비활성화",
"Minimize": "최소화",
"Maximize or Restore": "최대화 또는 복원",
"Exit Parallel Read": "병렬 읽기 종료",
"Enter Parallel Read": "병렬 읽기 시작",
"Zoom Level": "확대/축소 수준",
"Zoom Out": "축소",
"Reset Zoom": "줌 재설정",
"Zoom In": "확대",
"Zoom Mode": "줌 모드",
"Single Page": "단일 페이지",
"Auto Spread": "자동 스프레드",
"Fit Page": "페이지에 맞춤",
"Fit Width": "너비에 맞춤",
"Failed to select directory": "디렉토리 선택 실패",
"The new data directory must be different from the current one.": "새 데이터 디렉토리는 현재 디렉토리와 달라야 합니다.",
"Migration failed: {{error}}": "마이그레이션 실패: {{error}}",
"Change Data Location": "데이터 위치 변경",
"Current Data Location": "현재 데이터 위치",
"Total size: {{size}}": "총 크기: {{size}}",
"Calculating file info...": "파일 정보 계산 중...",
"New Data Location": "새 데이터 위치",
"Choose Different Folder": "다른 폴더 선택",
"Choose New Folder": "새 폴더 선택",
"Migrating data...": "데이터 마이그레이션 중...",
"Copying: {{file}}": "복사 중: {{file}}",
"{{current}} of {{total}} files": "{{current}} / {{total}} 파일",
"Migration completed successfully!": "마이그레이션이 성공적으로 완료되었습니다!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "데이터가 새 위치로 이동되었습니다. 프로세스를 완료하려면 애플리케이션을 재시작하십시오.",
"Migration failed": "마이그레이션 실패",
"Important Notice": "중요한 공지",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "이 작업은 모든 앱 데이터를 새 위치로 이동합니다. 대상에 충분한 여유 공간이 있는지 확인하십시오.",
"Restart App": "앱 재시작",
"Start Migration": "마이그레이션 시작",
"Advanced Settings": "고급 설정",
"File count: {{size}}": "파일 수: {{size}}",
"Background Read Aloud": "백그라운드 음성 읽기",
"Ready to read aloud": "읽기 준비 완료",
"Read Aloud": "음성 읽기",
"Screen Brightness": "화면 밝기",
"Background Image": "배경 이미지",
"Import Image": "이미지 가져오기",
"Opacity": "불투명도",
"Size": "크기",
"Cover": "표지",
"Contain": "포함",
"{{number}} pages left in chapter": "남은 페이지 {{number}}장",
"Device": "장치",
"E-Ink Mode": "E-Ink 모드",
"Highlight Colors": "하이라이트 색상",
"Auto Screen Brightness": "자동 화면 밝기",
"Pagination": "페이지 매김",
"Disable Double Tap": "더블 탭 비활성화",
"Tap to Paginate": "탭하여 페이지 매김",
"Click to Paginate": "클릭하여 페이지 매김",
"Tap Both Sides": "양쪽을 탭",
"Click Both Sides": "양쪽을 클릭",
"Swap Tap Sides": "탭 사이드 전환",
"Swap Click Sides": "클릭 사이드 전환",
"Source and Translated": "원본 및 번역",
"Translated Only": "번역만",
"Source Only": "원본만",
"TTS Text": "TTS 텍스트",
"The book file is corrupted": "책 파일이 손상되었습니다",
"The book file is empty": "책 파일이 비어 있습니다",
"Failed to open the book file": "책 파일을 열지 못했습니다",
"On-Demand Purchase": "온디맨드 구매",
"Full Customization": "풀 커스터마이징",
"Lifetime Plan": "평생 플랜",
"One-Time Payment": "일회성 결제",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "모든 장치에서 특정 기능에 대한 평생 액세스를 즐기기 위해 단일 결제를 수행합니다. 필요할 때만 특정 기능이나 서비스를 구매합니다.",
"Expand Cloud Sync Storage": "클라우드 동기화 저장소 확장",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "1회 구매로 클라우드 저장소를 영구적으로 확장합니다. 추가 구매 시 더 많은 공간이 추가됩니다.",
"Unlock All Customization Options": "모든 커스터마이징 옵션 잠금 해제",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "추가 테마, 글꼴, 레이아웃 옵션 및 읽기, 번역기, 클라우드 스토리지 서비스를 잠금 해제합니다.",
"Purchase Successful!": "구매 성공!",
"lifetime": "평생",
"Thank you for your purchase! Your payment has been processed successfully.": "구매해주셔서 감사합니다! 결제가 성공적으로 처리되었습니다.",
"Order ID:": "주문 ID:",
"TTS Highlighting": "TTS 하이라이팅",
"Style": "스타일",
"Underline": "밑줄",
"Strikethrough": "취소선",
"Squiggly": "물결선",
"Outline": "윤곽선",
"Save Current Color": "현재 색상 저장",
"Quick Colors": "빠른 색상",
"Highlighter": "형광펜",
"Save Book Cover": "책 표지 저장",
"Auto-save last book cover": "마지막 책 표지 자동 저장",
"Back": "뒤로",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "확인 이메일이 전송되었습니다! 변경을 확인하려면 이전 이메일 주소와 새 이메일 주소를 확인하세요.",
"Failed to update email": "이메일 업데이트 실패",
"New Email": "새 이메일",
"Your new email": "새 이메일 주소",
"Updating email ...": "이메일 업데이트 중...",
"Update email": "이메일 업데이트",
"Current email": "현재 이메일",
"Update Email": "이메일 업데이트",
"All": "전체",
"Unable to open book": "책을 열 수 없습니다",
"Punctuation": "구두점",
"Replace Quotation Marks": "인용 부호 바꾸기",
"Enabled only in vertical layout.": "세로 레이아웃에서만 활성화됩니다.",
"No Conversion": "변환 없음",
"Simplified to Traditional": "간체 → 번체",
"Traditional to Simplified": "번체 → 간체",
"Simplified to Traditional (Taiwan)": "간체 → 번체 (대만)",
"Simplified to Traditional (Hong Kong)": "간체 → 번체 (홍콩)",
"Simplified to Traditional (Taiwan), with phrases": "간체 → 번체 (대만) • 문구",
"Traditional (Taiwan) to Simplified": "번체 (대만) → 간체",
"Traditional (Hong Kong) to Simplified": "번체 (홍콩) → 간체",
"Traditional (Taiwan) to Simplified, with phrases": "번체 (대만) → 간체 • 문구",
"Convert Simplified and Traditional Chinese": "간체/번체 변환",
"Convert Mode": "변환 모드",
"Failed to auto-save book cover for lock screen: {{error}}": "잠금 화면용 책 표지 자동 저장 실패: {{error}}",
"Download from Cloud": "클라우드에서 다운로드",
"Upload to Cloud": "클라우드에 업로드",
"Clear Custom Fonts": "사용자 정의 글꼴 지우기",
"Columns": "열",
"OPDS Catalogs": "OPDS 카탈로그",
"Adding LAN addresses is not supported in the web app version.": "웹 앱 버전에서는 LAN 주소 추가를 지원하지 않습니다.",
"Invalid OPDS catalog. Please check the URL.": "잘못된 OPDS 카탈로그입니다. URL을 확인해주세요.",
"Browse and download books from online catalogs": "온라인 카탈로그에서 책을 탐색하고 다운로드",
"My Catalogs": "내 카탈로그",
"Add Catalog": "카탈로그 추가",
"No catalogs yet": "아직 카탈로그가 없습니다",
"Add your first OPDS catalog to start browsing books": "책을 탐색하려면 첫 번째 OPDS 카탈로그를 추가하세요.",
"Add Your First Catalog": "첫 번째 카탈로그 추가",
"Browse": "탐색",
"Popular Catalogs": "인기 카탈로그",
"Add": "추가",
"Add OPDS Catalog": "OPDS 카탈로그 추가",
"Catalog Name": "카탈로그 이름",
"My Calibre Library": "내 Calibre 라이브러리",
"OPDS URL": "OPDS URL",
"Username (optional)": "사용자 이름 (선택 사항)",
"Password (optional)": "비밀번호 (선택 사항)",
"Description (optional)": "설명 (선택 사항)",
"A brief description of this catalog": "이 카탈로그의 간단한 설명",
"Validating...": "검증 중...",
"View All": "모두 보기",
"Forward": "다음",
"Home": "홈",
"{{count}} items_other": "{{count}}개 항목",
"Download completed": "다운로드 완료",
"Download failed": "다운로드 실패",
"Open Access": "오픈 액세스",
"Borrow": "대출",
"Buy": "구매",
"Subscribe": "구독",
"Sample": "샘플",
"Download": "다운로드",
"Open & Read": "열기 및 읽기",
"Tags": "태그",
"Tag": "태그",
"First": "처음",
"Previous": "이전",
"Next": "다음",
"Last": "마지막",
"Cannot Load Page": "페이지를 불러올 수 없습니다",
"An error occurred": "오류가 발생했습니다",
"Online Library": "온라인 라이브러리",
"URL must start with http:// or https://": "URL은 http:// 또는 https://로 시작해야 합니다",
"Title, Author, Tag, etc...": "제목, 저자, 태그 등...",
"Query": "쿼리",
"Subject": "주제",
"Enter {{terms}}": "{{terms}} 입력",
"No search results found": "검색 결과가 없습니다",
"Failed to load OPDS feed: {{status}} {{statusText}}": "OPDS 피드를 불러오지 못했습니다: {{status}} {{statusText}}",
"Search in {{title}}": "{{title}}에서 검색",
"Manage Storage": "저장소 관리",
"Failed to load files": "파일 로드 실패",
"Deleted {{count}} file(s)_other": "{{count}}개의 파일이 삭제되었습니다",
"Failed to delete {{count}} file(s)_other": "{{count}}개의 파일 삭제 실패",
"Failed to delete files": "파일 삭제 실패",
"Total Files": "총 파일",
"Total Size": "총 용량",
"Quota": "쿼터",
"Used": "사용됨",
"Files": "파일",
"Search files...": "파일 검색...",
"Newest First": "최신순",
"Oldest First": "오래된순",
"Largest First": "큰 파일순",
"Smallest First": "작은 파일순",
"Name A-Z": "이름 A-Z",
"Name Z-A": "이름 Z-A",
"{{count}} selected_other": "{{count}}개 선택됨",
"Delete Selected": "선택 삭제",
"Created": "생성됨",
"No files found": "파일이 없습니다",
"No files uploaded yet": "아직 업로드된 파일이 없습니다",
"files": "파일",
"Page {{current}} of {{total}}": "페이지 {{current}} / {{total}}",
"Are you sure to delete {{count}} selected file(s)?_other": "선택한 {{count}}개의 파일을 삭제하시겠습니까?",
"Cloud Storage Usage": "클라우드 저장소 사용량",
"Rename Group": "그룹 이름 바꾸기",
"From Directory": "디렉토리에서",
"Successfully imported {{count}} book(s)_other": "성공적으로 {{count}} 권의 책이 가져와졌습니다",
"Count": "개수",
"Start Page": "시작 페이지",
"Search in OPDS Catalog...": "OPDS 카탈로그에서 검색...",
"Please log in to use advanced TTS features.": "고급 TTS 기능을 사용하려면 로그인하세요."
}
@@ -0,0 +1,759 @@
{
"Email address": "Alamat e-mel",
"Your Password": "Kata Laluan Anda",
"Your email address": "Alamat e-mel anda",
"Your password": "Kata laluan anda",
"Sign in": "Log masuk",
"Signing in...": "Sedang log masuk...",
"Sign in with {{provider}}": "Log masuk dengan {{provider}}",
"Already have an account? Sign in": "Sudah ada akaun? Log masuk",
"Create a Password": "Cipta Kata Laluan",
"Sign up": "Daftar",
"Signing up...": "Sedang mendaftar...",
"Don't have an account? Sign up": "Tiada akaun? Daftar",
"Check your email for the confirmation link": "Semak e-mel anda untuk pautan pengesahan",
"Signing in ...": "Sedang log masuk...",
"Send a magic link email": "Hantar e-mel pautan ajaib",
"Check your email for the magic link": "Semak e-mel anda untuk pautan ajaib",
"Send reset password instructions": "Hantar arahan tetapkan semula kata laluan",
"Sending reset instructions ...": "Menghantar arahan tetapkan semula...",
"Forgot your password?": "Lupa kata laluan?",
"Check your email for the password reset link": "Semak e-mel anda untuk pautan tetapkan semula kata laluan",
"Phone number": "Nombor telefon",
"Your phone number": "Nombor telefon anda",
"Token": "Token",
"Your OTP token": "Token OTP anda",
"Verify token": "Sahkan token",
"Go Back": "Kembali",
"Sign in with Google": "Log masuk dengan Google",
"Sign in with Apple": "Log masuk dengan Apple",
"Sign in with GitHub": "Log masuk dengan GitHub",
"New Password": "Kata Laluan Baharu",
"Your new password": "Kata laluan baharu anda",
"Update password": "Kemas kini kata laluan",
"Updating password ...": "Mengemas kini kata laluan...",
"Your password has been updated": "Kata laluan anda telah dikemas kini",
"Back": "Kembali",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "E-mel pengesahan telah dihantar! Sila semak alamat e-mel lama dan baharu anda untuk mengesahkan perubahan.",
"Failed to update email": "Gagal mengemas kini e-mel",
"New Email": "E-mel Baharu",
"Your new email": "E-mel baharu anda",
"Updating email ...": "Mengemas kini e-mel...",
"Update email": "Kemas kini e-mel",
"Current email": "E-mel semasa",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "Sesuatu tidak kena. Jangan risau, pasukan kami telah dimaklumkan dan kami sedang menanganinya.",
"Error Details:": "Butiran Ralat:",
"Try Again": "Cuba Lagi",
"Your Library": "Perpustakaan Anda",
"Need help?": "Perlukan bantuan?",
"Contact Support": "Hubungi Sokongan",
"Show Book Details": "Tunjuk Butiran Buku",
"Bookshelf": "Rak Buku",
"Import Books": "Import Buku",
"Confirm Deletion": "Sahkan Pemadaman",
"Are you sure to delete {{count}} selected book(s)?_other": "Adakah anda pasti untuk memadam {{count}} buku yang dipilih?",
"Deselect Book": "Nyahpilih Buku",
"Select Book": "Pilih Buku",
"Download Book": "Muat Turun Buku",
"Upload Book": "Muat Naik Buku",
"Delete": "Padam",
"Deselect Group": "Nyahpilih Kumpulan",
"Select Group": "Pilih Kumpulan",
"Untitled Group": "Kumpulan Tanpa Tajuk",
"Group Books": "Kumpulan Buku",
"Remove From Group": "Alih Keluar Daripada Kumpulan",
"Create New Group": "Cipta Kumpulan Baharu",
"Save": "Simpan",
"All": "Semua",
"Cancel": "Batal",
"Confirm": "Sahkan",
"From Local File": "Dari Fail Tempatan",
"Search in {{count}} Book(s)..._other": "Cari dalam {{count}} Buku...",
"Search Books...": "Cari Buku...",
"Clear Search": "Kosongkan Carian",
"Select Books": "Pilih Buku",
"Deselect": "Nyahpilih",
"Select All": "Pilih Semua",
"View Menu": "Menu Paparan",
"Settings Menu": "Menu Tetapan",
"Failed to select directory": "Gagal memilih direktori",
"The new data directory must be different from the current one.": "Direktori data baharu mesti berbeza daripada yang semasa.",
"Migration failed: {{error}}": "Migrasi gagal: {{error}}",
"Change Data Location": "Tukar Lokasi Data",
"Current Data Location": "Lokasi Data Semasa",
"Loading...": "Memuatkan...",
"File count: {{size}}": "Bilangan fail: {{size}}",
"Total size: {{size}}": "Jumlah saiz: {{size}}",
"Calculating file info...": "Mengira maklumat fail...",
"New Data Location": "Lokasi Data Baharu",
"Choose New Folder": "Pilih Folder Baharu",
"Choose Different Folder": "Pilih Folder Lain",
"Migrating data...": "Memindahkan data...",
"Copying: {{file}}": "Menyalin: {{file}}",
"{{current}} of {{total}} files": "{{current}} daripada {{total}} fail",
"Migration completed successfully!": "Migrasi berjaya diselesaikan!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "Data anda telah dipindahkan ke lokasi baharu. Sila mulakan semula aplikasi untuk melengkapkan proses.",
"Migration failed": "Migrasi gagal",
"Important Notice": "Notis Penting",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "Ini akan memindahkan semua data aplikasi anda ke lokasi baharu. Pastikan destinasi mempunyai ruang kosong yang mencukupi.",
"Close": "Tutup",
"Restart App": "Mula Semula Aplikasi",
"Start Migration": "Mula Migrasi",
"Open": "Buka",
"Group": "Kumpulan",
"Details": "Butiran",
"Dark Mode": "Mod Gelap",
"Light Mode": "Mod Cerah",
"Auto Mode": "Mod Auto",
"Logged in as {{userDisplayName}}": "Log masuk sebagai {{userDisplayName}}",
"Logged in": "Log masuk",
"View account details and quota": "Lihat butiran akaun dan kuota",
"Account": "Akaun",
"Sign In": "Log Masuk",
"Auto Upload Books to Cloud": "Auto Muat Naik Buku ke Awan",
"Auto Import on File Open": "Auto Import Apabila Buka Fail",
"Open Last Book on Start": "Buka Buku Terakhir Semasa Mula",
"Check Updates on Start": "Semak Kemas Kini Semasa Mula",
"Open Book in New Window": "Buka Buku dalam Tetingkap Baharu",
"Fullscreen": "Skrin Penuh",
"Always on Top": "Sentiasa di Atas",
"Always Show Status Bar": "Sentiasa Tunjuk Bar Status",
"Keep Screen Awake": "Kekalkan Skrin Berjaga",
"Background Read Aloud": "Baca Dengan Kuat di Latar Belakang",
"Reload Page": "Muat Semula Halaman",
"Settings": "Tetapan",
"Advanced Settings": "Tetapan Lanjutan",
"Save Book Cover": "Simpan Kulit Buku",
"Auto-save last book cover": "Auto-simpan kulit buku terakhir",
"Upgrade to Readest Premium": "Naik Taraf ke Readest Premium",
"Download Readest": "Muat Turun Readest",
"About Readest": "Tentang Readest",
"Help improve Readest": "Bantu tingkatkan Readest",
"Sharing anonymized statistics": "Berkongsi statistik tanpa nama",
"List": "Senarai",
"Grid": "Grid",
"Crop": "Pangkas",
"Fit": "Muat",
"Title": "Tajuk",
"Author": "Pengarang",
"Format": "Format",
"Date Read": "Tarikh Dibaca",
"Date Added": "Tarikh Ditambah",
"Ascending": "Menaik",
"Descending": "Menurun",
"Book Covers": "Kulit Buku",
"Sort by...": "Susun mengikut...",
"No supported files found. Supported formats: {{formats}}": "Tiada fail yang disokong dijumpai. Format yang disokong: {{formats}}",
"No chapters detected": "Tiada bab dikesan",
"Failed to parse the EPUB file": "Gagal menghurai fail EPUB",
"This book format is not supported": "Format buku ini tidak disokong",
"Failed to open the book file": "Gagal membuka fail buku",
"The book file is empty": "Fail buku kosong",
"The book file is corrupted": "Fail buku rosak",
"Failed to import book(s): {{filenames}}": "Gagal mengimport buku: {{filenames}}",
"Book uploaded: {{title}}": "Buku dimuat naik: {{title}}",
"Insufficient storage quota": "Kuota storan tidak mencukupi",
"Failed to upload book: {{title}}": "Gagal memuat naik buku: {{title}}",
"Book downloaded: {{title}}": "Buku dimuat turun: {{title}}",
"Failed to download book: {{title}}": "Gagal memuat turun buku: {{title}}",
"Book deleted: {{title}}": "Buku dipadam: {{title}}",
"Deleted cloud backup of the book: {{title}}": "Sandaran awan buku dipadam: {{title}}",
"Deleted local copy of the book: {{title}}": "Salinan tempatan buku dipadam: {{title}}",
"Failed to delete book: {{title}}": "Gagal memadam buku: {{title}}",
"Failed to delete cloud backup of the book: {{title}}": "Gagal memadam sandaran awan buku: {{title}}",
"Failed to delete local copy of the book: {{title}}": "Gagal memadam salinan tempatan buku: {{title}}",
"Library Header": "Pengepala Perpustakaan",
"Welcome to your library. You can import your books here and read them anytime.": "Selamat datang ke perpustakaan anda. Anda boleh import buku anda di sini dan membacanya bila-bila masa.",
"Copied to notebook": "Disalin ke buku nota",
"No annotations to export": "Tiada anotasi untuk dieksport",
"Exported from Readest": "Dieksport dari Readest",
"Highlights & Annotations": "Penonjolan & Anotasi",
"Untitled": "Tanpa Tajuk",
"Note": "Nota",
"Copied to clipboard": "Disalin ke papan klip",
"Copy": "Salin",
"Delete Highlight": "Padam Penonjolan",
"Highlight": "Tonjolkan",
"Annotate": "Anotasi",
"Search": "Cari",
"Dictionary": "Kamus",
"Wikipedia": "Wikipedia",
"Translate": "Terjemah",
"Speak": "Tutur",
"Login Required": "Log Masuk Diperlukan",
"Quota Exceeded": "Kuota Terlebih",
"Unable to fetch the translation. Please log in first and try again.": "Tidak dapat mendapatkan terjemahan. Sila log masuk dahulu dan cuba lagi.",
"Unable to fetch the translation. Try again later.": "Tidak dapat mendapatkan terjemahan. Cuba lagi kemudian.",
"Original Text": "Teks Asal",
"Auto Detect": "Kesan Auto",
"(detected)": "(dikesan)",
"Translated Text": "Teks Terjemahan",
"System Language": "Bahasa Sistem",
"No translation available.": "Tiada terjemahan tersedia.",
"Translated by {{provider}}.": "Diterjemah oleh {{provider}}.",
"Remove Bookmark": "Alih Keluar Tandabuku",
"Add Bookmark": "Tambah Tandabuku",
"Books Content": "Kandungan Buku",
"Book Content": "Kandungan Buku",
"Screen Brightness": "Kecerahan Skrin",
"Color": "Warna",
"Previous Section": "Seksyen Sebelumnya",
"Next Section": "Seksyen Seterusnya",
"Previous Page": "Halaman Sebelumnya",
"Next Page": "Halaman Seterusnya",
"Go Forward": "Ke Hadapan",
"Reading Progress": "Kemajuan Membaca",
"Jump to Location": "Lompat ke Lokasi",
"Font Size": "Saiz Fon",
"Page Margin": "Margin Halaman",
"Small": "Kecil",
"Large": "Besar",
"Line Spacing": "Jarak Baris",
"Footer Bar": "Bar Pengaki",
"Table of Contents": "Kandungan",
"Font & Layout": "Fon & Susun Atur",
"Header Bar": "Bar Pengepala",
"View Options": "Pilihan Paparan",
"Sync Conflict": "Konflik Segerak",
"Sync reading progress from \"{{deviceName}}\"?": "Segerakkan kemajuan membaca dari \"{{deviceName}}\"?",
"another device": "peranti lain",
"Local Progress": "Kemajuan Tempatan",
"Remote Progress": "Kemajuan Jauh",
"Failed to connect": "Gagal menyambung",
"Disconnected": "Terputus",
"KOReader Sync Settings": "Tetapan Segerak KOReader",
"Sync as {{userDisplayName}}": "Segerak sebagai {{userDisplayName}}",
"Sync Server Connected": "Pelayan Segerak Disambung",
"Sync Strategy": "Strategi Segerak",
"Ask on conflict": "Tanya jika konflik",
"Always use latest": "Sentiasa guna terkini",
"Send changes only": "Hantar perubahan sahaja",
"Receive changes only": "Terima perubahan sahaja",
"Checksum Method": "Kaedah Semak Jumlah",
"File Content (recommended)": "Kandungan Fail (disyorkan)",
"File Name": "Nama Fail",
"Device Name": "Nama Peranti",
"Connect to your KOReader Sync server.": "Sambung ke pelayan Segerak KOReader anda.",
"Server URL": "URL Pelayan",
"Username": "Nama Pengguna",
"Your Username": "Nama pengguna anda",
"Password": "Kata Laluan",
"Connect": "Sambung",
"Notebook": "Buku Nota",
"Unpin Notebook": "Nyahpin Buku Nota",
"Pin Notebook": "Pin Buku Nota",
"Hide Search Bar": "Sembunyikan Bar Carian",
"Show Search Bar": "Tunjuk Bar Carian",
"Resize Notebook": "Ubah Saiz Buku Nota",
"No notes match your search": "Tiada nota sepadan dengan carian anda",
"Excerpts": "Petikan",
"Notes": "Nota",
"Add your notes here...": "Tambah nota anda di sini...",
"Search notes and excerpts...": "Cari nota dan petikan...",
"{{time}} min left in chapter": "{{time}} min lagi dalam bab",
"{{number}} pages left in chapter": "{{number}} halaman lagi dalam bab",
"{{count}} pages left in chapter_other": "{{count}} halaman lagi dalam bab",
"On {{current}} of {{total}} page": "Di halaman {{current}} daripada {{total}}",
"Unable to open book": "Tidak dapat membuka buku",
"Section Title": "Tajuk Seksyen",
"More Info": "Maklumat Lanjut",
"Parallel Read": "Baca Selari",
"Disable": "Lumpuhkan",
"Enable": "Aktifkan",
"Exit Parallel Read": "Keluar Baca Selari",
"Enter Parallel Read": "Masuk Baca Selari",
"KOReader Sync": "Segerak KOReader",
"Push Progress": "Hantar Kemajuan",
"Pull Progress": "Tarik Kemajuan",
"Export Annotations": "Eksport Anotasi",
"Sort TOC by Page": "Susun Kandungan mengikut Halaman",
"Edit": "Edit",
"Go to Library": "Pergi ke Perpustakaan",
"Book Menu": "Menu Buku",
"Unpin Sidebar": "Nyahpin Bar Sisi",
"Pin Sidebar": "Pin Bar Sisi",
"Search...": "Cari...",
"Search Options": "Pilihan Carian",
"Book": "Buku",
"Chapter": "Bab",
"Match Case": "Padankan Kes",
"Match Whole Words": "Padankan Seluruh Perkataan",
"Match Diacritics": "Padankan Diakritik",
"Sidebar": "Bar Sisi",
"Resize Sidebar": "Ubah Saiz Bar Sisi",
"TOC": "Kandungan",
"Bookmark": "Tandabuku",
"Toggle Sidebar": "Togol Bar Sisi",
"Toggle Translation": "Togol Terjemahan",
"Disable Translation": "Lumpuhkan Terjemahan",
"Enable Translation": "Aktifkan Terjemahan",
"Translation Disabled": "Terjemahan Dilumpuhkan",
"Previous Paragraph": "Perenggan Sebelumnya",
"Previous Sentence": "Ayat Sebelumnya",
"Pause": "Jeda",
"Play": "Main",
"Next Sentence": "Ayat Seterusnya",
"Next Paragraph": "Perenggan Seterusnya",
"Read Aloud": "Baca Dengan Kuat",
"Ready to read aloud": "Bersedia untuk baca dengan kuat",
"TTS not supported for PDF": "TTS tidak disokong untuk PDF",
"TTS not supported for this document": "TTS tidak disokong untuk dokumen ini",
"No Timeout": "Tiada Had Masa",
"{{value}} minute": "{{value}} minit",
"{{value}} minutes": "{{value}} minit",
"{{value}} hour": "{{value}} jam",
"{{value}} hours": "{{value}} jam",
"Voices for {{lang}}": "Suara untuk {{lang}}",
"Slow": "Perlahan",
"Fast": "Pantas",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}} suara",
"Zoom Level": "Tahap Zum",
"Zoom Out": "Zum Keluar",
"Reset Zoom": "Tetapkan Semula Zum",
"Zoom In": "Zum Masuk",
"Zoom Mode": "Mod Zum",
"Single Page": "Halaman Tunggal",
"Auto Spread": "Hamparan Auto",
"Fit Page": "Muat Halaman",
"Fit Width": "Muat Lebar",
"Separate Cover Page": "Halaman Kulit Berasingan",
"Scrolled Mode": "Mod Tatal",
"Sign in to Sync": "Log masuk untuk Segerak",
"Synced at {{time}}": "Disegerak pada {{time}}",
"Never synced": "Tidak pernah disegerak",
"Invert Image In Dark Mode": "Songsangkan Imej Dalam Mod Gelap",
"Failed to auto-save book cover for lock screen: {{error}}": "Gagal auto-simpan kulit buku untuk skrin kunci: {{error}}",
"Reading Progress Synced": "Kemajuan Membaca Disegerak",
"Page {{page}} of {{total}} ({{percentage}}%)": "Halaman {{page}} daripada {{total}} ({{percentage}}%)",
"Current position": "Kedudukan semasa",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "Lebih kurang halaman {{page}} daripada {{total}} ({{percentage}}%)",
"Approximately {{percentage}}%": "Lebih kurang {{percentage}}%",
"Delete Your Account?": "Padam Akaun Anda?",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "Tindakan ini tidak boleh dibatalkan. Semua data anda di awan akan dipadam secara kekal.",
"Delete Permanently": "Padam Kekal",
"Restore Purchase": "Pulihkan Pembelian",
"Manage Subscription": "Urus Langganan",
"Reset Password": "Tetapkan Semula Kata Laluan",
"Update Email": "Kemas Kini E-mel",
"Sign Out": "Log Keluar",
"Delete Account": "Padam Akaun",
"Upgrade to {{plan}}": "Naik Taraf ke {{plan}}",
"Complete Your Subscription": "Lengkapkan Langganan Anda",
"Coming Soon": "Akan Datang",
"Upgrade to Plus or Pro": "Naik Taraf ke Plus atau Pro",
"Current Plan": "Pelan Semasa",
"On-Demand Purchase": "Pembelian Atas Permintaan",
"Plan Limits": "Had Pelan",
"Full Customization": "Penyesuaian Penuh",
"Failed to create checkout session": "Gagal mencipta sesi pembayaran",
"No purchases found to restore.": "Tiada pembelian dijumpai untuk dipulihkan.",
"Failed to restore purchases.": "Gagal memulihkan pembelian.",
"Failed to manage subscription.": "Gagal mengurus langganan.",
"Failed to delete user. Please try again later.": "Gagal memadam pengguna. Sila cuba lagi kemudian.",
"Loading profile...": "Memuatkan profil...",
"Processing your payment...": "Memproses pembayaran anda...",
"Please wait while we confirm your subscription.": "Sila tunggu sementara kami mengesahkan langganan anda.",
"Payment Processing": "Pemprosesan Pembayaran",
"Your payment is being processed. This usually takes a few moments.": "Pembayaran anda sedang diproses. Ini biasanya mengambil masa sebentar.",
"Payment Failed": "Pembayaran Gagal",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "Kami tidak dapat memproses langganan anda. Sila cuba lagi atau hubungi sokongan jika masalah berterusan.",
"Back to Profile": "Kembali ke Profil",
"Purchase Successful!": "Pembelian Berjaya!",
"Subscription Successful!": "Langganan Berjaya!",
"Thank you for your purchase! Your payment has been processed successfully.": "Terima kasih atas pembelian anda! Pembayaran anda telah diproses dengan jayanya.",
"Thank you for your subscription! Your payment has been processed successfully.": "Terima kasih atas langganan anda! Pembayaran anda telah diproses dengan jayanya.",
"Email:": "E-mel:",
"Plan:": "Pelan:",
"Amount:": "Jumlah:",
"Order ID:": "ID Pesanan:",
"Need help? Contact our support team at support@readest.com": "Perlukan bantuan? Hubungi pasukan sokongan kami di support@readest.com",
"Lifetime Plan": "Pelan Seumur Hidup",
"lifetime": "seumur hidup",
"One-Time Payment": "Bayaran Sekali",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "Buat bayaran sekali untuk menikmati akses seumur hidup kepada ciri tertentu pada semua peranti. Beli ciri atau perkhidmatan tertentu hanya apabila anda memerlukannya.",
"Expand Cloud Sync Storage": "Kembangkan Storan Segerak Awan",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "Kembangkan storan awan anda selamanya dengan pembelian sekali. Setiap pembelian tambahan menambah lebih banyak ruang.",
"Unlock All Customization Options": "Buka Kunci Semua Pilihan Penyesuaian",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "Buka kunci tema tambahan, fon, pilihan susun atur dan baca dengan kuat, penterjemah, perkhidmatan storan awan.",
"Free Plan": "Pelan Percuma",
"month": "bulan",
"year": "tahun",
"Cross-Platform Sync": "Segerak Merentas Platform",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "Segerakkan perpustakaan, kemajuan, penonjolan dan nota anda dengan lancar merentas semua peranti anda—tidak akan kehilangan tempat anda lagi.",
"Customizable Reading": "Pembacaan Boleh Disesuaikan",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "Personalisasikan setiap butiran dengan fon boleh laras, susun atur, tema dan tetapan paparan lanjutan untuk pengalaman membaca yang sempurna.",
"AI Read Aloud": "Baca Dengan Kuat AI",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "Nikmati pembacaan tanpa tangan dengan suara AI yang berbunyi semula jadi yang menghidupkan buku anda.",
"AI Translations": "Terjemahan AI",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "Terjemahkan sebarang teks dengan segera dengan kuasa Google, Azure atau DeepL—fahami kandungan dalam mana-mana bahasa.",
"Community Support": "Sokongan Komuniti",
"Connect with fellow readers and get help fast in our friendly community channels.": "Berhubung dengan pembaca lain dan dapatkan bantuan pantas dalam saluran komuniti mesra kami.",
"Cloud Sync Storage": "Storan Segerak Awan",
"AI Translations (per day)": "Terjemahan AI (setiap hari)",
"Plus Plan": "Pelan Plus",
"Includes All Free Plan Benefits": "Termasuk Semua Faedah Pelan Percuma",
"Unlimited AI Read Aloud Hours": "Waktu Baca Dengan Kuat AI Tanpa Had",
"Listen without limits—convert as much text as you like into immersive audio.": "Dengar tanpa had—tukar sebanyak mana teks yang anda suka menjadi audio yang mengasyikkan.",
"More AI Translations": "Lebih Banyak Terjemahan AI",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "Buka kunci keupayaan terjemahan yang dipertingkatkan dengan lebih banyak penggunaan harian dan pilihan lanjutan.",
"DeepL Pro Access": "Akses DeepL Pro",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "Terjemahkan sehingga 100,000 aksara setiap hari dengan enjin terjemahan paling tepat yang tersedia.",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "Simpan dan akses koleksi bacaan anda dengan selamat dengan sehingga 5 GB storan awan.",
"Priority Support": "Sokongan Keutamaan",
"Enjoy faster responses and dedicated assistance whenever you need help.": "Nikmati respons yang lebih pantas dan bantuan khusus apabila anda memerlukan bantuan.",
"Pro Plan": "Pelan Pro",
"Includes All Plus Plan Benefits": "Termasuk Semua Faedah Pelan Plus",
"Early Feature Access": "Akses Ciri Awal",
"Be the first to explore new features, updates, and innovations before anyone else.": "Jadilah yang pertama meneroka ciri baharu, kemas kini dan inovasi sebelum orang lain.",
"Advanced AI Tools": "Alat AI Lanjutan",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "Manfaatkan alat AI yang berkuasa untuk pembacaan, terjemahan dan penemuan kandungan yang lebih bijak.",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "Terjemahkan sehingga 500,000 aksara setiap hari dengan enjin terjemahan paling tepat yang tersedia.",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "Simpan dan akses koleksi bacaan anda dengan selamat dengan sehingga 20 GB storan awan.",
"Version {{version}}": "Versi {{version}}",
"Check Update": "Semak Kemas Kini",
"Already the latest version": "Sudah versi terkini",
"Checking for updates...": "Memeriksa kemas kini...",
"Error checking for updates": "Ralat memeriksa kemas kini",
"Drop to Import Books": "Lepas untuk Import Buku",
"Terms of Service": "Terma Perkhidmatan",
"Privacy Policy": "Dasar Privasi",
"ON": "HIDUP",
"OFF": "MATI",
"Enter book title": "Masukkan tajuk buku",
"Subtitle": "Subtajuk",
"Enter book subtitle": "Masukkan subtajuk buku",
"Enter author name": "Masukkan nama pengarang",
"Series": "Siri",
"Enter series name": "Masukkan nama siri",
"Series Index": "Indeks Siri",
"Enter series index": "Masukkan indeks siri",
"Total in Series": "Jumlah dalam Siri",
"Enter total books in series": "Masukkan jumlah buku dalam siri",
"Publisher": "Penerbit",
"Enter publisher": "Masukkan penerbit",
"Publication Date": "Tarikh Penerbitan",
"YYYY or YYYY-MM-DD": "TTTT atau TTTT-BB-HH",
"Language": "Bahasa",
"Identifier": "Pengenal Pasti",
"Subjects": "Subjek",
"Fiction, Science, History": "Fiksyen, Sains, Sejarah",
"Description": "Penerangan",
"Enter book description": "Masukkan penerangan buku",
"Change cover image": "Tukar imej kulit",
"Replace": "Ganti",
"Remove cover image": "Alih keluar imej kulit",
"Unlock cover": "Buka kunci kulit",
"Lock cover": "Kunci kulit",
"Auto-Retrieve Metadata": "Auto-Dapatkan Metadata",
"Auto": "Auto",
"Auto-Retrieve": "Auto-Dapatkan",
"Unlock all fields": "Buka kunci semua medan",
"Unlock All": "Buka Kunci Semua",
"Lock all fields": "Kunci semua medan",
"Lock All": "Kunci Semua",
"Reset": "Tetapkan Semula",
"Are you sure to delete the selected book?": "Adakah anda pasti untuk memadam buku yang dipilih?",
"Are you sure to delete the cloud backup of the selected book?": "Adakah anda pasti untuk memadam sandaran awan buku yang dipilih?",
"Are you sure to delete the local copy of the selected book?": "Adakah anda pasti untuk memadam salinan tempatan buku yang dipilih?",
"Edit Metadata": "Edit Metadata",
"Book Details": "Butiran Buku",
"Unknown": "Tidak Diketahui",
"Delete Book Options": "Pilihan Padam Buku",
"Remove from Cloud & Device": "Alih Keluar dari Awan & Peranti",
"Remove from Cloud Only": "Alih Keluar dari Awan Sahaja",
"Remove from Device Only": "Alih Keluar dari Peranti Sahaja",
"Download from Cloud": "Muat Turun dari Awan",
"Upload to Cloud": "Muat Naik ke Awan",
"Published": "Diterbitkan",
"Updated": "Dikemas kini",
"Added": "Ditambah",
"File Size": "Saiz Fail",
"No description available": "Tiada penerangan tersedia",
"Locked": "Dikunci",
"Select Metadata Source": "Pilih Sumber Metadata",
"Keep manual input": "Kekalkan input manual",
"Background Image": "Imej Latar Belakang",
"Import Image": "Import Imej",
"Opacity": "Kelegapan",
"Size": "Saiz",
"Cover": "Kulit",
"Contain": "Kandungan",
"Code Highlighting": "Penonjolan Kod",
"Enable Highlighting": "Aktifkan Penonjolan",
"Code Language": "Bahasa Kod",
"Highlight Colors": "Warna Penonjolan",
"Theme Color": "Warna Tema",
"Custom": "Tersuai",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "Seluruh dunia adalah pentas,\nDan semua lelaki dan wanita hanyalah pelakon;\nMereka ada pintu keluar dan pintu masuk mereka,\nDan seseorang dalam masanya memainkan banyak peranan,\nTindakannya adalah tujuh zaman.\n\n— William Shakespeare",
"(from 'As You Like It', Act II)": "(daripada 'As You Like It', Babak II)",
"Custom Theme": "Tema Tersuai",
"Theme Name": "Nama Tema",
"Text Color": "Warna Teks",
"Background Color": "Warna Latar Belakang",
"Link Color": "Warna Pautan",
"Preview": "Pratonton",
"Theme Mode": "Mod Tema",
"TTS Highlighting": "Penonjolan TTS",
"Style": "Gaya",
"Highlighter": "Penanda",
"Underline": "Garis Bawah",
"Strikethrough": "Garis Lorek",
"Squiggly": "Berkelok-kelok",
"Outline": "Garis Besar",
"Save Current Color": "Simpan Warna Semasa",
"Quick Colors": "Warna Pantas",
"Override Book Color": "Ganti Warna Buku",
"Scroll": "Tatal",
"Continuous Scroll": "Tatal Berterusan",
"Overlap Pixels": "Piksel Bertindih",
"Pagination": "Penomboran Halaman",
"Tap to Paginate": "Ketik untuk Nomborkan Halaman",
"Click to Paginate": "Klik untuk Nomborkan Halaman",
"Tap Both Sides": "Ketik Kedua-dua Sisi",
"Click Both Sides": "Klik Kedua-dua Sisi",
"Swap Tap Sides": "Tukar Sisi Ketukan",
"Swap Click Sides": "Tukar Sisi Klik",
"Disable Double Tap": "Lumpuhkan Ketuk Dua Kali",
"Disable Double Click": "Lumpuhkan Klik Dua Kali",
"Volume Keys for Page Flip": "Kekunci Volum untuk Balik Halaman",
"Animation": "Animasi",
"Paging Animation": "Animasi Halaman",
"Device": "Peranti",
"E-Ink Mode": "Mod E-Ink",
"Auto Screen Brightness": "Kecerahan Skrin Auto",
"Security": "Keselamatan",
"Allow JavaScript": "Benarkan JavaScript",
"Enable only if you trust the file.": "Aktifkan hanya jika anda mempercayai fail.",
"Font": "Fon",
"Custom Fonts": "Fon Tersuai",
"Cancel Delete": "Batal Pemadaman",
"Delete Font": "Padam Fon",
"Import Font": "Import Fon",
"Tips": "Petua",
"Supported font formats: .ttf, .otf, .woff, .woff2": "Format fon yang disokong: .ttf, .otf, .woff, .woff2",
"Custom fonts can be selected from the Font Face menu": "Fon tersuai boleh dipilih dari menu Muka Fon",
"Global Settings": "Tetapan Global",
"Apply to All Books": "Gunakan pada Semua Buku",
"Apply to This Book": "Gunakan pada Buku Ini",
"Reset Settings": "Tetapkan Semula Tetapan",
"Clear Custom Fonts": "Kosongkan Fon Tersuai",
"Manage Custom Fonts": "Urus Fon Tersuai",
"System Fonts": "Fon Sistem",
"Serif Font": "Fon Serif",
"Sans-Serif Font": "Fon Sans-Serif",
"Override Book Font": "Ganti Fon Buku",
"Default Font Size": "Saiz Fon Lalai",
"Minimum Font Size": "Saiz Fon Minimum",
"Font Weight": "Berat Fon",
"Font Family": "Keluarga Fon",
"Default Font": "Fon Lalai",
"CJK Font": "Fon CJK",
"Font Face": "Muka Fon",
"Monospace Font": "Fon Monospace",
"Source and Translated": "Sumber dan Terjemahan",
"Translated Only": "Terjemahan Sahaja",
"Source Only": "Sumber Sahaja",
"No Conversion": "Tiada Penukaran",
"Simplified to Traditional": "Ringkas ke Tradisional",
"Traditional to Simplified": "Tradisional ke Ringkas",
"Simplified to Traditional (Taiwan)": "Ringkas ke Tradisional (Taiwan)",
"Simplified to Traditional (Hong Kong)": "Ringkas ke Tradisional (Hong Kong)",
"Simplified to Traditional (Taiwan), with phrases": "Ringkas ke Tradisional (Taiwan), dengan frasa",
"Traditional (Taiwan) to Simplified": "Tradisional (Taiwan) ke Ringkas",
"Traditional (Hong Kong) to Simplified": "Tradisional (Hong Kong) ke Ringkas",
"Traditional (Taiwan) to Simplified, with phrases": "Tradisional (Taiwan) ke Ringkas, dengan frasa",
"Interface Language": "Bahasa Antara Muka",
"Translation": "Terjemahan",
"Show Source Text": "Tunjuk Teks Sumber",
"TTS Text": "Teks TTS",
"Translation Service": "Perkhidmatan Terjemahan",
"Translate To": "Terjemah Ke",
"Punctuation": "Tanda Baca",
"Replace Quotation Marks": "Ganti Tanda Petikan",
"Enabled only in vertical layout.": "Diaktifkan hanya dalam susun atur menegak.",
"Convert Simplified and Traditional Chinese": "Tukar Cina Ringkas dan Tradisional",
"Convert Mode": "Mod Tukar",
"Override Book Layout": "Ganti Susun Atur Buku",
"Writing Mode": "Mod Penulisan",
"Default": "Lalai",
"Horizontal Direction": "Arah Mendatar",
"Vertical Direction": "Arah Menegak",
"RTL Direction": "Arah RTL",
"Border Frame": "Bingkai Sempadan",
"Double Border": "Sempadan Berganda",
"Border Color": "Warna Sempadan",
"Paragraph": "Perenggan",
"Paragraph Margin": "Margin Perenggan",
"Word Spacing": "Jarak Perkataan",
"Letter Spacing": "Jarak Huruf",
"Text Indent": "Inden Teks",
"Full Justification": "Justifikasi Penuh",
"Hyphenation": "Pemenggalan",
"Page": "Halaman",
"Top Margin (px)": "Margin Atas (px)",
"Bottom Margin (px)": "Margin Bawah (px)",
"Left Margin (px)": "Margin Kiri (px)",
"Right Margin (px)": "Margin Kanan (px)",
"Column Gap (%)": "Jurang Lajur (%)",
"Maximum Number of Columns": "Bilangan Maksimum Lajur",
"Maximum Column Height": "Tinggi Maksimum Lajur",
"Maximum Column Width": "Lebar Maksimum Lajur",
"Apply also in Scrolled Mode": "Gunakan juga dalam Mod Tatal",
"Header & Footer": "Pengepala & Pengaki",
"Show Header": "Tunjuk Pengepala",
"Show Footer": "Tunjuk Pengaki",
"Show Remaining Time": "Tunjuk Masa Berbaki",
"Show Remaining Pages": "Tunjuk Halaman Berbaki",
"Show Reading Progress": "Tunjuk Kemajuan Membaca",
"Reading Progress Style": "Gaya Kemajuan Membaca",
"Page Number": "Nombor Halaman",
"Percentage": "Peratusan",
"Screen": "Skrin",
"Orientation": "Orientasi",
"Portrait": "Potret",
"Landscape": "Landskap",
"Apply": "Gunakan",
"Custom Content CSS": "CSS Kandungan Tersuai",
"Enter CSS for book content styling...": "Masukkan CSS untuk penggayaan kandungan buku...",
"Custom Reader UI CSS": "CSS UI Pembaca Tersuai",
"Enter CSS for reader interface styling...": "Masukkan CSS untuk penggayaan antara muka pembaca...",
"Decrease": "Kurangkan",
"Increase": "Tambahkan",
"Layout": "Susun Atur",
"Behavior": "Tingkah Laku",
"Settings Panels": "Panel Tetapan",
"Reset {{settings}}": "Tetapkan Semula {{settings}}",
"Get Help from the Readest Community": "Dapatkan Bantuan dari Komuniti Readest",
"A new version of Readest is available!": "Versi baharu Readest tersedia!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Readest {{newVersion}} tersedia (versi terpasang {{currentVersion}}).",
"Download and install now?": "Muat turun dan pasang sekarang?",
"Downloading {{downloaded}} of {{contentLength}}": "Memuat turun {{downloaded}} daripada {{contentLength}}",
"Download finished": "Muat turun selesai",
"DOWNLOAD & INSTALL": "MUAT TURUN & PASANG",
"Changelog": "Log Perubahan",
"Software Update": "Kemas Kini Perisian",
"What's New in Readest": "Apa Yang Baharu dalam Readest",
"Minimize": "Minima",
"Maximize or Restore": "Maksima atau Pulihkan",
"Failed to load subscription plans.": "Gagal memuatkan pelan langganan.",
"Select Files": "Pilih Fail",
"Select Image": "Pilih Imej",
"Select Video": "Pilih Video",
"Select Audio": "Pilih Audio",
"Select Fonts": "Pilih Fon",
"Storage": "Storan",
"{{percentage}}% of Cloud Sync Space Used.": "{{percentage}}% Ruang Segerak Awan Digunakan.",
"Translation Characters": "Aksara Terjemahan",
"{{percentage}}% of Daily Translation Characters Used.": "{{percentage}}% Aksara Terjemahan Harian Digunakan.",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "Kuota terjemahan harian dicapai. Naik taraf pelan anda untuk terus menggunakan terjemahan AI.",
"LXGW WenKai GB Screen": "LXGW WenKai GB Screen",
"LXGW WenKai TC": "LXGW WenKai TC",
"GuanKiapTsingKhai-T": "GuanKiapTsingKhai-T",
"Source Han Serif CN VF": "Source Han Serif CN VF",
"Huiwen-mincho": "Huiwen-mincho",
"KingHwa_OldSong": "KingHwa_OldSong",
"Google Books": "Google Books",
"Open Library": "Open Library",
"Azure Translator": "Azure Translator",
"DeepL": "DeepL",
"Google Translate": "Google Translate",
"Yandex Translate": "Yandex Translate",
"Gray": "Kelabu",
"Sepia": "Sepia",
"Grass": "Rumput",
"Cherry": "Ceri",
"Sky": "Langit",
"Solarized": "Solarized",
"Gruvbox": "Gruvbox",
"Nord": "Nord",
"Contrast": "Kontras",
"Sunset": "Matahari Terbenam",
"Reveal in Finder": "Tunjukkan dalam Finder",
"Reveal in File Explorer": "Tunjukkan dalam File Explorer",
"Reveal in Folder": "Tunjukkan dalam Folder",
"Columns": "Lajur",
"OPDS Catalogs": "Katalog OPDS",
"Adding LAN addresses is not supported in the web app version.": "Menambah alamat LAN tidak disokong dalam versi web.",
"Invalid OPDS catalog. Please check the URL.": "Katalog OPDS tidak sah. Sila semak URL.",
"Browse and download books from online catalogs": "Terokai dan muat turun buku dari katalog dalam talian",
"My Catalogs": "Katalog Saya",
"Add Catalog": "Tambah Katalog",
"No catalogs yet": "Tiada katalog lagi",
"Add your first OPDS catalog to start browsing books": "Tambah katalog OPDS pertama anda untuk mula meneroka buku",
"Add Your First Catalog": "Tambah Katalog Pertama Anda",
"Browse": "Terokai",
"Popular Catalogs": "Katalog Popular",
"Add": "Tambah",
"Add OPDS Catalog": "Tambah Katalog OPDS",
"Catalog Name": "Nama Katalog",
"My Calibre Library": "Perpustakaan Calibre Saya",
"OPDS URL": "URL OPDS",
"Username (optional)": "Nama Pengguna (pilihan)",
"Password (optional)": "Kata Laluan (pilihan)",
"Description (optional)": "Penerangan (pilihan)",
"A brief description of this catalog": "Penerangan ringkas katalog ini",
"Validating...": "Mengesahkan...",
"View All": "Lihat Semua",
"Forward": "Maju",
"Home": "Laman Utama",
"{{count}} items_other": "{{count}} item",
"Download completed": "Muat turun selesai",
"Download failed": "Muat turun gagal",
"Open Access": "Akses Terbuka",
"Borrow": "Pinjam",
"Buy": "Beli",
"Subscribe": "Langgan",
"Sample": "Contoh",
"Download": "Muat turun",
"Open & Read": "Buka & Baca",
"Tags": "Tag",
"Tag": "Tag",
"First": "Pertama",
"Previous": "Sebelumnya",
"Next": "Seterusnya",
"Last": "Terakhir",
"Cannot Load Page": "Tidak dapat memuatkan halaman",
"An error occurred": "Ralat telah berlaku",
"Online Library": "Perpustakaan Dalam Talian",
"URL must start with http:// or https://": "URL mesti bermula dengan http:// atau https://",
"Title, Author, Tag, etc...": "Tajuk, Pengarang, Tag, dll...",
"Query": "Pertanyaan",
"Subject": "Subjek",
"Enter {{terms}}": "Masukkan {{terms}}",
"No search results found": "Tiada hasil carian ditemui",
"Failed to load OPDS feed: {{status}} {{statusText}}": "Gagal memuatkan suapan OPDS: {{status}} {{statusText}}",
"Search in {{title}}": "Cari dalam {{title}}",
"Manage Storage": "Urus Penyimpanan",
"Failed to load files": "Gagal memuatkan fail",
"Deleted {{count}} file(s)_other": "{{count}} fail telah dipadam",
"Failed to delete {{count}} file(s)_other": "Gagal memadam {{count}} fail",
"Failed to delete files": "Gagal memadam fail",
"Total Files": "Jumlah Fail",
"Total Size": "Jumlah Saiz",
"Quota": "Kuota",
"Used": "Digunakan",
"Files": "Fail",
"Search files...": "Cari fail...",
"Newest First": "Terbaru dahulu",
"Oldest First": "Tertua dahulu",
"Largest First": "Terbesar dahulu",
"Smallest First": "Terkecil dahulu",
"Name A-Z": "Nama A-Z",
"Name Z-A": "Nama Z-A",
"{{count}} selected_other": "{{count}} dipilih",
"Delete Selected": "Padam Dipilih",
"Created": "Dicipta",
"No files found": "Tiada fail dijumpai",
"No files uploaded yet": "Belum ada fail dimuat naik",
"files": "fail",
"Page {{current}} of {{total}}": "Halaman {{current}} daripada {{total}}",
"Are you sure to delete {{count}} selected file(s)?_other": "Adakah anda pasti mahu memadam {{count}} fail yang dipilih?",
"Cloud Storage Usage": "Penggunaan Storan Awan",
"Rename Group": "Namakan Semula Kumpulan",
"From Directory": "Dari Direktori",
"Successfully imported {{count}} book(s)_other": "Berjaya mengimport {{count}} buku",
"Count": "Jumlah",
"Start Page": "Halaman Awal",
"Search in OPDS Catalog...": "Cari dalam Katalog OPDS...",
"Please log in to use advanced TTS features.": "Sila log masuk untuk menggunakan ciri TTS lanjutan."
}
@@ -55,10 +55,7 @@
"Search Books...": "Boeken zoeken...",
"Clear Search": "Zoekopdracht wissen",
"Import Books": "Boeken importeren",
"Select Multiple Books": "Meerdere boeken selecteren",
"Select Books": "Boeken selecteren",
"Storage": "Opslag",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% van cloudopslag gebruikt.",
"Logged in as {{userDisplayName}}": "Ingelogd als {{userDisplayName}}",
"Logged in": "Ingelogd",
"Account": "Account",
@@ -84,9 +81,9 @@
"Descending": "Aflopend",
"Sort by...": "Sorteren op...",
"No supported files found. Supported formats: {{formats}}": "Geen ondersteunde bestanden gevonden. Ondersteunde formaten: {{formats}}",
"No chapters detected.": "Geen hoofdstukken gedetecteerd.",
"Failed to parse the EPUB file.": "EPUB-bestand kon niet worden verwerkt.",
"This book format is not supported.": "Dit boekformaat wordt niet ondersteund.",
"No chapters detected": "Geen hoofdstukken gedetecteerd",
"Failed to parse the EPUB file": "EPUB-bestand kon niet worden verwerkt",
"This book format is not supported": "Dit boekformaat wordt niet ondersteund",
"Failed to import book(s): {{filenames}}": "Importeren van boek(en) mislukt: {{filenames}}",
"Book uploaded: {{title}}": "Boek geüpload: {{title}}",
"Insufficient storage quota": "Onvoldoende opslagruimte",
@@ -169,8 +166,6 @@
"Hyphenation": "Woordafbreking",
"Override Book Layout": "Boekopmaak overschrijven",
"Page": "Pagina",
"Vertical Margins (px)": "Verticale marges (px)",
"Horizontal Margins (%)": "Horizontale marges (%)",
"Maximum Number of Columns": "Maximum aantal kolommen",
"Maximum Column Height": "Maximale kolomhoogte",
"Maximum Column Width": "Maximale kolombreedte",
@@ -189,10 +184,6 @@
"Behavior": "Gedrag",
"Continuous Scroll": "Doorlopend scrollen",
"Volume Keys for Page Flip": "Volumetoetsen voor pagina omslaan",
"Clicks for Page Flip": "Klikken voor pagina omslaan",
"Swap Clicks Area": "Klikgebieden omwisselen",
"Custom CSS": "Aangepaste CSS",
"Enter your custom CSS here...": "Voer hier uw aangepaste CSS in...",
"Apply": "Toepassen",
"Font": "Lettertype",
"Layout": "Opmaak",
@@ -205,7 +196,6 @@
"Link Color": "Linkkleur",
"Preview": "Voorbeeld",
"Font & Layout": "Lettertype & opmaak",
"Book Cover": "Boekomslag",
"More Info": "Meer informatie",
"Parallel Read": "Parallel lezen",
"Export Annotations": "Annotaties exporteren",
@@ -217,9 +207,9 @@
"Match Whole Words": "Hele woorden",
"Match Diacritics": "Diakritische tekens",
"TOC": "Inhoudsopgave",
"Table of Contents": "Inhoudsopgave",
"Sidebar": "Zijbalk",
"TTS not supported for PDF": "TTS niet ondersteund voor PDF",
"TTS not supported in this device": "TTS niet ondersteund op dit apparaat",
"No Timeout": "Geen time-out",
"{{value}} minute": "{{value}} minuut",
"{{value}} minutes": "{{value}} minuten",
@@ -228,33 +218,10 @@
"Slow": "Langzaam",
"Fast": "Snel",
"Reading Progress Synced": "Leesvoortgang gesynchroniseerd",
"Cloud Storage": "Cloudopslag",
"Failed to delete user. Please try again later.": "Gebruiker verwijderen mislukt. Probeer het later opnieuw.",
"Free Tier": "Gratis niveau",
"Community Support": "Community-ondersteuning",
"DeepL Free Access": "DeepL gratis toegang",
"Essential Text-to-Speech Voices": "Essentiële tekst-naar-spraak stemmen",
"Unlimited Offline/Online Reading": "Onbeperkt offline/online lezen",
"Unlimited Cloud Sync Devices": "Onbeperkt aantal cloud-synchronisatie apparaten",
"500 MB Cloud Sync Space": "500 MB cloud-synchronisatieruimte",
"Plus Tier": "Plus niveau",
"Includes All Free Tier Benefits": "Inclusief alle voordelen van het gratis niveau",
"Priority Support": "Prioriteitsondersteuning",
"AI Summaries": "AI-samenvattingen",
"AI Translations": "AI-vertalingen",
"DeepL Pro Access": "DeepL Pro toegang",
"Expanded Text-to-Speech Voices": "Uitgebreide tekst-naar-spraak stemmen",
"2000 MB Cloud Sync Space": "2000 MB cloud-synchronisatieruimte",
"Pro Tier": "Pro niveau",
"Includes All Plus Tier Benefits": "Inclusief alle voordelen van het Plus niveau",
"Unlimited AI Summaries": "Onbeperkte AI-samenvattingen",
"Unlimited AI Translations": "Onbeperkte AI-vertalingen",
"Unlimited DeepL Pro Access": "Onbeperkte DeepL Pro toegang",
"Advanced AI Tools": "Geavanceerde AI-tools",
"Early Feature Access": "Vroege toegang tot functies",
"10 GB Cloud Sync Space": "10 GB cloud-synchronisatieruimte",
"Loading profile...": "Profiel laden...",
"Features": "Functies",
"Sign Out": "Uitloggen",
"Delete Account": "Account verwijderen",
"Delete Your Account?": "Uw account verwijderen?",
@@ -267,24 +234,22 @@
"Error checking for updates": "Fout bij controleren op updates",
"Book Details": "Boekdetails",
"Unknown": "Onbekend",
"Publisher:": "Uitgever:",
"Published:": "Gepubliceerd:",
"Updated:": "Bijgewerkt:",
"Added:": "Toegevoegd:",
"Language:": "Taal:",
"Subjects:": "Onderwerpen:",
"Format:": "Formaat:",
"File Size:": "Bestandsgrootte:",
"Description:": "Beschrijving:",
"Publisher": "Uitgever",
"Published": "Gepubliceerd",
"Updated": "Bijgewerkt",
"Added": "Toegevoegd",
"Subjects": "Onderwerpen",
"File Size": "Bestandsgrootte",
"Description": "Beschrijving",
"No description available": "Geen beschrijving beschikbaar",
"Drop to Import Books": "Sleep om boeken te importeren",
"A new version of Readest is Available!": "Een nieuwe versie van Readest is beschikbaar!",
"A new version of Readest is available!": "Een nieuwe versie van Readest is beschikbaar!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Readest {{newVersion}} is beschikbaar (geïnstalleerde versie {{currentVersion}}).",
"Download and install now?": "Nu downloaden en installeren?",
"Downloading {{downloaded}} of {{contentLength}}": "Downloaden {{downloaded}} van {{contentLength}}",
"Download finished": "Download voltooid",
"DOWNLOAD & INSTALL": "DOWNLOADEN & INSTALLEREN",
"Changelog:": "Wijzigingslogboek:",
"Changelog": "Wijzigingslogboek",
"Software Update": "Software-update",
"LXGW WenKai GB Screen": "LXGW WenKai GB Scherm",
"LXGW WenKai TC": "LXGW WenKai TC",
@@ -302,8 +267,8 @@
"Reveal in Finder": "Tonen in Finder",
"Reveal in File Explorer": "Tonen in Verkenner",
"Reveal in Folder": "Tonen in map",
"Dont have an account? Sign up": "Nog geen account? Registreer u",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n—William Shakespeare": "De hele wereld is een toneel,\nEn alle mannen en vrouwen slechts spelers;\nZij hebben hun uitgangen en hun entrees,\nEn één man speelt in zijn tijd vele rollen,\nZijn daden zijnde zeven leeftijden.\n\n— William Shakespeare",
"Don't have an account? Sign up": "Nog geen account? Registreer u",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "De hele wereld is een toneel,\nEn alle mannen en vrouwen slechts spelers;\nZij hebben hun uitgangen en hun entrees,\nEn één man speelt in zijn tijd vele rollen,\nZijn daden zijnde zeven leeftijden.\n\n— William Shakespeare",
"Next Section": "Volgende sectie",
"Previous Section": "Vorige sectie",
"Next Page": "Volgende pagina",
@@ -329,9 +294,476 @@
"Disable Translation": "Vertaling uitschakelen",
"Scroll": "Scrollen",
"Overlap Pixels": "Overlap pixels",
"Click": "Klik",
"System Language": "Systemtaal",
"Security": "Beveiliging",
"Allow JavaScript": "JavaScript toestaan",
"Enable only if you trust the file.": "Schakel alleen in als u het bestand vertrouwt."
"Enable only if you trust the file.": "Schakel alleen in als u het bestand vertrouwt.",
"Sort TOC by Page": "TOC sorteren op pagina",
"Search in {{count}} Book(s)..._one": "Zoeken in {{count}} Boek...",
"Search in {{count}} Book(s)..._other": "Zoeken in {{count}} Boeken...",
"No notes match your search": "Geen notities gevonden",
"Search notes and excerpts...": "Zoek notities...",
"Sign in to Sync": "Meld je aan om te synchroniseren",
"Synced at {{time}}": "Gesynchroniseerd om {{time}}",
"Never synced": "Nooit gesynchroniseerd",
"Show Remaining Time": "Toon resterende tijd",
"{{time}} min left in chapter": "Nog {{time}} min in hoofdstuk",
"Override Book Color": "Boekkleur overschrijven",
"Login Required": "Inloggen vereist",
"Quota Exceeded": "Limiet overschreden",
"{{percentage}}% of Daily Translation Characters Used.": "{{percentage}}% van de dagelijkse vertaaltekens gebruikt.",
"Translation Characters": "Vertaaltekens",
"{{engine}}: {{count}} voices_one": "{{engine}}: {{count}} stem",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}} stemmen",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "Er is iets misgegaan. Maak je geen zorgen, ons team is op de hoogte gebracht en we werken aan een oplossing.",
"Error Details:": "Foutdetails:",
"Try Again": "Probeer opnieuw",
"Need help?": "Heb je hulp nodig?",
"Contact Support": "Neem contact op met ondersteuning",
"Code Highlighting": "Code markering",
"Enable Highlighting": "Markering inschakelen",
"Code Language": "Code taal",
"Top Margin (px)": "Bovenmarge (px)",
"Bottom Margin (px)": "Ondermarge (px)",
"Right Margin (px)": "Rechter marge (px)",
"Left Margin (px)": "Linker marge (px)",
"Column Gap (%)": "Kolomafstand (%)",
"Always Show Status Bar": "Statusbalk altijd weergeven",
"Custom Content CSS": "Aangepaste inhoud-CSS",
"Enter CSS for book content styling...": "Voer CSS in voor de opmaak van de boekinhoud...",
"Custom Reader UI CSS": "Aangepaste interface-CSS",
"Enter CSS for reader interface styling...": "Voer CSS in voor de opmaak van de leesinterface...",
"Crop": "Bijsnijden",
"Book Covers": "Boekomslagen",
"Fit": "Passend maken",
"Reset {{settings}}": "Reset {{settings}}",
"Reset Settings": "Instellingen resetten",
"{{count}} pages left in chapter_one": "Nog {{count}} pagina in hoofdstuk",
"{{count}} pages left in chapter_other": "Nog {{count}} paginas in hoofdstuk",
"Show Remaining Pages": "Toon resterende paginas",
"Source Han Serif CN VF": "Source Han Serif",
"Huiwen-mincho": "Huiwen Mincho",
"KingHwa_OldSong": "KingHwa Song",
"Manage Subscription": "Abonnement beheren",
"Coming Soon": "Binnenkort beschikbaar",
"Upgrade to {{plan}}": "Upgrade naar {{plan}}",
"Upgrade to Plus or Pro": "Upgrade naar Plus of Pro",
"Current Plan": "Huidig abonnement",
"Plan Limits": "Abonnementslimieten",
"Processing your payment...": "Je betaling wordt verwerkt...",
"Please wait while we confirm your subscription.": "Even geduld terwijl we je abonnement bevestigen.",
"Payment Processing": "Betaling verwerken",
"Your payment is being processed. This usually takes a few moments.": "Je betaling wordt verwerkt. Dit duurt meestal een paar seconden.",
"Payment Failed": "Betaling mislukt",
"Back to Profile": "Terug naar profiel",
"Subscription Successful!": "Abonnement succesvol!",
"Email:": "E-mail:",
"Plan:": "Abonnement:",
"Amount:": "Bedrag:",
"Go to Library": "Ga naar bibliotheek",
"Need help? Contact our support team at support@readest.com": "Hulp nodig? Neem contact op met support via support@readest.com",
"Free Plan": "Gratis abonnement",
"month": "maand",
"AI Translations (per day)": "AI-vertalingen (per dag)",
"Plus Plan": "Plus-abonnement",
"Includes All Free Plan Benefits": "Bevat alle voordelen van het gratis abonnement",
"Pro Plan": "Pro-abonnement",
"More AI Translations": "Meer AI-vertalingen",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "We konden je abonnement niet verwerken. Probeer het opnieuw of neem contact op met support als het probleem blijft bestaan.",
"Thank you for your subscription! Your payment has been processed successfully.": "Bedankt voor je abonnement! Je betaling is succesvol verwerkt.",
"Complete Your Subscription": "Voltooi uw abonnement",
"{{percentage}}% of Cloud Sync Space Used.": "{{percentage}}% van de cloud-synchronisatie ruimte gebruikt.",
"Cloud Sync Storage": "Cloud Sync Opslag",
"Disable": "Uitschakelen",
"Enable": "Inschakelen",
"Upgrade to Readest Premium": "Upgrade naar Readest Premium",
"Show Source Text": "Toon brontekst",
"Cross-Platform Sync": "Cross-Platform Synchronisatie",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "Synchroniseer naadloos je bibliotheek, voortgang, markeringen en notities op al je apparaten—verlies nooit meer je plek.",
"Customizable Reading": "Aanpasbaar Lezen",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "Personaliseer elk detail met aanpasbare lettertypen, lay-outs, thema's en geavanceerde weergave-instellingen voor de perfecte leeservaring.",
"AI Read Aloud": "AI Voorlezen",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "Geniet van handsfree lezen met natuurlijk klinkende AI-stemmen die je boeken tot leven brengen.",
"AI Translations": "AI Vertalingen",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "Vertaal elke tekst direct met de kracht van Google, Azure of DeepL—begrijp inhoud in elke taal.",
"Connect with fellow readers and get help fast in our friendly community channels.": "Maak contact met medelezers en krijg snel hulp in onze vriendelijke community kanalen.",
"Unlimited AI Read Aloud Hours": "Onbeperkte AI Voorlees Uren",
"Listen without limits—convert as much text as you like into immersive audio.": "Luister zonder limieten—zet zoveel tekst als je wilt om in meeslepende audio.",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "Ontsluit verbeterde vertaalfuncties met meer dagelijks gebruik en geavanceerde opties.",
"DeepL Pro Access": "DeepL Pro Toegang",
"Enjoy faster responses and dedicated assistance whenever you need help.": "Geniet van snellere reacties en toegewijde hulp wanneer je hulp nodig hebt.",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "Dagelijks vertaalquotum bereikt. Upgrade je abonnement om AI vertalingen te blijven gebruiken.",
"Includes All Plus Plan Benefits": "Inclusief Alle Plus Plan Voordelen",
"Early Feature Access": "Vroege Toegang tot Functies",
"Be the first to explore new features, updates, and innovations before anyone else.": "Ontdek als eerste nieuwe functies, updates en innovaties.",
"Advanced AI Tools": "Geavanceerde AI Tools",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "Benut krachtige AI tools voor slimmer lezen, vertalen en content ontdekking.",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "Vertaal dagelijks tot 100.000 tekens met de meest nauwkeurige vertaalengine.",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "Vertaal dagelijks tot 500.000 tekens met de meest nauwkeurige vertaalengine.",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "Sla je hele leesverzameling veilig op en benader deze met tot 5 GB cloudopslag.",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "Sla je hele leesverzameling veilig op en benader deze met tot 20 GB cloudopslag.",
"Deleted cloud backup of the book: {{title}}": "Verwijderde cloudback-up van het boek: {{title}}",
"Are you sure to delete the cloud backup of the selected book?": "Weet je zeker dat je de cloudback-up van het geselecteerde boek wilt verwijderen?",
"What's New in Readest": "Wat is er nieuw in Readest",
"Enter book title": "Voer boektitel in",
"Subtitle": "Ondertitel",
"Enter book subtitle": "Voer boek ondertitel in",
"Enter author name": "Voer auteursnaam in",
"Series": "Serie",
"Enter series name": "Voer serienaam in",
"Series Index": "Serie nummer",
"Enter series index": "Voer serie nummer in",
"Total in Series": "Totaal in serie",
"Enter total books in series": "Voer totaal aantal boeken in serie in",
"Enter publisher": "Voer uitgever in",
"Publication Date": "Publicatiedatum",
"Identifier": "Identificatie",
"Enter book description": "Voer boekbeschrijving in",
"Change cover image": "Wijzig omslagafbeelding",
"Replace": "Vervangen",
"Unlock cover": "Omslag ontgrendelen",
"Lock cover": "Omslag vergrendelen",
"Auto-Retrieve Metadata": "Metadata automatisch ophalen",
"Auto-Retrieve": "Automatisch ophalen",
"Unlock all fields": "Alle velden ontgrendelen",
"Unlock All": "Alles ontgrendelen",
"Lock all fields": "Alle velden vergrendelen",
"Lock All": "Alles vergrendelen",
"Reset": "Herstellen",
"Edit Metadata": "Metadata bewerken",
"Locked": "Vergrendeld",
"Select Metadata Source": "Selecteer metadata bron",
"Keep manual input": "Handmatige invoer behouden",
"Google Books": "Google Books",
"Open Library": "Open Library",
"Fiction, Science, History": "Fictie, Wetenschap, Geschiedenis",
"Open Book in New Window": "Open boek in nieuw venster",
"Voices for {{lang}}": "Stemmen voor {{lang}}",
"Yandex Translate": "Yandex Vertalen",
"YYYY or YYYY-MM-DD": "YYYY of YYYY-MM-DD",
"Restore Purchase": "Herstel aankoop",
"No purchases found to restore.": "Geen aankopen gevonden om te herstellen.",
"Failed to restore purchases.": "Herstellen van aankopen is mislukt.",
"Failed to manage subscription.": "Beheren van abonnement is mislukt.",
"Failed to load subscription plans.": "Laden van abonnement plannen is mislukt.",
"year": "jaar",
"Failed to create checkout session": "Kon de afreken sessie niet aanmaken",
"Storage": "Opslag",
"Terms of Service": "Gebruiksvoorwaarden",
"Privacy Policy": "Privacybeleid",
"Disable Double Click": "Dubbelklikken uitschakelen",
"TTS not supported for this document": "TTS niet ondersteund voor dit document",
"Reset Password": "Wachtwoord resetten",
"Show Reading Progress": "Leesvoortgang weergeven",
"Reading Progress Style": "Stijl van leesvoortgang",
"Page Number": "Pagina nummer",
"Percentage": "Percentage",
"Deleted local copy of the book: {{title}}": "Verwijderde lokale kopie van het boek: {{title}}",
"Failed to delete cloud backup of the book: {{title}}": "Verwijderen van cloudback-up van het boek is mislukt: {{title}}",
"Failed to delete local copy of the book: {{title}}": "Verwijderen van lokale kopie van het boek is mislukt: {{title}}",
"Are you sure to delete the local copy of the selected book?": "Weet je zeker dat je de lokale kopie van het geselecteerde boek wilt verwijderen?",
"Remove from Cloud & Device": "Verwijder uit Cloud & Apparaat",
"Remove from Cloud Only": "Verwijder alleen uit Cloud",
"Remove from Device Only": "Verwijder alleen uit Apparaat",
"Disconnected": "Verbroken",
"KOReader Sync Settings": "KOReader Sync-instellingen",
"Sync Strategy": "Synchronisatiestrategie",
"Ask on conflict": "Vraag bij conflict",
"Always use latest": "Altijd de nieuwste gebruiken",
"Send changes only": "Verzend alleen wijzigingen",
"Receive changes only": "Ontvang alleen wijzigingen",
"Checksum Method": "Checksum-methode",
"File Content (recommended)": "Bestandsinhoud (aanbevolen)",
"File Name": "Bestandsnaam",
"Device Name": "Apparaatnaam",
"Connect to your KOReader Sync server.": "Verbind met je KOReader Sync-server.",
"Server URL": "Server-URL",
"Username": "Gebruikersnaam",
"Your Username": "Je gebruikersnaam",
"Password": "Wachtwoord",
"Connect": "Verbinden",
"KOReader Sync": "KOReader Sync",
"Sync Conflict": "Synchronisatieconflict",
"Sync reading progress from \"{{deviceName}}\"?": "Leesvoortgang synchroniseren van \"{{deviceName}}\"?",
"another device": "een ander apparaat",
"Local Progress": "Lokale voortgang",
"Remote Progress": "Externe voortgang",
"Page {{page}} of {{total}} ({{percentage}}%)": "Pagina {{page}} van {{total}} ({{percentage}}%)",
"Current position": "Huidige positie",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "Ongeveer pagina {{page}} van {{total}} ({{percentage}}%)",
"Approximately {{percentage}}%": "Ongeveer {{percentage}}%",
"Failed to connect": "Verbinding mislukt",
"Sync Server Connected": "Synchronisatie server verbonden",
"Sync as {{userDisplayName}}": "Synchroniseren als {{userDisplayName}}",
"Custom Fonts": "Aangepaste Lettertypen",
"Cancel Delete": "Verwijderen Annuleren",
"Import Font": "Lettertype Importeren",
"Delete Font": "Lettertype Verwijderen",
"Tips": "Tips",
"Custom fonts can be selected from the Font Face menu": "Aangepaste lettertypen kunnen worden geselecteerd vanuit het Lettertype menu",
"Manage Custom Fonts": "Aangepaste Lettertypen Beheren",
"Select Files": "Bestanden Selecteren",
"Select Image": "Afbeelding Selecteren",
"Select Video": "Video Selecteren",
"Select Audio": "Audio Selecteren",
"Select Fonts": "Lettertypen Selecteren",
"Supported font formats: .ttf, .otf, .woff, .woff2": "Ondersteunde lettertypeformaten: .ttf, .otf, .woff, .woff2",
"Push Progress": "Voortgang pushen",
"Pull Progress": "Voortgang pullen",
"Previous Paragraph": "Vorige alinea",
"Previous Sentence": "Vorige zin",
"Pause": "Pauzeren",
"Play": "Afspelen",
"Next Sentence": "Volgende zin",
"Next Paragraph": "Volgende alinea",
"Separate Cover Page": "Afzonderlijke omslagpagina",
"Resize Notebook": "Formaat Notitieblok Aanpassen",
"Resize Sidebar": "Formaat Zijbalk Aanpassen",
"Get Help from the Readest Community": "Hulp krijgen van de Readest Community",
"Remove cover image": "Omslagafbeelding verwijderen",
"Bookshelf": "Boekenkast",
"View Menu": "Menu bekijken",
"Settings Menu": "Instellingenmenu",
"View account details and quota": "Accountgegevens en quotum bekijken",
"Library Header": "Bibliotheekkop",
"Book Content": "Boekinhoud",
"Footer Bar": "Voettekstbalk",
"Header Bar": "Koptekstbalk",
"View Options": "Weergaveopties",
"Book Menu": "Boekmenu",
"Search Options": "Zoekopties",
"Close": "Sluiten",
"Delete Book Options": "Boekverwijderopties",
"ON": "AAN",
"OFF": "UIT",
"Reading Progress": "Leesvoortgang",
"Page Margin": "Pagina Marges",
"Remove Bookmark": "Bladwijzer Verwijderen",
"Add Bookmark": "Bladwijzer Toevoegen",
"Books Content": "Boekinhoud",
"Jump to Location": "Ga naar Locatie",
"Unpin Notebook": "Notitieblok Losmaken",
"Pin Notebook": "Notitieblok Vastmaken",
"Hide Search Bar": "Verberg Zoekbalk",
"Show Search Bar": "Toon Zoekbalk",
"On {{current}} of {{total}} page": "Op {{current}} van {{total}} pagina",
"Section Title": "Sectietitel",
"Decrease": "Verkleinen",
"Increase": "Vergroten",
"Settings Panels": "Instellingenpanelen",
"Settings": "Instellingen",
"Unpin Sidebar": "Zijbalk Losmaken",
"Pin Sidebar": "Zijbalk Vastmaken",
"Toggle Sidebar": "Zijbalk Wisselen",
"Toggle Translation": "Vertaling Wisselen",
"Translation Disabled": "Vertaling Uitgeschakeld",
"Minimize": "Minimaliseren",
"Maximize or Restore": "Maximaliseren of Herstellen",
"Exit Parallel Read": "Parallel Lezen Afsluiten",
"Enter Parallel Read": "Parallel Lezen Starten",
"Zoom Level": "Zoomniveau",
"Zoom Out": "Zoom Verkleinen",
"Reset Zoom": "Zoom Reset",
"Zoom In": "Zoom Vergroten",
"Zoom Mode": "Zoom Modus",
"Single Page": "Enkele Pagina",
"Auto Spread": "Automatische Verspreiding",
"Fit Page": "Pagina Aanpassen",
"Fit Width": "Breedte Aanpassen",
"Failed to select directory": "Selecteren van map is mislukt",
"The new data directory must be different from the current one.": "De nieuwe gegevensmap moet anders zijn dan de huidige.",
"Migration failed: {{error}}": "Migratie mislukt: {{error}}",
"Change Data Location": "Gegevenslocatie Wijzigen",
"Current Data Location": "Huidige Gegevenslocatie",
"Total size: {{size}}": "Totale grootte: {{size}}",
"Calculating file info...": "Bestandinformatie wordt berekend...",
"New Data Location": "Nieuwe Gegevenslocatie",
"Choose Different Folder": "Kies Een Andere Map",
"Choose New Folder": "Kies Nieuwe Map",
"Migrating data...": "Gegevens worden gemigreerd...",
"Copying: {{file}}": "Kopiëren: {{file}}",
"{{current}} of {{total}} files": "{{current}} van {{total}} bestanden",
"Migration completed successfully!": "Migratie succesvol voltooid!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "Uw gegevens zijn naar de nieuwe locatie verplaatst. Start de applicatie opnieuw op om het proces te voltooien.",
"Migration failed": "Migratie mislukt",
"Important Notice": "Belangrijke Kennisgeving",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "Dit zal al uw app-gegevens naar de nieuwe locatie verplaatsen. Zorg ervoor dat de bestemming voldoende vrije ruimte heeft.",
"Restart App": "Herstart App",
"Start Migration": "Start Migratie",
"Advanced Settings": "Geavanceerde Instellingen",
"File count: {{size}}": "Bestandsaantal: {{size}}",
"Background Read Aloud": "Achtergrond Voorlezen",
"Ready to read aloud": "Klaar om voor te lezen",
"Read Aloud": "Voorlezen",
"Screen Brightness": "Schermhelderheid",
"Background Image": "Achtergrondafbeelding",
"Import Image": "Afbeelding importeren",
"Opacity": "Doorzichtigheid",
"Size": "Grootte",
"Cover": "Omslag",
"Contain": "Bevatten",
"{{number}} pages left in chapter": "Nog {{number}} paginas in hoofdstuk",
"Device": "Apparaat",
"E-Ink Mode": "E-Ink Modus",
"Highlight Colors": "Markeerkleuren",
"Auto Screen Brightness": "Automatische Schermhelderheid",
"Pagination": "Paginering",
"Disable Double Tap": "Schakel Dubbel Tikken Uit",
"Tap to Paginate": "Tik om te Pagineren",
"Click to Paginate": "Klik om te Pagineren",
"Tap Both Sides": "Tik op Beide Zijden",
"Click Both Sides": "Klik op Beide Zijden",
"Swap Tap Sides": "Wissel Tap Zijden",
"Swap Click Sides": "Wissel Klik Zijden",
"Source and Translated": "Bron en Vertaling",
"Translated Only": "Alleen Vertaling",
"Source Only": "Alleen Bron",
"TTS Text": "TTS Tekst",
"The book file is corrupted": "Het boekbestand is beschadigd",
"The book file is empty": "Het boekbestand is leeg",
"Failed to open the book file": "Het openen van het boekbestand is mislukt",
"On-Demand Purchase": "On-Demand Aankoop",
"Full Customization": "Volledige Aanpassing",
"Lifetime Plan": "Levenslange Abonnement",
"One-Time Payment": "Eenmalige Betaling",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "Doe een eenmalige betaling om levenslange toegang te krijgen tot specifieke functies op alle apparaten. Koop specifieke functies of diensten alleen wanneer je ze nodig hebt.",
"Expand Cloud Sync Storage": "Cloud Sync Opslag Uitbreiden",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "Breid je cloudopslag voor altijd uit met een eenmalige aankoop. Elke extra aankoop voegt meer ruimte toe.",
"Unlock All Customization Options": "Ontgrendel Alle Aanpassingsopties",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "Ontgrendel extra thema's, lettertypen, lay-outopties en voorlezen, vertalers, cloudopslagdiensten.",
"Purchase Successful!": "Aankoop Succesvol!",
"lifetime": "levenslang",
"Thank you for your purchase! Your payment has been processed successfully.": "Bedankt voor je aankoop! Je betaling is succesvol verwerkt.",
"Order ID:": "Bestel-ID:",
"TTS Highlighting": "TTS-markering",
"Style": "Stijl",
"Underline": "Onderstrepen",
"Strikethrough": "Doorhalen",
"Squiggly": "Kronkelig",
"Outline": "Omtrek",
"Save Current Color": "Huidige kleur opslaan",
"Quick Colors": "Snelle kleuren",
"Highlighter": "Marker",
"Save Book Cover": "Opslaan boekomslag",
"Auto-save last book cover": "Automatisch opslaan laatste boekomslag",
"Back": "Terug",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "Bevestigingsmail verzonden! Controleer je oude en nieuwe e-mailadres om de wijziging te bevestigen.",
"Failed to update email": "E-mail bijwerken mislukt",
"New Email": "Nieuw e-mailadres",
"Your new email": "Je nieuwe e-mailadres",
"Updating email ...": "E-mail wordt bijgewerkt...",
"Update email": "E-mail bijwerken",
"Current email": "Huidig e-mailadres",
"Update Email": "E-mail bijwerken",
"All": "Alles",
"Unable to open book": "Kan boek niet openen",
"Punctuation": "Interpunctie",
"Replace Quotation Marks": "Aanhalingstekens vervangen",
"Enabled only in vertical layout.": "Alleen ingeschakeld in verticale lay-out.",
"No Conversion": "Geen conversie",
"Simplified to Traditional": "Vereenvoudigd → Traditioneel",
"Traditional to Simplified": "Traditioneel → Vereenvoudigd",
"Simplified to Traditional (Taiwan)": "Vereenvoudigd → Traditioneel (Taiwan)",
"Simplified to Traditional (Hong Kong)": "Vereenvoudigd → Traditioneel (Hong Kong)",
"Simplified to Traditional (Taiwan), with phrases": "Vereenvoudigd → Traditioneel (Taiwan • zinnen)",
"Traditional (Taiwan) to Simplified": "Traditioneel (Taiwan) → Vereenvoudigd",
"Traditional (Hong Kong) to Simplified": "Traditioneel (Hong Kong) → Vereenvoudigd",
"Traditional (Taiwan) to Simplified, with phrases": "Traditioneel (Taiwan • zinnen) → Vereenvoudigd",
"Convert Simplified and Traditional Chinese": "Converteer Vereenvoudigd/Traditioneel Chinees",
"Convert Mode": "Conversiemodus",
"Failed to auto-save book cover for lock screen: {{error}}": "Automatisch opslaan van boekomslag voor vergrendelscherm mislukt: {{error}}",
"Download from Cloud": "Downloaden van Cloud",
"Upload to Cloud": "Uploaden naar Cloud",
"Clear Custom Fonts": "Aangepaste Lettertypen Wissen",
"Columns": "Kolommen",
"OPDS Catalogs": "OPDS-catalogi",
"Adding LAN addresses is not supported in the web app version.": "Het toevoegen van LAN-adressen wordt niet ondersteund in de webversie.",
"Invalid OPDS catalog. Please check the URL.": "Ongeldige OPDS-catalogus. Controleer de URL.",
"Browse and download books from online catalogs": "Blader door en download boeken uit online catalogi",
"My Catalogs": "Mijn catalogi",
"Add Catalog": "Catalogus toevoegen",
"No catalogs yet": "Nog geen catalogi",
"Add your first OPDS catalog to start browsing books": "Voeg je eerste OPDS-catalogus toe om boeken te bekijken",
"Add Your First Catalog": "Voeg je eerste catalogus toe",
"Browse": "Bladeren",
"Popular Catalogs": "Populaire catalogi",
"Add": "Toevoegen",
"Add OPDS Catalog": "OPDS-catalogus toevoegen",
"Catalog Name": "Catalogusnaam",
"My Calibre Library": "Mijn Calibre-bibliotheek",
"OPDS URL": "OPDS-URL",
"Username (optional)": "Gebruikersnaam (optioneel)",
"Password (optional)": "Wachtwoord (optioneel)",
"Description (optional)": "Beschrijving (optioneel)",
"A brief description of this catalog": "Een korte beschrijving van deze catalogus",
"Validating...": "Valideren...",
"View All": "Alles bekijken",
"Forward": "Verder",
"Home": "Startpagina",
"{{count}} items_one": "{{count}} item",
"{{count}} items_other": "{{count}} items",
"Download completed": "Download voltooid",
"Download failed": "Download mislukt",
"Open Access": "Open toegang",
"Borrow": "Lenen",
"Buy": "Kopen",
"Subscribe": "Abonneren",
"Sample": "Voorbeeld",
"Download": "Downloaden",
"Open & Read": "Openen & Lezen",
"Tags": "Tags",
"Tag": "Tag",
"First": "Eerste",
"Previous": "Vorige",
"Next": "Volgende",
"Last": "Laatste",
"Cannot Load Page": "Pagina kan niet worden geladen",
"An error occurred": "Er is een fout opgetreden",
"Online Library": "Online Bibliotheek",
"URL must start with http:// or https://": "URL moet beginnen met http:// of https://",
"Title, Author, Tag, etc...": "Titel, Auteur, Tag, enzovoort...",
"Query": "Zoekopdracht",
"Subject": "Onderwerp",
"Enter {{terms}}": "Voer {{terms}} in",
"No search results found": "Geen zoekresultaten gevonden",
"Failed to load OPDS feed: {{status}} {{statusText}}": "Het laden van de OPDS-feed is mislukt: {{status}} {{statusText}}",
"Search in {{title}}": "Zoeken in {{title}}",
"Manage Storage": "Opslag beheren",
"Failed to load files": "Bestanden laden mislukt",
"Deleted {{count}} file(s)_one": "{{count}} bestand verwijderd",
"Deleted {{count}} file(s)_other": "{{count}} bestanden verwijderd",
"Failed to delete {{count}} file(s)_one": "Kon {{count}} bestand niet verwijderen",
"Failed to delete {{count}} file(s)_other": "Kon {{count}} bestanden niet verwijderen",
"Failed to delete files": "Bestanden verwijderen mislukt",
"Total Files": "Totaal aantal bestanden",
"Total Size": "Totale grootte",
"Quota": "Quota",
"Used": "Gebruikt",
"Files": "Bestanden",
"Search files...": "Bestanden zoeken...",
"Newest First": "Nieuwste eerst",
"Oldest First": "Oudste eerst",
"Largest First": "Grootste eerst",
"Smallest First": "Kleinste eerst",
"Name A-Z": "Naam A-Z",
"Name Z-A": "Naam Z-A",
"{{count}} selected_one": "{{count}} geselecteerd",
"{{count}} selected_other": "{{count}} geselecteerd",
"Delete Selected": "Verwijder geselecteerde",
"Created": "Gemaakt",
"No files found": "Geen bestanden gevonden",
"No files uploaded yet": "Nog geen bestanden geüpload",
"files": "bestanden",
"Page {{current}} of {{total}}": "Pagina {{current}} van {{total}}",
"Are you sure to delete {{count}} selected file(s)?_one": "Weet je zeker dat je {{count}} geselecteerd bestand wilt verwijderen?",
"Are you sure to delete {{count}} selected file(s)?_other": "Weet je zeker dat je {{count}} geselecteerde bestanden wilt verwijderen?",
"Cloud Storage Usage": "Cloudopslaggebruik",
"Rename Group": "Groep hernoemen",
"From Directory": "Vanuit map",
"Successfully imported {{count}} book(s)_one": "Succesvol 1 boek geïmporteerd",
"Successfully imported {{count}} book(s)_other": "Succesvol {{count}} boeken geïmporteerd",
"Count": "Aantal",
"Start Page": "Startpagina",
"Search in OPDS Catalog...": "Zoeken in OPDS-catalogus...",
"Please log in to use advanced TTS features.": "Log in om geavanceerde TTS-functies te gebruiken."
}
@@ -8,7 +8,6 @@
"Auto Mode": "Tryb automatyczny",
"Behavior": "Zachowanie",
"Book": "Książka",
"Book Cover": "Okładka książki",
"Bookmark": "Zakładka",
"Cancel": "Anuluj",
"Chapter": "Rozdział",
@@ -18,7 +17,6 @@
"Confirm Deletion": "Potwierdź usunięcie",
"Copied to notebook": "Skopiowano do notatnika",
"Copy": "Kopiuj",
"Custom CSS": "Własny CSS",
"Dark Mode": "Tryb ciemny",
"Default": "Domyślne",
"Default Font": "Domyślna czcionka",
@@ -28,7 +26,6 @@
"Dictionary": "Słownik",
"Download Readest": "Pobierz Readest",
"Edit": "Edytuj",
"Enter your custom CSS here...": "Wprowadź własny CSS tutaj...",
"Excerpts": "Fragmenty",
"Failed to import book(s): {{filenames}}": "Nie udało się zaimportować książek: {{filenames}}",
"Fast": "Szybko",
@@ -48,7 +45,6 @@
"Horizontal Direction": "Kierunek poziomy",
"Hyphenation": "Dzielenie wyrazów",
"Import Books": "Importuj książki",
"Language:": "Język:",
"Layout": "Układ",
"Light Mode": "Tryb jasny",
"Loading...": "Ładowanie...",
@@ -70,8 +66,8 @@
"Paging Animation": "Animacja przewracania stron",
"Paragraph": "Akapit",
"Parallel Read": "Czytanie równoległe",
"Published:": "Opublikowano:",
"Publisher:": "Wydawca:",
"Published": "Opublikowano",
"Publisher": "Wydawca",
"Reading Progress Synced": "Zsynchronizowano postęp czytania",
"Reload Page": "Odśwież stronę",
"Reveal in File Explorer": "Pokaż w Eksploratorze plików",
@@ -85,7 +81,6 @@
"Search...": "Szukaj...",
"Select Book": "Wybierz książkę",
"Select Books": "Wybierz książki",
"Select Multiple Books": "Wybierz wiele książek",
"Sepia": "Sepia",
"Serif Font": "Czcionka szeryfowa",
"Show Book Details": "Pokaż szczegóły książki",
@@ -96,16 +91,15 @@
"Slow": "Wolno",
"Solarized": "Słoneczny",
"Speak": "Czytaj",
"Subjects:": "Tematy:",
"Subjects": "Tematy",
"System Fonts": "Czcionki systemowe",
"TTS not supported in this device": "TTS nie jest obsługiwane na tym urządzeniu",
"Theme Color": "Kolor motywu",
"Theme Mode": "Tryb motywu",
"Translate": "Tłumacz",
"Translated Text": "Przetłumaczony tekst",
"Unknown": "Nieznane",
"Untitled": "Bez tytułu",
"Updated:": "Zaktualizowano:",
"Updated": "Zaktualizowano",
"Version {{version}}": "Wersja {{version}}",
"Vertical Direction": "Kierunek pionowy",
"Welcome to your library. You can import your books here and read them anytime.": "Witaj w swojej bibliotece. Możesz tutaj zaimportować swoje książki i czytać je w dowolnym momencie.",
@@ -114,8 +108,6 @@
"Your Library": "Twoja biblioteka",
"TTS not supported for PDF": "TTS nie jest obsługiwane dla plików PDF",
"Override Book Font": "Nadpisz czcionkę książki",
"Vertical Margins (px)": "Marginesy pionowe (px)",
"Horizontal Margins (%)": "Marginesy poziome (%)",
"Apply to All Books": "Zastosuj do wszystkich książek",
"Apply to This Book": "Zastosuj do tej książki",
"Unable to fetch the translation. Try again later.": "Nie udało się pobrać tłumaczenia. Spróbuj ponownie później.",
@@ -124,14 +116,13 @@
"Book Details": "Szczegóły książki",
"From Local File": "Z pliku lokalnego",
"TOC": "Spis treści",
"Table of Contents": "Spis treści",
"Book uploaded: {{title}}": "Książka przesłana: {{title}}",
"Failed to upload book: {{title}}": "Nie udało się przesłać książki: {{title}}",
"Book downloaded: {{title}}": "Książka pobrana: {{title}}",
"Failed to download book: {{title}}": "Nie udało się pobrać książki: {{title}}",
"Upload Book": "Prześlij książkę",
"Auto Upload Books to Cloud": "Automatycznie przesyłaj książki do chmury",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% przestrzeni dyskowej w chmurze użytej.",
"Storage": "Przechowywanie",
"Book deleted: {{title}}": "Książka usunięta: {{title}}",
"Failed to delete book: {{title}}": "Nie udało się usunąć książki: {{title}}",
"Check Updates on Start": "Sprawdź aktualizacje przy starcie",
@@ -163,7 +154,7 @@
"Create a Password": "Utwórz hasło",
"Sign up": "Zarejestruj się",
"Signing up...": "Rejestracja...",
"Dont have an account? Sign up": "Nie masz konta? Zarejestruj się",
"Don't have an account? Sign up": "Nie masz konta? Zarejestruj się",
"Check your email for the confirmation link": "Sprawdź swój email, aby uzyskać link potwierdzający",
"Signing in ...": "Logowanie ...",
"Send a magic link email": "Wyślij link magiczny na email",
@@ -186,37 +177,14 @@
"Sign in with Apple": "Zaloguj się za pomocą Apple",
"Sign in with GitHub": "Zaloguj się za pomocą GitHub",
"Account": "Konto",
"Cloud Storage": "Przestrzeń w chmurze",
"Failed to delete user. Please try again later.": "Nie udało się usunąć użytkownika. Spróbuj ponownie później.",
"Unlimited Offline/Online Reading": "Nieograniczone czytanie offline/online",
"Unlimited Cloud Sync Devices": "Nieograniczona liczba urządzeń synchronizowanych w chmurze",
"Essential Text-to-Speech Voices": "Podstawowe głosy zamiany tekstu na mowę",
"DeepL Free Access": "Darmowy dostęp do DeepL",
"Community Support": "Wsparcie społeczności",
"500 MB Cloud Sync Space": "500 MB przestrzeni synchronizacji w chmurze",
"Includes All Free Tier Benefits": "Zawiera wszystkie korzyści darmowego planu",
"AI Summaries": "Podsumowania AI",
"AI Translations": "Tłumaczenia AI",
"Priority Support": "Priorytetowe wsparcie",
"DeepL Pro Access": "Dostęp do DeepL Pro",
"Expanded Text-to-Speech Voices": "Rozszerzone głosy zamiany tekstu na mowę",
"2000 MB Cloud Sync Space": "2000 MB przestrzeni synchronizacji w chmurze",
"Includes All Plus Tier Benefits": "Zawiera wszystkie korzyści planu Plus",
"Unlimited AI Summaries": "Nieograniczone podsumowania AI",
"Unlimited AI Translations": "Nieograniczone tłumaczenia AI",
"Unlimited DeepL Pro Access": "Nieograniczony dostęp do DeepL Pro",
"Advanced AI Tools": "Zaawansowane narzędzia AI",
"Early Feature Access": "Wczesny dostęp do nowych funkcji",
"10 GB Cloud Sync Space": "10 GB przestrzeni synchronizacji w chmurze",
"Loading profile...": "Ładowanie profilu...",
"Features": "Funkcje",
"Delete Account": "Usuń konto",
"Delete Your Account?": "Usunąć Twoje konto?",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "Tej operacji nie można cofnąć. Wszystkie Twoje dane w chmurze zostaną trwale usunięte.",
"Delete Permanently": "Usuń trwale",
"Free Tier": "Plan darmowy",
"Plus Tier": "Plan Plus",
"Pro Tier": "Plan Pro",
"RTL Direction": "Kierunek RTL",
"Maximum Column Height": "Maksymalna wysokość kolumny",
"Maximum Column Width": "Maksymalna szerokość kolumny",
@@ -225,7 +193,7 @@
"No supported files found. Supported formats: {{formats}}": "Nie znaleziono obsługiwanych plików. Obsługiwane formaty: {{formats}}",
"Drop to Import Books": "Upuść, aby zaimportować książki",
"Custom": "Niestandardowy",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n—William Shakespeare": "Cały świat jest sceną,\nA wszyscy mężczyźni i kobiety są tylko aktorami;\nMają swoje wyjścia i wejścia,\nI jeden człowiek w swoim czasie gra wiele ról,\nJego czyny to siedem wieków.\n\n— William Shakespeare",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "Cały świat jest sceną,\nA wszyscy mężczyźni i kobiety są tylko aktorami;\nMają swoje wyjścia i wejścia,\nI jeden człowiek w swoim czasie gra wiele ról,\nJego czyny to siedem wieków.\n\n— William Shakespeare",
"Custom Theme": "Niestandardowy motyw",
"Theme Name": "Nazwa motywu",
"Text Color": "Kolor tekstu",
@@ -252,9 +220,9 @@
"Auto Import on File Open": "Automatyczne importowanie przy otwieraniu pliku",
"LXGW WenKai GB Screen": "LXGW WenKai SC",
"LXGW WenKai TC": "LXGW WenKai TC",
"No chapters detected.": "Nie wykryto rozdziałów.",
"Failed to parse the EPUB file.": "Nie udało się przeanalizować pliku EPUB.",
"This book format is not supported.": "Ten format książki nie jest obsługiwany.",
"No chapters detected": "Nie wykryto rozdziałów",
"Failed to parse the EPUB file": "Nie udało się przeanalizować pliku EPUB",
"This book format is not supported": "Ten format książki nie jest obsługiwany",
"Unable to fetch the translation. Please log in first and try again.": "Nie można pobrać tłumaczenia. Proszę najpierw się zalogować i spróbować ponownie.",
"Group": "Grupa",
"Always on Top": "Zawsze na wierzchu",
@@ -267,13 +235,13 @@
"Clear Search": "Wyczyść wyszukiwanie",
"Header & Footer": "Nagłówek i stopka",
"Apply also in Scrolled Mode": "Zastosuj również w trybie przewijania",
"A new version of Readest is Available!": "Nowa wersja Readest jest dostępna!",
"A new version of Readest is available!": "Nowa wersja Readest jest dostępna!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Readest {{newVersion}} jest dostępny (zainstalowana wersja {{currentVersion}}).",
"Download and install now?": "Pobierz i zainstaluj teraz?",
"Downloading {{downloaded}} of {{contentLength}}": "Pobieranie {{downloaded}} z {{contentLength}}",
"Download finished": "Pobieranie zakończone",
"DOWNLOAD & INSTALL": "POBIERZ I ZAINSTALUJ",
"Changelog:": "Dziennik zmian:",
"Changelog": "Dziennik zmian",
"Software Update": "Aktualizacja oprogramowania",
"Title": "Tytuł",
"Date Read": "Data przeczytania",
@@ -282,18 +250,15 @@
"Ascending": "Rosnąco",
"Descending": "Malejąco",
"Sort by...": "Sortuj według...",
"Added:": "Data dodania:",
"Format:": "Format:",
"Added": "Data dodania",
"GuanKiapTsingKhai-T": "GuanKiapTsingKhai-T",
"Description:": "Opis:",
"Description": "Opis",
"No description available": "Brak opisu",
"List": "Lista",
"Grid": "Siatka",
"(from 'As You Like It', Act II)": "(z „Jak wam się podoba”, Akt II)",
"Link Color": "Kolor linku",
"Volume Keys for Page Flip": "Klucze głośności do przewracania stron",
"Clicks for Page Flip": "Kliknięcia do przewracania stron",
"Swap Clicks Area": "Zamień obszar kliknięcia",
"Screen": "Ekran",
"Orientation": "Orientacja",
"Portrait": "Portret",
@@ -302,7 +267,7 @@
"Checking for updates...": "Sprawdzanie aktualizacji...",
"Error checking for updates": "Błąd podczas sprawdzania aktualizacji",
"Details": "Szczegóły",
"File Size:": "Rozmiar pliku:",
"File Size": "Rozmiar pliku",
"Auto Detect": "Automatyczne wykrywanie",
"Next Section": "Następna sekcja",
"Previous Section": "Poprzednia sekcja",
@@ -331,9 +296,494 @@
"Disable Translation": "Wyłącz tłumaczenie",
"Scroll": "Przewijaj",
"Overlap Pixels": "Przesunięcie pikseli",
"Click": "Kliknij",
"System Language": "Język systemu",
"Security": "Bezpieczeństwo",
"Allow JavaScript": "Zezwól na JavaScript",
"Enable only if you trust the file.": "Zezwól tylko wtedy, gdy ufasz plikowi."
"Enable only if you trust the file.": "Zezwól tylko wtedy, gdy ufasz plikowi.",
"Sort TOC by Page": "Sortuj spis treści według strony",
"Search in {{count}} Book(s)..._one": "Szukaj w {{count}} książce...",
"Search in {{count}} Book(s)..._few": "Szukaj w {{count}} książkach...",
"Search in {{count}} Book(s)..._many": "Szukaj w {{count}} książkach...",
"Search in {{count}} Book(s)..._other": "Szukaj w {{count}} książkach...",
"No notes match your search": "Nie znaleziono notatek",
"Search notes and excerpts...": "Szukaj notatek...",
"Sign in to Sync": "Zaloguj się",
"Synced at {{time}}": "Sync: {{time}}",
"Never synced": "Brak synchronizacji",
"Show Remaining Time": "Pokazuj pozostały czas",
"{{time}} min left in chapter": "{{time}} min pozostało do końca rozdziału",
"Override Book Color": "Nadpisz kolor książki",
"Login Required": "Wymagane logowanie",
"Quota Exceeded": "Limit przekroczony",
"{{percentage}}% of Daily Translation Characters Used.": "{{percentage}}% użytych znaków tłumaczenia dziennego.",
"Translation Characters": "Znaki tłumaczenia",
"{{engine}}: {{count}} voices_one": "{{engine}}: {{count}} głos",
"{{engine}}: {{count}} voices_few": "{{engine}}: {{count}} głosy",
"{{engine}}: {{count}} voices_many": "{{engine}}: {{count}} głosów",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}} głosu",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "Coś poszło nie tak. Nie martw się, nasz zespół został powiadomiony i pracujemy nad naprawą.",
"Error Details:": "Informacje o błędzie:",
"Try Again": "Spróbuj ponownie",
"Need help?": "Potrzebujesz pomocy?",
"Contact Support": "Skontaktuj się z pomocą techniczną",
"Code Highlighting": "Podświetlanie kodu",
"Enable Highlighting": "Zezwól na podświetlanie",
"Code Language": "Język kodu",
"Top Margin (px)": "Górny margines (px)",
"Bottom Margin (px)": "Dolny margines (px)",
"Right Margin (px)": "Prawy margines (px)",
"Left Margin (px)": "Lewy margines (px)",
"Column Gap (%)": "Odstęp między kolumnami (%)",
"Always Show Status Bar": "Zawsze pokazuj pasek stanu",
"Custom Content CSS": "CSS treści",
"Enter CSS for book content styling...": "Wprowadź CSS dla stylu treści książki...",
"Custom Reader UI CSS": "CSS interfejsu",
"Enter CSS for reader interface styling...": "Wprowadź CSS dla stylu interfejsu czytnika...",
"Crop": "Przytnij",
"Book Covers": "Okładki książek",
"Fit": "Pasuje",
"Reset {{settings}}": "Zresetuj {{settings}}",
"Reset Settings": "Zresetuj ustawienia",
"{{count}} pages left in chapter_one": "Pozostała {{count}} strona w rozdziale",
"{{count}} pages left in chapter_few": "Pozostały {{count}} strony w rozdziale",
"{{count}} pages left in chapter_many": "Pozostało {{count}} stron w rozdziale",
"{{count}} pages left in chapter_other": "Pozostało {{count}} stron w rozdziale",
"Show Remaining Pages": "Pokaż pozostałe strony",
"Source Han Serif CN VF": "Source Han Serif",
"Huiwen-mincho": "Huiwen Mincho",
"KingHwa_OldSong": "KingHwa Song",
"Manage Subscription": "Zarządzaj subskrypcją",
"Coming Soon": "Wkrótce dostępne",
"Upgrade to {{plan}}": "Uaktualnij do {{plan}}",
"Upgrade to Plus or Pro": "Uaktualnij do Plus lub Pro",
"Current Plan": "Obecny plan",
"Plan Limits": "Limity planu",
"Processing your payment...": "Przetwarzanie płatności...",
"Please wait while we confirm your subscription.": "Proszę czekać, potwierdzamy subskrypcję.",
"Payment Processing": "Przetwarzanie płatności",
"Your payment is being processed. This usually takes a few moments.": "Twoja płatność jest przetwarzana. Zwykle trwa to kilka chwil.",
"Payment Failed": "Płatność nie powiodła się",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "Nie udało się przetworzyć subskrypcji. Spróbuj ponownie lub skontaktuj się z pomocą techniczną, jeśli problem będzie się powtarzać.",
"Back to Profile": "Powrót do profilu",
"Subscription Successful!": "Subskrypcja zakończona sukcesem!",
"Thank you for your subscription! Your payment has been processed successfully.": "Dziękujemy za subskrypcję! Twoja płatność została pomyślnie przetworzona.",
"Email:": "E-mail:",
"Plan:": "Plan:",
"Amount:": "Kwota:",
"Go to Library": "Przejdź do biblioteki",
"Need help? Contact our support team at support@readest.com": "Potrzebujesz pomocy? Skontaktuj się z naszym zespołem wsparcia: support@readest.com",
"Free Plan": "Bezpłatny plan",
"month": "miesiąc",
"AI Translations (per day)": "Tłumaczenia AI (na dzień)",
"Plus Plan": "Plan Plus",
"Includes All Free Plan Benefits": "Zawiera wszystkie korzyści planu darmowego",
"Pro Plan": "Plan Pro",
"More AI Translations": "Więcej tłumaczeń AI",
"Complete Your Subscription": "Ukończ subskrypcję",
"{{percentage}}% of Cloud Sync Space Used.": "Użyto {{percentage}}% przestrzeni synchronizacji w chmurze.",
"Cloud Sync Storage": "Miejsce w chmurze",
"Disable": "Wyłącz",
"Enable": "Włącz",
"Upgrade to Readest Premium": "Uaktualnij do Readest Premium",
"Show Source Text": "Pokaż tekst źródłowy",
"Cross-Platform Sync": "Synchronizacja Między Platformami",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "Synchronizuj płynnie swoją bibliotekę, postęp, zaznaczenia i notatki na wszystkich urządzeniach—nigdy więcej nie zgub swojego miejsca.",
"Customizable Reading": "Personalizowane Czytanie",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "Personalizuj każdy szczegół dzięki regulowanym czcionkom, układom, motywom i zaawansowanym ustawieniom wyświetlania dla idealnego doświadczenia czytania.",
"AI Read Aloud": "AI Czytanie Na Głos",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "Ciesz się czytaniem bez użycia rąk dzięki naturalnie brzmiącym głosom AI, które ożywiają twoje książki.",
"AI Translations": "Tłumaczenia AI",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "Tłumacz dowolny tekst natychmiast dzięki mocy Google, Azure lub DeepL—rozumiej treści w każdym języku.",
"Connect with fellow readers and get help fast in our friendly community channels.": "Połącz się z innymi czytelnikami i uzyskaj szybką pomoc na naszych przyjaznych kanałach społeczności.",
"Unlimited AI Read Aloud Hours": "Nielimitowane Godziny AI Czytania Na Głos",
"Listen without limits—convert as much text as you like into immersive audio.": "Słuchaj bez ograniczeń—przekształć tyle tekstu, ile chcesz, w wciągające audio.",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "Odblokuj ulepszone możliwości tłumaczenia z większym dziennym użyciem i zaawansowanymi opcjami.",
"DeepL Pro Access": "Dostęp do DeepL Pro",
"Enjoy faster responses and dedicated assistance whenever you need help.": "Ciesz się szybszymi odpowiedziami i dedykowaną pomocą, kiedy tylko potrzebujesz wsparcia.",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "Osiągnięto dzienny limit tłumaczeń. Uaktualnij swój plan, aby kontynuować korzystanie z tłumaczeń AI.",
"Includes All Plus Plan Benefits": "Zawiera Wszystkie Korzyści Planu Plus",
"Early Feature Access": "Wcześniejszy Dostęp do Funkcji",
"Be the first to explore new features, updates, and innovations before anyone else.": "Odkrywaj nowe funkcje, aktualizacje i innowacje przed innymi.",
"Advanced AI Tools": "Zaawansowane Narzędzia AI",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "Wykorzystuj potężne narzędzia AI do inteligentnego czytania, tłumaczenia i odkrywania treści.",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "Tłumacz do 100 000 znaków dziennie z najdokładniejszą dostępną maszyną tłumaczeniową.",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "Tłumacz do 500 000 znaków dziennie z najdokładniejszą dostępną maszyną tłumaczeniową.",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "Bezpiecznie przechowuj i uzyskuj dostęp do całej kolekcji czytelniczej z do 5 GB pamięci w chmurze.",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "Bezpiecznie przechowuj i uzyskuj dostęp do całej kolekcji czytelniczej z do 20 GB pamięci w chmurze.",
"Deleted cloud backup of the book: {{title}}": "Usunięto kopię zapasową książki w chmurze: {{title}}",
"Are you sure to delete the cloud backup of the selected book?": "Czy na pewno chcesz usunąć kopię zapasową chmury wybranej książki?",
"What's New in Readest": "Co nowego w Readest",
"Enter book title": "Wprowadź tytuł książki",
"Subtitle": "Podtytuł",
"Enter book subtitle": "Wprowadź podtytuł książki",
"Enter author name": "Wprowadź imię autora",
"Series": "Seria",
"Enter series name": "Wprowadź nazwę serii",
"Series Index": "Numer w serii",
"Enter series index": "Wprowadź numer w serii",
"Total in Series": "Łącznie w serii",
"Enter total books in series": "Wprowadź łączną liczbę książek w serii",
"Enter publisher": "Wprowadź wydawcę",
"Publication Date": "Data publikacji",
"Identifier": "Identyfikator",
"Enter book description": "Wprowadź opis książki",
"Change cover image": "Zmień obraz okładki",
"Replace": "Zastąp",
"Unlock cover": "Odblokuj okładkę",
"Lock cover": "Zablokuj okładkę",
"Auto-Retrieve Metadata": "Automatycznie pobierz metadane",
"Auto-Retrieve": "Automatyczne pobieranie",
"Unlock all fields": "Odblokuj wszystkie pola",
"Unlock All": "Odblokuj wszystko",
"Lock all fields": "Zablokuj wszystkie pola",
"Lock All": "Zablokuj wszystko",
"Reset": "Resetuj",
"Edit Metadata": "Edytuj metadane",
"Locked": "Zablokowane",
"Select Metadata Source": "Wybierz źródło metadanych",
"Keep manual input": "Zachowaj wprowadzenie ręczne",
"Google Books": "Google Books",
"Open Library": "Open Library",
"Fiction, Science, History": "Beletrystyka, Nauka, Historia",
"Open Book in New Window": "Otwórz książkę w nowym oknie",
"Voices for {{lang}}": "{{lang}} Głosy",
"Yandex Translate": "Yandex Tłumacz",
"YYYY or YYYY-MM-DD": "YYYY lub YYYY-MM-DD",
"Restore Purchase": "Przywróć zakup",
"No purchases found to restore.": "Nie znaleziono zakupów do przywrócenia.",
"Failed to restore purchases.": "Nie udało się przywrócić zakupów.",
"Failed to manage subscription.": "Nie udało się zarządzać subskrypcją.",
"Failed to load subscription plans.": "Nie udało się załadować planów subskrypcyjnych.",
"year": "rok",
"Failed to create checkout session": "Nie udało się utworzyć sesji zakupu",
"Storage": "Przechowywanie",
"Terms of Service": "Warunki korzystania z usługi",
"Privacy Policy": "Polityka prywatności",
"Disable Double Click": "Wyłącz podwójne kliknięcie",
"TTS not supported for this document": "TTS nie jest obsługiwane dla tego dokumentu",
"Reset Password": "Zresetuj hasło",
"Show Reading Progress": "Pokazuj postęp czytania",
"Reading Progress Style": "Styl postępu czytania",
"Page Number": "Numer strony",
"Percentage": "Procent",
"Deleted local copy of the book: {{title}}": "Usunięto lokalną kopię książki: {{title}}",
"Failed to delete cloud backup of the book: {{title}}": "Nie udało się usunąć kopii zapasowej w chmurze książki: {{title}}",
"Failed to delete local copy of the book: {{title}}": "Nie udało się usunąć lokalnej kopii książki: {{title}}",
"Are you sure to delete the local copy of the selected book?": "Czy na pewno chcesz usunąć lokalną kopię wybranej książki?",
"Remove from Cloud & Device": "Usuń z chmury i urządzenia",
"Remove from Cloud Only": "Usuń tylko z chmury",
"Remove from Device Only": "Usuń tylko z urządzenia",
"Disconnected": "Rozłączono",
"KOReader Sync Settings": "Ustawienia synchronizacji KOReader",
"Sync Strategy": "Strategia synchronizacji",
"Ask on conflict": "Pytaj w przypadku konfliktu",
"Always use latest": "Zawsze używaj najnowszej",
"Send changes only": "Wyślij tylko zmiany",
"Receive changes only": "Odbierz tylko zmiany",
"Checksum Method": "Metoda sumy kontrolnej",
"File Content (recommended)": "Zawartość pliku (zalecane)",
"File Name": "Nazwa pliku",
"Device Name": "Nazwa urządzenia",
"Connect to your KOReader Sync server.": "Połącz z serwerem synchronizacji KOReader.",
"Server URL": "Adres URL serwera",
"Username": "Nazwa użytkownika",
"Your Username": "Twoja nazwa użytkownika",
"Password": "Hasło",
"Connect": "Połącz",
"KOReader Sync": "Synchronizacja KOReader",
"Sync Conflict": "Konflikt synchronizacji",
"Sync reading progress from \"{{deviceName}}\"?": "Synchronizować postęp czytania z \"{{deviceName}}\"?",
"another device": "inne urządzenie",
"Local Progress": "Postęp lokalny",
"Remote Progress": "Postęp zdalny",
"Page {{page}} of {{total}} ({{percentage}}%)": "Strona {{page}} z {{total}} ({{percentage}}%)",
"Current position": "Bieżąca pozycja",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "Około strona {{page}} z {{total}} ({{percentage}}%)",
"Approximately {{percentage}}%": "Około {{percentage}}%",
"Failed to connect": "Nie udało się połączyć",
"Sync Server Connected": "Serwer synchronizacji połączony",
"Sync as {{userDisplayName}}": "Synchronizuj jako {{userDisplayName}}",
"Custom Fonts": "Niestandardowe Czcionki",
"Cancel Delete": "Anuluj Usuwanie",
"Import Font": "Importuj Czcionkę",
"Delete Font": "Usuń Czcionkę",
"Tips": "Wskazówki",
"Custom fonts can be selected from the Font Face menu": "Niestandardowe czcionki można wybrać z menu Czcionka",
"Manage Custom Fonts": "Zarządzaj Niestandardowymi Czcionkami",
"Select Files": "Wybierz Pliki",
"Select Image": "Wybierz Obraz",
"Select Video": "Wybierz Wideo",
"Select Audio": "Wybierz Audio",
"Select Fonts": "Wybierz Czcionki",
"Supported font formats: .ttf, .otf, .woff, .woff2": "Obsługiwane formaty czcionek: .ttf, .otf, .woff, .woff2",
"Push Progress": "Wyślij postęp",
"Pull Progress": "Pobierz postęp",
"Previous Paragraph": "Poprzedni akapit",
"Previous Sentence": "Poprzednie zdanie",
"Pause": "Pauza",
"Play": "Odtwórz",
"Next Sentence": "Następne zdanie",
"Next Paragraph": "Następny akapit",
"Separate Cover Page": "Osobna strona okładki",
"Resize Notebook": "Zmień rozmiar notatnika",
"Resize Sidebar": "Zmień rozmiar paska bocznego",
"Get Help from the Readest Community": "Uzyskaj pomoc od społeczności Readest",
"Remove cover image": "Usuń obraz okładki",
"Bookshelf": "Półka na książki",
"View Menu": "Pokaż menu",
"Settings Menu": "Menu ustawień",
"View account details and quota": "Zobacz szczegóły konta i limit",
"Library Header": "Nagłówek biblioteki",
"Book Content": "Zawartość książki",
"Footer Bar": "Pasek stopki",
"Header Bar": "Pasek nagłówka",
"View Options": "Opcje widoku",
"Book Menu": "Menu książki",
"Search Options": "Opcje wyszukiwania",
"Close": "Zamknij",
"Delete Book Options": "Opcje usuwania książki",
"ON": "WŁĄCZONE",
"OFF": "WYŁĄCZONE",
"Reading Progress": "Postęp czytania",
"Page Margin": "Margines strony",
"Remove Bookmark": "Usuń zakładkę",
"Add Bookmark": "Dodaj zakładkę",
"Books Content": "Zawartość książek",
"Jump to Location": "Przejdź do lokalizacji",
"Unpin Notebook": "Odczep notatnik",
"Pin Notebook": "Przypnij notatnik",
"Hide Search Bar": "Ukryj pasek wyszukiwania",
"Show Search Bar": "Pokaż pasek wyszukiwania",
"On {{current}} of {{total}} page": "Na {{current}} z {{total}} strony",
"Section Title": "Tytuł sekcji",
"Decrease": "Zmniejsz",
"Increase": "Zwiększ",
"Settings Panels": "Panele ustawień",
"Settings": "Ustawienia",
"Unpin Sidebar": "Odczep pasek boczny",
"Pin Sidebar": "Przypnij pasek boczny",
"Toggle Sidebar": "Włącz/Wyłącz pasek boczny",
"Toggle Translation": "Włącz/Wyłącz tłumaczenie",
"Translation Disabled": "Tłumaczenie wyłączone",
"Minimize": "Minimalizuj",
"Maximize or Restore": "Maksymalizuj lub Przywróć",
"Exit Parallel Read": "Wyjdź z czytania równoległego",
"Enter Parallel Read": "Wejdź w czytanie równoległe",
"Zoom Level": "Poziom powiększenia",
"Zoom Out": "Zoom Wydłuż",
"Reset Zoom": "Resetuj Zoom",
"Zoom In": "Zoom Skróć",
"Zoom Mode": "Tryb Zoom",
"Single Page": "Pojedyncza Strona",
"Auto Spread": "Automatyczne Rozprzestrzenianie",
"Fit Page": "Dopasuj Stronę",
"Fit Width": "Dopasuj Szerokość",
"Failed to select directory": "Nie udało się wybrać katalogu",
"The new data directory must be different from the current one.": "Nowy katalog danych musi różnić się od obecnego.",
"Migration failed: {{error}}": "Migracja nie powiodła się: {{error}}",
"Change Data Location": "Zmień lokalizację danych",
"Current Data Location": "Bieżąca lokalizacja danych",
"Total size: {{size}}": "Całkowity rozmiar: {{size}}",
"Calculating file info...": "Obliczanie informacji o pliku...",
"New Data Location": "Nowa lokalizacja danych",
"Choose Different Folder": "Wybierz inny folder",
"Choose New Folder": "Wybierz nowy folder",
"Migrating data...": "Migracja danych...",
"Copying: {{file}}": "Kopiowanie: {{file}}",
"{{current}} of {{total}} files": "{{current}} z {{total}} plików",
"Migration completed successfully!": "Migracja zakończona pomyślnie!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "Twoje dane zostały przeniesione do nowej lokalizacji. Proszę zrestartować aplikację, aby zakończyć proces.",
"Migration failed": "Migracja nie powiodła się",
"Important Notice": "Ważne powiadomienie",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "To przeniesie wszystkie dane aplikacji do nowej lokalizacji. Upewnij się, że docelowy folder ma wystarczająco dużo wolnego miejsca.",
"Restart App": "Zrestartuj aplikację",
"Start Migration": "Rozpocznij migrację",
"Advanced Settings": "Ustawienia zaawansowane",
"File count: {{size}}": "Liczba plików: {{size}}",
"Background Read Aloud": "Czytanie na głos w tle",
"Ready to read aloud": "Gotowy do przeczytania na głos",
"Read Aloud": "Czytaj na głos",
"Screen Brightness": "Jasność ekranu",
"Background Image": "Obraz tła",
"Import Image": "Importuj obraz",
"Opacity": "Przezroczystość",
"Size": "Rozmiar",
"Cover": "Okładka",
"Contain": "Zawierać",
"{{number}} pages left in chapter": "Pozostało {{number}} stron w rozdziale",
"Device": "Urządzenie",
"E-Ink Mode": "Tryb E-Ink",
"Highlight Colors": "Kolory wyróżnień",
"Auto Screen Brightness": "Automatyczna jasność ekranu",
"Pagination": "Stronicowanie",
"Disable Double Tap": "Wyłącz podwójne dotknięcie",
"Tap to Paginate": "Dotknij, aby stronicować",
"Click to Paginate": "Kliknij, aby stronicować",
"Tap Both Sides": "Dotknij obu stron",
"Click Both Sides": "Kliknij obu stron",
"Swap Tap Sides": "Wymień Tap Zewnętrzne",
"Swap Click Sides": "Wymień Click Zewnętrzne",
"Source and Translated": "Źródło i Tłumaczenie",
"Translated Only": "Tylko Tłumaczenie",
"Source Only": "Tylko Źródło",
"TTS Text": "Tekst TTS",
"The book file is corrupted": "Plik książki jest uszkodzony",
"The book file is empty": "Plik książki jest pusty",
"Failed to open the book file": "Nie udało się otworzyć pliku książki",
"On-Demand Purchase": "Zakup na żądanie",
"Full Customization": "Pełna Personalizacja",
"Lifetime Plan": "Plan na Całe Życie",
"One-Time Payment": "Jednorazowa Płatność",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "Dokonaj jednorazowej płatności, aby cieszyć się dożywotnim dostępem do określonych funkcji na wszystkich urządzeniach. Kupuj konkretne funkcje lub usługi tylko wtedy, gdy ich potrzebujesz.",
"Expand Cloud Sync Storage": "Rozszerz Przechowywanie w Chmurze",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "Rozszerz swoją przestrzeń w chmurze na zawsze dzięki jednorazowemu zakupowi. Każdy dodatkowy zakup dodaje więcej miejsca.",
"Unlock All Customization Options": "Odblokuj Wszystkie Opcje Personalizacji",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "Odblokuj dodatkowe motywy, czcionki, opcje układu oraz funkcje czytania na głos, tłumacze, usługi przechowywania w chmurze.",
"Purchase Successful!": "Zakup Udany!",
"lifetime": "dożywotnio",
"Thank you for your purchase! Your payment has been processed successfully.": "Dziękujemy za zakup! Twoja płatność została pomyślnie przetworzona.",
"Order ID:": "ID zamówienia:",
"TTS Highlighting": "Wyróżnianie TTS",
"Style": "Styl",
"Underline": "Podkreślenie",
"Strikethrough": "Przekreślenie",
"Squiggly": "Falista linia",
"Outline": "Obrys",
"Save Current Color": "Zapisz bieżący kolor",
"Quick Colors": "Szybkie kolory",
"Highlighter": "Zakreślacz",
"Save Book Cover": "Zapisz okładkę książki",
"Auto-save last book cover": "Automatyczne zapisywanie ostatniej okładki książki",
"Back": "Wstecz",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "E-mail potwierdzający został wysłany! Sprawdź swój stary i nowy adres e-mail, aby potwierdzić zmianę.",
"Failed to update email": "Nie udało się zaktualizować e-maila",
"New Email": "Nowy e-mail",
"Your new email": "Twój nowy adres e-mail",
"Updating email ...": "Aktualizowanie e-maila...",
"Update email": "Zaktualizuj e-mail",
"Current email": "Obecny e-mail",
"Update Email": "Zaktualizuj e-mail",
"All": "Wszystkie",
"Unable to open book": "Nie można otworzyć książki",
"Punctuation": "Interpunkcja",
"Replace Quotation Marks": "Zamień cudzysłowy",
"Enabled only in vertical layout.": "Włączone tylko w układzie pionowym.",
"No Conversion": "Brak konwersji",
"Simplified to Traditional": "Uproszczony → Tradycyjny",
"Traditional to Simplified": "Tradycyjny → Uproszczony",
"Simplified to Traditional (Taiwan)": "Uproszczony → Tradycyjny (Tajwan)",
"Simplified to Traditional (Hong Kong)": "Uproszczony → Tradycyjny (Hongkong)",
"Simplified to Traditional (Taiwan), with phrases": "Uproszczony → Tradycyjny (Tajwan • frazy)",
"Traditional (Taiwan) to Simplified": "Tradycyjny (Tajwan) → Uproszczony",
"Traditional (Hong Kong) to Simplified": "Tradycyjny (Hongkong) → Uproszczony",
"Traditional (Taiwan) to Simplified, with phrases": "Tradycyjny (Tajwan • frazy) → Uproszczony",
"Convert Simplified and Traditional Chinese": "Konwertuj chiński uproszczony/tradycyjny",
"Convert Mode": "Tryb konwersji",
"Failed to auto-save book cover for lock screen: {{error}}": "Nie udało się automatycznie zapisać okładki książki dla ekranu blokady: {{error}}",
"Download from Cloud": "Pobierz z chmury",
"Upload to Cloud": "Prześlij do chmury",
"Clear Custom Fonts": "Wyczyść niestandardowe czcionki",
"Columns": "Kolumny",
"OPDS Catalogs": "Katalogi OPDS",
"Adding LAN addresses is not supported in the web app version.": "Dodawanie adresów LAN nie jest obsługiwane w wersji webowej.",
"Invalid OPDS catalog. Please check the URL.": "Nieprawidłowy katalog OPDS. Sprawdź URL.",
"Browse and download books from online catalogs": "Przeglądaj i pobieraj książki z katalogów online",
"My Catalogs": "Moje katalogi",
"Add Catalog": "Dodaj katalog",
"No catalogs yet": "Brak katalogów",
"Add your first OPDS catalog to start browsing books": "Dodaj pierwszy katalog OPDS, aby rozpocząć przeglądanie książek",
"Add Your First Catalog": "Dodaj pierwszy katalog",
"Browse": "Przeglądaj",
"Popular Catalogs": "Popularne katalogi",
"Add": "Dodaj",
"Add OPDS Catalog": "Dodaj katalog OPDS",
"Catalog Name": "Nazwa katalogu",
"My Calibre Library": "Moja biblioteka Calibre",
"OPDS URL": "URL OPDS",
"Username (optional)": "Nazwa użytkownika (opcjonalnie)",
"Password (optional)": "Hasło (opcjonalnie)",
"Description (optional)": "Opis (opcjonalnie)",
"A brief description of this catalog": "Krótki opis katalogu",
"Validating...": "Weryfikacja...",
"View All": "Pokaż wszystkie",
"Forward": "Dalej",
"Home": "Strona główna",
"{{count}} items_one": "{{count}} element",
"{{count}} items_few": "{{count}} elementy",
"{{count}} items_many": "{{count}} elementów",
"{{count}} items_other": "{{count}} elementu",
"Download completed": "Pobieranie zakończone",
"Download failed": "Pobieranie nie powiodło się",
"Open Access": "Dostęp otwarty",
"Borrow": "Wypożycz",
"Buy": "Kup",
"Subscribe": "Subskrybuj",
"Sample": "Próbka",
"Download": "Pobierz",
"Open & Read": "Otwórz i czytaj",
"Tags": "Tagi",
"Tag": "Tag",
"First": "Pierwsza",
"Previous": "Poprzednia",
"Next": "Następna",
"Last": "Ostatnia",
"Cannot Load Page": "Nie można załadować strony",
"An error occurred": "Wystąpił błąd",
"Online Library": "Biblioteka online",
"URL must start with http:// or https://": "URL musi zaczynać się od http:// lub https://",
"Title, Author, Tag, etc...": "Tytuł, Autor, Tag, itp...",
"Query": "Zapytanie",
"Subject": "Temat",
"Enter {{terms}}": "Wprowadź {{terms}}",
"No search results found": "Nie znaleziono wyników wyszukiwania",
"Failed to load OPDS feed: {{status}} {{statusText}}": "Nie udało się załadować kanału OPDS: {{status}} {{statusText}}",
"Search in {{title}}": "Szukaj w {{title}}",
"Manage Storage": "Zarządzaj pamięcią",
"Failed to load files": "Nie udało się wczytać plików",
"Deleted {{count}} file(s)_one": "Usunięto {{count}} plik",
"Deleted {{count}} file(s)_few": "Usunięto {{count}} pliki",
"Deleted {{count}} file(s)_many": "Usunięto {{count}} plików",
"Deleted {{count}} file(s)_other": "Usunięto {{count}} pliku",
"Failed to delete {{count}} file(s)_one": "Nie udało się usunąć {{count}} pliku",
"Failed to delete {{count}} file(s)_few": "Nie udało się usunąć {{count}} plików",
"Failed to delete {{count}} file(s)_many": "Nie udało się usunąć {{count}} plików",
"Failed to delete {{count}} file(s)_other": "Nie udało się usunąć {{count}} pliku",
"Failed to delete files": "Nie udało się usunąć plików",
"Total Files": "Łączna liczba plików",
"Total Size": "Łączny rozmiar",
"Quota": "Limit",
"Used": "Użyto",
"Files": "Pliki",
"Search files...": "Szukaj plików...",
"Newest First": "Najnowsze najpierw",
"Oldest First": "Najstarsze najpierw",
"Largest First": "Największe najpierw",
"Smallest First": "Najmniejsze najpierw",
"Name A-Z": "Nazwa A-Z",
"Name Z-A": "Nazwa Z-A",
"{{count}} selected_one": "Wybrano {{count}} plik",
"{{count}} selected_few": "Wybrano {{count}} pliki",
"{{count}} selected_many": "Wybrano {{count}} plików",
"{{count}} selected_other": "Wybrano {{count}} pliku",
"Delete Selected": "Usuń wybrane",
"Created": "Utworzono",
"No files found": "Nie znaleziono plików",
"No files uploaded yet": "Nie przesłano jeszcze żadnych plików",
"files": "pliki",
"Page {{current}} of {{total}}": "Strona {{current}} z {{total}}",
"Are you sure to delete {{count}} selected file(s)?_one": "Czy na pewno chcesz usunąć {{count}} wybrany plik?",
"Are you sure to delete {{count}} selected file(s)?_few": "Czy na pewno chcesz usunąć {{count}} wybrane pliki?",
"Are you sure to delete {{count}} selected file(s)?_many": "Czy na pewno chcesz usunąć {{count}} wybranych plików?",
"Are you sure to delete {{count}} selected file(s)?_other": "Czy na pewno chcesz usunąć {{count}} wybrany plik?",
"Cloud Storage Usage": "Użycie pamięci w chmurze",
"Rename Group": "Zmień nazwę grupy",
"From Directory": "Z katalogu",
"Successfully imported {{count}} book(s)_one": "Pomyślnie zaimportowano 1 książkę",
"Successfully imported {{count}} book(s)_few": "Pomyślnie zaimportowano {{count}} książki",
"Successfully imported {{count}} book(s)_many": "Pomyślnie zaimportowano {{count}} książek",
"Successfully imported {{count}} book(s)_other": "Pomyślnie zaimportowano {{count}} książek",
"Count": "Liczba",
"Start Page": "Strona startowa",
"Search in OPDS Catalog...": "Szukaj w katalogu OPDS...",
"Please log in to use advanced TTS features.": "Zaloguj się, aby korzystać z zaawansowanych funkcji TTS."
}
@@ -8,7 +8,6 @@
"Auto Mode": "Modo Automático",
"Behavior": "Comportamento",
"Book": "Livro",
"Book Cover": "Capa do Livro",
"Bookmark": "Marcador",
"Cancel": "Cancelar",
"Chapter": "Capítulo",
@@ -18,7 +17,6 @@
"Confirm Deletion": "Confirmar Exclusão",
"Copied to notebook": "Copiado para o caderno",
"Copy": "Copiar",
"Custom CSS": "CSS Personalizado",
"Dark Mode": "Modo Escuro",
"Default": "Padrão",
"Default Font": "Fonte Padrão",
@@ -28,7 +26,6 @@
"Dictionary": "Dicionário",
"Download Readest": "Baixar Readest",
"Edit": "Editar",
"Enter your custom CSS here...": "Insira seu CSS personalizado aqui...",
"Excerpts": "Trechos",
"Failed to import book(s): {{filenames}}": "Falha ao importar livro(s): {{filenames}}",
"Fast": "Rápido",
@@ -48,7 +45,6 @@
"Horizontal Direction": "Direção Horizontal",
"Hyphenation": "Hifenização",
"Import Books": "Importar Livros",
"Language:": "Idioma:",
"Layout": "Layout",
"Light Mode": "Modo Claro",
"Loading...": "Carregando...",
@@ -70,8 +66,8 @@
"Paging Animation": "Animação de Página",
"Paragraph": "Parágrafo",
"Parallel Read": "Leitura Paralela",
"Published:": "Publicado:",
"Publisher:": "Editora:",
"Published": "Publicado",
"Publisher": "Editora",
"Reading Progress Synced": "Progresso de leitura sincronizado",
"Reload Page": "Recarregar Página",
"Reveal in File Explorer": "Mostrar no Explorador de Arquivos",
@@ -85,7 +81,6 @@
"Search...": "Pesquisar...",
"Select Book": "Selecionar Livro",
"Select Books": "Selecionar livros",
"Select Multiple Books": "Selecionar múltiplos livros",
"Sepia": "Sépia",
"Serif Font": "Fonte Serif",
"Show Book Details": "Mostrar Detalhes do Livro",
@@ -96,16 +91,15 @@
"Slow": "Lento",
"Solarized": "Solarizado",
"Speak": "Falar",
"Subjects:": "Assuntos:",
"Subjects": "Assuntos",
"System Fonts": "Fontes do Sistema",
"TTS not supported in this device": "TTS não suportado neste dispositivo",
"Theme Color": "Cor do Tema",
"Theme Mode": "Modo do Tema",
"Translate": "Traduzir",
"Translated Text": "Texto Traduzido",
"Unknown": "Desconhecido",
"Untitled": "Sem Título",
"Updated:": "Atualizado:",
"Updated": "Atualizado",
"Version {{version}}": "Versão {{version}}",
"Vertical Direction": "Direção Vertical",
"Welcome to your library. You can import your books here and read them anytime.": "Bem-vindo à sua biblioteca. Você pode importar seus livros aqui e lê-los a qualquer momento.",
@@ -114,8 +108,6 @@
"Your Library": "Sua Biblioteca",
"TTS not supported for PDF": "TTS não suportado para PDF",
"Override Book Font": "Sobrescrever Fonte do Livro",
"Vertical Margins (px)": "Margens Verticais (px)",
"Horizontal Margins (%)": "Margens Horizontais (%)",
"Apply to All Books": "Aplicar a todos os livros",
"Apply to This Book": "Aplicar a este livro",
"Unable to fetch the translation. Try again later.": "Não foi possível buscar a tradução. Tente novamente mais tarde.",
@@ -124,14 +116,13 @@
"Book Details": "Detalhes do Livro",
"From Local File": "Do arquivo local",
"TOC": "Índice",
"Table of Contents": "Índice",
"Book uploaded: {{title}}": "Livro enviado: {{title}}",
"Failed to upload book: {{title}}": "Falha ao enviar livro: {{title}}",
"Book downloaded: {{title}}": "Livro baixado: {{title}}",
"Failed to download book: {{title}}": "Falha ao baixar livro: {{title}}",
"Upload Book": "Enviar Livro",
"Auto Upload Books to Cloud": "Enviar Livros para a Nuvem Automaticamente",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% do Armazenamento na Nuvem Usado.",
"Storage": "Armazenamento",
"Book deleted: {{title}}": "Livro excluído: {{title}}",
"Failed to delete book: {{title}}": "Falha ao excluir livro: {{title}}",
"Check Updates on Start": "Verificar Atualizações ao Iniciar",
@@ -163,7 +154,7 @@
"Create a Password": "Criar uma senha",
"Sign up": "Cadastrar-se",
"Signing up...": "Cadastrando...",
"Dont have an account? Sign up": "Não tem uma conta? Cadastre-se",
"Don't have an account? Sign up": "Não tem uma conta? Cadastre-se",
"Check your email for the confirmation link": "Verifique seu e-mail para o link de confirmação",
"Signing in ...": "Entrando ...",
"Send a magic link email": "Enviar um link mágico por e-mail",
@@ -186,37 +177,14 @@
"Sign in with Apple": "Entrar com o Apple",
"Sign in with GitHub": "Entrar com o GitHub",
"Account": "Conta",
"Cloud Storage": "Armazenamento na nuvem",
"Failed to delete user. Please try again later.": "Falha ao excluir usuário. Por favor, tente novamente mais tarde.",
"Unlimited Offline/Online Reading": "Leitura offline/online ilimitada",
"Unlimited Cloud Sync Devices": "Sincronização ilimitada de dispositivos na nuvem",
"Essential Text-to-Speech Voices": "Vozes essenciais de texto para fala",
"DeepL Free Access": "Acesso gratuito ao DeepL",
"Community Support": "Suporte da comunidade",
"500 MB Cloud Sync Space": "500 MB de espaço de sincronização na nuvem",
"Includes All Free Tier Benefits": "Inclui todos os benefícios do plano gratuito",
"AI Summaries": "Resumos de IA",
"AI Translations": "Traduções de IA",
"Priority Support": "Suporte prioritário",
"DeepL Pro Access": "Acesso ao DeepL Pro",
"Expanded Text-to-Speech Voices": "Vozes ampliadas de texto para fala",
"2000 MB Cloud Sync Space": "2000 MB de espaço de sincronização na nuvem",
"Includes All Plus Tier Benefits": "Inclui todos os benefícios do plano Plus",
"Unlimited AI Summaries": "Resumos de IA ilimitados",
"Unlimited AI Translations": "Traduções de IA ilimitadas",
"Unlimited DeepL Pro Access": "Acesso ilimitado ao DeepL Pro",
"Advanced AI Tools": "Ferramentas avançadas de IA",
"Early Feature Access": "Acesso antecipado a recursos",
"10 GB Cloud Sync Space": "10 GB de espaço de sincronização na nuvem",
"Loading profile...": "Carregando perfil...",
"Features": "Recursos",
"Delete Account": "Excluir conta",
"Delete Your Account?": "Excluir sua conta?",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "Esta ação não pode ser desfeita. Todos os seus dados na nuvem serão excluídos permanentemente.",
"Delete Permanently": "Excluir permanentemente",
"Free Tier": "Plano gratuito",
"Plus Tier": "Plano Plus",
"Pro Tier": "Plano Pro",
"RTL Direction": "Direção RTL",
"Maximum Column Height": "Altura Máxima da Coluna",
"Maximum Column Width": "Largura Máxima da Coluna",
@@ -225,7 +193,7 @@
"No supported files found. Supported formats: {{formats}}": "Nenhum arquivo suportado encontrado. Formatos suportados: {{formats}}",
"Drop to Import Books": "Arraste para Importar Livros",
"Custom": "Personalizado",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n—William Shakespeare": "Todo o mundo é um palco,\nE todos os homens e mulheres são meros atores;\nEles têm suas saídas e suas entradas,\nE um homem em seu tempo desempenha muitos papéis,\nSeus atos sendo sete idades.\n\n— William Shakespeare",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "Todo o mundo é um palco,\nE todos os homens e mulheres são meros atores;\nEles têm suas saídas e suas entradas,\nE um homem em seu tempo desempenha muitos papéis,\nSeus atos sendo sete idades.\n\n— William Shakespeare",
"Custom Theme": "Tema Personalizado",
"Theme Name": "Nome do Tema",
"Text Color": "Cor do Texto",
@@ -252,9 +220,9 @@
"Auto Import on File Open": "Importação Automática ao Abrir Arquivo",
"LXGW WenKai GB Screen": "LXGW WenKai SC",
"LXGW WenKai TC": "LXGW WenKai TC",
"No chapters detected.": "Nenhum capítulo detectado.",
"Failed to parse the EPUB file.": "Falha ao analisar o arquivo EPUB.",
"This book format is not supported.": "Este formato de livro não é suportado.",
"No chapters detected": "Nenhum capítulo detectado",
"Failed to parse the EPUB file": "Falha ao analisar o arquivo EPUB",
"This book format is not supported": "Este formato de livro não é suportado",
"Unable to fetch the translation. Please log in first and try again.": "Não foi possível buscar a tradução. Faça login primeiro e tente novamente.",
"Group": "Grupo",
"Always on Top": "Sempre no Topo",
@@ -267,13 +235,13 @@
"Clear Search": "Limpar Pesquisa",
"Header & Footer": "Cabeçalho e Rodapé",
"Apply also in Scrolled Mode": "Aplicar também no Modo Rolado",
"A new version of Readest is Available!": "Uma nova versão do Readest está disponível!",
"A new version of Readest is available!": "Uma nova versão do Readest está disponível!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Readest {{newVersion}} está disponível (versão instalada {{currentVersion}}).",
"Download and install now?": "Baixar e instalar agora?",
"Downloading {{downloaded}} of {{contentLength}}": "Baixando {{downloaded}} de {{contentLength}}",
"Download finished": "Download concluído",
"DOWNLOAD & INSTALL": "BAIXAR E INSTALAR",
"Changelog:": "Notas de versão:",
"Changelog": "Notas de versão",
"Software Update": "Atualização de Software",
"Title": "Título",
"Date Read": "Data de leitura",
@@ -282,18 +250,15 @@
"Ascending": "Crescente",
"Descending": "Decrescente",
"Sort by...": "Ordenar por...",
"Added:": "Adicionado:",
"Format:": "Formato:",
"Added": "Adicionado",
"GuanKiapTsingKhai-T": "GuanKiapTsingKhai-T",
"Description:": "Descrição:",
"Description": "Descrição",
"No description available": "Nenhuma descrição disponível",
"List": "Lista",
"Grid": "Grade",
"(from 'As You Like It', Act II)": "(de 'Como Gostais', Ato II)",
"Link Color": "Cor do Link",
"Volume Keys for Page Flip": "Teclas de Volume para Virar Página",
"Clicks for Page Flip": "Cliques para Virar Página",
"Swap Clicks Area": "Trocar Área de Cliques",
"Screen": "Tela",
"Orientation": "Orientação",
"Portrait": "Retrato",
@@ -302,7 +267,7 @@
"Checking for updates...": "Verificando atualizações...",
"Error checking for updates": "Erro ao verificar atualizações",
"Details": "Detalhes",
"File Size:": "Tamanho do arquivo:",
"File Size": "Tamanho do arquivo",
"Auto Detect": "Detectar Automaticamente",
"Next Section": "Próxima seção",
"Previous Section": "Seção anterior",
@@ -330,9 +295,485 @@
"Disable Translation": "Desativar tradução",
"Scroll": "Rolar",
"Overlap Pixels": "Sobreposição de Pixels",
"Click": "Clique",
"System Language": "Idioma do Sistema",
"Security": "Segurança",
"Allow JavaScript": "Permitir JavaScript",
"Enable only if you trust the file.": "Ativar apenas se você confiar no arquivo."
"Enable only if you trust the file.": "Ativar apenas se você confiar no arquivo.",
"Sort TOC by Page": "Ordenar TOC por Página",
"Search in {{count}} Book(s)..._one": "Pesquisar em {{count}} Livro...",
"Search in {{count}} Book(s)..._many": "Pesquisar em {{count}} Livros...",
"Search in {{count}} Book(s)..._other": "Pesquisar em {{count}} Livros...",
"No notes match your search": "Nenhuma nota encontrada",
"Search notes and excerpts...": "Buscar notas...",
"Sign in to Sync": "Entrar",
"Synced at {{time}}": "Sincronizado às {{time}}",
"Never synced": "Nunca sincronizado",
"Show Remaining Time": "Mostrar Tempo Restante",
"{{time}} min left in chapter": "{{time}} min restantes no capítulo",
"Override Book Color": "Substituir Cor do Livro",
"Login Required": "Login necessário",
"Quota Exceeded": "Limite excedido",
"{{percentage}}% of Daily Translation Characters Used.": "{{percentage}}% dos caracteres de tradução diários usados.",
"Translation Characters": "Caracteres de Tradução",
"{{engine}}: {{count}} voices_one": "{{engine}}: {{count}} voz",
"{{engine}}: {{count}} voices_many": "{{engine}}: {{count}} vozes",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}} vozes",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "Algo deu errado. Não se preocupe, nossa equipe foi notificada e estamos trabalhando em uma correção.",
"Error Details:": "Detalhes do Erro:",
"Try Again": "Tentar Novamente",
"Need help?": "Precisa de ajuda?",
"Contact Support": "Contato com Suporte",
"Code Highlighting": "Realce de Código",
"Enable Highlighting": "Ativar Realce",
"Code Language": "Idioma do Código",
"Top Margin (px)": "Margem superior (px)",
"Bottom Margin (px)": "Margem inferior (px)",
"Right Margin (px)": "Margem direita (px)",
"Left Margin (px)": "Margem esquerda (px)",
"Column Gap (%)": "Espaço entre colunas (%)",
"Always Show Status Bar": "Exibir sempre a barra de status",
"Custom Content CSS": "CSS do conteúdo",
"Enter CSS for book content styling...": "Insira o CSS para o estilo do conteúdo do livro...",
"Custom Reader UI CSS": "CSS da interface",
"Enter CSS for reader interface styling...": "Insira o CSS para o estilo da interface de leitura...",
"Crop": "Cortar",
"Book Covers": "Capas de Livros",
"Fit": "Encaixar",
"Reset {{settings}}": "Redefinir {{settings}}",
"Reset Settings": "Redefinir Configurações",
"{{count}} pages left in chapter_one": "Falta {{count}} página neste capítulo",
"{{count}} pages left in chapter_many": "Faltam {{count}} páginas neste capítulo",
"{{count}} pages left in chapter_other": "Faltam {{count}} páginas neste capítulo",
"Show Remaining Pages": "Mostrar páginas restantes",
"Source Han Serif CN VF": "Source Han Serif",
"Huiwen-mincho": "Huiwen Mincho",
"KingHwa_OldSong": "KingHwa Song",
"Manage Subscription": "Gerenciar assinatura",
"Coming Soon": "Em breve",
"Upgrade to {{plan}}": "Atualizar para {{plan}}",
"Upgrade to Plus or Pro": "Atualizar para Plus ou Pro",
"Current Plan": "Plano atual",
"Plan Limits": "Limites do plano",
"Processing your payment...": "Processando seu pagamento...",
"Please wait while we confirm your subscription.": "Por favor, aguarde enquanto confirmamos sua assinatura.",
"Payment Processing": "Processando pagamento",
"Your payment is being processed. This usually takes a few moments.": "Seu pagamento está sendo processado. Isso normalmente leva alguns instantes.",
"Payment Failed": "Falha no pagamento",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "Não foi possível processar sua assinatura. Tente novamente ou entre em contato com o suporte se o problema persistir.",
"Back to Profile": "Voltar ao perfil",
"Subscription Successful!": "Assinatura realizada com sucesso!",
"Thank you for your subscription! Your payment has been processed successfully.": "Obrigado pela sua assinatura! Seu pagamento foi processado com sucesso.",
"Email:": "E-mail:",
"Plan:": "Plano:",
"Amount:": "Valor:",
"Go to Library": "Ir para a biblioteca",
"Need help? Contact our support team at support@readest.com": "Precisa de ajuda? Entre em contato com nossa equipe de suporte: support@readest.com",
"Free Plan": "Plano gratuito",
"month": "mês",
"AI Translations (per day)": "Traduções com IA (por dia)",
"Plus Plan": "Plano Plus",
"Includes All Free Plan Benefits": "Inclui todos os benefícios do plano gratuito",
"Pro Plan": "Plano Pro",
"More AI Translations": "Mais traduções com IA",
"Complete Your Subscription": "Complete sua assinatura",
"{{percentage}}% of Cloud Sync Space Used.": "{{percentage}}% do espaço de sincronização na nuvem utilizado.",
"Cloud Sync Storage": "Armazenamento na Nuvem",
"Disable": "Desativar",
"Enable": "Ativar",
"Upgrade to Readest Premium": "Atualizar para Readest Premium",
"Show Source Text": "Mostrar Texto Fonte",
"Cross-Platform Sync": "Sincronização Multiplataforma",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "Sincronize perfeitamente sua biblioteca, progresso, destaques e notas em todos os seus dispositivos—nunca mais perca seu lugar.",
"Customizable Reading": "Leitura Personalizável",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "Personalize cada detalhe com fontes ajustáveis, layouts, temas e configurações avançadas de exibição para a experiência de leitura perfeita.",
"AI Read Aloud": "Leitura em Voz Alta por IA",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "Desfrute da leitura sem usar as mãos com vozes de IA com som natural que dão vida aos seus livros.",
"AI Translations": "Traduções por IA",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "Traduza qualquer texto instantaneamente com o poder do Google, Azure ou DeepL—entenda conteúdo em qualquer idioma.",
"Connect with fellow readers and get help fast in our friendly community channels.": "Conecte-se com outros leitores e obtenha ajuda rapidamente em nossos canais comunitários amigáveis.",
"Unlimited AI Read Aloud Hours": "Horas Ilimitadas de Leitura por IA",
"Listen without limits—convert as much text as you like into immersive audio.": "Ouça sem limites—converta tanto texto quanto quiser em áudio envolvente.",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "Desbloqueie recursos aprimorados de tradução com mais uso diário e opções avançadas.",
"DeepL Pro Access": "Acesso ao DeepL Pro",
"Enjoy faster responses and dedicated assistance whenever you need help.": "Desfrute de respostas mais rápidas e assistência dedicada sempre que precisar de ajuda.",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "Cota diária de tradução atingida. Atualize seu plano para continuar usando traduções por IA.",
"Includes All Plus Plan Benefits": "Inclui Todos os Benefícios do Plano Plus",
"Early Feature Access": "Acesso Antecipado a Recursos",
"Be the first to explore new features, updates, and innovations before anyone else.": "Explore primeiro novos recursos, atualizações e inovações antes de qualquer um.",
"Advanced AI Tools": "Ferramentas de IA Avançadas",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "Aproveite ferramentas de IA poderosas para leitura inteligente, tradução e descoberta de conteúdo.",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "Traduza até 100.000 caracteres diariamente com o motor de tradução mais preciso disponível.",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "Traduza até 500.000 caracteres diariamente com o motor de tradução mais preciso disponível.",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "Armazene e acesse com segurança sua coleção completa de leitura com até 5 GB de armazenamento na nuvem.",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "Armazene e acesse com segurança sua coleção completa de leitura com até 20 GB de armazenamento na nuvem.",
"Deleted cloud backup of the book: {{title}}": "Backup na nuvem do livro excluído: {{title}}",
"Are you sure to delete the cloud backup of the selected book?": "Tem certeza de que deseja excluir o backup na nuvem do livro selecionado?",
"What's New in Readest": "Novidades no Readest",
"Enter book title": "Digite o título do livro",
"Subtitle": "Subtítulo",
"Enter book subtitle": "Digite o subtítulo do livro",
"Enter author name": "Digite o nome do autor",
"Series": "Série",
"Enter series name": "Digite o nome da série",
"Series Index": "Número da série",
"Enter series index": "Digite o número da série",
"Total in Series": "Total na série",
"Enter total books in series": "Digite o total de livros na série",
"Enter publisher": "Digite a editora",
"Publication Date": "Data de publicação",
"Identifier": "Identificador",
"Enter book description": "Digite a descrição do livro",
"Change cover image": "Alterar imagem da capa",
"Replace": "Substituir",
"Unlock cover": "Desbloquear capa",
"Lock cover": "Bloquear capa",
"Auto-Retrieve Metadata": "Recuperar metadados automaticamente",
"Auto-Retrieve": "Recuperação automática",
"Unlock all fields": "Desbloquear todos os campos",
"Unlock All": "Desbloquear tudo",
"Lock all fields": "Bloquear todos os campos",
"Lock All": "Bloquear tudo",
"Reset": "Redefinir",
"Edit Metadata": "Editar metadados",
"Locked": "Bloqueado",
"Select Metadata Source": "Selecionar fonte de metadados",
"Keep manual input": "Manter entrada manual",
"Google Books": "Google Books",
"Open Library": "Open Library",
"Fiction, Science, History": "Ficção, Ciência, História",
"Open Book in New Window": "Abrir livro em nova janela",
"Voices for {{lang}}": "Vozes para {{lang}}",
"Yandex Translate": "Yandex Translate",
"YYYY or YYYY-MM-DD": "YYYY ou YYYY-MM-DD",
"Restore Purchase": "Restaurar Compra",
"No purchases found to restore.": "Nenhuma compra encontrada para restaurar.",
"Failed to restore purchases.": "Falha ao restaurar compras.",
"Failed to manage subscription.": "Falha ao gerenciar assinatura.",
"Failed to load subscription plans.": "Falha ao carregar planos de assinatura.",
"year": "ano",
"Failed to create checkout session": "Falha ao criar sessão de checkout",
"Storage": "Armazenamento",
"Terms of Service": "Termos de Serviço",
"Privacy Policy": "Política de Privacidade",
"Disable Double Click": "Desativar Clique Duplo",
"TTS not supported for this document": "TTS não suportado para este documento",
"Reset Password": "Redefinir Senha",
"Show Reading Progress": "Mostrar Progresso de Leitura",
"Reading Progress Style": "Estilo de Progresso de Leitura",
"Page Number": "Número da Página",
"Percentage": "Porcentagem",
"Deleted local copy of the book: {{title}}": " cópia local do livro excluída: {{title}}",
"Failed to delete cloud backup of the book: {{title}}": "Falha ao excluir backup na nuvem do livro: {{title}}",
"Failed to delete local copy of the book: {{title}}": "Falha ao excluir cópia local do livro: {{title}}",
"Are you sure to delete the local copy of the selected book?": "Tem certeza de que deseja excluir a cópia local do livro selecionado?",
"Remove from Cloud & Device": "Remover da Nuvem & Dispositivo",
"Remove from Cloud Only": "Remover apenas da Nuvem",
"Remove from Device Only": "Remover apenas do Dispositivo",
"Disconnected": "Desconectado",
"KOReader Sync Settings": "Configurações de Sincronização KOReader",
"Sync Strategy": "Estratégia de Sincronização",
"Ask on conflict": "Perguntar em caso de conflito",
"Always use latest": "Sempre usar o mais recente",
"Send changes only": "Enviar apenas alterações",
"Receive changes only": "Receber apenas alterações",
"Checksum Method": "Método de Verificação",
"File Content (recommended)": "Conteúdo do Arquivo (recomendado)",
"File Name": "Nome do Arquivo",
"Device Name": "Nome do Dispositivo",
"Connect to your KOReader Sync server.": "Conectar ao seu servidor KOReader Sync.",
"Server URL": "URL do Servidor",
"Username": "Nome de Usuário",
"Your Username": "Seu Nome de Usuário",
"Password": "Senha",
"Connect": "Conectar",
"KOReader Sync": "KOReader Sync",
"Sync Conflict": "Conflito de Sincronização",
"Sync reading progress from \"{{deviceName}}\"?": "Sincronizar progresso de leitura de \"{{deviceName}}\"?",
"another device": "outro dispositivo",
"Local Progress": "Progresso Local",
"Remote Progress": "Progresso Remoto",
"Page {{page}} of {{total}} ({{percentage}}%)": "Página {{page}} de {{total}} ({{percentage}}%)",
"Current position": "Posição Atual",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "Aproximadamente página {{page}} de {{total}} ({{percentage}}%)",
"Approximately {{percentage}}%": "Aproximadamente {{percentage}}%",
"Failed to connect": "Falha ao conectar",
"Sync Server Connected": "Servidor de Sincronização Conectado",
"Sync as {{userDisplayName}}": "Sincronizar como {{userDisplayName}}",
"Custom Fonts": "Fontes Personalizadas",
"Cancel Delete": "Cancelar Exclusão",
"Import Font": "Importar Fonte",
"Delete Font": "Excluir Fonte",
"Tips": "Dicas",
"Custom fonts can be selected from the Font Face menu": "Fontes personalizadas podem ser selecionadas no menu Fonte",
"Manage Custom Fonts": "Gerenciar Fontes Personalizadas",
"Select Files": "Selecionar Arquivos",
"Select Image": "Selecionar Imagem",
"Select Video": "Selecionar Vídeo",
"Select Audio": "Selecionar Áudio",
"Select Fonts": "Selecionar Fontes",
"Supported font formats: .ttf, .otf, .woff, .woff2": "Formatos de fonte suportados: .ttf, .otf, .woff, .woff2",
"Push Progress": "Enviar Progresso",
"Pull Progress": "Obter Progresso",
"Previous Paragraph": "Parágrafo anterior",
"Previous Sentence": "Frase anterior",
"Pause": "Pausar",
"Play": "Reproduzir",
"Next Sentence": "Próxima frase",
"Next Paragraph": "Próximo parágrafo",
"Separate Cover Page": "Páginas de Capa Separadas",
"Resize Notebook": "Redimensionar Caderno",
"Resize Sidebar": "Redimensionar Barra Lateral",
"Get Help from the Readest Community": "Obter ajuda da comunidade Readest",
"Remove cover image": "Remover imagem da capa",
"Bookshelf": "Estante de Livros",
"View Menu": "Ver Menu",
"Settings Menu": "Menu de Configurações",
"View account details and quota": "Ver detalhes da conta e cota",
"Library Header": "Cabeçalho da Biblioteca",
"Book Content": "Conteúdo do Livro",
"Footer Bar": "Barra de Rodapé",
"Header Bar": "Barra de Cabeçalho",
"View Options": "Opções de Visualização",
"Book Menu": "Menu do Livro",
"Search Options": "Opções de Pesquisa",
"Close": "Fechar",
"Delete Book Options": "Opções de Exclusão de Livro",
"ON": "LIGADO",
"OFF": "DESLIGADO",
"Reading Progress": "Progresso de Leitura",
"Page Margin": "Margem da Página",
"Remove Bookmark": "Remover Marcador",
"Add Bookmark": "Adicionar Marcador",
"Books Content": "Conteúdo dos Livros",
"Jump to Location": "Ir para Localização",
"Unpin Notebook": "Desafixar Caderno",
"Pin Notebook": "Fixar Caderno",
"Hide Search Bar": "Ocultar Barra de Pesquisa",
"Show Search Bar": "Mostrar Barra de Pesquisa",
"On {{current}} of {{total}} page": "Na {{current}} de {{total}} página",
"Section Title": "Título da Seção",
"Decrease": "Diminuir",
"Increase": "Aumentar",
"Settings Panels": "Painéis de Configurações",
"Settings": "Configurações",
"Unpin Sidebar": "Desafixar Barra Lateral",
"Pin Sidebar": "Fixar Barra Lateral",
"Toggle Sidebar": "Alternar Barra Lateral",
"Toggle Translation": "Alternar Tradução",
"Translation Disabled": "Tradução Desativada",
"Minimize": "Minimizar",
"Maximize or Restore": "Maximizar ou Restaurar",
"Exit Parallel Read": "Sair da Leitura Paralela",
"Enter Parallel Read": "Entrar na Leitura Paralela",
"Zoom Level": "Nivel de Zoom",
"Zoom Out": "Reduzir Zoom",
"Reset Zoom": "Redefinir Zoom",
"Zoom In": "Aumentar Zoom",
"Zoom Mode": "Modo de Zoom",
"Single Page": "Página Única",
"Auto Spread": "Espalhamento Automático",
"Fit Page": "Ajustar Página",
"Fit Width": "Ajustar Largura",
"Failed to select directory": "Falha ao selecionar diretório",
"The new data directory must be different from the current one.": "O novo diretório de dados deve ser diferente do atual.",
"Migration failed: {{error}}": "A migração falhou: {{error}}",
"Change Data Location": "Alterar Localização dos Dados",
"Current Data Location": "Localização Atual dos Dados",
"Total size: {{size}}": "Tamanho total: {{size}}",
"Calculating file info...": "Calculando informações do arquivo...",
"New Data Location": "Nova Localização dos Dados",
"Choose Different Folder": "Escolher Pasta Diferente",
"Choose New Folder": "Escolher Nova Pasta",
"Migrating data...": "Migrando dados...",
"Copying: {{file}}": "Copiando: {{file}}",
"{{current}} of {{total}} files": "{{current}} de {{total}} arquivos",
"Migration completed successfully!": "Migração concluída com sucesso!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "Seus dados foram movidos para a nova localização. Reinicie o aplicativo para concluir o processo.",
"Migration failed": "Migração falhou",
"Important Notice": "Aviso Importante",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "Isso moverá todos os dados do seu aplicativo para a nova localização. Certifique-se de que o destino tenha espaço livre suficiente.",
"Restart App": "Reiniciar Aplicativo",
"Start Migration": "Iniciar Migração",
"Advanced Settings": "Configurações Avançadas",
"File count: {{size}}": "Contagem de arquivos: {{size}}",
"Background Read Aloud": "Leitura em Segundo Plano",
"Ready to read aloud": "Pronto para leitura em voz alta",
"Read Aloud": "Ler em Voz Alta",
"Screen Brightness": "Brilho da Tela",
"Background Image": "Imagem de Fundo",
"Import Image": "Importar Imagem",
"Opacity": "Opacidade",
"Size": "Tamanho",
"Cover": "Capa",
"Contain": "Contém",
"{{number}} pages left in chapter": "Faltam {{number}} páginas neste capítulo",
"Device": "Dispositivo",
"E-Ink Mode": "Modo E-Ink",
"Highlight Colors": "Cores de Destaque",
"Auto Screen Brightness": "Brilho Automático da Tela",
"Pagination": "Paginação",
"Disable Double Tap": "Desativar Toque Duplo",
"Tap to Paginate": "Toque para Paginar",
"Click to Paginate": "Clique para Paginar",
"Tap Both Sides": "Toque em Ambos os Lados",
"Click Both Sides": "Clique em Ambos os Lados",
"Swap Tap Sides": "Trocar Lados do Toque",
"Swap Click Sides": "Trocar Lados do Clique",
"Source and Translated": "Fonte e Traduzido",
"Translated Only": "Apenas Traduzido",
"Source Only": "Apenas Fonte",
"TTS Text": "TTS Texto",
"The book file is corrupted": "O arquivo do livro está corrompido",
"The book file is empty": "O arquivo do livro está vazio",
"Failed to open the book file": "Falha ao abrir o arquivo do livro",
"On-Demand Purchase": "Compra sob demanda",
"Full Customization": "Personalização Completa",
"Lifetime Plan": "Plano Vitalício",
"One-Time Payment": "Pagamento Único",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "Faça um único pagamento para desfrutar de acesso vitalício a recursos específicos em todos os dispositivos. Compre recursos ou serviços específicos apenas quando precisar deles.",
"Expand Cloud Sync Storage": "Expandir Armazenamento de Sincronização em Nuvem",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "Expanda seu armazenamento em nuvem para sempre com uma compra única. Cada compra adicional adiciona mais espaço.",
"Unlock All Customization Options": "Desbloquear Todas as Opções de Personalização",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "Desbloquear temas adicionais, fontes, opções de layout e leitura em voz alta, tradutores, serviços de armazenamento em nuvem.",
"Purchase Successful!": "Compra Bem-Sucedida!",
"lifetime": "vitalício",
"Thank you for your purchase! Your payment has been processed successfully.": "Obrigado pela sua compra! Seu pagamento foi processado com sucesso.",
"Order ID:": "ID do Pedido:",
"TTS Highlighting": "Destaque TTS",
"Style": "Estilo",
"Underline": "Sublinhado",
"Strikethrough": "Tachado",
"Squiggly": "Ondulado",
"Outline": "Contorno",
"Save Current Color": "Salvar cor atual",
"Quick Colors": "Cores rápidas",
"Highlighter": "Marcador",
"Save Book Cover": "Salvar Capa do Livro",
"Auto-save last book cover": "Salvar automaticamente a última capa do livro",
"Back": "Voltar",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "E-mail de confirmação enviado! Verifique os seus endereços de e-mail antigo e novo para confirmar a alteração.",
"Failed to update email": "Falha ao atualizar o e-mail",
"New Email": "Novo e-mail",
"Your new email": "O seu novo e-mail",
"Updating email ...": "A atualizar o e-mail...",
"Update email": "Atualizar e-mail",
"Current email": "E-mail atual",
"Update Email": "Atualizar e-mail",
"All": "Todos",
"Unable to open book": "Não foi possível abrir o livro",
"Punctuation": "Pontuação",
"Replace Quotation Marks": "Substituir Aspas",
"Enabled only in vertical layout.": "Habilitado apenas no layout vertical.",
"No Conversion": "Sem conversão",
"Simplified to Traditional": "Simplificado → Tradicional",
"Traditional to Simplified": "Tradicional → Simplificado",
"Simplified to Traditional (Taiwan)": "Simplificado → Tradicional (Taiwan)",
"Simplified to Traditional (Hong Kong)": "Simplificado → Tradicional (Hong Kong)",
"Simplified to Traditional (Taiwan), with phrases": "Simplificado → Tradicional (Taiwan • frases)",
"Traditional (Taiwan) to Simplified": "Tradicional (Taiwan) → Simplificado",
"Traditional (Hong Kong) to Simplified": "Tradicional (Hong Kong) → Simplificado",
"Traditional (Taiwan) to Simplified, with phrases": "Tradicional (Taiwan • frases) → Simplificado",
"Convert Simplified and Traditional Chinese": "Converter Chinês Simpl./Trad.",
"Convert Mode": "Modo de conversão",
"Failed to auto-save book cover for lock screen: {{error}}": "Falha ao salvar automaticamente a capa do livro para a tela de bloqueio: {{error}}",
"Download from Cloud": "Baixar da Nuvem",
"Upload to Cloud": "Enviar para a Nuvem",
"Clear Custom Fonts": "Limpar Fontes Personalizadas",
"Columns": "Colunas",
"OPDS Catalogs": "Catálogos OPDS",
"Adding LAN addresses is not supported in the web app version.": "Adicionar endereços LAN não é suportado na versão web.",
"Invalid OPDS catalog. Please check the URL.": "Catálogo OPDS inválido. Verifique o URL.",
"Browse and download books from online catalogs": "Navegar e baixar livros de catálogos online",
"My Catalogs": "Meus catálogos",
"Add Catalog": "Adicionar catálogo",
"No catalogs yet": "Nenhum catálogo ainda",
"Add your first OPDS catalog to start browsing books": "Adicione seu primeiro catálogo OPDS para começar a navegar pelos livros",
"Add Your First Catalog": "Adicione seu primeiro catálogo",
"Browse": "Navegar",
"Popular Catalogs": "Catálogos populares",
"Add": "Adicionar",
"Add OPDS Catalog": "Adicionar catálogo OPDS",
"Catalog Name": "Nome do catálogo",
"My Calibre Library": "Minha biblioteca Calibre",
"OPDS URL": "URL do OPDS",
"Username (optional)": "Nome de usuário (opcional)",
"Password (optional)": "Senha (opcional)",
"Description (optional)": "Descrição (opcional)",
"A brief description of this catalog": "Uma breve descrição deste catálogo",
"Validating...": "Validando...",
"View All": "Ver todos",
"Forward": "Avançar",
"Home": "Início",
"{{count}} items_one": "{{count}} item",
"{{count}} items_many": "{{count}} itens",
"{{count}} items_other": "{{count}} item",
"Download completed": "Download concluído",
"Download failed": "Falha no download",
"Open Access": "Acesso aberto",
"Borrow": "Emprestar",
"Buy": "Comprar",
"Subscribe": "Assinar",
"Sample": "Amostra",
"Download": "Baixar",
"Open & Read": "Abrir e ler",
"Tags": "Etiquetas",
"Tag": "Etiqueta",
"First": "Pierwsza",
"Previous": "Poprzednia",
"Next": "Następna",
"Last": "Ostatnia",
"Cannot Load Page": "Nie można załadować strony",
"An error occurred": "Wystąpił błąd",
"Online Library": "Biblioteca online",
"URL must start with http:// or https://": "URL deve começar com http:// ou https://",
"Title, Author, Tag, etc...": "Título, Autor, Etiqueta, etc...",
"Query": "Consulta",
"Subject": "Assunto",
"Enter {{terms}}": "Insira {{terms}}",
"No search results found": "Nenhum resultado encontrado",
"Failed to load OPDS feed: {{status}} {{statusText}}": "Falha ao carregar o feed OPDS: {{status}} {{statusText}}",
"Search in {{title}}": "Pesquisar em {{title}}",
"Manage Storage": "Gerir Armazenamento",
"Failed to load files": "Falha ao carregar arquivos",
"Deleted {{count}} file(s)_one": "Apagado {{count}} ficheiro",
"Deleted {{count}} file(s)_many": "Apagados {{count}} ficheiros",
"Deleted {{count}} file(s)_other": "Apagado {{count}} ficheiro",
"Failed to delete {{count}} file(s)_one": "Falha ao apagar {{count}} ficheiro",
"Failed to delete {{count}} file(s)_many": "Falha ao apagar {{count}} ficheiros",
"Failed to delete {{count}} file(s)_other": "Falha ao apagar {{count}} ficheiro",
"Failed to delete files": "Falha ao apagar arquivos",
"Total Files": "Total de Arquivos",
"Total Size": "Tamanho Total",
"Quota": "Quota",
"Used": "Usado",
"Files": "Arquivos",
"Search files...": "Procurar arquivos...",
"Newest First": "Mais Recentes Primeiro",
"Oldest First": "Mais Antigos Primeiro",
"Largest First": "Maiores Primeiro",
"Smallest First": "Menores Primeiro",
"Name A-Z": "Nome A-Z",
"Name Z-A": "Nome Z-A",
"{{count}} selected_one": "{{count}} selecionado",
"{{count}} selected_many": "{{count}} selecionados",
"{{count}} selected_other": "{{count}} selecionado",
"Delete Selected": "Apagar Selecionados",
"Created": "Criado",
"No files found": "Nenhum arquivo encontrado",
"No files uploaded yet": "Nenhum arquivo enviado ainda",
"files": "arquivos",
"Page {{current}} of {{total}}": "Página {{current}} de {{total}}",
"Are you sure to delete {{count}} selected file(s)?_one": "Tem certeza de que deseja apagar {{count}} ficheiro selecionado?",
"Are you sure to delete {{count}} selected file(s)?_many": "Tem certeza de que deseja apagar {{count}} ficheiros selecionados?",
"Are you sure to delete {{count}} selected file(s)?_other": "Tem certeza de que deseja apagar {{count}} ficheiro selecionado?",
"Cloud Storage Usage": "Uso de Armazenamento na Nuvem",
"Rename Group": "Renomear Grupo",
"From Directory": "Do Diretório",
"Successfully imported {{count}} book(s)_one": "Importado com sucesso 1 livro",
"Successfully imported {{count}} book(s)_many": "Importados com sucesso {{count}} livros",
"Successfully imported {{count}} book(s)_other": "Importados com sucesso {{count}} livros",
"Count": "Contagem",
"Start Page": "Página Inicial",
"Search in OPDS Catalog...": "Pesquisar no Catálogo OPDS...",
"Please log in to use advanced TTS features.": "Por favor, faça login para usar recursos avançados de TTS."
}
@@ -8,7 +8,6 @@
"Auto Mode": "Автоматический режим",
"Behavior": "Поведение",
"Book": "Книга",
"Book Cover": "Обложка книги",
"Bookmark": "Закладка",
"Cancel": "Отмена",
"Chapter": "Глава",
@@ -18,7 +17,6 @@
"Confirm Deletion": "Подтвердить удаление",
"Copied to notebook": "Скопировано в блокнот",
"Copy": "Копировать",
"Custom CSS": "Пользовательский CSS",
"Dark Mode": "Тёмная тема",
"Default": "По умолчанию",
"Default Font": "Шрифт по умолчанию",
@@ -28,7 +26,6 @@
"Dictionary": "Словарь",
"Download Readest": "Скачать Readest",
"Edit": "Редактировать",
"Enter your custom CSS here...": "Введите ваш пользовательский CSS здесь...",
"Excerpts": "Отрывки",
"Failed to import book(s): {{filenames}}": "Не удалось импортировать книгу(и): {{filenames}}",
"Fast": "Быстро",
@@ -48,7 +45,6 @@
"Horizontal Direction": "Горизонтальное направление",
"Hyphenation": "Перенос слов",
"Import Books": "Импорт книг",
"Language:": "Язык:",
"Layout": "Макет",
"Light Mode": "Светлая тема",
"Loading...": "Загрузка...",
@@ -70,8 +66,8 @@
"Paging Animation": "Анимация перелистывания",
"Paragraph": "Абзац",
"Parallel Read": "Параллельное чтение",
"Published:": "Опубликовано:",
"Publisher:": "Издатель:",
"Published": "Опубликовано",
"Publisher": "Издатель",
"Reading Progress Synced": "Синхронизирован прогресс чтения",
"Reload Page": "Перезагрузить страницу",
"Reveal in File Explorer": "Показать в проводнике",
@@ -85,7 +81,6 @@
"Search...": "Поиск...",
"Select Book": "Выбрать книгу",
"Select Books": "Выбрать книги",
"Select Multiple Books": "Выбрать несколько книг",
"Sepia": "Сепия",
"Serif Font": "Шрифт с засечками",
"Show Book Details": "Показать детали книги",
@@ -96,16 +91,15 @@
"Slow": "Медленно",
"Solarized": "Солнечный",
"Speak": "Произнести",
"Subjects:": "Темы:",
"Subjects": "Темы",
"System Fonts": "Системные шрифты",
"TTS not supported in this device": "TTS не поддерживается на этом устройстве",
"Theme Color": "Цвет темы",
"Theme Mode": "Режим темы",
"Translate": "Перевести",
"Translated Text": "Переведённый текст",
"Unknown": "Неизвестно",
"Untitled": "Без названия",
"Updated:": "Обновлено:",
"Updated": "Обновлено",
"Version {{version}}": "Версия {{version}}",
"Vertical Direction": "Вертикальное направление",
"Welcome to your library. You can import your books here and read them anytime.": "Добро пожаловать в вашу библиотеку. Вы можете импортировать сюда книги и читать их в любое время.",
@@ -114,8 +108,6 @@
"Your Library": "Ваша библиотека",
"TTS not supported for PDF": "TTS не поддерживается для PDF",
"Override Book Font": "Переопределить шрифт книги",
"Vertical Margins (px)": "Вертикальные поля (px)",
"Horizontal Margins (%)": "Горизонтальные поля (%)",
"Apply to All Books": "Применить ко всем книгам",
"Apply to This Book": "Применить к этой книге",
"Unable to fetch the translation. Try again later.": "Не удалось получить перевод. Попробуйте позже.",
@@ -124,14 +116,13 @@
"Book Details": "Детали книги",
"From Local File": "Из локального файла",
"TOC": "Содержание",
"Table of Contents": "Содержание",
"Book uploaded: {{title}}": "Книга загружена: {{title}}",
"Failed to upload book: {{title}}": "Не удалось загрузить книгу: {{title}}",
"Book downloaded: {{title}}": "Книга скачана: {{title}}",
"Failed to download book: {{title}}": "Не удалось скачать книгу: {{title}}",
"Upload Book": "Загрузить книгу",
"Auto Upload Books to Cloud": "Автоматическая загрузка книг в облако",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% использовано облачного хранилища.",
"Storage": "Хранилище",
"Book deleted: {{title}}": "Книга удалена: {{title}}",
"Failed to delete book: {{title}}": "Не удалось удалить книгу: {{title}}",
"Check Updates on Start": "Проверять обновления при запуске",
@@ -163,7 +154,7 @@
"Create a Password": "Создать пароль",
"Sign up": "Зарегистрироваться",
"Signing up...": "Регистрация...",
"Dont have an account? Sign up": "Нет аккаунта? Зарегистрируйтесь",
"Don't have an account? Sign up": "Нет аккаунта? Зарегистрируйтесь",
"Check your email for the confirmation link": "Проверьте свою почту для подтверждающей ссылки",
"Signing in ...": "Вход ...",
"Send a magic link email": "Отправить магическую ссылку по электронной почте",
@@ -186,37 +177,14 @@
"Sign in with Apple": "Войти через Apple",
"Sign in with GitHub": "Войти через GitHub",
"Account": "Аккаунт",
"Cloud Storage": "Облачное хранилище",
"Failed to delete user. Please try again later.": "Не удалось удалить пользователя. Пожалуйста, повторите попытку позже.",
"Unlimited Offline/Online Reading": "Безлимитное чтение офлайн/онлайн",
"Unlimited Cloud Sync Devices": "Неограниченное количество устройств для облачной синхронизации",
"Essential Text-to-Speech Voices": "Основные голоса для преобразования текста в речь",
"DeepL Free Access": "Бесплатный доступ к DeepL",
"Community Support": "Поддержка сообщества",
"500 MB Cloud Sync Space": "500 МБ облачного пространства для синхронизации",
"Includes All Free Tier Benefits": "Включает все преимущества бесплатного тарифа",
"AI Summaries": "AI-резюме",
"AI Translations": "AI-переводы",
"Priority Support": "Приоритетная поддержка",
"DeepL Pro Access": "Доступ к DeepL Pro",
"Expanded Text-to-Speech Voices": "Расширенный набор голосов для преобразования текста в речь",
"2000 MB Cloud Sync Space": "2000 МБ облачного пространства для синхронизации",
"Includes All Plus Tier Benefits": "Включает все преимущества тарифа Plus",
"Unlimited AI Summaries": "Безлимитные AI-резюме",
"Unlimited AI Translations": "Безлимитные AI-переводы",
"Unlimited DeepL Pro Access": "Неограниченный доступ к DeepL Pro",
"Advanced AI Tools": "Продвинутые AI-инструменты",
"Early Feature Access": "Ранний доступ к новым функциям",
"10 GB Cloud Sync Space": "10 ГБ облачного пространства для синхронизации",
"Loading profile...": "Загрузка профиля...",
"Features": "Функции",
"Delete Account": "Удалить аккаунт",
"Delete Your Account?": "Удалить ваш аккаунт?",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "Это действие нельзя отменить. Все ваши данные в облаке будут удалены безвозвратно.",
"Delete Permanently": "Удалить навсегда",
"Free Tier": "Бесплатный тариф",
"Plus Tier": "Тариф Plus",
"Pro Tier": "Тариф Pro",
"RTL Direction": "Направление RTL",
"Maximum Column Height": "Максимальная высота колонки",
"Maximum Column Width": "Максимальная ширина колонки",
@@ -225,7 +193,7 @@
"No supported files found. Supported formats: {{formats}}": "Поддерживаемые файлы не найдены. Поддерживаемые форматы: {{formats}}",
"Drop to Import Books": "Перетащите сюда книги для импорта",
"Custom": "Пользовательский",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n—William Shakespeare": "Весь мир — театр,\nИ все мужчины и женщины — просто актёры;\nУ них есть свои выходы и входы,\nИ один человек в своё время играет много ролей,\nЕго поступки — это семь веков.\n\n— Уильям Шекспир",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "Весь мир — театр,\nИ все мужчины и женщины — просто актёры;\nУ них есть свои выходы и входы,\nИ один человек в своё время играет много ролей,\nЕго поступки — это семь веков.\n\n— Уильям Шекспир",
"Custom Theme": "Пользовательская тема",
"Theme Name": "Название темы",
"Text Color": "Цвет текста",
@@ -252,9 +220,9 @@
"Auto Import on File Open": "Автоматический импорт при открытии файла",
"LXGW WenKai GB Screen": "LXGW WenKai SC",
"LXGW WenKai TC": "LXGW WenKai TC",
"No chapters detected.": "Не обнаружено глав.",
"Failed to parse the EPUB file.": "Не удалось разобрать файл EPUB.",
"This book format is not supported.": "Этот формат книги не поддерживается.",
"No chapters detected": "Не обнаружено глав",
"Failed to parse the EPUB file": "Не удалось разобрать файл EPUB",
"This book format is not supported": "Этот формат книги не поддерживается",
"Unable to fetch the translation. Please log in first and try again.": "Не удалось получить перевод. Пожалуйста, войдите в систему и попробуйте снова.",
"Group": "Группа",
"Always on Top": "Всегда сверху",
@@ -267,13 +235,13 @@
"Clear Search": "Очистить поиск",
"Header & Footer": "Заголовок и нижний колонтитул",
"Apply also in Scrolled Mode": "Применить также в прокручиваемом режиме",
"A new version of Readest is Available!": "Доступна новая версия Readest!",
"A new version of Readest is available!": "Доступна новая версия Readest!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Readest {{newVersion}} доступен (установленная версия {{currentVersion}}).",
"Download and install now?": "Скачать и установить сейчас?",
"Downloading {{downloaded}} of {{contentLength}}": "Скачано {{downloaded}} из {{contentLength}}",
"Download finished": "Загрузка завершена",
"DOWNLOAD & INSTALL": "СКАЧАТЬ И УСТАНОВИТЬ",
"Changelog:": "Изменения:",
"Changelog": "Изменения",
"Software Update": "Обновление программного обеспечения",
"Title": "Название",
"Date Read": "Дата прочтения",
@@ -282,18 +250,15 @@
"Ascending": "По возрастанию",
"Descending": "По убыванию",
"Sort by...": "Сортировать по...",
"Added:": "Добавлено:",
"Format:": "Формат:",
"Added": "Добавлено",
"GuanKiapTsingKhai-T": "GuanKiapTsingKhai-T",
"Description:": "Описание:",
"Description": "Описание",
"No description available": "Нет доступного описания",
"List": "Список",
"Grid": "Сетка",
"(from 'As You Like It', Act II)": "(из 'Как вам это понравится', Акт II)",
"Link Color": "Цвет ссылки",
"Volume Keys for Page Flip": "Клавиши громкости для перелистывания страниц",
"Clicks for Page Flip": "Клики для перелистывания страниц",
"Swap Clicks Area": "Переключить область кликов",
"Screen": "Экран",
"Orientation": "Ориентация",
"Portrait": "Портрет",
@@ -302,7 +267,7 @@
"Checking for updates...": "Проверка обновлений...",
"Error checking for updates": "Ошибка при проверке обновлений",
"Details": "Инфо",
"File Size:": "Размер файла:",
"File Size": "Размер файла",
"Auto Detect": "Автоопределение",
"Next Section": "Следующий раздел",
"Previous Section": "Предыдущий раздел",
@@ -331,9 +296,494 @@
"Disable Translation": "Отключить перевод",
"Scroll": "Прокрутка",
"Overlap Pixels": "Перекрывающиеся пиксели",
"Click": "Клик",
"System Language": "Системный язык",
"Security": "Безопасность",
"Allow JavaScript": "Разрешить JavaScript",
"Enable only if you trust the file.": "Включите только если доверяете файлу."
"Enable only if you trust the file.": "Включите только если доверяете файлу.",
"Sort TOC by Page": "Сортировать содержание по странице",
"Search in {{count}} Book(s)..._one": "Поиск в {{count}} книге...",
"Search in {{count}} Book(s)..._few": "Поиск в {{count}} книгах...",
"Search in {{count}} Book(s)..._many": "Поиск в {{count}} книгах...",
"Search in {{count}} Book(s)..._other": "Поиск в {{count}} книгах...",
"No notes match your search": "Записи не найдены",
"Search notes and excerpts...": "Искать записи...",
"Sign in to Sync": "Войти",
"Synced at {{time}}": "Синхр. в {{time}}",
"Never synced": "Не синхр.",
"Show Remaining Time": "Показать оставшееся время",
"{{time}} min left in chapter": "{{time}} мин осталось в главе",
"Override Book Color": "Переопределить цвет книги",
"Login Required": "Требуется вход",
"Quota Exceeded": "Лимит превышен",
"{{percentage}}% of Daily Translation Characters Used.": "Использовано {{percentage}}% от суточного лимита символов перевода.",
"Translation Characters": "Символы перевода",
"{{engine}}: {{count}} voices_one": "{{engine}}: {{count}} голос",
"{{engine}}: {{count}} voices_few": "{{engine}}: {{count}} голоса",
"{{engine}}: {{count}} voices_many": "{{engine}}: {{count}} голосов",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}} голоса",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "Что-то пошло не так. Не волнуйтесь, наша команда уведомлена и работает над исправлением.",
"Error Details:": "Подробности ошибки:",
"Try Again": "Попробовать снова",
"Need help?": "Нужна помощь?",
"Contact Support": "Связаться с поддержкой",
"Code Highlighting": "Подсветка кода",
"Enable Highlighting": "Включить подсветку",
"Code Language": "Язык кода",
"Top Margin (px)": "Верхний отступ (пикс)",
"Bottom Margin (px)": "Нижний отступ (пикс)",
"Right Margin (px)": "Правый отступ (пикс)",
"Left Margin (px)": "Левый отступ (пикс)",
"Column Gap (%)": "Промежуток между колонками (%)",
"Always Show Status Bar": "Всегда показывать панель состояния",
"Custom Content CSS": "CSS содержимого",
"Enter CSS for book content styling...": "Введите CSS для оформления содержимого книги...",
"Custom Reader UI CSS": "CSS интерфейса",
"Enter CSS for reader interface styling...": "Введите CSS для оформления интерфейса ридера...",
"Crop": "Обрезать",
"Book Covers": "Обложки книг",
"Fit": "Подогнать",
"Reset {{settings}}": "Сбросить {{settings}}",
"Reset Settings": "Сбросить настройки",
"{{count}} pages left in chapter_one": "Осталась {{count}} страница в главе",
"{{count}} pages left in chapter_few": "Осталось {{count}} страницы в главе",
"{{count}} pages left in chapter_many": "Осталось {{count}} страниц в главе",
"{{count}} pages left in chapter_other": "Осталось {{count}} страниц в главе",
"Show Remaining Pages": "Показать оставшиеся страницы",
"Source Han Serif CN VF": "Source Han Serif",
"Huiwen-mincho": "Huiwen Mincho",
"KingHwa_OldSong": "KingHwa Song",
"Manage Subscription": "Управление подпиской",
"Coming Soon": "Скоро будет",
"Upgrade to {{plan}}": "Обновить до {{plan}}",
"Upgrade to Plus or Pro": "Обновить до Plus или Pro",
"Current Plan": "Текущий план",
"Plan Limits": "Лимиты плана",
"Processing your payment...": "Обработка платежа...",
"Please wait while we confirm your subscription.": "Пожалуйста, подождите, пока мы подтверждаем вашу подписку.",
"Payment Processing": "Обработка платежа",
"Your payment is being processed. This usually takes a few moments.": "Ваш платеж обрабатывается. Обычно это занимает несколько секунд.",
"Payment Failed": "Не удалось провести платеж",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "Не удалось обработать подписку. Пожалуйста, попробуйте еще раз или свяжитесь с поддержкой, если проблема сохраняется.",
"Back to Profile": "Назад в профиль",
"Subscription Successful!": "Подписка успешно оформлена!",
"Thank you for your subscription! Your payment has been processed successfully.": "Спасибо за подписку! Ваш платеж успешно обработан.",
"Email:": "Электронная почта:",
"Plan:": "План:",
"Amount:": "Сумма:",
"Go to Library": "Перейти в библиотеку",
"Need help? Contact our support team at support@readest.com": "Нужна помощь? Свяжитесь с нашей поддержкой: support@readest.com",
"Free Plan": "Бесплатный план",
"month": "месяц",
"AI Translations (per day)": "Переводы ИИ (в день)",
"Plus Plan": "План Plus",
"Includes All Free Plan Benefits": "Включает все преимущества бесплатного плана",
"Pro Plan": "План Pro",
"More AI Translations": "Больше переводов ИИ",
"Complete Your Subscription": "Завершите подписку",
"{{percentage}}% of Cloud Sync Space Used.": "Использовано {{percentage}}% облачного пространства для синхронизации.",
"Cloud Sync Storage": "Облачное хранилище",
"Disable": "Отключить",
"Enable": "Включить",
"Upgrade to Readest Premium": "Обновить до Readest Premium",
"Show Source Text": "Показать исходный текст",
"Cross-Platform Sync": "Кроссплатформенная Синхронизация",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "Беспрепятственно синхронизируйте свою библиотеку, прогресс, заметки и выделения на всех устройствах—больше никогда не теряйте свое место.",
"Customizable Reading": "Настраиваемое Чтение",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "Персонализируйте каждую деталь с настраиваемыми шрифтами, макетами, темами и расширенными настройками отображения для идеального чтения.",
"AI Read Aloud": "Озвучивание ИИ",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "Наслаждайтесь чтением без рук с естественно звучащими голосами ИИ, которые оживляют ваши книги.",
"AI Translations": "Переводы ИИ",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "Переводите любой текст мгновенно с помощью Google, Azure или DeepL—понимайте содержание на любом языке.",
"Connect with fellow readers and get help fast in our friendly community channels.": "Общайтесь с другими читателями и получайте быструю помощь в наших дружелюбных каналах сообщества.",
"Unlimited AI Read Aloud Hours": "Неограниченные Часы Озвучивания ИИ",
"Listen without limits—convert as much text as you like into immersive audio.": "Слушайте без ограничений—преобразуйте столько текста, сколько хотите, в захватывающее аудио.",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "Разблокируйте улучшенные возможности перевода с большим ежедневным использованием и расширенными опциями.",
"DeepL Pro Access": "Доступ к DeepL Pro",
"Enjoy faster responses and dedicated assistance whenever you need help.": "Наслаждайтесь более быстрыми ответами и персональной помощью, когда вам нужна поддержка.",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "Достигнута дневная квота переводов. Обновите план, чтобы продолжить использовать переводы ИИ.",
"Includes All Plus Plan Benefits": "Включает Все Преимущества Plus Плана",
"Early Feature Access": "Ранний Доступ к Функциям",
"Be the first to explore new features, updates, and innovations before anyone else.": "Исследуйте новые функции, обновления и инновации первыми.",
"Advanced AI Tools": "Продвинутые ИИ Инструменты",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "Используйте мощные ИИ инструменты для умного чтения, перевода и поиска контента.",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "Переводите до 100 000 символов ежедневно с самым точным доступным движком перевода.",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "Переводите до 500 000 символов ежедневно с самым точным доступным движком перевода.",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "Безопасно храните и получайте доступ ко всей коллекции чтения с до 5 ГБ облачного хранилища.",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "Безопасно храните и получайте доступ ко всей коллекции чтения с до 20 ГБ облачного хранилища.",
"Deleted cloud backup of the book: {{title}}": "Удалено облачное резервное копирование книги: {{title}}",
"Are you sure to delete the cloud backup of the selected book?": "Вы уверены, что хотите удалить облачное резервное копирование выбранной книги?",
"What's New in Readest": "Что нового в Readest",
"Enter book title": "Введите название книги",
"Subtitle": "Подзаголовок",
"Enter book subtitle": "Введите подзаголовок книги",
"Enter author name": "Введите имя автора",
"Series": "Серия",
"Enter series name": "Введите название серии",
"Series Index": "Номер в серии",
"Enter series index": "Введите номер в серии",
"Total in Series": "Всего в серии",
"Enter total books in series": "Введите общее количество книг в серии",
"Enter publisher": "Введите издательство",
"Publication Date": "Дата публикации",
"Identifier": "Идентификатор",
"Enter book description": "Введите описание книги",
"Change cover image": "Изменить обложку",
"Replace": "Заменить",
"Unlock cover": "Разблокировать обложку",
"Lock cover": "Заблокировать обложку",
"Auto-Retrieve Metadata": "Автоматически получить метаданные",
"Auto-Retrieve": "Автоматическое получение",
"Unlock all fields": "Разблокировать все поля",
"Unlock All": "Разблокировать всё",
"Lock all fields": "Заблокировать все поля",
"Lock All": "Заблокировать всё",
"Reset": "Сбросить",
"Edit Metadata": "Редактировать метаданные",
"Locked": "Заблокировано",
"Select Metadata Source": "Выберите источник метаданных",
"Keep manual input": "Сохранить ручной ввод",
"Google Books": "Google Книги",
"Open Library": "Open Library",
"Fiction, Science, History": "Художественная литература, Наука, История",
"Open Book in New Window": "Открыть книгу в новом окне",
"Voices for {{lang}}": "Голоса для {{lang}}",
"Yandex Translate": "Yandex Translate",
"YYYY or YYYY-MM-DD": "YYYY или YYYY-MM-DD",
"Restore Purchase": "Восстановить покупку",
"No purchases found to restore.": "Не найдено покупок для восстановления.",
"Failed to restore purchases.": "Не удалось восстановить покупки.",
"Failed to manage subscription.": "Не удалось управлять подпиской.",
"Failed to load subscription plans.": "Не удалось загрузить планы подписки.",
"year": "год",
"Failed to create checkout session": "Не удалось создать сессию оформления заказа",
"Storage": "Хранилище",
"Terms of Service": "Условия использования",
"Privacy Policy": "Политика конфиденциальности",
"Disable Double Click": "Отключить двойной клик",
"TTS not supported for this document": "TTS не поддерживается для этого документа",
"Reset Password": "Сбросить пароль",
"Show Reading Progress": "Показать прогресс чтения",
"Reading Progress Style": "Стиль прогресса чтения",
"Page Number": "Номер страницы",
"Percentage": "Процент",
"Deleted local copy of the book: {{title}}": "Удалена локальная копия книги: {{title}}",
"Failed to delete cloud backup of the book: {{title}}": "Не удалось удалить резервную копию книги в облаке: {{title}}",
"Failed to delete local copy of the book: {{title}}": "Не удалось удалить локальную копию книги: {{title}}",
"Are you sure to delete the local copy of the selected book?": "Вы уверены, что хотите удалить локальную копию выбранной книги?",
"Remove from Cloud & Device": "Удалить из облака и устройства",
"Remove from Cloud Only": "Удалить только из облака",
"Remove from Device Only": "Удалить только с устройства",
"Disconnected": "Отключено",
"KOReader Sync Settings": "Настройки синхронизации KOReader",
"Sync Strategy": "Стратегия синхронизации",
"Ask on conflict": "Спрашивать при конфликте",
"Always use latest": "Всегда использовать последнюю",
"Send changes only": "Отправлять только изменения",
"Receive changes only": "Получать только изменения",
"Checksum Method": "Метод контрольной суммы",
"File Content (recommended)": "Содержимое файла (рекомендуется)",
"File Name": "Имя файла",
"Device Name": "Имя устройства",
"Connect to your KOReader Sync server.": "Подключитесь к вашему серверу синхронизации KOReader.",
"Server URL": "URL сервера",
"Username": "Имя пользователя",
"Your Username": "Ваше имя пользователя",
"Password": "Пароль",
"Connect": "Подключиться",
"KOReader Sync": "KOReader Sync",
"Sync Conflict": "Конфликт синхронизации",
"Sync reading progress from \"{{deviceName}}\"?": "Синхронизировать прогресс чтения с \"{{deviceName}}\"?",
"another device": "другом устройстве",
"Local Progress": "Локальный прогресс",
"Remote Progress": "Удаленный прогресс",
"Page {{page}} of {{total}} ({{percentage}}%)": "Страница {{page}} из {{total}} ({{percentage}}%)",
"Current position": "Текущая позиция",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "Приблизительно страница {{page}} из {{total}} ({{percentage}}%)",
"Approximately {{percentage}}%": "Приблизительно {{percentage}}%",
"Failed to connect": "Не удалось подключиться",
"Sync Server Connected": "Сервер синхронизации подключен",
"Sync as {{userDisplayName}}": "Синхронизировать как {{userDisplayName}}",
"Custom Fonts": "Пользовательские Шрифты",
"Cancel Delete": "Отменить Удаление",
"Import Font": "Импортировать Шрифт",
"Delete Font": "Удалить Шрифт",
"Tips": "Советы",
"Custom fonts can be selected from the Font Face menu": "Пользовательские шрифты можно выбрать в меню Шрифт",
"Manage Custom Fonts": "Управление Пользовательскими Шрифтами",
"Select Files": "Выбрать Файлы",
"Select Image": "Выбрать Изображение",
"Select Video": "Выбрать Видео",
"Select Audio": "Выбрать Аудио",
"Select Fonts": "Выбрать Шрифты",
"Supported font formats: .ttf, .otf, .woff, .woff2": "Поддерживаемые форматы шрифтов: .ttf, .otf, .woff, .woff2",
"Push Progress": "Отправить прогресс",
"Pull Progress": "Получить прогресс",
"Previous Paragraph": "Предыдущий абзац",
"Previous Sentence": "Предыдущее предложение",
"Pause": "Пауза",
"Play": "Воспроизвести",
"Next Sentence": "Следующее предложение",
"Next Paragraph": "Следующий абзац",
"Separate Cover Page": "Отдельная страница обложки",
"Resize Notebook": "Изменить размер блокнота",
"Resize Sidebar": "Изменить размер боковой панели",
"Get Help from the Readest Community": "Получить помощь от сообщества Readest",
"Remove cover image": "Удалить изображение обложки",
"Bookshelf": "Книжная полка",
"View Menu": "Просмотр меню",
"Settings Menu": "Меню настроек",
"View account details and quota": "Просмотр данных аккаунта и квоты",
"Library Header": "Заголовок библиотеки",
"Book Content": "Содержание книги",
"Footer Bar": "Нижняя панель",
"Header Bar": "Верхняя панель",
"View Options": "Параметры просмотра",
"Book Menu": "Меню книги",
"Search Options": "Параметры поиска",
"Close": "Закрыть",
"Delete Book Options": "Параметры удаления книги",
"ON": "ВКЛ",
"OFF": "ВЫКЛ",
"Reading Progress": "Прогресс чтения",
"Page Margin": "Поля страницы",
"Remove Bookmark": "Удалить закладку",
"Add Bookmark": "Добавить закладку",
"Books Content": "Содержимое книг",
"Jump to Location": "Перейти к местоположению",
"Unpin Notebook": "Открепить блокнот",
"Pin Notebook": "Закрепить блокнот",
"Hide Search Bar": "Скрыть панель поиска",
"Show Search Bar": "Показать панель поиска",
"On {{current}} of {{total}} page": "На {{current}} из {{total}} страницы",
"Section Title": "Заголовок раздела",
"Decrease": "Уменьшить",
"Increase": "Увеличить",
"Settings Panels": "Панели настроек",
"Settings": "Настройки",
"Unpin Sidebar": "Открепить боковую панель",
"Pin Sidebar": "Закрепить боковую панель",
"Toggle Sidebar": "Переключить боковую панель",
"Toggle Translation": "Переключить перевод",
"Translation Disabled": "Перевод отключен",
"Minimize": "Свернуть",
"Maximize or Restore": "Максимизировать или восстановить",
"Exit Parallel Read": "Выйти из параллельного чтения",
"Enter Parallel Read": "Войти в параллельное чтение",
"Zoom Level": "Уровень масштабирования",
"Zoom Out": "Уменьшить масштаб",
"Reset Zoom": "Сбросить масштаб",
"Zoom In": "Увеличить масштаб",
"Zoom Mode": "Режим масштабирования",
"Single Page": "Одна страница",
"Auto Spread": "Автоматическое растяжение",
"Fit Page": "Подогнать страницу",
"Fit Width": "Подогнать ширину",
"Failed to select directory": "Не удалось выбрать каталог",
"The new data directory must be different from the current one.": "Новая директория данных должна отличаться от текущей.",
"Migration failed: {{error}}": "Ошибка миграции: {{error}}",
"Change Data Location": "Изменить расположение данных",
"Current Data Location": "Текущее расположение данных",
"Total size: {{size}}": "Общий размер: {{size}}",
"Calculating file info...": "Вычисление информации о файле...",
"New Data Location": "Новое расположение данных",
"Choose Different Folder": "Выбрать другую папку",
"Choose New Folder": "Выбрать новую папку",
"Migrating data...": "Миграция данных...",
"Copying: {{file}}": "Копирование: {{file}}",
"{{current}} of {{total}} files": "{{current}} из {{total}} файлов",
"Migration completed successfully!": "Миграция завершена успешно!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "Ваши данные были перемещены в новое расположение. Пожалуйста, перезапустите приложение, чтобы завершить процесс.",
"Migration failed": "Ошибка миграции",
"Important Notice": "Важное уведомление",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "Это переместит все ваши данные приложения в новое расположение. Убедитесь, что в целевом месте достаточно свободного места.",
"Restart App": "Перезапустить приложение",
"Start Migration": "Начать миграцию",
"Advanced Settings": "Расширенные настройки",
"File count: {{size}}": "Количество файлов: {{size}}",
"Background Read Aloud": "Озвучивание в фоне",
"Ready to read aloud": "Готов к чтению вслух",
"Read Aloud": "Читать вслух",
"Screen Brightness": "Яркость экрана",
"Background Image": "Фоновое изображение",
"Import Image": "Импортировать изображение",
"Opacity": "Непрозрачность",
"Size": "Размер",
"Cover": "Обложка",
"Contain": "Содержать",
"{{number}} pages left in chapter": "Осталось {{number}} страниц в главе",
"Device": "Устройство",
"E-Ink Mode": "E-Ink режим",
"Highlight Colors": "Цвета выделения",
"Auto Screen Brightness": "Автояркость экрана",
"Pagination": "Пагинация",
"Disable Double Tap": "Отключить двойной тап",
"Tap to Paginate": "Тапните, чтобы разбить на страницы",
"Click to Paginate": "Нажмите, чтобы разбить на страницы",
"Tap Both Sides": "Тапните обе стороны",
"Click Both Sides": "Нажмите обе стороны",
"Swap Tap Sides": "Переключить стороны касания",
"Swap Click Sides": "Переключить стороны клика",
"Source and Translated": "Источник и перевод",
"Translated Only": "Только перевод",
"Source Only": "Только источник",
"TTS Text": "TTS Текст",
"The book file is corrupted": "Файл книги поврежден",
"The book file is empty": "Файл книги пуст",
"Failed to open the book file": "Не удалось открыть файл книги",
"On-Demand Purchase": "Покупка по запросу",
"Full Customization": "Полная настройка",
"Lifetime Plan": "Пожизненный план",
"One-Time Payment": "Единовременный платеж",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "Сделайте единовременный платеж, чтобы получить пожизненный доступ к определенным функциям на всех устройствах. Покупайте конкретные функции или услуги только тогда, когда они вам нужны.",
"Expand Cloud Sync Storage": "Расширить облачное хранилище",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "Расширьте свое облачное хранилище навсегда с помощью единовременной покупки. Каждая дополнительная покупка добавляет больше места.",
"Unlock All Customization Options": "Разблокировать Все Опции Настройки",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "Разблокировать дополнительные темы, шрифты, параметры макета и чтения вслух, переводчики, услуги облачного хранилища.",
"Purchase Successful!": "Покупка Успешна!",
"lifetime": "пожизненный",
"Thank you for your purchase! Your payment has been processed successfully.": "Спасибо за вашу покупку! Ваш платеж был успешно обработан.",
"Order ID:": "ID заказа:",
"TTS Highlighting": "Выделение TTS",
"Style": "Стиль",
"Underline": "Подчёркивание",
"Strikethrough": "Зачёркивание",
"Squiggly": "Волнистая линия",
"Outline": "Контур",
"Save Current Color": "Сохранить текущий цвет",
"Quick Colors": "Быстрые цвета",
"Highlighter": "Маркер",
"Save Book Cover": "Сохранить обложку книги",
"Auto-save last book cover": "Автоматически сохранять последнюю обложку книги",
"Back": "Назад",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "Письмо с подтверждением отправлено! Пожалуйста, проверьте старый и новый адреса электронной почты, чтобы подтвердить изменение.",
"Failed to update email": "Не удалось обновить электронную почту",
"New Email": "Новый адрес электронной почты",
"Your new email": "Ваш новый адрес электронной почты",
"Updating email ...": "Обновление электронной почты ...",
"Update email": "Обновить электронную почту",
"Current email": "Текущий адрес электронной почты",
"Update Email": "Обновить электронную почту",
"All": "Все",
"Unable to open book": "Не удалось открыть книгу",
"Punctuation": "Пунктуация",
"Replace Quotation Marks": "Заменить кавычки",
"Enabled only in vertical layout.": "Включено только в вертикальной раскладке.",
"No Conversion": "Без преобразования",
"Simplified to Traditional": "Упрощённый → Традиционный",
"Traditional to Simplified": "Традиционный → Упрощённый",
"Simplified to Traditional (Taiwan)": "Упрощённый → Традиционный (Тайвань)",
"Simplified to Traditional (Hong Kong)": "Упрощённый → Традиционный (Гонконг)",
"Simplified to Traditional (Taiwan), with phrases": "Упрощённый → Традиционный (Тайвань • фразы)",
"Traditional (Taiwan) to Simplified": "Традиционный (Тайвань) → Упрощённый",
"Traditional (Hong Kong) to Simplified": "Традиционный (Гонконг) → Упрощённый",
"Traditional (Taiwan) to Simplified, with phrases": "Традиционный (Тайвань • фразы) → Упрощённый",
"Convert Simplified and Traditional Chinese": "Преобразовать упрощённый/традиционный китайский",
"Convert Mode": "Режим преобразования",
"Failed to auto-save book cover for lock screen: {{error}}": "Не удалось автоматически сохранить обложку книги для экрана блокировки: {{error}}",
"Download from Cloud": "Скачать из облака",
"Upload to Cloud": "Загрузить в облако",
"Clear Custom Fonts": "Очистить пользовательские шрифты",
"Columns": "Колонки",
"OPDS Catalogs": "Каталоги OPDS",
"Adding LAN addresses is not supported in the web app version.": "Добавление LAN-адресов не поддерживается в веб-версии.",
"Invalid OPDS catalog. Please check the URL.": "Недействительный каталог OPDS. Пожалуйста, проверьте URL.",
"Browse and download books from online catalogs": "Просматривать и скачивать книги из онлайн-каталогов",
"My Catalogs": "Мои каталоги",
"Add Catalog": "Добавить каталог",
"No catalogs yet": "Каталоги отсутствуют",
"Add your first OPDS catalog to start browsing books": "Добавьте первый каталог OPDS, чтобы начать просмотр книг",
"Add Your First Catalog": "Добавьте первый каталог",
"Browse": "Просмотр",
"Popular Catalogs": "Популярные каталоги",
"Add": "Добавить",
"Add OPDS Catalog": "Добавить каталог OPDS",
"Catalog Name": "Название каталога",
"My Calibre Library": "Моя библиотека Calibre",
"OPDS URL": "URL OPDS",
"Username (optional)": "Имя пользователя (необязательно)",
"Password (optional)": "Пароль (необязательно)",
"Description (optional)": "Описание (необязательно)",
"A brief description of this catalog": "Краткое описание каталога",
"Validating...": "Проверка...",
"View All": "Посмотреть все",
"Forward": "Вперёд",
"Home": "Главная",
"{{count}} items_one": "{{count}} элемент",
"{{count}} items_few": "{{count}} элемента",
"{{count}} items_many": "{{count}} элементов",
"{{count}} items_other": "{{count}} элемента",
"Download completed": "Загрузка завершена",
"Download failed": "Загрузка не удалась",
"Open Access": "Открытый доступ",
"Borrow": "Взять в аренду",
"Buy": "Купить",
"Subscribe": "Подписаться",
"Sample": "Образец",
"Download": "Скачать",
"Open & Read": "Открыть и читать",
"Tags": "Теги",
"Tag": "Тег",
"First": "Первая",
"Previous": "Предыдущая",
"Next": "Следующая",
"Last": "Последняя",
"Cannot Load Page": "Не удалось загрузить страницу",
"An error occurred": "Произошла ошибка",
"Online Library": "Онлайн библиотека",
"URL must start with http:// or https://": "URL должен начинаться с http:// или https://",
"Title, Author, Tag, etc...": "Название, Автор, Тег и т.д...",
"Query": "Запрос",
"Subject": "Тема",
"Enter {{terms}}": "Введите {{terms}}",
"No search results found": "Результаты поиска не найдены",
"Failed to load OPDS feed: {{status}} {{statusText}}": "Не удалось загрузить ленту OPDS: {{status}} {{statusText}}",
"Search in {{title}}": "Поиск в {{title}}",
"Manage Storage": "Управление хранилищем",
"Failed to load files": "Не удалось загрузить файлы",
"Deleted {{count}} file(s)_one": "Удалён {{count}} файл",
"Deleted {{count}} file(s)_few": "Удалено {{count}} файла",
"Deleted {{count}} file(s)_many": "Удалено {{count}} файлов",
"Deleted {{count}} file(s)_other": "Удалён {{count}} файл",
"Failed to delete {{count}} file(s)_one": "Не удалось удалить {{count}} файл",
"Failed to delete {{count}} file(s)_few": "Не удалось удалить {{count}} файла",
"Failed to delete {{count}} file(s)_many": "Не удалось удалить {{count}} файлов",
"Failed to delete {{count}} file(s)_other": "Не удалось удалить {{count}} файл",
"Failed to delete files": "Не удалось удалить файлы",
"Total Files": "Всего файлов",
"Total Size": "Общий размер",
"Quota": "Квота",
"Used": "Использовано",
"Files": "Файлы",
"Search files...": "Поиск файлов...",
"Newest First": "Сначала новые",
"Oldest First": "Сначала старые",
"Largest First": "Сначала крупные",
"Smallest First": "Сначала мелкие",
"Name A-Z": "Имя A-Z",
"Name Z-A": "Имя Z-A",
"{{count}} selected_one": "{{count}} выбранный",
"{{count}} selected_few": "{{count}} выбранных",
"{{count}} selected_many": "{{count}} выбранных",
"{{count}} selected_other": "{{count}} выбранный",
"Delete Selected": "Удалить выбранные",
"Created": "Создано",
"No files found": "Файлы не найдены",
"No files uploaded yet": "Файлы ещё не загружены",
"files": "файлы",
"Page {{current}} of {{total}}": "Страница {{current}} из {{total}}",
"Are you sure to delete {{count}} selected file(s)?_one": "Вы уверены, что хотите удалить {{count}} выбранный файл?",
"Are you sure to delete {{count}} selected file(s)?_few": "Вы уверены, что хотите удалить {{count}} выбранных файла?",
"Are you sure to delete {{count}} selected file(s)?_many": "Вы уверены, что хотите удалить {{count}} выбранных файлов?",
"Are you sure to delete {{count}} selected file(s)?_other": "Вы уверены, что хотите удалить {{count}} выбранный файл?",
"Cloud Storage Usage": "Использование облачного хранилища",
"Rename Group": "Переименовать группу",
"From Directory": "Из каталога",
"Successfully imported {{count}} book(s)_one": "Успешно импортирован 1 книга",
"Successfully imported {{count}} book(s)_few": "Успешно импортировано {{count}} книги",
"Successfully imported {{count}} book(s)_many": "Успешно импортировано {{count}} книг",
"Successfully imported {{count}} book(s)_other": "Успешно импортировано {{count}} книг",
"Count": "Количество",
"Start Page": "Начальная страница",
"Search in OPDS Catalog...": "Поиск в каталоге OPDS...",
"Please log in to use advanced TTS features.": "Пожалуйста, войдите в систему, чтобы использовать расширенные функции TTS."
}
@@ -0,0 +1,769 @@
{
"Email address": "ඊමේල් ලිපිනය",
"Your Password": "ඔබේ මුරපදය",
"Your email address": "ඔබේ ඊමේල් ලිපිනය",
"Your password": "ඔබේ මුරපදය",
"Sign in": "ඇතුල් වන්න",
"Signing in...": "ඇතුල් වෙමින්...",
"Sign in with {{provider}}": "{{provider}} සමඟ ඇතුල් වන්න",
"Already have an account? Sign in": "දැනටමත් ගිණුමක් තිබේද? ඇතුල් වන්න",
"Create a Password": "මුරපදයක් සාදන්න",
"Sign up": "ලියාපදිංචි වන්න",
"Signing up...": "ලියාපදිංචි වෙමින්...",
"Don't have an account? Sign up": "ගිණුමක් නැද්ද? ලියාපදිංචි වන්න",
"Check your email for the confirmation link": "තහවුරු කිරීමේ සබැඳිය සඳහා ඔබේ ඊමේල් පරීක්ෂා කරන්න",
"Signing in ...": "ඇතුල් වෙමින්...",
"Send a magic link email": "මැජික් සබැඳි ඊමේල් යවන්න",
"Check your email for the magic link": "මැජික් සබැඳිය සඳහා ඔබේ ඊමේල් පරීක්ෂා කරන්න",
"Send reset password instructions": "මුරපදය නැවත සැකසීමේ උපදෙස් යවන්න",
"Sending reset instructions ...": "නැවත සැකසීමේ උපදෙස් යවමින්...",
"Forgot your password?": "මුරපදය අමතකද?",
"Check your email for the password reset link": "මුරපදය නැවත සැකසීමේ සබැඳිය සඳහා ඊමේල් පරීක්ෂා කරන්න",
"Phone number": "දුරකථන අංකය",
"Your phone number": "ඔබේ දුරකථන අංකය",
"Token": "ටෝකනය",
"Your OTP token": "ඔබේ OTP ටෝකනය",
"Verify token": "ටෝකනය තහවුරු කරන්න",
"Sign in with Google": "Google සමඟ ඇතුල් වන්න",
"Sign in with Apple": "Apple සමඟ ඇතුල් වන්න",
"Sign in with GitHub": "GitHub සමඟ ඇතුල් වන්න",
"New Password": "නව මුරපදය",
"Your new password": "ඔබේ නව මුරපදය",
"Update password": "මුරපදය යාවත්කාලීන කරන්න",
"Updating password ...": "මුරපදය යාවත්කාලීන කරමින්...",
"Your password has been updated": "ඔබේ මුරපදය යාවත්කාලීන කරන ලදී",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "යමක් වැරදුණි. කනගාටු නොවන්න, අපේ කණ්ඩායමට දැනුම් දී ඇති අතර අපි විසඳුමක් සඳහා කටයුතු කරමින් සිටිමු.",
"Error Details:": "දෝෂ විස්තර:",
"Try Again": "නැවත උත්සාහ කරන්න",
"Go Back": "ආපසු යන්න",
"Your Library": "ඔබේ පුස්තකාලය",
"Need help?": "උදව් අවශ්‍යද?",
"Contact Support": "සහාය සඳහා සම්බන්ධ වන්න",
"Open": "විවෘත කරන්න",
"Group": "කණ්ඩායම",
"Details": "විස්තර",
"Delete": "මකන්න",
"Cancel": "අවලංගු කරන්න",
"Confirm Deletion": "මකා දැමීම තහවුරු කරන්න",
"Are you sure to delete {{count}} selected book(s)?_one": "ඔබට විශ්වාසද තෝරාගත් පොත මකා දැමීමට?",
"Are you sure to delete {{count}} selected book(s)?_other": "ඔබට විශ්වාසද තෝරාගත් පොත් {{count}} මකා දැමීමට?",
"Deselect Book": "පොත අනිශ්චිත කරන්න",
"Select Book": "පොත තෝරන්න",
"Show Book Details": "පොතේ විස්තර පෙන්වන්න",
"Download Book": "පොත බාගන්න",
"Upload Book": "පොත උඩුගත කරන්න",
"Deselect Group": "කණ්ඩායම අනිශ්චිත කරන්න",
"Select Group": "කණ්ඩායම තෝරන්න",
"Untitled Group": "නම් නැති කණ්ඩායම",
"Group Books": "පොත් කණ්ඩායම් කරන්න",
"Remove From Group": "කණ්ඩායමෙන් ඉවත් කරන්න",
"Create New Group": "නව කණ්ඩායමක් සාදන්න",
"Save": "සුරකින්න",
"Confirm": "තහවුරු කරන්න",
"From Local File": "දේශීය ගොනුවෙන්",
"Search in {{count}} Book(s)..._one": "පොතක සොයන්න...",
"Search in {{count}} Book(s)..._other": "පොත් {{count}} කින් සොයන්න...",
"Search Books...": "පොත් සොයන්න...",
"Clear Search": "සෙවීම මකන්න",
"Import Books": "පොත් ආයාත කරන්න",
"Select Books": "පොත් තෝරන්න",
"Deselect": "අනිශ්චිත කරන්න",
"Select All": "සියල්ල තෝරන්න",
"Logged in as {{userDisplayName}}": "{{userDisplayName}} ලෙස පුරන්ගද්",
"Logged in": "පුරනගද්",
"Account": "ගිණුම",
"Sign In": "ඇතුල් වන්න",
"Auto Upload Books to Cloud": "ස්වයංක්‍රීයව cloud එකට පොත් උඩුගත කරන්න",
"Auto Import on File Open": "ගොනුව විවෘත කිරීමේදී ස්වයංක්‍රීයව ආයාත කරන්න",
"Open Last Book on Start": "ආරම්භයේදී අන්තිම පොත විවෘත කරන්න",
"Check Updates on Start": "ආරම්භයේදී යාවත්කාලීන පරීක්ෂා කරන්න",
"Open Book in New Window": "නව කවුළුවක පොත විවෘත කරන්න",
"Fullscreen": "සම්පූර්ණ තිරය",
"Always on Top": "සෑම විටම ඉහළින්",
"Always Show Status Bar": "සෑම විටම තත්ත්ව තීරුව පෙන්වන්න",
"Keep Screen Awake": "තිරය අවදි තබන්න",
"Reload Page": "පිටුව නැවත පූරණය කරන්න",
"Dark Mode": "අඳුරු ආකාරය",
"Light Mode": "ආලෝකමය ආකාරය",
"Auto Mode": "ස්වයංක්‍රීය ආකාරය",
"Upgrade to Readest Premium": "Readest Premium වෙත උසස් කරන්න",
"Download Readest": "Readest බාගන්න",
"About Readest": "Readest ගැන",
"Help improve Readest": "Readest වැඩිදියුණු කිරීමට උදව් කරන්න",
"Sharing anonymized statistics": "අනන්‍ය සංඛ්‍යාලේඛන බෙදාගැනීම",
"List": "ලැයිස්තුව",
"Grid": "ජාලකය",
"Crop": "කපන්න",
"Fit": "ගැලපෙන",
"Title": "නම",
"Author": "කතෘ",
"Format": "ආකෘතිය",
"Date Read": "කියැවූ දිනය",
"Date Added": "එක් කළ දිනය",
"Ascending": "ආරෝහණ",
"Descending": "අවරෝහණ",
"Book Covers": "පොත් ආවරණ",
"Sort by...": "අනුව සකස් කරන්න...",
"No supported files found. Supported formats: {{formats}}": "සහාය දක්වන ගොනු හමුනොවිණි. සහාය දක්වන ආකෘති: {{formats}}",
"No chapters detected": "කොටස් හඳුනානොගැනිණි",
"Failed to parse the EPUB file": "EPUB ගොනුව විග්‍රහ කිරීමට අසමත්",
"This book format is not supported": "මෙම පොත ආකෘතියට සහාය නොදක්වයි",
"Failed to import book(s): {{filenames}}": "පොත් ආයාත කිරීමට අසමත්: {{filenames}}",
"Book uploaded: {{title}}": "පොත උඩුගත විය: {{title}}",
"Insufficient storage quota": "ප්‍රමාණවත් නොවන ගබඩා ප්‍රමාණය",
"Failed to upload book: {{title}}": "පොත උඩුගත කිරීමට අසමත්: {{title}}",
"Book downloaded: {{title}}": "පොත බාගන්නා ලදී: {{title}}",
"Failed to download book: {{title}}": "පොත බාගැනීමට අසමත්: {{title}}",
"Book deleted: {{title}}": "පොත මකා දමන ලදී: {{title}}",
"Deleted cloud backup of the book: {{title}}": "පොතේ cloud backup මකා දමන ලදී: {{title}}",
"Deleted local copy of the book: {{title}}": "පොතේ දේශීය පිටපත මකා දමන ලදී: {{title}}",
"Failed to delete book: {{title}}": "පොත මකා දැමීමට අසමත්: {{title}}",
"Failed to delete cloud backup of the book: {{title}}": "පොතේ cloud backup මකා දැමීමට අසමත්: {{title}}",
"Failed to delete local copy of the book: {{title}}": "පොතේ දේශීය පිටපත මකා දැමීමට අසමත්: {{title}}",
"Welcome to your library. You can import your books here and read them anytime.": "ඔබේ පුස්තකාලයට සාදරයෙන් පිළිගනිමු. ඔබට මෙහි ඔබේ පොත් ආයාත කර ඕනෑම වේලාවක කියවිය හැක.",
"Copied to notebook": "සටහන් පොතට පිටපත් කරන ලදී",
"No annotations to export": "නිර්යාත කිරීමට සටහන් නැත",
"Exported from Readest": "Readest වෙතින් නිර්යාත කරන ලදී",
"Highlights & Annotations": "ඉස්මතු කිරීම් සහ සටහන්",
"Untitled": "නම් නැති",
"Note": "සටහන",
"Copied to clipboard": "clipboard එකට පිටපත් කරන ලදී",
"Copy": "පිටපත් කරන්න",
"Delete Highlight": "ඉස්මතු කිරීම මකන්න",
"Highlight": "ඉස්මතු කරන්න",
"Annotate": "සටහන් තබන්න",
"Search": "සොයන්න",
"Dictionary": "ශබ්දකෝෂය",
"Wikipedia": "විකිපීඩියා",
"Translate": "පරිවර්තනය කරන්න",
"Speak": "කථා කරන්න",
"Login Required": "පිවිසීම අවශ්‍ය",
"Quota Exceeded": "ප්‍රමාණය ඉක්මවන ලදී",
"Unable to fetch the translation. Please log in first and try again.": "පරිවර්තනය ලබා ගැනීමට නොහැකි. කරුණාකර පළමුව ඇතුල් වී නැවත උත්සාහ කරන්න.",
"Unable to fetch the translation. Try again later.": "පරිවර්තනය ලබා ගැනීමට නොහැකි. පසුව නැවත උත්සාහ කරන්න.",
"Original Text": "මුල් පෙළ",
"Auto Detect": "ස්වයංක්‍රීයව අනාවරණය",
"(detected)": "(අනාවරණය විය)",
"Translated Text": "පරිවර්තනය කළ පෙළ",
"System Language": "පද්ධති භාෂාව",
"Loading...": "පූරණය වෙමින්...",
"No translation available.": "පරිවර්තනය ලබා ගත නොහැක.",
"Translated by {{provider}}.": "{{provider}} විසින් පරිවර්තනය කරන ලදී.",
"Bookmark": "පොත් සලකුණ",
"Next Section": "ඊළඟ කොටස",
"Previous Section": "පෙර කොටස",
"Next Page": "ඊළඟ පිටුව",
"Previous Page": "පෙර පිටුව",
"Go Forward": "ඉදිරියට යන්න",
"Small": "කුඩා",
"Large": "විශාල",
"Sync Conflict": "සමමුහුර්ත ගැටුම",
"Sync reading progress from \"{{deviceName}}\"?": "\"{{deviceName}}\" වෙතින් කියවීමේ ප්‍රගතිය සමමුහුර්ත කරන්නද?",
"another device": "වෙනත් උපකරණයක්",
"Local Progress": "දේශීය ප්‍රගතිය",
"Remote Progress": "දුරස්ථ ප්‍රගතිය",
"Failed to connect": "සම්බන්ධ වීමට අසමත්",
"Disconnected": "විසන්ධි වුණි",
"KOReader Sync Settings": "KOReader සමමුහුර්ත සැකසුම්",
"Sync as {{userDisplayName}}": "{{userDisplayName}} ලෙස සමමුහුර්ත කරන්න",
"Sync Server Connected": "සමමුහුර්ත සේවාදායකය සම්බන්ධ විය",
"Sync Strategy": "සමමුහුර්ත උපාය",
"Ask on conflict": "ගැටුමේදී විමසන්න",
"Always use latest": "සෑම විටම නවතම භාවිතා කරන්න",
"Send changes only": "වෙනස්කම් පමණක් යවන්න",
"Receive changes only": "වෙනස්කම් පමණක් ලබන්න",
"Checksum Method": "පරීක්ෂණ ක්‍රමය",
"File Content (recommended)": "ගොනු අන්තර්ගතය (නිර්දේශිත)",
"File Name": "ගොනුවේ නම",
"Device Name": "උපකරණයේ නම",
"Connect to your KOReader Sync server.": "ඔබේ KOReader සමමුහුර්ත සේවාදායකයට සම්බන්ධ වන්න.",
"Server URL": "සේවාදායක URL",
"Username": "පරිශීලක නම",
"Your Username": "ඔබේ පරිශීලක නම",
"Password": "මුරපදය",
"Connect": "සම්බන්ධ කරන්න",
"Notebook": "සටහන් පොත",
"No notes match your search": "ඔබේ සෙවීමට ගැලපෙන සටහන් නැත",
"Excerpts": "උදාහරණ",
"Notes": "සටහන්",
"Add your notes here...": "මෙහි ඔබේ සටහන් එක් කරන්න...",
"Search notes and excerpts...": "සටහන් සහ උදාහරණ සොයන්න...",
"{{time}} min left in chapter": "පරිච්ඡේදයේ මිනිත්තු {{time}} ක් ඉතිරි",
"{{count}} pages left in chapter_one": "පරිච්ඡේදයේ පිටුව 1 ක් ඉතිරි",
"{{count}} pages left in chapter_other": "පරිච්ඡේදයේ පිටු {{count}} ක් ඉතිරි",
"Theme Mode": "තේමා ආකාරය",
"Invert Image In Dark Mode": "අඳුරු ආකාරයේදී රූපය පරිවර්තනය කරන්න",
"Override Book Color": "පොතේ වර්ණය අභිබවන්න",
"Theme Color": "තේමා වර්ණය",
"Custom": "අභිරුචි",
"Code Highlighting": "කේත ඉස්මතු කිරීම",
"Enable Highlighting": "ඉස්මතු කිරීම සක්‍රීය කරන්න",
"Code Language": "කේත භාෂාව",
"Auto": "ස්වයංක්‍රීය",
"Scroll": "අනුචලනය",
"Scrolled Mode": "අනුචලන ආකාරය",
"Continuous Scroll": "අඛණ්ඩ අනුචලනය",
"Overlap Pixels": "අතිච්ඡාදන පික්සල්",
"Disable Double Click": "ද්විත්ව ක්ලික් අබල කරන්න",
"Volume Keys for Page Flip": "පිටු පෙරැළීම සඳහා ශබ්ද යතුර",
"Animation": "සජීවිකරණය",
"Paging Animation": "පිටු සජීවිකරණය",
"Security": "ආරක්ෂාව",
"Allow JavaScript": "JavaScript ට ඉඩ දෙන්න",
"Enable only if you trust the file.": "ගොනුව විශ්වාසදායක නම් පමණක් සක්‍රීය කරන්න.",
"Font": "අකුරු වර්ගය",
"Custom Fonts": "අභිරුචි අකුරු",
"Cancel Delete": "මකා දැමීම අවලංගු කරන්න",
"Delete Font": "අකුරු මකන්න",
"Import Font": "අකුරු ආයාත කරන්න",
"Tips": "ඉඟි",
"Supported font formats: .ttf, .otf, .woff, .woff2": "සහාය දක්වන අකුරු ආකෘති: .ttf, .otf, .woff, .woff2",
"Custom fonts can be selected from the Font Face menu": "Font Face මෙනුවෙන් අභිරුචි අකුරු තෝරා ගත හැක",
"Global Settings": "ගෝලීය සැකසුම්",
"Apply to All Books": "සියලු පොත් වලට අනුගත කරන්න",
"Apply to This Book": "මෙම පොතට අනුගත කරන්න",
"Reset Settings": "සැකසුම් නැවත සකස් කරන්න",
"Manage Custom Fonts": "අභිරුචි අකුරු කළමනාකරණය කරන්න",
"System Fonts": "පද්ධති අකුරු",
"Serif Font": "Serif අකුරු",
"Sans-Serif Font": "Sans-Serif අකුරු",
"Override Book Font": "පොතේ අකුරු අභිබවන්න",
"Font Size": "අකුරු ප්‍රමාණය",
"Default Font Size": "සාමාන්‍ය අකුරු ප්‍රමාණය",
"Minimum Font Size": "අවම අකුරු ප්‍රමාණය",
"Font Weight": "අකුරු බර",
"Font Family": "අකුරු පවුල",
"Default Font": "සාමාන්‍ය අකුරු",
"CJK Font": "CJK අකුරු",
"Font Face": "අකුරු මුහුණ",
"Monospace Font": "Monospace අකුරු",
"Language": "භාෂාව",
"Interface Language": "අතුරුමුහුණතේ භාෂාව",
"Translation": "පරිවර්තනය",
"Enable Translation": "පරිවර්තනය සක්‍රීය කරන්න",
"Show Source Text": "මූලාශ්‍ර පෙළ පෙන්වන්න",
"Translation Service": "පරිවර්තන සේවාව",
"Translate To": "වෙත පරිවර්තනය කරන්න",
"Override Book Layout": "පොතේ පිරිසැලසුම අභිබවන්න",
"Writing Mode": "ලේඛන ආකාරය",
"Default": "සාමාන්‍ය",
"Horizontal Direction": "තිරස් දිශාව",
"Vertical Direction": "සිරස් දිශාව",
"RTL Direction": "RTL දිශාව",
"Border Frame": "මායිම් රාමුව",
"Double Border": "ද්විත්ව මායිම",
"Border Color": "මායිම් වර්ණය",
"Paragraph": "ඡේදය",
"Paragraph Margin": "ඡේද මායිම",
"Line Spacing": "පේළි අන්තරය",
"Word Spacing": "වචන අන්තරය",
"Letter Spacing": "අකුරු අන්තරය",
"Text Indent": "පෙළ අභ්‍යන්තරය",
"Full Justification": "සම්පූර්ණ සාධාරණීකරණය",
"Hyphenation": "යොමු කිරීම",
"Page": "පිටුව",
"Top Margin (px)": "ඉහළ මායිම (px)",
"Bottom Margin (px)": "පහළ මායිම (px)",
"Left Margin (px)": "වම් මායිම (px)",
"Right Margin (px)": "දකුණු මායිම (px)",
"Column Gap (%)": "තීරු පරතරය (%)",
"Maximum Number of Columns": "අවරෝධ තීරු ගණන",
"Maximum Column Height": "අවරෝධ තීරු උස",
"Maximum Column Width": "අවරෝධ තීරු පළල",
"Header & Footer": "ශිර්ෂය සහ පාදය",
"Show Header": "ශිර්ෂය පෙන්වන්න",
"Show Footer": "පාදය පෙන්වන්න",
"Show Remaining Time": "ඉතිරි වේලාව පෙන්වන්න",
"Show Remaining Pages": "ඉතිරි පිටු පෙන්වන්න",
"Show Reading Progress": "කියවීමේ ප්‍රගතිය පෙන්වන්න",
"Reading Progress Style": "කියවීමේ ප්‍රගති ශෛලිය",
"Page Number": "පිටු අංකය",
"Percentage": "ප්‍රතිශතය",
"Apply also in Scrolled Mode": "අනුචලන ආකාරයේදීද අනුගත කරන්න",
"Screen": "තිරය",
"Orientation": "දිශානතිය",
"Portrait": "සිරස්",
"Landscape": "තිරස්",
"Apply": "අනුගත කරන්න",
"Custom Content CSS": "අභිරුචි අන්තර්ගත CSS",
"Enter CSS for book content styling...": "පොතේ අන්තර්ගත ශෛලිකරණය සඳහා CSS ඇතුල් කරන්න...",
"Custom Reader UI CSS": "අභිරුචි කියවන්නා UI CSS",
"Enter CSS for reader interface styling...": "කියවන්නා අතුරුමුහුණත ශෛලිකරණය සඳහා CSS ඇතුල් කරන්න...",
"Layout": "පිරිසැලසුම",
"Color": "වර්ණය",
"Behavior": "හැසිරීම",
"Reset {{settings}}": "{{settings}} නැවත සකස් කරන්න",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "සියලු ලෝකය වේදිකාවක්,\nසහ සියලු පුරුෂයන් සහ ගැහැණියන් හුදු රංගන ශිල්පීන්;\nඔවුන්ට පිටවීම් සහ ඇතුල්වීම් ඇත,\nසහ එක් මනුෂ්‍යයෙක් ඔහුගේ කාලයේ බොහෝ භාගයන් ඉටු කරයි,\nඔහුගේ ක්‍රියා වයස් හතකි.\n\n— විලියම් ශේක්ස්පියර්",
"(from 'As You Like It', Act II)": "('ඔබට අවශ්‍ය ලෙස', දෙවන අංකයෙන්)",
"Custom Theme": "අභිරුචි තේමාව",
"Theme Name": "තේමා නාමය",
"Text Color": "පෙළ වර්ණය",
"Background Color": "පසුබිම් වර්ණය",
"Link Color": "සබැඳි වර්ණය",
"Preview": "පෙර දසුන",
"Font & Layout": "අකුරු සහ පිරිසැලසුම",
"More Info": "තවත් තොරතුරු",
"Parallel Read": "සමාන්තර කියවීම",
"Disable": "අබල කරන්න",
"Enable": "සක්‍රීය කරන්න",
"KOReader Sync": "KOReader සමමුහුර්තය",
"Push Progress": "ප්‍රගතිය ඉදිරියට",
"Pull Progress": "ප්‍රගතිය අදින්න",
"Export Annotations": "සටහන් නිර්යාත කරන්න",
"Sort TOC by Page": "පිටුව අනුව TOC සකස් කරන්න",
"Edit": "සංස්කරණය",
"Search...": "සොයන්න...",
"Book": "පොත",
"Chapter": "පරිච්ඡේදය",
"Match Case": "අකුරු ගැළපීම",
"Match Whole Words": "සම්පූර්ණ වචන ගැළපීම",
"Match Diacritics": "ධ්වනි ලකුණු ගැළපීම",
"TOC": "සූචිය",
"Table of Contents": "සූචිය",
"Sidebar": "පැති තීරුව",
"Disable Translation": "පරිවර්තනය අබල කරන්න",
"TTS not supported for PDF": "PDF සඳහා TTS සහාය නොදක්වයි",
"TTS not supported for this document": "මෙම ලේඛනය සඳහා TTS සහාය නොදක්වයි",
"No Timeout": "කාල සීමාවක් නැත",
"{{value}} minute": "මිනිත්තු {{value}}",
"{{value}} minutes": "මිනිත්තු {{value}}",
"{{value}} hour": "පැය {{value}}",
"{{value}} hours": "පැය {{value}}",
"Voices for {{lang}}": "{{lang}} සඳහා හඬ",
"Slow": "මන්දගාමී",
"Fast": "වේගවත්",
"{{engine}}: {{count}} voices_one": "{{engine}}: හඬ 1",
"{{engine}}: {{count}} voices_other": "{{engine}}: හඬ {{count}}",
"Sign in to Sync": "සමමුහුර්ත කිරීම සඳහා ඇතුල් වන්න",
"Synced at {{time}}": "{{time}} වේලාවේ සමමුහුර්ත විය",
"Never synced": "කිසි විටෙක සමමුහුර්ත නොවිණි",
"Reading Progress Synced": "කියවීමේ ප්‍රගතිය සමමුහුර්ත විය",
"Page {{page}} of {{total}} ({{percentage}}%)": "{{total}} න් {{page}} පිටුව ({{percentage}}%)",
"Current position": "වර්තමාන ස්ථානය",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "දළ වශයෙන් {{total}} න් {{page}} පිටුව ({{percentage}}%)",
"Approximately {{percentage}}%": "දළ වශයෙන් {{percentage}}%",
"Delete Your Account?": "ඔබේ ගිණුම මකන්නද?",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "මෙම ක්‍රියාව අවලංගු කළ නොහැක. cloud හි ඔබේ සියලු දත්ත ස්ථිරවම මකා දැමෙනු ඇත.",
"Delete Permanently": "ස්ථිරවම මකන්න",
"Restore Purchase": "මිලදී ගැනීම ප්‍රතිෂ්ඨාපනය කරන්න",
"Manage Subscription": "දායකත්වය කළමනාකරණය කරන්න",
"Reset Password": "මුරපදය නැවත සකස් කරන්න",
"Sign Out": "ඉවත් වන්න",
"Delete Account": "ගිණුම මකන්න",
"Upgrade to {{plan}}": "{{plan}} වෙත උසස් කරන්න",
"Complete Your Subscription": "ඔබේ දායකත්වය සම්පූර්ණ කරන්න",
"Coming Soon": "ඉක්මනින් පැමිණේ",
"Upgrade to Plus or Pro": "Plus හෝ Pro වෙත උසස් කරන්න",
"Current Plan": "වර්තමාන සැලැස්ම",
"Plan Limits": "සැලැස්මේ සීමා",
"Failed to delete user. Please try again later.": "පරිශීලකයා මකා දැමීමට අසමත්. කරුණාකර පසුව නැවත උත්සාහ කරන්න.",
"Failed to create checkout session": "checkout session නිර්මාණය කිරීමට අසමත්",
"No purchases found to restore.": "ප්‍රතිෂ්ඨාපනය කිරීමට මිලදී ගැනීම් නොමැත.",
"Failed to restore purchases.": "මිලදී ගැනීම් ප්‍රතිෂ්ඨාපනය කිරීමට අසමත්.",
"Failed to manage subscription.": "දායකත්වය කළමනාකරණය කිරීමට අසමත්.",
"Failed to load subscription plans.": "දායකත්ව සැලැස්ම් පූරණය කිරීමට අසමත්.",
"Loading profile...": "පැතිකඩ පූරණය වෙමින්...",
"Processing your payment...": "ඔබේ ගෙවීම සැකසෙමින්...",
"Please wait while we confirm your subscription.": "අපි ඔබේ දායකත්වය තහවුරු කරන අතරතුර කරුණාකර රැඳී සිටින්න.",
"Payment Processing": "ගෙවීම් සැකසීම",
"Your payment is being processed. This usually takes a few moments.": "ඔබේ ගෙවීම සැකසෙමින් පවතී. මෙය සාමාන්‍යයෙන් මොහොතකින් සිදු වේ.",
"Payment Failed": "ගෙවීම අසමත්",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "අපට ඔබේ දායකත්වය සැකසීමට නොහැකි විය. කරුණාකර නැවත උත්සාහ කරන්න හෝ ගැටලුව දිගටම පවතින්නේ නම් සහාය සඳහා සම්බන්ධ වන්න.",
"Back to Profile": "පැතිකඩට ආපසු",
"Subscription Successful!": "දායකත්වය සාර්ථක!",
"Thank you for your subscription! Your payment has been processed successfully.": "ඔබේ දායකත්වයට ස්තූතිය! ඔබේ ගෙවීම සාර්ථකව සැකසිණි.",
"Email:": "ඊමේල්:",
"Plan:": "සැලැස්ම:",
"Amount:": "මුදල:",
"Go to Library": "පුස්තකාලයට යන්න",
"Need help? Contact our support team at support@readest.com": "උදව් අවශ්‍යද? support@readest.com හි අපගේ සහාය කණ්ඩායමට සම්බන්ධ වන්න",
"Free Plan": "නොමිලේ සැලැස්ම",
"month": "මාසය",
"year": "වර්ෂය",
"Cross-Platform Sync": "හරස් වේදිකා සමමුහුර්තය",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "ඔබේ සියලු උපකරණ හරහා ඔබේ පුස්තකාලය, ප්‍රගතිය, ඉස්මතු කිරීම් සහ සටහන් බාධාවකින් තොරව සමමුහුර්ත කරන්න - ඔබේ ස්ථානය නැවත කිසි දිනෙක නැති නොකරන්න.",
"Customizable Reading": "අභිරුචිකරණය කළ හැකි කියවීම",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "පරිපූර්ණ කියවීමේ අත්දැකීම සඳහා සකස් කළ හැකි අකුරු, පිරිසැලසුම්, තේමා සහ උසස් ප්‍රදර්ශන සැකසුම් සමඟ සෑම විස්තරයක්ම පුද්ගලීකරණය කරන්න.",
"AI Read Aloud": "AI පවසා කියවීම",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "ඔබේ පොත් ජීවයට ගෙන එන ස්වභාවික ශබ්ද සහිත AI හඬ සමඟ අත් නිදහස් කියවීම රස විඳින්න.",
"AI Translations": "AI පරිවර්තන",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "Google, Azure, හෝ DeepL හි බලය සමඟ ඕනෑම පෙළක් ක්ෂණිකව පරිවර්තනය කරන්න - ඕනෑම භාෂාවකින් අන්තර්ගතය තේරුම් ගන්න.",
"Community Support": "ප්‍රජා සහාය",
"Connect with fellow readers and get help fast in our friendly community channels.": "සහෘදී පාඨකයන් සමඟ සම්බන්ධ වන්න සහ අපගේ මිත්‍රශීලී ප්‍රජා නාලිකා වල ඉක්මනින් උදව් ලබා ගන්න.",
"Cloud Sync Storage": "Cloud සමමුහුර්ත ගබඩාව",
"AI Translations (per day)": "AI පරිවර්තන (දිනකට)",
"Plus Plan": "Plus සැලැස්ම",
"Includes All Free Plan Benefits": "සියලු නොමිලේ සැලැස්මේ ප්‍රතිලාභ ඇතුළත්",
"Unlimited AI Read Aloud Hours": "අසීමිත AI පවසා කියවීමේ පැය",
"Listen without limits—convert as much text as you like into immersive audio.": "සීමාවකින් තොරව සවන් දෙන්න - ඔබට අවශ්‍ය තරම් පෙළ ගිලී යන ශ්‍රව්‍ය බවට පරිවර්තනය කරන්න.",
"More AI Translations": "තවත් AI පරිවර්තන",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "වැඩි දෛනික භාවිතය සහ උසස් විකල්ප සමඟ වැඩිදියුණු කළ පරිවර්තන හැකියාවන් අනවරණය කරන්න.",
"DeepL Pro Access": "DeepL Pro ප්‍රවේශය",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "ලබා ගත හැකි වඩාත් නිරවද්‍ය පරිවර්තන එන්ජිම සමඟ දිනකට අක්ෂර 100,000 ක් දක්වා පරිවර්තනය කරන්න.",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "GB 5 ක් දක්වා cloud ගබඩාව සමඟ ඔබේ සම්පූර්ණ කියවීමේ එකතුව ආරක්ෂිතව ගබඩා කරන්න සහ ප්‍රවේශ වන්න.",
"Priority Support": "ප්‍රමුඛතා සහාය",
"Enjoy faster responses and dedicated assistance whenever you need help.": "ඔබට උදව් අවශ්‍ය වන විට ඉක්මන් ප්‍රතිචාර සහ කැප වූ සහාය රස විඳින්න.",
"Pro Plan": "Pro සැලැස්ම",
"Includes All Plus Plan Benefits": "සියලු Plus සැලැස්මේ ප්‍රතිලාභ ඇතුළත්",
"Early Feature Access": "පූර්ව විශේෂාංග ප්‍රවේශය",
"Be the first to explore new features, updates, and innovations before anyone else.": "අන් කවුරුන්ටත් වඩා පළමුව නව විශේෂාංග, යාවත්කාලීන සහ නවෝත්පාදන ගවේෂණය කරන්න.",
"Advanced AI Tools": "උසස් AI මෙවලම්",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "දක්ෂ කියවීම, පරිවර්තනය සහ අන්තර්ගත සොයාගැනීම සඳහා ප්‍රබල AI මෙවලම් භාවිතා කරන්න.",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "ලබා ගත හැකි වඩාත් නිරවද්‍ය පරිවර්තන එන්ජිම සමඟ දිනකට අක්ෂර 500,000 ක් දක්වා පරිවර්තනය කරන්න.",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "GB 20 ක් දක්වා cloud ගබඩාව සමඟ ඔබේ සම්පූර්ණ කියවීමේ එකතුව ආරක්ෂිතව ගබඩා කරන්න සහ ප්‍රවේශ වන්න.",
"Version {{version}}": "සංස්කරණය {{version}}",
"Check Update": "යාවත්කාලීන පරීක්ෂා කරන්න",
"Already the latest version": "දැනටමත් නවතම සංස්කරණය",
"Checking for updates...": "යාවත්කාලීන සඳහා පරීක්ෂා කරමින්...",
"Error checking for updates": "යාවත්කාලීන පරීක්ෂා කිරීමේ දෝෂය",
"Drop to Import Books": "පොත් ආයාත කිරීමට අතහරින්න",
"Terms of Service": "සේවා නියමයන්",
"Privacy Policy": "පෞද්ගලිකත්ව ප්‍රතිපත්තිය",
"Enter book title": "පොතේ නම ඇතුල් කරන්න",
"Subtitle": "උප නාමය",
"Enter book subtitle": "පොතේ උප නාමය ඇතුල් කරන්න",
"Enter author name": "කතුවරයාගේ නම ඇතුල් කරන්න",
"Series": "කතා මාලාව",
"Enter series name": "කතා මාලාවේ නම ඇතුල් කරන්න",
"Series Index": "කතා මාලා සූචිය",
"Enter series index": "කතා මාලා සූචිය ඇතුල් කරන්න",
"Total in Series": "කතා මාලාවේ මුළු ගණන",
"Enter total books in series": "කතා මාලාවේ මුළු පොත් ගණන ඇතුල් කරන්න",
"Publisher": "ප්‍රකාශක",
"Enter publisher": "ප්‍රකාශක ඇතුල් කරන්න",
"Publication Date": "ප්‍රකාශන දිනය",
"YYYY or YYYY-MM-DD": "YYYY හෝ YYYY-MM-DD",
"Identifier": "හඳුනාගැනීම",
"Subjects": "විෂයන්",
"Fiction, Science, History": "ප්‍රබන්ධ, විද්‍යාව, ඉතිහාසය",
"Description": "විස්තරය",
"Enter book description": "පොතේ විස්තරය ඇතුල් කරන්න",
"Change cover image": "ආවරණ රූපය වෙනස් කරන්න",
"Replace": "ආදේශ කරන්න",
"Unlock cover": "ආවරණය අගුළු ඇරින්න",
"Lock cover": "ආවරණය අගුළු දමන්න",
"Auto-Retrieve Metadata": "Metadata ස්වයංක්‍රීයව ලබා ගන්න",
"Auto-Retrieve": "ස්වයංක්‍රීයව ලබා ගන්න",
"Unlock all fields": "සියලු ක්ෂේත්‍ර අගුළු ඇරින්න",
"Unlock All": "සියල්ල අගුළු ඇරින්න",
"Lock all fields": "සියලු ක්ෂේත්‍ර අගුළු දමන්න",
"Lock All": "සියල්ල අගුළු දමන්න",
"Reset": "නැවත සකස් කරන්න",
"Are you sure to delete the selected book?": "ඔබට විශ්වාසද තෝරාගත් පොත මකා දැමීමට?",
"Are you sure to delete the cloud backup of the selected book?": "ඔබට විශ්වාසද තෝරාගත් පොතේ cloud backup මකා දැමීමට?",
"Are you sure to delete the local copy of the selected book?": "ඔබට විශ්වාසද තෝරාගත් පොතේ දේශීය පිටපත මකා දැමීමට?",
"Edit Metadata": "Metadata සංස්කරණය කරන්න",
"Book Details": "පොතේ විස්තර",
"Unknown": "නොදන්නා",
"Remove from Cloud & Device": "Cloud සහ උපකරණයෙන් ඉවත් කරන්න",
"Remove from Cloud Only": "Cloud එකෙන් පමණක් ඉවත් කරන්න",
"Remove from Device Only": "උපකරණයෙන් පමණක් ඉවත් කරන්න",
"Published": "ප්‍රකාශිතය",
"Updated": "යාවත්කාලීන කරන ලදී",
"Added": "එක් කරන ලදී",
"File Size": "ගොනු ප්‍රමාණය",
"No description available": "විස්තරයක් ලබා ගත නොහැක",
"Locked": "අගුළු දමන ලදී",
"Select Metadata Source": "Metadata මූලාශ්‍රය තෝරන්න",
"Keep manual input": "අතින් ඇතුල් කළ දේ තබාගන්න",
"A new version of Readest is available!": "Readest හි නව සංස්කරණයක් ලබා ගත හැක!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Readest {{newVersion}} ලබා ගත හැක (ස්ථාපිත සංස්කරණය {{currentVersion}}).",
"Download and install now?": "දැන් බාගන්න සහ ස්ථාපනය කරන්නද?",
"Downloading {{downloaded}} of {{contentLength}}": "{{contentLength}} න් {{downloaded}} බාගනිමින්",
"Download finished": "බාගැනීම සම්පූර්ණයි",
"DOWNLOAD & INSTALL": "බාගන්න සහ ස්ථාපනය කරන්න",
"Changelog": "වෙනස්කම් ලිපිය",
"Software Update": "මෘදුකාංග යාවත්කාලීන",
"What's New in Readest": "Readest හි නවතම දේ",
"Select Files": "ගොනු තෝරන්න",
"Select Image": "රූපය තෝරන්න",
"Select Video": "වීඩියෝව තෝරන්න",
"Select Audio": "ශ්‍රව්‍ය තෝරන්න",
"Select Fonts": "අකුරු තෝරන්න",
"Storage": "ගබඩාව",
"{{percentage}}% of Cloud Sync Space Used.": "Cloud සමමුහුර්ත ඉඩෙන් {{percentage}}% භාවිතා කර ඇත.",
"Translation Characters": "පරිවර්තන අක්ෂර",
"{{percentage}}% of Daily Translation Characters Used.": "දෛනික පරිවර්තන අක්ෂර වලින් {{percentage}}% භාවිතා කර ඇත.",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "දෛනික පරිවර්තන කෝටාව ළඟා විය. AI පරිවර්තන භාවිතා කරමින් සිටීමට ඔබේ සැලැස්ම උසස් කරන්න.",
"LXGW WenKai GB Screen": "LXGW WenKai GB Screen",
"LXGW WenKai TC": "LXGW WenKai TC",
"GuanKiapTsingKhai-T": "GuanKiapTsingKhai-T",
"Source Han Serif CN VF": "Source Han Serif CN VF",
"Huiwen-mincho": "Huiwen-mincho",
"KingHwa_OldSong": "KingHwa_OldSong",
"Google Books": "Google Books",
"Open Library": "Open Library",
"Azure Translator": "Azure Translator",
"DeepL": "DeepL",
"Google Translate": "Google Translate",
"Yandex Translate": "Yandex Translate",
"Gray": "අළු",
"Sepia": "සීපියා",
"Grass": "තණකොළ",
"Cherry": "චෙරි",
"Sky": "අහස",
"Solarized": "සූර්යකිරණ",
"Gruvbox": "Gruvbox",
"Nord": "Nord",
"Contrast": "පරස්පර",
"Sunset": "හිරු බැස්ම",
"Reveal in Finder": "Finder හි පෙන්වන්න",
"Reveal in File Explorer": "File Explorer හි පෙන්වන්න",
"Reveal in Folder": "ෆෝල්ඩරයේ පෙන්වන්න",
"Previous Paragraph": "කලින් ඡේදය",
"Previous Sentence": "කලින් වාක්‍යය",
"Pause": "විරාමය",
"Play": "වාදනය කරන්න",
"Next Sentence": "මීළඟ වාක්‍යය",
"Next Paragraph": "මීළඟ ඡේදය",
"Separate Cover Page": "වෙන් වූ ආවරණ පිටුව",
"Resize Notebook": "සටහන් පොතේ ප්‍රමාණය වෙනස් කරන්න",
"Resize Sidebar": "පැති තීරුවේ ප්‍රමාණය වෙනස් කරන්න",
"Get Help from the Readest Community": "Readest ප්‍රජාවෙන් උදව් ලබා ගන්න",
"Remove cover image": "ආවරණ රූපය ඉවත් කරන්න",
"Bookshelf": "පොත් රාක්කය",
"View Menu": "මෙනුව බලන්න",
"Settings Menu": "සැකසුම් මෙනුව",
"View account details and quota": "ගිණුම් විස්තර සහ කොටස බලන්න",
"Library Header": "පුස්තකාල ශීර්ෂය",
"Book Content": "පොතේ අන්තර්ගතය",
"Footer Bar": "පාදක තීරුව",
"Header Bar": "ශීර්ෂ තීරුව",
"View Options": "දැක්ම විකල්ප",
"Book Menu": "පොත් මෙනුව",
"Search Options": "සෙවුම් විකල්ප",
"Close": "වසන්න",
"Delete Book Options": "පොත මකන විකල්ප",
"ON": "ඇක්ටිව්",
"OFF": "ඩිසැක්ටිව්",
"Reading Progress": "කියවීමේ ප්‍රගතිය",
"Page Margin": "පිටු මාර්ජින්",
"Remove Bookmark": "සටහන් ඉවත් කරන්න",
"Add Bookmark": "සටහන් එකතු කරන්න",
"Books Content": "පොත් අන්තර්ගතය",
"Jump to Location": "ස්ථානයට යන්න",
"Unpin Notebook": "බ්ලොක්නොට් අකුරු කරන්න",
"Pin Notebook": "බ්ලොක්නොට් අකුරු කරන්න",
"Hide Search Bar": "සෙවුම් තීරුව සඟවා ඇත",
"Show Search Bar": "සෙවුම් තීරුව පෙන්වන්න",
"On {{current}} of {{total}} page": "පිටුව {{current}}/{{total}}",
"Section Title": "අංශය ශීර්ෂය",
"Decrease": "අඩු කරන්න",
"Increase": "ඉහළ නැංවීම",
"Settings Panels": "සැකසුම් පැනල්",
"Settings": "සැකසුම්",
"Unpin Sidebar": "බොක්කේ අකුරු කරන්න",
"Pin Sidebar": "බොක්කේ අකුරු කරන්න",
"Toggle Sidebar": "බොක්කේ ස්ථානය වෙනස් කරන්න",
"Toggle Translation": "පරිවර්තනය ස්ථානය වෙනස් කරන්න",
"Translation Disabled": "පරිවර්තනය අක්‍රීය කර ඇත",
"Minimize": "අඩු කරන්න",
"Maximize or Restore": "ඉහළ නැංවීම හෝ ප්‍රතිසංස්කරණය",
"Exit Parallel Read": "සමාන්තර කියවීමෙන් පිටවන්න",
"Enter Parallel Read": "සමාන්තර කියවීමේදී පිවිසෙන්න",
"Zoom Level": "සංයුතිය මට්ටම",
"Zoom Out": "සංයුතිය අඩු කරන්න",
"Reset Zoom": "සංයුතිය නැවත සකසන්න",
"Zoom In": "සංයුතිය වැඩි කරන්න",
"Zoom Mode": "සංයුතිය ආකාරය",
"Single Page": "එක් පිටුව",
"Auto Spread": "ස්වයංක්‍රීය ව්‍යාප්තිය",
"Fit Page": "පිටුවට ගැලපෙන ලෙස",
"Fit Width": "පැතිකඩට ගැලපෙන ලෙස",
"Failed to select directory": "ෆෝල්ඩරය තෝරා ගැනීමට අසමත්",
"The new data directory must be different from the current one.": "නව දත්ත ෆෝල්ඩරය වර්තමාන ෆෝල්ඩරයෙන් වෙනස් විය යුතුය.",
"Migration failed: {{error}}": "මැතිවරණය අසමත් විය: {{error}}",
"Change Data Location": "දත්ත ස්ථානය වෙනස් කරන්න",
"Current Data Location": "වර්තමාන දත්ත ස්ථානය",
"Total size: {{size}}": "මුළු ප්‍රමාණය: {{size}}",
"Calculating file info...": "ගොනු තොරතුරු ගණනය කරමින්...",
"New Data Location": "නව දත්ත ස්ථානය",
"Choose Different Folder": "වෙනත් ෆෝල්ඩරයක් තෝරන්න",
"Choose New Folder": "නව ෆෝල්ඩරයක් තෝරන්න",
"Migrating data...": "දත්ත මැතිවරණය කරමින්...",
"Copying: {{file}}": "පිටපත් කරමින්: {{file}}",
"{{current}} of {{total}} files": "{{current}}/{{total}} ගොනු",
"Migration completed successfully!": "මැතිවරණය සාර්ථකව නිමවිය!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "ඔබගේ දත්ත නව ස්ථානයට මාරු කර ඇත. ක්‍රියාවලිය සම්පූර්ණ කිරීමට කරුණාකර යෙදුම නැවත ආරම්භ කරන්න.",
"Migration failed": "මැතිවරණය අසමත් විය",
"Important Notice": "මහත් අවධානයක්",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "මෙය ඔබගේ යෙදුම් දත්ත සියල්ල නව ස්ථානයට මාරු කරනු ඇත. ගමන් මාර්ගය ප්‍රමාණවත් නිදහස් ස්ථානයක් ඇති බවට සහතික වන්න.",
"Restart App": "යෙදුම නැවත ආරම්භ කරන්න",
"Start Migration": "මැතිවරණය ආරම්භ කරන්න",
"Advanced Settings": "උසස් සැකසුම්",
"File count: {{size}}": "ගොනු ගණන: {{size}}",
"Background Read Aloud": "පසුබිම් පවසා කියවීම",
"Ready to read aloud": "වාදනය කිරීමට සූදානම්",
"Read Aloud": "පවසා කියවීම",
"Screen Brightness": "තිරයේ දිදුලනුම",
"Background Image": "පසුබිම් රූපය",
"Import Image": "රූපය ආයාත කරන්න",
"Opacity": "පැහැදිලිත්වය",
"Size": "ප්‍රමාණය",
"Cover": "ආවරණය",
"Contain": "අඩංගු වන්න",
"{{number}} pages left in chapter": "පරිච්ඡේදයේ පිටු {{number}} ඉතිරිව ඇත",
"Device": "උපකරණය",
"E-Ink Mode": "E-Ink ආකාරය",
"Highlight Colors": "ඉස්මතු වර්ණ",
"Auto Screen Brightness": "ස්වයංක්‍රීය තිර දිදුලනුම",
"Pagination": "පිටුගත කිරීම",
"Disable Double Tap": "දෙවරක් ටැප් කිරීම අබල කරන්න",
"Tap to Paginate": "පිටුගත කිරීමට ටැප් කරන්න",
"Click to Paginate": "පිටුගත කිරීමට ක්ලික් කරන්න",
"Tap Both Sides": "පැත්ත දෙකම ටැප් කරන්න",
"Click Both Sides": "පැත්ත දෙකම ක්ලික් කරන්න",
"Swap Tap Sides": "පැත්ත දෙකම ටැප් කරන්න",
"Swap Click Sides": "පැත්ත දෙකම ක්ලික් කරන්න",
"Source and Translated": "මූලාශ්‍ර සහ පරිවර්තනය",
"Translated Only": "පරිවර්තනය පමණක්",
"Source Only": "මූලාශ්‍රය පමණක්",
"TTS Text": "TTS පෙළ",
"The book file is corrupted": "පොතේ ගොනුව අසමත් වී ඇත",
"The book file is empty": "පොතේ ගොනුව හිස් වේ",
"Failed to open the book file": "පොතේ ගොනුව විවෘත කිරීමට අසමත් විය",
"On-Demand Purchase": "අවශ්‍යතාවය මත මිලදී ගැනීම",
"Full Customization": "සම්පූර්ණ අභිරුචි",
"Lifetime Plan": "පොදුකාලීන සැලැස්ම",
"One-Time Payment": "එක්වර ගෙවීම",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "සියලු උපකරණ සඳහා විශේෂිත විශේෂාංග සඳහා පොදුකාලීන ප්‍රවේශය ලබා ගැනීමට එක්වර ගෙවීමක් කරන්න. ඔබට අවශ්‍ය වන විශේෂිත විශේෂාංග හෝ සේවා මිලදී ගන්න.",
"Expand Cloud Sync Storage": "කලාප සමාන්‍ය ගබඩා විශාල කරන්න",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "එක්වර මිලදී ගැනීමක් මඟින් ඔබගේ කලාප ගබඩාව සදාකාලිකව විශාල කරන්න. එක් එක් අමතර මිලදී ගැනීමක් තවත් ස්ථානයක් එක් කරයි.",
"Unlock All Customization Options": "සියලු අභිරුචි විකල්ප විවෘත කරන්න",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "අමතර තේමාවන්, ෆොන්ට්, ආකෘති විකල්ප සහ පවසා කියවීම, පරිවර්තක, කලාප ගබඩා සේවා විවෘත කරන්න.",
"Purchase Successful!": "මිලදී ගැනීම සාර්ථකයි!",
"lifetime": "පොදුකාලීන",
"Thank you for your purchase! Your payment has been processed successfully.": "ඔබේ මිලදී ගැනීමට ස්තූතියි! ඔබේ ගෙවීම සාර්ථකව සැකසිණි.",
"Order ID:": "ඇණවුම් හැඳුනුම්පත:",
"TTS Highlighting": "TTS උද්දීපනය",
"Style": "රූපය",
"Underline": "ඇටය",
"Strikethrough": "ඇඳුම",
"Squiggly": "වැලි රේඛාව",
"Outline": "පරිසීමාව",
"Save Current Color": "දැන් ඇති වර්ණය සුරකින්න",
"Quick Colors": "ක්ෂණික වර්ණ",
"Highlighter": "ඉස්මතු කරන්නා",
"Save Book Cover": "පොත් ආවරණය සුරකින්න",
"Auto-save last book cover": "අවසන් පොත් ආවරණය ස්වයංක්‍රීයව සුරකින්න",
"Back": "ආපසු",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "තහවුරු කිරීමේ විද්‍යුත් තැපැල් පණිවිඩය යවන්නා! වෙනස්කම තහවුරු කිරීම සඳහා ඔබගේ පැරණි සහ නව විද්‍යුත් තැපැල් ලිපින පරීක්ෂා කරන්න.",
"Failed to update email": "විද්‍යුත් තැපැල් යාවත්කාලීන කිරීමට අසමත් විය",
"New Email": "නව විද්‍යුත් තැපැල්",
"Your new email": "ඔබේ නව විද්‍යුත් තැපැල්",
"Updating email ...": "විද්‍යුත් තැපැල් යාවත්කාලීන කරමින් ...",
"Update email": "විද්‍යුත් තැපැල් යාවත්කාලීන කරන්න",
"Current email": "වත්මන් විද්‍යුත් තැපැල්",
"Update Email": "විද්‍යුත් තැපැල් යාවත්කාලීන කරන්න",
"All": "සියල්ල",
"Unable to open book": "පොත විවෘත කිරීමට නොහැක",
"Punctuation": "ලකුණු",
"Replace Quotation Marks": "උද්ධෘත ලකුණු ප්‍රතිස්ථාපනය කරන්න",
"Enabled only in vertical layout.": "සිරස් ආකෘතියේ පමණක් සක්‍රීයයි.",
"No Conversion": "ප්‍රතිවර්තනයක් නැත",
"Simplified to Traditional": "සරල → සාම්ප්‍රදායික",
"Traditional to Simplified": "සාම්ප්‍රදායික → සරල",
"Simplified to Traditional (Taiwan)": "සරල → සාම්ප්‍රදායික (තායිවான்)",
"Simplified to Traditional (Hong Kong)": "සරල → සාම්ප්‍රදායික (හොං කොං)",
"Simplified to Traditional (Taiwan), with phrases": "සරල → සාම්ප්‍රදායික (තායිවාන • වාක්‍ය)",
"Traditional (Taiwan) to Simplified": "සාම්ප්‍රදායික (තායිවාන) → සරල",
"Traditional (Hong Kong) to Simplified": "සාම්ප්‍රදායික (හොං කොං) → සරල",
"Traditional (Taiwan) to Simplified, with phrases": "සාම්ප්‍රදායික (තායිවාන • වාක්‍ය) → සරල",
"Convert Simplified and Traditional Chinese": "සරල/සාම්ප්‍රදායික චීන පරිවර්තනය",
"Convert Mode": "පරිවර්තන මෝඩියුලය",
"Failed to auto-save book cover for lock screen: {{error}}": "අගුළු තිරය සඳහා පොත් ආවරණය ස්වයංක්‍රීයව සුරකිීමට අසමත් විය: {{error}}",
"Download from Cloud": "කලාඬයෙන් බාගත කරන්න",
"Upload to Cloud": "කලාඬයට උඩුගත කරන්න",
"Clear Custom Fonts": "අභිරුචි අකුරු පැහැදිලි කරන්න",
"Columns": "තීරු",
"OPDS Catalogs": "OPDS දත්තසමුදා",
"Adding LAN addresses is not supported in the web app version.": "වෙබ් යෙදුම් අනුවාදයේ LAN ලිපින එක් කිරීම සහය නොදක්වයි.",
"Invalid OPDS catalog. Please check the URL.": "අවලංගු OPDS දත්තසමුදායකි. කරුණාකර URL පරීක්ෂා කරන්න.",
"Browse and download books from online catalogs": "ඔන්ලයින් දත්තසමුදා වලින් පොත් බ්‍රවුස් සහ බාගන්න",
"My Catalogs": "මගේ දත්තසමුදා",
"Add Catalog": "දත්තසමුදා එක් කරන්න",
"No catalogs yet": "තවම දත්තසමුදා නැත",
"Add your first OPDS catalog to start browsing books": "පොත් බ්‍රවුස් කිරීමට ඔබේ පළමු OPDS දත්තසමුදා එක් කරන්න",
"Add Your First Catalog": "ඔබේ පළමු දත්තසමුදා එක් කරන්න",
"Browse": "බ්‍රවුස් කරන්න",
"Popular Catalogs": "ප්‍රසිද්ධ දත්තසමුදා",
"Add": "එකතු කරන්න",
"Add OPDS Catalog": "OPDS දත්තසමුදා එක් කරන්න",
"Catalog Name": "දත්තසමුදා නාමය",
"My Calibre Library": "මගේ Calibre පුස්තකාලය",
"OPDS URL": "OPDS URL",
"Username (optional)": "පරිශීලක නාමය (අත්‍යාවශ්‍ය නොවේ)",
"Password (optional)": "මුරපදය (අත්‍යාවශ්‍ය නොවේ)",
"Description (optional)": "විස්තරය (අත්‍යාවශ්‍ය නොවේ)",
"A brief description of this catalog": "මෙම දත්තසමුදායේ කෙටි විස්තරයක්",
"Validating...": "තහවුරු කරමින්...",
"View All": "සියල්ල බලන්න",
"Forward": "ඉදිරියට",
"Home": "මුල් පිටුව",
"{{count}} items_one": "{{count}} අයිතමය",
"{{count}} items_other": "{{count}} අයිතම",
"Download completed": "බාගත කිරීම සම්පූර්ණයි",
"Download failed": "බාගත කිරීම අසාර්ථකයි",
"Open Access": "විවෘත ප්‍රවේශය",
"Borrow": "උधාර ගන්න",
"Buy": "ගන්න",
"Subscribe": "දායක වන්න",
"Sample": "නම්නය",
"Download": "බාගන්න",
"Open & Read": "විවෘත කර කියවන්න",
"Tags": "ටැග්",
"Tag": "ටැග්",
"First": "පළමුවා",
"Previous": "පෙර",
"Next": "ඊළඟ",
"Last": "අවසාන",
"Cannot Load Page": "පිටුවට ප්‍රවේශ විය නොහැක",
"An error occurred": "දෝෂයක් සිදු විය",
"Online Library": "ඔන්ලයින් පුස්තකාලය",
"URL must start with http:// or https://": "URL එක http:// හෝ https:// සමඟ ආරම්භ විය යුතුය",
"Title, Author, Tag, etc...": "ශීර්ෂය, කතුවරයා, ටැග්, ආදිය...",
"Query": "විමසුම",
"Subject": "විෂය",
"Enter {{terms}}": "{{terms}} ඇතුළත් කරන්න",
"No search results found": "සෙවුම් ප්‍රතිඵල නොමැත",
"Failed to load OPDS feed: {{status}} {{statusText}}": "OPDS ආහාරය පූරණය කිරීමට අසමත් විය: {{status}} {{statusText}}",
"Search in {{title}}": "{{title}} තුළ සෙවීම",
"Manage Storage": "ගබඩා කළමනාකරණය කරන්න",
"Failed to load files": "ගොනු උඩුගත කිරීමට නොහැකි විය",
"Deleted {{count}} file(s)_one": "ගොනුව මකා දමා ඇත",
"Deleted {{count}} file(s)_other": "ගොනු මකා දමා ඇත",
"Failed to delete {{count}} file(s)_one": "ගොනුව මකා දැමිය නොහැකි විය",
"Failed to delete {{count}} file(s)_other": "ගොනු මකා දැමිය නොහැකි විය",
"Failed to delete files": "ගොනු මකා දැමිය නොහැකි විය",
"Total Files": "මුළු ගොනු",
"Total Size": "මුළු ප්‍රමාණය",
"Quota": "කොටස",
"Used": "භාවිතා කරන ලදී",
"Files": "ගොනු",
"Search files...": "ගොනු සොයන්න...",
"Newest First": "නවතම පළමුව",
"Oldest First": "පැරණිම පළමුව",
"Largest First": "විශාලතම පළමුව",
"Smallest First": "කුඩාතම පළමුව",
"Name A-Z": "නම A-Z",
"Name Z-A": "නම Z-A",
"{{count}} selected_one": "තෝරාගත් ගොනුව",
"{{count}} selected_other": "තෝරාගත් ගොනු",
"Delete Selected": "තෝරාගත් මකා දමන්න",
"Created": "තනන ලදී",
"No files found": "ගොනු හමු නොවීය",
"No files uploaded yet": "ගොනු තවම උඩුගත කර නැත",
"files": "ගොනු",
"Page {{current}} of {{total}}": "පිටුව {{current}} / {{total}}",
"Are you sure to delete {{count}} selected file(s)?_one": "තෝරාගත් ගොනුව මකන්නට විශ්වාසද?",
"Are you sure to delete {{count}} selected file(s)?_other": "තෝරාගත් ගොනු මකන්නට විශ්වාසද?",
"Cloud Storage Usage": "කලාප ගබඩා භාවිතය",
"Rename Group": "කණ්ඩායම නැවත නම් කරන්න",
"From Directory": "ෆෝල්ඩරයෙන්",
"Successfully imported {{count}} book(s)_one": "සාර්ථකව ආයාත කළ 1 පොත",
"Successfully imported {{count}} book(s)_other": "සාර්ථකව ආයාත කළ {{count}} පොත්",
"Count": "ගණන",
"Start Page": "ආරම්භක පිටුව",
"Search in OPDS Catalog...": "OPDS දත්තසමුදා තුළ සෙවීම...",
"Please log in to use advanced TTS features.": "උසස් TTS විශේෂාංග භාවිතා කිරීමට කරුණාකර පිවිසෙන්න."
}
@@ -0,0 +1,769 @@
{
"Email address": "E-postadress",
"Your Password": "Ditt lösenord",
"Your email address": "Din e-postadress",
"Your password": "Ditt lösenord",
"Sign in": "Logga in",
"Signing in...": "Loggar in...",
"Sign in with {{provider}}": "Logga in med {{provider}}",
"Already have an account? Sign in": "Har du konto? Logga in",
"Create a Password": "Skapa lösenord",
"Sign up": "Registrera",
"Signing up...": "Registrerar...",
"Don't have an account? Sign up": "Inget konto? Registrera",
"Check your email for the confirmation link": "Kolla din e-post för bekräftelselänk",
"Signing in ...": "Loggar in...",
"Send a magic link email": "Skicka magisk länk",
"Check your email for the magic link": "Kolla din e-post för magisk länk",
"Send reset password instructions": "Skicka återställningsinstruktioner",
"Sending reset instructions ...": "Skickar instruktioner...",
"Forgot your password?": "Glömt lösenord?",
"Check your email for the password reset link": "Kolla din e-post för återställningslänk",
"Phone number": "Telefonnummer",
"Your phone number": "Ditt telefonnummer",
"Token": "Token",
"Your OTP token": "Din OTP-token",
"Verify token": "Verifiera token",
"Go Back": "Tillbaka",
"Sign in with Google": "Logga in med Google",
"Sign in with Apple": "Logga in med Apple",
"Sign in with GitHub": "Logga in med GitHub",
"New Password": "Nytt lösenord",
"Your new password": "Ditt nya lösenord",
"Update password": "Uppdatera lösenord",
"Updating password ...": "Uppdaterar lösenord...",
"Your password has been updated": "Ditt lösenord har uppdaterats",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "Något gick fel. Oroa dig inte, vårt team har meddelats och vi arbetar på en lösning.",
"Error Details:": "Feldetaljer:",
"Try Again": "Försök igen",
"Your Library": "Ditt bibliotek",
"Need help?": "Behöver du hjälp?",
"Contact Support": "Kontakta support",
"Show Book Details": "Visa bokdetaljer",
"Bookshelf": "Bokhylla",
"Import Books": "Importera böcker",
"Open": "Öppna",
"Group": "Grupp",
"Details": "Detaljer",
"Delete": "Ta bort",
"Cancel": "Avbryt",
"Confirm Deletion": "Bekräfta borttagning",
"Are you sure to delete {{count}} selected book(s)?_one": "Vill du ta bort {{count}} vald bok?",
"Are you sure to delete {{count}} selected book(s)?_other": "Vill du ta bort {{count}} valda böcker?",
"Deselect Book": "Avmarkera bok",
"Select Book": "Välj bok",
"Download Book": "Ladda ner bok",
"Upload Book": "Ladda upp bok",
"Deselect Group": "Avmarkera grupp",
"Select Group": "Välj grupp",
"Untitled Group": "Namnlös grupp",
"Group Books": "Gruppera böcker",
"Remove From Group": "Ta bort från grupp",
"Create New Group": "Skapa ny grupp",
"Save": "Spara",
"Confirm": "Bekräfta",
"From Local File": "Från lokal fil",
"Search in {{count}} Book(s)..._one": "Sök i {{count}} bok...",
"Search in {{count}} Book(s)..._other": "Sök i {{count}} böcker...",
"Search Books...": "Sök böcker...",
"Clear Search": "Rensa sökning",
"Select Books": "Välj böcker",
"Deselect": "Avmarkera",
"Select All": "Välj alla",
"View Menu": "Visa meny",
"Settings Menu": "Inställningsmeny",
"Failed to select directory": "Kunde inte välja katalog",
"The new data directory must be different from the current one.": "Den nya datakatalogen måste skilja sig från den nuvarande.",
"Migration failed: {{error}}": "Migrering misslyckades: {{error}}",
"Change Data Location": "Ändra dataplats",
"Current Data Location": "Nuvarande dataplats",
"Loading...": "Laddar...",
"File count: {{size}}": "Antal filer: {{size}}",
"Total size: {{size}}": "Total storlek: {{size}}",
"Calculating file info...": "Beräknar filinfo...",
"New Data Location": "Ny dataplats",
"Choose New Folder": "Välj ny mapp",
"Choose Different Folder": "Välj annan mapp",
"Migrating data...": "Migrerar data...",
"Copying: {{file}}": "Kopierar: {{file}}",
"{{current}} of {{total}} files": "{{current}} av {{total}} filer",
"Migration completed successfully!": "Migrering slutförd!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "Din data har flyttats till den nya platsen. Starta om appen för att slutföra processen.",
"Migration failed": "Migrering misslyckades",
"Important Notice": "Viktigt meddelande",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "Detta flyttar all din appdata till den nya platsen. Se till att målet har tillräckligt med utrymme.",
"Close": "Stäng",
"Restart App": "Starta om app",
"Start Migration": "Starta migrering",
"Dark Mode": "Mörkt läge",
"Light Mode": "Ljust läge",
"Auto Mode": "Auto-läge",
"Logged in as {{userDisplayName}}": "Inloggad som {{userDisplayName}}",
"Logged in": "Inloggad",
"View account details and quota": "Visa kontodetaljer och kvot",
"Account": "Konto",
"Sign In": "Logga in",
"Auto Upload Books to Cloud": "Auto-ladda upp böcker till moln",
"Auto Import on File Open": "Auto-importera vid filöppning",
"Open Last Book on Start": "Öppna senaste bok vid start",
"Check Updates on Start": "Sök uppdateringar vid start",
"Open Book in New Window": "Öppna bok i nytt fönster",
"Fullscreen": "Helskärm",
"Always on Top": "Alltid överst",
"Always Show Status Bar": "Visa alltid statusfält",
"Keep Screen Awake": "Håll skärm vaken",
"Background Read Aloud": "Läs upp i bakgrunden",
"Reload Page": "Ladda om sida",
"Settings": "Inställningar",
"Advanced Settings": "Avancerade inställningar",
"Upgrade to Readest Premium": "Uppgradera till Readest Premium",
"Download Readest": "Ladda ner Readest",
"About Readest": "Om Readest",
"Help improve Readest": "Hjälp förbättra Readest",
"Sharing anonymized statistics": "Dela anonymiserad statistik",
"List": "Lista",
"Grid": "Rutnät",
"Crop": "Beskär",
"Fit": "Anpassa",
"Title": "Titel",
"Author": "Författare",
"Format": "Format",
"Date Read": "Läsdatum",
"Date Added": "Datum tillagd",
"Ascending": "Stigande",
"Descending": "Fallande",
"Book Covers": "Bokomslag",
"Sort by...": "Sortera efter...",
"No supported files found. Supported formats: {{formats}}": "Inga filer hittades. Format som stöds: {{formats}}",
"No chapters detected": "Inga kapitel hittades",
"Failed to parse the EPUB file": "Kunde inte läsa EPUB-filen",
"This book format is not supported": "Detta bokformat stöds inte",
"Failed to import book(s): {{filenames}}": "Kunde inte importera bok(er): {{filenames}}",
"Book uploaded: {{title}}": "Bok uppladdad: {{title}}",
"Insufficient storage quota": "Otillräcklig lagringskvot",
"Failed to upload book: {{title}}": "Kunde inte ladda upp bok: {{title}}",
"Book downloaded: {{title}}": "Bok nedladdad: {{title}}",
"Failed to download book: {{title}}": "Kunde inte ladda ner bok: {{title}}",
"Book deleted: {{title}}": "Bok borttagen: {{title}}",
"Deleted cloud backup of the book: {{title}}": "Raderade molnkopia av bok: {{title}}",
"Deleted local copy of the book: {{title}}": "Raderade lokal kopia av bok: {{title}}",
"Failed to delete book: {{title}}": "Kunde inte ta bort bok: {{title}}",
"Failed to delete cloud backup of the book: {{title}}": "Kunde inte radera molnkopia av bok: {{title}}",
"Failed to delete local copy of the book: {{title}}": "Kunde inte radera lokal kopia av bok: {{title}}",
"Library Header": "Bibliotekshuvud",
"Welcome to your library. You can import your books here and read them anytime.": "Välkommen till ditt bibliotek. Du kan importera dina böcker här och läsa dem när som helst.",
"Copied to notebook": "Kopierat till anteckningsbok",
"No annotations to export": "Inga anteckningar att exportera",
"Exported from Readest": "Exporterad från Readest",
"Highlights & Annotations": "Markeringar & anteckningar",
"Untitled": "Namnlös",
"Note": "Anteckning",
"Copied to clipboard": "Kopierat",
"Copy": "Kopiera",
"Delete Highlight": "Ta bort markering",
"Highlight": "Markera",
"Annotate": "Anteckna",
"Search": "Sök",
"Dictionary": "Ordbok",
"Wikipedia": "Wikipedia",
"Translate": "Översätt",
"Speak": "Läs upp",
"Login Required": "Inloggning krävs",
"Quota Exceeded": "Kvot överskriden",
"Unable to fetch the translation. Please log in first and try again.": "Kunde inte hämta översättning. Logga in och försök igen.",
"Unable to fetch the translation. Try again later.": "Kunde inte hämta översättning. Försök senare.",
"Original Text": "Originaltext",
"Auto Detect": "Auto-identifiera",
"(detected)": "(identifierad)",
"Translated Text": "Översatt text",
"System Language": "Systemspråk",
"No translation available.": "Ingen översättning tillgänglig.",
"Translated by {{provider}}.": "Översatt av {{provider}}.",
"Remove Bookmark": "Ta bort bokmärke",
"Add Bookmark": "Lägg till bokmärke",
"Books Content": "Bokinnehåll",
"Book Content": "Bokinnehåll",
"Footer Bar": "Sidfot",
"Reading Progress": "Läsframsteg",
"Next Section": "Nästa sektion",
"Previous Section": "Föregående sektion",
"Next Page": "Nästa sida",
"Previous Page": "Föregående sida",
"Go Forward": "Framåt",
"Font Size": "Teckenstorlek",
"Page Margin": "Sidmarginal",
"Small": "Liten",
"Large": "Stor",
"Line Spacing": "Radavstånd",
"Table of Contents": "Innehåll",
"Notes": "Anteckningar",
"Font & Layout": "Typsnitt & layout",
"Jump to Location": "Hoppa till plats",
"Header Bar": "Sidhuvud",
"View Options": "Visningsalternativ",
"Sync Conflict": "Synkkonflikt",
"Sync reading progress from \"{{deviceName}}\"?": "Synka läsframsteg från \"{{deviceName}}\"?",
"another device": "annan enhet",
"Local Progress": "Lokalt framsteg",
"Remote Progress": "Fjärrframsteg",
"Failed to connect": "Kunde inte ansluta",
"Disconnected": "Frånkopplad",
"KOReader Sync Settings": "KOReader-synkinställningar",
"Sync as {{userDisplayName}}": "Synka som {{userDisplayName}}",
"Sync Server Connected": "Synkserver ansluten",
"Sync Strategy": "Synkstrategi",
"Ask on conflict": "Fråga vid konflikt",
"Always use latest": "Använd alltid senaste",
"Send changes only": "Skicka endast ändringar",
"Receive changes only": "Ta endast emot ändringar",
"Checksum Method": "Kontrollsummemetod",
"File Content (recommended)": "Filinnehåll (rekommenderas)",
"File Name": "Filnamn",
"Device Name": "Enhetsnamn",
"Connect to your KOReader Sync server.": "Anslut till din KOReader-synkserver.",
"Server URL": "Server-URL",
"Username": "Användarnamn",
"Your Username": "Ditt användarnamn",
"Password": "Lösenord",
"Connect": "Anslut",
"Notebook": "Anteckningsbok",
"Unpin Notebook": "Lossa anteckningsbok",
"Pin Notebook": "Fäst anteckningsbok",
"Hide Search Bar": "Dölj sökfält",
"Show Search Bar": "Visa sökfält",
"Resize Notebook": "Ändra storlek på anteckningsbok",
"No notes match your search": "Inga anteckningar matchar din sökning",
"Excerpts": "Utdrag",
"Add your notes here...": "Lägg till dina anteckningar här...",
"Search notes and excerpts...": "Sök anteckningar och utdrag...",
"{{time}} min left in chapter": "{{time}} min kvar i kapitlet",
"{{count}} pages left in chapter_one": "{{count}} sida kvar i kapitlet",
"{{count}} pages left in chapter_other": "{{count}} sidor kvar i kapitlet",
"On {{current}} of {{total}} page": "På {{current}} av {{total}} sidor",
"Section Title": "Sektionstitel",
"More Info": "Mer info",
"Parallel Read": "Parallell läsning",
"Disable": "Inaktivera",
"Enable": "Aktivera",
"Exit Parallel Read": "Avsluta parallell läsning",
"Enter Parallel Read": "Starta parallell läsning",
"KOReader Sync": "KOReader-synk",
"Push Progress": "Skicka framsteg",
"Pull Progress": "Hämta framsteg",
"Export Annotations": "Exportera anteckningar",
"Sort TOC by Page": "Sortera innehåll efter sida",
"Edit": "Redigera",
"Go to Library": "Gå till bibliotek",
"Book Menu": "Bokmeny",
"Unpin Sidebar": "Lossa sidofält",
"Pin Sidebar": "Fäst sidofält",
"Search...": "Sök...",
"Search Options": "Sökalternativ",
"Book": "Bok",
"Chapter": "Kapitel",
"Match Case": "Matchning av versaler",
"Match Whole Words": "Matchning av hela ord",
"Match Diacritics": "Matchning av diakritiska tecken",
"Sidebar": "Sidofält",
"Resize Sidebar": "Ändra storlek på sidofält",
"TOC": "Innehåll",
"Bookmark": "Bokmärke",
"Toggle Sidebar": "Visa/dölj sidofält",
"Toggle Translation": "Visa/dölj översättning",
"Disable Translation": "Inaktivera översättning",
"Enable Translation": "Aktivera översättning",
"Translation Disabled": "Översättning inaktiverad",
"Previous Paragraph": "Föregående stycke",
"Previous Sentence": "Föregående mening",
"Pause": "Pausa",
"Play": "Spela",
"Next Sentence": "Nästa mening",
"Next Paragraph": "Nästa stycke",
"Read Aloud": "Läs upp",
"Ready to read aloud": "Redo att läsa upp",
"TTS not supported for PDF": "Uppläsning stöds inte för PDF",
"TTS not supported for this document": "Uppläsning stöds inte för detta dokument",
"No Timeout": "Ingen timeout",
"{{value}} minute": "{{value}} minut",
"{{value}} minutes": "{{value}} minuter",
"{{value}} hour": "{{value}} timme",
"{{value}} hours": "{{value}} timmar",
"Voices for {{lang}}": "Röster för {{lang}}",
"Slow": "Långsam",
"Fast": "Snabb",
"{{engine}}: {{count}} voices_one": "{{engine}}: {{count}} röst",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}} röster",
"Zoom Level": "Zoomnivå",
"Zoom Out": "Zooma ut",
"Reset Zoom": "Återställ zoom",
"Zoom In": "Zooma in",
"Zoom Mode": "Zoomläge",
"Single Page": "Enkel sida",
"Auto Spread": "Auto-uppslag",
"Fit Page": "Anpassa sida",
"Fit Width": "Anpassa bredd",
"Separate Cover Page": "Separat omslagssida",
"Scrolled Mode": "Rullningsläge",
"Sign in to Sync": "Logga in för synk",
"Synced at {{time}}": "Synkad {{time}}",
"Never synced": "Aldrig synkad",
"Invert Image In Dark Mode": "Invertera bild i mörkt läge",
"Reading Progress Synced": "Läsframsteg synkat",
"Page {{page}} of {{total}} ({{percentage}}%)": "Sida {{page}} av {{total}} ({{percentage}}%)",
"Current position": "Nuvarande position",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "Cirka sida {{page}} av {{total}} ({{percentage}}%)",
"Approximately {{percentage}}%": "Cirka {{percentage}}%",
"Delete Your Account?": "Ta bort ditt konto?",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "Detta kan inte ångras. All din data i molnet raderas permanent.",
"Delete Permanently": "Ta bort permanent",
"Restore Purchase": "Återställ köp",
"Manage Subscription": "Hantera prenumeration",
"Reset Password": "Återställ lösenord",
"Sign Out": "Logga ut",
"Delete Account": "Ta bort konto",
"Upgrade to {{plan}}": "Uppgradera till {{plan}}",
"Complete Your Subscription": "Slutför din prenumeration",
"Coming Soon": "Kommer snart",
"Upgrade to Plus or Pro": "Uppgradera till Plus eller Pro",
"Current Plan": "Nuvarande plan",
"Plan Limits": "Plangränser",
"Failed to delete user. Please try again later.": "Kunde inte ta bort användare. Försök senare.",
"Failed to create checkout session": "Kunde inte skapa betalningssession",
"No purchases found to restore.": "Inga köp att återställa.",
"Failed to restore purchases.": "Kunde inte återställa köp.",
"Failed to manage subscription.": "Kunde inte hantera prenumeration.",
"Failed to load subscription plans.": "Kunde inte ladda prenumerationsplaner.",
"Loading profile...": "Laddar profil...",
"Processing your payment...": "Behandlar din betalning...",
"Please wait while we confirm your subscription.": "Vänta medan vi bekräftar din prenumeration.",
"Payment Processing": "Betalning behandlas",
"Your payment is being processed. This usually takes a few moments.": "Din betalning behandlas. Detta tar vanligtvis några ögonblick.",
"Payment Failed": "Betalning misslyckades",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "Vi kunde inte behandla din prenumeration. Försök igen eller kontakta support om problemet kvarstår.",
"Back to Profile": "Tillbaka till profil",
"Subscription Successful!": "Prenumeration lyckades!",
"Thank you for your subscription! Your payment has been processed successfully.": "Tack för din prenumeration! Din betalning har behandlats.",
"Email:": "E-post:",
"Plan:": "Plan:",
"Amount:": "Belopp:",
"Need help? Contact our support team at support@readest.com": "Behöver du hjälp? Kontakta vår support på support@readest.com",
"Free Plan": "Gratisplan",
"month": "månad",
"year": "år",
"Cross-Platform Sync": "Plattformsoberoende synk",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "Synka sömlöst ditt bibliotek, framsteg, markeringar och anteckningar mellan alla dina enheter.",
"Customizable Reading": "Anpassningsbar läsning",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "Anpassa varje detalj med justerbara typsnitt, layouter, teman och avancerade visningsinställningar.",
"AI Read Aloud": "AI-uppläsning",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "Njut av handsfree-läsning med naturligt ljudande AI-röster som ger dina böcker liv.",
"AI Translations": "AI-översättningar",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "Översätt vilken text som helst direkt med Google, Azure eller DeepL.",
"Community Support": "Community-support",
"Connect with fellow readers and get help fast in our friendly community channels.": "Anslut med andra läsare och få snabb hjälp i våra vänliga community-kanaler.",
"Cloud Sync Storage": "Molnsynklagring",
"AI Translations (per day)": "AI-översättningar (per dag)",
"Plus Plan": "Plus-plan",
"Includes All Free Plan Benefits": "Inkluderar alla gratisplanfördelar",
"Unlimited AI Read Aloud Hours": "Obegränsad AI-uppläsning",
"Listen without limits—convert as much text as you like into immersive audio.": "Lyssna obegränsat—konvertera så mycket text du vill till ljud.",
"More AI Translations": "Fler AI-översättningar",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "Lås upp förbättrad översättning med mer daglig användning och avancerade alternativ.",
"DeepL Pro Access": "DeepL Pro-åtkomst",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "Översätt upp till 100 000 tecken dagligen med den mest exakta översättningsmotorn.",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "Lagra säkert hela din lässamling med upp till 5 GB molnlagring.",
"Priority Support": "Prioriterad support",
"Enjoy faster responses and dedicated assistance whenever you need help.": "Få snabbare svar och dedikerad hjälp när du behöver det.",
"Pro Plan": "Pro-plan",
"Includes All Plus Plan Benefits": "Inkluderar alla Plus-planfördelar",
"Early Feature Access": "Tidig funktionsåtkomst",
"Be the first to explore new features, updates, and innovations before anyone else.": "Var först att utforska nya funktioner och uppdateringar innan andra.",
"Advanced AI Tools": "Avancerade AI-verktyg",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "Använd kraftfulla AI-verktyg för smartare läsning, översättning och innehållsupptäckt.",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "Översätt upp till 500 000 tecken dagligen med den mest exakta översättningsmotorn.",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "Lagra säkert hela din lässamling med upp till 20 GB molnlagring.",
"Version {{version}}": "Version {{version}}",
"Check Update": "Sök uppdatering",
"Already the latest version": "Redan senaste versionen",
"Checking for updates...": "Söker uppdateringar...",
"Error checking for updates": "Fel vid uppdateringskontroll",
"Drop to Import Books": "Släpp för att importera böcker",
"Terms of Service": "Användarvillkor",
"Privacy Policy": "Integritetspolicy",
"ON": "PÅ",
"OFF": "AV",
"Enter book title": "Ange boktitel",
"Subtitle": "Undertitel",
"Enter book subtitle": "Ange underrubrik",
"Enter author name": "Ange författarnamn",
"Series": "Serie",
"Enter series name": "Ange serienamn",
"Series Index": "Serieindex",
"Enter series index": "Ange serieindex",
"Total in Series": "Totalt i serien",
"Enter total books in series": "Ange totalt antal böcker i serien",
"Publisher": "Förlag",
"Enter publisher": "Ange förlag",
"Publication Date": "Publiceringsdatum",
"YYYY or YYYY-MM-DD": "ÅÅÅÅ eller ÅÅÅÅ-MM-DD",
"Language": "Språk",
"Identifier": "Identifierare",
"Subjects": "Ämnen",
"Fiction, Science, History": "Skönlitteratur, Vetenskap, Historia",
"Description": "Beskrivning",
"Enter book description": "Ange bokbeskrivning",
"Change cover image": "Ändra omslagsbild",
"Replace": "Ersätt",
"Remove cover image": "Ta bort omslagsbild",
"Unlock cover": "Lås upp omslag",
"Lock cover": "Lås omslag",
"Auto-Retrieve Metadata": "Auto-hämta metadata",
"Auto": "Auto",
"Auto-Retrieve": "Auto-hämta",
"Unlock all fields": "Lås upp alla fält",
"Unlock All": "Lås upp alla",
"Lock all fields": "Lås alla fält",
"Lock All": "Lås alla",
"Reset": "Återställ",
"Are you sure to delete the selected book?": "Vill du ta bort den valda boken?",
"Are you sure to delete the cloud backup of the selected book?": "Vill du ta bort molnkopian av den valda boken?",
"Are you sure to delete the local copy of the selected book?": "Vill du ta bort den lokala kopian av den valda boken?",
"Edit Metadata": "Redigera metadata",
"Book Details": "Bokdetaljer",
"Unknown": "Okänd",
"Delete Book Options": "Ta bort bokalternativ",
"Remove from Cloud & Device": "Ta bort från moln & enhet",
"Remove from Cloud Only": "Ta bort endast från moln",
"Remove from Device Only": "Ta bort endast från enhet",
"Published": "Publicerad",
"Updated": "Uppdaterad",
"Added": "Tillagd",
"File Size": "Filstorlek",
"No description available": "Ingen beskrivning tillgänglig",
"Locked": "Låst",
"Select Metadata Source": "Välj metadatakälla",
"Keep manual input": "Behåll manuell inmatning",
"Theme Mode": "Temaläge",
"Override Book Color": "Åsidosätt bokfärg",
"Theme Color": "Temafärg",
"Custom": "Anpassad",
"Code Highlighting": "Kodmarkering",
"Enable Highlighting": "Aktivera markering",
"Code Language": "Kodspråk",
"Scroll": "Rullning",
"Continuous Scroll": "Kontinuerlig rullning",
"Overlap Pixels": "Överlappande pixlar",
"Disable Double Click": "Inaktivera dubbelklick",
"Volume Keys for Page Flip": "Volymknappar för sidbyte",
"Animation": "Animation",
"Paging Animation": "Sidanimation",
"Security": "Säkerhet",
"Allow JavaScript": "Tillåt JavaScript",
"Enable only if you trust the file.": "Aktivera endast om du litar på filen.",
"Font": "Typsnitt",
"Custom Fonts": "Anpassade typsnitt",
"Cancel Delete": "Avbryt borttagning",
"Delete Font": "Ta bort typsnitt",
"Import Font": "Importera typsnitt",
"Tips": "Tips",
"Supported font formats: .ttf, .otf, .woff, .woff2": "Format som stöds: .ttf, .otf, .woff, .woff2",
"Custom fonts can be selected from the Font Face menu": "Anpassade typsnitt kan väljas från typsnittsmeny",
"Global Settings": "Globala inställningar",
"Apply to All Books": "Tillämpa på alla böcker",
"Apply to This Book": "Tillämpa på denna bok",
"Reset Settings": "Återställ inställningar",
"Manage Custom Fonts": "Hantera anpassade typsnitt",
"System Fonts": "Systemtypsnitt",
"Serif Font": "Serif-typsnitt",
"Sans-Serif Font": "Sans-serif-typsnitt",
"Override Book Font": "Åsidosätt boktypsnitt",
"Default Font Size": "Standard teckenstorlek",
"Minimum Font Size": "Minsta teckenstorlek",
"Font Weight": "Typsnittsvikt",
"Font Family": "Typsnittsfamilj",
"Default Font": "Standardtypsnitt",
"CJK Font": "CJK-typsnitt",
"Font Face": "Typsnittssnitt",
"Monospace Font": "Monospace-typsnitt",
"Interface Language": "Gränssnittsspråk",
"Translation": "Översättning",
"Show Source Text": "Visa källtext",
"Translation Service": "Översättningstjänst",
"Translate To": "Översätt till",
"Override Book Layout": "Åsidosätt boklayout",
"Writing Mode": "Skrivläge",
"Default": "Standard",
"Horizontal Direction": "Horisontell riktning",
"Vertical Direction": "Vertikal riktning",
"RTL Direction": "RTL-riktning",
"Border Frame": "Kantram",
"Double Border": "Dubbel kant",
"Border Color": "Kantfärg",
"Paragraph": "Stycke",
"Paragraph Margin": "Styckemarginal",
"Word Spacing": "Ordavstånd",
"Letter Spacing": "Bokstavsavstånd",
"Text Indent": "Textindrag",
"Full Justification": "Full justering",
"Hyphenation": "Avstavning",
"Page": "Sida",
"Top Margin (px)": "Övre marginal (px)",
"Bottom Margin (px)": "Nedre marginal (px)",
"Left Margin (px)": "Vänster marginal (px)",
"Right Margin (px)": "Höger marginal (px)",
"Column Gap (%)": "Kolumnavstånd (%)",
"Maximum Number of Columns": "Max antal kolumner",
"Maximum Column Height": "Max kolumnhöjd",
"Maximum Column Width": "Max kolumnbredd",
"Header & Footer": "Sidhuvud & sidfot",
"Show Header": "Visa sidhuvud",
"Show Footer": "Visa sidfot",
"Show Remaining Time": "Visa återstående tid",
"Show Remaining Pages": "Visa återstående sidor",
"Show Reading Progress": "Visa läsframsteg",
"Reading Progress Style": "Läsframstegsstil",
"Page Number": "Sidnummer",
"Percentage": "Procent",
"Apply also in Scrolled Mode": "Tillämpa även i rullningsläge",
"Screen": "Skärm",
"Orientation": "Orientering",
"Portrait": "Porträtt",
"Landscape": "Landskap",
"Apply": "Tillämpa",
"Custom Content CSS": "Anpassad innehålls-CSS",
"Enter CSS for book content styling...": "Ange CSS för bokinnehållsstil...",
"Custom Reader UI CSS": "Anpassad läsar-UI CSS",
"Enter CSS for reader interface styling...": "Ange CSS för läsargränssnittsstil...",
"Decrease": "Minska",
"Increase": "Öka",
"Layout": "Layout",
"Color": "Färg",
"Behavior": "Beteende",
"Settings Panels": "Inställningspaneler",
"Reset {{settings}}": "Återställ {{settings}}",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "Hela världen är en scen,\nOch alla män och kvinnor bara spelare;\nDe har sina utgångar och entréer,\nOch en man spelar i sin tid många roller,\nHans akter är sju åldrar.\n\n— William Shakespeare",
"(from 'As You Like It', Act II)": "(från 'Som ni behagar', Akt II)",
"Custom Theme": "Anpassat tema",
"Theme Name": "Temanamn",
"Text Color": "Textfärg",
"Background Color": "Bakgrundsfärg",
"Link Color": "Länkfärg",
"Preview": "Förhandsgranska",
"Get Help from the Readest Community": "Få hjälp från Readest-communityn",
"A new version of Readest is available!": "En ny version av Readest finns!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Readest {{newVersion}} finns tillgänglig (installerad version {{currentVersion}}).",
"Download and install now?": "Ladda ner och installera nu?",
"Downloading {{downloaded}} of {{contentLength}}": "Laddar ner {{downloaded}} av {{contentLength}}",
"Download finished": "Nedladdning klar",
"DOWNLOAD & INSTALL": "LADDA NER & INSTALLERA",
"Changelog": "Ändringslogg",
"Software Update": "Programuppdatering",
"What's New in Readest": "Nyheter i Readest",
"Minimize": "Minimera",
"Maximize or Restore": "Maximera eller återställ",
"Select Files": "Välj filer",
"Select Image": "Välj bild",
"Select Video": "Välj video",
"Select Audio": "Välj ljud",
"Select Fonts": "Välj typsnitt",
"Storage": "Lagring",
"{{percentage}}% of Cloud Sync Space Used.": "{{percentage}}% av molnsynkutrymme använt.",
"Translation Characters": "Översättningstecken",
"{{percentage}}% of Daily Translation Characters Used.": "{{percentage}}% av dagliga översättningstecken använt.",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "Daglig översättningskvot nådd. Uppgradera din plan för att fortsätta använda AI-översättningar.",
"LXGW WenKai GB Screen": "LXGW WenKai GB Screen",
"LXGW WenKai TC": "LXGW WenKai TC",
"GuanKiapTsingKhai-T": "GuanKiapTsingKhai-T",
"Source Han Serif CN VF": "Source Han Serif CN VF",
"Huiwen-mincho": "Huiwen-mincho",
"KingHwa_OldSong": "KingHwa_OldSong",
"Google Books": "Google Böcker",
"Open Library": "Open Library",
"Azure Translator": "Azure Translator",
"DeepL": "DeepL",
"Google Translate": "Google Translate",
"Yandex Translate": "Yandex Translate",
"Gray": "Grå",
"Sepia": "Sepia",
"Grass": "Gräs",
"Cherry": "Körsbär",
"Sky": "Himmel",
"Solarized": "Solarized",
"Gruvbox": "Gruvbox",
"Nord": "Nord",
"Contrast": "Kontrast",
"Sunset": "Solnedgång",
"Reveal in Finder": "Visa i Finder",
"Reveal in File Explorer": "Visa i Utforskaren",
"Reveal in Folder": "Visa i mapp",
"Screen Brightness": "Skärmens ljusstyrka",
"Background Image": "Bakgrundsbild",
"Import Image": "Importera bild",
"Opacity": "Opacitet",
"Size": "Storlek",
"Cover": "Omslag",
"Contain": "Innehålla",
"{{number}} pages left in chapter": "{{number}} sidor kvar i kapitlet",
"Device": "Enhet",
"E-Ink Mode": "E-Ink-läge",
"Highlight Colors": "Markeringsfärger",
"Auto Screen Brightness": "Auto-skärmens ljusstyrka",
"Pagination": "Pagination",
"Disable Double Tap": "Inaktivera dubbeltryck",
"Tap to Paginate": "Tryck för att bläddra",
"Click to Paginate": "Klicka för att bläddra",
"Tap Both Sides": "Tryck på båda sidor",
"Click Both Sides": "Klicka på båda sidor",
"Swap Tap Sides": "Byt plats på tap-sidor",
"Swap Click Sides": "Byt plats på klick-sidor",
"Source and Translated": "Källa och översatt",
"Translated Only": "Översatt endast",
"Source Only": "Endast källa",
"TTS Text": "TTS-text",
"The book file is corrupted": "Bokfilen är skadad",
"The book file is empty": "Bokfilen är tom",
"Failed to open the book file": "Kunde inte öppna bokfilen",
"On-Demand Purchase": "Köp på begäran",
"Full Customization": "Full anpassning",
"Lifetime Plan": "Livstidsplan",
"One-Time Payment": "Engångsbetalning",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "Gör en engångsbetalning för att få livstidsåtkomst till specifika funktioner på alla enheter. Köp specifika funktioner eller tjänster endast när du behöver dem.",
"Expand Cloud Sync Storage": "Utöka molnsynkroniseringslagring",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "Utöka din molnlagring för alltid med ett engångsköp. Varje ytterligare köp lägger till mer utrymme.",
"Unlock All Customization Options": "Lås upp alla anpassningsalternativ",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "Lås upp ytterligare teman, typsnitt, layoutalternativ och uppläsning, översättare, molnlagringstjänster.",
"Purchase Successful!": "Köp lyckades!",
"lifetime": "livstid",
"Thank you for your purchase! Your payment has been processed successfully.": "Tack för ditt köp! Din betalning har behandlats.",
"Order ID:": "Order-ID:",
"TTS Highlighting": "TTS-markering",
"Style": "Stil",
"Underline": "Understrykning",
"Strikethrough": "Genomstrykning",
"Squiggly": "Vågig linje",
"Outline": "Kontur",
"Save Current Color": "Spara aktuell färg",
"Quick Colors": "Snabba färger",
"Highlighter": "Markeringspenna",
"Save Book Cover": "Spara bokomslag",
"Auto-save last book cover": "Automatiskt spara senaste bokomslag",
"Back": "Tillbaka",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "Bekräftelsemail skickat! Kontrollera din gamla och nya e-postadress för att bekräfta ändringen.",
"Failed to update email": "Misslyckades med att uppdatera e-post",
"New Email": "Ny e-post",
"Your new email": "Din nya e-post",
"Updating email ...": "Uppdaterar e-post ...",
"Update email": "Uppdatera e-post",
"Current email": "Nuvarande e-post",
"Update Email": "Uppdatera e-post",
"All": "Alla",
"Unable to open book": "Kunde inte öppna bok",
"Punctuation": "Interpunktion",
"Replace Quotation Marks": "Ersätt citattecken",
"Enabled only in vertical layout.": "Aktiverad endast i vertikal layout.",
"No Conversion": "Ingen konvertering",
"Simplified to Traditional": "Förenklad → Traditionell",
"Traditional to Simplified": "Traditionell → Förenklad",
"Simplified to Traditional (Taiwan)": "Förenklad → Traditionell (Taiwan)",
"Simplified to Traditional (Hong Kong)": "Förenklad → Traditionell (Hongkong)",
"Simplified to Traditional (Taiwan), with phrases": "Förenklad → Traditionell (Taiwan • fraser)",
"Traditional (Taiwan) to Simplified": "Traditionell (Taiwan) → Förenklad",
"Traditional (Hong Kong) to Simplified": "Traditionell (Hongkong) → Förenklad",
"Traditional (Taiwan) to Simplified, with phrases": "Traditionell (Taiwan • fraser) → Förenklad",
"Convert Simplified and Traditional Chinese": "Konvertera förenklad/traditionell kinesiska",
"Convert Mode": "Konverteringsläge",
"Failed to auto-save book cover for lock screen: {{error}}": "Kunde inte autospara bokomslag för låsskärm: {{error}}",
"Download from Cloud": "Ladda ner från molnet",
"Upload to Cloud": "Ladda upp till molnet",
"Clear Custom Fonts": "Rensa anpassade typsnitt",
"Columns": "Kolumner",
"OPDS Catalogs": "OPDS-kataloger",
"Adding LAN addresses is not supported in the web app version.": "Att lägga till LAN-adresser stöds inte i webbappen.",
"Invalid OPDS catalog. Please check the URL.": "Ogiltig OPDS-katalog. Kontrollera URL:en.",
"Browse and download books from online catalogs": "Bläddra och ladda ner böcker från onlinekataloger",
"My Catalogs": "Mina kataloger",
"Add Catalog": "Lägg till katalog",
"No catalogs yet": "Inga kataloger än",
"Add your first OPDS catalog to start browsing books": "Lägg till din första OPDS-katalog för att börja bläddra i böcker",
"Add Your First Catalog": "Lägg till din första katalog",
"Browse": "Bläddra",
"Popular Catalogs": "Populära kataloger",
"Add": "Lägg till",
"Add OPDS Catalog": "Lägg till OPDS-katalog",
"Catalog Name": "Katalognamn",
"My Calibre Library": "Mitt Calibre-bibliotek",
"OPDS URL": "OPDS-URL",
"Username (optional)": "Användarnamn (valfritt)",
"Password (optional)": "Lösenord (valfritt)",
"Description (optional)": "Beskrivning (valfritt)",
"A brief description of this catalog": "En kort beskrivning av denna katalog",
"Validating...": "Verifierar...",
"View All": "Visa alla",
"Forward": "Framåt",
"Home": "Start",
"{{count}} items_one": "{{count}} objekt",
"{{count}} items_other": "{{count}} objekt",
"Download completed": "Nedladdning klar",
"Download failed": "Nedladdning misslyckades",
"Open Access": "Öppen åtkomst",
"Borrow": "Låna",
"Buy": "Köp",
"Subscribe": "Prenumerera",
"Sample": "Prov",
"Download": "Ladda ner",
"Open & Read": "Öppna & Läs",
"Tags": "Taggar",
"Tag": "Tagg",
"First": "Första",
"Previous": "Föregående",
"Next": "Nästa",
"Last": "Sista",
"Cannot Load Page": "Kan inte ladda sidan",
"An error occurred": "Ett fel uppstod",
"Online Library": "Onlinebibliotek",
"URL must start with http:// or https://": "URL måste börja med http:// eller https://",
"Title, Author, Tag, etc...": "Titel, författare, tagg, etc...",
"Query": "Fråga",
"Subject": "Ämne",
"Enter {{terms}}": "Ange {{terms}}",
"No search results found": "Inga sökresultat hittades",
"Failed to load OPDS feed: {{status}} {{statusText}}": "Misslyckades med att ladda OPDS-flöde: {{status}} {{statusText}}",
"Search in {{title}}": "Sök i {{title}}",
"Manage Storage": "Hantera lagring",
"Failed to load files": "Misslyckades att ladda filer",
"Deleted {{count}} file(s)_one": "Raderade filen",
"Deleted {{count}} file(s)_other": "Raderade filerna",
"Failed to delete {{count}} file(s)_one": "Kunde inte radera filen",
"Failed to delete {{count}} file(s)_other": "Kunde inte radera filerna",
"Failed to delete files": "Kunde inte radera filer",
"Total Files": "Totalt antal filer",
"Total Size": "Total storlek",
"Quota": "Kvot",
"Used": "Använd",
"Files": "Filer",
"Search files...": "Sök filer...",
"Newest First": "Nyast först",
"Oldest First": "Äldst först",
"Largest First": "Störst först",
"Smallest First": "Minskst först",
"Name A-Z": "Namn A-Ö",
"Name Z-A": "Namn Ö-A",
"{{count}} selected_one": "Vald fil",
"{{count}} selected_other": "Valda filer",
"Delete Selected": "Radera valda",
"Created": "Skapad",
"No files found": "Inga filer hittades",
"No files uploaded yet": "Inga filer har laddats upp än",
"files": "filer",
"Page {{current}} of {{total}}": "Sida {{current}} av {{total}}",
"Are you sure to delete {{count}} selected file(s)?_one": "Är du säker på att du vill radera filen?",
"Are you sure to delete {{count}} selected file(s)?_other": "Är du säker på att du vill radera filerna?",
"Cloud Storage Usage": "Användning av molnlagring",
"Rename Group": "Byt namn på grupp",
"From Directory": "Från katalog",
"Successfully imported {{count}} book(s)_one": "Importerat 1 bok",
"Successfully imported {{count}} book(s)_other": "Importerat {{count}} böcker",
"Count": "Antal",
"Start Page": "Start sida",
"Search in OPDS Catalog...": "Sök i OPDS-katalog...",
"Please log in to use advanced TTS features.": "Logga in för att använda avancerade TTS-funktioner."
}
@@ -0,0 +1,769 @@
{
"Email address": "மின்னஞ்சல் முகவரி",
"Your Password": "உங்கள் கடவுச்சொல்",
"Your email address": "உங்கள் மின்னஞ்சல் முகவரி",
"Your password": "உங்கள் கடவுச்சொல்",
"Sign in": "உள்நுழையவும்",
"Signing in...": "உள்நுழைகிறது...",
"Sign in with {{provider}}": "{{provider}} மூலம் உள்நுழையவும்",
"Already have an account? Sign in": "ஏற்கனவே கணக்கு உள்ளதா? உள்நுழையவும்",
"Create a Password": "கடவுச்சொல் உருவாக்கவும்",
"Sign up": "பதிவு செய்யவும்",
"Signing up...": "பதிவு செய்கிறது...",
"Don't have an account? Sign up": "கணக்கு இல்லையா? பதிவு செய்யவும்",
"Check your email for the confirmation link": "உறுதிப்படுத்தல் இணைப்பிற்கு உங்கள் மின்னஞ்சலைச் சரிபார்க்கவும்",
"Signing in ...": "உள்நுழைகிறது...",
"Send a magic link email": "மேஜிக் இணைப்பு மின்னஞ்சல் அனுப்பவும்",
"Check your email for the magic link": "மேஜிக் இணைப்பிற்கு உங்கள் மின்னஞ்சலைச் சரிபார்க்கவும்",
"Send reset password instructions": "கடவுச்சொல் மீட்டமைப்பு வழிமுறைகளை அனுப்பவும்",
"Sending reset instructions ...": "மீட்டமைப்பு வழிமுறைகள் அனுப்புகிறது...",
"Forgot your password?": "கடவுச்சொல் மறந்துவிட்டதா?",
"Check your email for the password reset link": "கடவுச்சொல் மீட்டமைப்பு இணைப்பிற்கு மின்னஞ்சலைச் சரிபார்க்கவும்",
"Phone number": "தொலைபேசி எண்",
"Your phone number": "உங்கள் தொலைபேசி எண்",
"Token": "டோக்கன்",
"Your OTP token": "உங்கள் OTP டோக்கன்",
"Verify token": "டோக்கனை சரிபார்க்கவும்",
"Sign in with Google": "Google மூலம் உள்நுழையவும்",
"Sign in with Apple": "Apple மூலம் உள்நுழையவும்",
"Sign in with GitHub": "GitHub மூலம் உள்நுழையவும்",
"New Password": "புதிய கடவுச்சொல்",
"Your new password": "உங்கள் புதிய கடவுச்சொல்",
"Update password": "கடவுச்சொல் புதுப்பிக்கவும்",
"Updating password ...": "கடவுச்சொல் புதுப்பிக்கிறது...",
"Your password has been updated": "உங்கள் கடவுச்சொல் புதுப்பிக்கப்பட்டது",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "ஏதோ தவறு நடந்துள்ளது. கவலைப்பட வேண்டாம், எங்கள் குழு அறிவிக்கப்பட்டுள்ளது மற்றும் நாங்கள் தீர்வு செய்து கொண்டிருக்கிறோம்.",
"Error Details:": "பிழை விவரங்கள்:",
"Try Again": "மீண்டும் முயற்சிக்கவும்",
"Go Back": "பின் செல்லவும்",
"Your Library": "உங்கள் நூலகம்",
"Need help?": "உதவி தேவையா?",
"Contact Support": "ஆதரவை தொடர்பு கொள்ளவும்",
"Open": "திறக்கவும்",
"Group": "குழு",
"Details": "விவரங்கள்",
"Delete": "நீக்கவும்",
"Cancel": "ரத்து செய்யவும்",
"Confirm Deletion": "நீக்குதலை உறுதிசெய்யவும்",
"Are you sure to delete {{count}} selected book(s)?_one": "தேர்ந்தெடுக்கப்பட்ட புத்தகத்தை நீக்க உறுதியா?",
"Are you sure to delete {{count}} selected book(s)?_other": "தேர்ந்தெடுக்கப்பட்ட {{count}} புத்தகங்களை நீக்க உறுதியா?",
"Deselect Book": "புத்தகத்தை தேர்வுநீக்கவум்",
"Select Book": "புத்தகத்தை தேர்வு செய்யவும்",
"Show Book Details": "புத்தக விவரங்களைக் காட்டவும்",
"Download Book": "புத்தகத்தை பதிவிறக்கவும்",
"Upload Book": "புத்தகத்தை பதிவேற்றவும்",
"Deselect Group": "குழுவை தேர்வுநீক்கவும்",
"Select Group": "குழுவை தேர்வு செய்யவும்",
"Untitled Group": "பெயரிடப்படாத குழு",
"Group Books": "புத்தகங்களை குழுவாக்கவும்",
"Remove From Group": "குழுவிலிருந்து நீக்கவும்",
"Create New Group": "புதிய குழு உருவாக்கவும்",
"Save": "சேமிக்கவும்",
"Confirm": "உறுதிசெய்யவும்",
"From Local File": "உள்ளூர் கோப்பிலிருந்து",
"Search in {{count}} Book(s)..._one": "புத்தகத்தில் தேடவும்...",
"Search in {{count}} Book(s)..._other": "{{count}} புத்தகங்களில் தேடவும்...",
"Search Books...": "புத்தகங்களைத் தேடவும்...",
"Clear Search": "தேடலை அழிக்கவும்",
"Import Books": "புத்தகங்களை இறக்குமதி செய்யவும்",
"Select Books": "புத்தகங்களை தேர்வு செய்யவும்",
"Deselect": "தேர்வுநீக்கவும்",
"Select All": "அனைத்தையும் தேர்வு செய்யவும்",
"Logged in as {{userDisplayName}}": "{{userDisplayName}} ஆக உள்நுழைந்துள்ளீர்கள்",
"Logged in": "உள்நுழைந்துள்ளீர்கள்",
"Account": "கணக்கு",
"Sign In": "உள்நுழையவும்",
"Auto Upload Books to Cloud": "புத்தகங்களை cloud இல் தானாக பதிவேற்றவும்",
"Auto Import on File Open": "கோப்பு திறக்கும்போது தானாக இறக்குமதி",
"Open Last Book on Start": "தொடங்கும்போது கடைசி புத்தகத்தைத் திறக்கவும்",
"Check Updates on Start": "தொடங்கும்போது புதுப்பிப்புகளைச் சரிபார்க்கவும்",
"Open Book in New Window": "புதிய சாளரத்தில் புத்தகத்தைத் திறக்கவும்",
"Fullscreen": "முழுத்திரை",
"Always on Top": "எப்போதும் மேலே",
"Always Show Status Bar": "எப்போதும் நிலைப் பட்டியைக் காட்டவும்",
"Keep Screen Awake": "திரையை விழித்திருக்கச் செய்யவும்",
"Reload Page": "பக்கத்தை மீண்டும் ஏற்றவும்",
"Dark Mode": "இருட்டு பயன்முறை",
"Light Mode": "வெளிச்ச பயன்முறை",
"Auto Mode": "தானியங்கி பயன்முறை",
"Upgrade to Readest Premium": "Readest Premium க்கு மேம்படுத்தவும்",
"Download Readest": "Readest பதிவிறக்கவும்",
"About Readest": "Readest பற்றி",
"Help improve Readest": "Readest மேம்படுத்த உதவவும்",
"Sharing anonymized statistics": "அடையாள விவரங்களை நீக்கிய புள்ளிவிவரங்களைப் பகிர்தல்",
"List": "பட்டியல்",
"Grid": "கட்டம்",
"Crop": "வெட்டவும்",
"Fit": "பொருத்தவும்",
"Title": "தலைப்பு",
"Author": "ஆசிரியர்",
"Format": "வடிவம்",
"Date Read": "படித்த தேதி",
"Date Added": "சேர்த்த தேதி",
"Ascending": "ஏறுவரிசை",
"Descending": "இறங்குவரிசை",
"Book Covers": "புத்தக அட்டைகள்",
"Sort by...": "வரிசைப்படுத்து...",
"No supported files found. Supported formats: {{formats}}": "ஆதரிக்கப்படும் கோப்புகள் இல்லை. ஆதரிக்கப்படும் வடிவங்கள்: {{formats}}",
"No chapters detected": "அத்தியாயங்கள் கண்டறியப்படவில்லை",
"Failed to parse the EPUB file": "EPUB கோப்பை பகுப்பாய்வு செய்ய முடியவில்லை",
"This book format is not supported": "இந்த புத்தக வடிவம் ஆதரிக்கப்படவில்லை",
"Failed to import book(s): {{filenames}}": "புத்தகங்களை இறக்குமதி செய்ய முடியவில்லை: {{filenames}}",
"Book uploaded: {{title}}": "புத்தகம் பதிவேற்றப்பட்டது: {{title}}",
"Insufficient storage quota": "போதுமான சேமிப்பக ஒதுக்கீடு இல்லை",
"Failed to upload book: {{title}}": "புத்தகத்தை பதிவேற்ற முடியவில்லை: {{title}}",
"Book downloaded: {{title}}": "புத்தகம் பதிவிறக்கப்பட்டது: {{title}}",
"Failed to download book: {{title}}": "புத்தகத்தை பதிவிறக்க முடியவில்லை: {{title}}",
"Book deleted: {{title}}": "புத்தகம் நீக்கப்பட்டது: {{title}}",
"Deleted cloud backup of the book: {{title}}": "புத்தகத்தின் cloud backup நீக்கப்பட்டது: {{title}}",
"Deleted local copy of the book: {{title}}": "புத்தகத்தின் உள்ளூர் நகல் நீக்கப்பட்டது: {{title}}",
"Failed to delete book: {{title}}": "புத்தகத்தை நீக்க முடியவில்லை: {{title}}",
"Failed to delete cloud backup of the book: {{title}}": "புத்தகத்தின் cloud backup நீக்க முடியவில்லை: {{title}}",
"Failed to delete local copy of the book: {{title}}": "புத்தகத்தின் உள்ளூர் நகல் நீக்க முடியவில்லை: {{title}}",
"Welcome to your library. You can import your books here and read them anytime.": "உங்கள் நூலகத்திற்கு வரவேற்கிறோம். நீங்கள் இங்கே உங்கள் புத்தகங்களை இறக்குமதி செய்து எப்போது வேண்டுமானாலும் படிக்கலாம்.",
"Copied to notebook": "குறிப்பேட்டில் நகலெடுக்கப்பட்டது",
"No annotations to export": "ஏற்றுமதி செய்ய குறிப்புகள் இல்லை",
"Exported from Readest": "Readest இல் இருந்து ஏற்றுமதி செய்யப்பட்டது",
"Highlights & Annotations": "முத்திரைகள் மற்றும் குறிப்புகள்",
"Untitled": "பெயரிடப்படாதது",
"Note": "குறிப்பு",
"Copied to clipboard": "clipboard இல் நகலெடுக்கப்பட்டது",
"Copy": "நகல்",
"Delete Highlight": "முத்திரையை நீக்கவும்",
"Highlight": "முத்திரை",
"Annotate": "குறிப்பிடவும்",
"Search": "தேடவும்",
"Dictionary": "அகராதி",
"Wikipedia": "விக்கிபீடியா",
"Translate": "மொழிபெயர்க்கவும்",
"Speak": "பேசவும்",
"Login Required": "உள்நுழைவு தேவை",
"Quota Exceeded": "ஒதுக்கீடு மீறப்பட்டது",
"Unable to fetch the translation. Please log in first and try again.": "மொழிபெயர்ப்பைப் பெற முடியவில்லை. முதலில் உள்நுழைந்து மீண்டும் முயற்சிக்கவும்.",
"Unable to fetch the translation. Try again later.": "மொழிபெயர்ப்பைப் பெற முடியவில்லை. பின்னர் மீண்டும் முயற்சிக்கவும்.",
"Original Text": "மூல உரை",
"Auto Detect": "தானாக கண்டறிதல்",
"(detected)": "(கண்டறியப்பட்டது)",
"Translated Text": "மொழிபெயர்க்கப்பட்ட உரை",
"System Language": "கணினி மொழி",
"Loading...": "ஏற்றுகிறது...",
"No translation available.": "மொழிபெயர்ப்பு கிடைக்கவில்லை.",
"Translated by {{provider}}.": "{{provider}} மூலம் மொழிபெயர்க்கப்பட்டது.",
"Bookmark": "புக்மார்க்",
"Next Section": "அடுத்த பிரிவு",
"Previous Section": "முந்தைய பிரிவு",
"Next Page": "அடுத்த பக்கம்",
"Previous Page": "முந்தைய பக்கம்",
"Go Forward": "முன்னோக்கி செல்லவும்",
"Small": "சிறிய",
"Large": "பெரிய",
"Sync Conflict": "ஒத்திசைவு முரண்பாடு",
"Sync reading progress from \"{{deviceName}}\"?": "\"{{deviceName}}\" இல் இருந்து வாசிப்பு முன்னேற்றத்தை ஒத்திசைக்கவா?",
"another device": "மற்றொரு சாதனம்",
"Local Progress": "உள்ளூர் முன்னேற்றம்",
"Remote Progress": "தொலை முன்னேற்றம்",
"Failed to connect": "இணைக்க முடியவில்லை",
"Disconnected": "துண்டிக்கப்பட்டது",
"KOReader Sync Settings": "KOReader ஒத்திசைவு அமைப்புகள்",
"Sync as {{userDisplayName}}": "{{userDisplayName}} ஆக ஒத்திசைக்கவும்",
"Sync Server Connected": "ஒத்திசைவு சர்வர் இணைக்கப்பட்டது",
"Sync Strategy": "ஒத்திசைவு உத்தி",
"Ask on conflict": "முரண்பாட்டில் கேட்கவும்",
"Always use latest": "எப்போதும் சமீபத்தியதைப் பயன்படுத்தவும்",
"Send changes only": "மாற்றங்களை மட்டும் அனுப்பவும்",
"Receive changes only": "மாற்றங்களை மட்டும் பெறவும்",
"Checksum Method": "சரிபார்ப்பு முறை",
"File Content (recommended)": "கோப்பு உள்ளடக்கம் (பரிந்துரைக்கப்பட்டது)",
"File Name": "கோப்பு பெயர்",
"Device Name": "சாதன பெயர்",
"Connect to your KOReader Sync server.": "உங்கள் KOReader ஒத்திசைவு சர்வருடன் இணையவும்.",
"Server URL": "சர்வர் URL",
"Username": "பயனர்பெயர்",
"Your Username": "உங்கள் பயனர்பெயர்",
"Password": "கடவுச்சொல்",
"Connect": "இணைக்கவும்",
"Notebook": "குறிப்பேடு",
"No notes match your search": "உங்கள் தேடலுக்கு பொருந்தும் குறிப்புகள் இல்லை",
"Excerpts": "உதாரணங்கள்",
"Notes": "குறிப்புகள்",
"Add your notes here...": "உங்கள் குறிப்புகளை இங்கே சேர்க்கவும்...",
"Search notes and excerpts...": "குறிப்புகள் மற்றும் உதாரணங்களைத் தேடவும்...",
"{{time}} min left in chapter": "அத்தியாயத்தில் {{time}} நிமிடங்கள் மீதமுள்ளன",
"{{count}} pages left in chapter_one": "அத்தியாயத்தில் 1 பக்கம் மீதமுள்ளது",
"{{count}} pages left in chapter_other": "அத்தியாயத்தில் {{count}} பக்கங்கள் மீதமுள்ளன",
"Theme Mode": "தீம் பயன்முறை",
"Invert Image In Dark Mode": "இருட்டு பயன்முறையில் படத்தை தலைகீழாக மாற்றவும்",
"Override Book Color": "புத்தக நிறத்தை மேலெழுதவும்",
"Theme Color": "தீம் நிறம்",
"Custom": "தனிப்பயன்",
"Code Highlighting": "குறியீடு முத்திரை",
"Enable Highlighting": "முத்திரையிடுதலை இயக்கவும்",
"Code Language": "குறியீடு மொழி",
"Auto": "தானியங்கி",
"Scroll": "உருட்டவும்",
"Scrolled Mode": "உருட்டல் பயன்முறை",
"Continuous Scroll": "தொடர்ச்சியான உருட்டல்",
"Overlap Pixels": "ஒன்றுடன் ஒன்று பிக்சல்கள்",
"Disable Double Click": "இரட்டை கிளிக்கை முடக்கவும்",
"Volume Keys for Page Flip": "பக்கம் புரட்டுவதற்கு ஒலி விசைகள்",
"Animation": "அனிமேஷன்",
"Paging Animation": "பக்க அனிமேஷன்",
"Security": "பாதுகாப்பு",
"Allow JavaScript": "JavaScript அனுமதிக்கவும்",
"Enable only if you trust the file.": "கோப்பை நம்பினால் மட்டும் இயக்கவும்.",
"Font": "எழுத்துரு",
"Custom Fonts": "தனிப்பயன் எழுத்துருக்கள்",
"Cancel Delete": "நீக்குதலை ரத்துசெய்யவும்",
"Delete Font": "எழுத்துருவை நீக்கவும்",
"Import Font": "எழுத்துருவை இறக்குமதி செய்யவும்",
"Tips": "குறிப்புகள்",
"Supported font formats: .ttf, .otf, .woff, .woff2": "ஆதரிக்கப்படும் எழுத்துரு வடிவங்கள்: .ttf, .otf, .woff, .woff2",
"Custom fonts can be selected from the Font Face menu": "Font Face மெனுவிலிருந்து தனிப்பயன் எழுத்துருக்களை தேர்வு செய்யலாம்",
"Global Settings": "உலகளாவிய அமைப்புகள்",
"Apply to All Books": "அனைத்து புத்தகங்களுக்கும் பொருந்தும்",
"Apply to This Book": "இந்த புத்தகத்திற்கு பொருந்தும்",
"Reset Settings": "அமைப்புகளை மீட்டமைக்கவும்",
"Manage Custom Fonts": "தனிப்பயன் எழுத்துருக்களை நிர்வகிக்கவும்",
"System Fonts": "கணினி எழுத்துருக்கள்",
"Serif Font": "Serif எழுத்துரு",
"Sans-Serif Font": "Sans-Serif எழுத்துரு",
"Override Book Font": "புத்தக எழுத்துருவை மேலெழுதவும்",
"Font Size": "எழுத்துரு அளவு",
"Default Font Size": "இயல்புநிலை எழுத்துரு அளவு",
"Minimum Font Size": "குறைந்தபட்ச எழுத்துரு அளவு",
"Font Weight": "எழுத்துரு எடை",
"Font Family": "எழுத்துரு குடும்பம்",
"Default Font": "இயல்புநிலை எழுத்துரு",
"CJK Font": "CJK எழுத்துரு",
"Font Face": "எழுத்துரு முகம்",
"Monospace Font": "Monospace எழுத்துரு",
"Language": "மொழி",
"Interface Language": "இடைமுக மொழி",
"Translation": "மொழிபெயர்ப்பு",
"Enable Translation": "மொழிபெயர்ப்பை இயக்கவும்",
"Show Source Text": "மூல உரையைக் காட்டவும்",
"Translation Service": "மொழிபெயர்ப்பு சேவை",
"Translate To": "இதற்கு மொழிபெயர்க்கவும்",
"Override Book Layout": "புத்தக அமைப்பை மேலெழுதவும்",
"Writing Mode": "எழுதும் பயன்முறை",
"Default": "இயல்புநிலை",
"Horizontal Direction": "கிடைமட்ட திசை",
"Vertical Direction": "செங்குத்து திசை",
"RTL Direction": "RTL திசை",
"Border Frame": "எல்லை சட்டகம்",
"Double Border": "இரட்டை எல்லை",
"Border Color": "எல்லை நிறம்",
"Paragraph": "பத்தி",
"Paragraph Margin": "பத்தி விளிம்பு",
"Line Spacing": "வரி இடைவெளி",
"Word Spacing": "சொல் இடைவெளி",
"Letter Spacing": "எழுத்து இடைவெளி",
"Text Indent": "உரை உள்தள்ளல்",
"Full Justification": "முழு நியாயம்",
"Hyphenation": "இணைக்கோடு",
"Page": "பக்கம்",
"Top Margin (px)": "மேல் விளிம்பு (px)",
"Bottom Margin (px)": "கீழ் விளிம்பு (px)",
"Left Margin (px)": "இடது விளிம்பு (px)",
"Right Margin (px)": "வலது விளிம்பு (px)",
"Column Gap (%)": "நெடுவரிசை இடைவெளி (%)",
"Maximum Number of Columns": "அதிகபட்ச நெடுவரிசை எண்ணிக்கை",
"Maximum Column Height": "அதிகபட்ச நெடுவரிசை உயரம்",
"Maximum Column Width": "அதிகபட்ச நெடுவரிசை அகலம்",
"Header & Footer": "தலைப்பு மற்றும் அடிக்குறிப்பு",
"Show Header": "தலைப்பைக் காட்டவும்",
"Show Footer": "அடிக்குறிப்பைக் காட்டவும்",
"Show Remaining Time": "மீதமுள்ள நேரத்தைக் காட்டவும்",
"Show Remaining Pages": "மீதமுள்ள பக்கங்களைக் காட்டவும்",
"Show Reading Progress": "வாசிப்பு முன்னேற்றத்தைக் காட்டவும்",
"Reading Progress Style": "வாசிப்பு முன்னேற்ற பாணி",
"Page Number": "பக்க எண்",
"Percentage": "சதவீதம்",
"Apply also in Scrolled Mode": "உருட்டல் பயன்முறையிலும் பொருந்தும்",
"Screen": "திரை",
"Orientation": "திசைநிலை",
"Portrait": "நிலைமான்",
"Landscape": "கிடைமான்",
"Apply": "பொருந்தும்",
"Custom Content CSS": "தனிப்பயன் உள்ளடக்க CSS",
"Enter CSS for book content styling...": "புத்தக உள்ளடக்க வடிவமைப்பிற்கு CSS ஐ உள்ளிடவும்...",
"Custom Reader UI CSS": "தனிப்பயன் வாசிப்பான் UI CSS",
"Enter CSS for reader interface styling...": "வாசிப்பான் இடைமுக வடிவமைப்பிற்கு CSS ஐ உள்ளிடவும்...",
"Layout": "அமைப்பு",
"Color": "நிறம்",
"Behavior": "நடத்தை",
"Reset {{settings}}": "{{settings}} மீட்டமைக்கவும்",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "உலகம் முழுவதும் ஒரு மேடை,\nஅதில் ஆண்களும் பெண்களும் வெறும் நடிகர்கள்;\nஅவர்களுக்கு வெளியேறுதலும் நுழைவும் உண்டு,\nஒரு மனிதன் தன் காலத்தில் பல பாத்திரங்களை வகிக்கிறான்,\nஅவனுடைய செயல்கள் ஏழு வயதுகளாக இருக்கின்றன.\n\n— வில்லியம் ஷேக்ஸ்பியர்",
"(from 'As You Like It', Act II)": "('ஆஸ் யூ லைக் இட்', இரண்டாவது அங்கத்திலிருந்து)",
"Custom Theme": "தனிப்பயன் தீம்",
"Theme Name": "தீம் பெயர்",
"Text Color": "உரை நிறம்",
"Background Color": "பின்னணி நிறம்",
"Link Color": "இணைப்பு நிறம்",
"Preview": "முன்னோட்டம்",
"Font & Layout": "எழுத்துரு மற்றும் அமைப்பு",
"More Info": "மேலும் தகவல்",
"Parallel Read": "இணை வாசிப்பு",
"Disable": "முடக்கவும்",
"Enable": "இயக்கவும்",
"KOReader Sync": "KOReader ஒத்திசைவு",
"Push Progress": "முன்னேற்றத்தை அனுப்பவும்",
"Pull Progress": "முன்னேற்றத்தை இழுக்கவும்",
"Export Annotations": "குறிப்புகளை ஏற்றுமதி செய்யவும்",
"Sort TOC by Page": "பக்கத்தின்படி TOC வரிசைப்படுத்தவும்",
"Edit": "திருத்தவும்",
"Search...": "தேடவும்...",
"Book": "புத்தகம்",
"Chapter": "அத்தியாயம்",
"Match Case": "எழுத்து பொருத்தம்",
"Match Whole Words": "முழு வார்த்தைகள் பொருத்தம்",
"Match Diacritics": "உச்சரிப்பு குறிகள் பொருத்தம்",
"TOC": "உள்ளடக்கம்",
"Table of Contents": "உள்ளடக்கம்",
"Sidebar": "பக்கப்பட்டி",
"Disable Translation": "மொழிபெயர்ப்பை முடக்கவும்",
"TTS not supported for PDF": "PDF க்கு TTS ஆதரிக்கப்படவில்லை",
"TTS not supported for this document": "இந்த ஆவணத்திற்கு TTS ஆதரிக்கப்படவில்லை",
"No Timeout": "நேர வரம்பு இல்லை",
"{{value}} minute": "{{value}} நிமிடம்",
"{{value}} minutes": "{{value}} நிமிடங்கள்",
"{{value}} hour": "{{value}} மணிநேரம்",
"{{value}} hours": "{{value}} மணிநேரங்கள்",
"Voices for {{lang}}": "{{lang}} க்கான குரல்கள்",
"Slow": "மெதுவாக",
"Fast": "வேகமாக",
"{{engine}}: {{count}} voices_one": "{{engine}}: 1 குரல்",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}} குரல்கள்",
"Sign in to Sync": "ஒத்திசைக்க உள்நுழையவும்",
"Synced at {{time}}": "{{time}} இல் ஒத்திசைக்கப்பட்டது",
"Never synced": "ஒத்திசைக்கப்படவில்லை",
"Reading Progress Synced": "வாசிப்பு முன்னேற்றம் ஒத்திசைக்கப்பட்டது",
"Page {{page}} of {{total}} ({{percentage}}%)": "{{total}} இல் {{page}} பக்கம் ({{percentage}}%)",
"Current position": "தற்போதைய நிலை",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "தோராயமாக {{total}} இல் {{page}} பக்கம் ({{percentage}}%)",
"Approximately {{percentage}}%": "தோராயமாக {{percentage}}%",
"Delete Your Account?": "உங்கள் கணக்கை நீக்கவா?",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "இந்த செயலை மாற்ற முடியாது. cloud இல் உள்ள உங்கள் எல்லா தரவும் நிரந்தரமாக நீக்கப்படும்.",
"Delete Permanently": "நிரந்தரமாக நீக்கவும்",
"Restore Purchase": "வாங்குதலை மீட்டெடுக்கவும்",
"Manage Subscription": "சந்தாவை நிர்வகிக்கவும்",
"Reset Password": "கடவுச்சொல் மீட்டமைக்கவும்",
"Sign Out": "வெளியேறவும்",
"Delete Account": "கணக்கை நீக்கவும்",
"Upgrade to {{plan}}": "{{plan}} க்கு மேம்படுத்தவும்",
"Complete Your Subscription": "உங்கள் சந்தாவை நிறைவு செய்யவும்",
"Coming Soon": "விரைவில் வரும்",
"Upgrade to Plus or Pro": "Plus அல்லது Pro க்கு மேம்படுத்தவும்",
"Current Plan": "தற்போதைய திட்டம்",
"Plan Limits": "திட்ட வரம்புகள்",
"Failed to delete user. Please try again later.": "பயனரை நீக்க முடியவில்லை. பின்னர் மீண்டும் முயற்சிக்கவும்.",
"Failed to create checkout session": "checkout session உருவாக்க முடியவில்லை",
"No purchases found to restore.": "மீட்டெடுக்க வாங்குதல்கள் இல்லை.",
"Failed to restore purchases.": "வாங்குதல்களை மீட்டெடுக்க முடியவில்லை.",
"Failed to manage subscription.": "சந்தாவை நிர்வகிக்க முடியவில்லை.",
"Failed to load subscription plans.": "சந்தா திட்டங்களை ஏற்ற முடியவில்லை.",
"Loading profile...": "சுயவிவரம் ஏற்றுகிறது...",
"Processing your payment...": "உங்கள் கட்டணத்தை செயல்படுத்துகிறது...",
"Please wait while we confirm your subscription.": "நாங்கள் உங்கள் சந்தாவை உறுதிசெய்யும் வரை காத்திருக்கவும்.",
"Payment Processing": "கட்டண செயலாக்கம்",
"Your payment is being processed. This usually takes a few moments.": "உங்கள் கட்டணம் செயல்படுத்தப்படுகிறது. இது பொதுவாக சில நிமிடங்கள் ஆகும்.",
"Payment Failed": "கட்டணம் தோல்வியடைந்தது",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "உங்கள் சந்தாவை செயல்படுத்த முடியவில்லை. மீண்டும் முயற்சிக்கவும் அல்லது பிரச்சனை தொடர்ந்தால் ஆதரவைத் தொடர்பு கொள்ளவும்.",
"Back to Profile": "சுயவிவரத்திற்கு திரும்பவும்",
"Subscription Successful!": "சந்தா வெற்றிகரமானது!",
"Thank you for your subscription! Your payment has been processed successfully.": "உங்கள் சந்தாவிற்கு நன்றி! உங்கள் கட்டணம் வெற்றிகரமாக செயல்படுத்தப்பட்டது.",
"Email:": "மின்னஞ்சல்:",
"Plan:": "திட்டம்:",
"Amount:": "தொகை:",
"Go to Library": "நூலகத்திற்கு செல்லவும்",
"Need help? Contact our support team at support@readest.com": "உதவி தேவையா? support@readest.com இல் எங்கள் ஆதரவு குழுவைத் தொடர்பு கொள்ளவும்",
"Free Plan": "இலவச திட்டம்",
"month": "மாதம்",
"year": "வருடம்",
"Cross-Platform Sync": "குறுக்கு தளம் ஒத்திசைவு",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "உங்கள் அனைத்து சாதனங்களிலும் உங்கள் நூலகம், முன்னேற்றம், முத்திரைகள் மற்றும் குறிப்புகளை தடையின்றி ஒத்திசைக்கவும் - உங்கள் இடத்தை மீண்டும் இழக்க வேண்டாம்.",
"Customizable Reading": "தனிப்பயனாக்கக்கூடிய வாசிப்பு",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "சரியான வாசிப்பு அனுபவத்திற்காக சரிசெய்யக்கூடிய எழுத்துருக்கள், அமைப்புகள், தீம்கள் மற்றும் மேம்பட்ட காட்சி அமைப்புகளுடன் ஒவ்வொரு விவரத்தையும் தனிப்பயனாக்கவும்.",
"AI Read Aloud": "AI உரை வாசிப்பு",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "உங்கள் புத்தகங்களை உயிர்ப்பிக்கும் இயற்கையான ஒலியுடைய AI குரல்களுடன் கைகள் இல்லாமல் வாசிப்பை அனுபவிக்கவும்.",
"AI Translations": "AI மொழிபெயர்ப்புகள்",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "Google, Azure அல்லது DeepL இன் சக்தியுடன் எந்த உரையையும் உடனடியாக மொழிபெயர்க்கவும் - எந்த மொழியிலும் உள்ளடக்கத்தை புரிந்துகொள்ளவும்.",
"Community Support": "சமூக ஆதரவு",
"Connect with fellow readers and get help fast in our friendly community channels.": "சக வாசகர்களுடன் இணையுங்கள் மற்றும் எங்கள் நட்பு சமூக சேனல்களில் விரைவாக உதவி பெறுங்கள்.",
"Cloud Sync Storage": "Cloud ஒத்திசைவு சேமிப்பு",
"AI Translations (per day)": "AI மொழிபெயர்ப்புகள் (ஒரு நாளுக்கு)",
"Plus Plan": "Plus திட்டம்",
"Includes All Free Plan Benefits": "அனைத்து இலவச திட்ட நன்மைகளும் உள்ளடங்கும்",
"Unlimited AI Read Aloud Hours": "வரம்பற்ற AI வாசிப்பு மணிநேரங்கள்",
"Listen without limits—convert as much text as you like into immersive audio.": "வரம்பு இல்லாமல் கேளுங்கள் - நீங்கள் விரும்பும் அளவு உரையை அழுத்தமான ஆடியோவாக மாற்றுங்கள்.",
"More AI Translations": "மேலும் AI மொழிபெயர்ப்புகள்",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "அதிக தினசரி பயன்பாடு மற்றும் மேம்பட்ட விருப்பங்களுடன் மேம்பட்ட மொழிபெயர்ப்பு திறன்களை திறக்கவும்.",
"DeepL Pro Access": "DeepL Pro அணுகல்",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "கிடைக்கக்கூடிய மிகவும் துல்லியமான மொழிபெயர்ப்பு இயந்திரத்துடன் தினசரி 100,000 எழுத்துகள் வரை மொழிபெயர்க்கவும்.",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "5 GB cloud சேமிப்புடன் உங்கள் முழு வாசிப்பு சேகரிப்பையும் பாதுகாப்பாக சேமித்து அணுகவும்.",
"Priority Support": "முன்னுரிமை ஆதரவு",
"Enjoy faster responses and dedicated assistance whenever you need help.": "உங்களுக்கு உதவி தேவைப்படும் போதெல்லாம் விரைவான பதில்கள் மற்றும் அர்ப்பணிப்புள்ள உதவியை அனுபவிக்கவும்.",
"Pro Plan": "Pro திட்டம்",
"Includes All Plus Plan Benefits": "அனைத்து Plus திட்ட நன்மைகளும் உள்ளடங்கும்",
"Early Feature Access": "முந்தைய அம்சம் அணுகல்",
"Be the first to explore new features, updates, and innovations before anyone else.": "மற்றவர்களுக்கு முன்பே புதிய அம்சங்கள், புதுப்பிப்புகள் மற்றும் கண்டுபிடிப்புகளை ஆராயும் முதல் நபராக இருங்கள்.",
"Advanced AI Tools": "மேம்பட்ட AI கருவிகள்",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "புத்திசாலித்தனமான வாசிப்பு, மொழிபெயர்ப்பு மற்றும் உள்ளடக்க கண்டுபிடிப்புக்காக சக்திவாய்ந்த AI கருவிகளைப் பயன்படுத்துங்கள்.",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "கிடைக்கக்கூடிய மிகவும் துல்லியமான மொழிபெயர்ப்பு இயந்திரத்துடன் தினசரி 500,000 எழுத்துகள் வரை மொழிபெயர்க்கவும்.",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "20 GB cloud சேமிப்புடன் உங்கள் முழு வாசிப்பு சேகரிப்பையும் பாதுகாப்பாக சேமித்து அணுகவும்.",
"Version {{version}}": "பதிப்பு {{version}}",
"Check Update": "புதுப்பிப்பு சரிபார்க்கவும்",
"Already the latest version": "ஏற்கனவே சமீபத்திய பதிப்பு",
"Checking for updates...": "புதுப்பிப்புகளுக்கு சரிபார்க்கிறது...",
"Error checking for updates": "புதுப்பிப்புகள் சரிபார்க்கும்போது பிழை",
"Drop to Import Books": "புத்தகங்களை இறக்குமதி செய்ய இழுத்து விடவும்",
"Terms of Service": "சேவை விதிமுறைகள்",
"Privacy Policy": "தனியுரிமைக் கொள்கை",
"Enter book title": "புத்தக தலைப்பை உள்ளிடவும்",
"Subtitle": "துணைத்தலைப்பு",
"Enter book subtitle": "புத்தக துணைத்தலைப்பை உள்ளிடவும்",
"Enter author name": "ஆசிரியர் பெயரை உள்ளிடவும்",
"Series": "தொடர்",
"Enter series name": "தொடர் பெயரை உள்ளிடவும்",
"Series Index": "தொடர் குறியீடு",
"Enter series index": "தொடர் குறியீட்டை உள்ளிடவும்",
"Total in Series": "தொடரில் மொத்தம்",
"Enter total books in series": "தொடரில் மொத்த புத்தகங்களை உள்ளிடவும்",
"Publisher": "வெளியீட்டாளர்",
"Enter publisher": "வெளியீட்டாளரை உள்ளிடவும்",
"Publication Date": "வெளியீட்டு தேதி",
"YYYY or YYYY-MM-DD": "YYYY அல்லது YYYY-MM-DD",
"Identifier": "அடையாளங்காட்டி",
"Subjects": "பாடங்கள்",
"Fiction, Science, History": "கற்பனை, அறிவியல், வரலாறு",
"Description": "விளக்கம்",
"Enter book description": "புத்தக விளக்கத்தை உள்ளிடவும்",
"Change cover image": "அட்டை படத்தை மாற்றவும்",
"Replace": "மாற்றவும்",
"Unlock cover": "அட்டையை திறக்கவும்",
"Lock cover": "அட்டையை பூட்டவும்",
"Auto-Retrieve Metadata": "Metadata ஐ தானாக பெறவும்",
"Auto-Retrieve": "தானாக பெறவும்",
"Unlock all fields": "அனைத்து புலங்களையும் திறக்கவும்",
"Unlock All": "அனைத்தையும் திறக்கவும்",
"Lock all fields": "அனைத்து புலங்களையும் பூட்டவும்",
"Lock All": "அனைத்தையும் பூட்டவும்",
"Reset": "மீட்டமைக்கவும்",
"Are you sure to delete the selected book?": "தேர்ந்தெடுக்கப்பட்ட புத்தகத்தை நீக்க உறுதியா?",
"Are you sure to delete the cloud backup of the selected book?": "தேர்ந்தெடுக்கப்பட்ட புத்தகத்தின் cloud backup ஐ நீக்க உறுதியா?",
"Are you sure to delete the local copy of the selected book?": "தேர்ந்தெடுக்கப்பட்ட புத்தகத்தின் உள்ளூர் நகலை நீக்க உறுதியா?",
"Edit Metadata": "Metadata ஐ திருத்தவும்",
"Book Details": "புத்தக விவரங்கள்",
"Unknown": "தெரியாதது",
"Remove from Cloud & Device": "Cloud மற்றும் சாதனத்திலிருந்து நீக்கவும்",
"Remove from Cloud Only": "Cloud இலிருந்து மட்டும் நீக்கவும்",
"Remove from Device Only": "சாதனத்திலிருந்து மட்டும் நீக்கவும்",
"Published": "வெளியிடப்பட்டது",
"Updated": "புதுப்பிக்கப்பட்டது",
"Added": "சேர்க்கப்பட்டது",
"File Size": "கோப்பு அளவு",
"No description available": "விளக்கம் கிடைக்கவில்லை",
"Locked": "பூட்டப்பட்டது",
"Select Metadata Source": "Metadata மூலத்தைத் தேர்வுசெய்யவும்",
"Keep manual input": "கைமுறை உள்ளீட்டைத் தக்கவைக்கவும்",
"A new version of Readest is available!": "Readest இன் புதிய பதிப்பு கிடைக்கிறது!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Readest {{newVersion}} கிடைக்கிறது (நிறுவப்பட்ட பதிப்பு {{currentVersion}}).",
"Download and install now?": "இப்போது பதிவிறக்கி நிறுவ வேண்டுமா?",
"Downloading {{downloaded}} of {{contentLength}}": "{{contentLength}} இல் {{downloaded}} பதிவிறக்கம்",
"Download finished": "பதிவிறக்கம் முடிந்தது",
"DOWNLOAD & INSTALL": "பதிவிறக்கம் மற்றும் நிறுவல்",
"Changelog": "மாற்ற பதிவு",
"Software Update": "மென்பொருள் புதுப்பிப்பு",
"What's New in Readest": "Readest இல் புதியது",
"Select Files": "கோப்புகளைத் தேர்வுசெய்யவும்",
"Select Image": "படத்தைத் தேர்வுசெய்யவும்",
"Select Video": "வீடியோவைத் தேர்வுசெய்யவும்",
"Select Audio": "ஆடியோவைத் தேர்வுசெய்யவும்",
"Select Fonts": "எழுத்துருக்களைத் தேர்வுசெய்யவும்",
"Storage": "சேமிப்பு",
"{{percentage}}% of Cloud Sync Space Used.": "Cloud Sync இடத்தில் {{percentage}}% பயன்படுத்தப்பட்டுள்ளது.",
"Translation Characters": "மொழிபெயர்ப்பு எழுத்துகள்",
"{{percentage}}% of Daily Translation Characters Used.": "தினசரி மொழிபெயர்ப்பு எழுத்துகளில் {{percentage}}% பயன்படுத்தப்பட்டுள்ளது.",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "தினசரி மொழிபெயர்ப்பு ஒதுக்கீட்டை அடைந்துவிட்டது. AI மொழிபெயர்ப்புகளைத் தொடர்ந்து பயன்படுத்த உங்கள் திட்டத்தை மேம்படுத்தவும்.",
"LXGW WenKai GB Screen": "LXGW WenKai GB Screen",
"LXGW WenKai TC": "LXGW WenKai TC",
"GuanKiapTsingKhai-T": "GuanKiapTsingKhai-T",
"Source Han Serif CN VF": "Source Han Serif CN VF",
"Huiwen-mincho": "Huiwen-mincho",
"KingHwa_OldSong": "KingHwa_OldSong",
"Google Books": "Google Books",
"Open Library": "Open Library",
"Azure Translator": "Azure Translator",
"DeepL": "DeepL",
"Google Translate": "Google Translate",
"Yandex Translate": "Yandex Translate",
"Gray": "சாம்பல்",
"Sepia": "செபியா",
"Grass": "புல்",
"Cherry": "செர்ரி",
"Sky": "வானம்",
"Solarized": "சூரியமயம்",
"Gruvbox": "Gruvbox",
"Nord": "Nord",
"Contrast": "மாறுபாடு",
"Sunset": "சூரிய அஸ்தமனம்",
"Reveal in Finder": "Finder இல் காட்டவும்",
"Reveal in File Explorer": "File Explorer இல் காட்டவும்",
"Reveal in Folder": "கோப்புறையில் காட்டவும்",
"Previous Paragraph": "முந்தைய பத்தி",
"Previous Sentence": "முந்தைய வாக்கியம்",
"Pause": "இடைநிறுத்தம்",
"Play": "இயக்கு",
"Next Sentence": "அடுத்த வாக்கியம்",
"Next Paragraph": "அடுத்த பத்தி",
"Separate Cover Page": "தனித்த அட்டை பக்கம்",
"Resize Notebook": "குறிப்பேட்டை மீட்டமைக்கவும்",
"Resize Sidebar": "பக்கப்பட்டியை மீட்டமைக்கவும்",
"Get Help from the Readest Community": "Readest சமூகத்திலிருந்து உதவி பெறவும்",
"Remove cover image": "அட்டை படத்தை நீக்கவும்",
"Bookshelf": "புத்தக அலமாரி",
"View Menu": "மெனுவை பார்க்கவும்",
"Settings Menu": "அமைப்புகள் மெனு",
"View account details and quota": "கணக்கு விவரங்கள் மற்றும் ஒதுக்கீட்டை பார்க்கவும்",
"Library Header": "நூலக தலைப்பு",
"Book Content": "புத்தக உள்ளடக்கம்",
"Footer Bar": "அடிக்குறிப்பு பட்டை",
"Header Bar": "தலைப்பு பட்டை",
"View Options": "காணும் விருப்பங்கள்",
"Book Menu": "புத்தக மெனு",
"Search Options": "தேடல் விருப்பங்கள்",
"Close": "மூடு",
"Delete Book Options": "புத்தகத்தை நீக்கும் விருப்பங்கள்",
"ON": "செயல்படுத்தவும்",
"OFF": "நிறுத்தவும்",
"Reading Progress": "வாசிப்பு முன்னேற்றம்",
"Page Margin": "பக்கம் மாறின",
"Remove Bookmark": "புக்மார்க் நீக்கவும்",
"Add Bookmark": "புக்மார்க் சேர்க்கவும்",
"Books Content": "புத்தகங்கள் உள்ளடக்கம்",
"Jump to Location": "இடத்திற்கு குதிக்கவும்",
"Unpin Notebook": "நோட்புக் அசைவு",
"Pin Notebook": "நோட்புக் பின்பற்றவும்",
"Hide Search Bar": "சேவல் பட்டையை மறைக்கவும்",
"Show Search Bar": "சேவல் பட்டையை காட்டவும்",
"On {{current}} of {{total}} page": "பக்கம் {{current}}/{{total}} இல்",
"Section Title": "அத்தியாயம் தலைப்பு",
"Decrease": "குறைப்பு",
"Increase": "அதிகரிப்பு",
"Settings Panels": "அமைப்புகள் பானல்கள்",
"Settings": "அமைப்புகள்",
"Unpin Sidebar": "பக்கப்பட்டியை அசைவு",
"Pin Sidebar": "பக்கப்பட்டியை பின்பற்றவும்",
"Toggle Sidebar": "பக்கப்பட்டியை மாற்றவும்",
"Toggle Translation": "மொழிபெயர்ப்பை மாற்றவும்",
"Translation Disabled": "மொழிபெயர்ப்பு முடக்கப்பட்டுள்ளது",
"Minimize": "சிறிது செய்யவும்",
"Maximize or Restore": "அதிகரிக்கவும் அல்லது மீட்டமைக்கவும்",
"Exit Parallel Read": "இணை வாசிப்பை வெளியேறு",
"Enter Parallel Read": "இணை வாசிப்பில் நுழையவும்",
"Zoom Level": "ஜூம் நிலை",
"Zoom Out": "ஜூம் குறைக்கவும்",
"Reset Zoom": "ஜூம் மீட்டமைக்கவும்",
"Zoom In": "ஜூம் அதிகரிக்கவும்",
"Zoom Mode": "ஜூம் முறை",
"Single Page": "ஒரு பக்கம்",
"Auto Spread": "தானாக பரவல்",
"Fit Page": "பக்கத்திற்கு பொருந்தும்",
"Fit Width": "அகலத்திற்கு பொருந்தும்",
"Failed to select directory": "கோப்புறையைத் தேர்வுசெய்ய முடியவில்லை",
"The new data directory must be different from the current one.": "புதிய தரவுக் கோப்புறை தற்போதையதைப் போலவே இருக்கக்கூடாது.",
"Migration failed: {{error}}": "மொத்தமாக்கல் தோல்வியுற்றது: {{error}}",
"Change Data Location": "தரவுப் இடத்தை மாற்றவும்",
"Current Data Location": "தற்போதைய தரவுப் இடம்",
"Total size: {{size}}": "மொத்த அளவு: {{size}}",
"Calculating file info...": "கோப்பு தகவலை கணக்கிடுகிறது...",
"New Data Location": "புதிய தரவுப் இடம்",
"Choose Different Folder": "வேறுபட்ட கோப்புறையைத் தேர்ந்தெடுக்கவும்",
"Choose New Folder": "புதிய கோப்புறையைத் தேர்ந்தெடுக்கவும்",
"Migrating data...": "தரவை மாறுகிறது...",
"Copying: {{file}}": "பகுப்பாய்வு: {{file}}",
"{{current}} of {{total}} files": "{{current}}/{{total}} கோப்புகள்",
"Migration completed successfully!": "மொத்தமாக்கல் வெற்றிகரமாக முடிந்தது!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "உங்கள் தரவுகள் புதிய இடத்திற்கு மாறியுள்ளன. செயலியை மீண்டும் தொடங்கவும்.",
"Migration failed": "மொத்தமாக்கல் தோல்வியுற்றது",
"Important Notice": "முக்கிய அறிவிப்பு",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "இது உங்கள் செயலியின் அனைத்து தரவுகளையும் புதிய இடத்திற்கு நகர்த்தும். இலக்கு இடத்தில் போதுமான இலவச இடம் உள்ளதா என்பதை உறுதிப்படுத்தவும்.",
"Restart App": "செயலியை மீண்டும் தொடங்கவும்",
"Start Migration": "மொத்தமாக்கலை தொடங்கவும்",
"Advanced Settings": "மேம்பட்ட அமைப்புகள்",
"File count: {{size}}": "கோப்பு எண்ணிக்கை: {{size}}",
"Background Read Aloud": "பின்னணி உரை வாசிப்பு",
"Ready to read aloud": "வாசிக்க தயாராக உள்ளது",
"Read Aloud": "உரை வாசிப்பு",
"Screen Brightness": "திரை பிரகாசம்",
"Background Image": "பின்னணி படம்",
"Import Image": "புகைப்படம் இறக்குமதி",
"Opacity": "பார்வை",
"Size": "அளவு",
"Cover": "மூடு",
"Contain": "அடங்கும்",
"{{number}} pages left in chapter": "அத்தியாயத்தில் {{number}} பக்கங்கள் மீதமுள்ளன",
"Device": "சாதனம்",
"E-Ink Mode": "E-Ink முறை",
"Highlight Colors": "முத்திரை நிறங்கள்",
"Auto Screen Brightness": "தானியங்கி திரை பிரகாசம்",
"Pagination": "பக்கமிடுதல்",
"Disable Double Tap": "இரட்டை தொடுதலை முடக்கு",
"Tap to Paginate": "பக்கம் மாற்ற தொடுங்கள்",
"Click to Paginate": "பக்கம் மாற்ற கிளிக் செய்யவும்",
"Tap Both Sides": "இரு பக்கங்களையும் தொடுங்கள்",
"Click Both Sides": "இரு பக்கங்களையும் கிளிக் செய்யவும்",
"Swap Tap Sides": "இரு பக்கங்களின் இடத்தை மாற்றவும்",
"Swap Click Sides": "இரு பக்கங்களின் இடத்தை மாற்றவும்",
"Source and Translated": "மூல மற்றும் மொழிபெயர்க்கப்பட்டது",
"Translated Only": "மொழிபெயர்க்கப்பட்டது மட்டும்",
"Source Only": "மூல மட்டும்",
"TTS Text": "TTS உரை",
"The book file is corrupted": "பொதுவாக, புத்தகக் கோப்பு சேதமடைந்துள்ளது",
"The book file is empty": "புத்தகக் கோப்பு காலியாக உள்ளது",
"Failed to open the book file": "புத்தகக் கோப்பைத் திறக்க முடியவில்லை",
"On-Demand Purchase": "தேவைப்படும் போது வாங்குதல்",
"Full Customization": "முழு தனிப்பயனாக்கம்",
"Lifetime Plan": "ஆயுள்திருத்தம்",
"One-Time Payment": "ஒரே முறை கட்டணம்",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "எல்லா சாதனங்களிலும் குறிப்பிட்ட அம்சங்களுக்கு ஆயுள்திருத்தம் பெற ஒரே முறை கட்டணம் செலுத்தவும். நீங்கள் தேவைப்படும் போது மட்டுமே குறிப்பிட்ட அம்சங்கள் அல்லது சேவைகளை வாங்கவும்.",
"Expand Cloud Sync Storage": "மோலச் சின்க் சேமிப்பிடத்தை விரிவாக்கவும்",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "ஒரே முறை வாங்குதலுடன் உங்கள் மேக சேமிப்பிடத்தை எப்போதும் விரிவாக்கவும். ஒவ்வொரு கூடுதல் வாங்குதலும் மேலும் இடத்தைச் சேர்க்கிறது.",
"Unlock All Customization Options": "அனைத்து தனிப்பயனாக்க விருப்பங்களைத் திறக்கவும்",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "கூடுதல் தீமைகள், எழுத்துருக்கள், வடிவமைப்பு விருப்பங்கள் மற்றும் வாசிக்க, மொழிபெயர்க்க, மேக சேமிப்பு சேவைகளைத் திறக்கவும்.",
"Purchase Successful!": "கொள்முதல் வெற்றிகரமாக முடிந்தது!",
"lifetime": "ஆயுள்திருத்தம்",
"Thank you for your purchase! Your payment has been processed successfully.": "உங்கள் வாங்குதலுக்கு நன்றி! உங்கள் கட்டணம் வெற்றிகரமாக செயல்படுத்தப்பட்டது.",
"Order ID:": "ஆர்டர் ஐடி:",
"TTS Highlighting": "TTS சிறப்பித்தல்",
"Style": "பாணி",
"Underline": "அடிக்கோடு",
"Strikethrough": "குறிக்கோடு",
"Squiggly": "சுருள் கோடு",
"Outline": "வட்டம்",
"Save Current Color": "தற்போதைய நிறத்தை சேமிக்கவும்",
"Quick Colors": "விரைவு நிறங்கள்",
"Highlighter": "ஹைலைட்டர்",
"Save Book Cover": "புத்தகக் கோப்பைச் சேமிக்கவும்",
"Auto-save last book cover": "அවසන් புத்தகக் கோப்பு காலியாக உள்ளது",
"Back": "பின் செல்ல",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "உறுதிப்பத்திர மின்னஞ்சல் அனுப்பப்பட்டுள்ளது! மாற்றத்தை உறுதிப்படுத்த உங்கள் பழைய மற்றும் புதிய மின்னஞ்சல் முகவரிகளை சரிபார்க்கவும்.",
"Failed to update email": "மின்னஞ்சல் புதுப்பிப்பில் தோல்வி",
"New Email": "புதிய மின்னஞ்சல்",
"Your new email": "உங்கள் புதிய மின்னஞ்சல்",
"Updating email ...": "மின்னஞ்சல் புதுப்பிக்கப்படுகிறது ...",
"Update email": "மின்னஞ்சல் புதுப்பிக்கவும்",
"Current email": "தற்போதைய மின்னஞ்சல்",
"Update Email": "மின்னஞ்சல் புதுப்பிக்கவும்",
"All": "அனைத்து",
"Unable to open book": "புத்தகத்தைத் திறக்க முடியவில்லை",
"Punctuation": "விருத்தி",
"Replace Quotation Marks": "உதயம்சுட்டிகளை மாற்றவும்",
"Enabled only in vertical layout.": "செங்குத்து அமைப்பில் மட்டுமே இயலுமைப்படுத்தப்பட்டது.",
"No Conversion": "மாற்றம் செய்யவில்லை",
"Simplified to Traditional": "எளிய → பாரம்பரிய",
"Traditional to Simplified": "பாரம்பரிய → எளிய",
"Simplified to Traditional (Taiwan)": "எளிய → பாரம்பரிய (தைவான்)",
"Simplified to Traditional (Hong Kong)": "எளிய → பாரம்பரிய (ஹாங்காங்)",
"Simplified to Traditional (Taiwan), with phrases": "எளிய → பாரம்பரிய (தைவான் • வசனங்கள்)",
"Traditional (Taiwan) to Simplified": "பாரம்பரிய (தைவான்) → எளிய",
"Traditional (Hong Kong) to Simplified": "பாரம்பரிய (ஹாங்காங்) → எளிய",
"Traditional (Taiwan) to Simplified, with phrases": "பாரம்பரிய (தைவான் • வசனங்கள்) → எளிய",
"Convert Simplified and Traditional Chinese": "எளிய/பாரம்பரிய சீன மொழி மாற்றம்",
"Convert Mode": "மாற்ற முறை",
"Failed to auto-save book cover for lock screen: {{error}}": "பூட்டு திரைக்கான புத்தகக் கோப்பை தானாகச் சேமிக்க முடியவில்லை: {{error}}",
"Download from Cloud": "மேகத்திலிருந்து பதிவிறக்கு செய்யவும்",
"Upload to Cloud": "மேகத்திற்கு பதிவேற்றவும்",
"Clear Custom Fonts": "தனிப்பயன் எழுத்துருக்களை அழிக்கவும்",
"Columns": "நெடுவரிசைகள்",
"OPDS Catalogs": "OPDS பட்டியல்கள்",
"Adding LAN addresses is not supported in the web app version.": "LAN முகவரிகளைச் சேர்ப்பது வலை பயன்பாட்டில் ஆதரிக்கப்படவில்லை.",
"Invalid OPDS catalog. Please check the URL.": "தவறான OPDS பட்டியல். URL ஐச் சரிபார்க்கவும்.",
"Browse and download books from online catalogs": "ஆன்லைன் பட்டியல்களில் இருந்து புத்தகங்களை உலாவவும் மற்றும் பதிவிறக்கவும்",
"My Catalogs": "என் பட்டியல்கள்",
"Add Catalog": "பட்டியலைச் சேர்க்கவும்",
"No catalogs yet": "இன்னும் எந்த பட்டியலும் இல்லை",
"Add your first OPDS catalog to start browsing books": "புத்தகங்களை உலாவ தொடங்க உங்கள் முதல் OPDS பட்டியலைச் சேர்க்கவும்",
"Add Your First Catalog": "உங்கள் முதல் பட்டியலைச் சேர்க்கவும்",
"Browse": "உலாவவும்",
"Popular Catalogs": "பிரபல பட்டியல்கள்",
"Add": "சேர்க்கவும்",
"Add OPDS Catalog": "OPDS பட்டியலைச் சேர்க்கவும்",
"Catalog Name": "பட்டியல் பெயர்",
"My Calibre Library": "என் Calibre நூலகம்",
"OPDS URL": "OPDS URL",
"Username (optional)": "பயனர் பெயர் (விருப்பம்)",
"Password (optional)": "கடவுச்சொல் (விருப்பம்)",
"Description (optional)": "விவரிப்பு (விருப்பம்)",
"A brief description of this catalog": "இந்த பட்டியலின் சுருக்கமான விளக்கம்",
"Validating...": "சரிபார்க்கப்படுகிறது...",
"View All": "அனைத்தையும் பார்க்கவும்",
"Forward": "முன்னேற்று",
"Home": "முகப்பு",
"{{count}} items_one": "{{count}} பொருள்",
"{{count}} items_other": "{{count}} பொருட்கள்",
"Download completed": "பதிவிறக்கம் முடிந்தது",
"Download failed": "பதிவிறக்கம் தோல்வியடைந்தது",
"Open Access": "திறந்த அணுகல்",
"Borrow": "கடன் எடுக்கவும்",
"Buy": "வாங்கவும்",
"Subscribe": "சந்தா செய்யவும்",
"Sample": "மாதிரிப் புத்தகம்",
"Download": "பதிவிறக்கம் செய்யவும்",
"Open & Read": "திறந்து வாசிக்கவும்",
"Tags": "குறிச்சொற்கள்",
"Tag": "குறிச்சொல்",
"First": "முதல்",
"Previous": "முந்தையது",
"Next": "அடுத்தது",
"Last": "இறுதி",
"Cannot Load Page": "பக்கம் ஏற்ற முடியவில்லை",
"An error occurred": "ஒரு பிழை ஏற்பட்டது",
"Online Library": "ஆன்லைன் நூலகம்",
"URL must start with http:// or https://": "URL http:// அல்லது https:// கொண்டு தொடங்க வேண்டும்",
"Title, Author, Tag, etc...": "தலைப்பு, ஆசிரியர், குறிச்சொல், மற்றும் பல...",
"Query": "கேள்வி",
"Subject": "பொருள்",
"Enter {{terms}}": "{{terms}} உள்ளிடவும்",
"No search results found": "தேடல் முடிவுகள் இல்லை",
"Failed to load OPDS feed: {{status}} {{statusText}}": "OPDS ஊட்டத்தை ஏற்ற முடியவில்லை: {{status}} {{statusText}}",
"Search in {{title}}": "{{title}} இல் தேடவும்",
"Manage Storage": "சேமிப்பை நிர்வகி",
"Failed to load files": "கோப்புகளை ஏற்ற முடியவில்லை",
"Deleted {{count}} file(s)_one": "கோப்பு நீக்கப்பட்டது",
"Deleted {{count}} file(s)_other": "கோப்புகள் நீக்கப்பட்டன",
"Failed to delete {{count}} file(s)_one": "கோப்பை நீக்க முடியவில்லை",
"Failed to delete {{count}} file(s)_other": "கோப்புகளை நீக்க முடியவில்லை",
"Failed to delete files": "கோப்புகளை நீக்க முடியவில்லை",
"Total Files": "மொத்த கோப்புகள்",
"Total Size": "மொத்த அளவு",
"Quota": "கோட்டா",
"Used": "பயன்படுத்தப்பட்டது",
"Files": "கோப்புகள்",
"Search files...": "கோப்புகளைத் தேடு...",
"Newest First": "புதியவை முதலில்",
"Oldest First": "பழையவை முதலில்",
"Largest First": "பெரியவை முதலில்",
"Smallest First": "சிறியவை முதலில்",
"Name A-Z": "பெயர் A-ஆல்",
"Name Z-A": "பெயர் ஆல்-A",
"{{count}} selected_one": "தேர்ந்தெடுக்கப்பட்ட கோப்பு",
"{{count}} selected_other": "தேர்ந்தெடுக்கப்பட்ட கோப்புகள்",
"Delete Selected": "தேர்ந்தெடுத்தவை நீக்கு",
"Created": "உருவாக்கப்பட்டது",
"No files found": "கோப்புகள் இல்லை",
"No files uploaded yet": "இன்னும் எந்த கோப்பும் பதிவேற்றப்படவில்லை",
"files": "கோப்புகள்",
"Page {{current}} of {{total}}": "பக்கம் {{current}} / {{total}}",
"Are you sure to delete {{count}} selected file(s)?_one": "இந்த கோப்பை நீக்க விரும்புகிறீர்களா?",
"Are you sure to delete {{count}} selected file(s)?_other": "இந்த கோப்புகளை நீக்க விரும்புகிறீர்களா?",
"Cloud Storage Usage": "மேக சேமிப்பு பயன்பாடு",
"Rename Group": "குழுவை மறுபெயரிடவும்",
"From Directory": "கோப்புறையிலிருந்து",
"Successfully imported {{count}} book(s)_one": "வெற்றிகரமாக 1 புத்தகம் இறக்குமதி செய்யப்பட்டது",
"Successfully imported {{count}} book(s)_other": "வெற்றிகரமாக {{count}} புத்தகங்கள் இறக்குமதி செய்யப்பட்டது",
"Count": "எண்ணிக்கை",
"Start Page": "தொடக்கப் பக்கம்",
"Search in OPDS Catalog...": "OPDS பட்டியலில் தேடவும்...",
"Please log in to use advanced TTS features.": "மேம்பட்ட TTS அம்சங்களை பயன்படுத்த உள்நுழையவும்."
}
@@ -0,0 +1,759 @@
{
"Email address": "อีเมล",
"Your Password": "รหัสผ่าน",
"Your email address": "อีเมลของคุณ",
"Your password": "รหัสผ่านของคุณ",
"Sign in": "เข้าสู่ระบบ",
"Signing in...": "กำลังเข้าสู่ระบบ...",
"Sign in with {{provider}}": "เข้าสู่ระบบด้วย {{provider}}",
"Already have an account? Sign in": "มีบัญชีแล้ว? เข้าสู่ระบบ",
"Create a Password": "สร้างรหัสผ่าน",
"Sign up": "สมัครสมาชิก",
"Signing up...": "กำลังสมัครสมาชิก...",
"Check your email for the confirmation link": "ตรวจสอบอีเมลเพื่อยืนยัน",
"Signing in ...": "กำลังเข้าสู่ระบบ...",
"Send a magic link email": "ส่งลิงก์เข้าสู่ระบบ",
"Check your email for the magic link": "ตรวจสอบอีเมลเพื่อรับลิงก์",
"Send reset password instructions": "ส่งคำแนะนำรีเซ็ตรหัส",
"Sending reset instructions ...": "กำลังส่งคำแนะนำ...",
"Forgot your password?": "ลืมรหัสผ่าน?",
"Check your email for the password reset link": "ตรวจสอบอีเมลเพื่อรีเซ็ตรหัส",
"Phone number": "เบอร์โทรศัพท์",
"Your phone number": "เบอร์โทรศัพท์ของคุณ",
"Token": "รหัสยืนยัน",
"Your OTP token": "รหัส OTP ของคุณ",
"Verify token": "ยืนยันรหัส",
"Sign in with Google": "เข้าสู่ระบบด้วย Google",
"Sign in with Apple": "เข้าสู่ระบบด้วย Apple",
"Sign in with GitHub": "เข้าสู่ระบบด้วย GitHub",
"New Password": "รหัสผ่านใหม่",
"Your new password": "รหัสผ่านใหม่ของคุณ",
"Update password": "อัปเดตรหัสผ่าน",
"Updating password ...": "กำลังอัปเดตรหัสผ่าน...",
"Your password has been updated": "รหัสผ่านได้รับการอัปเดตแล้ว",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "เกิดข้อผิดพลาด ทีมงานได้รับแจ้งแล้วและกำลังแก้ไข",
"Error Details:": "รายละเอียดข้อผิดพลาด:",
"Try Again": "ลองใหม่",
"Go Back": "กลับ",
"Your Library": "คลังหนังสือ",
"Need help?": "ต้องการความช่วยเหลือ?",
"Contact Support": "ติดต่อฝ่ายสนับสนุน",
"Open": "เปิด",
"Group": "กลุ่ม",
"Details": "รายละเอียด",
"Delete": "ลบ",
"Cancel": "ยกเลิก",
"Confirm Deletion": "ยืนยันการลบ",
"Are you sure to delete {{count}} selected book(s)?_other": "ยืนยันลบหนังสือ {{count}} เล่ม?",
"Deselect Book": "ยกเลิกเลือกหนังสือ",
"Select Book": "เลือกหนังสือ",
"Show Book Details": "แสดงรายละเอียดหนังสือ",
"Download Book": "ดาวน์โหลดหนังสือ",
"Upload Book": "อัปโหลดหนังสือ",
"Deselect Group": "ยกเลิกเลือกกลุ่ม",
"Select Group": "เลือกกลุ่ม",
"Untitled Group": "กลุ่มไม่มีชื่อ",
"Group Books": "จัดกลุ่มหนังสือ",
"Remove From Group": "ลบออกจากกลุ่ม",
"Create New Group": "สร้างกลุ่มใหม่",
"Save": "บันทึก",
"Confirm": "ยืนยัน",
"From Local File": "จากไฟล์ในเครื่อง",
"Search in {{count}} Book(s)..._other": "ค้นหาใน {{count}} เล่ม...",
"Search Books...": "ค้นหาหนังสือ...",
"Clear Search": "ล้างการค้นหา",
"Import Books": "นำเข้าหนังสือ",
"Select Books": "เลือกหนังสือ",
"Deselect": "ยกเลิกเลือก",
"Select All": "เลือกทั้งหมด",
"Logged in as {{userDisplayName}}": "เข้าสู่ระบบในชื่อ {{userDisplayName}}",
"Logged in": "เข้าสู่ระบบแล้ว",
"Account": "บัญชี",
"Sign In": "เข้าสู่ระบบ",
"Auto Upload Books to Cloud": "อัปโหลดหนังสืออัตโนมัติ",
"Auto Import on File Open": "นำเข้าอัตโนมัติเมื่อเปิดไฟล์",
"Open Last Book on Start": "เปิดหนังสือล่าสุดเมื่อเริ่มใช้",
"Check Updates on Start": "ตรวจสอบอัปเดตเมื่อเริ่มใช้",
"Fullscreen": "เต็มจอ",
"Always on Top": "แสดงด้านบนเสมอ",
"Always Show Status Bar": "แสดงแถบสถานะเสมอ",
"Keep Screen Awake": "เปิดหน้าจอค้าง",
"Reload Page": "โหลดหน้าใหม่",
"Dark Mode": "โหมดมืด",
"Light Mode": "โหมดสว่าง",
"Auto Mode": "โหมดอัตโนมัติ",
"Upgrade to Readest Premium": "อัปเกรดเป็น Readest Premium",
"Download Readest": "ดาวน์โหลด Readest",
"About Readest": "เกี่ยวกับ Readest",
"Help improve Readest": "ช่วยพัฒนา Readest",
"Sharing anonymized statistics": "แชร์สถิติแบบไม่ระบุตัวตน",
"List": "รายการ",
"Grid": "ตาราง",
"Crop": "ครอบตัด",
"Fit": "ปรับพอดี",
"Title": "ชื่อเรื่อง",
"Author": "ผู้แต่ง",
"Format": "รูปแบบ",
"Date Read": "วันที่อ่าน",
"Date Added": "วันที่เพิ่ม",
"Ascending": "น้อยไปมาก",
"Descending": "มากไปน้อย",
"Book Covers": "ปกหนังสือ",
"Sort by...": "เรียงตาม...",
"No supported files found. Supported formats: {{formats}}": "ไม่พบไฟล์ที่รองรับ รูปแบบที่รองรับ: {{formats}}",
"No chapters detected": "ไม่พบบท",
"Failed to parse the EPUB file": "ไม่สามารถอ่านไฟล์ EPUB",
"This book format is not supported": "ไม่รองรับรูปแบบหนังสือนี้",
"Failed to import book(s): {{filenames}}": "ไม่สามารถนำเข้าหนังสือ: {{filenames}}",
"Book uploaded: {{title}}": "อัปโหลดหนังสือแล้ว: {{title}}",
"Insufficient storage quota": "พื้นที่จัดเก็บไม่เพียงพอ",
"Failed to upload book: {{title}}": "ไม่สามารถอัปโหลดหนังสือ: {{title}}",
"Book downloaded: {{title}}": "ดาวน์โหลดหนังสือแล้ว: {{title}}",
"Failed to download book: {{title}}": "ไม่สามารถดาวน์โหลดหนังสือ: {{title}}",
"Book deleted: {{title}}": "ลบหนังสือแล้ว: {{title}}",
"Failed to delete book: {{title}}": "ไม่สามารถลบหนังสือ: {{title}}",
"Deleted cloud backup of the book: {{title}}": "ลบสำรองบนคลาวด์แล้ว: {{title}}",
"Welcome to your library. You can import your books here and read them anytime.": "ยินดีต้อนรับสู่คลังหนังสือ คุณสามารถนำเข้าหนังสือและอ่านได้ตลอดเวลา",
"Copied to notebook": "คัดลอกไปยังสมุดบันทึก",
"No annotations to export": "ไม่มีบันทึกให้ส่งออก",
"Exported from Readest": "ส่งออกจาก Readest",
"Highlights & Annotations": "ไฮไลต์และบันทึก",
"Untitled": "ไม่มีชื่อ",
"Note": "บันทึก",
"Copied to clipboard": "คัดลอกแล้ว",
"Copy": "คัดลอก",
"Delete Highlight": "ลบไฮไลต์",
"Highlight": "ไฮไลต์",
"Annotate": "บันทึก",
"Search": "ค้นหา",
"Dictionary": "พจนานุกรม",
"Wikipedia": "วิกิพีเดีย",
"Translate": "แปล",
"Speak": "อ่านออกเสียง",
"Login Required": "ต้องเข้าสู่ระบบ",
"Quota Exceeded": "เกินโควตา",
"Unable to fetch the translation. Please log in first and try again.": "ไม่สามารถแปลได้ กรุณาเข้าสู่ระบบก่อน",
"Unable to fetch the translation. Try again later.": "ไม่สามารถแปลได้ ลองใหม่ภายหลัง",
"Original Text": "ข้อความต้นฉบับ",
"Auto Detect": "ตรวจสอบอัตโนมัติ",
"(detected)": "(ตรวจพบ)",
"Translated Text": "ข้อความแปล",
"Loading...": "กำลังโหลด...",
"No translation available.": "ไม่มีการแปล",
"Translated by {{provider}}.": "แปลโดย {{provider}}",
"Bookmark": "บุ๊กมาร์ก",
"Next Section": "ส่วนถัดไป",
"Previous Section": "ส่วนก่อนหน้า",
"Next Page": "หน้าถัดไป",
"Previous Page": "หน้าก่อนหน้า",
"Go Forward": "ไปข้างหน้า",
"Small": "เล็ก",
"Large": "ใหญ่",
"Notebook": "สมุดบันทึก",
"No notes match your search": "ไม่พบบันทึกที่ตรงกับการค้นหา",
"Excerpts": "ข้อความที่เลือก",
"Notes": "บันทึก",
"Add your notes here...": "เพิ่มบันทึกที่นี่...",
"Search notes and excerpts...": "ค้นหาบันทึกและข้อความ...",
"{{time}} min left in chapter": "เหลือ {{time}} นาทีในบท",
"{{count}} pages left in chapter_other": "เหลือ {{count}} หน้าในบท",
"Theme Mode": "โหมดธีม",
"Invert Image In Dark Mode": "กลับสีรูปในโหมดมืด",
"Override Book Color": "เขียนทับสีหนังสือ",
"Theme Color": "สีธีม",
"Custom": "กำหนดเอง",
"Code Highlighting": "ไฮไลต์โค้ด",
"Enable Highlighting": "เปิดไฮไลต์",
"Code Language": "ภาษาโค้ด",
"Scroll": "เลื่อน",
"Scrolled Mode": "โหมดเลื่อน",
"Continuous Scroll": "เลื่อนต่อเนื่อง",
"Overlap Pixels": "พิกเซลซ้อน",
"Volume Keys for Page Flip": "ปุ่มเสียงเพื่อพลิกหน้า",
"Animation": "ภาพเคลื่อนไหว",
"Paging Animation": "ภาพเคลื่อนไหวพลิกหน้า",
"Security": "ความปลอดภัย",
"Allow JavaScript": "อนุญาต JavaScript",
"Enable only if you trust the file.": "เปิดเฉพาะไฟล์ที่เชื่อถือได้",
"Global Settings": "การตั้งค่าทั่วไป",
"Apply to All Books": "ใช้กับหนังสือทั้งหมด",
"Apply to This Book": "ใช้กับหนังสือนี้",
"Reset Settings": "รีเซ็ตการตั้งค่า",
"System Fonts": "ฟอนต์ระบบ",
"Serif Font": "ฟอนต์ Serif",
"Sans-Serif Font": "ฟอนต์ Sans-Serif",
"Override Book Font": "เขียนทับฟอนต์หนังสือ",
"Font Size": "ขนาดฟอนต์",
"Default Font Size": "ขนาดฟอนต์เริ่มต้น",
"Minimum Font Size": "ขนาดฟอนต์ต่ำสุด",
"Font Weight": "น้ำหนักฟอนต์",
"Font Family": "ตระกูลฟอนต์",
"Default Font": "ฟอนต์เริ่มต้น",
"CJK Font": "ฟอนต์ CJK",
"Font Face": "หน้าฟอนต์",
"Monospace Font": "ฟอนต์ Monospace",
"Auto": "อัตโนมัติ",
"System Language": "ภาษาระบบ",
"Language": "ภาษา",
"Interface Language": "ภาษาส่วนติดต่อ",
"Translation": "การแปล",
"Enable Translation": "เปิดการแปล",
"Show Source Text": "แสดงข้อความต้นฉบับ",
"Translation Service": "บริการแปล",
"Translate To": "แปลเป็น",
"Override Book Layout": "เขียนทับเลย์เอาต์หนังสือ",
"Writing Mode": "โหมดการเขียน",
"Default": "เริ่มต้น",
"Horizontal Direction": "ทิศทางแนวนอน",
"Vertical Direction": "ทิศทางแนวตั้ง",
"RTL Direction": "ทิศทาง RTL",
"Border Frame": "กรอบขอบ",
"Double Border": "ขอบคู่",
"Border Color": "สีขอบ",
"Paragraph": "ย่อหน้า",
"Paragraph Margin": "ระยะขอบย่อหน้า",
"Line Spacing": "ระยะห่างบรรทัด",
"Word Spacing": "ระยะห่างคำ",
"Letter Spacing": "ระยะห่างตัวอักษร",
"Text Indent": "การเยื้องข้อความ",
"Full Justification": "จัดแนวเต็มบรรทัด",
"Hyphenation": "การใส่เครื่องหมายยัติภังค์",
"Page": "หน้า",
"Top Margin (px)": "ขอบบน (px)",
"Bottom Margin (px)": "ขอบล่าง (px)",
"Left Margin (px)": "ขอบซ้าย (px)",
"Right Margin (px)": "ขอบขวา (px)",
"Column Gap (%)": "ช่องว่างคอลัมน์ (%)",
"Maximum Number of Columns": "จำนวนคอลัมน์สูงสุด",
"Maximum Column Height": "ความสูงคอลัมน์สูงสุด",
"Maximum Column Width": "ความกว้างคอลัมน์สูงสุด",
"Header & Footer": "หัวกระดาษและท้ายกระดาษ",
"Show Header": "แสดงหัวกระดาษ",
"Show Footer": "แสดงท้ายกระดาษ",
"Show Remaining Time": "แสดงเวลาที่เหลือ",
"Show Remaining Pages": "แสดงหน้าที่เหลือ",
"Apply also in Scrolled Mode": "ใช้ในโหมดเลื่อนด้วย",
"Screen": "หน้าจอ",
"Orientation": "การวางแนว",
"Portrait": "แนวตั้ง",
"Landscape": "แนวนอน",
"Apply": "ใช้",
"Custom Content CSS": "CSS เนื้อหากำหนดเอง",
"Enter CSS for book content styling...": "ป้อน CSS สำหรับจัดรูปแบบเนื้อหา...",
"Custom Reader UI CSS": "CSS ส่วนติดต่อผู้ใช้",
"Enter CSS for reader interface styling...": "ป้อน CSS สำหรับจัดรูปแบบส่วนติดต่อ...",
"Font": "ฟอนต์",
"Layout": "เลย์เอาต์",
"Color": "สี",
"Behavior": "พฤติกรรม",
"Reset {{settings}}": "รีเซ็ต {{settings}}",
"(from 'As You Like It', Act II)": "(จาก 'As You Like It', องก์ที่ 2)",
"Custom Theme": "ธีมกำหนดเอง",
"Theme Name": "ชื่อธีม",
"Text Color": "สีข้อความ",
"Background Color": "สีพื้นหลัง",
"Link Color": "สีลิงก์",
"Preview": "ดูตัวอย่าง",
"Font & Layout": "ฟอนต์และเลย์เอาต์",
"More Info": "ข้อมูลเพิ่มเติม",
"Parallel Read": "อ่านคู่ขนาน",
"Disable": "ปิด",
"Enable": "เปิด",
"Export Annotations": "ส่งออกบันทึก",
"Sort TOC by Page": "เรียงสารบัญตามหน้า",
"Edit": "แก้ไข",
"Search...": "ค้นหา...",
"Book": "หนังสือ",
"Chapter": "บท",
"Match Case": "ตรงตามตัวอักษร",
"Match Whole Words": "ตรงทั้งคำ",
"Match Diacritics": "ตรงตามเครื่องหมายวรรณยุกต์",
"TOC": "สารบัญ",
"Table of Contents": "สารบัญ",
"Sidebar": "แถบข้าง",
"Disable Translation": "ปิดการแปล",
"TTS not supported for PDF": "ไม่รองรับ TTS สำหรับ PDF",
"No Timeout": "ไม่จำกัดเวลา",
"{{value}} minute": "{{value}} นาที",
"{{value}} minutes": "{{value}} นาที",
"{{value}} hour": "{{value}} ชั่วโมง",
"{{value}} hours": "{{value}} ชั่วโมง",
"Slow": "ช้า",
"Fast": "เร็ว",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}} เสียง",
"Sign in to Sync": "เข้าสู่ระบบเพื่อซิงค์",
"Synced at {{time}}": "ซิงค์เมื่อ {{time}}",
"Never synced": "ไม่เคยซิงค์",
"Reading Progress Synced": "ซิงค์ความคืบหน้าแล้ว",
"Delete Your Account?": "ลบบัญชีของคุณ?",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "การกระทำนี้ไม่สามารถยกเลิกได้ ข้อมูลทั้งหมดบนคลาวด์จะถูกลบถาวร",
"Delete Permanently": "ลบถาวร",
"Manage Subscription": "จัดการการสมัครสมาชิก",
"Sign Out": "ออกจากระบบ",
"Delete Account": "ลบบัญชี",
"Upgrade to {{plan}}": "อัปเกรดเป็น {{plan}}",
"Complete Your Subscription": "ดำเนินการสมัครสมาชิกให้เสร็จ",
"Coming Soon": "เร็วๆ นี้",
"Upgrade to Plus or Pro": "อัปเกรดเป็น Plus หรือ Pro",
"Current Plan": "แผนปัจจุบัน",
"Plan Limits": "ข้อจำกัดแผน",
"Failed to delete user. Please try again later.": "ไม่สามารถลบผู้ใช้ ลองใหม่ภายหลัง",
"Loading profile...": "กำลังโหลดโปรไฟล์...",
"Processing your payment...": "กำลังประมวลผลการชำระเงิน...",
"Please wait while we confirm your subscription.": "กรุณารอสักครู่เพื่อยืนยันการสมัครสมาชิก",
"Payment Processing": "กำลังประมวลผลการชำระเงิน",
"Your payment is being processed. This usually takes a few moments.": "กำลังประมวลผลการชำระเงิน โดยปกติใช้เวลาสักครู่",
"Payment Failed": "การชำระเงินล้มเหลว",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "ไม่สามารถประมวลผลการสมัครสมาชิก ลองใหม่หรือติดต่อฝ่ายสนับสนุน",
"Back to Profile": "กลับไปที่โปรไฟล์",
"Subscription Successful!": "สมัครสมาชิกสำเร็จ!",
"Thank you for your subscription! Your payment has been processed successfully.": "ขอบคุณสำหรับการสมัครสมาชิก! ชำระเงินเรียบร้อยแล้ว",
"Email:": "อีเมล:",
"Plan:": "แผน:",
"Amount:": "จำนวนเงิน:",
"Go to Library": "ไปที่คลังหนังสือ",
"Need help? Contact our support team at support@readest.com": "ต้องการความช่วยเหลือ? ติดต่อทีมสนับสนุนที่ support@readest.com",
"Free Plan": "แผนฟรี",
"month": "เดือน",
"Cross-Platform Sync": "ซิงค์ข้ามแพลตฟอร์ม",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "ซิงค์คลังหนังสือ ความคืบหน้า ไฮไลต์ และบันทึกข้ามอุปกรณ์—ไม่สูญหายอีกต่อไป",
"Customizable Reading": "การอ่านแบบปรับแต่งได้",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "ปรับแต่งทุกรายละเอียดด้วยฟอนต์ เลย์เอาต์ ธีม และการตั้งค่าขั้นสูงเพื่อประสบการณ์การอ่านที่สมบูรณ์แบบ",
"AI Read Aloud": "AI อ่านออกเสียง",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "เพลิดเพลินกับการอ่านแบบเสรีมือด้วยเสียง AI ที่เป็นธรรมชาติ",
"AI Translations": "การแปลด้วย AI",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "แปลข้อความได้ทันทีด้วยพลัง Google, Azure หรือ DeepL—เข้าใจเนื้อหาทุกภาษา",
"Community Support": "การสนับสนุนชุมชน",
"Connect with fellow readers and get help fast in our friendly community channels.": "เชื่อมต่อกับนักอ่านอื่นๆ และรับความช่วยเหลือในชุมชนที่เป็นมิตร",
"Cloud Sync Storage": "พื้นที่จัดเก็บซิงค์คลาวด์",
"AI Translations (per day)": "การแปล AI (ต่อวัน)",
"Plus Plan": "แผน Plus",
"Includes All Free Plan Benefits": "รวมสิทธิประโยชน์แผนฟรีทั้งหมด",
"Unlimited AI Read Aloud Hours": "AI อ่านออกเสียงไม่จำกัด",
"Listen without limits—convert as much text as you like into immersive audio.": "ฟังไม่จำกัด—แปลงข้อความเป็นเสียงได้ไม่อั้น",
"More AI Translations": "การแปล AI เพิ่มขึ้น",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "ปลดล็อกความสามารถการแปลที่เพิ่มขึ้นพร้อมโควตารายวันและตัวเลือกขั้นสูง",
"DeepL Pro Access": "การเข้าถึง DeepL Pro",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "แปลได้สูงสุด 100,000 อักขระต่อวันด้วยเครื่องมือแปลที่แม่นยำที่สุด",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "จัดเก็บและเข้าถึงคอลเลคชันการอ่านอย่างปลอดภัยด้วยพื้นที่คลาวด์ 5 GB",
"Priority Support": "การสนับสนุนแบบพิเศษ",
"Enjoy faster responses and dedicated assistance whenever you need help.": "รับการตอบสนองที่รวดเร็วและความช่วยเหลือเฉพาะเมื่อต้องการ",
"Pro Plan": "แผน Pro",
"Includes All Plus Plan Benefits": "รวมสิทธิประโยชน์แผน Plus ทั้งหมด",
"Early Feature Access": "เข้าถึงฟีเจอร์ใหม่ก่อนใคร",
"Be the first to explore new features, updates, and innovations before anyone else.": "เป็นคนแรกที่ได้สำรวจฟีเจอร์ใหม่ อัปเดต และนวัตกรรมก่อนใคร",
"Advanced AI Tools": "เครื่องมือ AI ขั้นสูง",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "ใช้เครื่องมือ AI อันทรงพลังเพื่อการอ่าน การแปล และการค้นหาเนื้อหาที่ฉลาดขึ้น",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "แปลได้สูงสุด 500,000 อักขระต่อวันด้วยเครื่องมือแปลที่แม่นยำที่สุด",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "จัดเก็บและเข้าถึงคอลเลคชันการอ่านอย่างปลอดภัยด้วยพื้นที่คลาวด์ 20 GB",
"Version {{version}}": "เวอร์ชัน {{version}}",
"Check Update": "ตรวจสอบอัปเดต",
"Already the latest version": "เป็นเวอร์ชันล่าสุดแล้ว",
"Checking for updates...": "กำลังตรวจสอบอัปเดต...",
"Error checking for updates": "เกิดข้อผิดพลาดในการตรวจสอบอัปเดต",
"Book Details": "รายละเอียดหนังสือ",
"Unknown": "ไม่ทราบ",
"Publisher": "สำนักพิมพ์",
"Published": "วันที่พิมพ์",
"Updated": "อัปเดต",
"Added": "เพิ่มเมื่อ",
"Subjects": "หัวข้อ",
"File Size": "ขนาดไฟล์",
"Description": "คำอธิบาย",
"No description available": "ไม่มีคำอธิบาย",
"Are you sure to delete the selected book?": "ยืนยันลบหนังสือที่เลือก?",
"Are you sure to delete the cloud backup of the selected book?": "ยืนยันลบสำรองคลาวด์ของหนังสือที่เลือก?",
"Drop to Import Books": "วางเพื่อนำเข้าหนังสือ",
"A new version of Readest is available!": "Readest เวอร์ชันใหม่พร้อมใช้งาน!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Readest {{newVersion}} พร้อมใช้งาน (เวอร์ชันที่ติดตั้ง {{currentVersion}})",
"Download and install now?": "ดาวน์โหลดและติดตั้งเลย?",
"Downloading {{downloaded}} of {{contentLength}}": "กำลังดาวน์โหลด {{downloaded}} จาก {{contentLength}}",
"Download finished": "ดาวน์โหลดเสร็จสิ้น",
"DOWNLOAD & INSTALL": "ดาวน์โหลดและติดตั้ง",
"Changelog": "รายการเปลี่ยนแปลง",
"Software Update": "อัปเดตซอฟต์แวร์",
"{{percentage}}% of Cloud Sync Space Used.": "ใช้พื้นที่ซิงค์คลาวด์ {{percentage}}%",
"Translation Characters": "อักขระการแปล",
"{{percentage}}% of Daily Translation Characters Used.": "ใช้อักขระการแปลรายวัน {{percentage}}%",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "ใช้โควตาการแปลรายวันครบแล้ว อัปเกรดแผนเพื่อใช้การแปล AI ต่อ",
"LXGW WenKai GB Screen": "LXGW WenKai GB Screen",
"LXGW WenKai TC": "LXGW WenKai TC",
"GuanKiapTsingKhai-T": "GuanKiapTsingKhai-T",
"Source Han Serif CN VF": "Source Han Serif CN VF",
"Huiwen-mincho": "Huiwen-mincho",
"KingHwa_OldSong": "KingHwa_OldSong",
"Azure Translator": "Azure Translator",
"DeepL": "DeepL",
"Google Translate": "Google Translate",
"Gray": "สีเทา",
"Sepia": "สีซีเปีย",
"Grass": "สีเขียว",
"Cherry": "สีชมพู",
"Sky": "สีฟ้า",
"Solarized": "Solarized",
"Gruvbox": "Gruvbox",
"Nord": "Nord",
"Contrast": "ความคมชัด",
"Sunset": "สีพระอาทิตย์ตก",
"Reveal in Finder": "แสดงใน Finder",
"Reveal in File Explorer": "แสดงใน File Explorer",
"Reveal in Folder": "แสดงในโฟลเดอร์",
"Don't have an account? Sign up": "ยังไม่มีบัญชี? สมัครสมาชิก",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "โลกทั้งใบเป็นเวที\nและชายหญิงทั้งปวงเป็นนักแสดง\nมีทางเข้าและทางออก\nแต่ละคนในชีวิตเล่นหลายบท\nการกระทำของเขาแบ่งเป็นเจ็ดวัย\n\n— วิลเลียม เชกสเปียร์",
"What's New in Readest": "มีอะไรใหม่ใน Readest",
"Enter book title": "ป้อนชื่อหนังสือ",
"Subtitle": "หัวข้อรอง",
"Enter book subtitle": "ป้อนหัวข้อรองของหนังสือ",
"Enter author name": "ป้อนชื่อผู้แต่ง",
"Series": "ชุด",
"Enter series name": "ป้อนชื่อชุด",
"Series Index": "เลขที่ในชุด",
"Enter series index": "ป้อนเลขที่ในชุด",
"Total in Series": "จำนวนรวมในชุด",
"Enter total books in series": "ป้อนจำนวนหนังสือทั้งหมดในชุด",
"Enter publisher": "ป้อนสำนักพิมพ์",
"Publication Date": "วันที่พิมพ์",
"Identifier": "ตัวระบุ",
"Enter book description": "ป้อนคำอธิบายหนังสือ",
"Change cover image": "เปลี่ยนรูปปก",
"Replace": "แทนที่",
"Unlock cover": "ปลดล็อคปก",
"Lock cover": "ล็อคปก",
"Auto-Retrieve Metadata": "ดึงข้อมูลเมตาอัตโนมัติ",
"Auto-Retrieve": "ดึงข้อมูลอัตโนมัติ",
"Unlock all fields": "ปลดล็อคทุกช่อง",
"Unlock All": "ปลดล็อคทั้งหมด",
"Lock all fields": "ล็อคทุกช่อง",
"Lock All": "ล็อคทั้งหมด",
"Reset": "รีเซ็ต",
"Edit Metadata": "แก้ไขข้อมูลเมตา",
"Locked": "ล็อคแล้ว",
"Select Metadata Source": "เลือกแหล่งข้อมูลเมตา",
"Keep manual input": "เก็บข้อมูลที่ป้อนด้วยตนเอง",
"Google Books": "Google Books",
"Open Library": "Open Library",
"Fiction, Science, History": "นิยาย, วิทยาศาสตร์, ประวัติศาสตร์",
"Open Book in New Window": "เปิดหนังสือในหน้าต่างใหม่",
"Voices for {{lang}}": "เสียงสำหรับ {{lang}}",
"Yandex Translate": "Yandex Translate",
"YYYY or YYYY-MM-DD": "YYYY หรือ YYYY-MM-DD",
"Restore Purchase": "กู้คืนการซื้อ",
"No purchases found to restore.": "ไม่พบการซื้อเพื่อกู้คืน",
"Failed to restore purchases.": "ไม่สามารถกู้คืนการซื้อได้",
"Failed to manage subscription.": "ไม่สามารถจัดการการสมัครสมาชิกได้",
"Failed to load subscription plans.": "ไม่สามารถโหลดแผนการสมัครสมาชิกได้",
"year": "ปี",
"Failed to create checkout session": "ไม่สามารถสร้างเซสชันการชำระเงินได้",
"Storage": "พื้นที่เก็บข้อมูล",
"Terms of Service": "ข้อกำหนดในการให้บริการ",
"Privacy Policy": "นโยบายความเป็นส่วนตัว",
"Disable Double Click": "ปิดการคลิกสองครั้ง",
"TTS not supported for this document": "ไม่รองรับ TTS สำหรับเอกสารนี้",
"Reset Password": "รีเซ็ตพาสเวิร์ด",
"Show Reading Progress": "แสดงความคืบหน้าในการอ่าน",
"Reading Progress Style": "สไตล์ความก้าวหน้าในการอ่าน",
"Page Number": "หมายเลขหน้า",
"Percentage": "เปอร์เซ็นต์",
"Deleted local copy of the book: {{title}}": "ลบสำเนาในเครื่องแล้ว: {{title}}",
"Failed to delete cloud backup of the book: {{title}}": "ไม่สามารถลบสำเนาสำรองในคลาวด์ของหนังสือ: {{title}}",
"Failed to delete local copy of the book: {{title}}": "ไม่สามารถลบสำเนาในเครื่องของหนังสือ: {{title}}",
"Are you sure to delete the local copy of the selected book?": "คุณแน่ใจหรือไม่ว่าต้องการลบสำเนาในเครื่องของหนังสือที่เลือก?",
"Remove from Cloud & Device": "ลบจากคลาวด์และอุปกรณ์",
"Remove from Cloud Only": "ลบจากคลาวด์เท่านั้น",
"Remove from Device Only": "ลบจากอุปกรณ์เท่านั้น",
"Disconnected": "ตัดการเชื่อมต่อ",
"KOReader Sync Settings": "การตั้งค่าการซิงค์ KOReader",
"Sync Strategy": "กลยุทธ์การซิงค์",
"Ask on conflict": "ถามเมื่อเกิดความขัดแย้ง",
"Always use latest": "ใช้เวอร์ชันล่าสุดเสมอ",
"Send changes only": "ส่งการเปลี่ยนแปลงเท่านั้น",
"Receive changes only": "รับการเปลี่ยนแปลงเท่านั้น",
"Checksum Method": "วิธีการตรวจสอบความถูกต้อง",
"File Content (recommended)": "เนื้อหาไฟล์ (แนะนำ)",
"File Name": "ชื่อไฟล์",
"Device Name": "ชื่ออุปกรณ์",
"Connect to your KOReader Sync server.": "เชื่อมต่อกับเซิร์ฟเวอร์ KOReader Sync ของคุณ",
"Server URL": "URL ของเซิร์ฟเวอร์",
"Username": "ชื่อผู้ใช้",
"Your Username": "ชื่อผู้ใช้ของคุณ",
"Password": "รหัสผ่าน",
"Connect": "เชื่อมต่อ",
"KOReader Sync": "KOReader Sync",
"Sync Conflict": "ความขัดแย้งในการซิงค์",
"Sync reading progress from \"{{deviceName}}\"?": "ซิงค์ความก้าวหน้าในการอ่านจาก \"{{deviceName}}\"?",
"another device": "อุปกรณ์อื่น",
"Local Progress": "ความก้าวหน้าในเครื่อง",
"Remote Progress": "ความก้าวหน้าในคลาวด์",
"Page {{page}} of {{total}} ({{percentage}}%)": "หน้า {{page}} จาก {{total}} ({{percentage}}%)",
"Current position": "ตำแหน่งปัจจุบัน",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "ประมาณหน้า {{page}} จาก {{total}} ({{percentage}}%)",
"Approximately {{percentage}}%": "ประมาณ {{percentage}}%",
"Failed to connect": "ไม่สามารถเชื่อมต่อได้",
"Sync Server Connected": "เซิร์ฟเวอร์ซิงค์เชื่อมต่อแล้ว",
"Sync as {{userDisplayName}}": "ซิงค์เป็น {{userDisplayName}}",
"Custom Fonts": "ฟอนต์กำหนดเอง",
"Cancel Delete": "ยกเลิกการลบ",
"Import Font": "นำเข้าฟอนต์",
"Delete Font": "ลบฟอนต์",
"Tips": "เคล็ดลับ",
"Custom fonts can be selected from the Font Face menu": "ฟอนต์กำหนดเองสามารถเลือกได้จากเมนูฟอนต์",
"Manage Custom Fonts": "จัดการฟอนต์กำหนดเอง",
"Select Files": "เลือกไฟล์",
"Select Image": "เลือกรูปภาพ",
"Select Video": "เลือกวิดีโอ",
"Select Audio": "เลือกเสียง",
"Select Fonts": "เลือกฟอนต์",
"Supported font formats: .ttf, .otf, .woff, .woff2": "รูปแบบฟอนต์ที่รองรับ: .ttf, .otf, .woff, .woff2",
"Push Progress": "ส่งความคืบหน้า",
"Pull Progress": "ดึงความคืบหน้า",
"Previous Paragraph": "ย่อหน้าก่อนหน้า",
"Previous Sentence": "ประโยคก่อนหน้า",
"Pause": "หยุดชั่วคราว",
"Play": "เล่น",
"Next Sentence": "ประโยคถัดไป",
"Next Paragraph": "ย่อหน้าถัดไป",
"Separate Cover Page": "หน้าปกแยกต่างหาก",
"Resize Notebook": "ปรับขนาดสมุดบันทึก",
"Resize Sidebar": "ปรับขนาดแถบข้าง",
"Get Help from the Readest Community": "รับความช่วยเหลือจากชุมชน Readest",
"Remove cover image": "ลบรูปปก",
"Bookshelf": "ชั้นวางหนังสือ",
"View Menu": "ดูเมนู",
"Settings Menu": "เมนูการตั้งค่า",
"View account details and quota": "ดูรายละเอียดบัญชีและโควต้า",
"Library Header": "ส่วนหัวของห้องสมุด",
"Book Content": "เนื้อหาหนังสือ",
"Footer Bar": "แถบด้านล่าง",
"Header Bar": "แถบส่วนหัว",
"View Options": "ตัวเลือกการดู",
"Book Menu": "เมนูหนังสือ",
"Search Options": "ตัวเลือกการค้นหา",
"Close": "ปิด",
"Delete Book Options": "ตัวเลือกการลบหนังสือ",
"ON": "เปิด",
"OFF": "ปิด",
"Reading Progress": "ความคืบหน้าในการอ่าน",
"Page Margin": "ขอบหน้า",
"Remove Bookmark": "ลบบุ๊กมาร์ก",
"Add Bookmark": "เพิ่มบุ๊กมาร์ก",
"Books Content": "เนื้อหาหนังสือ",
"Jump to Location": "กระโดดไปยังตำแหน่ง",
"Unpin Notebook": "ยกเลิกการตรึงสมุดบันทึก",
"Pin Notebook": "ตรึงสมุดบันทึก",
"Hide Search Bar": "ซ่อนแถบค้นหา",
"Show Search Bar": "แสดงแถบค้นหา",
"On {{current}} of {{total}} page": "อยู่ที่หน้า {{current}} จาก {{total}}",
"Section Title": "หัวข้อส่วน",
"Decrease": "ลดลง",
"Increase": "เพิ่มขึ้น",
"Settings Panels": "แผงการตั้งค่า",
"Settings": "การตั้งค่า",
"Unpin Sidebar": "ยกเลิกการตรึงแถบด้านข้าง",
"Pin Sidebar": "ตรึงแถบด้านข้าง",
"Toggle Sidebar": "เปลี่ยนแถบด้านข้าง",
"Toggle Translation": "เปลี่ยนการแปล",
"Translation Disabled": "การแปลถูกปิดใช้งาน",
"Minimize": "ย่อ",
"Maximize or Restore": "ขยายหรือคืนค่า",
"Exit Parallel Read": "ออกจากการอ่านคู่ขนาน",
"Enter Parallel Read": "เริ่มการอ่านคู่ขนาน",
"Zoom Level": "ระดับการซูม",
"Zoom Out": "ลดระดับการซูม",
"Reset Zoom": "รีเซ็ตระดับการซูม",
"Zoom In": "เพิ่มระดับการซูม",
"Zoom Mode": "โหมดการซูม",
"Single Page": "หน้าเดียว",
"Auto Spread": "การกระจายอัตโนมัติ",
"Fit Page": "พอดีกับหน้า",
"Fit Width": "พอดีกับความกว้าง",
"Failed to select directory": "ไม่สามารถเลือกไดเรกทอรีได้",
"The new data directory must be different from the current one.": "ไดเรกทอรีข้อมูลใหม่จะต้องแตกต่างจากไดเรกทอรีปัจจุบัน",
"Migration failed: {{error}}": "การย้ายข้อมูลล้มเหลว: {{error}}",
"Change Data Location": "เปลี่ยนตำแหน่งข้อมูล",
"Current Data Location": "ตำแหน่งข้อมูลปัจจุบัน",
"Total size: {{size}}": "ขนาดรวม: {{size}}",
"Calculating file info...": "กำลังคำนวณข้อมูลไฟล์...",
"New Data Location": "ตำแหน่งข้อมูลใหม่",
"Choose Different Folder": "เลือกโฟลเดอร์ที่แตกต่าง",
"Choose New Folder": "เลือกโฟลเดอร์ใหม่",
"Migrating data...": "กำลังย้ายข้อมูล...",
"Copying: {{file}}": "กำลังคัดลอก: {{file}}",
"{{current}} of {{total}} files": "{{current}} จาก {{total}} ไฟล์",
"Migration completed successfully!": "การย้ายข้อมูลเสร็จสมบูรณ์!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "ข้อมูลของคุณได้ถูกย้ายไปยังตำแหน่งใหม่แล้ว กรุณารีสตาร์ทแอปพลิเคชันเพื่อทำให้กระบวนการเสร็จสมบูรณ์",
"Migration failed": "การย้ายข้อมูลล้มเหลว",
"Important Notice": "ประกาศสำคัญ",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "สิ่งนี้จะย้ายข้อมูลแอปทั้งหมดของคุณไปยังตำแหน่งใหม่ ตรวจสอบให้แน่ใจว่าตำแหน่งปลายทางมีพื้นที่ว่างเพียงพอ",
"Restart App": "รีสตาร์ทแอป",
"Start Migration": "เริ่มการย้ายข้อมูล",
"Advanced Settings": "การตั้งค่าขั้นสูง",
"File count: {{size}}": "จำนวนไฟล์: {{size}}",
"Background Read Aloud": "อ่านออกเสียงเบื้องหลัง",
"Ready to read aloud": "พร้อมที่จะอ่านออกเสียง",
"Read Aloud": "อ่านออกเสียง",
"Screen Brightness": "ความสว่างหน้าจอ",
"Background Image": "ภาพพื้นหลัง",
"Import Image": "นำเข้าภาพ",
"Opacity": "ความโปร่งใส",
"Size": "ขนาด",
"Cover": "ปก",
"Contain": "บรรจุ",
"{{number}} pages left in chapter": "เหลือ {{number}} หน้าในบท",
"Device": "อุปกรณ์",
"E-Ink Mode": "โหมด E-Ink",
"Highlight Colors": "สีไฮไลต์",
"Auto Screen Brightness": "ความสว่างหน้าจออัตโนมัติ",
"Pagination": "การแบ่งหน้า",
"Disable Double Tap": "ปิดการแตะสองครั้ง",
"Tap to Paginate": "แตะเพื่อแบ่งหน้า",
"Click to Paginate": "คลิกเพื่อแบ่งหน้า",
"Tap Both Sides": "แตะทั้งสองด้าน",
"Click Both Sides": "คลิกทั้งสองด้าน",
"Swap Tap Sides": "เปลี่ยนด้านการแตะ",
"Swap Click Sides": "เปลี่ยนด้านการคลิก",
"Source and Translated": "ต้นฉบับและแปลแล้ว",
"Translated Only": "แปลแล้วเท่านั้น",
"Source Only": "ต้นฉบับเท่านั้น",
"TTS Text": "ข้อความ TTS",
"The book file is corrupted": "ไฟล์หนังสือเสียหาย",
"The book file is empty": "ไฟล์หนังสือว่างเปล่า",
"Failed to open the book file": "ไม่สามารถเปิดไฟล์หนังสือได้",
"On-Demand Purchase": "การซื้อเมื่อจำเป็น",
"Full Customization": "การปรับแต่งเต็มรูปแบบ",
"Lifetime Plan": "แผนการใช้งานตลอดชีพ",
"One-Time Payment": "การชำระเงินครั้งเดียว",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "ทำการชำระเงินครั้งเดียวเพื่อเพลิดเพลินกับการเข้าถึงฟีเจอร์เฉพาะตลอดชีพบนอุปกรณ์ทั้งหมด ซื้อฟีเจอร์หรือบริการเฉพาะเมื่อคุณต้องการเท่านั้น",
"Expand Cloud Sync Storage": "ขยายพื้นที่เก็บข้อมูลซิงค์คลาวด์",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "ขยายพื้นที่เก็บข้อมูลซิงค์คลาวด์ของคุณตลอดไปด้วยการซื้อครั้งเดียว การซื้อเพิ่มเติมแต่ละครั้งจะเพิ่มพื้นที่มากขึ้น",
"Unlock All Customization Options": "ปลดล็อกตัวเลือกการปรับแต่งทั้งหมด",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "ปลดล็อกธีมเพิ่มเติม ฟอนต์ ตัวเลือกการจัดรูปแบบ และฟีเจอร์การอ่านออกเสียง ตัวแปล และบริการพื้นที่เก็บข้อมูลคลาวด์",
"Purchase Successful!": "การซื้อสำเร็จ!",
"lifetime": "ตลอดชีพ",
"Thank you for your purchase! Your payment has been processed successfully.": "ขอบคุณสำหรับการซื้อ! การชำระเงินของคุณได้รับการประมวลผลเรียบร้อยแล้ว",
"Order ID:": "รหัสคำสั่งซื้อ:",
"TTS Highlighting": "การไฮไลต์ TTS",
"Style": "สไตล์",
"Underline": "ขีดเส้นใต้",
"Strikethrough": "ขีดฆ่า",
"Squiggly": "เส้นหยัก",
"Outline": "เส้นขอบ",
"Save Current Color": "บันทึกสีปัจจุบัน",
"Quick Colors": "สีด่วน",
"Highlighter": "ปากกาเน้นข้อความ",
"Save Book Cover": "บันทึกปกหนังสือ",
"Auto-save last book cover": "บันทึกปกหนังสือสุดท้ายโดยอัตโนมัติ",
"Back": "กลับ",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "ส่งอีเมลยืนยันแล้ว! กรุณาตรวจสอบอีเมลเก่าและใหม่ของคุณเพื่อยืนยันการเปลี่ยนแปลง",
"Failed to update email": "ไม่สามารถอัปเดตอีเมลได้",
"New Email": "อีเมลใหม่",
"Your new email": "อีเมลใหม่ของคุณ",
"Updating email ...": "กำลังอัปเดตอีเมล ...",
"Update email": "อัปเดตอีเมล",
"Current email": "อีเมลปัจจุบัน",
"Update Email": "อัปเดตอีเมล",
"All": "ทั้งหมด",
"Unable to open book": "ไม่สามารถเปิดหนังสือได้",
"Punctuation": "เครื่องหมายวรรคตอน",
"Replace Quotation Marks": "แทนที่เครื่องหมายคำพูด",
"Enabled only in vertical layout.": "เปิดใช้งานเฉพาะในเค้าโครงแนวตั้งเท่านั้น",
"No Conversion": "ไม่แปลงค่า",
"Simplified to Traditional": "ตัวย่อ → ตัวเต็ม",
"Traditional to Simplified": "ตัวเต็ม → ตัวย่อ",
"Simplified to Traditional (Taiwan)": "ตัวย่อ → ตัวเต็ม (ไต้หวัน)",
"Simplified to Traditional (Hong Kong)": "ตัวย่อ → ตัวเต็ม (ฮ่องกง)",
"Simplified to Traditional (Taiwan), with phrases": "ตัวย่อ → ตัวเต็ม (ไต้หวัน • วลี)",
"Traditional (Taiwan) to Simplified": "ตัวเต็ม (ไต้หวัน) → ตัวย่อ",
"Traditional (Hong Kong) to Simplified": "ตัวเต็ม (ฮ่องกง) → ตัวย่อ",
"Traditional (Taiwan) to Simplified, with phrases": "ตัวเต็ม (ไต้หวัน • วลี) → ตัวย่อ",
"Convert Simplified and Traditional Chinese": "แปลงจีนตัวย่อ/ตัวเต็ม",
"Convert Mode": "โหมดแปลงค่า",
"Failed to auto-save book cover for lock screen: {{error}}": "ไม่สามารถบันทึกปกหนังสือสำหรับหน้าจอล็อกโดยอัตโนมัติ: {{error}}",
"Download from Cloud": "ดาวน์โหลดจากคลาวด์",
"Upload to Cloud": "อัปโหลดไปยังคลาวด์",
"Clear Custom Fonts": "ล้างฟอนต์กำหนดเอง",
"Columns": "คอลัมน์",
"OPDS Catalogs": "แคตตาล็อก OPDS",
"Adding LAN addresses is not supported in the web app version.": "ไม่รองรับการเพิ่มที่อยู่ LAN ในเวอร์ชันเว็บแอป",
"Invalid OPDS catalog. Please check the URL.": "แคตตาล็อก OPDS ไม่ถูกต้อง กรุณาตรวจสอบ URL",
"Browse and download books from online catalogs": "เรียกดูและดาวน์โหลดหนังสือจากแคตตาล็อกออนไลน์",
"My Catalogs": "แคตตาล็อกของฉัน",
"Add Catalog": "เพิ่มแคตตาล็อก",
"No catalogs yet": "ยังไม่มีแคตตาล็อก",
"Add your first OPDS catalog to start browsing books": "เพิ่มแคตตาล็อก OPDS แรกของคุณเพื่อเริ่มเรียกดูหนังสือ",
"Add Your First Catalog": "เพิ่มแคตตาล็อกแรกของคุณ",
"Browse": "เรียกดู",
"Popular Catalogs": "แคตตาล็อกยอดนิยม",
"Add": "เพิ่ม",
"Add OPDS Catalog": "เพิ่มแคตตาล็อก OPDS",
"Catalog Name": "ชื่อแคตตาล็อก",
"My Calibre Library": "ห้องสมุด Calibre ของฉัน",
"OPDS URL": "URL OPDS",
"Username (optional)": "ชื่อผู้ใช้ (ไม่บังคับ)",
"Password (optional)": "รหัสผ่าน (ไม่บังคับ)",
"Description (optional)": "คำอธิบาย (ไม่บังคับ)",
"A brief description of this catalog": "คำอธิบายสั้น ๆ ของแคตตาล็อกนี้",
"Validating...": "กำลังตรวจสอบ...",
"View All": "ดูทั้งหมด",
"Forward": "ไปข้างหน้า",
"Home": "หน้าแรก",
"{{count}} items_other": "{{count}} รายการ",
"Download completed": "ดาวน์โหลดเสร็จสิ้น",
"Download failed": "ดาวน์โหลดล้มเหลว",
"Open Access": "เข้าถึงได้ทันที",
"Borrow": "ยืม",
"Buy": "ซื้อ",
"Subscribe": "สมัครสมาชิก",
"Sample": "ตัวอย่าง",
"Download": "ดาวน์โหลด",
"Open & Read": "เปิดและอ่าน",
"Tags": "แท็ก",
"Tag": "แท็ก",
"First": "แรก",
"Previous": "ก่อนหน้า",
"Next": "ถัดไป",
"Last": "สุดท้าย",
"Cannot Load Page": "ไม่สามารถโหลดหน้าหน้าได้",
"An error occurred": "เกิดข้อผิดพลาด",
"Online Library": "ห้องสมุดออนไลน์",
"URL must start with http:// or https://": "URL ต้องเริ่มต้นด้วย http:// หรือ https://",
"Title, Author, Tag, etc...": "ชื่อเรื่อง ผู้แต่ง แท็ก ฯลฯ...",
"Query": "แบบสอบถาม",
"Subject": "หัวข้อ",
"Enter {{terms}}": "ป้อน {{terms}}",
"No search results found": "ไม่พบผลการค้นหา",
"Failed to load OPDS feed: {{status}} {{statusText}}": "ไม่สามารถโหลดฟีด OPDS ได้: {{status}} {{statusText}}",
"Search in {{title}}": "ค้นหาใน {{title}}",
"Manage Storage": "จัดการพื้นที่เก็บข้อมูล",
"Failed to load files": "ไม่สามารถโหลดไฟล์ได้",
"Deleted {{count}} file(s)_other": "ลบไฟล์เรียบร้อยแล้ว",
"Failed to delete {{count}} file(s)_other": "ลบไฟล์ไม่สำเร็จ",
"Failed to delete files": "ลบไฟล์ไม่สำเร็จ",
"Total Files": "จำนวนไฟล์ทั้งหมด",
"Total Size": "ขนาดรวมทั้งหมด",
"Quota": "โควต้า",
"Used": "ใช้ไปแล้ว",
"Files": "ไฟล์",
"Search files...": "ค้นหาไฟล์...",
"Newest First": "ใหม่ที่สุดก่อน",
"Oldest First": "เก่าที่สุดก่อน",
"Largest First": "ใหญ่ที่สุดก่อน",
"Smallest First": "เล็กที่สุดก่อน",
"Name A-Z": "ชื่อ A-ฮ",
"Name Z-A": "ชื่อ ฮ-A",
"{{count}} selected_other": "เลือกไฟล์แล้ว",
"Delete Selected": "ลบไฟล์ที่เลือก",
"Created": "สร้างเมื่อ",
"No files found": "ไม่พบไฟล์",
"No files uploaded yet": "ยังไม่มีการอัปโหลดไฟล์",
"files": "ไฟล์",
"Page {{current}} of {{total}}": "หน้า {{current}} จาก {{total}}",
"Are you sure to delete {{count}} selected file(s)?_other": "คุณแน่ใจหรือว่าต้องการลบไฟล์ที่เลือก?",
"Cloud Storage Usage": "การใช้งานพื้นที่เก็บข้อมูลคลาวด์",
"Rename Group": "เปลี่ยนชื่อกลุ่ม",
"From Directory": "จากไดเรกทอรี",
"Successfully imported {{count}} book(s)_other": "นำเข้า {{count}} หนังสือเรียบร้อยแล้ว",
"Count": "นับ",
"Start Page": "หน้าเริ่มต้น",
"Search in OPDS Catalog...": "ค้นหาในแคตตาล็อก OPDS...",
"Please log in to use advanced TTS features.": "กรุณาเข้าสู่ระบบเพื่อใช้ฟีเจอร์ TTS ขั้นสูง"
}
@@ -8,7 +8,6 @@
"Auto Mode": "Otomatik Mod",
"Behavior": "Davranış",
"Book": "Kitap",
"Book Cover": "Kitap Kapağı",
"Bookmark": "Yer İmi",
"Cancel": "İptal",
"Chapter": "Bölüm",
@@ -18,7 +17,6 @@
"Confirm Deletion": "Silmeyi Onayla",
"Copied to notebook": "Not defterine kopyalandı",
"Copy": "Kopyala",
"Custom CSS": "Özel CSS",
"Dark Mode": "Karanlık Mod",
"Default": "Varsayılan",
"Default Font": "Varsayılan Yazı Tipi",
@@ -28,7 +26,6 @@
"Dictionary": "Sözlük",
"Download Readest": "Readest'i İndir",
"Edit": "Düzenle",
"Enter your custom CSS here...": "Özel CSS'nizi buraya girin...",
"Excerpts": "Alıntılar",
"Failed to import book(s): {{filenames}}": "Kitap(lar) içe aktarılamadı: {{filenames}}",
"Fast": "Hızlı",
@@ -48,7 +45,6 @@
"Horizontal Direction": "Yatay Yön",
"Hyphenation": "Heceleme",
"Import Books": "Kitapları İçe Aktar",
"Language:": "Dil:",
"Layout": "Düzen",
"Light Mode": "Aydınlık Mod",
"Loading...": "Yükleniyor...",
@@ -70,8 +66,8 @@
"Paging Animation": "Sayfa Çevirme Animasyonu",
"Paragraph": "Paragraf",
"Parallel Read": "Paralel Okuma",
"Published:": "Yayınlanma:",
"Publisher:": "Yayıncı:",
"Published": "Yayınlanma",
"Publisher": "Yayıncı",
"Reading Progress Synced": "Okuma ilerlemesi senkronize edildi",
"Reload Page": "Sayfayı Yenile",
"Reveal in File Explorer": "Dosya Gezgininde Göster",
@@ -85,7 +81,6 @@
"Search...": "Ara...",
"Select Book": "Kitap Seç",
"Select Books": "Kitapları seç",
"Select Multiple Books": "Birden fazla kitap seç",
"Sepia": "Sepya",
"Serif Font": "Serif Yazı Tipi",
"Show Book Details": "Kitap Detaylarını Göster",
@@ -96,16 +91,15 @@
"Slow": "Yavaş",
"Solarized": "Solarized",
"Speak": "Konuş",
"Subjects:": "Konular:",
"Subjects": "Konular",
"System Fonts": "Sistem Yazı Tipleri",
"TTS not supported in this device": "Bu cihazda TTS desteklenmiyor",
"Theme Color": "Tema Rengi",
"Theme Mode": "Tema Modu",
"Translate": "Çevir",
"Translated Text": "Çevrilen Metin",
"Unknown": "Bilinmiyor",
"Untitled": "Başlıksız",
"Updated:": "Güncellendi:",
"Updated": "Güncellendi",
"Version {{version}}": "Sürüm {{version}}",
"Vertical Direction": "Dikey Yön",
"Welcome to your library. You can import your books here and read them anytime.": "Kütüphanenize hoş geldiniz. Buradan kitaplarınızı içe aktarabilir ve istediğiniz zaman okuyabilirsiniz.",
@@ -114,8 +108,6 @@
"Your Library": "Kütüphaneniz",
"TTS not supported for PDF": "PDF için TTS desteklenmiyor",
"Override Book Font": "Kitap Yazı Tipini Geçersiz Kıl",
"Vertical Margins (px)": "Dikey Kenar Boşlukları (px)",
"Horizontal Margins (%)": "Yatay Kenar Boşlukları (%)",
"Apply to All Books": "Tüm kitaplara uygula",
"Apply to This Book": "Bu kitaba uygula",
"Unable to fetch the translation. Try again later.": "Çeviri alınamıyor. Daha sonra tekrar deneyin.",
@@ -124,14 +116,13 @@
"Book Details": "Kitap Detayları",
"From Local File": "Yerel dosyadan",
"TOC": "İçindekiler",
"Table of Contents": "İçindekiler",
"Book uploaded: {{title}}": "Kitap yüklendi: {{title}}",
"Failed to upload book: {{title}}": "Kitap yüklenemedi: {{title}}",
"Book downloaded: {{title}}": "Kitap indirildi: {{title}}",
"Failed to download book: {{title}}": "Kitap indirilemedi: {{title}}",
"Upload Book": "Kitap Yükle",
"Auto Upload Books to Cloud": "Kitapları Otomatik Olarak Buluta Yükle",
"{{percentage}}% of Cloud Storage Used.": "Bulut Depolamanın %{{percentage}}'si kullanıldı.",
"Storage": "Depolama",
"Book deleted: {{title}}": "Kitap silindi: {{title}}",
"Failed to delete book: {{title}}": "Kitap silinemedi: {{title}}",
"Check Updates on Start": "Başlangıçta Güncellemeleri Kontrol Et",
@@ -163,7 +154,7 @@
"Create a Password": "Şifre oluştur",
"Sign up": "Kaydol",
"Signing up...": "Kaydolunuyor...",
"Dont have an account? Sign up": "Hesabınız yok mu? Kaydolun",
"Don't have an account? Sign up": "Hesabınız yok mu? Kaydolun",
"Check your email for the confirmation link": "Onay bağlantısı için e-posta adresinizi kontrol edin",
"Signing in ...": "Giriş yapılıyor...",
"Send a magic link email": "Sihirli bağlantı e-postası gönder",
@@ -186,37 +177,14 @@
"Sign in with Apple": "Apple ile giriş yap",
"Sign in with GitHub": "GitHub ile giriş yap",
"Account": "Hesap",
"Cloud Storage": "Bulut Depolama",
"Failed to delete user. Please try again later.": "Kullanıcı silinemedi. Lütfen daha sonra tekrar deneyin.",
"Unlimited Offline/Online Reading": "Sınırsız Çevrimdışı/Çevrimiçi Okuma",
"Unlimited Cloud Sync Devices": "Sınırsız Bulut Senkronizasyon Cihazları",
"Essential Text-to-Speech Voices": "Temel Metinden Sese Dönüştürme Sesleri",
"DeepL Free Access": "DeepL Ücretsiz Erişim",
"Community Support": "Topluluk Desteği",
"500 MB Cloud Sync Space": "500 MB Bulut Senkronizasyon Alanı",
"Includes All Free Tier Benefits": "Tüm Ücretsiz Paket Avantajlarını İçerir",
"AI Summaries": "Yapay Zeka Özetleri",
"AI Translations": "Yapay Zeka Çevirileri",
"Priority Support": "Öncelikli Destek",
"DeepL Pro Access": "DeepL Pro Erişimi",
"Expanded Text-to-Speech Voices": "Genişletilmiş Metinden Sese Dönüştürme Sesleri",
"2000 MB Cloud Sync Space": "2000 MB Bulut Senkronizasyon Alanı",
"Includes All Plus Tier Benefits": "Tüm Plus Paket Avantajlarını İçerir",
"Unlimited AI Summaries": "Sınırsız Yapay Zeka Özetleri",
"Unlimited AI Translations": "Sınırsız Yapay Zeka Çevirileri",
"Unlimited DeepL Pro Access": "Sınırsız DeepL Pro Erişimi",
"Advanced AI Tools": "Gelişmiş Yapay Zeka Araçları",
"Early Feature Access": "Erken Özellik Erişimi",
"10 GB Cloud Sync Space": "10 GB Bulut Senkronizasyon Alanı",
"Loading profile...": "Profil yükleniyor...",
"Features": "Özellikler",
"Delete Account": "Hesabı Sil",
"Delete Your Account?": "Hesabınızı Silmek İstiyor musunuz?",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "Bu işlem geri alınamaz. Buluttaki tüm verileriniz kalıcı olarak silinecektir.",
"Delete Permanently": "Kalıcı Olarak Sil",
"Free Tier": "Ücretsiz Paket",
"Plus Tier": "Plus Paket",
"Pro Tier": "Pro Paket",
"RTL Direction": "RTL Yönü",
"Maximum Column Height": "Maksimum Sütun Yüksekliği",
"Maximum Column Width": "Maksimum Sütun Genişliği",
@@ -225,7 +193,7 @@
"No supported files found. Supported formats: {{formats}}": "Desteklenen dosya bulunamadı. Desteklenen formatlar: {{formats}}",
"Drop to Import Books": "Kitapları İçe Aktarmak İçin Bırak",
"Custom": "Özel",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n—William Shakespeare": "Tüm dünya bir sahnedir,\nVe tüm erkekler ve kadınlar sadece oyunculardır;\nOnların çıkışları ve girişleri vardır,\nVe bir adam zamanında birçok rol oynar,\nOnun eylemleri yedi yaşındadır.\n\n— William Shakespeare",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "Tüm dünya bir sahnedir,\nVe tüm erkekler ve kadınlar sadece oyunculardır;\nOnların çıkışları ve girişleri vardır,\nVe bir adam zamanında birçok rol oynar,\nOnun eylemleri yedi yaşındadır.\n\n— William Shakespeare",
"Custom Theme": "Özel Tema",
"Theme Name": "Tema Adı",
"Text Color": "Metin Rengi",
@@ -252,9 +220,9 @@
"Auto Import on File Open": "Dosya Açıldığında Otomatik İçe Aktar",
"LXGW WenKai GB Screen": "LXGW WenKai SC",
"LXGW WenKai TC": "LXGW WenKai TC",
"No chapters detected.": "Bölüm bulunamadı.",
"Failed to parse the EPUB file.": "EPUB dosyası ayrıştırılamadı.",
"This book format is not supported.": "Bu kitap formatı desteklenmiyor.",
"No chapters detected": "Bölüm bulunamadı",
"Failed to parse the EPUB file": "EPUB dosyası ayrıştırılamadı",
"This book format is not supported": "Bu kitap formatı desteklenmiyor",
"Unable to fetch the translation. Please log in first and try again.": "Çeviri alınamıyor. Lütfen önce giriş yapın ve tekrar deneyin.",
"Group": "Grup",
"Always on Top": "Her Zaman Üstte",
@@ -267,13 +235,13 @@
"Clear Search": "Aramayı Temizle",
"Header & Footer": "Başlık ve Altbilgi",
"Apply also in Scrolled Mode": "Kaydırılmış Modda da Uygula",
"A new version of Readest is Available!": "Yeni bir Readest sürümü mevcut!",
"A new version of Readest is available!": "Yeni bir Readest sürümü mevcut!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Readest {{newVersion}} mevcut (yüklü sürüm {{currentVersion}}).",
"Download and install now?": "Şimdi indirip yükleyelim mi?",
"Downloading {{downloaded}} of {{contentLength}}": "İndiriliyor {{downloaded}}/{{contentLength}}",
"Download finished": "İndirme tamamlandı",
"DOWNLOAD & INSTALL": "İNDİR & YÜKLE",
"Changelog:": "Değişiklik Günlüğü:",
"Changelog": "Değişiklik Günlüğü",
"Software Update": "Yazılım Güncellemesi",
"Title": "Başlık",
"Date Read": "Okunma Tarihi",
@@ -282,18 +250,15 @@
"Ascending": "Artan",
"Descending": "Azalan",
"Sort by...": "Şuna göre sırala...",
"Added:": "Eklenme:",
"Format:": "Biçim:",
"Added": "Eklenme",
"GuanKiapTsingKhai-T": "GuanKiapTsingKhai-T",
"Description:": "Tanım:",
"Description": "Tanım",
"No description available": "Tanım mevcut değil",
"List": "Liste",
"Grid": "Izgara",
"(from 'As You Like It', Act II)": "(As You Like It, 2. Perde)",
"Link Color": "Bağlantı Rengi",
"Volume Keys for Page Flip": "Sayfa Çevirme için Ses Seviyesi Tuşları",
"Clicks for Page Flip": "Sayfa Çevirme için Tıklamalar",
"Swap Clicks Area": "Tıklama Alanını Değiştir",
"Screen": "Ekran",
"Orientation": "Yönlendirme",
"Portrait": "Portre",
@@ -302,7 +267,7 @@
"Checking for updates...": "Yenilikler kontrol ediliyor...",
"Error checking for updates": "Güncellemeleri kontrol ederken hata oluştu",
"Details": "Detaylar",
"File Size:": "Dosya Boyutu:",
"File Size": "Dosya Boyutu",
"Auto Detect": "Algıla",
"Next Section": "Sonraki Bölüm",
"Previous Section": "Önceki Bölüm",
@@ -329,9 +294,476 @@
"Disable Translation": "Çeviriyi Devre Dışı Bırak",
"Scroll": "Kaydır",
"Overlap Pixels": "Örtüşen Pikseller",
"Click": "Klik",
"System Language": "System Dili",
"Security": "Security",
"Allow JavaScript": "JavaScript'e İzin Ver",
"Enable only if you trust the file.": "Yalnızca dosyaya güveniyorsanız etkinleştirin."
"Enable only if you trust the file.": "Yalnızca dosyaya güveniyorsanız etkinleştirin.",
"Sort TOC by Page": "İçindekileri Sayfaya Göre Sırala",
"Search in {{count}} Book(s)..._one": "{{count}} kitapta ara...",
"Search in {{count}} Book(s)..._other": "{{count}} kitapta ara...",
"No notes match your search": "Eşleşen not bulunamadı",
"Search notes and excerpts...": "Notlarda ara...",
"Sign in to Sync": "Giriş yap",
"Synced at {{time}}": "{{time}}'de eşzlendi",
"Never synced": "Hiç eşzlenmedi",
"Show Remaining Time": "Kalan Süreyi Göster",
"{{time}} min left in chapter": "{{time}} dakika bölümde kaldı",
"Override Book Color": "Kitap Rengini Geçersiz Kıl",
"Login Required": "Giriş gerekli",
"Quota Exceeded": "Kota aşıldı",
"{{percentage}}% of Daily Translation Characters Used.": "Çeviri için günlük karakterlerin %{{percentage}}'si kullanıldı.",
"Translation Characters": "Çeviri Karakterleri",
"{{engine}}: {{count}} voices_one": "{{engine}}: {{count}} ses",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}} sesler",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "Bir şeyler yanlış gitti. Endişelenmeyin, ekibimiz bilgilendirildi ve bir çözüm üzerinde çalışıyoruz.",
"Error Details:": "Error Detayları:",
"Try Again": "Tekrar Dene",
"Need help?": "Yardıma mı ihtiyacınız var?",
"Contact Support": "Destekle İletişime Geç",
"Code Highlighting": "Code Vurgulama",
"Enable Highlighting": "Vurgulamayı Etkinleştir",
"Code Language": "Code Dili",
"Top Margin (px)": "Üst Kenar Boşluğu (px)",
"Bottom Margin (px)": "Alt Kenar Boşluğu (px)",
"Right Margin (px)": "Sağ Kenar Boşluğu (px)",
"Left Margin (px)": "Sol Kenar Boşluğu (px)",
"Column Gap (%)": "Sütun Aralığı (%)",
"Always Show Status Bar": "Durum Çubuğunu Her Zaman Göster",
"Custom Content CSS": "Özel İçerik CSS'si",
"Enter CSS for book content styling...": "Kitap içeriği stili için CSS girin...",
"Custom Reader UI CSS": "Özel Okuyucu Arayüzü CSS'si",
"Enter CSS for reader interface styling...": "Okuyucu arayüzü stili için CSS girin...",
"Crop": "Kes",
"Book Covers": "Kitap Kapağı",
"Fit": "Uygun",
"Reset {{settings}}": "{{settings}}'i Sıfırla",
"Reset Settings": "Ayarları Sıfırla",
"{{count}} pages left in chapter_one": "Bu bölümde {{count}} sayfa kaldı",
"{{count}} pages left in chapter_other": "Bu bölümde {{count}} sayfa kaldı",
"Show Remaining Pages": "Kalan sayfaları göster",
"Source Han Serif CN VF": "Source Han Serif",
"Huiwen-mincho": "Huiwen Mincho",
"KingHwa_OldSong": "KingHwa Song",
"Manage Subscription": "Aboneliği Yönet",
"Coming Soon": "Yakında",
"Upgrade to {{plan}}": "{{plan}} planına yükselt",
"Upgrade to Plus or Pro": "Plus veya Pro'ya yükselt",
"Current Plan": "Mevcut Plan",
"Plan Limits": "Plan Limitleri",
"Processing your payment...": "Ödemeniz işleniyor...",
"Please wait while we confirm your subscription.": "Aboneliğinizi onaylıyoruz, lütfen bekleyin.",
"Payment Processing": "Ödeme İşleniyor",
"Your payment is being processed. This usually takes a few moments.": "Ödemeniz işleniyor. Bu genelde birkaç saniye sürer.",
"Payment Failed": "Ödeme Başarısız",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "Aboneliğinizi işleyemedik. Lütfen tekrar deneyin veya sorun devam ederse destek ile iletişime geçin.",
"Back to Profile": "Profille Dön",
"Subscription Successful!": "Abonelik Başarılı!",
"Thank you for your subscription! Your payment has been processed successfully.": "Aboneliğiniz için teşekkürler! Ödemeniz başarıyla işlendi.",
"Email:": "E-posta:",
"Plan:": "Plan:",
"Amount:": "Tutar:",
"Go to Library": "Kütüphaneye Git",
"Need help? Contact our support team at support@readest.com": "Yardım mı gerekiyor? Destek ekibimizle iletişime geçin: support@readest.com",
"Free Plan": "Ücretsiz Plan",
"month": "ay",
"AI Translations (per day)": "AI Çevirileri (günlük)",
"Plus Plan": "Plus Plan",
"Includes All Free Plan Benefits": "Tüm Ücretsiz Plan Özelliklerini İçerir",
"Pro Plan": "Pro Plan",
"More AI Translations": "Daha Fazla AI Çevirisi",
"Complete Your Subscription": "Aboneliğinizi Tamamlayın",
"{{percentage}}% of Cloud Sync Space Used.": "Bulut Senkronizasyon Alanının %{{percentage}}'si Kullanıldı.",
"Cloud Sync Storage": "Bulut Senkronizasyon Depolama",
"Disable": "Devre Dışı Bırak",
"Enable": "Etkinleştir",
"Upgrade to Readest Premium": "Readest Premiuma Yükselt",
"Show Source Text": "Kaynak Metni Göster",
"Cross-Platform Sync": "Platformlar Arası Senkronizasyon",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "Kütüphanenizi, ilerlemenizi, vurgularınızı ve notlarınızı tüm cihazlarınızda sorunsuzca senkronize edin—bir daha asla yerinizi kaybetmeyin.",
"Customizable Reading": "Özelleştirilebilir Okuma",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "Mükemmel okuma deneyimi için ayarlanabilir yazı tipleri, düzenler, temalar ve gelişmiş görüntü ayarlarıyla her detayı kişiselleştirin.",
"AI Read Aloud": "AI Sesli Okuma",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "Kitaplarınızı hayata geçiren doğal sesli AI sesleriyle eller serbest okuma keyfini çıkarın.",
"AI Translations": "AI Çeviriler",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "Google, Azure veya DeepL'in gücüyle herhangi bir metni anında çevirin—her dildeki içeriği anlayın.",
"Connect with fellow readers and get help fast in our friendly community channels.": "Diğer okuyucularla bağlantı kurun ve dostane topluluk kanallarımızda hızla yardım alın.",
"Unlimited AI Read Aloud Hours": "Sınırsız AI Sesli Okuma Saatleri",
"Listen without limits—convert as much text as you like into immersive audio.": "Sınırsız dinleyin—istediğiniz kadar metni sürükleyici sese dönüştürün.",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "Daha fazla günlük kullanım ve gelişmiş seçeneklerle gelişmiş çeviri yeteneklerinin kilidini açın.",
"DeepL Pro Access": "DeepL Pro Erişimi",
"Enjoy faster responses and dedicated assistance whenever you need help.": "Yardıma ihtiyacınız olduğunda daha hızlı yanıtlar ve özel destek keyfini çıkarın.",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "Günlük çeviri kotasına ulaşıldı. AI çevirileri kullanmaya devam etmek için planınızı yükseltin.",
"Includes All Plus Plan Benefits": "Tüm Plus Plan Avantajları Dahil",
"Early Feature Access": "Erken Özellik Erişimi",
"Be the first to explore new features, updates, and innovations before anyone else.": "Yeni özellikleri, güncellemeleri ve yenilikleri herkesten önce keşfedin.",
"Advanced AI Tools": "Gelişmiş AI Araçları",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "Akıllı okuma, çeviri ve içerik keşfi için güçlü AI araçlarını kullanın.",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "Mevcut en doğru çeviri motoruyla günlük 100.000 karaktere kadar çeviri yapın.",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "Mevcut en doğru çeviri motoruyla günlük 500.000 karaktere kadar çeviri yapın.",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "Tüm okuma koleksiyonunuzu 5 GB'a kadar güvenli bulut depolamayla saklayın ve erişin.",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "Tüm okuma koleksiyonunuzu 20 GB'a kadar güvenli bulut depolamayla saklayın ve erişin.",
"Deleted cloud backup of the book: {{title}}": "Kitabın bulut yedeği silindi: {{title}}",
"Are you sure to delete the cloud backup of the selected book?": "Seçilen kitabın bulut yedeğini silmek istediğinize emin misiniz?",
"What's New in Readest": "Readest'te Neler Yeni",
"Enter book title": "Kitap başlığını girin",
"Subtitle": "Alt başlık",
"Enter book subtitle": "Kitap alt başlığını girin",
"Enter author name": "Yazar adını girin",
"Series": "Seri",
"Enter series name": "Seri adını girin",
"Series Index": "Seri numarası",
"Enter series index": "Seri numarasını girin",
"Total in Series": "Serideki toplam",
"Enter total books in series": "Serideki toplam kitap sayısını girin",
"Enter publisher": "Yayınevini girin",
"Publication Date": "Yayın tarihi",
"Identifier": "Tanımlayıcı",
"Enter book description": "Kitap açıklamasını girin",
"Change cover image": "Kapak resmini değiştir",
"Replace": "Değiştir",
"Unlock cover": "Kapağın kilidini aç",
"Lock cover": "Kapağı kilitle",
"Auto-Retrieve Metadata": "Meta verileri otomatik al",
"Auto-Retrieve": "Otomatik alma",
"Unlock all fields": "Tüm alanların kilidini aç",
"Unlock All": "Tümünün kilidini aç",
"Lock all fields": "Tüm alanları kilitle",
"Lock All": "Tümünü kilitle",
"Reset": "Sıfırla",
"Edit Metadata": "Meta verileri düzenle",
"Locked": "Kilitli",
"Select Metadata Source": "Meta veri kaynağını seç",
"Keep manual input": "Manuel girişi koru",
"Google Books": "Google Books",
"Open Library": "Open Library",
"Fiction, Science, History": "Kurgu, Bilim, Tarih",
"Open Book in New Window": "Kitabı Yeni Pencerede Aç",
"Voices for {{lang}}": "{{lang}} için Sesler",
"Yandex Translate": "Yandex Çeviri",
"YYYY or YYYY-MM-DD": "YYYY veya YYYY-MM-DD",
"Restore Purchase": "Satın Almayı Geri Yükle",
"No purchases found to restore.": "Geri yüklemek için satın alma bulunamadı.",
"Failed to restore purchases.": "Satın alımları geri yükleme başarısız oldu.",
"Failed to manage subscription.": "Aboneliği yönetme başarısız oldu.",
"Failed to load subscription plans.": "Abonelik planlarını yükleme başarısız oldu.",
"year": "yıl",
"Failed to create checkout session": "Ödeme oturumu oluşturma başarısız oldu",
"Storage": "Depolama",
"Terms of Service": "Hizmet Şartları",
"Privacy Policy": "Gizlilik Politikası",
"Disable Double Click": "Çift Tıklamayı Devre Dışı Bırak",
"TTS not supported for this document": "TTS bu belge için desteklenmiyor",
"Reset Password": "Şifreyi Sıfırla",
"Show Reading Progress": "Okuma İlerlemesini Göster",
"Reading Progress Style": "Okuma İlerlemesi Stili",
"Page Number": "Sayfa Numarası",
"Percentage": "Yüzde",
"Deleted local copy of the book: {{title}}": "Kitabın yerel kopyası silindi: {{title}}",
"Failed to delete cloud backup of the book: {{title}}": "Kitabın bulut yedeğini silme başarısız oldu: {{title}}",
"Failed to delete local copy of the book: {{title}}": "Kitabın yerel kopyasını silme başarısız oldu: {{title}}",
"Are you sure to delete the local copy of the selected book?": "Seçilen kitabın yerel kopyasını silmek istediğinize emin misiniz?",
"Remove from Cloud & Device": "Buluttan ve Cihazdan Kaldır",
"Remove from Cloud Only": "Sadece Buluttan Kaldır",
"Remove from Device Only": "Sadece Cihazdan Kaldır",
"Disconnected": "Bağlantı Kesildi",
"KOReader Sync Settings": "KOReader Senkronizasyon Ayarları",
"Sync Strategy": "Senkronizasyon Stratejisi",
"Ask on conflict": "Çatışmada Sor",
"Always use latest": "Her Zaman En Sonunu Kullan",
"Send changes only": "Sadece Değişiklikleri Gönder",
"Receive changes only": "Sadece Değişiklikleri Al",
"Checksum Method": "Kontrol Toplamı Yöntemi",
"File Content (recommended)": "Dosya İçeriği (önerilen)",
"File Name": "Dosya Adı",
"Device Name": "Cihaz Adı",
"Connect to your KOReader Sync server.": "KOReader Senkronizasyon sunucunuza bağlanın.",
"Server URL": "Sunucu URL'si",
"Username": "Kullanıcı Adı",
"Your Username": "Kullanıcı Adınız",
"Password": "Şifre",
"Connect": "Bağlan",
"KOReader Sync": "KOReader Senkronizasyon",
"Sync Conflict": "Senkronizasyon Çatışması",
"Sync reading progress from \"{{deviceName}}\"?": "\"{{deviceName}}\" cihazından okuma ilerlemesini senkronize etmek istiyor musunuz?",
"another device": "başka bir cihaz",
"Local Progress": "Yerel İlerleme",
"Remote Progress": "Uzak İlerleme",
"Page {{page}} of {{total}} ({{percentage}}%)": "Sayfa {{page}} / {{total}} ({{percentage}}%)",
"Current position": "Mevcut konum",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "Yaklaşık sayfa {{page}} / {{total}} ({{percentage}}%)",
"Approximately {{percentage}}%": "Yaklaşık {{percentage}}%",
"Failed to connect": "Bağlanma başarısız oldu",
"Sync Server Connected": "Senkronizasyon Sunucusu Bağlandı",
"Sync as {{userDisplayName}}": "Senkronize et {{userDisplayName}} olarak",
"Custom Fonts": "Özel Yazı Tipleri",
"Cancel Delete": "Silmeyi İptal Et",
"Import Font": "Yazı Tipi İçe Aktar",
"Delete Font": "Yazı Tipini Sil",
"Tips": "İpuçları",
"Custom fonts can be selected from the Font Face menu": "Özel yazı tipleri Yazı Tipi menüsünden seçilebilir",
"Manage Custom Fonts": "Özel Yazı Tiplerini Yönet",
"Select Files": "Dosyaları Seç",
"Select Image": "Resim Seç",
"Select Video": "Video Seç",
"Select Audio": "Ses Seç",
"Select Fonts": "Yazı Tiplerini Seç",
"Supported font formats: .ttf, .otf, .woff, .woff2": "Desteklenen yazı tipi formatları: .ttf, .otf, .woff, .woff2",
"Push Progress": "İlerlemeyi Gönder",
"Pull Progress": "İlerlemeyi Al",
"Previous Paragraph": "Önceki Paragraf",
"Previous Sentence": "Önceki Cümle",
"Pause": "Duraklat",
"Play": "Oynat",
"Next Sentence": "Sonraki Cümle",
"Next Paragraph": "Sonraki Paragraf",
"Separate Cover Page": "Ayrı Kapak Sayfası",
"Resize Notebook": "Defteri Yeniden Boyutlandır",
"Resize Sidebar": "Kenar Çubuğunu Yeniden Boyutlandır",
"Get Help from the Readest Community": "Readest Topluluğundan Yardım Alın",
"Remove cover image": "Kapak resmini kaldır",
"Bookshelf": "Kitaplık",
"View Menu": "Menüyü Görüntüle",
"Settings Menu": "Ayarlar Menüsü",
"View account details and quota": "Hesap detaylarını ve kotayı görüntüle",
"Library Header": "Kütüphane Başlığı",
"Book Content": "Kitap İçeriği",
"Footer Bar": "Alt Çubuk",
"Header Bar": "Üst Çubuk",
"View Options": "Görünüm Seçenekleri",
"Book Menu": "Kitap Menüsü",
"Search Options": "Arama Seçenekleri",
"Close": "Kapat",
"Delete Book Options": "Kitap Silme Seçenekleri",
"ON": "AÇIK",
"OFF": "KAPALI",
"Reading Progress": "Okuma İlerlemesi",
"Page Margin": "Sayfa Kenar Boşluğu",
"Remove Bookmark": "Yer İşareti Kaldır",
"Add Bookmark": "Yer İşareti Ekle",
"Books Content": "Kitap İçeriği",
"Jump to Location": "Konuma Atlama",
"Unpin Notebook": "Defteri Sabitlemeyi Kaldır",
"Pin Notebook": "Defteri Sabitle",
"Hide Search Bar": "Arama Çubuğunu Gizle",
"Show Search Bar": "Arama Çubuğunu Göster",
"On {{current}} of {{total}} page": "{{current}} / {{total}} sayfada",
"Section Title": "Bölüm Başlığı",
"Decrease": "Azalt",
"Increase": "Artır",
"Settings Panels": "Ayarlar Panelleri",
"Settings": "Ayarlar",
"Unpin Sidebar": "Kenar Çubuğunu Sabitlemeyi Kaldır",
"Pin Sidebar": "Kenar Çubuğunu Sabitle",
"Toggle Sidebar": "Kenar Çubuğunu Değiştir",
"Toggle Translation": "Çeviriyi Değiştir",
"Translation Disabled": "Çeviri Devre Dışı",
"Minimize": "Küçült",
"Maximize or Restore": "Büyüt veya Geri Yükle",
"Exit Parallel Read": "Paralel Okumadan Çık",
"Enter Parallel Read": "Paralel Okumaya Gir",
"Zoom Level": "Yakınlaştırma Düzeyi",
"Zoom Out": "Yakınlaştırmayı Kaldır",
"Reset Zoom": "Yakınlaştırmayı Sıfırla",
"Zoom In": "Yakınlaştırmayı Artır",
"Zoom Mode": "Yakınlaştırma Modu",
"Single Page": "Tek Sayfa",
"Auto Spread": "Otomatik Yayılma",
"Fit Page": "Sayfaya Sığdır",
"Fit Width": "Genişliğe Sığdır",
"Failed to select directory": "Dizini seçme başarısız oldu",
"The new data directory must be different from the current one.": "Yeni veri dizini mevcut olanla farklı olmalıdır.",
"Migration failed: {{error}}": "Taşıma işlemi başarısız oldu: {{error}}",
"Change Data Location": "Veri Konumunu Değiştir",
"Current Data Location": "Mevcut Veri Konumu",
"Total size: {{size}}": "Toplam boyut: {{size}}",
"Calculating file info...": "Dosya bilgileri hesaplanıyor...",
"New Data Location": "Yeni Veri Konumu",
"Choose Different Folder": "Farklı Klasör Seç",
"Choose New Folder": "Yeni Klasör Seç",
"Migrating data...": "Veri taşınıyor...",
"Copying: {{file}}": "Kopyalanıyor: {{file}}",
"{{current}} of {{total}} files": "{{current}} / {{total}} dosya",
"Migration completed successfully!": "Taşıma işlemi başarıyla tamamlandı!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "Verileriniz yeni konuma taşındı. Lütfen işlemi tamamlamak için uygulamayı yeniden başlatın.",
"Migration failed": "Taşıma işlemi başarısız oldu",
"Important Notice": "Önemli Duyuru",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "Bu, tüm uygulama verilerinizi yeni konuma taşıyacaktır. Hedefin yeterli boş alana sahip olduğundan emin olun.",
"Restart App": "Uygulamayı Yeniden Başlat",
"Start Migration": "Taşımayı Başlat",
"Advanced Settings": "Gelişmiş Ayarlar",
"File count: {{size}}": "Dosya sayısı: {{size}}",
"Background Read Aloud": "Arka Planda Sesli Okuma",
"Ready to read aloud": "Sesli okumaya hazır",
"Read Aloud": "Sesli Oku",
"Screen Brightness": "Ekran Parlaklığı",
"Background Image": "Arka Plan Görüntüsü",
"Import Image": "Görüntü İçe Aktar",
"Opacity": "Opaklık",
"Size": "Boyut",
"Cover": "Kapak",
"Contain": "İçerir",
"{{number}} pages left in chapter": "Bu bölümde {{number}} sayfa kaldı",
"Device": "Cihaz",
"E-Ink Mode": "E-Ink Modu",
"Highlight Colors": "Vurgu Renkleri",
"Auto Screen Brightness": "Otomatik Ekran Parlaklığı",
"Pagination": "Sayfalama",
"Disable Double Tap": "Çift Dokunmayı Devre Dışı Bırak",
"Tap to Paginate": "Sayfalamak için Dokunun",
"Click to Paginate": "Sayfalamak için Tıklayın",
"Tap Both Sides": "Her İki Tarafa Dokunun",
"Click Both Sides": "Her İki Tarafa Tıklayın",
"Swap Tap Sides": "Dokunma Taraflarını Değiştir",
"Swap Click Sides": "Tıklama Taraflarını Değiştir",
"Source and Translated": "Kaynak ve Çeviri",
"Translated Only": "Yalnızca Çeviri",
"Source Only": "Yalnızca Kaynak",
"TTS Text": "TTS Metni",
"The book file is corrupted": "Kitap dosyası bozulmuş",
"The book file is empty": "Kitap dosyası boş",
"Failed to open the book file": "Kitap dosyası açılamadı",
"On-Demand Purchase": "İhtiyaç Duyulduğunda Satın Alma",
"Full Customization": "Tam Özelleştirme",
"Lifetime Plan": "Ömür Boyu Plan",
"One-Time Payment": "Tek Seferlik Ödeme",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "Tüm cihazlarda belirli özelliklere ömür boyu erişim sağlamak için tek seferlik bir ödeme yapın. Belirli özellikleri veya hizmetleri yalnızca ihtiyaç duyduğunuzda satın alın.",
"Expand Cloud Sync Storage": "Bulut Senkronizasyonu Depolama Alanını Genişlet",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "Tek seferlik bir satın alma ile bulut depolama alanınızı sonsuza kadar genişletin. Her ek satın alma daha fazla alan ekler.",
"Unlock All Customization Options": "Tüm Özelleştirme Seçeneklerini Aç",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "Ek tema, yazı tipi, düzen seçeneklerini ve sesli okuma, çevirmenler, bulut depolama hizmetlerini açın.",
"Purchase Successful!": "Satın Alma Başarılı!",
"lifetime": "ömür boyu",
"Thank you for your purchase! Your payment has been processed successfully.": "Satın alma işleminiz için teşekkürler! Ödemeniz başarıyla işlendi.",
"Order ID:": "Sipariş Kimliği:",
"TTS Highlighting": "TTS Vurgulama",
"Style": "Stil",
"Underline": "Altı Çizili",
"Strikethrough": "Üstü Çizili",
"Squiggly": "Dalgalı Çizgi",
"Outline": "Kontur",
"Save Current Color": "Mevcut Rengi Kaydet",
"Quick Colors": "Hızlı Renkler",
"Highlighter": "Vurgulayıcı",
"Save Book Cover": "Kitap Kapağını Kaydet",
"Auto-save last book cover": "Son kitap kapağını otomatik olarak kaydet",
"Back": "Geri",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "Onay e-postası gönderildi! Değişikliği onaylamak için eski ve yeni e-posta adreslerinizi kontrol edin.",
"Failed to update email": "E-posta güncellenemedi",
"New Email": "Yeni e-posta",
"Your new email": "Yeni e-posta adresiniz",
"Updating email ...": "E-posta güncelleniyor ...",
"Update email": "E-postayı güncelle",
"Current email": "Mevcut e-posta",
"Update Email": "E-postayı güncelle",
"All": "Tümü",
"Unable to open book": "Kitap açılamıyor",
"Punctuation": "Noktalama İşaretleri",
"Replace Quotation Marks": "Tırnak İşaretlerini Değiştir",
"Enabled only in vertical layout.": "Yalnızca dikey düzenle etkinleştirildi.",
"No Conversion": "Dönüştürme yok",
"Simplified to Traditional": "Basitleştirilmiş → Geleneksel",
"Traditional to Simplified": "Geleneksel → Basitleştirilmiş",
"Simplified to Traditional (Taiwan)": "Basitleştirilmiş → Geleneksel (Tayvan)",
"Simplified to Traditional (Hong Kong)": "Basitleştirilmiş → Geleneksel (Hong Kong)",
"Simplified to Traditional (Taiwan), with phrases": "Basitleştirilmiş → Geleneksel (Tayvan • ifadeler)",
"Traditional (Taiwan) to Simplified": "Geleneksel (Tayvan) → Basitleştirilmiş",
"Traditional (Hong Kong) to Simplified": "Geleneksel (Hong Kong) → Basitleştirilmiş",
"Traditional (Taiwan) to Simplified, with phrases": "Geleneksel (Tayvan • ifadeler) → Basitleştirilmiş",
"Convert Simplified and Traditional Chinese": "Basitleştirilmiş/Geleneksel Çince Dönüştür",
"Convert Mode": "Dönüştürme Modu",
"Failed to auto-save book cover for lock screen: {{error}}": "Kitap kapağı kilit ekranı için otomatik kaydedilemedi: {{error}}",
"Download from Cloud": "Buluttan İndir",
"Upload to Cloud": "Buluta Yükle",
"Clear Custom Fonts": "Özel Yazı Tiplerini Temizle",
"Columns": "Sütunlar",
"OPDS Catalogs": "OPDS Katalogları",
"Adding LAN addresses is not supported in the web app version.": "Web uygulaması sürümünde LAN adresi ekleme desteklenmiyor.",
"Invalid OPDS catalog. Please check the URL.": "Geçersiz OPDS kataloğu. Lütfen URL'yi kontrol edin.",
"Browse and download books from online catalogs": "Çevrimiçi kataloglardan kitapları görüntüleyin ve indirin",
"My Catalogs": "Kataloglarım",
"Add Catalog": "Katalog Ekle",
"No catalogs yet": "Henüz katalog yok",
"Add your first OPDS catalog to start browsing books": "Kitapları görüntülemeye başlamak için ilk OPDS kataloğunuzu ekleyin",
"Add Your First Catalog": "İlk Kataloğunuzu Ekleyin",
"Browse": "Gözat",
"Popular Catalogs": "Popüler Kataloglar",
"Add": "Ekle",
"Add OPDS Catalog": "OPDS Kataloğu Ekle",
"Catalog Name": "Katalog Adı",
"My Calibre Library": "Calibre Kütüphanem",
"OPDS URL": "OPDS URL",
"Username (optional)": "Kullanıcı Adı (opsiyonel)",
"Password (optional)": "Şifre (opsiyonel)",
"Description (optional)": "Açıklama (opsiyonel)",
"A brief description of this catalog": "Bu katalog hakkında kısa açıklama",
"Validating...": "Doğrulanıyor...",
"View All": "Tümünü Görüntüle",
"Forward": "İleri",
"Home": "Ana Sayfa",
"{{count}} items_one": "{{count}} öğe",
"{{count}} items_other": "{{count}} öğe",
"Download completed": "İndirme tamamlandı",
"Download failed": "İndirme başarısız",
"Open Access": "Açık Erişim",
"Borrow": "Ödünç Al",
"Buy": "Satın Al",
"Subscribe": "Abone Ol",
"Sample": "Örnek",
"Download": "İndir",
"Open & Read": "Aç ve Oku",
"Tags": "Etiketler",
"Tag": "Etiket",
"First": "İlk",
"Previous": "Önceki",
"Next": "Sonraki",
"Last": "Son",
"Cannot Load Page": "Sayfa yüklenemiyor",
"An error occurred": "Bir hata oluştu",
"Online Library": "Çevrimiçi Kütüphane",
"URL must start with http:// or https://": "URL http:// veya https:// ile başlamalıdır",
"Title, Author, Tag, etc...": "Başlık, Yazar, Etiket, vb...",
"Query": "Sorgu",
"Subject": "Konu",
"Enter {{terms}}": "{{terms}} girin",
"No search results found": "Arama sonucu bulunamadı",
"Failed to load OPDS feed: {{status}} {{statusText}}": "OPDS beslemesi yüklenemedi: {{status}} {{statusText}}",
"Search in {{title}}": "{{title}} içinde ara",
"Manage Storage": "Depolamayı Yönet",
"Failed to load files": "Dosyalar yüklenemedi",
"Deleted {{count}} file(s)_one": "{{count}} dosya silindi",
"Deleted {{count}} file(s)_other": "{{count}} dosya silindi",
"Failed to delete {{count}} file(s)_one": "{{count}} dosya silinemedi",
"Failed to delete {{count}} file(s)_other": "{{count}} dosya silinemedi",
"Failed to delete files": "Dosyalar silinemedi",
"Total Files": "Toplam Dosya",
"Total Size": "Toplam Boyut",
"Quota": "Kota",
"Used": "Kullanıldı",
"Files": "Dosyalar",
"Search files...": "Dosyaları ara...",
"Newest First": "En Yeni Önce",
"Oldest First": "En Eski Önce",
"Largest First": "En Büyük Önce",
"Smallest First": "En Küçük Önce",
"Name A-Z": "İsim A-Z",
"Name Z-A": "İsim Z-A",
"{{count}} selected_one": "{{count}} seçili dosya",
"{{count}} selected_other": "{{count}} seçili dosya",
"Delete Selected": "Seçilenleri Sil",
"Created": "Oluşturulma Tarihi",
"No files found": "Dosya bulunamadı",
"No files uploaded yet": "Henüz dosya yüklenmedi",
"files": "dosyalar",
"Page {{current}} of {{total}}": "{{total}} sayfa içinde {{current}}. sayfa",
"Are you sure to delete {{count}} selected file(s)?_one": "Seçilen {{count}} dosyayı silmek istediğinizden emin misiniz?",
"Are you sure to delete {{count}} selected file(s)?_other": "Seçilen {{count}} dosyayı silmek istediğinizden emin misiniz?",
"Cloud Storage Usage": "Bulut Depolama Kullanımı",
"Rename Group": "Grubu Yeniden Adlandır",
"From Directory": "Dizinden",
"Successfully imported {{count}} book(s)_one": "Başarıyla 1 kitap içe aktarıldı",
"Successfully imported {{count}} book(s)_other": "Başarıyla {{count}} kitap içe aktarıldı",
"Count": "Sayım",
"Start Page": "Başlangıç Sayfası",
"Search in OPDS Catalog...": "OPDS Kataloğunda ara...",
"Please log in to use advanced TTS features.": "Gelişmiş TTS özelliklerini kullanmak için lütfen giriş yapın."
}
@@ -1,14 +1,13 @@
{
"(detected)": "(виявлено)",
"About Readest": "Про Readest",
"Add your notes here...": "Додайте свої нотатки тут...",
"Add your notes here...": "Додайте свої нотатки сюди...",
"Animation": "Анімація",
"Annotate": "Анотація",
"Apply": "Застосувати",
"Auto Mode": "Автоматичний режим",
"Behavior": "Поведінка",
"Book": "Книга",
"Book Cover": "Обкладинка книги",
"Bookmark": "Закладка",
"Cancel": "Скасувати",
"Chapter": "Розділ",
@@ -18,7 +17,6 @@
"Confirm Deletion": "Підтвердити видалення",
"Copied to notebook": "Скопійовано до нотатника",
"Copy": "Копіювати",
"Custom CSS": "Користувацький CSS",
"Dark Mode": "Темний режим",
"Default": "За замовчуванням",
"Default Font": "Шрифт за замовчуванням",
@@ -28,17 +26,16 @@
"Dictionary": "Словник",
"Download Readest": "Завантажити Readest",
"Edit": "Редагувати",
"Enter your custom CSS here...": "Введіть ваш користувацький CSS тут...",
"Excerpts": "Уривки",
"Failed to import book(s): {{filenames}}": "Не вдалося імпортувати книгу(и): {{filenames}}",
"Fast": "Швидко",
"Font": "Шрифт",
"Font & Layout": "Шрифт та макет",
"Font Face": "Накреслення шрифту",
"Font Face": "Налаштування шрифту",
"Font Family": "Сімейство шрифтів",
"Font Size": "Розмір шрифту",
"Full Justification": "Повне вирівнювання",
"Global Settings": "Глобальні налаштування",
"Global Settings": "Ґлобальні налаштування",
"Go Back": "Назад",
"Go Forward": "Вперед",
"Grass": "Трав'яний",
@@ -48,33 +45,32 @@
"Horizontal Direction": "Горизонтальний напрямок",
"Hyphenation": "Перенесення слів",
"Import Books": "Імпортувати книги",
"Language:": "Мова:",
"Layout": "Макет",
"Light Mode": "Світлий режим",
"Loading...": "Завантаження...",
"Logged in": "Увійшли",
"Logged in as {{userDisplayName}}": "Увійшли як {{userDisplayName}}",
"Match Case": "Враховувати регістр",
"Logged in": "Увійдено",
"Logged in as {{userDisplayName}}": "Увійдено як {{userDisplayName}}",
"Match Case": "Враховувати реґістр",
"Match Diacritics": "Враховувати діакритичні знаки",
"Match Whole Words": "Шукати цілі слова",
"Maximum Number of Columns": "Максимальна кількість колонок",
"Minimum Font Size": "Мінімальний розмір шрифту",
"Monospace Font": "Моноширинний шрифт",
"More Info": "Більше інформації",
"Nord": "Північний",
"Nord": "Норд",
"Notebook": "Нотатник",
"Notes": "Нотатки",
"Open": "Відкрити",
"Original Text": "Оригінальний текст",
"Original Text": "Ориґінальний текст",
"Page": "Сторінка",
"Paging Animation": "Анімація гортання",
"Paragraph": "Абзац",
"Parallel Read": "Паралельне читання",
"Published:": "Опубліковано:",
"Publisher:": "Видавець:",
"Published": "Опубліковано",
"Publisher": "Видавець",
"Reading Progress Synced": "Прогрес читання синхронізовано",
"Reload Page": "Перезавантажити сторінку",
"Reveal in File Explorer": "Показати у провіднику",
"Reveal in File Explorer": "Показати у Файловому менеджері",
"Reveal in Finder": "Показати у Finder",
"Reveal in Folder": "Показати в папці",
"Sans-Serif Font": "Шрифт без засічок",
@@ -85,7 +81,6 @@
"Search...": "Пошук...",
"Select Book": "Вибрати книгу",
"Select Books": "Вибрати книги",
"Select Multiple Books": "Вибрати кілька книг",
"Sepia": "Сепія",
"Serif Font": "Шрифт із засічками",
"Show Book Details": "Показати деталі книги",
@@ -96,16 +91,15 @@
"Slow": "Повільно",
"Solarized": "Сонячний",
"Speak": "Озвучити",
"Subjects:": "Теми:",
"Subjects": "Жанри",
"System Fonts": "Системні шрифти",
"TTS not supported in this device": "TTS не підтримується на цьому пристрої",
"Theme Color": "Колір теми",
"Theme Mode": "Режим теми",
"Translate": "Перекласти",
"Translated Text": "Перекладений текст",
"Unknown": "Невідомо",
"Untitled": "Без назви",
"Updated:": "Оновлено:",
"Updated": "Оновлено",
"Version {{version}}": "Версія {{version}}",
"Vertical Direction": "Вертикальний напрямок",
"Welcome to your library. You can import your books here and read them anytime.": "Ласкаво просимо до вашої бібліотеки. Ви можете імпортувати сюди свої книги та читати їх будь-коли.",
@@ -114,28 +108,25 @@
"Your Library": "Ваша бібліотека",
"TTS not supported for PDF": "TTS не підтримується для PDF",
"Override Book Font": "Перевизначити шрифт книги",
"Vertical Margins (px)": "Вертикальні відступи (px)",
"Horizontal Margins (%)": "Горизонтальні відступи (%)",
"Apply to All Books": "Застосувати до всіх книг",
"Apply to This Book": "Застосувати до цієї книги",
"Apply to This Book": "Застосувати лише до цієї книги",
"Unable to fetch the translation. Try again later.": "Не вдалося отримати переклад. Спробуйте пізніше.",
"Check Update": "Перевірити оновлення",
"Already the latest version": "Вже остання версія",
"Already the latest version": "У вас вже встановлена найновіша версія",
"Book Details": "Деталі книги",
"From Local File": "З локального файлу",
"TOC": "Зміст",
"Table of Contents": "Зміст",
"Book uploaded: {{title}}": "Книгу завантажено: {{title}}",
"Failed to upload book: {{title}}": "Не вдалося завантажити книгу: {{title}}",
"Book downloaded: {{title}}": "Книгу завантажено: {{title}}",
"Failed to download book: {{title}}": "Не вдалося завантажити книгу: {{title}}",
"Upload Book": "Завантажити книгу",
"Auto Upload Books to Cloud": "Автоматично завантажувати книги в хмару",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% використано хмарного сховища.",
"Storage": "Сховище",
"Book deleted: {{title}}": "Книгу видалено: {{title}}",
"Failed to delete book: {{title}}": "Не вдалося видалити книгу: {{title}}",
"Check Updates on Start": "Перевіряти оновлення при запуску",
"Insufficient storage quota": "Недостатньо квоти сховища",
"Insufficient storage quota": "Недостатньо місця у сховищі",
"Font Weight": "Насиченість шрифту",
"Line Spacing": "Міжрядковий інтервал",
"Word Spacing": "Міжслівний інтервал",
@@ -163,11 +154,11 @@
"Create a Password": "Створити пароль",
"Sign up": "Зареєструватися",
"Signing up...": "Реєстрація...",
"Dont have an account? Sign up": "Немає акаунту? Зареєструйтеся",
"Check your email for the confirmation link": "Перевірте свою електронну пошту для підтвердження посилання",
"Don't have an account? Sign up": "Немає акаунту? Зареєструйтеся",
"Check your email for the confirmation link": "Перевірте свою електронну пошту на посилання із підтвердженням",
"Signing in ...": "Увійти...",
"Send a magic link email": "Відправити магічне посилання на електронну пошту",
"Check your email for the magic link": "Перевірте свою електронну пошту для магічного посилання",
"Check your email for the magic link": "Ми надіслали вам магічне посилання. Перевірте свою електронну пошту",
"Send reset password instructions": "Надіслати інструкції для скидання пароля",
"Sending reset instructions ...": "Надсилаються інструкції для скидання пароля...",
"Forgot your password?": "Забули пароль?",
@@ -180,43 +171,20 @@
"Phone number": "Номер телефону",
"Your phone number": "Ваш номер телефону",
"Token": "Токен",
"Your OTP token": "Ваш OTP токен",
"Your OTP token": "Ваш OTP-токен",
"Verify token": "Перевірити токен",
"Sign in with Google": "Увійти через Google",
"Sign in with Apple": "Увійти через Apple",
"Sign in with GitHub": "Увійти через GitHub",
"Account": "Обліковий запис",
"Cloud Storage": "Хмарне сховище",
"Failed to delete user. Please try again later.": "Не вдалося видалити користувача. Будь ласка, спробуйте пізніше.",
"Unlimited Offline/Online Reading": "Необмежене читання офлайн/онлайн",
"Unlimited Cloud Sync Devices": "Необмежена кількість пристроїв для хмарної синхронізації",
"Essential Text-to-Speech Voices": "Основні голоси для перетворення тексту в мовлення",
"DeepL Free Access": "Безкоштовний доступ до DeepL",
"Community Support": "Підтримка спільноти",
"500 MB Cloud Sync Space": "500 МБ простору для хмарної синхронізації",
"Includes All Free Tier Benefits": "Включає всі переваги безкоштовного тарифу",
"AI Summaries": "AI-резюме",
"AI Translations": "AI-переклади",
"Priority Support": "Пріоритетна підтримка",
"DeepL Pro Access": "Доступ до DeepL Pro",
"Expanded Text-to-Speech Voices": "Розширений набір голосів для перетворення тексту в мовлення",
"2000 MB Cloud Sync Space": "2000 МБ простору для хмарної синхронізації",
"Includes All Plus Tier Benefits": "Включає всі переваги тарифу Plus",
"Unlimited AI Summaries": "Необмежені AI-резюме",
"Unlimited AI Translations": "Необмежені AI-переклади",
"Unlimited DeepL Pro Access": "Необмежений доступ до DeepL Pro",
"Advanced AI Tools": "Розширені AI-інструменти",
"Early Feature Access": "Ранній доступ до нових функцій",
"10 GB Cloud Sync Space": "10 ГБ простору для хмарної синхронізації",
"Loading profile...": "Завантаження профілю...",
"Features": "Функції",
"Delete Account": "Видалити обліковий запис",
"Delete Your Account?": "Видалити ваш обліковий запис?",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "Цю дію неможливо скасувати. Всі ваші дані в хмарі будуть повністю видалені.",
"Delete Permanently": "Видалити назавжди",
"Free Tier": "Безкоштовний тариф",
"Plus Tier": "Тариф Plus",
"Pro Tier": "Тариф Pro",
"RTL Direction": "Напрямок RTL",
"Maximum Column Height": "Максимальна висота колонки",
"Maximum Column Width": "Максимальна ширина колонки",
@@ -225,7 +193,7 @@
"No supported files found. Supported formats: {{formats}}": "Не знайдено підтримуваних файлів. Підтримувані формати: {{formats}}",
"Drop to Import Books": "Перетягніть для імпорту книг",
"Custom": "Користувацький",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n—William Shakespeare": "Весь світ — театр,\nІ всі чоловіки та жінки — просто актори;\nУ них є свої виходи та входи,\nІ один чоловік у свій час грає багато ролей,\nЙого вчинки — це сім віков.\n\n— Вільям Шекспір",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "Так, світ — театр,\nДе всі чоловіки й жінки — актори.\nТут кожному приписаний свій вихід,\nне одну з них кожне грає роль.\nСім дій в тій п’єсі...\nВільям Шекспір\n(переклад Олександра Мокровольського)",
"Custom Theme": "Користувацька тема",
"Theme Name": "Назва теми",
"Text Color": "Колір тексту",
@@ -234,8 +202,8 @@
"Contrast": "Контраст",
"Sunset": "Захід сонця",
"Double Border": "Подвійна рамка",
"Border Color": "Колір рамки",
"Border Frame": "Рамка рамки",
"Border Color": "Колір країв",
"Border Frame": "Рамка по краям",
"Show Header": "Показати заголовок",
"Show Footer": "Показати нижню частину",
"Small": "Малий",
@@ -247,14 +215,14 @@
"Exported from Readest": "Експортовано з Readest",
"Highlights & Annotations": "Виділення та анотації",
"Note": "Примітка",
"Copied to clipboard": "Скопійовано в буфер обміну",
"Copied to clipboard": "Скопійовано до буфера обміну",
"Export Annotations": "Експортувати анотації",
"Auto Import on File Open": "Автоматичний імпорт при відкритті файлу",
"LXGW WenKai GB Screen": "LXGW WenKai SC",
"LXGW WenKai TC": "LXGW WenKai TC",
"No chapters detected.": "Не виявлено жодного розділу.",
"Failed to parse the EPUB file.": "Не вдалося розібрати файл EPUB.",
"This book format is not supported.": "Цей формат книги не підтримується.",
"No chapters detected": "Не виявлено жодного розділу",
"Failed to parse the EPUB file": "Не вдалося розібрати файл EPUB",
"This book format is not supported": "Цей формат книги не підтримується",
"Unable to fetch the translation. Please log in first and try again.": "Не вдалося отримати переклад. Будь ласка, спочатку увійдіть у систему та спробуйте ще раз.",
"Group": "Група",
"Always on Top": "Завжди зверху",
@@ -267,14 +235,14 @@
"Clear Search": "Очистити пошук",
"Header & Footer": "Заголовок і нижній колонтитул",
"Apply also in Scrolled Mode": "Застосувати також у прокрученому режимі",
"A new version of Readest is Available!": "Доступна нова версія Readest!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Readest {{newVersion}} доступна (встановлена версія {{currentVersion}}).",
"A new version of Readest is available!": "Доступна нова версія Readest!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Нова версія Readest {{newVersion}} доступна. (Поточна {{currentVersion}}).",
"Download and install now?": "Завантажити та встановити зараз?",
"Downloading {{downloaded}} of {{contentLength}}": "Завантаження {{downloaded}} з {{contentLength}}",
"Downloading {{downloaded}} of {{contentLength}}": "Завантаженно {{downloaded}} з {{contentLength}}",
"Download finished": "Завантаження завершено",
"DOWNLOAD & INSTALL": "ЗАВАНТАЖИТИ І ВСТАНОВИТИ",
"Changelog:": "Журнал змін:",
"Software Update": "Оновлення програмного забезпечення",
"DOWNLOAD & INSTALL": "ЗАВАНТАЖИТИ ТА ВСТАНОВИТИ",
"Changelog": "Список змін",
"Software Update": "Оновлення ПЗ",
"Title": "Назва",
"Date Read": "Дата прочитання",
"Date Added": "Дата додавання",
@@ -282,27 +250,24 @@
"Ascending": "За зростанням",
"Descending": "За спаданням",
"Sort by...": "Сортувати за...",
"Added:": "Додано:",
"Format:": "Формат:",
"Added": "Додано",
"GuanKiapTsingKhai-T": "GuanKiapTsingKhai-T",
"Description:": "Опис:",
"Description": "Опис",
"No description available": "Опис недоступний",
"List": "Список",
"Grid": "Сітка",
"(from 'As You Like It', Act II)": "(з 'Як вам це подобається', Акт II)",
"(from 'As You Like It', Act II)": "(із 'Як вам це подобається', Дія II)",
"Link Color": "Колір посилання",
"Volume Keys for Page Flip": "Клавіші гучності для перевороту сторінки",
"Clicks for Page Flip": "Клацання для перевороту сторінки",
"Swap Clicks Area": "Змінити область клацання",
"Volume Keys for Page Flip": "Перегортати сторінки клавішами гучності",
"Screen": "Екран",
"Orientation": "Орієнтація",
"Portrait": "Портрет",
"Landscape": "Ландшафт",
"Open Last Book on Start": "Відкрити останню книгу при запуску",
"Open Last Book on Start": "Відкривати останню книгу при запуску",
"Checking for updates...": "Перевірка наявності оновлень...",
"Error checking for updates": "Помилка перевірки наявності оновлень",
"Details": "Деталі",
"File Size:": "Розмір файлу:",
"File Size": "Розмір файлу",
"Auto Detect": "Авто виявлення",
"Next Section": "Наступний розділ",
"Previous Section": "Попередній розділ",
@@ -316,24 +281,509 @@
"Deselect": "Зняти",
"Select All": "Усі",
"No translation available.": "Переклад недоступний.",
"Translated by {{provider}}.": "Перекладено {{provider}}.",
"Translated by {{provider}}.": "Перекладено за допомогою {{provider}}.",
"DeepL": "DeepL",
"Google Translate": "Google Translate",
"Azure Translator": "Azure Translator",
"Invert Image In Dark Mode": "Інвертувати зображення в темряві",
"Google Translate": "Google Перекладач",
"Azure Translator": "Azure Перекладач",
"Invert Image In Dark Mode": "Інвертувати зображення в темному режимі",
"Help improve Readest": "Допоможіть покращити Readest",
"Sharing anonymized statistics": "Поділ анонімною статистикою",
"Sharing anonymized statistics": "Ділитись анонімною статистикою",
"Interface Language": "Мова інтерфейсу",
"Translation": "Переклад",
"Enable Translation": "Увімкнути переклад",
"Translation Service": "Служба перекладу",
"Translate To": "Перекласти на",
"Translate To": "Мова перекладу",
"Disable Translation": "Вимкнути переклад",
"Scroll": "Прокрутка",
"Overlap Pixels": "Пікселі перекриття",
"Click": "Клацнути",
"Overlap Pixels": ерекривати пікселі",
"System Language": "Системна мова",
"Security": "Безпека",
"Allow JavaScript": "Дозволити JavaScript",
"Enable only if you trust the file.": "Увімкніть лише якщо довіряєте файлу."
"Enable only if you trust the file.": "Увімкніть лише якщо довіряєте файлу.",
"Sort TOC by Page": "Сортувати зміст за сторінкою",
"Search in {{count}} Book(s)..._one": "Шукати в {{count}} книзі...",
"Search in {{count}} Book(s)..._few": "Шукати в {{count}} книгах...",
"Search in {{count}} Book(s)..._many": "Шукати в {{count}} книгах...",
"Search in {{count}} Book(s)..._other": "Шукати в {{count}} книгах...",
"No notes match your search": "Нотаток не знайдено",
"Search notes and excerpts...": "Шукати нотатки...",
"Sign in to Sync": "Увійти",
"Synced at {{time}}": "Синхр. о {{time}}",
"Never synced": "Ніколи не синхр.",
"Show Remaining Time": "Показати залишок часу",
"{{time}} min left in chapter": "{{time}} хв до кінця розділу",
"Override Book Color": "Перевизначити колір книги",
"Login Required": "Потрібен вхід",
"Quota Exceeded": "Перевищено ліміт",
"{{percentage}}% of Daily Translation Characters Used.": "Використано {{percentage}}% символів перекладу за день.",
"Translation Characters": "Символи перекладу",
"{{engine}}: {{count}} voices_one": "{{engine}}: {{count}} голос",
"{{engine}}: {{count}} voices_few": "{{engine}}: {{count}} голоси",
"{{engine}}: {{count}} voices_many": "{{engine}}: {{count}} голосів",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}} голоси",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "От халепа! Щось пішло не так. Не хвилюйтеся, наша команда знає про це, ми вже працюємо над виправленням.",
"Error Details:": "Деталі помилки:",
"Try Again": "Спробувати ще раз",
"Need help?": "Потрібна допомога?",
"Contact Support": "Зв'язатися з підтримкою",
"Code Highlighting": "Підсвічувати код",
"Enable Highlighting": "Увімкнути підсвічування",
"Code Language": "Мова коду",
"Top Margin (px)": "Верхній відступ (px)",
"Bottom Margin (px)": "Нижній відступ (px)",
"Right Margin (px)": "Правий відступ (px)",
"Left Margin (px)": "Лівий відступ (px)",
"Column Gap (%)": "Проміжок між стовпцями (%)",
"Always Show Status Bar": "Завжди показувати панель стану",
"Custom Content CSS": "Користуацький CSS вмісту",
"Enter CSS for book content styling...": "Введіть CSS для стилізації вмісту книги...",
"Custom Reader UI CSS": "CSS інтерфейсу",
"Enter CSS for reader interface styling...": "Введіть CSS для стилізації інтерфейсу читанки...",
"Crop": "Обрізати",
"Book Covers": "Обкладинки книг",
"Fit": "Припасувати",
"Reset {{settings}}": "Скинути {{settings}}",
"Reset Settings": "Скинути налаштування",
"{{count}} pages left in chapter_one": "Залишилася {{count}} сторінка у розділі",
"{{count}} pages left in chapter_few": "Залишилось {{count}} сторінки у розділі",
"{{count}} pages left in chapter_many": "Залишилось {{count}} сторінок у розділі",
"{{count}} pages left in chapter_other": "Залишилось {{count}} сторінок у розділі",
"Show Remaining Pages": "Показати залишок сторінок",
"Source Han Serif CN VF": "Source Han Serif",
"Huiwen-mincho": "Huiwen Mincho",
"KingHwa_OldSong": "KingHwa Song",
"Manage Subscription": "Керувати підпискою",
"Coming Soon": "Незабаром",
"Upgrade to {{plan}}": "Перейти на {{plan}}",
"Upgrade to Plus or Pro": "Перейти на Plus або Pro",
"Current Plan": "Поточний план",
"Plan Limits": "Обмеження плану",
"Processing your payment...": "Обробка вашого платежу...",
"Please wait while we confirm your subscription.": "Зачекайте, ми підтверджуємо вашу підписку.",
"Payment Processing": "Обробка платежу",
"Your payment is being processed. This usually takes a few moments.": "Ваш платіж обробляється. Зазвичай це займає кілька секунд.",
"Payment Failed": "Платіж не вдався",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "Не вдалося обробити вашу підписку. Спробуйте ще раз або зверніться до служби підтримки, якщо проблема не зникне.",
"Back to Profile": "Повернутися до профілю",
"Subscription Successful!": "Підписка активована!",
"Thank you for your subscription! Your payment has been processed successfully.": "Дякуємо за підписку! Ваш платіж успішно оброблено.",
"Email:": "Електронна пошта:",
"Plan:": "План:",
"Amount:": "Сума:",
"Go to Library": "Перейти до бібліотеки",
"Need help? Contact our support team at support@readest.com": "Потрібна допомога? Зверніться до служби підтримки: support@readest.com",
"Free Plan": "Безкоштовний план",
"month": "місяць",
"AI Translations (per day)": "ШІ-переклади (на день)",
"Plus Plan": "План Plus",
"Includes All Free Plan Benefits": "Включає всі переваги Безкоштовного плану",
"Pro Plan": "План Pro",
"More AI Translations": "Більше ШІ-перекладів",
"Complete Your Subscription": "Завершіть підписку",
"{{percentage}}% of Cloud Sync Space Used.": "Використано {{percentage}}% хмарного сховища.",
"Cloud Sync Storage": "Хмарне сховище",
"Disable": "Вимкнути",
"Enable": "Увімкнути",
"Upgrade to Readest Premium": "Оновити до Readest Premium",
"Show Source Text": "Показати вихідний текст",
"Cross-Platform Sync": "Міжплатформова синхронізація",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "Безперешкодно синхронізуйте свою бібліотеку, прогрес, виділення та нотатки на всіх своїх пристроях. Більше ніколи не втратите свої книги.",
"Customizable Reading": "Користувацьке читання",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "Персоналізуйте кожну деталь за допомогою налаштовуваних шрифтів, макетів, тем та розширених налаштувань відображення для ідеального читання.",
"AI Read Aloud": "Озвучування ШІ",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "Насолоджуйтесь читанням без використання рук з природними звучаннями голосів, які оживляють ваші книги.",
"AI Translations": "Переклади ШІ",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "Перекладайте будь-який текст миттєво за допомогою Google, Azure або DeepL. Розумійте зміст будь-якою мовою.",
"Connect with fellow readers and get help fast in our friendly community channels.": "Спілкуйтеся з іншими читачами та отримуйте швидку допомогу в наших дружніх каналах спільноти.",
"Unlimited AI Read Aloud Hours": "Необмежені години озвучування ШІ",
"Listen without limits—convert as much text as you like into immersive audio.": "Слухайте без обмежень—перетворюйте стільки тексту, скільки хочете, в захоплююче аудіо.",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "Розблокуйте покращені можливості перекладу з більшим щоденним використанням та розширеними функціями.",
"DeepL Pro Access": "Доступ до DeepL Pro",
"Enjoy faster responses and dedicated assistance whenever you need help.": "Насолоджуйтеся швидшими відповідями та персональною допомогою, коли вам потрібна підтримка.",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "Досягнуто денну квоту перекладів. Оновіть свій план, щоб продовжити використовувати переклади ШІ.",
"Includes All Plus Plan Benefits": "Включає усі переваги Plus плану",
"Early Feature Access": "Ранній Доступ до функцій",
"Be the first to explore new features, updates, and innovations before anyone else.": "Досліджуйте нові функції, оновлення та інновації першими.",
"Advanced AI Tools": "Розширені ШІ інструменти",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "Використовуйте потужні ШІ інструменти для розумного читання, перекладу та пошуку контенту.",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "Перекладайте до 100 000 символів щодня з найточнішим доступним рушієм перекладу.",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "Перекладайте до 500 000 символів щодня з найточнішим доступним рушієм перекладу.",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "Безпечно зберігайте та отримуйте доступ до всієї колекції читання з до 5 ГБ хмарного сховища.",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "Безпечно зберігайте та отримуйте доступ до всієї колекції читання з до 20 ГБ хмарного сховища.",
"Deleted cloud backup of the book: {{title}}": "Видалено хмарну резервну копію книги: {{title}}",
"Are you sure to delete the cloud backup of the selected book?": "Ви впевнені, що хочете видалити хмарну резервну копію вибраної книги?",
"What's New in Readest": "Що нового в Readest",
"Enter book title": "Введіть назву книги",
"Subtitle": "Підзаголовок",
"Enter book subtitle": "Введіть підзаголовок книги",
"Enter author name": "Введіть ім'я автора",
"Series": "Цикл",
"Enter series name": "Введіть назву циклу",
"Series Index": "Номер циклу",
"Enter series index": "Введіть номер циклу",
"Total in Series": "Всього у циклі",
"Enter total books in series": "Введіть загальну кількість книг у циклі",
"Enter publisher": "Введіть видавця",
"Publication Date": "Дата видання",
"Identifier": "Ідентифікатор",
"Enter book description": "Введіть опис книги",
"Change cover image": "Змінити зображення обкладинки",
"Replace": "Замінити",
"Unlock cover": "Розблокувати обкладинку",
"Lock cover": "Заблокувати обкладинку",
"Auto-Retrieve Metadata": "Автоматично підтягнути метадані",
"Auto-Retrieve": "Автоматичне підтягування",
"Unlock all fields": "Розблокувати всі поля",
"Unlock All": "Розблокувати все",
"Lock all fields": "Заблокувати всі поля",
"Lock All": "Заблокувати все",
"Reset": "Скинути",
"Edit Metadata": "Редагувати метадані",
"Locked": "Заблоковано",
"Select Metadata Source": "Оберіть джерело метаданих",
"Keep manual input": "Зберегти ручне введення",
"Google Books": "Google Книги",
"Open Library": "Open Library",
"Fiction, Science, History": "Художня література, Наукова фантастика, Історія",
"Open Book in New Window": "Відкрити книгу в новому вікні",
"Voices for {{lang}}": "Голоси для {{lang}}",
"Yandex Translate": "Yandex Перекладач (росія)",
"YYYY or YYYY-MM-DD": "YYYY або YYYY-MM-DD",
"Restore Purchase": "Відновити покупку",
"No purchases found to restore.": "Не знайдено покупок для відновлення.",
"Failed to restore purchases.": "Не вдалося відновити покупки.",
"Failed to manage subscription.": "Не вдалося відредагувати підписку.",
"Failed to load subscription plans.": "Не вдалося завантажити плани підписки.",
"year": "рік",
"Failed to create checkout session": "Не вдалося створити сесію оформлення замовлення",
"Storage": "Сховище",
"Terms of Service": "Умови обслуговування",
"Privacy Policy": "Політика конфіденційності",
"Disable Double Click": "Вимкнути подвійне натискання",
"TTS not supported for this document": "TTS не підтримується в цьому документі",
"Reset Password": "Скинути пароль",
"Show Reading Progress": "Показати проґрес читання",
"Reading Progress Style": "Стиль проґресу читання",
"Page Number": "Номер сторінки",
"Percentage": "Відсотки",
"Deleted local copy of the book: {{title}}": "Видалено локальну копію книги: {{title}}",
"Failed to delete cloud backup of the book: {{title}}": "Не вдалося видалити резервну копію книги в хмарі: {{title}}",
"Failed to delete local copy of the book: {{title}}": "Не вдалося видалити локальну копію книги: {{title}}",
"Are you sure to delete the local copy of the selected book?": "Ви впевнені, що хочете видалити локальну копію вибраної книги?",
"Remove from Cloud & Device": "Видалити з хмари та пристрою",
"Remove from Cloud Only": "Видалити тільки із хмари",
"Remove from Device Only": "Видалити тільки із пристрою",
"Disconnected": "Від'єднано",
"KOReader Sync Settings": "Налаштування синхронізації KOReader",
"Sync Strategy": "Стратегія синхронізації",
"Ask on conflict": "Запитувати при конфлікті",
"Always use latest": "Завжди використовувати найновішу",
"Send changes only": "Відправити тільки зміни",
"Receive changes only": "Отримати тільки зміни",
"Checksum Method": "Метод контролю суми",
"File Content (recommended)": "Вміст файлу (рекомендується)",
"File Name": "Ім'я файлу",
"Device Name": "Ім'я пристрою",
"Connect to your KOReader Sync server.": "Під'єдайте свій сервер синхронізації KOReader.",
"Server URL": "URL сервера",
"Username": "Ім'я користувача",
"Your Username": "Ваше ім'я користувача",
"Password": "Пароль",
"Connect": "Під'єднатися",
"KOReader Sync": "Синхронізація KOReader",
"Sync Conflict": "Конфлікт синхронізації",
"Sync reading progress from \"{{deviceName}}\"?": "Синхронізувати прогрес читання із \"{{deviceName}}\"?",
"another device": "інший пристрій",
"Local Progress": "Локальний проґрес",
"Remote Progress": "Проґрес у хмарі",
"Page {{page}} of {{total}} ({{percentage}}%)": "Сторінка {{page}} з {{total}} ({{percentage}}%)",
"Current position": "Поточна позиція",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "Приблизно сторінка {{page}} із {{total}} ({{percentage}}%)",
"Approximately {{percentage}}%": "Приблизно {{percentage}}%",
"Failed to connect": "Не вдалося під'єднатися",
"Sync Server Connected": "Сервер синхронізації під'єднано",
"Sync as {{userDisplayName}}": "Синхронізувати як {{userDisplayName}}",
"Custom Fonts": "Користувацькі шрифти",
"Cancel Delete": "Скасувати видалення",
"Import Font": "Імпортувати шрифт",
"Delete Font": "Видалити шрифт",
"Tips": "Поради",
"Custom fonts can be selected from the Font Face menu": "Користувацькі шрифти можна вибрати з меню \"Налаштування шрифту\"",
"Manage Custom Fonts": "Керування користувацькими шрифтами",
"Select Files": "Вибрати файли",
"Select Image": "Вибрати зображення",
"Select Video": "Вибрати відео",
"Select Audio": "Вибрати аудіо",
"Select Fonts": "Вибрати шифти",
"Supported font formats: .ttf, .otf, .woff, .woff2": "Підтримувані формати шрифтів: .ttf, .otf, .woff, .woff2",
"Push Progress": "Надіслати проґрес",
"Pull Progress": "Отримати проґрес",
"Previous Paragraph": "Попередній абзац",
"Previous Sentence": "Попереднє речення",
"Pause": "Пауза",
"Play": "Відтворити",
"Next Sentence": "Наступне речення",
"Next Paragraph": "Наступний абзац",
"Separate Cover Page": "Окрема сторінка обкладинки",
"Resize Notebook": "Змінити розмір нотаток",
"Resize Sidebar": "Змінити розмір бічної панелі",
"Get Help from the Readest Community": "Отримати допомогу від спільноти Readest",
"Remove cover image": "Видалити зображення обкладинки",
"Bookshelf": "Книжкова полиця",
"View Menu": "Переглянути меню",
"Settings Menu": "Меню налаштувань",
"View account details and quota": "Переглянути деталі акаунта та квоту",
"Library Header": "Заголовок бібліотеки",
"Book Content": "Зміст книги",
"Footer Bar": "Нижня панель",
"Header Bar": "Верхня панель",
"View Options": "Параметри перегляду",
"Book Menu": "Меню книги",
"Search Options": "Параметри пошуку",
"Close": "Закрити",
"Delete Book Options": "Параметри видалення книги",
"ON": "УВІМКНЕННО",
"OFF": "ВИМКНЕНО",
"Reading Progress": "Проґрес читання",
"Page Margin": "Поля сторінки",
"Remove Bookmark": "Видалити закладку",
"Add Bookmark": "Додати закладку",
"Books Content": "Зміст книг",
"Jump to Location": "Перейти до місця",
"Unpin Notebook": "Відкріпити нотатник",
"Pin Notebook": "Закріпити нотатник",
"Hide Search Bar": "Сховати панель пошуку",
"Show Search Bar": "Показати панель пошуку",
"On {{current}} of {{total}} page": "На {{current}} з {{total}} сторінці",
"Section Title": "Назва розділу",
"Decrease": "Зменшити",
"Increase": "Збільшити",
"Settings Panels": "Панелі налаштувань",
"Settings": "Налаштування",
"Unpin Sidebar": "Відкріпити бічну панель",
"Pin Sidebar": "Закріпити бічну панель",
"Toggle Sidebar": "Перемкнути бічну панель",
"Toggle Translation": "Перемкнути переклад",
"Translation Disabled": "Переклад вимкнено",
"Minimize": "Згорнути",
"Maximize or Restore": "Збільшити або відновити",
"Exit Parallel Read": "Вийти з паралельного читання",
"Enter Parallel Read": "Войти в параллельное чтение",
"Zoom Level": "Рівень масштабування",
"Zoom Out": "Зменшити масштаб",
"Reset Zoom": "Скинути масштаб",
"Zoom In": "Збільшити масштаб",
"Zoom Mode": "Режим масштабування",
"Single Page": "Одна сторінка",
"Auto Spread": "Автоматичне розповсюдження",
"Fit Page": "Підганяти під сторінку",
"Fit Width": "Підганяти під ширину",
"Failed to select directory": "Не вдалося вибрати каталог",
"The new data directory must be different from the current one.": "Новий каталог даних повинен відрізнятися від поточного.",
"Migration failed: {{error}}": "Переміщення не вдалося: {{error}}",
"Change Data Location": "Змінити розташування даних",
"Current Data Location": "Поточне розташування даних",
"Total size: {{size}}": "Загальний розмір: {{size}}",
"Calculating file info...": "Обчислення інформації про файл...",
"New Data Location": "Нове розташування даних",
"Choose Different Folder": "Вибрати іншу папку",
"Choose New Folder": "Вибрати нову папку",
"Migrating data...": "Переміщення даних...",
"Copying: {{file}}": "Копіювання: {{file}}",
"{{current}} of {{total}} files": "{{current}} з {{total}} файлів",
"Migration completed successfully!": "Переміщення завершено успішно!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "Ваші дані були переміщені до нового розташування. Будь ласка, перезапустіть програму, щоб завершити процес.",
"Migration failed": "Переміщення не вдалося",
"Important Notice": "Важливе повідомлення",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "Це перемістить всі ваші дані програми до нового розташування. Переконайтеся, що в призначенні достатньо вільного місця.",
"Restart App": "Перезапустити програму",
"Start Migration": "Почати переміщення",
"Advanced Settings": "Розширені налаштування",
"File count: {{size}}": "Кількість файлів: {{size}}",
"Background Read Aloud": "Озвучування у фоновому режимі",
"Ready to read aloud": "Готовий до читання вголос",
"Read Aloud": "Читати вголос",
"Screen Brightness": "Яскравість екрану",
"Background Image": "Фонове зображення",
"Import Image": "Імпортувати зображення",
"Opacity": "Непрозорість",
"Size": "Розмір",
"Cover": "Покрити",
"Contain": "Втиснути",
"{{number}} pages left in chapter": "Залишилось {{number}} сторінок у розділі",
"Device": "Пристрій",
"E-Ink Mode": "E-Ink режим",
"Highlight Colors": "Кольори виділення",
"Auto Screen Brightness": "Автоматична яскравість екрану",
"Pagination": "Розбиття на сторінки",
"Disable Double Tap": "Вимкнути подвійне натискання",
"Tap to Paginate": "Натисніть, щоб розбити на сторінки",
"Click to Paginate": "Клікніть, щоб розбити на сторінки",
"Tap Both Sides": "Натисніть обидві сторони",
"Click Both Sides": "Клікніть обидві сторони",
"Swap Tap Sides": "Змінити сторони дотику",
"Swap Click Sides": "Змінити сторони кліку",
"Source and Translated": "Джерело та переклад",
"Translated Only": "Тільки переклад",
"Source Only": "Тільки джерело",
"TTS Text": "Текст TTS",
"The book file is corrupted": "Файл книги пошкоджено",
"The book file is empty": "Файл книги порожній",
"Failed to open the book file": "Не вдалося відкрити файл книги",
"On-Demand Purchase": "Покупка за запитом",
"Full Customization": "Повна кастомізація",
"Lifetime Plan": "На все життя",
"One-Time Payment": "Одноразовий платіж",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "Зробіть одноразовий платіж, щоб отримати довічний доступ до певних функцій на всіх пристроях. Купуйте конкретні функції або послуги лише тоді, коли вони вам потрібні.",
"Expand Cloud Sync Storage": "Розширити сховище синхронізації в хмарі",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "Розширте своє хмарне сховище назавжди за допомогою одноразової покупки. Кожна додаткова покупка додає більше місця.",
"Unlock All Customization Options": "Відкрити всі параметри налаштування",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "Відкрийте додаткові теми, шрифти, параметри макета та функції читання вголос, перекладачі, послуги хмарного зберігання.",
"Purchase Successful!": "Покупка успішна!",
"lifetime": "довічний",
"Thank you for your purchase! Your payment has been processed successfully.": "Дякуємо за вашу покупку! Ваш платіж успішно оброблено.",
"Order ID:": "ID замовлення:",
"TTS Highlighting": "Підсвічування TTS",
"Style": "Стиль",
"Underline": "Підкреслення",
"Strikethrough": "Закреслення",
"Squiggly": "Хвиляста лінія",
"Outline": "Контур",
"Save Current Color": "Зберегти поточний колір",
"Quick Colors": "Швидкі кольори",
"Highlighter": "Маркер",
"Save Book Cover": "Зберегти обкладинку книги",
"Auto-save last book cover": "Автоматично зберегти останню обкладинку книги",
"Back": "Назад",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "Лист підтвердження надіслано! Будь ласка, перевірте стару та нову електронну адресу, щоб підтвердити зміну.",
"Failed to update email": "Не вдалося оновити електронну пошту",
"New Email": "Нова електронна адреса",
"Your new email": "Ваша нова електронна адреса",
"Updating email ...": "Оновлення електронної адреси ...",
"Update email": "Оновити електронну адресу",
"Current email": "Поточна електронна адреса",
"Update Email": "Оновити Адресу",
"All": "Всі",
"Unable to open book": "Не вдалося відкрити книгу",
"Punctuation": "Пунктуація",
"Replace Quotation Marks": "Замінити лапки",
"Enabled only in vertical layout.": "Активовано лише у вертикальному макеті.",
"No Conversion": "Без конвертації",
"Simplified to Traditional": "Спрощена → Традиційна",
"Traditional to Simplified": "Традиційна → Спрощена",
"Simplified to Traditional (Taiwan)": "Спрощена → Традиційна (Тайвань)",
"Simplified to Traditional (Hong Kong)": "Спрощена → Традиційна (Хонкон)",
"Simplified to Traditional (Taiwan), with phrases": "Спрощена → Традиційна (Тайвань • фрази)",
"Traditional (Taiwan) to Simplified": "Традиційна (Тайвань) → Спрощена",
"Traditional (Hong Kong) to Simplified": "Традиційна (Хонкон) → Спрощена",
"Traditional (Taiwan) to Simplified, with phrases": "Традиційна (Тайвань • фрази) → Спрощена",
"Convert Simplified and Traditional Chinese": "Конвертувати спрощену/традиційну китайську",
"Convert Mode": "Режим конвертації",
"Failed to auto-save book cover for lock screen: {{error}}": "Не вдалося автоматично зберегти обкладинку книги для екрана блокування: {{error}}",
"Download from Cloud": "Завантажити з хмари",
"Upload to Cloud": "Завантажити в хмару",
"Clear Custom Fonts": "Очистити користувацькі шрифти",
"Columns": "Стовпці",
"OPDS Catalogs": "Каталоги OPDS",
"Adding LAN addresses is not supported in the web app version.": "Додавання LAN-адрес не підтримується у веб-версії.",
"Invalid OPDS catalog. Please check the URL.": "Недійсний каталог OPDS. Будь ласка, перевірте URL.",
"Browse and download books from online catalogs": "Переглядайте та завантажуйте книги з онлайн-каталогів",
"My Catalogs": "Мої каталоги",
"Add Catalog": "Додати каталог",
"No catalogs yet": "Каталогів поки немає",
"Add your first OPDS catalog to start browsing books": "Додайте перший каталог OPDS, щоб почати перегляд книг",
"Add Your First Catalog": "Додайте свій перший каталог",
"Browse": "Переглянути",
"Popular Catalogs": "Популярні каталоги",
"Add": "Додати",
"Add OPDS Catalog": "Додати каталог OPDS",
"Catalog Name": "Назва каталогу",
"My Calibre Library": "Моя бібліотека Calibre",
"OPDS URL": "OPDS URL",
"Username (optional)": "Ім’я користувача (необов’язково)",
"Password (optional)": "Пароль (необов’язково)",
"Description (optional)": "Опис (необов’язково)",
"A brief description of this catalog": "Короткий опис цього каталогу",
"Validating...": "Перевірка...",
"View All": "Переглянути все",
"Forward": "Вперед",
"Home": "Головна",
"{{count}} items_one": "{{count}} елемент",
"{{count}} items_few": "{{count}} елементи",
"{{count}} items_many": "{{count}} елементів",
"{{count}} items_other": "{{count}} елементів",
"Download completed": "Завантаження завершено",
"Download failed": "Завантаження не вдалося",
"Open Access": "Вільний доступ",
"Borrow": "Позичити",
"Buy": "Купити",
"Subscribe": "Підписатися",
"Sample": "Зразок",
"Download": "Завантажити",
"Open & Read": "Відкрити та читати",
"Tags": "Теги",
"Tag": "Тег",
"First": "Перша",
"Previous": "Попередня",
"Next": "Наступна",
"Last": "Остання",
"Cannot Load Page": "Не вдалося завантажити сторінку",
"An error occurred": "Сталася помилка",
"Online Library": "Онлайн бібліотека",
"URL must start with http:// or https://": "URL повинен починатися з http:// або https://",
"Title, Author, Tag, etc...": "Назва, автор, тег тощо...",
"Query": "Запит",
"Subject": "Тема",
"Enter {{terms}}": "Введіть {{terms}}",
"No search results found": "Результатів пошуку не знайдено",
"Failed to load OPDS feed: {{status}} {{statusText}}": "Не вдалося завантажити стрічку OPDS: {{status}} {{statusText}}",
"Search in {{title}}": "Пошук у {{title}}",
"Manage Storage": "Керування сховищем",
"Failed to load files": "Не вдалося завантажити файли",
"Deleted {{count}} file(s)_one": "Видалено {{count}} файл",
"Deleted {{count}} file(s)_few": "Видалено {{count}} файли",
"Deleted {{count}} file(s)_many": "Видалено {{count}} файлів",
"Deleted {{count}} file(s)_other": "Видалено {{count}} файлів",
"Failed to delete {{count}} file(s)_one": "Не вдалося видалити {{count}} файл",
"Failed to delete {{count}} file(s)_few": "Не вдалося видалити {{count}} файли",
"Failed to delete {{count}} file(s)_many": "Не вдалося видалити {{count}} файлів",
"Failed to delete {{count}} file(s)_other": "Не вдалося видалити {{count}} файлів",
"Failed to delete files": "Не вдалося видалити файли",
"Total Files": "Всього файлів",
"Total Size": "Загальний розмір",
"Quota": "Квота",
"Used": "Використано",
"Files": "Файли",
"Search files...": "Пошук файлів...",
"Newest First": "Спершу новіші",
"Oldest First": "Спершу старіші",
"Largest First": "Спершу найбільші",
"Smallest First": "Спершу найменші",
"Name A-Z": "Ім'я A-Z",
"Name Z-A": "Ім'я Z-A",
"{{count}} selected_one": "Вибрано {{count}} файл",
"{{count}} selected_few": "Вибрано {{count}} файли",
"{{count}} selected_many": "Вибрано {{count}} файлів",
"{{count}} selected_other": "Вибрано {{count}} файлів",
"Delete Selected": "Видалити вибране",
"Created": "Створено",
"No files found": "Файли не знайдено",
"No files uploaded yet": "Файли ще не завантажені",
"files": "файли",
"Page {{current}} of {{total}}": "Сторінка {{current}} з {{total}}",
"Are you sure to delete {{count}} selected file(s)?_one": "Ви впевнені, що хочете видалити {{count}} файл?",
"Are you sure to delete {{count}} selected file(s)?_few": "Ви впевнені, що хочете видалити {{count}} файли?",
"Are you sure to delete {{count}} selected file(s)?_many": "Ви впевнені, що хочете видалити {{count}} файлів?",
"Are you sure to delete {{count}} selected file(s)?_other": "Ви впевнені, що хочете видалити {{count}} файлів?",
"Cloud Storage Usage": "Використання хмарного сховища",
"Rename Group": "Перейменувати групу",
"From Directory": "З каталогу",
"Successfully imported {{count}} book(s)_one": "Успішно імпортовано 1 книгу",
"Successfully imported {{count}} book(s)_few": "Успішно імпортовано {{count}} книги",
"Successfully imported {{count}} book(s)_many": "Успішно імпортовано {{count}} книг",
"Successfully imported {{count}} book(s)_other": "Успішно імпортовано {{count}} книг",
"Count": "Кількість",
"Start Page": "Початкова сторінка",
"Search in OPDS Catalog...": "Пошук у каталозі OPDS...",
"Please log in to use advanced TTS features.": "Будь ласка, увійдіть, щоб використовувати розширені функції TTS."
}
@@ -8,7 +8,6 @@
"Auto Mode": "Chế độ tự động",
"Behavior": "Hành vi",
"Book": "Sách",
"Book Cover": "Bìa sách",
"Bookmark": "Đánh dấu",
"Cancel": "Hủy",
"Chapter": "Chương",
@@ -18,7 +17,6 @@
"Confirm Deletion": "Xác nhận xóa",
"Copied to notebook": "Đã sao chép vào sổ ghi chú",
"Copy": "Sao chép",
"Custom CSS": "CSS tùy chỉnh",
"Dark Mode": "Chế độ tối",
"Default": "Mặc định",
"Default Font": "Phông chữ mặc định",
@@ -28,7 +26,6 @@
"Dictionary": "Từ điển",
"Download Readest": "Tải Readest",
"Edit": "Chỉnh sửa",
"Enter your custom CSS here...": "Nhập CSS tùy chỉnh của bạn vào đây...",
"Excerpts": "Trích dẫn",
"Failed to import book(s): {{filenames}}": "Không thể nhập sách: {{filenames}}",
"Fast": "Nhanh",
@@ -48,7 +45,6 @@
"Horizontal Direction": "Hướng ngang",
"Hyphenation": "Gạch nối từ",
"Import Books": "Nhập sách",
"Language:": "Ngôn ngữ:",
"Layout": "Bố cục",
"Light Mode": "Chế độ sáng",
"Loading...": "Đang tải...",
@@ -70,8 +66,8 @@
"Paging Animation": "Hiệu ứng lật trang",
"Paragraph": "Đoạn văn",
"Parallel Read": "Đọc song song",
"Published:": "Xuất bản:",
"Publisher:": "Nhà xuất bản:",
"Published": "Xuất bản",
"Publisher": "Nhà xuất bản",
"Reading Progress Synced": "Tiến độ đọc đã được đồng bộ",
"Reload Page": "Tải lại trang",
"Reveal in File Explorer": "Hiển thị trong File Explorer",
@@ -85,7 +81,6 @@
"Search...": "Tìm kiếm...",
"Select Book": "Chọn sách",
"Select Books": "Chọn sách",
"Select Multiple Books": "Chọn nhiều sách",
"Sepia": "Nâu cổ",
"Serif Font": "Phông chữ có chân",
"Show Book Details": "Hiển thị chi tiết sách",
@@ -96,16 +91,15 @@
"Slow": "Chậm",
"Solarized": "Solarized",
"Speak": "Đọc",
"Subjects:": "Chủ đề:",
"Subjects": "Chủ đề",
"System Fonts": "Phông chữ hệ thống",
"TTS not supported in this device": "TTS không được hỗ trợ trên thiết bị này",
"Theme Color": "Màu chủ đề",
"Theme Mode": "Chế độ chủ đề",
"Translate": "Dịch",
"Translated Text": "Văn bản dịch",
"Unknown": "Không xác định",
"Untitled": "Không có tiêu đề",
"Updated:": "Cập nhật:",
"Updated": "Cập nhật",
"Version {{version}}": "Phiên bản {{version}}",
"Vertical Direction": "Hướng dọc",
"Welcome to your library. You can import your books here and read them anytime.": "Chào mừng đến với thư viện của bạn. Bạn có thể nhập sách vào đây và đọc bất cứ lúc nào.",
@@ -114,8 +108,6 @@
"Your Library": "Thư viện của bạn",
"TTS not supported for PDF": "TTS không được hỗ trợ cho PDF",
"Override Book Font": "Ghi đè phông chữ sách",
"Vertical Margins (px)": "Lề dọc (px)",
"Horizontal Margins (%)": "Lề ngang (%)",
"Apply to All Books": "Áp dụng cho tất cả sách",
"Apply to This Book": "Áp dụng cho sách này",
"Unable to fetch the translation. Try again later.": "Không thể tải dịch vụ. Vui lòng thử lại sau.",
@@ -124,14 +116,13 @@
"Book Details": "Chi tiết sách",
"From Local File": "Từ tệp địa phương",
"TOC": "Mục lục",
"Table of Contents": "Mục lục",
"Book uploaded: {{title}}": "Sách đã tải lên: {{title}}",
"Failed to upload book: {{title}}": "Không thể tải lên sách: {{title}}",
"Book downloaded: {{title}}": "Sách đã tải về: {{title}}",
"Failed to download book: {{title}}": "Không thể tải về sách: {{title}}",
"Upload Book": "Tải lên sách",
"Auto Upload Books to Cloud": "Tự động tải sách lên đám mây",
"{{percentage}}% of Cloud Storage Used.": "{{percentage}}% dung lượng lưu trữ đám mây đã sử dụng.",
"Storage": "Lưu trữ",
"Book deleted: {{title}}": "Sách đã xóa: {{title}}",
"Failed to delete book: {{title}}": "Không thể xóa sách: {{title}}",
"Check Updates on Start": "Kiểm tra cập nhật khi khởi động",
@@ -163,7 +154,7 @@
"Create a Password": "Tạo mật khẩu",
"Sign up": "Đăng ký",
"Signing up...": "Đang đăng ký...",
"Dont have an account? Sign up": "Chưa có tài khoản? Đăng ký",
"Don't have an account? Sign up": "Chưa có tài khoản? Đăng ký",
"Check your email for the confirmation link": "Kiểm tra email của bạn để nhận liên kết xác nhận",
"Signing in ...": "Đang đăng nhập ...",
"Send a magic link email": "Gửi email liên kết ma thuật",
@@ -186,37 +177,14 @@
"Sign in with Apple": "Đăng nhập với Apple",
"Sign in with GitHub": "Đăng nhập với GitHub",
"Account": "Tài khoản",
"Cloud Storage": "Lưu trữ đám mây",
"Failed to delete user. Please try again later.": "Không thể xóa người dùng. Vui lòng thử lại sau.",
"Unlimited Offline/Online Reading": "Đọc ngoại tuyến/trực tuyến không giới hạn",
"Unlimited Cloud Sync Devices": "Đồng bộ hóa thiết bị đám mây không giới hạn",
"Essential Text-to-Speech Voices": "Giọng nói chuyển văn bản thành giọng nói cơ bản",
"DeepL Free Access": "Truy cập DeepL miễn phí",
"Community Support": "Hỗ trợ cộng đồng",
"500 MB Cloud Sync Space": "500 MB không gian đồng bộ hóa đám mây",
"Includes All Free Tier Benefits": "Bao gồm tất cả lợi ích của gói miễn phí",
"AI Summaries": "Tóm tắt AI",
"AI Translations": "Dịch thuật AI",
"Priority Support": "Hỗ trợ ưu tiên",
"DeepL Pro Access": "Truy cập DeepL Pro",
"Expanded Text-to-Speech Voices": "Giọng nói chuyển văn bản thành giọng nói mở rộng",
"2000 MB Cloud Sync Space": "2000 MB không gian đồng bộ hóa đám mây",
"Includes All Plus Tier Benefits": "Bao gồm tất cả lợi ích của gói Plus",
"Unlimited AI Summaries": "Tóm tắt AI không giới hạn",
"Unlimited AI Translations": "Dịch thuật AI không giới hạn",
"Unlimited DeepL Pro Access": "Truy cập DeepL Pro không giới hạn",
"Advanced AI Tools": "Công cụ AI nâng cao",
"Early Feature Access": "Truy cập tính năng sớm",
"10 GB Cloud Sync Space": "10 GB không gian đồng bộ hóa đám mây",
"Loading profile...": "Đang tải hồ sơ...",
"Features": "Tính năng",
"Delete Account": "Xóa tài khoản",
"Delete Your Account?": "Xóa tài khoản của bạn?",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "Hành động này không thể hoàn tác. Tất cả dữ liệu của bạn trên đám mây sẽ bị xóa vĩnh viễn.",
"Delete Permanently": "Xóa vĩnh viễn",
"Free Tier": "Gói miễn phí",
"Plus Tier": "Gói Plus",
"Pro Tier": "Gói Pro",
"RTL Direction": "Hướng RTL",
"Maximum Column Height": "Chiều cao cột tối đa",
"Maximum Column Width": "Chiều rộng cột tối đa",
@@ -225,7 +193,7 @@
"No supported files found. Supported formats: {{formats}}": "Không tìm thấy tệp được hỗ trợ. Định dạng được hỗ trợ: {{formats}}",
"Drop to Import Books": "Kéo và thả để nhập sách",
"Custom": "Tùy chỉnh",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n—William Shakespeare": "Cả thế giới này là một sân khấu,\nVà tất cả đàn ông và phụ nữ chỉ là những diễn viên;\nHọ có cửa ra và cửa vào của mình,\nVà một người trong cuộc đời mình đóng nhiều vai,\nHành động của mình là bảy tuổi.\n\n— William Shakespeare",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "Cả thế giới này là một sân khấu,\nVà tất cả đàn ông và phụ nữ chỉ là những diễn viên;\nHọ có cửa ra và cửa vào của mình,\nVà một người trong cuộc đời mình đóng nhiều vai,\nHành động của mình là bảy tuổi.\n\n— William Shakespeare",
"Custom Theme": "Chủ đề tùy chỉnh",
"Theme Name": "Tên chủ đề",
"Text Color": "Màu văn bản",
@@ -252,9 +220,9 @@
"Auto Import on File Open": "Tự động nhập khi mở tệp",
"LXGW WenKai GB Screen": "LXGW WenKai SC",
"LXGW WenKai TC": "LXGW WenKai TC",
"No chapters detected.": "Không phát hiện thấy chương nào.",
"Failed to parse the EPUB file.": "Không thể phân tích tệp EPUB.",
"This book format is not supported.": "Định dạng sách này không được hỗ trợ.",
"No chapters detected": "Không phát hiện thấy chương nào",
"Failed to parse the EPUB file": "Không thể phân tích tệp EPUB",
"This book format is not supported": "Định dạng sách này không được hỗ trợ",
"Unable to fetch the translation. Please log in first and try again.": "Không thể tải dịch vụ. Vui lòng đăng nhập trước và thử lại.",
"Group": "Nhóm",
"Always on Top": "Luôn ở trên cùng",
@@ -267,13 +235,13 @@
"Clear Search": "Xóa tìm kiếm",
"Header & Footer": "Đầu trang & Chân trang",
"Apply also in Scrolled Mode": "Áp dụng cũng trong chế độ cuộn",
"A new version of Readest is Available!": "Đã có phiên bản mới của Readest!",
"A new version of Readest is available!": "Đã có phiên bản mới của Readest!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Readest {{newVersion}} đã có sẵn (phiên bản đã cài đặt {{currentVersion}}).",
"Download and install now?": "Tải xuống và cài đặt ngay bây giờ?",
"Downloading {{downloaded}} of {{contentLength}}": "Đang tải {{downloaded}} trong {{contentLength}}",
"Download finished": "Tải xuống hoàn tất",
"DOWNLOAD & INSTALL": "TẢI XUỐNG & CÀI ĐẶT",
"Changelog:": "Thay đổi:",
"Changelog": "Thay đổi",
"Software Update": "Cập nhật phần mềm",
"Title": "Tiêu đề",
"Date Read": "Ngày đã đọc",
@@ -282,18 +250,15 @@
"Ascending": "Tăng dần",
"Descending": "Giảm dần",
"Sort by...": "Sắp xếp theo...",
"Added:": "Đã thêm:",
"Format:": "Định dạng:",
"Added": "Đã thêm",
"GuanKiapTsingKhai-T": "GuanKiapTsingKhai-T",
"Description:": "Miêu tả:",
"Description": "Miêu tả",
"No description available": "Không có mô tả nào",
"List": "Danh sách",
"Grid": "Lưới",
"(from 'As You Like It', Act II)": "(từ 'Như bạn thích', Hành động II)",
"Link Color": "Màu liên kết",
"Volume Keys for Page Flip": "Phím âm lượng để lật trang",
"Clicks for Page Flip": "Nhấp để lật trang",
"Swap Clicks Area": "Đổi khu vực nhấp",
"Screen": "Màn hình",
"Orientation": "Định hướng",
"Portrait": "Chân dung",
@@ -302,7 +267,7 @@
"Checking for updates...": "Đang kiểm tra cập nhật...",
"Error checking for updates": "Lỗi khi kiểm tra cập nhật",
"Details": "Chi tiết",
"File Size:": "Kích thước tệp:",
"File Size": "Kích thước tệp",
"Auto Detect": "Phát hiện tự động",
"Next Section": "Phần tiếp theo",
"Previous Section": "Phần trước",
@@ -328,9 +293,467 @@
"Disable Translation": "Tắt dịch",
"Scroll": "Cuộn",
"Overlap Pixels": "Chồng lấn pixel",
"Click": "Nhấp",
"System Language": "Ngôn ngữ hệ thống",
"Security": "An ninh",
"Allow JavaScript": "Cho phép JavaScript",
"Enable only if you trust the file.": "Chỉ bật nếu bạn tin tưởng tệp."
"Enable only if you trust the file.": "Chỉ bật nếu bạn tin tưởng tệp.",
"Sort TOC by Page": "Sort Mục lục theo Trang",
"Search in {{count}} Book(s)..._other": "Tìm kiếm trong {{count}} cuốn sách...",
"No notes match your search": "Không tìm thấy ghi chú nào",
"Search notes and excerpts...": "Tìm ghi chú...",
"Sign in to Sync": "Đăng nhập",
"Synced at {{time}}": "Đã đồng bộ lúc {{time}}",
"Never synced": "Chưa từng đồng bộ",
"Show Remaining Time": "Hiển thị thời gian còn lại",
"{{time}} min left in chapter": "{{time}} phút còn lại trong chương",
"Override Book Color": "Đổi màu sách",
"Login Required": "Cần đăng nhập",
"Quota Exceeded": "Vượt hạn mức",
"{{percentage}}% of Daily Translation Characters Used.": "{{percentage}}% số ký tự dịch hàng ngày đã sử dụng.",
"Translation Characters": "Những ký tự dịch",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}} giọng",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "Đã xảy ra sự cố. Đừng lo, nhóm của chúng tôi đã được thông báo và chúng tôi đang làm việc để sửa chữa.",
"Error Details:": "Chi tiết lỗi:",
"Try Again": "Thử lại",
"Need help?": "Bạn cần giúp đỡ?",
"Contact Support": "Liên hệ hỗ trợ",
"Code Highlighting": "Đánh dấu mã",
"Enable Highlighting": "Cho phép đánh dấu",
"Code Language": "Ngôn ngữ mã",
"Top Margin (px)": "Lề trên (px)",
"Bottom Margin (px)": "Lề dưới (px)",
"Right Margin (px)": "Lề phải (px)",
"Left Margin (px)": "Lề trái (px)",
"Column Gap (%)": "Khoảng cách cột (%)",
"Always Show Status Bar": "Luôn hiển thị thanh trạng thái",
"Custom Content CSS": "CSS nội dung",
"Enter CSS for book content styling...": "Nhập CSS cho phần nội dung sách...",
"Custom Reader UI CSS": "CSS giao diện đọc",
"Enter CSS for reader interface styling...": "Nhập CSS cho giao diện trình đọc...",
"Crop": "Cắt",
"Book Covers": "Bìa sách",
"Fit": "Vừa vặn",
"Reset {{settings}}": "Đặt lại {{settings}}",
"Reset Settings": "Đặt lại cài đặt",
"{{count}} pages left in chapter_other": "Còn {{count}} trang trong chương",
"Show Remaining Pages": "Hiển thị trang còn lại",
"Source Han Serif CN VF": "Source Han Serif",
"Huiwen-mincho": "Huiwen Mincho",
"KingHwa_OldSong": "KingHwa Song",
"Manage Subscription": "Quản lý đăng ký",
"Coming Soon": "Sắp ra mắt",
"Upgrade to {{plan}}": "Nâng cấp lên {{plan}}",
"Upgrade to Plus or Pro": "Nâng cấp lên Plus hoặc Pro",
"Current Plan": "Gói hiện tại",
"Plan Limits": "Giới hạn gói",
"Processing your payment...": "Đang xử lý thanh toán...",
"Please wait while we confirm your subscription.": "Vui lòng chờ trong khi chúng tôi xác nhận đăng ký của bạn.",
"Payment Processing": "Đang xử lý thanh toán",
"Your payment is being processed. This usually takes a few moments.": "Thanh toán của bạn đang được xử lý. Thường mất vài giây.",
"Payment Failed": "Thanh toán thất bại",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "Chúng tôi không thể xử lý đăng ký của bạn. Vui lòng thử lại hoặc liên hệ hỗ trợ nếu sự cố tiếp tục.",
"Back to Profile": "Quay lại hồ sơ",
"Subscription Successful!": "Đăng ký thành công!",
"Thank you for your subscription! Your payment has been processed successfully.": "Cảm ơn bạn đã đăng ký! Thanh toán của bạn đã được xử lý thành công.",
"Email:": "Email:",
"Plan:": "Gói:",
"Amount:": "Số tiền:",
"Go to Library": "Đi đến Thư viện",
"Need help? Contact our support team at support@readest.com": "Cần hỗ trợ? Liên hệ nhóm hỗ trợ tại support@readest.com",
"Free Plan": "Gói miễn phí",
"month": "tháng",
"AI Translations (per day)": "Dịch AI (mỗi ngày)",
"Plus Plan": "Gói Plus",
"Includes All Free Plan Benefits": "Bao gồm tất cả lợi ích của gói miễn phí",
"Pro Plan": "Gói Pro",
"More AI Translations": "Thêm dịch AI",
"Complete Your Subscription": "Hoàn tất đăng ký của bạn",
"{{percentage}}% of Cloud Sync Space Used.": "Đã sử dụng {{percentage}}% không gian đồng bộ đám mây.",
"Cloud Sync Storage": "Lưu trữ đồng bộ đám mây",
"Disable": "Tắt",
"Enable": "Bật",
"Upgrade to Readest Premium": "Đăng ký Readest Premium",
"Show Source Text": "Hiển thị văn bản gốc",
"Cross-Platform Sync": "Đồng Bộ Đa Nền Tảng",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "Đồng bộ liền mạch thư viện, tiến độ, đánh dấu và ghi chú trên tất cả thiết bị—không bao giờ mất vị trí đọc nữa.",
"Customizable Reading": "Đọc Tùy Chỉnh",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "Cá nhân hóa mọi chi tiết với phông chữ, bố cục, chủ đề có thể điều chỉnh và cài đặt hiển thị nâng cao cho trải nghiệm đọc hoàn hảo.",
"AI Read Aloud": "AI Đọc To",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "Thưởng thức việc đọc rảnh tay với giọng AI tự nhiên làm sống động sách của bạn.",
"AI Translations": "Dịch Thuật AI",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "Dịch bất kỳ văn bản nào ngay lập tức với sức mạnh của Google, Azure hoặc DeepL—hiểu nội dung bằng mọi ngôn ngữ.",
"Connect with fellow readers and get help fast in our friendly community channels.": "Kết nối với độc giả khác và nhận trợ giúp nhanh chóng trong các kênh cộng đồng thân thiện.",
"Unlimited AI Read Aloud Hours": "Giờ Đọc To AI Không Giới Hạn",
"Listen without limits—convert as much text as you like into immersive audio.": "Nghe không giới hạn—chuyển đổi bao nhiêu văn bản bạn muốn thành âm thanh sống động.",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "Mở khóa khả năng dịch thuật nâng cao với nhiều lượt sử dụng hàng ngày và tùy chọn nâng cao.",
"DeepL Pro Access": "Truy Cập DeepL Pro",
"Enjoy faster responses and dedicated assistance whenever you need help.": "Tận hưởng phản hồi nhanh hơn và hỗ trợ chuyên biệt khi bạn cần giúp đỡ.",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "Đã đạt hạn ngạch dịch thuật hàng ngày. Nâng cấp gói để tiếp tục sử dụng dịch thuật AI.",
"Includes All Plus Plan Benefits": "Bao Gồm Tất Cả Lợi Ích Gói Plus",
"Early Feature Access": "Truy Cập Tính Năng Sớm",
"Be the first to explore new features, updates, and innovations before anyone else.": "Khám phá tính năng mới, cập nhật và đổi mới trước người khác.",
"Advanced AI Tools": "Công Cụ AI Nâng Cao",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "Khai thác công cụ AI mạnh mẽ cho đọc thông minh, dịch thuật và khám phá nội dung.",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "Dịch tới 100.000 ký tự hàng ngày với công cụ dịch chính xác nhất hiện có.",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "Dịch tới 500.000 ký tự hàng ngày với công cụ dịch chính xác nhất hiện có.",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "Lưu trữ và truy cập an toàn toàn bộ bộ sưu tập đọc với tới 5 GB lưu trữ đám mây.",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "Lưu trữ và truy cập an toàn toàn bộ bộ sưu tập đọc với tới 20 GB lưu trữ đám mây.",
"Deleted cloud backup of the book: {{title}}": "Đã xóa bản sao lưu đám mây của sách: {{title}}",
"Are you sure to delete the cloud backup of the selected book?": "Bạn có chắc chắn muốn xóa bản sao lưu đám mây của sách đã chọn không?",
"What's New in Readest": "Những gì mới trong Readest",
"Enter book title": "Nhập tiêu đề sách",
"Subtitle": "Phụ đề",
"Enter book subtitle": "Nhập phụ đề sách",
"Enter author name": "Nhập tên tác giả",
"Series": "Bộ sách",
"Enter series name": "Nhập tên bộ sách",
"Series Index": "Số thứ tự trong bộ",
"Enter series index": "Nhập số thứ tự trong bộ",
"Total in Series": "Tổng số trong bộ",
"Enter total books in series": "Nhập tổng số sách trong bộ",
"Enter publisher": "Nhập nhà xuất bản",
"Publication Date": "Ngày xuất bản",
"Identifier": "Định danh",
"Enter book description": "Nhập mô tả sách",
"Change cover image": "Thay đổi ảnh bìa",
"Replace": "Thay thế",
"Unlock cover": "Mở khóa bìa",
"Lock cover": "Khóa bìa",
"Auto-Retrieve Metadata": "Tự động lấy siêu dữ liệu",
"Auto-Retrieve": "Tự động lấy",
"Unlock all fields": "Mở khóa tất cả trường",
"Unlock All": "Mở khóa tất cả",
"Lock all fields": "Khóa tất cả trường",
"Lock All": "Khóa tất cả",
"Reset": "Đặt lại",
"Edit Metadata": "Chỉnh sửa siêu dữ liệu",
"Locked": "Đã khóa",
"Select Metadata Source": "Chọn nguồn siêu dữ liệu",
"Keep manual input": "Giữ nhập liệu thủ công",
"Google Books": "Google Books",
"Open Library": "Open Library",
"Fiction, Science, History": "Tiểu thuyết, Khoa học, Lịch sử",
"Open Book in New Window": "Mở Sách trong Cửa sổ Mới",
"Voices for {{lang}}": "Giọng nói cho {{lang}}",
"Yandex Translate": "Yandex Dịch",
"YYYY or YYYY-MM-DD": "YYYY hoặc YYYY-MM-DD",
"Restore Purchase": "Khôi phục mua hàng",
"No purchases found to restore.": "Không tìm thấy giao dịch mua nào để khôi phục.",
"Failed to restore purchases.": "Khôi phục giao dịch mua không thành công.",
"Failed to manage subscription.": "Quản lý đăng ký không thành công.",
"Failed to load subscription plans.": "Tải kế hoạch đăng ký không thành công.",
"year": "năm",
"Failed to create checkout session": "Không thể tạo phiên làm việc thanh toán",
"Storage": "Lưu trữ",
"Terms of Service": "Điều khoản dịch vụ",
"Privacy Policy": "Chính sách bảo mật",
"Disable Double Click": "Tắt Nhấp Đôi",
"TTS not supported for this document": "TTS không được hỗ trợ cho tài liệu này",
"Reset Password": "Đặt lại mật khẩu",
"Show Reading Progress": "Hiển thị tiến độ đọc",
"Reading Progress Style": "Phong cách tiến độ đọc",
"Page Number": "Số trang",
"Percentage": "Phần trăm",
"Deleted local copy of the book: {{title}}": "Đã xóa bản sao cục bộ của sách: {{title}}",
"Failed to delete cloud backup of the book: {{title}}": "Không thể xóa bản sao lưu đám mây của sách: {{title}}",
"Failed to delete local copy of the book: {{title}}": "Không thể xóa bản sao cục bộ của sách: {{title}}",
"Are you sure to delete the local copy of the selected book?": "Bạn có chắc chắn muốn xóa bản sao cục bộ của cuốn sách đã chọn không?",
"Remove from Cloud & Device": "Xóa khỏi Đám mây & Thiết bị",
"Remove from Cloud Only": "Xóa chỉ khỏi Đám mây",
"Remove from Device Only": "Xóa chỉ khỏi Thiết bị",
"Disconnected": "Mất kết nối",
"KOReader Sync Settings": "Cài đặt đồng bộ KOReader",
"Sync Strategy": "Chiến lược đồng bộ",
"Ask on conflict": "Hỏi khi có xung đột",
"Always use latest": "Luôn sử dụng phiên bản mới nhất",
"Send changes only": "Chỉ gửi thay đổi",
"Receive changes only": "Chỉ nhận thay đổi",
"Checksum Method": "Phương pháp kiểm tra",
"File Content (recommended)": "Nội dung tệp (được khuyến nghị)",
"File Name": "Tên tệp",
"Device Name": "Tên thiết bị",
"Connect to your KOReader Sync server.": "Kết nối với máy chủ đồng bộ KOReader của bạn.",
"Server URL": "URL máy chủ",
"Username": "Tên người dùng",
"Your Username": "Tên người dùng của bạn",
"Password": "Mật khẩu",
"Connect": "Kết nối",
"KOReader Sync": "Đồng bộ KOReader",
"Sync Conflict": "Xung đột đồng bộ",
"Sync reading progress from \"{{deviceName}}\"?": "Đồng bộ tiến độ đọc từ \"{{deviceName}}\"?",
"another device": "thiết bị khác",
"Local Progress": "Tiến độ cục bộ",
"Remote Progress": "Tiến độ từ xa",
"Page {{page}} of {{total}} ({{percentage}}%)": "Trang {{page}} của {{total}} ({{percentage}}%)",
"Current position": "Vị trí hiện tại",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "Khoảng trang {{page}} của {{total}} ({{percentage}}%)",
"Approximately {{percentage}}%": "Khoảng {{percentage}}%",
"Failed to connect": "Không thể kết nối",
"Sync Server Connected": "Máy chủ đồng bộ đã kết nối",
"Sync as {{userDisplayName}}": "Đồng bộ dưới tên {{userDisplayName}}",
"Custom Fonts": "Phông Chữ Tùy Chỉnh",
"Cancel Delete": "Hủy Xóa",
"Import Font": "Nhập Phông Chữ",
"Delete Font": "Xóa Phông Chữ",
"Tips": "Mẹo",
"Custom fonts can be selected from the Font Face menu": "Phông chữ tùy chỉnh có thể được chọn từ menu Phông Chữ",
"Manage Custom Fonts": "Quản Lý Phông Chữ Tùy Chỉnh",
"Select Files": "Chọn Tệp",
"Select Image": "Chọn Hình Ảnh",
"Select Video": "Chọn Video",
"Select Audio": "Chọn Âm Thanh",
"Select Fonts": "Chọn Phông Chữ",
"Supported font formats: .ttf, .otf, .woff, .woff2": "Định dạng phông chữ được hỗ trợ: .ttf, .otf, .woff, .woff2",
"Push Progress": "Đẩy tiến độ",
"Pull Progress": "Kéo tiến độ",
"Previous Paragraph": "Đoạn trước",
"Previous Sentence": "Câu trước",
"Pause": "Tạm dừng",
"Play": "Phát",
"Next Sentence": "Câu tiếp theo",
"Next Paragraph": "Đoạn tiếp theo",
"Separate Cover Page": "Trang Bìa Riêng",
"Resize Notebook": "Thay Đổi Kích Thước Sổ Ghi Chép",
"Resize Sidebar": "Thay Đổi Kích Thước Thanh Bên",
"Get Help from the Readest Community": "Nhận Trợ Giúp từ Cộng Đồng Readest",
"Remove cover image": "Xóa ảnh bìa",
"Bookshelf": "Kệ sách",
"View Menu": "Xem menu",
"Settings Menu": "Menu cài đặt",
"View account details and quota": "Xem chi tiết tài khoản và hạn mức",
"Library Header": "Tiêu đề thư viện",
"Book Content": "Nội dung sách",
"Footer Bar": "Thanh chân trang",
"Header Bar": "Thanh đầu trang",
"View Options": "Tùy chọn xem",
"Book Menu": "Menu sách",
"Search Options": "Tùy chọn tìm kiếm",
"Close": "Đóng",
"Delete Book Options": "Tùy chọn xóa sách",
"ON": "BẬT",
"OFF": "TẮT",
"Reading Progress": "Tiến độ đọc",
"Page Margin": "Lề trang",
"Remove Bookmark": "Xóa đánh dấu",
"Add Bookmark": "Thêm đánh dấu",
"Books Content": "Nội dung sách",
"Jump to Location": "Nhảy đến vị trí",
"Unpin Notebook": "Bỏ ghim sổ tay",
"Pin Notebook": "Ghim sổ tay",
"Hide Search Bar": "Ẩn thanh tìm kiếm",
"Show Search Bar": "Hiện thanh tìm kiếm",
"On {{current}} of {{total}} page": "Trên {{current}} của {{total}} trang",
"Section Title": "Tiêu đề phần",
"Decrease": "Giảm",
"Increase": "Tăng",
"Settings Panels": "Các bảng điều khiển cài đặt",
"Settings": "Cài đặt",
"Unpin Sidebar": "Bỏ ghim thanh bên",
"Pin Sidebar": "Ghim thanh bên",
"Toggle Sidebar": "Chuyển đổi thanh bên",
"Toggle Translation": "Chuyển đổi dịch thuật",
"Translation Disabled": "Dịch thuật đã tắt",
"Minimize": "Thu nhỏ",
"Maximize or Restore": "Tối đa hóa hoặc Khôi phục",
"Exit Parallel Read": "Thoát Đọc Song Song",
"Enter Parallel Read": "Vào Đọc Song Song",
"Zoom Level": "Độ phóng to",
"Zoom Out": "Thu nhỏ",
"Reset Zoom": "Đặt lại độ phóng to",
"Zoom In": "Phóng to",
"Zoom Mode": "Chế độ phóng to",
"Single Page": "Một trang",
"Auto Spread": "Tự động trải rộng",
"Fit Page": "Vừa trang",
"Fit Width": "Vừa chiều rộng",
"Failed to select directory": "Không thể chọn thư mục",
"The new data directory must be different from the current one.": "Thư mục dữ liệu mới phải khác với thư mục hiện tại.",
"Migration failed: {{error}}": "Di chuyển không thành công: {{error}}",
"Change Data Location": "Thay đổi vị trí dữ liệu",
"Current Data Location": "Vị trí dữ liệu hiện tại",
"Total size: {{size}}": "Tổng kích thước: {{size}}",
"Calculating file info...": "Đang tính toán thông tin tệp...",
"New Data Location": "Vị trí dữ liệu mới",
"Choose Different Folder": "Chọn thư mục khác",
"Choose New Folder": "Chọn thư mục mới",
"Migrating data...": "Đang di chuyển dữ liệu...",
"Copying: {{file}}": "Đang sao chép: {{file}}",
"{{current}} of {{total}} files": "{{current}} của {{total}} tệp",
"Migration completed successfully!": "Di chuyển hoàn tất thành công!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "Dữ liệu của bạn đã được chuyển đến vị trí mới. Vui lòng khởi động lại ứng dụng để hoàn tất quá trình.",
"Migration failed": "Di chuyển không thành công",
"Important Notice": "Thông báo quan trọng",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "Điều này sẽ di chuyển tất cả dữ liệu ứng dụng của bạn đến vị trí mới. Hãy chắc chắn rằng đích đến có đủ không gian trống.",
"Restart App": "Khởi động lại ứng dụng",
"Start Migration": "Bắt đầu di chuyển",
"Advanced Settings": "Cài đặt nâng cao",
"File count: {{size}}": "Số lượng tệp: {{size}}",
"Background Read Aloud": "Đọc To Nền",
"Ready to read aloud": "Sẵn sàng để đọc to",
"Read Aloud": "Đọc To",
"Screen Brightness": "Độ sáng màn hình",
"Background Image": "Ảnh nền",
"Import Image": "Nhập ảnh",
"Opacity": "Độ mờ",
"Size": "Kích thước",
"Cover": "Bìa",
"Contain": "Chứa",
"{{number}} pages left in chapter": "Còn {{number}} trang trong chương",
"Device": "Thiết bị",
"E-Ink Mode": "Chế độ E-Ink",
"Highlight Colors": "Màu nổi bật",
"Auto Screen Brightness": "Độ sáng màn hình tự động",
"Pagination": "Phân trang",
"Disable Double Tap": "Vô hiệu hóa chạm hai lần",
"Tap to Paginate": "Chạm để phân trang",
"Click to Paginate": "Nhấp để phân trang",
"Tap Both Sides": "Chạm vào cả hai bên",
"Click Both Sides": "Nhấp vào cả hai bên",
"Swap Tap Sides": "Đổi bên chạm",
"Swap Click Sides": "Đổi bên nhấp",
"Source and Translated": "Nguồn và Đã dịch",
"Translated Only": "Chỉ Đã dịch",
"Source Only": "Chỉ Nguồn",
"TTS Text": "Văn bản TTS",
"The book file is corrupted": "Tệp sách bị hỏng",
"The book file is empty": "Tệp sách trống",
"Failed to open the book file": "Không thể mở tệp sách",
"On-Demand Purchase": "Mua theo yêu cầu",
"Full Customization": "Tùy chỉnh đầy đủ",
"Lifetime Plan": "Kế hoạch trọn đời",
"One-Time Payment": "Thanh toán một lần",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "Thực hiện một khoản thanh toán duy nhất để tận hưởng quyền truy cập trọn đời vào các tính năng cụ thể trên tất cả các thiết bị. Mua các tính năng hoặc dịch vụ cụ thể chỉ khi bạn cần chúng.",
"Expand Cloud Sync Storage": "Mở rộng dung lượng lưu trữ đồng bộ hóa đám mây",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "Mở rộng dung lượng lưu trữ đám mây của bạn mãi mãi với một lần mua. Mỗi lần mua thêm sẽ thêm không gian.",
"Unlock All Customization Options": "Mở khóa tất cả tùy chọn tùy chỉnh",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "Mở khóa các chủ đề, phông chữ, tùy chọn bố cục và đọc to, dịch giả, dịch vụ lưu trữ đám mây bổ sung.",
"Purchase Successful!": "Mua hàng thành công!",
"lifetime": "trọn đời",
"Thank you for your purchase! Your payment has been processed successfully.": "Cảm ơn bạn đã mua hàng! Thanh toán của bạn đã được xử lý thành công.",
"Order ID:": "Mã đơn hàng:",
"TTS Highlighting": "Đánh dấu TTS",
"Style": "Kiểu",
"Underline": "Gạch chân",
"Strikethrough": "Gạch ngang",
"Squiggly": "Gạch ngoằn ngoèo",
"Outline": "Đường viền",
"Save Current Color": "Lưu màu hiện tại",
"Quick Colors": "Màu nhanh",
"Highlighter": "Bút đánh dấu",
"Save Book Cover": "Lưu bìa sách",
"Auto-save last book cover": "Tự động lưu bìa sách cuối cùng",
"Back": "Quay lại",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "Email xác nhận đã được gửi! Vui lòng kiểm tra địa chỉ email cũ và mới của bạn để xác nhận thay đổi.",
"Failed to update email": "Cập nhật email thất bại",
"New Email": "Email mới",
"Your new email": "Email mới của bạn",
"Updating email ...": "Đang cập nhật email ...",
"Update email": "Cập nhật email",
"Current email": "Email hiện tại",
"Update Email": "Cập nhật email",
"All": "Tất cả",
"Unable to open book": "Không thể mở sách",
"Punctuation": "Dấu câu",
"Replace Quotation Marks": "Thay thế dấu ngoặc kép",
"Enabled only in vertical layout.": "Chỉ bật trong bố cục dọc.",
"No Conversion": "Không chuyển đổi",
"Simplified to Traditional": "Giản thể → Phồn thể",
"Traditional to Simplified": "Phồn thể → Giản thể",
"Simplified to Traditional (Taiwan)": "Giản thể → Phồn thể (Đài Loan)",
"Simplified to Traditional (Hong Kong)": "Giản thể → Phồn thể (Hồng Kông)",
"Simplified to Traditional (Taiwan), with phrases": "Giản thể → Phồn thể (Đài Loan • cụm từ)",
"Traditional (Taiwan) to Simplified": "Phồn thể (Đài Loan) → Giản thể",
"Traditional (Hong Kong) to Simplified": "Phồn thể (Hồng Kông) → Giản thể",
"Traditional (Taiwan) to Simplified, with phrases": "Phồn thể (Đài Loan • cụm từ) → Giản thể",
"Convert Simplified and Traditional Chinese": "Chuyển đổi Trung giản/Phồn thể",
"Convert Mode": "Chế độ chuyển đổi",
"Failed to auto-save book cover for lock screen: {{error}}": "Không thể tự động lưu bìa sách cho màn hình khóa: {{error}}",
"Download from Cloud": "Tải xuống từ đám mây",
"Upload to Cloud": "Tải lên đám mây",
"Clear Custom Fonts": "Xóa phông chữ tùy chỉnh",
"Columns": "Cột",
"OPDS Catalogs": "Danh mục OPDS",
"Adding LAN addresses is not supported in the web app version.": "Việc thêm địa chỉ LAN không được hỗ trợ trong phiên bản web.",
"Invalid OPDS catalog. Please check the URL.": "Danh mục OPDS không hợp lệ. Vui lòng kiểm tra URL.",
"Browse and download books from online catalogs": "Duyệt và tải sách từ các danh mục trực tuyến",
"My Catalogs": "Danh mục của tôi",
"Add Catalog": "Thêm danh mục",
"No catalogs yet": "Chưa có danh mục nào",
"Add your first OPDS catalog to start browsing books": "Thêm danh mục OPDS đầu tiên để bắt đầu duyệt sách",
"Add Your First Catalog": "Thêm danh mục đầu tiên",
"Browse": "Duyệt",
"Popular Catalogs": "Danh mục phổ biến",
"Add": "Thêm",
"Add OPDS Catalog": "Thêm danh mục OPDS",
"Catalog Name": "Tên danh mục",
"My Calibre Library": "Thư viện Calibre của tôi",
"OPDS URL": "URL OPDS",
"Username (optional)": "Tên đăng nhập (tùy chọn)",
"Password (optional)": "Mật khẩu (tùy chọn)",
"Description (optional)": "Mô tả (tùy chọn)",
"A brief description of this catalog": "Mô tả ngắn gọn về danh mục này",
"Validating...": "Đang xác thực...",
"View All": "Xem tất cả",
"Forward": "Tiếp",
"Home": "Trang chủ",
"{{count}} items_other": "{{count}} mục",
"Download completed": "Tải xuống hoàn tất",
"Download failed": "Tải xuống thất bại",
"Open Access": "Truy cập mở",
"Borrow": "Mượn",
"Buy": "Mua",
"Subscribe": "Đăng ký",
"Sample": "Mẫu",
"Download": "Tải xuống",
"Open & Read": "Mở & Đọc",
"Tags": "Thẻ",
"Tag": "Thẻ",
"First": "Đầu tiên",
"Previous": "Trước",
"Next": "Tiếp theo",
"Last": "Cuối cùng",
"Cannot Load Page": "Không thể tải trang",
"An error occurred": "Đã xảy ra lỗi",
"Online Library": "Thư viện trực tuyến",
"URL must start with http:// or https://": "URL phải bắt đầu bằng http:// hoặc https://",
"Title, Author, Tag, etc...": "Tiêu đề, Tác giả, Thẻ, v.v...",
"Query": "Truy vấn",
"Subject": "Chủ đề",
"Enter {{terms}}": "Nhập {{terms}}",
"No search results found": "Không tìm thấy kết quả tìm kiếm",
"Failed to load OPDS feed: {{status}} {{statusText}}": "Không tải được nguồn cấp OPDS: {{status}} {{statusText}}",
"Search in {{title}}": "Tìm kiếm trong {{title}}",
"Manage Storage": "Quản lý bộ nhớ",
"Failed to load files": "Không tải được tệp",
"Deleted {{count}} file(s)_other": "Đã xóa {{count}} tệp",
"Failed to delete {{count}} file(s)_other": "Không xóa được {{count}} tệp",
"Failed to delete files": "Không xóa được tệp",
"Total Files": "Tổng số tệp",
"Total Size": "Tổng dung lượng",
"Quota": "Dung lượng cho phép",
"Used": "Đã sử dụng",
"Files": "Tệp",
"Search files...": "Tìm tệp...",
"Newest First": "Mới nhất trước",
"Oldest First": "Cũ nhất trước",
"Largest First": "Lớn nhất trước",
"Smallest First": "Nhỏ nhất trước",
"Name A-Z": "Tên A-Z",
"Name Z-A": "Tên Z-A",
"{{count}} selected_other": "Đã chọn {{count}} tệp",
"Delete Selected": "Xóa các mục đã chọn",
"Created": "Đã tạo",
"No files found": "Không tìm thấy tệp",
"No files uploaded yet": "Chưa tải lên tệp nào",
"files": "tệp",
"Page {{current}} of {{total}}": "Trang {{current}} trên {{total}}",
"Are you sure to delete {{count}} selected file(s)?_other": "Bạn có chắc muốn xóa {{count}} tệp đã chọn không?",
"Cloud Storage Usage": "Sử dụng lưu trữ đám mây",
"Rename Group": "Đổi tên nhóm",
"From Directory": "Từ thư mục",
"Successfully imported {{count}} book(s)_other": "Đã nhập thành công {{count}} sách",
"Count": "Số lượng",
"Start Page": "Trang bắt đầu",
"Search in OPDS Catalog...": "Tìm kiếm trong danh mục OPDS...",
"Please log in to use advanced TTS features.": "Vui lòng đăng nhập để sử dụng các tính năng TTS nâng cao."
}
@@ -8,7 +8,6 @@
"Auto Mode": "自动主题",
"Behavior": "行为",
"Book": "书籍",
"Book Cover": "书籍封面",
"Bookmark": "书签",
"Cancel": "取消",
"Chapter": "章节",
@@ -18,7 +17,6 @@
"Confirm Deletion": "确认删除",
"Copied to notebook": "已复制到笔记本",
"Copy": "复制",
"Custom CSS": "自定义 CSS",
"Dark Mode": "深色主题",
"Default": "默认",
"Default Font": "默认字体",
@@ -28,7 +26,6 @@
"Dictionary": "词典",
"Download Readest": "下载 Readest",
"Edit": "编辑",
"Enter your custom CSS here...": "在此处输入您的自定义 CSS...",
"Excerpts": "摘录",
"Failed to import book(s): {{filenames}}": "导入书籍失败:{{filenames}}",
"Fast": "快",
@@ -48,7 +45,6 @@
"Horizontal Direction": "横排",
"Hyphenation": "断字",
"Import Books": "导入书籍",
"Language:": "语言",
"Layout": "布局",
"Light Mode": "浅色主题",
"Loading...": "加载中...",
@@ -70,8 +66,8 @@
"Paging Animation": "翻页动画",
"Paragraph": "段落",
"Parallel Read": "并排阅读",
"Published:": "出版日期",
"Publisher:": "出版商",
"Published": "出版日期",
"Publisher": "出版商",
"Reading Progress Synced": "阅读进度已同步",
"Reload Page": "重新加载页面",
"Reveal in File Explorer": "在文件管理器中显示",
@@ -85,27 +81,25 @@
"Search...": "搜索...",
"Select Book": "选择书籍",
"Select Books": "选择书籍",
"Select Multiple Books": "选择多本书籍",
"Sepia": "旧韵",
"Serif Font": "衬线字体",
"Show Book Details": "显示书籍详情",
"Sidebar": "侧边栏",
"Sign In": "登录",
"Sign Out": "登出",
"Sign Out": "登出账户",
"Sky": "天青",
"Slow": "慢",
"Solarized": "日晖",
"Speak": "朗读",
"Subjects:": "主题",
"Subjects": "主题",
"System Fonts": "系统字体",
"TTS not supported in this device": "此设备不支持 TTS",
"Theme Color": "主题颜色",
"Theme Mode": "主题模式",
"Translate": "翻译",
"Translated Text": "译文",
"Unknown": "未知",
"Untitled": "无标题",
"Updated:": "更新日期",
"Updated": "更新日期",
"Version {{version}}": "版本 {{version}}",
"Vertical Direction": "竖排",
"Welcome to your library. You can import your books here and read them anytime.": "书库空空如也,您可以导入您的书籍并随时阅读。",
@@ -114,8 +108,6 @@
"Your Library": "书库",
"TTS not supported for PDF": "PDF 文档暂不支持 TTS",
"Override Book Font": "覆盖书籍字体",
"Vertical Margins (px)": "垂直边距(px",
"Horizontal Margins (%)": "水平边距(%",
"Apply to All Books": "应用于所有书籍",
"Apply to This Book": "应用于此书籍",
"Unable to fetch the translation. Try again later.": "无法获取翻译,请稍后重试。",
@@ -124,14 +116,13 @@
"Book Details": "书籍详情",
"From Local File": "从本地文件导入",
"TOC": "目录",
"Table of Contents": "目录",
"Book uploaded: {{title}}": "书籍已上传:{{title}}",
"Failed to upload book: {{title}}": "上传书籍失败:{{title}}",
"Book downloaded: {{title}}": "书籍已下载:{{title}}",
"Failed to download book: {{title}}": "下载书籍失败:{{title}}",
"Upload Book": "上传书籍",
"Auto Upload Books to Cloud": "自动上传书籍到云端",
"{{percentage}}% of Cloud Storage Used.": "已使用 {{percentage}}% 云存储空间",
"Storage": "存储空间",
"Book deleted: {{title}}": "书籍已删除:{{title}}",
"Failed to delete book: {{title}}": "删除书籍失败:{{title}}",
"Check Updates on Start": "启动时检查更新",
@@ -163,7 +154,7 @@
"Create a Password": "创建密码",
"Sign up": "注册",
"Signing up...": "正在注册...",
"Dont have an account? Sign up": "没有账号?注册",
"Don't have an account? Sign up": "没有账号?注册",
"Check your email for the confirmation link": "检查您的电子邮件以获取确认链接",
"Signing in ...": "正在登录...",
"Send a magic link email": "发送魔法链接邮件",
@@ -186,37 +177,14 @@
"Sign in with Apple": "使用 Apple 登录",
"Sign in with GitHub": "使用 GitHub 登录",
"Account": "账户",
"Cloud Storage": "云存储",
"Failed to delete user. Please try again later.": "删除用户失败。请稍后重试。",
"Unlimited Offline/Online Reading": "无限离线和在线阅读",
"Unlimited Cloud Sync Devices": "无限云同步设备个数",
"Essential Text-to-Speech Voices": "基础 TTS 语音包",
"DeepL Free Access": "免费版 DeepL 翻译",
"Community Support": "社区支持",
"500 MB Cloud Sync Space": "500 MB 云同步空间",
"Includes All Free Tier Benefits": "包含所有免费版权益",
"AI Summaries": "AI 摘要",
"AI Translations": "AI 翻译",
"Priority Support": "优先支持",
"DeepL Pro Access": "专业版 DeepL 翻译",
"Expanded Text-to-Speech Voices": "更多文本转语音声音",
"2000 MB Cloud Sync Space": "2000 MB 云同步空间",
"Includes All Plus Tier Benefits": "包含所有增强版权益",
"Unlimited AI Summaries": "无限使用 AI 摘要",
"Unlimited AI Translations": "无限使用 AI 翻译",
"Unlimited DeepL Pro Access": "无限使用专业版 DeepL 翻译",
"Advanced AI Tools": "高级 AI 工具",
"Early Feature Access": "抢先体验新功能",
"10 GB Cloud Sync Space": "10 GB 云同步空间",
"Loading profile...": "加载个人资料中...",
"Features": "功能特性",
"Delete Account": "删除账户",
"Delete Your Account?": "删除您的账户?",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "此操作无法撤销。您在云端的所有数据将被永久删除。",
"Delete Permanently": "永久删除",
"Free Tier": "免费版",
"Plus Tier": "增强版",
"Pro Tier": "专业版",
"RTL Direction": "从右向左",
"Maximum Column Height": "最大列高",
"Maximum Column Width": "最大列宽",
@@ -225,7 +193,7 @@
"No supported files found. Supported formats: {{formats}}": "未找到支持的文件。支持的格式:{{formats}}",
"Drop to Import Books": "拖放导入书籍",
"Custom": "自定义",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n—William Shakespeare": "世界是座舞台, \n所有男女都只是演员; \n各有其出场和入场; \n每个人皆扮演许多角色, \n而演出共分为七个阶段。\n\n——威廉·莎士比亚",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "世界是座舞台, \n所有男女都只是演员; \n各有其出场和入场; \n每个人皆扮演许多角色, \n而演出共分为七个阶段。\n\n——威廉·莎士比亚",
"Custom Theme": "自定义主题",
"Theme Name": "主题名称",
"Text Color": "文本颜色",
@@ -252,9 +220,9 @@
"Auto Import on File Open": "打开文件时自动导入",
"LXGW WenKai GB Screen": "霞鹜文楷",
"LXGW WenKai TC": "霞鶩文楷",
"No chapters detected.": "未检测到章节",
"Failed to parse the EPUB file.": "无法解析 EPUB 文件",
"This book format is not supported.": "不支持此书籍格式",
"No chapters detected": "未检测到章节",
"Failed to parse the EPUB file": "无法解析 EPUB 文件",
"This book format is not supported": "不支持此书籍格式",
"Unable to fetch the translation. Please log in first and try again.": "无法获取翻译。请登录后重试。",
"Group": "分组",
"Always on Top": "窗口置顶",
@@ -267,13 +235,13 @@
"Clear Search": "清除搜索",
"Header & Footer": "页眉页脚",
"Apply also in Scrolled Mode": "应用到滚动模式",
"A new version of Readest is Available!": "有新版本的 Readest 可更新!",
"A new version of Readest is available!": "有新版本的 Readest 可更新!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Readest {{newVersion}} 可更新(已安装版本 {{currentVersion}})。",
"Download and install now?": "立即下载并安装?",
"Downloading {{downloaded}} of {{contentLength}}": "正在下载 {{downloaded}} / {{contentLength}}",
"Download finished": "下载完成",
"DOWNLOAD & INSTALL": "下载并安装",
"Changelog:": "更新日志",
"Changelog": "更新日志",
"Software Update": "软件更新",
"Title": "书名",
"Date Read": "阅读日期",
@@ -282,18 +250,15 @@
"Ascending": "升序",
"Descending": "降序",
"Sort by...": "排序方式...",
"Added:": "添加日期",
"Format:": "格式",
"Added": "添加日期",
"GuanKiapTsingKhai-T": "原俠正楷-T",
"Description:": "简介",
"Description": "简介",
"No description available": "暂无简介",
"List": "列表",
"Grid": "网格",
"(from 'As You Like It', Act II)": "出自《皆大欢喜》,第二幕",
"Link Color": "链接颜色",
"Volume Keys for Page Flip": "音量键翻页",
"Clicks for Page Flip": "点击翻页",
"Swap Clicks Area": "交换点击区域",
"Screen": "屏幕",
"Orientation": "屏幕方向",
"Portrait": "竖屏",
@@ -302,7 +267,7 @@
"Checking for updates...": "检查更新中...",
"Error checking for updates": "检查更新时出错",
"Details": "详情",
"File Size:": "文件大小",
"File Size": "文件大小",
"Auto Detect": "自动检测",
"Next Section": "下一章",
"Previous Section": "上一章",
@@ -328,9 +293,467 @@
"Disable Translation": "禁用翻译",
"Scroll": "滚动",
"Overlap Pixels": "重叠像素",
"Click": "点击",
"System Language": "系统语言",
"Security": "安全",
"Allow JavaScript": "允许 JavaScript",
"Enable only if you trust the file.": "建議僅在您信任該檔案時啟用"
"Enable only if you trust the file.": "建议仅在您信任该文件时启用",
"Sort TOC by Page": "按页码排序目录",
"Search in {{count}} Book(s)..._other": "在 {{count}} 本书籍中搜索...",
"No notes match your search": "未找到匹配的笔记",
"Search notes and excerpts...": "搜索笔记...",
"Sign in to Sync": "登录后同步",
"Synced at {{time}}": "同步于:{{time}}",
"Never synced": "从未同步",
"Show Remaining Time": "显示剩余时间",
"{{time}} min left in chapter": "本章剩余 {{time}} 分钟",
"Override Book Color": "覆盖书籍颜色",
"Login Required": "需登录",
"Quota Exceeded": "额度不足",
"{{percentage}}% of Daily Translation Characters Used.": "已使用 {{percentage}}% 的每日翻译字符数",
"Translation Characters": "翻译字数",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}} 种语音",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "出了点问题。请不要担心,我们的团队已经收到通知并正在修复中。",
"Error Details:": "错误详情:",
"Try Again": "重试",
"Need help?": "需要帮助吗?",
"Contact Support": "联系客服",
"Code Highlighting": "代码高亮",
"Enable Highlighting": "启用高亮",
"Code Language": "代码语言",
"Top Margin (px)": "上边距",
"Bottom Margin (px)": "下边距",
"Right Margin (px)": "右边距",
"Left Margin (px)": "左边距",
"Column Gap (%)": "列间距",
"Always Show Status Bar": "始终显示状态栏",
"Custom Content CSS": "自定义内容 CSS",
"Enter CSS for book content styling...": "输入书籍内容样式的CSS…",
"Custom Reader UI CSS": "自定义界面 CSS",
"Enter CSS for reader interface styling...": "输入阅读器界面样式的CSS…",
"Crop": "裁剪",
"Book Covers": "书籍封面",
"Fit": "适应",
"Reset {{settings}}": "重置{{settings}}",
"Reset Settings": "重置设置",
"{{count}} pages left in chapter_other": "本章剩余 {{count}} 页",
"Show Remaining Pages": "显示剩余页数",
"Source Han Serif CN VF": "思源宋体",
"Huiwen-mincho": "汇文明朝体",
"KingHwa_OldSong": "京华老宋体",
"Manage Subscription": "管理订阅",
"Coming Soon": "即将上线",
"Upgrade to {{plan}}": "升级到 {{plan}}",
"Upgrade to Plus or Pro": "升级到 Plus 或 Pro",
"Current Plan": "当前套餐",
"Plan Limits": "套餐限制",
"Processing your payment...": "正在处理付款...",
"Please wait while we confirm your subscription.": "请稍候,我们正在确认您的订阅。",
"Payment Processing": "付款处理中",
"Your payment is being processed. This usually takes a few moments.": "您的付款正在处理中,通常需要几秒钟。",
"Payment Failed": "付款失败",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "我们无法处理您的订阅。请重试,或如问题持续请联系支持。",
"Back to Profile": "返回个人资料",
"Subscription Successful!": "订阅成功!",
"Thank you for your subscription! Your payment has been processed successfully.": "感谢您的订阅!您的付款已成功处理。",
"Email:": "邮箱:",
"Plan:": "套餐:",
"Amount:": "金额:",
"Go to Library": "前往书库",
"Need help? Contact our support team at support@readest.com": "需要帮助?请联系支持团队:support@readest.com",
"Free Plan": "免费套餐",
"month": "月",
"AI Translations (per day)": "AI 翻译(每日)",
"Plus Plan": "Plus 套餐",
"Includes All Free Plan Benefits": "包含所有免费套餐功能",
"Pro Plan": "Pro 套餐",
"More AI Translations": "更多 AI 翻译",
"Complete Your Subscription": "完成您的订阅",
"{{percentage}}% of Cloud Sync Space Used.": "已使用 {{percentage}}% 的云同步空间。",
"Cloud Sync Storage": "云同步空间",
"Disable": "禁用",
"Enable": "启用",
"Upgrade to Readest Premium": "升级到 Readest Premium",
"Show Source Text": "显示原文",
"Cross-Platform Sync": "跨平台同步",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "在所有设备间无缝同步您的书库、进度、标注和笔记——再也不会丢失阅读位置。",
"Customizable Reading": "个性化阅读",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "通过可调节的字体、布局、主题和高级显示设置个性化每个细节,获得完美阅读体验。",
"AI Read Aloud": "AI 朗读",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "享受解放双手的阅读体验,使用自然流畅的 AI 语音让书籍栩栩如生。",
"AI Translations": "AI 翻译",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "借助 Google、Azure 或 DeepL 的强大功能即时翻译任何语言的内容。",
"Connect with fellow readers and get help fast in our friendly community channels.": "与其他读者交流,在我们友好的社区频道中快速获得帮助。",
"Unlimited AI Read Aloud Hours": "无限 AI 朗读时长",
"Listen without limits—convert as much text as you like into immersive audio.": "将任意数量的文本转换为沉浸式音频。",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "增强翻译功能、更多翻译用量和高级选项。",
"DeepL Pro Access": "DeepL Pro 访问权限",
"Enjoy faster responses and dedicated assistance whenever you need help.": "享受更快响应和专属帮助,随时获得支持。",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "已达每日翻译配额。升级套餐以继续使用 AI 翻译。",
"Includes All Plus Plan Benefits": "包含所有 Plus 套餐功能",
"Early Feature Access": "抢先体验新功能",
"Be the first to explore new features, updates, and innovations before anyone else.": "抢先体验最新功能、更新与创新成果。",
"Advanced AI Tools": "高级 AI 工具",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "利用强大的 AI 工具实现智能阅读、翻译和内容发现。",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "使用最精准的翻译引擎每天可翻译10万字。",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "使用最精准的翻译引擎每天可翻译50万字。",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "使用多达 5GB 的安全云存储保存和访问您的整个阅读收藏。",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "使用多达 20GB 的安全云存储保存和访问您的整个阅读收藏。",
"Deleted cloud backup of the book: {{title}}": "已删除书籍云备份:{{title}}",
"Are you sure to delete the cloud backup of the selected book?": "您确定要删除所选书籍的云备份吗?",
"What's New in Readest": "Readest 更新功能",
"Enter book title": "输入书名",
"Subtitle": "副标题",
"Enter book subtitle": "输入书籍副标题",
"Enter author name": "输入作者姓名",
"Series": "系列",
"Enter series name": "输入系列名称",
"Series Index": "系列编号",
"Enter series index": "输入系列编号",
"Total in Series": "系列总数",
"Enter total books in series": "输入系列中书籍总数",
"Enter publisher": "输入出版社",
"Publication Date": "出版日期",
"Identifier": "标识符",
"Enter book description": "输入书籍描述",
"Change cover image": "替换封面图片",
"Replace": "替换",
"Unlock cover": "解锁封面",
"Lock cover": "锁定封面",
"Auto-Retrieve Metadata": "自动获取元数据",
"Auto-Retrieve": "自动获取",
"Unlock all fields": "解锁所有字段",
"Unlock All": "全部解锁",
"Lock all fields": "锁定所有字段",
"Lock All": "全部锁定",
"Reset": "重置",
"Edit Metadata": "编辑元数据",
"Locked": "已锁定",
"Select Metadata Source": "选择元数据来源",
"Keep manual input": "保留手动输入",
"Google Books": "谷歌图书",
"Open Library": "开放图书馆",
"Fiction, Science, History": "小说,科学,历史",
"Open Book in New Window": "在新窗口中打开书籍",
"Voices for {{lang}}": "{{lang}} 的语音",
"Yandex Translate": "Yandex 翻译",
"YYYY or YYYY-MM-DD": "YYYY 或 YYYY-MM-DD",
"Restore Purchase": "恢复购买",
"No purchases found to restore.": "未找到可恢复的购买。",
"Failed to restore purchases.": "恢复购买失败。",
"Failed to manage subscription.": "管理订阅失败。",
"Failed to load subscription plans.": "加载订阅计划失败。",
"year": "年",
"Failed to create checkout session": "创建结账会话失败",
"Storage": "云同步空间",
"Terms of Service": "服务条款",
"Privacy Policy": "隐私政策",
"Disable Double Click": "禁用双击",
"TTS not supported for this document": "TTS 不支持此文档",
"Reset Password": "重置密码",
"Show Reading Progress": "显示阅读进度",
"Reading Progress Style": "阅读进度样式",
"Page Number": "页码",
"Percentage": "百分比",
"Deleted local copy of the book: {{title}}": "已删除书籍本地副本:{{title}}",
"Failed to delete cloud backup of the book: {{title}}": "未能删除书籍云备份:{{title}}",
"Failed to delete local copy of the book: {{title}}": "未能删除书籍本地副本:{{title}}",
"Are you sure to delete the local copy of the selected book?": "您确定要删除所选书籍的本地副本吗?",
"Remove from Cloud & Device": "从云端和设备中移除",
"Remove from Cloud Only": "仅从云端移除",
"Remove from Device Only": "仅从设备中移除",
"Disconnected": "已断开连接",
"KOReader Sync Settings": "KOReader 同步设置",
"Sync Strategy": "同步策略",
"Ask on conflict": "发生冲突时询问",
"Always use latest": "始终使用最新",
"Send changes only": "仅发送更改",
"Receive changes only": "仅接收更改",
"Checksum Method": "校验和方法",
"File Content (recommended)": "文件内容(推荐)",
"File Name": "文件名",
"Device Name": "设备名称",
"Connect to your KOReader Sync server.": "连接到您的 KOReader 同步服务器。",
"Server URL": "服务器 URL",
"Username": "用户名",
"Your Username": "您的用户名",
"Password": "密码",
"Connect": "连接",
"KOReader Sync": "KOReader 同步",
"Sync Conflict": "同步冲突",
"Sync reading progress from \"{{deviceName}}\"?": "从 \"{{deviceName}}\" 同步阅读进度?",
"another device": "另一台设备",
"Local Progress": "本地进度",
"Remote Progress": "远程进度",
"Page {{page}} of {{total}} ({{percentage}}%)": "第 {{page}} 页,共 {{total}} 页 ({{percentage}}%)",
"Current position": "当前位置",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "大约第 {{page}} 页,共 {{total}} 页 ({{percentage}}%)",
"Approximately {{percentage}}%": "大约 {{percentage}}%",
"Failed to connect": "连接失败",
"Sync Server Connected": "同步服务器已连接",
"Sync as {{userDisplayName}}": "以 {{userDisplayName}} 身份同步",
"Custom Fonts": "自定义字体",
"Cancel Delete": "取消删除",
"Import Font": "导入字体",
"Delete Font": "删除字体",
"Tips": "提示",
"Custom fonts can be selected from the Font Face menu": "可以从字形菜单中选择自定义字体",
"Manage Custom Fonts": "管理自定义字体",
"Select Files": "选择文件",
"Select Image": "选择图片",
"Select Video": "选择视频",
"Select Audio": "选择音频",
"Select Fonts": "选择字体",
"Supported font formats: .ttf, .otf, .woff, .woff2": "支持的字体格式:.ttf, .otf, .woff, .woff2",
"Push Progress": "推送阅读进度",
"Pull Progress": "拉取阅读进度",
"Previous Paragraph": "上一段",
"Previous Sentence": "上一句",
"Pause": "暂停",
"Play": "播放",
"Next Sentence": "下一句",
"Next Paragraph": "下一段",
"Separate Cover Page": "单独封面页",
"Resize Notebook": "调整笔记本大小",
"Resize Sidebar": "调整侧边栏大小",
"Get Help from the Readest Community": "从 Readest 社区获取帮助",
"Remove cover image": "移除封面图片",
"Bookshelf": "书架",
"View Menu": "查看菜单",
"Settings Menu": "设置菜单",
"View account details and quota": "查看账户详情和配额",
"Library Header": "图书馆标题",
"Book Content": "书籍内容",
"Footer Bar": "底部栏",
"Header Bar": "顶部栏",
"View Options": "查看选项",
"Book Menu": "书籍菜单",
"Search Options": "搜索选项",
"Close": "关闭",
"Delete Book Options": "删除书籍选项",
"ON": "开启",
"OFF": "关闭",
"Reading Progress": "阅读进度",
"Page Margin": "页面边距",
"Remove Bookmark": "移除书签",
"Add Bookmark": "添加书签",
"Books Content": "书籍内容",
"Jump to Location": "跳转到位置",
"Unpin Notebook": "取消固定笔记本",
"Pin Notebook": "固定笔记本",
"Hide Search Bar": "隐藏搜索栏",
"Show Search Bar": "显示搜索栏",
"On {{current}} of {{total}} page": "在第 {{current}} 页,共 {{total}} 页",
"Section Title": "章节标题",
"Decrease": "减少",
"Increase": "增加",
"Settings Panels": "设置面板",
"Settings": "设置",
"Unpin Sidebar": "取消固定侧边栏",
"Pin Sidebar": "固定侧边栏",
"Toggle Sidebar": "切换侧边栏",
"Toggle Translation": "切换翻译",
"Translation Disabled": "翻译已禁用",
"Minimize": "最小化",
"Maximize or Restore": "最大化或还原",
"Exit Parallel Read": "退出并排阅读",
"Enter Parallel Read": "进入并排阅读",
"Zoom Level": "缩放级别",
"Zoom Out": "缩小",
"Reset Zoom": "重置缩放",
"Zoom In": "放大",
"Zoom Mode": "缩放模式",
"Single Page": "单页",
"Auto Spread": "自动展开",
"Fit Page": "适应页面",
"Fit Width": "适应宽度",
"Failed to select directory": "选择目录失败",
"The new data directory must be different from the current one.": "新的数据目录必须与当前目录不同。",
"Migration failed: {{error}}": "迁移失败: {{error}}",
"Change Data Location": "更改数据位置",
"Current Data Location": "当前数据位置",
"Total size: {{size}}": "总大小: {{size}}",
"Calculating file info...": "正在计算文件信息...",
"New Data Location": "新数据位置",
"Choose Different Folder": "选择不同的文件夹",
"Choose New Folder": "选择新文件夹",
"Migrating data...": "正在迁移数据...",
"Copying: {{file}}": "正在复制: {{file}}",
"{{current}} of {{total}} files": "{{current}} / {{total}} 个文件",
"Migration completed successfully!": "迁移成功完成!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "您的数据已移动到新位置。请重新启动应用程序以完成此过程。",
"Migration failed": "迁移失败",
"Important Notice": "重要通知",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "这将把您所有的应用数据移动到新位置。请确保目标位置有足够的可用空间。",
"Restart App": "重启应用",
"Start Migration": "开始迁移",
"Advanced Settings": "高级设置",
"File count: {{size}}": "文件数量: {{size}}",
"Background Read Aloud": "后台语音朗读",
"Ready to read aloud": "语音朗读已就绪",
"Read Aloud": "语音朗读",
"Screen Brightness": "屏幕亮度",
"Background Image": "背景图片",
"Import Image": "导入图片",
"Opacity": "不透明度",
"Size": "大小",
"Cover": "覆盖",
"Contain": "适应",
"{{number}} pages left in chapter": "本章剩余{{number}}页",
"Device": "设备",
"E-Ink Mode": "E-Ink 模式",
"Highlight Colors": "高亮颜色",
"Auto Screen Brightness": "自动屏幕亮度",
"Pagination": "翻页",
"Disable Double Tap": "禁用双击",
"Tap to Paginate": "点击翻页",
"Click to Paginate": "点击翻页",
"Tap Both Sides": "点击两侧翻页",
"Click Both Sides": "点击两侧翻页",
"Swap Tap Sides": "交换点击区域",
"Swap Click Sides": "交换点击区域",
"Source and Translated": "原文和译文",
"Translated Only": "仅译文",
"Source Only": "仅原文",
"TTS Text": "TTS 文本",
"The book file is corrupted": "书籍文件已损坏",
"The book file is empty": "书籍文件为空",
"Failed to open the book file": "无法打开书籍文件",
"On-Demand Purchase": "按需购买",
"Full Customization": "完全自定义",
"Lifetime Plan": "终身套餐",
"One-Time Payment": "一次性付款",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "进行一次性付款以享受在所有设备上对特定功能的终身访问。仅在需要时购买特定功能或服务。",
"Expand Cloud Sync Storage": "扩展云同步存储",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "通过一次性购买,永久扩展您的云存储。每次额外购买都会增加更多空间。",
"Unlock All Customization Options": "解锁所有自定义选项",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "解锁其他主题、字体、布局选项以及朗读、翻译、云存储服务。",
"Purchase Successful!": "购买成功!",
"lifetime": "永久",
"Thank you for your purchase! Your payment has been processed successfully.": "感谢您的购买!您的付款已成功处理。",
"Order ID:": "订单号:",
"TTS Highlighting": "TTS 高亮",
"Style": "样式",
"Underline": "下划线",
"Strikethrough": "删除线",
"Squiggly": "波浪线",
"Outline": "轮廓",
"Save Current Color": "保存当前颜色",
"Quick Colors": "快速颜色",
"Highlighter": "荧光笔",
"Save Book Cover": "保存书籍封面",
"Auto-save last book cover": "自动保存最后一本书的封面",
"Back": "返回",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "确认邮件已发送!请检查您的旧邮箱和新邮箱以确认更改。",
"Failed to update email": "更新邮箱失败",
"New Email": "新邮箱",
"Your new email": "您的新邮箱",
"Updating email ...": "正在更新邮箱 ...",
"Update email": "更新邮箱",
"Current email": "当前邮箱",
"Update Email": "更新邮箱",
"All": "全部",
"Unable to open book": "无法打开书籍",
"Punctuation": "标点符号",
"Replace Quotation Marks": "替换引号",
"Enabled only in vertical layout.": "仅在竖排布局中启用",
"No Conversion": "不转换",
"Simplified to Traditional": "简体 → 繁体",
"Traditional to Simplified": "繁体 → 简体",
"Simplified to Traditional (Taiwan)": "简体 → 繁体(台湾)",
"Simplified to Traditional (Hong Kong)": "简体 → 繁体(香港)",
"Simplified to Traditional (Taiwan), with phrases": "简体 → 繁体(台湾)习惯用语",
"Traditional (Taiwan) to Simplified": "繁体(台湾) → 简体",
"Traditional (Hong Kong) to Simplified": "繁体(香港) → 简体",
"Traditional (Taiwan) to Simplified, with phrases": "繁体(台湾) → 简体习惯用语",
"Convert Simplified and Traditional Chinese": "简繁中文转换",
"Convert Mode": "转换模式",
"Failed to auto-save book cover for lock screen: {{error}}": "自动保存锁屏书籍封面失败:{{error}}",
"Download from Cloud": "从云端下载",
"Upload to Cloud": "上传到云端",
"Clear Custom Fonts": "清除自定义字体",
"Columns": "列数",
"OPDS Catalogs": "OPDS 目录",
"Adding LAN addresses is not supported in the web app version.": "Web 版不支持添加局域网地址。",
"Invalid OPDS catalog. Please check the URL.": "无效的 OPDS 目录。请检查 URL。",
"Browse and download books from online catalogs": "浏览并下载在线目录中的书籍",
"My Catalogs": "我的目录",
"Add Catalog": "添加目录",
"No catalogs yet": "尚无目录",
"Add your first OPDS catalog to start browsing books": "添加您的第一个 OPDS 目录以开始浏览书籍",
"Add Your First Catalog": "添加第一个目录",
"Browse": "浏览",
"Popular Catalogs": "热门目录",
"Add": "添加",
"Add OPDS Catalog": "添加 OPDS 目录",
"Catalog Name": "目录名称",
"My Calibre Library": "我的 Calibre 图书馆",
"OPDS URL": "OPDS URL",
"Username (optional)": "用户名(可选)",
"Password (optional)": "密码(可选)",
"Description (optional)": "描述(可选)",
"A brief description of this catalog": "该目录的简要描述",
"Validating...": "验证中...",
"View All": "查看全部",
"Forward": "前进",
"Home": "首页",
"{{count}} items_other": "{{count}} 项",
"Download completed": "下载完成",
"Download failed": "下载失败",
"Open Access": "开放访问",
"Borrow": "借阅",
"Buy": "购买",
"Subscribe": "订阅",
"Sample": "样章",
"Download": "下载",
"Open & Read": "打开并阅读",
"Tags": "标签",
"Tag": "标签",
"First": "首页",
"Previous": "上一页",
"Next": "下一页",
"Last": "末页",
"Cannot Load Page": "无法加载页面",
"An error occurred": "发生错误",
"Online Library": "在线书库",
"URL must start with http:// or https://": "URL 必须以 http:// 或 https:// 开头",
"Title, Author, Tag, etc...": "标题,作者,标签等...",
"Query": "查询",
"Subject": "主题",
"Enter {{terms}}": "输入 {{terms}}",
"No search results found": "未找到搜索结果",
"Failed to load OPDS feed: {{status}} {{statusText}}": "加载 OPDS 源失败:{{status}} {{statusText}}",
"Search in {{title}}": "在 {{title}} 中搜索",
"Manage Storage": "管理存储",
"Failed to load files": "加载文件失败",
"Deleted {{count}} file(s)_other": "已删除 {{count}} 个文件",
"Failed to delete {{count}} file(s)_other": "删除 {{count}} 个文件失败",
"Failed to delete files": "删除文件失败",
"Total Files": "文件总数",
"Total Size": "总大小",
"Quota": "配额",
"Used": "已使用",
"Files": "文件",
"Search files...": "搜索文件...",
"Newest First": "最新优先",
"Oldest First": "最旧优先",
"Largest First": "最大优先",
"Smallest First": "最小优先",
"Name A-Z": "名称 A-Z",
"Name Z-A": "名称 Z-A",
"{{count}} selected_other": "已选择 {{count}} 个文件",
"Delete Selected": "删除选中项",
"Created": "创建时间",
"No files found": "未找到文件",
"No files uploaded yet": "尚未上传文件",
"files": "文件",
"Page {{current}} of {{total}}": "第 {{current}} 页,共 {{total}} 页",
"Are you sure to delete {{count}} selected file(s)?_other": "确定要删除已选择的 {{count}} 个文件吗?",
"Cloud Storage Usage": "云存储使用情况",
"Rename Group": "重命名分组",
"From Directory": "从文件夹导入",
"Successfully imported {{count}} book(s)_other": "成功导入 {{count}} 本书",
"Count": "数量",
"Start Page": "起始页",
"Search in OPDS Catalog...": "在 OPDS 目录中搜索...",
"Please log in to use advanced TTS features.": "请登录以使用高级 TTS 功能"
}
@@ -8,7 +8,6 @@
"Auto Mode": "自動主題",
"Behavior": "行為",
"Book": "書籍",
"Book Cover": "書籍封面",
"Bookmark": "書籤",
"Cancel": "取消",
"Chapter": "章節",
@@ -18,7 +17,6 @@
"Confirm Deletion": "確認刪除",
"Copied to notebook": "已複製到筆記本",
"Copy": "複製",
"Custom CSS": "自定義 CSS",
"Dark Mode": "深色主題",
"Default": "預設",
"Default Font": "預設字體",
@@ -28,7 +26,6 @@
"Dictionary": "詞典",
"Download Readest": "下載 Readest",
"Edit": "編輯",
"Enter your custom CSS here...": "在此處輸入您的自定義 CSS...",
"Excerpts": "摘錄",
"Failed to import book(s): {{filenames}}": "導入書籍失敗:{{filenames}}",
"Fast": "快",
@@ -48,7 +45,6 @@
"Horizontal Direction": "橫排",
"Hyphenation": "斷字",
"Import Books": "導入書籍",
"Language:": "語言",
"Layout": "版面",
"Light Mode": "淺色主題",
"Loading...": "載入中...",
@@ -70,8 +66,8 @@
"Paging Animation": "翻頁動畫",
"Paragraph": "段落",
"Parallel Read": "並排閱讀",
"Published:": "出版日期",
"Publisher:": "出版商",
"Published": "出版日期",
"Publisher": "出版商",
"Reading Progress Synced": "閱讀進度已同步",
"Reload Page": "重新載入頁面",
"Reveal in File Explorer": "在檔案管理器中顯示",
@@ -85,7 +81,6 @@
"Search...": "搜索...",
"Select Book": "選擇書籍",
"Select Books": "選擇書籍",
"Select Multiple Books": "選擇多本書籍",
"Sepia": "舊韻",
"Serif Font": "襯線字體",
"Show Book Details": "顯示書籍詳情",
@@ -96,16 +91,15 @@
"Slow": "慢",
"Solarized": "日暉",
"Speak": "朗讀",
"Subjects:": "主題",
"Subjects": "主題",
"System Fonts": "系統字體",
"TTS not supported in this device": "此設備不支持 TTS",
"Theme Color": "主題顏色",
"Theme Mode": "主題模式",
"Translate": "翻譯",
"Translated Text": "譯文",
"Unknown": "未知",
"Untitled": "無標題",
"Updated:": "更新日期",
"Updated": "更新日期",
"Version {{version}}": "版本 {{version}}",
"Vertical Direction": "豎排",
"Welcome to your library. You can import your books here and read them anytime.": "書庫空空如也,您可以導入您的書籍並隨時閱讀。",
@@ -114,8 +108,6 @@
"Your Library": "書庫",
"TTS not supported for PDF": "PDF 文檔暫不支持 TTS",
"Override Book Font": "覆蓋書籍字體",
"Vertical Margins (px)": "垂直邊距(px",
"Horizontal Margins (%)": "水平邊距(%",
"Apply to All Books": "應用於所有書籍",
"Apply to This Book": "應用於此書籍",
"Unable to fetch the translation. Try again later.": "無法獲取翻譯,請稍後再試。",
@@ -124,14 +116,13 @@
"Book Details": "書籍詳情",
"From Local File": "從本地文件導入",
"TOC": "目錄",
"Table of Contents": "目錄",
"Book uploaded: {{title}}": "書籍已上傳:{{title}}",
"Failed to upload book: {{title}}": "書籍上傳失敗:{{title}}",
"Book downloaded: {{title}}": "書籍已下載:{{title}}",
"Failed to download book: {{title}}": "書籍下載失敗:{{title}}",
"Upload Book": "上傳書籍",
"Auto Upload Books to Cloud": "自動上傳書籍到雲端",
"{{percentage}}% of Cloud Storage Used.": "已使用 {{percentage}}% 雲存儲空間",
"Storage": "存儲空間",
"Book deleted: {{title}}": "書籍已刪除:{{title}}",
"Failed to delete book: {{title}}": "書籍刪除失敗:{{title}}",
"Check Updates on Start": "啟動時檢查更新",
@@ -163,7 +154,7 @@
"Create a Password": "創建密碼",
"Sign up": "註冊",
"Signing up...": "正在註冊...",
"Dont have an account? Sign up": "沒有帳號?註冊",
"Don't have an account? Sign up": "沒有帳號?註冊",
"Check your email for the confirmation link": "檢查您的電子郵件以獲取確認連結",
"Signing in ...": "正在登入...",
"Send a magic link email": "發送魔法連結郵件",
@@ -186,37 +177,14 @@
"Sign in with Apple": "使用 Apple 登入",
"Sign in with GitHub": "使用 GitHub 登入",
"Account": "帳戶",
"Cloud Storage": "雲端儲存空間",
"Failed to delete user. Please try again later.": "刪除使用者失敗。請稍後再試。",
"Unlimited Offline/Online Reading": "無限離線/線上閱讀",
"Unlimited Cloud Sync Devices": "無限雲端同步裝置",
"Essential Text-to-Speech Voices": "基本文字轉語音聲音",
"DeepL Free Access": "DeepL免費存取",
"Community Support": "社群支援",
"500 MB Cloud Sync Space": "500 MB雲端同步空間",
"Includes All Free Tier Benefits": "包含所有免費方案權益",
"AI Summaries": "AI摘要",
"AI Translations": "AI翻譯",
"Priority Support": "優先支援",
"DeepL Pro Access": "DeepL專業版存取",
"Expanded Text-to-Speech Voices": "擴展文字轉語音聲音",
"2000 MB Cloud Sync Space": "2000 MB雲端同步空間",
"Includes All Plus Tier Benefits": "包含所有Plus方案權益",
"Unlimited AI Summaries": "無限AI摘要",
"Unlimited AI Translations": "無限AI翻譯",
"Unlimited DeepL Pro Access": "無限DeepL專業版存取",
"Advanced AI Tools": "進階AI工具",
"Early Feature Access": "搶先體驗新功能",
"10 GB Cloud Sync Space": "10 GB雲端同步空間",
"Loading profile...": "載入個人資料中...",
"Features": "功能",
"Delete Account": "刪除帳戶",
"Delete Your Account?": "刪除您的帳戶?",
"This action cannot be undone. All your data in the cloud will be permanently deleted.": "此操作無法撤銷。您在雲端的所有資料將被永久刪除。",
"Delete Permanently": "永久刪除",
"Free Tier": "免費方案",
"Plus Tier": "Plus方案",
"Pro Tier": "專業方案",
"RTL Direction": "從右向左",
"Maximum Column Height": "最大列高",
"Maximum Column Width": "最大列寬",
@@ -225,7 +193,7 @@
"No supported files found. Supported formats: {{formats}}": "未找到支援的檔案。支援的格式:{{formats}}",
"Drop to Import Books": "拖放導入書籍",
"Custom": "自定義",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n—William Shakespeare": "世界是一個舞台,\n所有的男人和女人都只是演員:\n他們有出口,也有入口;\n一個人在他的時代扮演許多角​​色。 \n\n——威廉·莎士比亞",
"All the world's a stage,\nAnd all the men and women merely players;\nThey have their exits and their entrances,\nAnd one man in his time plays many parts,\nHis acts being seven ages.\n\n— William Shakespeare": "世界是一個舞台,\n所有的男人和女人都只是演員:\n他們有出口,也有入口;\n一個人在他的時代扮演許多角​​色。 \n\n——威廉·莎士比亞",
"Custom Theme": "自定義主題",
"Theme Name": "主題名稱",
"Text Color": "文字顏色",
@@ -252,9 +220,9 @@
"Auto Import on File Open": "打開文件時自動導入",
"LXGW WenKai GB Screen": "霞鶩文楷 SC",
"LXGW WenKai TC": "霞鶩文楷 TC",
"No chapters detected.": "未檢測到章節",
"Failed to parse the EPUB file.": "無法解析 EPUB 文件",
"This book format is not supported.": "不支援此書籍格式",
"No chapters detected": "未檢測到章節",
"Failed to parse the EPUB file": "無法解析 EPUB 文件",
"This book format is not supported": "不支援此書籍格式",
"Unable to fetch the translation. Please log in first and try again.": "無法獲取翻譯。請先登入然後重試。",
"Group": "分組",
"Always on Top": "視窗置頂",
@@ -267,13 +235,13 @@
"Clear Search": "清除搜索",
"Header & Footer": "頁眉頁腳",
"Apply also in Scrolled Mode": "滾動模式同樣適用",
"A new version of Readest is Available!": "有新版本的 Readest 可更新!",
"A new version of Readest is available!": "有新版本的 Readest 可更新!",
"Readest {{newVersion}} is available (installed version {{currentVersion}}).": "Readest {{newVersion}} 可更新(已安裝版本 {{currentVersion}})。",
"Download and install now?": "立即下載並安裝?",
"Downloading {{downloaded}} of {{contentLength}}": "正在下載 {{downloaded}} / {{contentLength}}",
"Download finished": "下載完成",
"DOWNLOAD & INSTALL": "下載並安裝",
"Changelog:": "更新日誌:",
"Changelog": "更新日誌:",
"Software Update": "軟體更新",
"Title": "書名",
"Date Read": "閱讀日期",
@@ -282,18 +250,15 @@
"Ascending": "升序",
"Descending": "降序",
"Sort by...": "排序方式...",
"Added:": "添加日期",
"Format:": "格式",
"Added": "添加日期",
"GuanKiapTsingKhai-T": "原俠正楷-T",
"Description:": "簡介",
"Description": "簡介",
"No description available": "暫無簡介",
"List": "列表",
"Grid": "網格",
"(from 'As You Like It', Act II)": "(出自《皆大歡喜》,第二幕)",
"Link Color": "連結顏色",
"Volume Keys for Page Flip": "音量鍵翻頁",
"Clicks for Page Flip": "點擊翻頁",
"Swap Clicks Area": "交換點擊區域",
"Screen": "螢幕",
"Orientation": "螢幕方向",
"Portrait": "豎屏",
@@ -302,7 +267,7 @@
"Checking for updates...": "檢查更新中...",
"Error checking for updates": "檢查更新時出錯",
"Details": "詳情",
"File Size:": "檔案大小",
"File Size": "檔案大小",
"Auto Detect": "自動檢測",
"Next Section": "下一章",
"Previous Section": "上一章",
@@ -328,9 +293,467 @@
"Disable Translation": "停用翻譯",
"Scroll": "滾動",
"Overlap Pixels": "重疊像素",
"Click": "點擊",
"System Language": "系統語言",
"Security": "安全",
"Allow JavaScript": "允許 JavaScript",
"Enable only if you trust the file.": "僅在您信任該文件時啟用"
"Enable only if you trust the file.": "建議僅在您信任該檔案時啟用",
"Sort TOC by Page": "依頁碼排序目錄",
"Search in {{count}} Book(s)..._other": "在 {{count}} 本書中搜索...",
"No notes match your search": "找不到符合的筆記",
"Search notes and excerpts...": "搜尋筆記...",
"Sign in to Sync": "登入以同步",
"Synced at {{time}}": "同步於:{{time}}",
"Never synced": "從未同步",
"Show Remaining Time": "顯示剩餘時間",
"{{time}} min left in chapter": "本章剩餘 {{time}} 分鐘",
"Override Book Color": "覆蓋書籍顏色",
"Login Required": "需登入",
"Quota Exceeded": "額度不足",
"{{percentage}}% of Daily Translation Characters Used.": "已使用 {{percentage}}% 的每日翻譯字數",
"Translation Characters": "翻譯字數",
"{{engine}}: {{count}} voices_other": "{{engine}}: {{count}} 種語音",
"Something went wrong. Don't worry, our team has been notified and we're working on a fix.": "出了點問題。別擔心,我們的團隊已經收到通知,正在努力修復。",
"Error Details:": "錯誤詳情:",
"Try Again": "再試一次",
"Need help?": "需要幫助嗎?",
"Contact Support": "聯繫支援",
"Code Highlighting": "程式碼高亮",
"Enable Highlighting": "啟用高亮",
"Code Language": "程式語言",
"Top Margin (px)": "上邊距",
"Bottom Margin (px)": "下邊距",
"Right Margin (px)": "右邊距",
"Left Margin (px)": "左邊距",
"Column Gap (%)": "欄間距",
"Always Show Status Bar": "始終顯示狀態欄",
"Custom Content CSS": "自訂內容 CSS",
"Enter CSS for book content styling...": "輸入書籍內容樣式的CSS…",
"Custom Reader UI CSS": "自訂介面 CSS",
"Enter CSS for reader interface styling...": "輸入閱讀器介面樣式的CSS…",
"Crop": "裁剪",
"Book Covers": "書籍封面",
"Fit": "適應",
"Reset {{settings}}": "重置{{settings}}",
"Reset Settings": "重置設置",
"{{count}} pages left in chapter_other": "本章剩餘 {{count}} 頁",
"Show Remaining Pages": "顯示剩餘頁數",
"Source Han Serif CN VF": "思源宋體",
"Huiwen-mincho": "匯文明朝體",
"KingHwa_OldSong": "京華老宋體",
"Manage Subscription": "管理訂閱",
"Coming Soon": "即將推出",
"Upgrade to {{plan}}": "升級到 {{plan}}",
"Upgrade to Plus or Pro": "升級到 Plus 或 Pro",
"Current Plan": "當前方案",
"Plan Limits": "方案限制",
"Processing your payment...": "正在處理付款...",
"Please wait while we confirm your subscription.": "請稍候,我們正在確認您的訂閱。",
"Payment Processing": "付款處理中",
"Your payment is being processed. This usually takes a few moments.": "您的付款正在處理中,通常需要幾秒鐘。",
"Payment Failed": "付款失敗",
"We couldn't process your subscription. Please try again or contact support if the issue persists.": "我們無法處理您的訂閱。請重試,或若問題持續,請聯絡客服。",
"Back to Profile": "返回個人資料",
"Subscription Successful!": "訂閱成功!",
"Thank you for your subscription! Your payment has been processed successfully.": "感謝您的訂閱!您的付款已成功完成。",
"Email:": "電子郵件:",
"Plan:": "方案:",
"Amount:": "金額:",
"Go to Library": "前往書庫",
"Need help? Contact our support team at support@readest.com": "需要協助?請聯絡支援團隊:support@readest.com",
"Free Plan": "免費方案",
"month": "月",
"AI Translations (per day)": "AI 翻譯(每日)",
"Plus Plan": "Plus 方案",
"Includes All Free Plan Benefits": "包含所有免費方案功能",
"Pro Plan": "Pro 方案",
"More AI Translations": "更多 AI 翻譯",
"Complete Your Subscription": "完成您的訂閱",
"{{percentage}}% of Cloud Sync Space Used.": "已使用 {{percentage}}% 的雲同步空間。",
"Cloud Sync Storage": "雲同步空間",
"Disable": "禁用",
"Enable": "啟用",
"Upgrade to Readest Premium": "升級到 Readest Premium",
"Show Source Text": "顯示原文",
"Cross-Platform Sync": "跨平台同步",
"Seamlessly sync your library, progress, highlights, and notes across all your devices—never lose your place again.": "在所有裝置間無縫同步您的書庫、閱讀進度、標註和筆記——再也不會遺失閱讀位置。",
"Customizable Reading": "個人化閱讀",
"Personalize every detail with adjustable fonts, layouts, themes, and advanced display settings for the perfect reading experience.": "透過可調節的字體、版面配置、主題和進階顯示設定個人化每個細節,獲得完美閱讀體驗。",
"AI Read Aloud": "AI 朗讀",
"Enjoy hands-free reading with natural-sounding AI voices that bring your books to life.": "享受免手持的閱讀體驗,透過自然流暢的 AI 聲音讓書籍栩栩如生。",
"AI Translations": "AI 翻譯",
"Translate any text instantly with the power of Google, Azure, or DeepL—understand content in any language.": "借助 Google、Azure 或 DeepL 的強大功能即時翻譯任何文字——理解任何語言的內容。",
"Connect with fellow readers and get help fast in our friendly community channels.": "與其他讀者交流,在我們友善的社群頻道中快速獲得幫助。",
"Unlimited AI Read Aloud Hours": "無限 AI 朗讀時長",
"Listen without limits—convert as much text as you like into immersive audio.": "無限制聆聽——將任意數量的文字轉換為沉浸式音訊。",
"Unlock enhanced translation capabilities with more daily usage and advanced options.": "解鎖增強翻譯功能,享受更多翻譯用量和進階選項。",
"DeepL Pro Access": "DeepL Pro 存取權限",
"Enjoy faster responses and dedicated assistance whenever you need help.": "享受更快回應和專屬幫助,隨時獲得所需支援。",
"Daily translation quota reached. Upgrade your plan to continue using AI translations.": "已達每日翻譯配額。升級方案以繼續使用 AI 翻譯。",
"Includes All Plus Plan Benefits": "包含所有 Plus 方案優惠",
"Early Feature Access": "搶先體驗新功能",
"Be the first to explore new features, updates, and innovations before anyone else.": "搶先體驗最新功能、更新與創新成果。",
"Advanced AI Tools": "進階 AI 工具",
"Harness powerful AI tools for smarter reading, translation, and content discovery.": "運用強大的 AI 工具實現智慧閱讀、翻譯和內容探索。",
"Translate up to 100,000 characters daily with the most accurate translation engine available.": "使用最精準的翻譯引擎每天翻譯多達10萬字元。",
"Translate up to 500,000 characters daily with the most accurate translation engine available.": "使用最精準的翻譯引擎每天翻譯多達50萬字元。",
"Securely store and access your entire reading collection with up to 5 GB of cloud storage.": "使用多達 5GB 的安全雲端儲存保存和存取您的整個閱讀收藏。",
"Securely store and access your entire reading collection with up to 20 GB of cloud storage.": "使用多達 20GB 的安全雲端儲存保存和存取您的整個閱讀收藏。",
"Deleted cloud backup of the book: {{title}}": "已刪除書籍的雲端備份:{{title}}",
"Are you sure to delete the cloud backup of the selected book?": "您確定要刪除所選書籍的雲端備份嗎?",
"What's New in Readest": "Readest 更新功能",
"Enter book title": "輸入書名",
"Subtitle": "副標題",
"Enter book subtitle": "輸入書籍副標題",
"Enter author name": "輸入作者姓名",
"Series": "系列",
"Enter series name": "輸入系列名稱",
"Series Index": "系列編號",
"Enter series index": "輸入系列編號",
"Total in Series": "系列總數",
"Enter total books in series": "輸入系列中書籍總數",
"Enter publisher": "輸入出版社",
"Publication Date": "出版日期",
"Identifier": "識別碼",
"Enter book description": "輸入書籍描述",
"Change cover image": "替換封面圖片",
"Replace": "替換",
"Unlock cover": "解鎖封面",
"Lock cover": "鎖定封面",
"Auto-Retrieve Metadata": "自動擷取中繼資料",
"Auto-Retrieve": "自動擷取",
"Unlock all fields": "解鎖所有欄位",
"Unlock All": "全部解鎖",
"Lock all fields": "鎖定所有欄位",
"Lock All": "全部鎖定",
"Reset": "重設",
"Edit Metadata": "編輯中繼資料",
"Locked": "已鎖定",
"Select Metadata Source": "選擇中繼資料來源",
"Keep manual input": "保留手動輸入",
"Google Books": "Google 圖書",
"Open Library": "開放圖書館",
"Fiction, Science, History": "小說,科學,歷史",
"Open Book in New Window": "在新視窗中打開書籍",
"Voices for {{lang}}": "{{lang}} 的語音",
"Yandex Translate": "Yandex 翻譯",
"YYYY or YYYY-MM-DD": "YYYY 或 YYYY-MM-DD",
"Restore Purchase": "恢復購買",
"No purchases found to restore.": "未找到可恢復的購買。",
"Failed to restore purchases.": "恢復購買失敗。",
"Failed to manage subscription.": "管理訂閱失敗。",
"Failed to load subscription plans.": "加載訂閱計劃失敗。",
"year": "年",
"Failed to create checkout session": "創建結帳會話失敗",
"Storage": "雲同步空間",
"Terms of Service": "服務條款",
"Privacy Policy": "隱私政策",
"Disable Double Click": "禁用雙擊",
"TTS not supported for this document": "TTS 不支援此文件",
"Reset Password": "重設密碼",
"Show Reading Progress": "顯示閱讀進度",
"Reading Progress Style": "閱讀進度樣式",
"Page Number": "頁碼",
"Percentage": "百分比",
"Deleted local copy of the book: {{title}}": "已刪除書籍的本地副本:{{title}}",
"Failed to delete cloud backup of the book: {{title}}": "未能刪除書籍的雲端備份:{{title}}",
"Failed to delete local copy of the book: {{title}}": "未能刪除書籍的本地副本:{{title}}",
"Are you sure to delete the local copy of the selected book?": "您確定要刪除所選書籍的本地副本嗎?",
"Remove from Cloud & Device": "從雲端和設備中移除",
"Remove from Cloud Only": "僅從雲端移除",
"Remove from Device Only": "僅從設備中移除",
"Disconnected": "已斷開連接",
"KOReader Sync Settings": "KOReader 同步設置",
"Sync Strategy": "同步策略",
"Ask on conflict": "發生衝突時詢問",
"Always use latest": "始終使用最新",
"Send changes only": "僅發送更改",
"Receive changes only": "僅接收更改",
"Checksum Method": "校驗和方法",
"File Content (recommended)": "文件內容(推薦)",
"File Name": "文件名",
"Device Name": "設備名稱",
"Connect to your KOReader Sync server.": "連接到您的 KOReader 同步伺服器。",
"Server URL": "伺服器 URL",
"Username": "用戶名",
"Your Username": "您的用戶名",
"Password": "密碼",
"Connect": "連接",
"KOReader Sync": "KOReader 同步",
"Sync Conflict": "同步衝突",
"Sync reading progress from \"{{deviceName}}\"?": "從 \"{{deviceName}}\" 同步閱讀進度?",
"another device": "另一個設備",
"Local Progress": "本地進度",
"Remote Progress": "遠程進度",
"Page {{page}} of {{total}} ({{percentage}}%)": "第 {{page}} 頁,共 {{total}} 頁 ({{percentage}}%)",
"Current position": "當前位置",
"Approximately page {{page}} of {{total}} ({{percentage}}%)": "大約第 {{page}} 頁,共 {{total}} 頁 ({{percentage}}%)",
"Approximately {{percentage}}%": "大約 {{percentage}}%",
"Failed to connect": "連接失敗",
"Sync Server Connected": "同步伺服器已連接",
"Sync as {{userDisplayName}}": "以 {{userDisplayName}} 身份同步",
"Custom Fonts": "自訂字型",
"Cancel Delete": "取消刪除",
"Import Font": "匯入字型",
"Delete Font": "刪除字型",
"Tips": "提示",
"Custom fonts can be selected from the Font Face menu": "可以從字型選單中選擇自訂字型",
"Manage Custom Fonts": "管理自訂字型",
"Select Files": "選擇檔案",
"Select Image": "選擇圖片",
"Select Video": "選擇影片",
"Select Audio": "選擇音訊",
"Select Fonts": "選擇字型",
"Supported font formats: .ttf, .otf, .woff, .woff2": "支援的字型格式:.ttf, .otf, .woff, .woff2",
"Push Progress": "推送閱讀進度",
"Pull Progress": "拉取閱讀進度",
"Previous Paragraph": "上一段",
"Previous Sentence": "上一句",
"Pause": "暫停",
"Play": "播放",
"Next Sentence": "下一句",
"Next Paragraph": "下一段",
"Separate Cover Page": "單獨封面頁",
"Resize Notebook": "調整筆記本大小",
"Resize Sidebar": "調整側邊欄大小",
"Get Help from the Readest Community": "從 Readest 社群獲取幫助",
"Remove cover image": "移除封面圖片",
"Bookshelf": "書架",
"View Menu": "檢視選單",
"Settings Menu": "設定選單",
"View account details and quota": "檢視帳戶詳細資料與配額",
"Library Header": "圖書館標題",
"Book Content": "書籍內容",
"Footer Bar": "頁腳欄",
"Header Bar": "標頭欄",
"View Options": "檢視選項",
"Book Menu": "書籍選單",
"Search Options": "搜尋選項",
"Close": "關閉",
"Delete Book Options": "刪除書籍選項",
"ON": "開啟",
"OFF": "關閉",
"Reading Progress": "閱讀進度",
"Page Margin": "頁邊距",
"Remove Bookmark": "移除書籤",
"Add Bookmark": "添加書籤",
"Books Content": "書籍內容",
"Jump to Location": "跳轉到位置",
"Unpin Notebook": "取消固定筆記本",
"Pin Notebook": "固定筆記本",
"Hide Search Bar": "隱藏搜索欄",
"Show Search Bar": "顯示搜索欄",
"On {{current}} of {{total}} page": "在第 {{current}} 頁,共 {{total}} 頁",
"Section Title": "章節標題",
"Decrease": "減少",
"Increase": "增加",
"Settings Panels": "設定面板",
"Settings": "設定",
"Unpin Sidebar": "取消固定側邊欄",
"Pin Sidebar": "固定側邊欄",
"Toggle Sidebar": "切換側邊欄",
"Toggle Translation": "切換翻譯",
"Translation Disabled": "翻譯已禁用",
"Minimize": "最小化",
"Maximize or Restore": "最大化或還原",
"Exit Parallel Read": "退出並排閱讀",
"Enter Parallel Read": "進入並排閱讀",
"Zoom Level": "縮放級別",
"Zoom Out": "縮小",
"Reset Zoom": "重置縮放",
"Zoom In": "放大",
"Zoom Mode": "縮放模式",
"Single Page": "單頁",
"Auto Spread": "自動展開",
"Fit Page": "適應頁面",
"Fit Width": "適應寬度",
"Failed to select directory": "選擇目錄失敗",
"The new data directory must be different from the current one.": "新的數據目錄必須與當前目錄不同。",
"Migration failed: {{error}}": "遷移失敗: {{error}}",
"Change Data Location": "更改數據位置",
"Current Data Location": "當前數據位置",
"Total size: {{size}}": "總大小: {{size}}",
"Calculating file info...": "正在計算文件信息...",
"New Data Location": "新的數據位置",
"Choose Different Folder": "選擇不同的文件夾",
"Choose New Folder": "選擇新文件夾",
"Migrating data...": "正在遷移數據...",
"Copying: {{file}}": "正在複製: {{file}}",
"{{current}} of {{total}} files": "{{current}} / {{total}} 個文件",
"Migration completed successfully!": "遷移成功完成!",
"Your data has been moved to the new location. Please restart the application to complete the process.": "您的數據已移動到新位置。請重新啟動應用程序以完成此過程。",
"Migration failed": "遷移失敗",
"Important Notice": "重要通知",
"This will move all your app data to the new location. Make sure the destination has enough free space.": "這將把您所有的應用數據移動到新位置。請確保目標位置有足夠的可用空間。",
"Restart App": "重新啟動應用",
"Start Migration": "開始遷移",
"Advanced Settings": "高級設置",
"File count: {{size}}": "文件數量: {{size}}",
"Background Read Aloud": "背景朗讀",
"Ready to read aloud": "朗讀準備就緒",
"Read Aloud": "朗讀",
"Screen Brightness": "螢幕亮度",
"Background Image": "背景圖片",
"Import Image": "匯入圖片",
"Opacity": "不透明度",
"Size": "大小",
"Cover": "覆蓋",
"Contain": "適應",
"{{number}} pages left in chapter": "本章剩餘{{number}}頁",
"Device": "設備",
"E-Ink Mode": "E-Ink 模式",
"Highlight Colors": "高亮顏色",
"Auto Screen Brightness": "自動螢幕亮度",
"Pagination": "翻頁",
"Disable Double Tap": "禁用雙擊",
"Tap to Paginate": "點擊翻頁",
"Click to Paginate": "點擊翻頁",
"Tap Both Sides": "點擊兩側翻頁",
"Click Both Sides": "點擊兩側翻頁",
"Swap Tap Sides": "交換點擊區域",
"Swap Click Sides": "交換點擊區域",
"Source and Translated": "原文和翻譯",
"Translated Only": "僅翻譯",
"Source Only": "僅原文",
"TTS Text": "TTS 文字",
"The book file is corrupted": "書籍文件已損壞",
"The book file is empty": "書籍文件為空",
"Failed to open the book file": "無法打開書籍文件",
"On-Demand Purchase": "按需購買",
"Full Customization": "完全自定義",
"Lifetime Plan": "終身方案",
"One-Time Payment": "一次性付款",
"Make a single payment to enjoy lifetime access to specific features on all devices. Purchase specific features or services only when you need them.": "進行一次性付款以享受在所有設備上對特定功能的終身訪問。僅在需要時購買特定功能或服務。",
"Expand Cloud Sync Storage": "擴展雲同步存儲",
"Expand your cloud storage forever with a one-time purchase. Each additional purchase adds more space.": "通過一次性購買,永久擴展您的雲存儲。每次額外購買都會增加更多空間。",
"Unlock All Customization Options": "解鎖所有自定義選項",
"Unlock additional themes, fonts, layout options and read aloud, translators, cloud storage services.": "解鎖其他主題、字體、佈局選項以及朗讀、翻譯、雲存儲服務。",
"Purchase Successful!": "購買成功!",
"lifetime": "永久",
"Thank you for your purchase! Your payment has been processed successfully.": "感謝您的購買!您的付款已成功處理。",
"Order ID:": "訂單編號:",
"TTS Highlighting": "TTS 高亮",
"Style": "樣式",
"Underline": "底線",
"Strikethrough": "刪除線",
"Squiggly": "波浪線",
"Outline": "輪廓",
"Save Current Color": "儲存目前顏色",
"Quick Colors": "快速顏色",
"Highlighter": "螢光筆",
"Save Book Cover": "保存書籍封面",
"Auto-save last book cover": "自動保存最後一本書的封面",
"Back": "返回",
"Confirmation email sent! Please check your old and new email addresses to confirm the change.": "確認郵件已發送!請檢查您的舊電子郵件和新電子郵件以確認更改。",
"Failed to update email": "更新電子郵件失敗",
"New Email": "新電子郵件",
"Your new email": "您的新電子郵件",
"Updating email ...": "正在更新電子郵件 ...",
"Update email": "更新電子郵件",
"Current email": "當前電子郵件",
"Update Email": "更新電子郵件",
"All": "全部",
"Unable to open book": "無法打開書籍",
"Punctuation": "標點符號",
"Replace Quotation Marks": "替換引號",
"Enabled only in vertical layout.": "僅在直排佈局中啟用",
"No Conversion": "不轉換",
"Simplified to Traditional": "簡體 → 繁體",
"Traditional to Simplified": "繁體 → 簡體",
"Simplified to Traditional (Taiwan)": "簡體 → 繁體(台灣)",
"Simplified to Traditional (Hong Kong)": "簡體 → 繁體(香港)",
"Simplified to Traditional (Taiwan), with phrases": "簡體 → 繁體(台灣)慣用語",
"Traditional (Taiwan) to Simplified": "繁體(台灣) → 簡體",
"Traditional (Hong Kong) to Simplified": "繁體(香港) → 簡體",
"Traditional (Taiwan) to Simplified, with phrases": "繁體(台灣) → 簡體慣用語",
"Convert Simplified and Traditional Chinese": "簡繁中文轉換",
"Convert Mode": "轉換模式",
"Failed to auto-save book cover for lock screen: {{error}}": "自動保存鎖定螢幕書籍封面失敗:{{error}}",
"Download from Cloud": "從雲端下載",
"Upload to Cloud": "上傳到雲端",
"Clear Custom Fonts": "清除自訂字型",
"Columns": "欄數",
"OPDS Catalogs": "OPDS 目錄",
"Adding LAN addresses is not supported in the web app version.": "網頁版不支援新增區域網路位址。",
"Invalid OPDS catalog. Please check the URL.": "無效的 OPDS 目錄。請檢查 URL。",
"Browse and download books from online catalogs": "瀏覽並下載線上目錄的書籍",
"My Catalogs": "我的目錄",
"Add Catalog": "新增目錄",
"No catalogs yet": "尚無目錄",
"Add your first OPDS catalog to start browsing books": "新增第一個 OPDS 目錄以開始瀏覽書籍",
"Add Your First Catalog": "新增第一個目錄",
"Browse": "瀏覽",
"Popular Catalogs": "熱門目錄",
"Add": "新增",
"Add OPDS Catalog": "新增 OPDS 目錄",
"Catalog Name": "目錄名稱",
"My Calibre Library": "我的 Calibre 圖書館",
"OPDS URL": "OPDS URL",
"Username (optional)": "使用者名稱(可選)",
"Password (optional)": "密碼(可選)",
"Description (optional)": "描述(可選)",
"A brief description of this catalog": "此目錄的簡短描述",
"Validating...": "驗證中...",
"View All": "檢視全部",
"Forward": "前往",
"Home": "首頁",
"{{count}} items_other": "{{count}} 項",
"Download completed": "下載完成",
"Download failed": "下載失敗",
"Open Access": "開放存取",
"Borrow": "借閱",
"Buy": "購買",
"Subscribe": "訂閱",
"Sample": "試閱",
"Download": "下載",
"Open & Read": "開啟並閱讀",
"Tags": "標籤",
"Tag": "標籤",
"First": "第一頁",
"Previous": "上一頁",
"Next": "下一頁",
"Last": "最後一頁",
"Cannot Load Page": "無法載入頁面",
"An error occurred": "發生錯誤",
"Online Library": "線上書庫",
"URL must start with http:// or https://": "URL 必須以 http:// 或 https:// 開頭",
"Title, Author, Tag, etc...": "標題、作者、標籤等...",
"Query": "查詢",
"Subject": "主題",
"Enter {{terms}}": "輸入 {{terms}}",
"No search results found": "未找到搜尋結果",
"Failed to load OPDS feed: {{status}} {{statusText}}": "載入 OPDS 資料源失敗:{{status}} {{statusText}}",
"Search in {{title}}": "在 {{title}} 中搜尋",
"Manage Storage": "管理儲存",
"Failed to load files": "載入檔案失敗",
"Deleted {{count}} file(s)_other": "已刪除 {{count}} 個檔案",
"Failed to delete {{count}} file(s)_other": "刪除 {{count}} 個檔案失敗",
"Failed to delete files": "刪除檔案失敗",
"Total Files": "檔案總數",
"Total Size": "總大小",
"Quota": "配額",
"Used": "已使用",
"Files": "檔案",
"Search files...": "搜尋檔案...",
"Newest First": "最新優先",
"Oldest First": "最舊優先",
"Largest First": "最大優先",
"Smallest First": "最小優先",
"Name A-Z": "名稱 A-Z",
"Name Z-A": "名稱 Z-A",
"{{count}} selected_other": "已選擇 {{count}} 個檔案",
"Delete Selected": "刪除所選",
"Created": "建立時間",
"No files found": "找不到檔案",
"No files uploaded yet": "尚未上傳檔案",
"files": "檔案",
"Page {{current}} of {{total}}": "第 {{current}} 頁,共 {{total}} 頁",
"Are you sure to delete {{count}} selected file(s)?_other": "確定要刪除已選擇的 {{count}} 個檔案嗎?",
"Cloud Storage Usage": "雲端儲存使用情況",
"Rename Group": "重新命名",
"From Directory": "從目錄導入",
"Successfully imported {{count}} book(s)_other": "成功導入 {{count}} 本書",
"Count": "數量",
"Start Page": "起始頁",
"Search in OPDS Catalog...": "在 OPDS 目錄中搜尋...",
"Please log in to use advanced TTS features.": "請登入以使用進階 TTS 功能"
}
+450 -1
View File
@@ -1,5 +1,454 @@
{
"releases": {
"0.9.96": {
"date": "2025-12-19",
"notes": [
"TTS: Resolved an issue where Edge TTS was blocked in certain regions",
"OPDS: Improved compatibility with older versions of Calibre Web",
"OPDS: Added an instant search bar for faster browsing in OPDS catalogs",
"OPDS: Added a curated book catalog from Standard Ebooks",
"Bookshelf: Added a “Group Books” action to the context menu",
"Comics: Fixed layout issues to improve comic book reading",
"Layout: Footnote popups now adapt correctly to different screen sizes",
"Layout: Fixed an issue where the maximum inline width was not applied to EPUBs",
"Sync: Improved file downloading by correctly handling special characters in filenames",
"UI: Added an option to temporarily dismiss the reading progress bar",
"Settings: Screen brightness adjustments now apply only to the reader view",
"iOS: You can now open files directly in Readest from the Files app",
"macOS: Added a global menu option to open files with Readest"
]
},
"0.9.95": {
"date": "2025-12-08",
"notes": [
"OPDS: You can now search, browse, and download ebooks directly from OPDS catalogs",
"OPDS: Improved compatibility with Calibre Web for reliable downloads",
"OPDS: Fixed an issue where book covers from self-hosted Calibre OPDS servers did not display correctly",
"Cloud Storage: You can view and delete files stored in your cloud storage directly from the app",
"Bookshelf: Added support for importing books from a folder recursively",
"Bookshelf: You can now rename your bookshelf groups",
"EPUB: Added support for SVG covers from Standard Ebooks",
"Annotations: Keyboard shortcuts no longer copy selected text into the notebook",
"Footnotes: Footnote popups now scale properly on small screens",
"Touch/Styli: Removed the context menu for smoother interaction on touch and stylus devices",
"Layout: Devices with unfoldable screens now automatically switch to a two-column layout",
"PDF: Improved zoomed-in navigation and hand-tool behavior for smoother page navigation",
"Android: Fixed highlighting of the current sentence when using native Android text-to-speech",
"Android: Back button handling now works correctly on Android 15 and above",
"Android: You can now open files shared from other apps"
]
},
"0.9.94": {
"date": "2025-12-02",
"notes": [
"OPDS: You can now browse and download ebooks directly from OPDS catalogs",
"PDF: Added a hand-tool mode that makes navigating PDF pages easier",
"Covers: You can now choose a folder to save the latest book cover image",
"CJK: Added one-tap conversion between Simplified and Traditional Chinese",
"Shortcuts: Use Ctrl + mouse wheel to quickly zoom in or out",
"Library: Added a new option to adjust cover sizes in grid view",
"Windows: Added Ebook thumbnails with book covers in Windows Explorer",
"TTS: Fixed an issue where the page would scroll when showing the annotator",
"Annotations: Resolved layout shifts when selecting text in paginated mode on Android",
"Files: Improved backup handling to prevent file corruption",
"Layout: Fixed text clipping caused by negative indents",
"E-ink: Improved sidebar and notebook background colors for e-ink devices",
"Android: The Back button now works properly in menus, dialogs, and alerts",
"iOS: Fixed occasional failures when opening books on older iOS versions (16.4 and below)"
]
},
"0.9.93": {
"date": "2025-11-20",
"notes": [
"Sync: Improved reliability for new accounts so your books sync correctly from the start",
"Library: Fixed an occasional issue where returning to the library could get stuck",
"Layout: Improved image display in paginated mode so images won't exceed the available height",
"TXT: Improved performance and stability when opening and parsing TXT files",
"Fonts: Fixed an issue where monospace fonts were not applied correctly in code blocks"
]
},
"0.9.92": {
"date": "2025-11-18",
"notes": [
"Bookshelf: Added support for nested groups to organize your books more flexibly",
"Sync: Improved reliability by automatically retrying failed book syncs",
"Sync: Improved token refresh so login sessions stay active longer on KOReader",
"E-Ink: Enhanced readability on the library page for E-Ink devices",
"UI: Storage capacity is now displayed with precise values in the user profile",
"Reader: You can now import files directly into the currently selected book group",
"Account: You can now update the email address linked to your Readest account",
"Footnotes: Added compatibility for more footnote formats"
]
},
"0.9.91": {
"date": "2025-10-29",
"notes": [
"TTS: Fixed an issue where system voices were not working on Android",
"TTS: Added options to customize the highlight style during read-aloud",
"E-Ink: Disabled all shadows to improve display clarity",
"E-Ink: Added an option to save the last book cover on Android",
"Android: Fixed a crash that occurred when toggling 'Allow Script'",
"Android: Adjusted launcher icon size for better compatibility across devices"
]
},
"0.9.90": {
"date": "2025-10-28",
"notes": [
"Sync: Faster library syncing and support for in-app one-time purchases of extra cloud storage",
"TTS: You can now choose the target language for read-aloud on translated books",
"Reader: New keyboard shortcuts make it easier to move between sections",
"Reader: Smoother scrolling for a more comfortable reading experience",
"Reader: Footnotes in definition lists are now fully supported",
"Reader: Improved search accuracy and display of search results",
"Reader: Clearer error messages when importing books",
"Reader: Improved safety when loading book content",
"Settings: You can now choose your own highlight colors",
"Settings: Added option to adjust screen brightness automatically",
"E-Ink: Better readability and clearer progress display with underlined links",
"Android: You can now store app data on an external SD card",
"iOS: Restores your last reading page if the app was closed in the background",
"Localization: Added Persian (Farsi) language support"
]
},
"0.9.88": {
"date": "2025-10-18",
"notes": [
"TTS: Fixed issue where the read-aloud indicator disappeared too quickly",
"Layout: Overriding book layout no longer affects explicitly set text alignment",
"Reader: Added localized number display for reading progress in vertical layout",
"Reader: Enhanced swipe responsiveness for smoother page transitions",
"Settings: Added an option to disable animations when using E-Ink mode"
]
},
"0.9.87": {
"date": "2025-10-16",
"notes": [
"Reader: Improved chapter detection with better chapter title recognition",
"Reader: Enhanced compatibility for parsing more footnote formats",
"Theme: Fixed auto theme switching in new reader windows",
"TTS: Improved scrolling accuracy to highlighted text during read-aloud",
"TTS: Fixed crash issues on certain Android systems"
]
},
"0.9.86": {
"date": "2025-10-14",
"notes": [
"Reader: Added support for per-book background image customization",
"Reader: Added option to override book language metadata for improved hyphenation accuracy",
"Sync: Readest sync in KOReader can now be triggered using gesture controls",
"Sync: Fixed a crash in KOReader that occurred when syncing progress without an open book",
"Sync: Improved upload performance with concurrent upload support"
]
},
"0.9.85": {
"date": "2025-10-14",
"notes": [
"TTS: Improved media session control compatibility across more Android systems",
"TTS: Made the TTS icon less distracting during read-aloud mode",
"Settings: Added an option to adjust screen brightness while reading",
"Settings: Added support for custom background images",
"PDF: Fixed an issue where scrolling and panning didnt work correctly when zoomed in",
"Android: Added adaptive launcher icon for better system integration",
"Reader: Added keyboard shortcuts for toggling bookmarks",
"Reader: Annotations are now rendered instantly when opening files"
]
},
"0.9.82": {
"date": "2025-10-01",
"notes": [
"Sync: More reliable syncing between KOReader and Readest",
"MOBI: Fixed an issue where some footnotes in MOBI/AZW files were not parsed correctly",
"Storage: Added support for changing data location on Windows, macOS, Linux, and Android",
"Windows: Portable EXE version now stores all reading data in the directory of the executable",
"Android: Added background TTS support with media session controls",
"WebView: Extended compatibility down to version 92",
"Settings: Added global settings menu to the library page",
"iOS: Fixed an issue where custom theme colors were not handled correctly on older Safari versions",
"TTS: Added more languages for Edge TTS"
]
},
"0.9.81": {
"date": "2025-09-19",
"notes": [
"TTS: Added desktop common media control support when TTS is playing",
"PDF: Disabled swipe-up gesture for toggling the action bar when zoomed in",
"Fonts: Fixed an issue where embedded fonts in ebooks were occasionally not applied",
"Reader: Fixed an issue where newly created highlights sometimes would not appear",
"Reader: Enabled scrolling in the menu when the menu is too long"
]
},
"0.9.80": {
"date": "2025-09-19",
"notes": [
"Accessibility: Added support for popular screen readers on all platforms, making books accessible to readers with visual impairments",
"Sync: Progress is now synced across different versions of the same book by aggregated metadata",
"Library: Groups are now displayed in list view for easier organization",
"Library: Added delete confirmation when removing books from the context menu",
"Fonts: Added support for fonts with subfamilies when importing TTF/OTF font files",
"Layout: Prevented layout shift in Android when the virtual keyboard appears"
]
},
"0.9.78": {
"date": "2025-09-06",
"notes": [
"TTS: Added option to keep a persistent TTS bar at the bottom of the screen",
"TTS: Added previous/next sentence navigation controls in the TTS bar",
"TTS: Added media control support on iOS lock screen and AirPods",
"TTS: Fixed an issue where headings could not be highlighted for TTS",
"Sync: Fixed occasional sync failures between KOReader and Readest",
"Fonts: Grouped font styles into custom font families for easier selection",
"Reader: Improved text selection sensitivity when using a stylus",
"Reader: Books can now be properly closed using the system back button on Android",
"EPUB: Fixed parsing to correctly detect the front cover in some EPUB files",
"PDF: Added zoom level, zoom mode, and spread mode settings for PDFs",
"Reader: Bookmarks can now be edited directly in the sidebar",
"Layout: Prevented layout shift when the virtual keyboard appears on Android",
"TXT: Improved chapter detection and added support for nested table of contents in TXT files"
]
},
"0.9.76": {
"date": "2025-08-30",
"notes": [
"Sync: Moved KOReader sync controls into the reader sidebar with a manual push/pull option",
"Sync: Improved tolerance and reliability for KOReader sync operations",
"Sync: Added support for more KOReader server implementations",
"Fonts: Added support for importing multiple styles within a font family",
"Reader: Fixed an issue where footnotes are empty in some EPUB files",
"Theme: Applied theme background color for PDFs on macOS",
"Reader: Added support for importing AZW3 files on Android",
"Reader: Reduced screen flash when launching the app and opening books",
"Layout: Fixed an issue where the grouping modal would not appear on Linux"
]
},
"0.9.75": {
"date": "2025-08-22",
"notes": [
"Fonts: Added support for importing local TTF and ODF fonts",
"TTS: Reduced the pause between sentences when using Edge TTS",
"TTS: Fixed an issue where voices list could not be opened on older versions of iOS",
"TOC: Fixed an issue where nested TOC items would not collapse properly in some books",
"Translator: Fixed an issue where translations in the popup did not refresh correctly",
"Library: Added option to sort authors with last name first",
"Layout: Fixed mismatch in close button position between the reader and library pages",
"Layout: Book title now remains centered in the available space",
"Layout: Fixed footer bar layout in landscape mode"
]
},
"0.9.72": {
"date": "2025-08-18",
"notes": [
"Fixed Edge TTS voice playback for EPUBs",
"Reduced accidental page flips when toggling toolbars",
"Fixed images with background colors not displaying correctly in some books",
"Added support for custom KOReader Sync Servers on your local network (LAN)"
]
},
"0.9.71": {
"date": "2025-08-13",
"notes": [
"Sync: Added two ways to sync reading progress with KOReader devices",
"EPUB: Applied monospace font settings",
"EPUB: Fixed initial text alignment for some EPUB files",
"PDF: Fixed issue opening large PDF files on Android",
"TTS: Improved book language detection when language code is invalid",
"iOS: Fixed applying system color scheme in auto theme mode",
"Config: Added option to choose reading progress display style (percentage or page number)",
"Library: Added option to delete only the local copy of a book",
"Account: Added 'Reset Password' button in the account page"
]
},
"0.9.69": {
"date": "2025-08-02",
"notes": [
"Updater: Fixed permission issue when updating in standalone reader window",
"Config: Added option to disable doubleclick actions",
"EPUB: Fixed missing images in some EPUB files",
"EPUB: Corrected formatting for book subjects",
"TXT: Improved language detection when parsing TXT files",
"CSS: Resolved issue where custom font colors could not be applied",
"Layout: Corrected cover image width display in 'Fit' mode for list view",
"Layout: Fixed unintended scrolling in reader view when highlighting text"
]
},
"0.9.68": {
"date": "2025-07-30",
"notes": [
"Reader: Files now open in a new window by default on Desktop",
"Translation: Skips translating content inside <pre>, <code>, and <math> tags",
"Performance: Improved multi-part downloading for large books",
"Sync: Resolved issue preventing some PDF files from syncing",
"CSS: Resolved issue with fixed font color in some EPUB files",
"TXT: Enhanced TXT parsing for better compatibility"
]
},
"0.9.67": {
"date": "2025-07-22",
"notes": [
"Reader: Fixed file opening issue when filenames contain commas",
"Translation: Added Yandex Translator as a new translation provider",
"Layout: Hovering over header now reveals macOS traffic light window controls",
"Theme: Reader background color is now customizable for EPUB and PDF",
"Library: Search now includes book format, group names, and descriptions",
"Library: Various improvements to metadata editor and bookshelf management",
"Linux: Fixed social login failure on Linux systems"
]
},
"0.9.66": {
"date": "2025-07-21",
"notes": [
"Layout: Fixed nested table of contents items not expanding in long TOC lists",
"Reader: Opening files from the OS now takes highest priority",
"TTS: Improved voice filtering for some language codes",
"App: Fixed loading issues on older browsers",
"App: Fixed wrong MIME types generated on Linux"
]
},
"0.9.65": {
"date": "2025-07-19",
"notes": [
"Reader: Added support for opening multiple reader windows on desktop",
"Layout: Added visible window borders on Linux",
"TTS: Improved handling of invalid book language",
"TTS: Skipped reading footnote anchor links",
"Translation: Fixed an issue where table of contents entries were not translated",
"Sync: Edited book metadata is now included in sync across devices",
"iOS: Disabled context menu when long-pressing on book covers"
]
},
"0.9.64": {
"date": "2025-07-16",
"notes": [
"Library: Added support to edit book metadata",
"Layout: Fixed bookmark icon placement when the sidebar is pinned",
"Reader: Fixed an issue where links to other chapters in EPUB files did not work",
"Reader: Lightened the highlight color in dark mode for better contrast",
"Reader: Pull-to-refresh gesture is now smoother and more responsive",
"Reader: Removed unintended indentation on images",
"Search: Improved responsiveness of full-text search for faster results"
]
},
"0.9.63": {
"date": "2025-07-07",
"notes": [
"Reader: Fixed links not working in some MOBI books",
"TTS: Fixed an issue where some text was skipped during reading",
"Library: You can now delete only the cloud backup of a book without removing the local copy",
"Performance: Fonts in the font list now load only when displayed for faster startup",
"Performance: Opening large MOBI books is now significantly faster",
"Layout: Fixed overlay scrollbar display in longer TOC items list",
"Layout: Improved grid cover image height in crop mode",
"Layout: Removed unsupported screen orientation lock option on iPad",
"Layout: System context menu no longer appears when selecting text on iPad",
"Translation: Added Thai (th-TH) language support"
]
},
"0.9.62": {
"date": "2025-07-02",
"notes": [
"Subscription: You can now upgrade to Readest Premium and manage your subscription",
"Reader: Added an option to toggle Parallel Reading when viewing multiple books",
"Translation: Added an option to show or hide the original text in translations",
"Layout: TOC on Android now uses an overlay scrollbar for easier navigation",
"Layout: Custom CSS can now also be applied to the library page",
"Fonts: Added three new CJK fonts to choose from",
"Shortcuts: Press ESC to quickly close the search bar"
]
},
"0.9.61": {
"date": "2025-06-26",
"notes": [
"Layout: Fixed view menu width on smaller screens",
"Layout: Added option to crop or fit book covers in library view",
"Reader: You can now apply custom CSS to the reading interface (UI)",
"Reader: Added an option to show remaining pages in the current chapter",
"Settings: Added options to reset settings from the config dialog",
"Import: Fixed encoded filenames when importing TXT files on iOS",
"Linux: Fixed missing app icon on some Linux distributions",
"GitHub: Added donation link to support Readest development"
]
},
"0.9.60": {
"date": "2025-06-22",
"notes": [
"Layout has been improved for iPad devices",
"Screen orientation changes are now smoother on iOS",
"Importing books on iOS during the first launch is now more reliable",
"Font size no longer changes unexpectedly in scrolled mode on iOS",
"Top and bottom safe insets are now ignored when no header or footer is present",
"Interactive books now load correctly on the Desktop platform",
"Translation is now disabled when the primary language is undefined",
"Android: the task list background color has been updated with current theme color"
]
},
"0.9.59": {
"date": "2025-06-19",
"notes": [
"Layout: Image size now adjusts more accurately by converting screen units to pixels properly",
"Layout: Improved header layout on iOS landscape mode — extra spacing has been removed",
"Settings: Top and bottom margin settings are now more intuitive and better constrained"
]
},
"0.9.58": {
"date": "2025-06-18",
"notes": [
"TTS: Translation now works even when TTS is playing in the background",
"TTS: Press T on your keyboard to quickly toggle TTS on or off",
"TTS: Each open book now has its own independent TTS controller",
"Annotations: Annotation tools now function properly while TTS is active",
"Settings: Margins for top, bottom, left, and right can now be adjusted individually",
"Settings: New option to always show the status bar while reading",
"Layout: Reader page now adapts better to device safe areas for a more comfortable layout",
"UI: Added creation timestamps to annotations and made various interface improvements",
"iPad: Multiple columns are now supported in portrait mode",
"iPad: Fixed issue where sidebars couldn't be resized by dragging",
"iPad: Added support for split-screen mode"
]
},
"0.9.57": {
"date": "2025-06-14",
"notes": ["TTS: Fixed an issue to detect custom TTS engines on some Android devices"]
},
"0.9.56": {
"date": "2025-06-13",
"notes": [
"Performance: Improved TOC loading for books with very large chapter lists",
"TTS: Added support for native Android TTS engines (e.g., MultiTTS)",
"TTS: Fixed an issue where the next chapter would not load properly in the background",
"Translation: Improved accuracy and clarity of some Arabic translations",
"Reading: Added support for code syntax highlighting in books with code snippets"
]
},
"0.9.55": {
"date": "2025-06-07",
"notes": [
"Sync: Notes deleted on other devices now correctly sync across all platforms",
"Layout: Now text justification can be unset in the layout settings",
"Translation: Added notification when daily translation quota is exceeded",
"Performance: Reduced unnecessary animations on Android to improve efficiency"
]
},
"0.9.53": {
"date": "2025-06-05",
"notes": [
"Reader: New option to customize book foreground and background colors",
"Reader: Fixed an issue where images appeared too small in some EPUBs",
"EPUB: Improved cover image detection for certain EPUB files",
"TTS: Improved background playback stability on iOS devices",
"Translation: Introduced a daily DeepL translation quota to ensure long-term availability"
]
},
"0.9.52": {
"date": "2025-06-03",
"notes": [
"Library: The search bar now shows the number of books currently displayed",
"Book Details: Book descriptions now support rich HTML formatting",
"Notebook: Added support for writing notes using Markdown",
"Notebook: You can now search within your notes",
"Sync: A sync status item has been added to the View menu",
"TOC: You can now sort the table of contents by page number",
"Reader: Option added to show remaining time in the current chapter"
]
},
"0.9.51": {
"date": "2025-06-01",
"notes": [
@@ -160,7 +609,7 @@
"0.9.30": {
"date": "2025-04-05",
"notes": [
"Added fixed storage quata when running the app in self-hosted mode",
"Added fixed storage quota when running the app in self-hosted mode",
"Link colors will only change when you override fonts",
"Added cache for native files for better performance"
]
+66
View File
@@ -0,0 +1,66 @@
#!/bin/bash
set -e
VERSION=$(jq -r '.version' package.json)
MANIFEST="./src-tauri/gen/android/app/src/main/AndroidManifest.xml"
INSTALL_PERMISSION_LINE='<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>'
STORAGE_PERMISSION_LINE='<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>'
ised() {
if [[ "$OSTYPE" == "darwin"* ]]; then
sed -i '' "$@"
else
sed -i "$@"
fi
return $?
}
# --- REMOVE PERMISSION BEFORE BUILD ---
if grep -q 'REQUEST_INSTALL_PACKAGES' "$MANIFEST"; then
echo "🧹 Removing REQUEST_INSTALL_PACKAGES from AndroidManifest.xml"
if ised "/REQUEST_INSTALL_PACKAGES/d" "$MANIFEST"; then
echo "✅ Successfully removed REQUEST_INSTALL_PACKAGES"
else
echo "❌ Failed to remove REQUEST_INSTALL_PACKAGES" >&2
exit 1
fi
fi
if grep -q 'MANAGE_EXTERNAL_STORAGE' "$MANIFEST"; then
echo "🧹 Removing MANAGE_EXTERNAL_STORAGE from AndroidManifest.xml"
if ised "/MANAGE_EXTERNAL_STORAGE/d" "$MANIFEST"; then
echo "✅ Successfully removed MANAGE_EXTERNAL_STORAGE"
else
echo "❌ Failed to remove MANAGE_EXTERNAL_STORAGE" >&2
exit 1
fi
fi
echo "🚀 Running: pnpm tauri android build"
pnpm tauri android build --config src-tauri/tauri.playstore.conf.json
# --- ADD PERMISSION BACK AFTER BUILD ---
if ! grep -q 'REQUEST_INSTALL_PACKAGES' "$MANIFEST"; then
echo "♻️ Restoring REQUEST_INSTALL_PACKAGES in AndroidManifest.xml"
ised "/android.permission.INTERNET/a\\
$INSTALL_PERMISSION_LINE
" "$MANIFEST"
fi
if ! grep -q 'MANAGE_EXTERNAL_STORAGE' "$MANIFEST"; then
echo "♻️ Restoring MANAGE_EXTERNAL_STORAGE in AndroidManifest.xml"
ised "/android.permission.WRITE_EXTERNAL_STORAGE/a\\
$STORAGE_PERMISSION_LINE
" "$MANIFEST"
fi
source .env.google-play.local
if [[ -z "$GOOGLE_PLAY_JSON_KEY_FILE" ]]; then
echo "❌ GOOGLE_PLAY_JSON_KEY_FILE is not set"
exit 1
fi
cd ../../
fastlane android upload_production
+183
View File
@@ -0,0 +1,183 @@
#!/bin/bash
# Sync release notes from JSON to XML AppData file
# Usage: ./sync_release_notes.sh [json_file] [xml_file]
#
# Description:
# Extracts release information from a JSON file and updates the <releases>
# section in an AppData XML file, then calculates the SHA256 checksum.
#
# Arguments:
# json_file: Path to JSON file (default: releases.json)
# xml_file: Path to XML file (default: appdata.xml)
set -e
set -o pipefail
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Helper functions
log_info() {
echo -e "${GREEN}${NC} $1"
}
log_warn() {
echo -e "${YELLOW}${NC} $1"
}
log_error() {
echo -e "${RED}${NC} $1" >&2
}
# Check if required commands are available
if ! command -v jq >/dev/null 2>&1; then
log_error "jq is required but not installed."
echo "Install it with: apt-get install jq (Debian/Ubuntu) or brew install jq (macOS)"
exit 1
fi
# Parse arguments
JSON_FILE="${1:-releases.json}"
XML_FILE="${2:-appdata.xml}"
# Validate input files
if [ ! -f "$JSON_FILE" ]; then
log_error "JSON file '$JSON_FILE' not found"
exit 1
fi
if [ ! -f "$XML_FILE" ]; then
log_error "XML file '$XML_FILE' not found"
exit 1
fi
# Validate JSON format
if ! jq empty "$JSON_FILE" 2>/dev/null; then
log_error "Invalid JSON format in '$JSON_FILE'"
exit 1
fi
# Check if releases key exists
if ! jq -e '.releases' "$JSON_FILE" >/dev/null 2>&1; then
log_error "No 'releases' key found in JSON file"
exit 1
fi
echo "================================================"
echo "Release Notes Sync Tool"
echo "================================================"
echo "Source: $JSON_FILE"
echo "Target: $XML_FILE"
echo ""
# Create backup
BACKUP_FILE="${XML_FILE}.backup.$(date +%Y%m%d_%H%M%S)"
cp "$XML_FILE" "$BACKUP_FILE"
log_info "Created backup: $BACKUP_FILE"
# Create temporary files
TEMP_XML=$(mktemp)
TEMP_RELEASES=$(mktemp)
# Cleanup function
cleanup() {
rm -f "$TEMP_XML" "$TEMP_RELEASES"
}
trap cleanup EXIT
# Extract releases from JSON and convert to XML format
log_info "Extracting releases from JSON..."
RELEASE_COUNT=$(jq '.releases | length' "$JSON_FILE")
echo " Found $RELEASE_COUNT releases"
jq -r '
.releases | to_entries | .[0:10] | .[] |
" <release version=\"\(.key)\" date=\"\(.value.date)\">
<description>
<ul>
" +
((.value.notes | map(" <li>\(.)</li>")) | join("\n")) +
"
</ul>
</description>
</release>"
' "$JSON_FILE" > "$TEMP_RELEASES"
# Find the releases section in XML and replace it
log_info "Updating XML file..."
awk -v releases="$TEMP_RELEASES" '
BEGIN { in_releases = 0; printed_releases = 0 }
/<releases>/ {
print $0
if (printed_releases == 0) {
while ((getline line < releases) > 0) {
print line
}
close(releases)
printed_releases = 1
}
in_releases = 1
next
}
/<\/releases>/ {
in_releases = 0
print $0
next
}
in_releases { next }
{ print }
' "$XML_FILE" > "$TEMP_XML"
# Validate the generated XML
if ! grep -q "<releases>" "$TEMP_XML" || ! grep -q "</releases>" "$TEMP_XML"; then
log_error "Failed to generate valid XML structure"
log_warn "Restoring from backup..."
mv "$BACKUP_FILE" "$XML_FILE"
exit 1
fi
# Remove backup if everything is fine
rm "$BACKUP_FILE"
# Replace original file
mv "$TEMP_XML" "$XML_FILE"
log_info "XML file updated successfully"
# Calculate SHA256 checksum
echo ""
log_info "Calculating SHA256 checksum..."
if command -v sha256sum >/dev/null 2>&1; then
CHECKSUM=$(sha256sum "$XML_FILE" | awk '{print $1}')
elif command -v shasum >/dev/null 2>&1; then
CHECKSUM=$(shasum -a 256 "$XML_FILE" | awk '{print $1}')
else
log_error "Neither sha256sum nor shasum found"
exit 1
fi
# Save checksum to file
CHECKSUM_FILE="${XML_FILE}.sha256"
echo "$CHECKSUM $XML_FILE" > "$CHECKSUM_FILE"
echo ""
echo "================================================"
echo "Summary"
echo "================================================"
echo " Updated file: $XML_FILE"
echo " Backup file: $BACKUP_FILE"
echo " Checksum file: $CHECKSUM_FILE"
echo " SHA256: $CHECKSUM"
echo " Releases: $RELEASE_COUNT"
echo ""
log_info "Sync completed successfully!"
echo ""
echo "To verify the checksum, run:"
if command -v sha256sum >/dev/null 2>&1; then
echo " sha256sum -c $CHECKSUM_FILE"
else
echo " shasum -a 256 -c $CHECKSUM_FILE"
fi
+24 -17
View File
@@ -14,8 +14,12 @@ rust-version = "1.77.2"
name = "readestlib"
crate-type = ["staticlib", "cdylib", "lib"]
[features]
# Internal feature to suppress warnings from old objc crate
cargo-clippy = []
[build-dependencies]
tauri-build = { version = "2.1.1", features = [] }
tauri-build = { version = "2", features = [] }
[dependencies]
serde_json = "1.0"
@@ -25,27 +29,30 @@ thiserror = "2"
tokio = { version = "1", features = ["fs"] }
tokio-util = { version = "0.7", features = ["codec"] }
futures-util = "0.3"
futures = "0.3.31"
read-progress-stream = "1.0.0"
reqwest = { version = "0.12", default-features = false, features = [
"json",
"stream",
] }
# FIXME: remove the devtools feature in production
tauri = { version = "2.5.1", features = [ "protocol-asset", "devtools"] }
tauri-build = "2.1.1"
tauri-plugin-log = "2.4.0"
tauri-plugin-fs = "2.2.1"
tauri-plugin-dialog = "2.2.1"
tauri-plugin-os = "2.2.1"
tauri-plugin-http = "2.4.3"
tauri-plugin-shell = "2.2.1"
tauri-plugin-process = "2.2.1"
tauri = { version = "2.5.1", features = [ "protocol-asset" ] }
tauri-build = "2"
tauri-plugin-log = "2"
tauri-plugin-fs = "2"
tauri-plugin-dialog = "2"
tauri-plugin-os = "2"
tauri-plugin-http = { version = "2", features = ["dangerous-settings"] }
tauri-plugin-shell = "2"
tauri-plugin-process = "2"
tauri-plugin-oauth = "2"
tauri-plugin-opener = "2.2.6"
tauri-plugin-deep-link = "2.2.1"
tauri-plugin-opener = "2"
tauri-plugin-deep-link = "2"
tauri-plugin-sign-in-with-apple = "1.0.2"
tauri-plugin-haptics = "2.2.4"
tauri-plugin-haptics = "2"
tauri-plugin-persisted-scope = "2"
tauri-plugin-native-bridge = { path = "./plugins/tauri-plugin-native-bridge" }
tauri-plugin-native-tts = { path = "./plugins/tauri-plugin-native-tts" }
tauri-plugin-websocket = "2"
[target."cfg(target_os = \"macos\")".dependencies]
rand = "0.8"
@@ -60,6 +67,6 @@ objc2-foundation = { version = "0.3", features = ["NSError", "NSArray"] }
[target.'cfg(any(target_os = "macos", windows, target_os = "linux"))'.dependencies]
tauri-plugin-cli = "2"
tauri-plugin-single-instance = "2.2.3"
tauri-plugin-updater = "2.7.0"
tauri-plugin-window-state = "2.2.2"
tauri-plugin-single-instance = "2"
tauri-plugin-updater = "2"
tauri-plugin-window-state = "2"
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>LSSupportsOpeningDocumentsInPlace</key>
<true/>
</dict>
</plist>
+163 -2
View File
@@ -11,7 +11,7 @@
<key>UIHomeIndicatorAutoHidden</key>
<true/>
<key>UIRequiresFullScreen</key>
<true/>
<false/>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
@@ -19,6 +19,8 @@
<string>EPUB Document</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSItemContentTypes</key>
<array>
<string>org.idpf.epub-container</string>
@@ -30,6 +32,8 @@
<string>PDF Document</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSItemContentTypes</key>
<array>
<string>com.adobe.pdf</string>
@@ -41,6 +45,8 @@
<string>FB2 Document</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSItemContentTypes</key>
<array>
<string>com.readest.fb2</string>
@@ -52,6 +58,8 @@
<string>CBZ Archive</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSItemContentTypes</key>
<array>
<string>com.readest.cbz</string>
@@ -63,6 +71,8 @@
<string>MOBI Document</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSItemContentTypes</key>
<array>
<string>org.mobipocket.mobi</string>
@@ -74,6 +84,8 @@
<string>AZW Document</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSItemContentTypes</key>
<array>
<string>com.amazon.azw</string>
@@ -86,6 +98,8 @@
<string>Text File</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSItemContentTypes</key>
<array>
<string>public.plain-text</string>
@@ -93,6 +107,153 @@
</dict>
</array>
<key>UTImportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeIdentifier</key>
<string>org.idpf.epub-container</string>
<key>UTTypeDescription</key>
<string>EPUB Document</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
<string>public.composite-content</string>
</array>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>epub</string>
</array>
<key>public.mime-type</key>
<string>application/epub+zip</string>
</dict>
</dict>
<dict>
<key>UTTypeIdentifier</key>
<string>com.adobe.pdf</string>
<key>UTTypeDescription</key>
<string>PDF Document</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
<string>public.composite-content</string>
</array>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>pdf</string>
</array>
<key>public.mime-type</key>
<string>application/pdf</string>
</dict>
</dict>
<dict>
<key>UTTypeIdentifier</key>
<string>com.readest.fb2</string>
<key>UTTypeDescription</key>
<string>FB2 Document</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.xml</string>
</array>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>fb2</string>
</array>
<key>public.mime-type</key>
<string>application/xml</string>
</dict>
</dict>
<dict>
<key>UTTypeIdentifier</key>
<string>com.readest.cbz</string>
<key>UTTypeDescription</key>
<string>CBZ Archive</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.archive</string>
</array>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>cbz</string>
</array>
<key>public.mime-type</key>
<string>application/x-cbz</string>
</dict>
</dict>
<dict>
<key>UTTypeIdentifier</key>
<string>org.mobipocket.mobi</string>
<key>UTTypeDescription</key>
<string>MOBI Document</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>mobi</string>
</array>
<key>public.mime-type</key>
<string>application/x-mobipocket-ebook</string>
</dict>
</dict>
<dict>
<key>UTTypeIdentifier</key>
<string>com.amazon.azw</string>
<key>UTTypeDescription</key>
<string>AZW Document</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>azw</string>
<string>azw3</string>
</array>
<key>public.mime-type</key>
<string>application/vnd.amazon.ebook</string>
</dict>
</dict>
<dict>
<key>UTTypeIdentifier</key>
<string>public.plain-text</string>
<key>UTTypeDescription</key>
<string>Text File</string>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
<string>public.content</string>
</array>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>txt</string>
</array>
<key>public.mime-type</key>
<string>text/plain</string>
</dict>
</dict>
</array>
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
@@ -198,4 +359,4 @@
</dict>
</array>
</dict>
</plist>
</plist>
+62
View File
@@ -1,3 +1,65 @@
use std::{env, fs, path::PathBuf, process::Command};
fn main() {
println!("cargo:rerun-if-changed=../extensions/windows-thumbnail/src");
let target_os = env::var("CARGO_CFG_TARGET_OS").unwrap_or_default();
if target_os == "windows" {
build_windows_thumbnail();
}
tauri_build::build()
}
fn build_windows_thumbnail() {
let manifest_dir = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap());
let dll_crate_dir = manifest_dir
.join("..")
.join("extensions")
.join("windows-thumbnail");
let dll_crate_manifest = dll_crate_dir.join("Cargo.toml");
let profile = env::var("PROFILE").unwrap_or_else(|_| "debug".into());
let mut cmd = Command::new(env::var("CARGO").unwrap_or("cargo".into()));
cmd.arg("build")
.arg("--package")
.arg("windows_thumbnail")
.arg("--manifest-path")
.arg(&dll_crate_manifest);
if profile == "release" {
cmd.arg("--release");
}
let target_triple = env::var("TARGET").unwrap_or_default();
let host_triple = env::var("HOST").unwrap_or_default();
if !target_triple.is_empty() && target_triple != host_triple {
cmd.arg("--target").arg(&target_triple);
}
let status = cmd
.status()
.expect("Failed to run cargo build for windows_thumbnail");
if !status.success() {
panic!("Failed to build windows_thumbnail DLL");
}
let dll_name = "windows_thumbnail.dll";
let candidate_paths = [
dll_crate_dir.join("target").join(&profile).join(dll_name),
dll_crate_dir
.join("target")
.join(&target_triple)
.join(&profile)
.join(dll_name),
];
let dll_src = candidate_paths
.iter()
.find(|p| p.exists())
.expect("Failed to find built windows_thumbnail DLL");
let dll_dest = &dll_crate_dir.join("target").join(dll_name);
fs::copy(dll_src, dll_dest).expect("Failed to copy windows_thumbnail DLL");
println!("cargo:rerun-if-changed={}", dll_dest.display());
}
@@ -2,7 +2,7 @@
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "default",
"description": "enables the default permissions",
"windows": ["main", "updater"],
"windows": ["main", "updater", "reader-*"],
"permissions": [
"core:default",
"fs:default",
@@ -43,36 +43,80 @@
"identifier": "fs:allow-cache-read",
"allow": [
{
"path": "$CACHEDIR/**/*"
"path": "$APPCACHE/**/*"
},
{
"path": "/private/var/mobile/Containers/Data/Application/**/*"
}
]
},
{
"identifier": "fs:allow-cache-write",
"allow": [
{
"path": "$APPCACHE/**/*"
},
{
"path": "/private/var/mobile/Containers/Data/Application/**/*"
}
]
},
{
"identifier": "fs:scope",
"allow": [
{
"path": "**/Readest"
},
{
"path": "**/Readest/**/*"
},
{
"path": "**/last-book-cover.png"
}
]
},
{
"identifier": "http:default",
"allow": [
{
"url": "https://*.deepl.com"
"url": "https://*.readest.com"
},
{
"url": "https://github.com/readest/*"
},
{
"url": "https://*.deepl.com"
},
{
"url": "https://*.cloudflarestorage.com"
},
{
"url": "https://edge.microsoft.com"
},
{
"url": "https://translate.toil.cc"
},
{
"url": "https://*.microsofttranslator.com"
},
{
"url": "https://translate.googleapis.com"
},
{
"url": "http://*:*"
},
{
"url": "https://*:*"
},
{
"url": "http://*"
},
{
"url": "https://*"
}
]
},
"websocket:default",
"dialog:default",
"os:default",
"core:window:default",
@@ -88,6 +132,7 @@
"core:window:allow-toggle-maximize",
"core:window:allow-set-fullscreen",
"core:window:allow-set-always-on-top",
"core:window:allow-destroy",
"core:webview:allow-create-webview-window",
"core:path:allow-resolve-directory",
"log:default",
@@ -99,11 +144,20 @@
"oauth:allow-cancel",
"sign-in-with-apple:default",
"opener:default",
{
"identifier": "opener:allow-open-url",
"allow": [
{
"url": "alipays:*"
}
]
},
"haptics:allow-vibrate",
"haptics:allow-impact-feedback",
"haptics:allow-notification-feedback",
"haptics:allow-selection-feedback",
"native-bridge:default",
"native-tts:default",
"deep-link:default"
]
}
@@ -1,7 +1,7 @@
{
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "desktop-capability",
"windows": ["main", "updater"],
"windows": ["main", "updater", "reader-*"],
"platforms": ["linux", "macOS", "windows"],
"permissions": ["updater:default", "cli:default"]
}
@@ -15,28 +15,29 @@ val tauriProperties = Properties().apply {
}
android {
compileSdk = 34
compileSdk = 36
namespace = "com.bilingify.readest"
val keystorePropertiesFile = rootProject.file("keystore.properties")
val keystoreProperties = Properties()
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(FileInputStream(keystorePropertiesFile))
}
defaultConfig {
manifestPlaceholders["usesCleartextTraffic"] = "false"
applicationId = "com.bilingify.readest"
minSdk = 26
targetSdk = 34
targetSdk = 36
versionCode = tauriProperties.getProperty("tauri.android.versionCode", "1").toInt()
versionName = tauriProperties.getProperty("tauri.android.versionName", "1.0")
}
signingConfigs {
create("release") {
val keystorePropertiesFile = rootProject.file("keystore.properties")
val keystoreProperties = Properties()
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(FileInputStream(keystorePropertiesFile))
if (keystorePropertiesFile.exists()) {
create("signing") {
keyAlias = keystoreProperties["keyAlias"] as String
keyPassword = keystoreProperties["password"] as String
storeFile = file(keystoreProperties["storeFile"] as String)
storePassword = keystoreProperties["password"] as String
}
keyAlias = keystoreProperties["keyAlias"] as String
keyPassword = keystoreProperties["password"] as String
storeFile = file(keystoreProperties["storeFile"] as String)
storePassword = keystoreProperties["password"] as String
}
}
buildTypes {
@@ -45,14 +46,26 @@ android {
isDebuggable = true
isJniDebuggable = true
isMinifyEnabled = false
packaging { jniLibs.keepDebugSymbols.add("*/arm64-v8a/*.so")
if (keystorePropertiesFile.exists()) {
signingConfig = signingConfigs.getByName("signing")
}
packaging {
jniLibs.keepDebugSymbols.add("*/arm64-v8a/*.so")
jniLibs.keepDebugSymbols.add("*/armeabi-v7a/*.so")
jniLibs.keepDebugSymbols.add("*/x86/*.so")
jniLibs.keepDebugSymbols.add("*/x86_64/*.so")
}
}
getByName("release") {
signingConfig = signingConfigs.getByName("release")
isMinifyEnabled = true
if (keystorePropertiesFile.exists()) {
signingConfig = signingConfigs.getByName("signing")
}
proguardFiles(
*fileTree(".") { include("**/*.pro") }
.plus(getDefaultProguardFile("proguard-android-optimize.txt"))
.toList().toTypedArray()
)
}
}
kotlinOptions {
@@ -68,13 +81,13 @@ rust {
}
dependencies {
implementation("androidx.webkit:webkit:1.6.1")
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("androidx.activity:activity-ktx:1.9.3")
implementation("com.google.android.material:material:1.8.0")
implementation("androidx.webkit:webkit:1.14.0")
implementation("androidx.appcompat:appcompat:1.7.1")
implementation("androidx.activity:activity-ktx:1.10.1")
implementation("com.google.android.material:material:1.12.0")
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.4")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.0")
}
apply(from = "tauri.build.gradle.kts")
apply(from = "tauri.build.gradle.kts")
@@ -1,23 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK"/>
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
<!-- AndroidTV support -->
<uses-feature android:name="android.software.leanback" android:required="false" />
<application
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher"
android:largeHeap="true"
android:enableOnBackInvokedCallback="false"
android:label="@string/app_name"
android:theme="@style/Theme.readest"
android:hardwareAccelerated="true"
android:usesCleartextTraffic="${usesCleartextTraffic}">
<activity
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode"
android:launchMode="singleTask"
android:label="@string/main_activity_title"
android:hardwareAccelerated="true"
android:name=".MainActivity"
android:exported="true">
@@ -28,35 +37,64 @@
<data android:scheme="content" />
<data android:scheme="file" />
<data android:mimeType="application/epub+zip" />
<data android:mimeType="application/pdf" />
<data android:mimeType="application/fb2" />
<data android:mimeType="application/x-fb2" />
<data android:mimeType="application/mobi"/>
<data android:mimeType="application/azw"/>
<data android:mimeType="application/azw3"/>
<data android:mimeType="application/x-mobipocket-ebook" />
<data android:mimeType="application/vnd.amazon.ebook" />
<data android:mimeType="application/vnd.amazon.mobi8-ebook" />
<data android:mimeType="application/vnd.comicbook+zip" />
<data android:mimeType="application/x-cbz" />
<data android:mimeType="application/x-mobipocket-ebook" />
<data android:mimeType="application/zip" />
<data android:mimeType="text/plain" />
<data android:mimeType="application/octet-stream"/>
<data android:mimeType="application/x-font-ttf"/>
<data android:mimeType="application/x-font-otf"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="content" />
<data android:scheme="file" />
<data android:mimeType="*/*" />
<data android:pathPattern=".*\\.epub" />
<data android:pathPattern=".*\\.pdf" />
<data android:pathPattern=".*\\.fb2" />
<data android:pathPattern=".*\\.fb2.zip" />
<data android:pathPattern=".*\\.mobi" />
<data android:pathPattern=".*\\.azw" />
<data android:pathPattern=".*\\.azw3" />
<data android:pathPattern=".*\\.cbz" />
<data android:pathPattern=".*\\.zip" />
<data android:pathPattern=".*\\.txt" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="*/*"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="*/*"/>
</intent-filter>
<intent-filter android:label="oauth">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="readest" android:host="auth-callback" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
@@ -64,18 +102,38 @@
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>
<!-- DEEP LINK PLUGIN. AUTO-GENERATED. DO NOT REMOVE. -->
<intent-filter android:autoVerify="true">
<intent-filter android:autoVerify="true" >
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:scheme="http" />
<data android:host="web.readest.com" />
</intent-filter>
<!-- DEEP LINK PLUGIN. AUTO-GENERATED. DO NOT REMOVE. -->
</activity>
<receiver
android:name="androidx.media.session.MediaButtonReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
<service
android:name="com.readest.native_tts.MediaPlaybackService"
android:foregroundServiceType="mediaPlayback"
android:exported="true">
<intent-filter>
<action android:name="android.media.browse.MediaBrowserService"/>
</intent-filter>
</service>
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
@@ -1,14 +1,26 @@
package com.bilingify.readest
import android.os.Build
import android.os.Bundle
import androidx.activity.enableEdgeToEdge
import android.view.KeyEvent
import android.webkit.WebView
import android.net.Uri
import android.util.Log
import android.content.Intent
import android.graphics.Color
import android.app.ActivityManager
import android.content.res.Configuration
import android.window.OnBackInvokedCallback
import android.window.OnBackInvokedDispatcher
import androidx.activity.enableEdgeToEdge
import androidx.activity.OnBackPressedCallback
import java.util.concurrent.CountDownLatch
import java.util.concurrent.TimeUnit
import java.util.concurrent.atomic.AtomicBoolean
import app.tauri.plugin.JSArray
import app.tauri.plugin.JSObject
import com.readest.native_bridge.KeyDownInterceptor
import com.readest.native_bridge.NativeBridgePlugin
class MainActivity : TauriActivity(), KeyDownInterceptor {
private lateinit var wv: WebView
@@ -35,6 +47,32 @@ class MainActivity : TauriActivity(), KeyDownInterceptor {
interceptBackKeyEnabled = enabled
}
override fun dispatchKeyEvent(event: KeyEvent): Boolean {
if (event.action == KeyEvent.ACTION_DOWN) {
val keyCode = event.keyCode
val keyName = keyEventMap[keyCode]
if (keyName != null) {
val shouldIntercept = when (keyCode) {
KeyEvent.KEYCODE_BACK -> interceptBackKeyEnabled
KeyEvent.KEYCODE_VOLUME_UP, KeyEvent.KEYCODE_VOLUME_DOWN -> interceptVolumeKeysEnabled
else -> false
}
if (shouldIntercept) {
wv.evaluateJavascript(
"""
try { window.onNativeKeyDown("$keyName", $keyCode); } catch (_) {}
""".trimIndent(),
null
)
return true
}
}
}
return super.dispatchKeyEvent(event)
}
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
val keyName = keyEventMap[keyCode]
if (keyName != null) {
@@ -77,5 +115,102 @@ class MainActivity : TauriActivity(), KeyDownInterceptor {
override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge()
super.onCreate(savedInstanceState)
handleIncomingIntent(intent)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
setTaskDescription(
ActivityManager.TaskDescription(
getString(R.string.app_name),
null,
Color.TRANSPARENT
)
)
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
onBackInvokedDispatcher.registerOnBackInvokedCallback(
OnBackInvokedDispatcher.PRIORITY_DEFAULT,
OnBackInvokedCallback {
Log.d("MainActivity", "Back invoked callback triggered ${interceptBackKeyEnabled}")
if (interceptBackKeyEnabled) {
Log.d("MainActivity", "Back intercepted (OnBackInvokedCallback)")
wv.evaluateJavascript(
"""window.onNativeKeyDown("Back", ${KeyEvent.KEYCODE_BACK});""",
null
)
} else {
finish()
}
}
)
}
onBackPressedDispatcher.addCallback(this,
object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
if (interceptBackKeyEnabled) {
Log.d("MainActivity", "Back intercepted (OnBackPressedDispatcher)")
wv.evaluateJavascript(
"""window.onNativeKeyDown("Back", ${KeyEvent.KEYCODE_BACK});""",
null
)
} else {
isEnabled = false
onBackPressedDispatcher.onBackPressed()
}
}
}
)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
NativeBridgePlugin.getInstance()?.handleActivityResult(requestCode, resultCode, data)
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
intent?.let { handleIncomingIntent(it) }
}
private fun handleIncomingIntent(intent: Intent) {
when (intent.action) {
Intent.ACTION_SEND -> {
if (intent.type != null) {
handleSingleFile(intent)
}
}
Intent.ACTION_SEND_MULTIPLE -> {
if (intent.type != null) {
handleMultipleFiles(intent)
}
}
}
}
private fun handleSingleFile(intent: Intent) {
val uri = intent.getParcelableExtra<Uri>(Intent.EXTRA_STREAM)
uri?.let { fileUri ->
val payload = JSObject().apply {
var urls = JSArray()
urls.put(fileUri.toString())
put("urls", urls)
}
NativeBridgePlugin.getInstance()?.triggerEvent("shared-intent", payload)
}
}
private fun handleMultipleFiles(intent: Intent) {
val uris = intent.getParcelableArrayListExtra<Uri>(Intent.EXTRA_STREAM)
uris?.let { fileUris ->
val payload = JSObject().apply {
var urls = JSArray()
fileUris.forEach { urls.put(it.toString()) }
put("urls", urls)
}
NativeBridgePlugin.getInstance()?.triggerEvent("shared-intent", payload)
}
}
}
@@ -0,0 +1,170 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>
@@ -0,0 +1,8 @@
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<color android:color="#FF323130" />
</item>
<item android:gravity="center" android:width="120dp" android:height="120dp">
<bitmap android:src="@drawable/splash_icon" />
</item>
</layer-list>
Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground>
<inset
android:drawable="@mipmap/ic_launcher_foreground"
android:inset="22%"/>
</foreground>
</adaptive-icon>
@@ -2,6 +2,7 @@
<!-- Base application theme. -->
<style name="Theme.readest" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:windowBackground">@drawable/splash_background</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:windowTranslucentStatus">false</item>
@@ -0,0 +1,5 @@
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@mipmap/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
<monochrome android:drawable="@mipmap/ic_launcher_monochrome"/>
</adaptive-icon>
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

@@ -0,0 +1,85 @@
; Readest NSIS Installer Hooks
; Registers/unregisters the thumbnail provider DLL for Windows Explorer thumbnails
!include "LogicLib.nsh"
; CLSID for Readest Thumbnail Provider
!define CLSID_READEST_THUMBNAIL "{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}"
; IThumbnailProvider Shell Extension Handler GUID
!define SHELL_THUMBNAIL_HANDLER "{e357fccd-a995-4576-b01f-234630154e96}"
;------------------------------------------------------------------------------
; NSIS_HOOK_POSTINSTALL - Called after files are installed
;------------------------------------------------------------------------------
!macro NSIS_HOOK_POSTINSTALL
DetailPrint "Registering Readest Thumbnail Provider..."
; Always do manual registration for reliability
; regsvr32 may fail silently if DLL can't find dependencies
; Register CLSID with full DLL path
WriteRegStr HKCR "CLSID\${CLSID_READEST_THUMBNAIL}" "" "Readest Thumbnail Provider"
WriteRegStr HKCR "CLSID\${CLSID_READEST_THUMBNAIL}\InprocServer32" "" "$INSTDIR\readest_thumbnail.dll"
WriteRegStr HKCR "CLSID\${CLSID_READEST_THUMBNAIL}\InprocServer32" "ThreadingModel" "Apartment"
; CRITICAL: Disable process isolation - required because we use IInitializeWithItem, not IInitializeWithStream
; Without this, Windows runs the handler in an isolated process that can't load the DLL properly
WriteRegDWORD HKCR "CLSID\${CLSID_READEST_THUMBNAIL}" "DisableProcessIsolation" 1
; ========== EPUB ==========
; Register thumbnail handler directly on extension (this is what Windows Shell uses)
WriteRegStr HKCR ".epub\ShellEx\${SHELL_THUMBNAIL_HANDLER}" "" "${CLSID_READEST_THUMBNAIL}"
; ========== MOBI ==========
WriteRegStr HKCR ".mobi\ShellEx\${SHELL_THUMBNAIL_HANDLER}" "" "${CLSID_READEST_THUMBNAIL}"
; ========== AZW ==========
WriteRegStr HKCR ".azw\ShellEx\${SHELL_THUMBNAIL_HANDLER}" "" "${CLSID_READEST_THUMBNAIL}"
; ========== AZW3 ==========
WriteRegStr HKCR ".azw3\ShellEx\${SHELL_THUMBNAIL_HANDLER}" "" "${CLSID_READEST_THUMBNAIL}"
; ========== KF8 ==========
WriteRegStr HKCR ".kf8\ShellEx\${SHELL_THUMBNAIL_HANDLER}" "" "${CLSID_READEST_THUMBNAIL}"
; ========== FB2 ==========
WriteRegStr HKCR ".fb2\ShellEx\${SHELL_THUMBNAIL_HANDLER}" "" "${CLSID_READEST_THUMBNAIL}"
; ========== CBZ ==========
WriteRegStr HKCR ".cbz\ShellEx\${SHELL_THUMBNAIL_HANDLER}" "" "${CLSID_READEST_THUMBNAIL}"
; ========== CBR ==========
WriteRegStr HKCR ".cbr\ShellEx\${SHELL_THUMBNAIL_HANDLER}" "" "${CLSID_READEST_THUMBNAIL}"
DetailPrint "Thumbnail provider registered successfully."
; Refresh shell to apply changes - SHCNE_ASSOCCHANGED
System::Call 'shell32::SHChangeNotify(i 0x08000000, i 0, p 0, p 0)'
!macroend
;------------------------------------------------------------------------------
; NSIS_HOOK_PREUNINSTALL - Called before files are removed
;------------------------------------------------------------------------------
!macro NSIS_HOOK_PREUNINSTALL
DetailPrint "Unregistering Readest Thumbnail Provider..."
; Remove CLSID
DeleteRegKey HKCR "CLSID\${CLSID_READEST_THUMBNAIL}"
; Remove ShellEx from extensions
DeleteRegKey HKCR ".epub\ShellEx\${SHELL_THUMBNAIL_HANDLER}"
DeleteRegKey HKCR ".mobi\ShellEx\${SHELL_THUMBNAIL_HANDLER}"
DeleteRegKey HKCR ".azw\ShellEx\${SHELL_THUMBNAIL_HANDLER}"
DeleteRegKey HKCR ".azw3\ShellEx\${SHELL_THUMBNAIL_HANDLER}"
DeleteRegKey HKCR ".kf8\ShellEx\${SHELL_THUMBNAIL_HANDLER}"
DeleteRegKey HKCR ".fb2\ShellEx\${SHELL_THUMBNAIL_HANDLER}"
DeleteRegKey HKCR ".cbz\ShellEx\${SHELL_THUMBNAIL_HANDLER}"
DeleteRegKey HKCR ".cbr\ShellEx\${SHELL_THUMBNAIL_HANDLER}"
; Delete the DLL file
Delete "$INSTDIR\readest_thumbnail.dll"
; Refresh shell
System::Call 'shell32::SHChangeNotify(i 0x08000000, i 0, p 0, p 0)'
!macroend
@@ -9,13 +9,13 @@ exclude = ["/examples", "/dist-js", "/guest-js", "/node_modules"]
links = "tauri-plugin-native-bridge"
[dependencies]
tauri = { version = "2.3.1" }
tauri = { version = "2" }
serde = "1.0"
thiserror = "2"
schemars = "0.8"
[build-dependencies]
tauri-plugin = { version = "2.0.4", features = ["build"] }
tauri-plugin = { version = "2", features = ["build"] }
schemars = "0.8"
[target.'cfg(any(target_os = "macos", windows, target_os = "linux"))'.dependencies]
@@ -5,7 +5,7 @@ plugins {
android {
namespace = "com.readest.native_bridge"
compileSdk = 34
compileSdk = 36
defaultConfig {
minSdk = 21
@@ -33,8 +33,9 @@ android {
}
dependencies {
implementation("androidx.core:core-ktx:1.9.0")
implementation("androidx.appcompat:appcompat:1.6.0")
implementation("com.android.billingclient:billing-ktx:7.1.1")
implementation("androidx.core:core-ktx:1.12.0")
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("androidx.browser:browser:1.8.0")
implementation("com.google.android.material:material:1.7.0")
testImplementation("junit:junit:4.13.2")
@@ -0,0 +1,300 @@
package com.readest.native_bridge
import android.app.Activity
import android.content.Context
import android.util.Log
import com.android.billingclient.api.*
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import com.google.android.gms.common.GoogleApiAvailability
import com.google.android.gms.common.ConnectionResult
import java.text.SimpleDateFormat
import java.util.*
class BillingManager(private val activity: Activity) : PurchasesUpdatedListener {
private lateinit var billingClient: BillingClient
private val productsCache = mutableMapOf<String, ProductDetails>()
private var purchaseCallback: ((PurchaseData?) -> Unit)? = null
private val scope = CoroutineScope(Dispatchers.Main)
private val isGooglePlayAvailable: Boolean by lazy {
val availability = GoogleApiAvailability.getInstance()
val resultCode = availability.isGooglePlayServicesAvailable(activity)
resultCode == ConnectionResult.SUCCESS
}
companion object {
private const val TAG = "BillingManager"
}
fun isBillingAvailable(): Boolean {
return isGooglePlayAvailable
}
fun initialize(callback: (Boolean) -> Unit) {
if (!isGooglePlayAvailable) {
Log.d(TAG, "Google Play Services not available, skipping billing setup")
callback(false)
return
}
billingClient = BillingClient.newBuilder(activity)
.setListener(this)
.enablePendingPurchases()
.build()
billingClient.startConnection(object : BillingClientStateListener {
override fun onBillingSetupFinished(billingResult: BillingResult) {
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
Log.d(TAG, "Billing client setup finished successfully")
callback(true)
} else {
Log.e(TAG, "Billing setup failed: ${billingResult.debugMessage}")
callback(false)
}
}
override fun onBillingServiceDisconnected() {
Log.w(TAG, "Billing service disconnected")
// Try to reconnect
initialize { }
}
})
}
fun fetchProducts(productIds: List<String>, callback: (List<ProductData>) -> Unit) {
if (!::billingClient.isInitialized || !billingClient.isReady) {
Log.e(TAG, "Billing client not ready")
callback(emptyList())
return
}
scope.launch {
val products = mutableListOf<ProductData>()
// Check for subscription products
val subsIds = productIds.filter {
it.contains("monthly") || it.contains("yearly") || it.contains("subscription")
}
if (subsIds.isNotEmpty()) {
fetchProductsOfType(subsIds, BillingClient.ProductType.SUBS) { subProducts ->
products.addAll(subProducts)
// Then fetch in-app products
val inAppIds = productIds - subsIds.toSet()
if (inAppIds.isNotEmpty()) {
fetchProductsOfType(inAppIds, BillingClient.ProductType.INAPP) { inAppProducts ->
products.addAll(inAppProducts)
callback(products)
}
} else {
callback(products)
}
}
} else {
// Only in-app products
fetchProductsOfType(productIds, BillingClient.ProductType.INAPP) { inAppProducts ->
products.addAll(inAppProducts)
callback(products)
}
}
}
}
private fun fetchProductsOfType(
productIds: List<String>,
productType: String,
callback: (List<ProductData>) -> Unit
) {
val productList = productIds.map { productId ->
QueryProductDetailsParams.Product.newBuilder()
.setProductId(productId)
.setProductType(productType)
.build()
}
val params = QueryProductDetailsParams.newBuilder()
.setProductList(productList)
.build()
billingClient.queryProductDetailsAsync(params) { billingResult, productDetailsList ->
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
val products = productDetailsList.map { productDetails ->
// Cache for purchase later
productsCache[productDetails.productId] = productDetails
when (productType) {
BillingClient.ProductType.SUBS -> {
val offer = productDetails.subscriptionOfferDetails?.firstOrNull()
val pricingPhase = offer?.pricingPhases?.pricingPhaseList?.firstOrNull()
pricingPhase?.let {
ProductData(
id = productDetails.productId,
title = productDetails.title,
description = productDetails.description,
price = it.formattedPrice,
priceCurrencyCode = it.priceCurrencyCode,
priceAmountMicros = it.priceAmountMicros,
productType = "subscription"
)
}
}
BillingClient.ProductType.INAPP -> {
val oneTimeOffer = productDetails.oneTimePurchaseOfferDetails
oneTimeOffer?.let {
ProductData(
id = productDetails.productId,
title = productDetails.title,
description = productDetails.description,
price = it.formattedPrice,
priceCurrencyCode = it.priceCurrencyCode,
priceAmountMicros = it.priceAmountMicros,
productType = "consumable"
)
}
}
else -> null
}
}.filterNotNull()
callback(products)
} else {
Log.e(TAG, "Failed to fetch products: ${billingResult.debugMessage}")
callback(emptyList())
}
}
}
fun purchaseProduct(productId: String, callback: (PurchaseData?) -> Unit) {
val productDetails = productsCache[productId]
if (productDetails == null) {
Log.e(TAG, "Product not found in cache: $productId")
callback(null)
return
}
purchaseCallback = callback
val productDetailsParamsList = listOf(
BillingFlowParams.ProductDetailsParams.newBuilder()
.setProductDetails(productDetails)
.apply {
// For subscriptions, use the first offer
productDetails.subscriptionOfferDetails?.firstOrNull()?.let { offer ->
setOfferToken(offer.offerToken)
}
}
.build()
)
val billingFlowParams = BillingFlowParams.newBuilder()
.setProductDetailsParamsList(productDetailsParamsList)
.build()
val billingResult = billingClient.launchBillingFlow(activity, billingFlowParams)
if (billingResult.responseCode != BillingClient.BillingResponseCode.OK) {
Log.e(TAG, "Failed to launch billing flow: ${billingResult.debugMessage}")
callback(null)
purchaseCallback = null
}
}
fun restorePurchases(callback: (List<PurchaseData>) -> Unit) {
if (!::billingClient.isInitialized || !billingClient.isReady) {
Log.e(TAG, "Billing client not ready")
callback(emptyList())
return
}
scope.launch {
val allPurchases = mutableListOf<PurchaseData>()
// Query in-app purchases
val inappParams = QueryPurchasesParams.newBuilder()
.setProductType(BillingClient.ProductType.INAPP)
.build()
billingClient.queryPurchasesAsync(inappParams) { billingResult, purchases ->
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
allPurchases.addAll(purchases.map { purchase ->
convertToPurchaseData(purchase, "restored")
})
}
// Query subscription purchases
val subsParams = QueryPurchasesParams.newBuilder()
.setProductType(BillingClient.ProductType.SUBS)
.build()
billingClient.queryPurchasesAsync(subsParams) { billingResult, purchases ->
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
allPurchases.addAll(purchases.map { purchase ->
convertToPurchaseData(purchase, "restored")
})
}
callback(allPurchases)
}
}
}
}
override fun onPurchasesUpdated(billingResult: BillingResult, purchases: List<Purchase>?) {
when (billingResult.responseCode) {
BillingClient.BillingResponseCode.OK -> {
purchases?.forEach { purchase ->
handlePurchase(purchase)
}
}
BillingClient.BillingResponseCode.USER_CANCELED -> {
Log.d(TAG, "Purchase cancelled by user")
purchaseCallback?.invoke(null)
purchaseCallback = null
}
else -> {
Log.e(TAG, "Purchase failed: ${billingResult.debugMessage}")
purchaseCallback?.invoke(null)
purchaseCallback = null
}
}
}
private fun handlePurchase(purchase: Purchase) {
// Acknowledge the purchase
if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED) {
if (!purchase.isAcknowledged) {
val acknowledgePurchaseParams = AcknowledgePurchaseParams.newBuilder()
.setPurchaseToken(purchase.purchaseToken)
.build()
billingClient.acknowledgePurchase(acknowledgePurchaseParams) { billingResult ->
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
Log.d(TAG, "Purchase acknowledged")
}
}
}
val purchaseData = convertToPurchaseData(purchase, "purchased")
purchaseCallback?.invoke(purchaseData)
purchaseCallback = null
}
}
private fun convertToPurchaseData(purchase: Purchase, state: String): PurchaseData {
val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US)
dateFormat.timeZone = TimeZone.getTimeZone("UTC")
return PurchaseData(
platform = "android",
productId = purchase.products.firstOrNull() ?: "",
orderId = purchase.orderId ?: purchase.purchaseToken,
purchaseToken = purchase.purchaseToken,
purchaseDate = dateFormat.format(Date(purchase.purchaseTime)),
purchaseState = state,
)
}
}
@@ -1,10 +1,14 @@
package com.readest.native_bridge
import android.Manifest
import android.app.Activity
import android.content.Intent
import android.net.Uri
import android.util.Log
import android.os.Build
import android.os.Environment
import android.provider.Settings
import android.provider.DocumentsContract
import android.view.View
import android.view.KeyEvent
import android.view.WindowInsets
@@ -13,17 +17,24 @@ import android.view.WindowInsetsController
import android.graphics.Color
import android.webkit.WebView
import android.content.pm.ActivityInfo
import android.content.pm.PackageManager
import android.graphics.fonts.SystemFonts
import android.graphics.fonts.Font
import androidx.core.view.WindowCompat
import androidx.core.app.ActivityCompat
import androidx.core.content.FileProvider
import androidx.core.content.ContextCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.browser.customtabs.CustomTabsIntent
import app.tauri.annotation.Command
import app.tauri.annotation.InvokeArg
import app.tauri.annotation.Permission
import app.tauri.annotation.TauriPlugin
import app.tauri.plugin.JSObject
import app.tauri.plugin.JSArray
import app.tauri.plugin.Plugin
import app.tauri.plugin.Invoke
import org.json.JSONArray
@@ -31,53 +42,105 @@ import java.io.*
@InvokeArg
class AuthRequestArgs {
var authUrl: String? = null
var authUrl: String? = null
}
@InvokeArg
class CopyURIRequestArgs {
var uri: String? = null
var dst: String? = null
var uri: String? = null
var dst: String? = null
}
@InvokeArg
class InstallPackageRequestArgs {
var path: String? = null
var path: String? = null
}
@InvokeArg
class SetSystemUIVisibilityRequestArgs {
var visible: Boolean? = false
var darkMode: Boolean? = false
var visible: Boolean? = false
var darkMode: Boolean? = false
}
@InvokeArg
class InterceptKeysRequestArgs {
var volumeKeys: Boolean? = null
var backKey: Boolean? = null
var volumeKeys: Boolean? = null
var backKey: Boolean? = null
}
@InvokeArg
class LockScreenOrientationRequestArgs {
var orientation: String? = null
var orientation: String? = null
}
@InvokeArg
class SetScreenBrightnessRequestArgs {
var brightness: Double? = null // 0.0 to 1.0
}
@InvokeArg
class OpenExternalUrlArgs {
var url: String? = null
}
@InvokeArg
class FetchProductsRequestArgs {
val productIds: List<String>? = null
}
@InvokeArg
class PurchaseProductRequestArgs {
val productId: String? = null
}
data class ProductData(
val id: String,
val title: String,
val description: String,
val price: String,
val priceCurrencyCode: String?,
val priceAmountMicros: Long,
val productType: String
)
data class PurchaseData(
val productId: String,
val orderId: String,
val purchaseToken: String,
val purchaseDate: String,
val purchaseState: String,
val platform: String = "android"
)
interface KeyDownInterceptor {
fun interceptVolumeKeys(enabled: Boolean)
fun interceptBackKey(enabled: Boolean)
}
@TauriPlugin
@TauriPlugin(
permissions = [
Permission(strings = [Manifest.permission.MANAGE_EXTERNAL_STORAGE], alias = "manageStorage"),
]
)
class NativeBridgePlugin(private val activity: Activity): Plugin(activity) {
private val implementation = NativeBridge()
private var redirectScheme = "readest"
private var redirectHost = "auth-callback"
private val billingManager by lazy {
BillingManager(activity)
}
companion object {
private const val REQUEST_MANAGE_STORAGE = 1001
private const val FOLDER_PICKER_REQUEST_CODE = 1002
var pendingInvoke: Invoke? = null
var pendingFolderPickerInvoke: Invoke? = null
private var instance: NativeBridgePlugin? = null
fun getInstance(): NativeBridgePlugin? = instance
}
override fun load(webView: WebView) {
instance = this
super.load(webView)
handleIntent(activity.intent)
}
@@ -198,6 +261,7 @@ class NativeBridgePlugin(private val activity: Activity): Plugin(activity) {
}
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
@Suppress("DEPRECATION")
window.setDecorFitsSystemWindows(false)
val controller = window.insetsController
if (controller != null) {
@@ -228,7 +292,7 @@ class NativeBridgePlugin(private val activity: Activity): Plugin(activity) {
}
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
val compatController = WindowCompat.getInsetsController(window, decorView)
compatController?.let {
compatController.let {
it.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
if (!isDarkMode) {
it.isAppearanceLightStatusBars = true
@@ -259,7 +323,9 @@ class NativeBridgePlugin(private val activity: Activity): Plugin(activity) {
}
}.reduce { acc, flag -> acc or flag }
}
@Suppress("DEPRECATION")
window.statusBarColor = Color.TRANSPARENT
@Suppress("DEPRECATION")
window.navigationBarColor = Color.TRANSPARENT
ret.put("success", true)
} catch (e: Exception) {
@@ -366,4 +432,365 @@ class NativeBridgePlugin(private val activity: Activity): Plugin(activity) {
}
invoke.resolve()
}
@Command
fun get_safe_area_insets(invoke: Invoke) {
val ret = JSObject()
try {
val rootView = activity.findViewById<View>(android.R.id.content)
val windowInsets = androidx.core.view.ViewCompat.getRootWindowInsets(rootView)
if (windowInsets != null) {
val insets = windowInsets.getInsets(
WindowInsetsCompat.Type.systemBars() or
WindowInsetsCompat.Type.displayCutout()
)
val density = activity.resources.displayMetrics.density
ret.put("top", insets.top / density)
ret.put("right", insets.right / density)
ret.put("bottom", insets.bottom / density)
ret.put("left", insets.left / density)
} else {
ret.put("top", 0)
ret.put("right", 0)
ret.put("bottom", 0)
ret.put("left", 0)
}
} catch (e: Exception) {
ret.put("error", e.message)
ret.put("top", 0)
ret.put("right", 0)
ret.put("bottom", 0)
ret.put("left", 0)
}
invoke.resolve(ret)
}
@Command
fun get_screen_brightness(invoke: Invoke) {
val ret = JSObject()
try {
val window = activity.window
val layoutParams = window.attributes
val brightness = layoutParams.screenBrightness
if (brightness >= 0.0f) {
ret.put("brightness", brightness.toDouble())
} else {
val systemBrightness = Settings.System.getInt(
activity.contentResolver,
Settings.System.SCREEN_BRIGHTNESS
)
ret.put("brightness", systemBrightness / 255.0)
}
} catch (e: Exception) {
ret.put("error", e.message)
ret.put("brightness", -1.0)
}
invoke.resolve(ret)
}
@Command
fun set_screen_brightness(invoke: Invoke) {
val args = invoke.parseArgs(SetScreenBrightnessRequestArgs::class.java)
val ret = JSObject()
try {
val brightness = args.brightness?.toFloat()
val layoutParams = activity.window.attributes
if (brightness == null || brightness < 0.0) {
layoutParams.screenBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE
} else {
if (brightness > 1.0) {
invoke.reject("Brightness must be between 0.0 and 1.0, or null to use system brightness")
return
}
layoutParams.screenBrightness = brightness
}
activity.window.attributes = layoutParams
ret.put("success", true)
} catch (e: Exception) {
ret.put("success", false)
ret.put("error", e.message)
}
invoke.resolve(ret)
}
@Command
fun iap_is_available(invoke: Invoke) {
val isAvailable = billingManager.isBillingAvailable()
val result = JSObject()
result.put("available", isAvailable)
invoke.resolve(result)
}
@Command
fun iap_initialize(invoke: Invoke) {
billingManager.initialize { success ->
val result = JSObject()
result.put("success", success)
invoke.resolve(result)
}
}
@Command
fun iap_fetch_products(invoke: Invoke) {
try {
val args = invoke.parseArgs(FetchProductsRequestArgs::class.java)
val productIds = args.productIds ?: emptyList()
if (productIds.isEmpty()) {
invoke.reject("Product IDs list is empty")
return
}
billingManager.fetchProducts(productIds) { products ->
val result = JSObject()
val productsArray = JSArray()
for (product in products) {
val productObject = JSObject().apply {
put("id", product.id)
put("title", product.title)
put("description", product.description)
put("price", product.price)
put("priceCurrencyCode", product.priceCurrencyCode)
put("priceAmountMicros", product.priceAmountMicros)
put("productType", product.productType)
}
productsArray.put(productObject)
}
result.put("products", productsArray)
invoke.resolve(result)
}
} catch (e: Exception) {
invoke.reject("Failed to parse fetch products arguments: ${e.message}")
}
}
@Command
fun iap_purchase_product(invoke: Invoke) {
try {
val args = invoke.parseArgs(PurchaseProductRequestArgs::class.java)
val productId = args.productId ?: ""
if (productId.isEmpty()) {
invoke.reject("Product ID is empty")
return
}
billingManager.purchaseProduct(productId) { purchase ->
if (purchase != null) {
val result = JSObject()
val purchaseData = JSObject().apply {
put("platform", purchase.platform)
put("packageName", activity.packageName)
put("productId", purchase.productId)
put("orderId", purchase.orderId)
put("purchaseToken", purchase.purchaseToken)
put("purchaseDate", purchase.purchaseDate)
put("purchaseState", purchase.purchaseState)
}
result.put("purchase", purchaseData)
invoke.resolve(result)
} else {
invoke.reject("Purchase failed or was cancelled")
}
}
} catch (e: Exception) {
invoke.reject("Failed to parse purchase arguments: ${e.message}")
}
}
@Command
fun iap_restore_purchases(invoke: Invoke) {
billingManager.restorePurchases { purchases ->
val result = JSObject()
val purchasesArray = JSArray()
for (purchase in purchases) {
val purchaseObject = JSObject().apply {
put("platform", purchase.platform)
put("packageName", activity.packageName)
put("productId", purchase.productId)
put("orderId", purchase.orderId)
put("purchaseToken", purchase.purchaseToken)
put("purchaseDate", purchase.purchaseDate)
put("purchaseState", purchase.purchaseState)
}
purchasesArray.put(purchaseObject)
}
result.put("purchases", purchasesArray)
invoke.resolve(result)
}
}
@Command
fun get_external_sdcard_path(invoke: Invoke) {
val result = JSObject()
val externalDirs = activity.getExternalFilesDirs(null)
for (file in externalDirs) {
if (file != null && Environment.isExternalStorageRemovable(file)) {
val pathParts = file.absolutePath.split("/Android/")
if (pathParts.isNotEmpty()) {
result.put("path", pathParts[0])
invoke.resolve(result)
}
}
}
result.put("path", null)
invoke.resolve(result)
}
@Command
fun request_manage_storage_permission(invoke: Invoke) {
val ret = JSObject()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
if (!Environment.isExternalStorageManager()) {
try {
val intent = Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION)
intent.data = Uri.parse("package:${activity.packageName}")
activity.startActivityForResult(intent, REQUEST_MANAGE_STORAGE)
ret.put("manageStorage", "denied")
invoke.resolve(ret)
} catch (e: Exception) {
val intent = Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION)
activity.startActivity(intent)
ret.put("manageStorage", "denied")
invoke.resolve(ret)
}
} else {
ret.put("manageStorage", "granted")
invoke.resolve(ret)
}
} else {
val readPermission = ContextCompat.checkSelfPermission(
activity,
Manifest.permission.READ_EXTERNAL_STORAGE
)
val writePermission = ContextCompat.checkSelfPermission(
activity,
Manifest.permission.WRITE_EXTERNAL_STORAGE
)
if (readPermission == PackageManager.PERMISSION_GRANTED &&
writePermission == PackageManager.PERMISSION_GRANTED) {
ret.put("manageStorage", "granted")
invoke.resolve(ret)
} else {
ActivityCompat.requestPermissions(
activity,
arrayOf(
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
),
REQUEST_MANAGE_STORAGE
)
ret.put("manageStorage", "prompt")
invoke.resolve(ret)
}
}
}
@Command
fun open_external_url(invoke: Invoke) {
val args = invoke.parseArgs(OpenExternalUrlArgs::class.java)
val url = args.url ?: ""
try {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
activity.startActivity(intent)
val ret = JSObject()
ret.put("success", true)
invoke.resolve(ret)
} catch (e: Exception) {
invoke.reject("Failed to open URL: ${e.message}")
}
}
@Command
fun select_directory(invoke: Invoke) {
pendingFolderPickerInvoke = invoke
try {
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)
activity.startActivityForResult(intent, FOLDER_PICKER_REQUEST_CODE)
} catch (e: Exception) {
val result = JSObject()
result.put("cancelled", true)
result.put("uri", null)
result.put("path", null)
result.put("error", e.message)
invoke.resolve(result)
pendingFolderPickerInvoke = null
}
}
fun handleActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == FOLDER_PICKER_REQUEST_CODE) {
val invoke = pendingFolderPickerInvoke
if (invoke != null) {
handleDirectorySelected(data?.data, invoke)
pendingFolderPickerInvoke = null
}
}
}
private fun handleDirectorySelected(uri: Uri?, invoke: Invoke) {
val result = JSObject()
if (uri == null) {
result.put("cancelled", true)
result.put("uri", null)
result.put("path", null)
} else {
try {
val flags = Intent.FLAG_GRANT_READ_URI_PERMISSION or
Intent.FLAG_GRANT_WRITE_URI_PERMISSION
activity.contentResolver.takePersistableUriPermission(uri, flags)
result.put("cancelled", false)
result.put("uri", uri.toString())
result.put("path", extractPathFromUri(uri))
} catch (e: SecurityException) {
result.put("cancelled", true)
result.put("uri", uri.toString())
result.put("path", extractPathFromUri(uri))
result.put("error", "Permission error: ${e.message}")
} catch (e: Exception) {
result.put("cancelled", true)
result.put("uri", null)
result.put("path", null)
result.put("error", "Error: ${e.message}")
}
}
invoke.resolve(result)
pendingInvoke = null
}
private fun extractPathFromUri(uri: Uri): String? {
val path = uri.path ?: return null
return try {
when {
DocumentsContract.isTreeUri(uri) -> {
val treeDocId = DocumentsContract.getTreeDocumentId(uri)
val split = treeDocId.split(":")
if (split[0].equals("primary", ignoreCase = true)) {
if (split.size > 1) {
Environment.getExternalStorageDirectory().path + "/" + split[1]
} else {
Environment.getExternalStorageDirectory().path
}
} else {
"/storage/${split[0]}/" + (if (split.size > 1) split[1] else "")
}
}
else -> null
}
} catch (e: Exception) {
path
}
}
fun triggerEvent(eventName: String, payload: JSObject) {
activity.runOnUiThread {
trigger(eventName, payload)
}
}
}
@@ -9,6 +9,25 @@ const COMMANDS: &[&str] = &[
"get_sys_fonts_list",
"intercept_keys",
"lock_screen_orientation",
"iap_is_available",
"iap_initialize",
"iap_fetch_products",
"iap_purchase_product",
"iap_restore_purchases",
"get_system_color_scheme",
"get_safe_area_insets",
"get_screen_brightness",
"set_screen_brightness",
"get_external_sdcard_path",
"open_external_url",
"select_directory",
"register_listener",
"remove_listener",
"request_manage_storage_permission",
"check_permissions",
"request_permissions",
"checkPermissions",
"requestPermissions",
];
fn main() {
@@ -3,6 +3,7 @@ import AuthenticationServices
import CoreText
import MediaPlayer
import ObjectiveC
import StoreKit
import SwiftRs
import Tauri
import UIKit
@@ -48,6 +49,46 @@ class LockScreenOrientationRequestArgs: Decodable {
let orientation: String?
}
class SetScreenBrightnessRequestArgs: Decodable {
let brightness: Float?
}
class CopyUriToPathRequestArgs: Decodable {
let uri: String?
let dst: String?
}
struct InitializeRequest: Decodable {
let publicKey: String?
}
struct FetchProductsRequest: Decodable {
let productIds: [String]
}
struct PurchaseProductRequest: Decodable {
let productId: String
}
struct ProductData: Codable {
let id: String
let title: String
let description: String
let price: String
let priceCurrencyCode: String?
let priceAmountMicros: Int64
let productType: String
}
struct PurchaseData: Codable {
let productId: String
let transactionId: String
let originalTransactionId: String
let purchaseDate: String
let purchaseState: String
let platform: String
}
class VolumeKeyHandler: NSObject {
private var audioSession: AVAudioSession?
private var originalVolume: Float = 0.0
@@ -151,17 +192,246 @@ class VolumeKeyHandler: NSObject {
}
}
class WebViewLifecycleManager: NSObject {
private weak var webView: WKWebView?
private var originalNavigationDelegate: WKNavigationDelegate?
private var isMonitoring = false
private var lastBackgroundTime: Date?
private var backgroundTimeThreshold: TimeInterval = 180.0
func startMonitoring(webView: WKWebView) {
self.webView = webView
originalNavigationDelegate = webView.navigationDelegate
webView.navigationDelegate = self
isMonitoring = true
logger.log("WebViewLifecycleManager: Started monitoring WebView")
}
func stopMonitoring() {
isMonitoring = false
if let original = originalNavigationDelegate {
webView?.navigationDelegate = original
}
logger.log("WebViewLifecycleManager: Stopped monitoring WebView")
}
func handleAppWillEnterForeground() {
guard isMonitoring, let webView = webView else {
logger.warning(
"WebViewLifecycleManager: Cannot handle foreground - not monitoring or webView is nil")
return
}
logger.log("WebViewLifecycleManager: App entering foreground")
var timeInBackground: TimeInterval = 0
if let backgroundTime = lastBackgroundTime {
timeInBackground = Date().timeIntervalSince(backgroundTime)
logger.log("WebViewLifecycleManager: Time in background: \(timeInBackground)s")
}
// If app was backgrounded for more than threshold, check WebView health
if timeInBackground > backgroundTimeThreshold {
logger.log(
"WebViewLifecycleManager: App was backgrounded for \(timeInBackground)s, checking WebView health..."
)
checkAndRecoverWebView(webView, reason: "long_background")
} else {
// Still do a quick check after a small delay
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) { [weak self] in
self?.quickHealthCheck(webView)
}
}
lastBackgroundTime = nil
}
func handleAppWillResignActive() {
logger.log("WebViewLifecycleManager: App will resign active")
guard let webView = webView else { return }
webView.evaluateJavaScript("window.location.href") { result, error in
if let error = error {
logger.error("WebViewLifecycleManager: Failed to capture URL on background: \(error)")
return
}
if let urlString = result as? String {
if urlString.hasPrefix("http") || urlString.hasPrefix("tauri") {
UserDefaults.standard.set(urlString, forKey: "tauri_last_valid_url")
logger.log("WebViewLifecycleManager: Saved valid URL")
}
}
}
}
func handleAppDidEnterBackground() {
lastBackgroundTime = Date()
}
private func quickHealthCheck(_ webView: WKWebView) {
logger.log("WebViewLifecycleManager: Performing quick health check")
webView.evaluateJavaScript("window.location.href") { [weak self] result, error in
if let error = error {
logger.error("WebViewLifecycleManager: Quick health check failed: \(error)")
self?.checkAndRecoverWebView(webView, reason: "health_check_failed")
} else if let urlString = result as? String {
if urlString.contains("about:blank") || urlString.isEmpty {
logger.warning("WebViewLifecycleManager: WebView showing about:blank!")
self?.recoverWebView(webView, reason: "about_blank")
}
}
}
}
private func checkAndRecoverWebView(_ webView: WKWebView, reason: String) {
logger.log("WebViewLifecycleManager: Checking WebView health (reason: \(reason))")
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { [weak self] in
webView.evaluateJavaScript("window.location.href") { result, error in
if let error = error {
logger.error("WebViewLifecycleManager: Error checking WebView URL: \(error)")
self?.recoverWebView(webView, reason: "js_error_\(reason)")
} else if let urlString = result as? String {
logger.log("WebViewLifecycleManager: Current URL after \(reason): \(urlString)")
if urlString.contains("about:blank") || urlString.isEmpty {
logger.warning("WebViewLifecycleManager: Detected blank WebView after \(reason)")
self?.recoverWebView(webView, reason: reason)
} else {
logger.log("WebViewLifecycleManager: WebView appears healthy")
}
}
}
}
}
private func recoverWebView(_ webView: WKWebView, reason: String) {
logger.log("WebViewLifecycleManager: Recovering WebView (reason: \(reason))")
if let lastURL = UserDefaults.standard.string(forKey: "tauri_last_valid_url"),
let url = URL(string: lastURL)
{
logger.log("WebViewLifecycleManager: Reloading from saved URL: \(lastURL)")
webView.load(URLRequest(url: url))
} else {
logger.log("WebViewLifecycleManager: No saved URL, performing standard reload")
webView.reload()
}
}
}
extension WebViewLifecycleManager: WKNavigationDelegate {
func webViewWebContentProcessDidTerminate(_ webView: WKWebView) {
logger.error("WebViewLifecycleManager: WebContent process TERMINATED!")
recoverWebView(webView, reason: "process_terminated")
if let original = originalNavigationDelegate,
original.responds(to: #selector(webViewWebContentProcessDidTerminate(_:)))
{
original.webViewWebContentProcessDidTerminate?(webView)
}
}
// Save successful navigation URLs
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
if let url = webView.url {
let urlString = url.absoluteString
if urlString.hasPrefix("http") || urlString.hasPrefix("tauri") {
UserDefaults.standard.set(urlString, forKey: "tauri_last_valid_url")
logger.log("WebViewLifecycleManager: Saved valid URL")
}
}
if let original = originalNavigationDelegate,
original.responds(to: #selector(webView(_:didFinish:)))
{
original.webView?(webView, didFinish: navigation)
}
}
// Proxy other important navigation delegate methods
func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
logger.error("WebViewLifecycleManager: Navigation failed: \(error)")
if let original = originalNavigationDelegate,
original.responds(to: #selector(webView(_:didFail:withError:)))
{
original.webView?(webView, didFail: navigation, withError: error)
}
}
func webView(
_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!,
withError error: Error
) {
logger.error("WebViewLifecycleManager: Provisional navigation failed: \(error)")
if let original = originalNavigationDelegate,
original.responds(to: #selector(webView(_:didFailProvisionalNavigation:withError:)))
{
original.webView?(webView, didFailProvisionalNavigation: navigation, withError: error)
}
}
func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
if let original = originalNavigationDelegate,
original.responds(to: #selector(webView(_:didStartProvisionalNavigation:)))
{
original.webView?(webView, didStartProvisionalNavigation: navigation)
}
}
func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!) {
if let original = originalNavigationDelegate,
original.responds(to: #selector(webView(_:didCommit:)))
{
original.webView?(webView, didCommit: navigation)
}
}
func webView(
_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction,
decisionHandler: @escaping (WKNavigationActionPolicy) -> Void
) {
if let original = originalNavigationDelegate {
original.webView?(
webView, decidePolicyFor: navigationAction, decisionHandler: decisionHandler)
} else {
decisionHandler(.allow)
}
}
func webView(
_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse,
decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void
) {
if let original = originalNavigationDelegate {
original.webView?(
webView, decidePolicyFor: navigationResponse, decisionHandler: decisionHandler)
} else {
decisionHandler(.allow)
}
}
}
class NativeBridgePlugin: Plugin {
private var webView: WKWebView?
private var authSession: ASWebAuthenticationSession?
private var isOrientationLocked = false
private var currentOrientationMask: UIInterfaceOrientationMask = .all
private var orientationObserver: NSObjectProtocol?
private var originalDelegate: UIApplicationDelegate?
private var webViewLifecycleManager: WebViewLifecycleManager?
@objc public override func load(webview: WKWebView) {
self.webView = webview
logger.log("NativeBridgePlugin loaded")
webViewLifecycleManager = WebViewLifecycleManager()
webViewLifecycleManager?.startMonitoring(webView: webview)
logger.log("NativeBridgePlugin: WebView lifecycle monitoring activated")
NotificationCenter.default.addObserver(
self,
selector: #selector(appDidBecomeActive),
@@ -175,22 +445,39 @@ class NativeBridgePlugin: Plugin {
name: UIApplication.didEnterBackgroundNotification,
object: nil
)
NotificationCenter.default.addObserver(
self,
selector: #selector(appWillEnterForeground),
name: UIApplication.willEnterForegroundNotification,
object: nil
)
if let app = UIApplication.value(forKey: "sharedApplication") as? UIApplication {
self.originalDelegate = app.delegate
app.delegate = self
} else {
Logger.error("NativeBridgePlugin: Failed to get shared application")
}
}
@objc func appWillEnterForeground() {
logger.log("NativeBridgePlugin: App will enter foreground")
webViewLifecycleManager?.handleAppWillEnterForeground()
}
@objc func appDidBecomeActive() {
if volumeKeyHandler != nil {
activateVolumeKeyInterception()
}
if orientationObserver != nil {
self.setupOrientationObserver()
}
}
@objc func appDidEnterBackground() {
logger.log("NativeBridgePlugin: App did enter background")
if let handler = volumeKeyHandler, handler.isIntercepting {
handler.stopInterception()
}
webViewLifecycleManager?.handleAppDidEnterBackground()
}
func activateVolumeKeyInterception() {
@@ -207,6 +494,9 @@ class NativeBridgePlugin: Plugin {
}
deinit {
webViewLifecycleManager?.stopMonitoring()
webViewLifecycleManager = nil
NotificationCenter.default.removeObserver(self)
}
@@ -360,18 +650,11 @@ class NativeBridgePlugin: Plugin {
let orientation = args.orientation ?? "auto"
switch orientation.lowercased() {
case "portrait":
self.isOrientationLocked = true
self.currentOrientationMask = .portrait
self.forceOrientation(.portrait)
self.setupOrientationObserver()
self.changeOrientation(.portrait)
case "landscape":
self.isOrientationLocked = true
self.currentOrientationMask = .landscape
self.forceOrientation(.landscapeRight)
self.setupOrientationObserver()
self.changeOrientation(.landscape)
case "auto":
self.isOrientationLocked = false
self.currentOrientationMask = .all
self.changeOrientation(.all)
default:
invoke.reject("Invalid orientation mode")
return
@@ -381,41 +664,220 @@ class NativeBridgePlugin: Plugin {
}
}
private func forceOrientation(_ orientation: UIInterfaceOrientation) {
private func changeOrientation(_ orientationMask: UIInterfaceOrientationMask) {
self.currentOrientationMask = orientationMask
if #available(iOS 16.0, *) {
if let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene {
let orientationMask: UIInterfaceOrientationMask =
orientation.isPortrait ? .portrait : .landscape
for window in windowScene.windows {
if let rootVC = window.rootViewController {
rootVC.setNeedsUpdateOfSupportedInterfaceOrientations()
}
}
windowScene.requestGeometryUpdate(.iOS(interfaceOrientations: orientationMask)) { error in
print("Orientation update error: \(error.localizedDescription)")
if orientationMask == .all {
windowScene.requestGeometryUpdate(.iOS(interfaceOrientations: .all)) { error in
logger.error("Orientation update error: \(error.localizedDescription)")
DispatchQueue.main.async {
UIViewController.attemptRotationToDeviceOrientation()
}
}
} else {
windowScene.requestGeometryUpdate(.iOS(interfaceOrientations: orientationMask)) { error in
logger.error("Orientation update error: \(error.localizedDescription)")
}
}
}
} else {
UIDevice.current.setValue(orientation.rawValue, forKey: "orientation")
UIViewController.attemptRotationToDeviceOrientation()
if orientationMask == .all {
UIViewController.attemptRotationToDeviceOrientation()
} else {
let specificOrientation: UIInterfaceOrientation
if orientationMask.contains(.portrait) {
specificOrientation = .portrait
} else if orientationMask.contains(.landscape) {
let currentOrientation = UIDevice.current.orientation
if currentOrientation == .landscapeLeft {
specificOrientation = .landscapeRight
} else if currentOrientation == .landscapeRight {
specificOrientation = .landscapeLeft
} else {
specificOrientation = .landscapeRight
}
} else {
specificOrientation = .portrait
}
UIDevice.current.setValue(specificOrientation.rawValue, forKey: "orientation")
UIViewController.attemptRotationToDeviceOrientation()
}
}
}
private func setupOrientationObserver() {
orientationObserver = NotificationCenter.default.addObserver(
forName: UIDevice.orientationDidChangeNotification,
object: nil,
queue: .main
) { [weak self] _ in
guard let self = self, self.isOrientationLocked else { return }
@objc public func iap_is_available(_ invoke: Invoke) {
invoke.resolve(["available": true])
}
if self.currentOrientationMask == .portrait {
self.forceOrientation(.portrait)
} else if self.currentOrientationMask == .landscape {
self.forceOrientation(.landscapeRight)
@objc public func iap_initialize(_ invoke: Invoke) {
StoreKitManager.shared.initialize()
invoke.resolve(["success": true])
}
@objc public func iap_fetch_products(_ invoke: Invoke) {
do {
let args = try invoke.parseArgs(FetchProductsRequest.self)
StoreKitManager.shared.fetchProducts(productIds: args.productIds) { products in
let productsData: [ProductData] = products.map { product in
return ProductData(
id: product.productIdentifier,
title: product.localizedTitle,
description: product.localizedDescription,
price: product.price.stringValue,
priceCurrencyCode: product.priceLocale.currencyCode,
priceAmountMicros: Int64(product.price.doubleValue * 1_000_000),
productType: product.productIdentifier.contains("monthly")
|| product.productIdentifier.contains("yearly") ? "subscription" : "consumable"
)
}
invoke.resolve(["products": productsData])
}
} catch {
invoke.reject("Failed to parse fetch products arguments: \(error.localizedDescription)")
}
}
@objc public func iap_purchase_product(_ invoke: Invoke) {
do {
let args = try invoke.parseArgs(PurchaseProductRequest.self)
StoreKitManager.shared.fetchProducts(productIds: [args.productId]) { products in
guard let product = products.first else {
invoke.reject("Product not found")
return
}
StoreKitManager.shared.purchase(product: product) { result in
switch result {
case .success(let txn):
let purchase = PurchaseData(
productId: txn.payment.productIdentifier,
transactionId: txn.transactionIdentifier ?? "",
originalTransactionId: txn.original?.transactionIdentifier ?? txn
.transactionIdentifier ?? "",
purchaseDate: ISO8601DateFormatter().string(from: txn.transactionDate ?? Date()),
purchaseState: "purchased",
platform: "ios"
)
invoke.resolve(["purchase": purchase])
case .failure(let error):
invoke.reject("Purchase failed: \(error.localizedDescription)")
}
}
}
} catch {
invoke.reject("Failed to parse purchase arguments: \(error.localizedDescription)")
}
}
@objc public func iap_restore_purchases(_ invoke: Invoke) {
StoreKitManager.shared.restorePurchases { transactions in
let restored = transactions.map { txn -> PurchaseData in
return PurchaseData(
productId: txn.payment.productIdentifier,
transactionId: txn.transactionIdentifier ?? "",
originalTransactionId: txn.original?.transactionIdentifier ?? txn.transactionIdentifier
?? "",
purchaseDate: ISO8601DateFormatter().string(from: txn.transactionDate ?? Date()),
purchaseState: "restored",
platform: "ios"
)
}
invoke.resolve(["purchases": restored])
}
}
@objc public func get_system_color_scheme(_ invoke: Invoke) {
let userInterfaceStyle = UITraitCollection.current.userInterfaceStyle
let colorScheme = (userInterfaceStyle == .dark) ? "dark" : "light"
invoke.resolve(["colorScheme": colorScheme])
}
@objc public func get_screen_brightness(_ invoke: Invoke) {
let brightness = UIScreen.main.brightness
invoke.resolve(["brightness": brightness])
}
@objc public func set_screen_brightness(_ invoke: Invoke) {
guard let args = try? invoke.parseArgs(SetScreenBrightnessRequestArgs.self) else {
return invoke.reject("Failed to parse arguments")
}
let brightness = args.brightness ?? 0.5
if brightness < 0.0 {
// Revert to system brightness - iOS doesn't have a direct "system brightness" setting
// We will restore the brightness that was set before the app modified it
return invoke.resolve(["success": true])
}
if brightness > 1.0 {
return invoke.reject("Brightness must be between 0.0 and 1.0")
}
DispatchQueue.main.async {
UIScreen.main.brightness = CGFloat(brightness)
}
invoke.resolve(["success": true])
}
@objc public func copy_uri_to_path(_ invoke: Invoke) {
guard let args = try? invoke.parseArgs(CopyUriToPathRequestArgs.self) else {
return invoke.reject("Failed to parse arguments")
}
guard let uriString = args.uri, let dstPath = args.dst else {
return invoke.reject("URI and destination path must be provided")
}
guard let uri = URL(string: uriString) else {
return invoke.reject("Invalid URI")
}
let fileManager = FileManager.default
let dstURL = URL(fileURLWithPath: dstPath)
do {
let didStartAccessing = uri.startAccessingSecurityScopedResource()
defer {
if didStartAccessing {
uri.stopAccessingSecurityScopedResource()
}
}
var shouldCopy = false
if fileManager.fileExists(atPath: dstURL.path) {
let srcAttributes = try fileManager.attributesOfItem(atPath: uri.path)
let dstAttributes = try fileManager.attributesOfItem(atPath: dstURL.path)
let srcModDate = srcAttributes[.modificationDate] as? Date ?? Date.distantPast
let dstModDate = dstAttributes[.modificationDate] as? Date ?? Date.distantPast
if srcModDate > dstModDate {
try fileManager.removeItem(at: dstURL)
shouldCopy = true
} else {
shouldCopy = false
}
} else {
shouldCopy = true
}
if shouldCopy {
try fileManager.copyItem(at: uri, to: dstURL)
}
invoke.resolve(["success": true])
} catch {
invoke.reject("Failed to copy file: \(error.localizedDescription)")
}
}
}
@@ -431,3 +893,69 @@ extension NativeBridgePlugin: ASWebAuthenticationPresentationContextProviding {
return UIApplication.shared.windows.first ?? UIWindow()
}
}
extension NativeBridgePlugin: UIApplicationDelegate {
public func application(
_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?
) -> UIInterfaceOrientationMask {
return self.currentOrientationMask
}
/*
Proxy all application delegate methods to the original delegate:
sel!(application:didFinishLaunchingWithOptions:),
sel!(application:openURL:options:),
sel!(application:continue:restorationHandler:),
sel!(applicationDidBecomeActive:),
sel!(applicationWillResignActive:),
sel!(applicationWillEnterForeground:),
sel!(applicationDidEnterBackground:),
sel!(applicationWillTerminate:),
*/
public func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
self.originalDelegate?.application?(application, didFinishLaunchingWithOptions: launchOptions)
?? false
}
public func application(
_ application: UIApplication, open url: URL,
options: [UIApplication.OpenURLOptionsKey: Any] = [:]
) -> Bool {
self.originalDelegate?.application?(application, open: url, options: options) ?? false
}
public func application(
_ application: UIApplication, continue continueUserActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void
) -> Bool {
self.originalDelegate?.application?(
application, continue: continueUserActivity, restorationHandler: restorationHandler) ?? false
}
public func applicationDidBecomeActive(_ application: UIApplication) {
self.originalDelegate?.applicationDidBecomeActive?(application)
}
public func applicationWillResignActive(_ application: UIApplication) {
webViewLifecycleManager?.handleAppWillResignActive()
self.originalDelegate?.applicationWillResignActive?(application)
}
public func applicationWillEnterForeground(_ application: UIApplication) {
webViewLifecycleManager?.handleAppWillEnterForeground()
self.originalDelegate?.applicationWillEnterForeground?(application)
}
public func applicationDidEnterBackground(_ application: UIApplication) {
webViewLifecycleManager?.handleAppDidEnterBackground()
self.originalDelegate?.applicationDidEnterBackground?(application)
}
public func applicationWillTerminate(_ application: UIApplication) {
self.originalDelegate?.applicationWillTerminate?(application)
}
}
@@ -0,0 +1,121 @@
import StoreKit
import os
private let logger = Logger(subsystem: Bundle.main.bundleIdentifier!, category: "StoreKitManager")
class StoreKitManager: NSObject, SKProductsRequestDelegate, SKPaymentTransactionObserver {
static let shared = StoreKitManager()
private var productsRequest: SKProductsRequest?
private var productResponseHandler: (([SKProduct]) -> Void)?
private var purchaseHandler: ((Result<SKPaymentTransaction, Error>) -> Void)?
private var restoreHandler: (([SKPaymentTransaction]) -> Void)?
private override init() {
super.init()
}
func initialize() {
SKPaymentQueue.default().add(self)
}
deinit {
SKPaymentQueue.default().remove(self)
}
func fetchProducts(productIds: [String], completion: @escaping ([SKProduct]) -> Void) {
let ids = Set(productIds)
productsRequest = SKProductsRequest(productIdentifiers: ids)
productsRequest?.delegate = self
productResponseHandler = completion
productsRequest?.start()
}
func purchase(
product: SKProduct, completion: @escaping (Result<SKPaymentTransaction, Error>) -> Void
) {
guard SKPaymentQueue.canMakePayments() else {
completion(
.failure(
NSError(
domain: "iap", code: 0, userInfo: [NSLocalizedDescriptionKey: "Purchases disabled."])))
return
}
purchaseHandler = completion
let payment = SKPayment(product: product)
SKPaymentQueue.default().add(payment)
}
func restorePurchases(completion: @escaping ([SKPaymentTransaction]) -> Void) {
restoreHandler = completion
SKPaymentQueue.default().restoreCompletedTransactions()
}
// MARK: - SKProductsRequestDelegate
func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
DispatchQueue.main.async { [weak self] in
self?.productResponseHandler?(response.products)
self?.productResponseHandler = nil
}
}
func request(_ request: SKRequest, didFailWithError error: Error) {
DispatchQueue.main.async { [weak self] in
logger.error("Products request failed: \(error.localizedDescription)")
self?.productResponseHandler?([])
self?.productResponseHandler = nil
}
}
// MARK: - SKPaymentTransactionObserver
func paymentQueue(
_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]
) {
for transaction in transactions {
switch transaction.transactionState {
case .purchased:
SKPaymentQueue.default().finishTransaction(transaction)
DispatchQueue.main.async { [weak self] in
self?.purchaseHandler?(.success(transaction))
self?.purchaseHandler = nil
}
case .failed:
SKPaymentQueue.default().finishTransaction(transaction)
let error =
transaction.error
?? NSError(
domain: "iap", code: -1, userInfo: [NSLocalizedDescriptionKey: "Unknown purchase error"]
)
DispatchQueue.main.async { [weak self] in
self?.purchaseHandler?(.failure(error))
self?.purchaseHandler = nil
}
case .restored:
SKPaymentQueue.default().finishTransaction(transaction)
case .deferred, .purchasing:
// Handle these states if needed
break
@unknown default:
break
}
}
}
func paymentQueueRestoreCompletedTransactionsFinished(_ queue: SKPaymentQueue) {
let restored = queue.transactions.filter { $0.transactionState == .restored }
DispatchQueue.main.async { [weak self] in
self?.restoreHandler?(restored)
self?.restoreHandler = nil
}
}
func paymentQueue(
_ queue: SKPaymentQueue, restoreCompletedTransactionsFailedWithError error: Error
) {
DispatchQueue.main.async { [weak self] in
logger.error("Restore purchases failed: \(error.localizedDescription)")
self?.restoreHandler?([])
self?.restoreHandler = nil
}
}
}
@@ -0,0 +1,13 @@
# Automatically generated - DO NOT EDIT!
"$schema" = "../../schemas/schema.json"
[[permission]]
identifier = "allow-check-permissions"
description = "Enables the check-permissions command without any pre-configured scope."
commands.allow = ["check-permissions"]
[[permission]]
identifier = "deny-check-permissions"
description = "Denies the check-permissions command without any pre-configured scope."
commands.deny = ["check-permissions"]
@@ -0,0 +1,13 @@
# Automatically generated - DO NOT EDIT!
"$schema" = "../../schemas/schema.json"
[[permission]]
identifier = "allow-checkPermissions"
description = "Enables the checkPermissions command without any pre-configured scope."
commands.allow = ["checkPermissions"]
[[permission]]
identifier = "deny-checkPermissions"
description = "Denies the checkPermissions command without any pre-configured scope."
commands.deny = ["checkPermissions"]
@@ -0,0 +1,13 @@
# Automatically generated - DO NOT EDIT!
"$schema" = "../../schemas/schema.json"
[[permission]]
identifier = "allow-check-permissions"
description = "Enables the check_permissions command without any pre-configured scope."
commands.allow = ["check_permissions"]
[[permission]]
identifier = "deny-check-permissions"
description = "Denies the check_permissions command without any pre-configured scope."
commands.deny = ["check_permissions"]

Some files were not shown because too many files have changed in this diff Show More