Windows ga (#358)
* Enhance Cloud TTS with navigation controls and shared UI overlay in desktop app * Refactor Cloud TTS voice settings and remove standalone settings overlay on desktop app * Persist reader window state and improve slider interaction in desktop app * Improve PDF page transitions and refine focus management in desktop app * Refactor scrollbar interaction and adjust desktop modal focus handling * Improve PDF sidecar synchronization and cross-platform metadata compatibility * Refactor PDF annotation comment logic to shared module and implement Desktop UI * Refactor reader screen to use tap-to-toggle and full-width styling in desktop app * Refactor reader workspace layout and chrome-panel interactions * Implement global search keyboard shortcuts and focusable chrome layers * Implement flavor-specific legal links and update the About UI * Refactor reader UI controls on desktop app * Enhance desktop folder sync with background metadata extraction and improved error handling * Refactor Library UI and remove redundant Home tab in desktop app * Add custom tooltips to reader icon buttons in desktop app * Integrate app theme controls into reader interfaces on desktop * Add right-to-left pagination support and improve focus restoration on desktop app * Improve EPUB pagination geometry and diagnostic logging for layout cutoffs on desktop app * Update desktop reader defaults and implement settings migration * Implement block-based position tracking in ReaderLocator * Enhance EPUB highlighting reliability in desktop app * Add support for custom reader themes and update highlight palette logic in desktop app * Replace the Tools panel with a "More" dropdown menu and refactor account UI * Implement account profile header in desktop sidebar * Implement cloud sync reliability improvements and sidebar toggle on desktop app * Improve EPUB annotation synchronization and highlight mapping accuracy in desktop app * Integrate WebView2 for EPUB vertical rendering on Windows * Refactor reader layout logic and enhance WebView2 diagnostics * Improve vertical reading layout and WebView2 resizing on Desktop * Refine vertical reading mode layout and margin handling * Enhance reader locator precision and Desktop mode-switching reliability * Implement chapter-level caching and warm-start pagination in desktop app * Replace bundled KCEF with native system webviews via SWT * Refactor EPUB page info bar visibility and layout logic * Improve PDF toolbar persistence and fix tab reactivation logic * Enable multi-selection and bulk operations for custom fonts * Refactor instrumentation tests * Add EPUB UI test fixture and initial instrumentation tests * Expand EpubReader UI tests and improve accessibility * Add instrumentation tests and test tags for library and reader screens * Enhance OPDS parser logic and catalog integration * Add support for toggling local synchronization on a per-folder basis. * Implement tri-state sizing for the TTS overlay * Persist TTS overlay size across sessions * Refactor reader brightness control and add incremental step buttons * Improve CSS support, pagination control, and style-aware semantic caching * Improve link handling, interaction, and diagnostics in the paginated reader * crash fixes * Implement persistent pending removal for external files * Implement book-specific word replacements * Add native vertical reading mode with custom renderer * Implement text selection and navigation improvements for the native vertical reader * Implement locator-based navigation and improved vertical scrolling in native vertical mode in epub * Implement lazy loading and chapter prefetching for native vertical reader * Improve window lifecycle and disposal handling on Desktop * Optimize vertical reading performance in desktop app * Enhance TTS start accuracy and diagnostic logging on desktop * Refactor AI settings visibility on desktop * Improve pagination height measurement and enhance cutoff diagnostics * Implement lifecycle management and improve justified text splitting for pagination * Refine AI usage tracking and force AI feature visibility on Desktop * Add descriptive context comments and usage examples to string and plural resources. * Optimize performance and memory usage in search and state mapping * Replace reader page sliders with minimal slider and navigation controls * Add support for CBT comic archives * Harden file path validation and XML parsing to prevent security vulnerabilities * Implement local account profile caching and optimize desktop performance * Improve desktop persistence reliability and add Linux secure storage support * Improved PDF zoom stability and layout prediction during zoom commits * Improved PDF spread layout prediction, reader focus restoration, and account profile caching * Enhance highlight precision and scoping using block-local offsets and CFIs * Enhance cloud book content synchronization and background downloads * Implement granular timestamp tracking for reading positions and PDF annotations * Restrict diagnostic logging and stack traces to debug builds * Refine PDF page gaps and reader chrome interaction logic * Refactor PDF highlight rendering and overhaul Desktop sidebar UI * Implement a new interaction dock and undo/redo history for PDF annotations in desktop * Enhance PDF color picker and improve navigation scroll restoration * Add highlight palette customization and improve selection menu UI in desktop app epub reader * Enhance desktop shelf management and library organization
This commit is contained in:
parent
5971eaa571
commit
83dcafa4b6
444 changed files with 47279 additions and 8096 deletions
|
|
@ -1,203 +1,204 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- Shown on book cards and in various dialogs. %1$d = number of books. -->
|
||||
<!-- Full book count phrase shown on book cards and in dialogs. %1$d = number of books. Example: "3 books". -->
|
||||
<plurals name="book_count">
|
||||
<item quantity="one">%1$d book</item>
|
||||
<item quantity="other">%1$d books</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Word-only plural (no number prefix) used in sentences. Example: "remove 3 books from shelf". -->
|
||||
<!-- Word-only plural with no number prefix, used inside longer sentences where code supplies the number separately. Example sentence: "Remove 3 books from shelf." -->
|
||||
<plurals name="book_word">
|
||||
<item quantity="one">book</item>
|
||||
<item quantity="other">books</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Shown when deleting multiple shelves. %1$d = number of shelves. -->
|
||||
<!-- Full shelf count phrase shown when deleting multiple shelves. %1$d = number of shelves. Example: "3 shelves". -->
|
||||
<plurals name="shelf_count">
|
||||
<item quantity="one">%1$d shelf</item>
|
||||
<item quantity="other">%1$d shelves</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Shown in the search results summary bar. %1$d = total number of results found. -->
|
||||
<!-- Shown in the search results summary bar. %1$d = total number of results found. Example: "12 results found". -->
|
||||
<plurals name="search_results_count">
|
||||
<item quantity="one">%1$d result found</item>
|
||||
<item quantity="other">%1$d results found</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Shown in the PDF search results summary bar. %1$d = total number of matches found. -->
|
||||
<!-- Shown in the PDF search results summary bar. %1$d = total number of matches found. Example: "12 matches found". -->
|
||||
<plurals name="search_matches_count">
|
||||
<item quantity="one">%1$d match found</item>
|
||||
<item quantity="other">%1$d matches found</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Dialog title for permanent deletion. Chooses singular/plural based on the selected file count. Example: "Delete Files Permanently". -->
|
||||
<plurals name="dialog_delete_permanently">
|
||||
<item quantity="one">Delete File Permanently</item>
|
||||
<item quantity="other">Delete Files Permanently</item>
|
||||
</plurals>
|
||||
|
||||
<!-- %1$d = number of selected files to permanently delete. -->
|
||||
<!-- Permanent-delete confirmation body. %1$d = number of selected files to permanently delete. Example: "Do you want to permanently delete 3 selected files from your device? This action cannot be undone." -->
|
||||
<plurals name="dialog_permanently_delete_desc">
|
||||
<item quantity="one">Do you want to permanently delete %1$d selected file from your device? This action cannot be undone.</item>
|
||||
<item quantity="other">Do you want to permanently delete %1$d selected files from your device? This action cannot be undone.</item>
|
||||
</plurals>
|
||||
|
||||
<!-- %1$d = number of selected files to remove from the recents list. -->
|
||||
<!-- Remove-recents confirmation body. %1$d = number of selected files to remove from the recents list. Example: "Do you want to remove 3 selected files from the recent files list? It will reappear if you open it again from the library." -->
|
||||
<plurals name="dialog_remove_recents_desc">
|
||||
<item quantity="one">Do you want to remove %1$d selected file from the recent files list? It will reappear if you open it again from the library.</item>
|
||||
<item quantity="other">Do you want to remove %1$d selected files from the recent files list? It will reappear if you open it again from the library.</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Confirmation dialog. %1$d = count of books; %2$s = shelf name. -->
|
||||
<!-- Remove-from-shelf confirmation body. %1$d = count of books; %2$s = shelf name. Example: "Are you sure you want to remove 3 books from the 'Favorites' shelf? The books will remain in your library and appear under Unshelved." -->
|
||||
<plurals name="dialog_remove_from_shelf_desc">
|
||||
<item quantity="one">Are you sure you want to remove %1$d book from the \'%2$s\' shelf? The book will remain in your library and appear under Unshelved.</item>
|
||||
<item quantity="other">Are you sure you want to remove %1$d books from the \'%2$s\' shelf? The books will remain in your library and appear under Unshelved.</item>
|
||||
</plurals>
|
||||
|
||||
<!-- %1$d = number of books removed from the library. -->
|
||||
<!-- Library mutation banner. %1$d = number of books removed from the library. Example: "3 books removed from library." -->
|
||||
<plurals name="banner_books_removed_library">
|
||||
<item quantity="one">%1$d book removed from library.</item>
|
||||
<item quantity="other">%1$d books removed from library.</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Android bulk import progress banner. %1$d = number of selected books being imported. -->
|
||||
<!-- Android bulk import progress banner. %1$d = number of selected books being imported. Example: "Importing 3 books... They will appear in your Library shortly." -->
|
||||
<plurals name="banner_importing_books_count">
|
||||
<item quantity="one">Importing %1$d book… It will appear in your Library shortly.</item>
|
||||
<item quantity="other">Importing %1$d books… They will appear in your Library shortly.</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Android bulk import result banner. %1$d = number of books imported into the Library tab. -->
|
||||
<!-- Android bulk import result banner. %1$d = number of books imported into the Library tab. Example: "Imported 3 books. You can find them in the Library tab." -->
|
||||
<plurals name="banner_books_imported_library_tab">
|
||||
<item quantity="one">Imported %1$d book. You can find it in the Library tab.</item>
|
||||
<item quantity="other">Imported %1$d books. You can find them in the Library tab.</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Shared library mutation banner. %1$d = number of selected books added to a shelf. -->
|
||||
<!-- Shared library mutation banner. %1$d = number of selected books added to a shelf. Example: "3 books added to shelf." -->
|
||||
<plurals name="banner_books_added_to_shelf">
|
||||
<item quantity="one">%1$d book added to shelf.</item>
|
||||
<item quantity="other">%1$d books added to shelf.</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Shared library mutation banner. %1$d = number of selected books; %2$s = tag name. -->
|
||||
<!-- Shared library mutation banner. %1$d = number of selected books; %2$s = tag name. Example: "3 books tagged with \"Fiction\"." -->
|
||||
<plurals name="banner_books_tagged_with_tag">
|
||||
<item quantity="one">%1$d book tagged with "%2$s".</item>
|
||||
<item quantity="other">%1$d books tagged with "%2$s".</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Shared library mutation banner. %1$s = folder name; %2$d = number of books removed with the folder. -->
|
||||
<!-- Shared library mutation banner. %1$s = folder name; %2$d = number of books removed with the folder. Example: "Removed folder \"Downloads\" and 3 books from the app." -->
|
||||
<plurals name="banner_folder_removed_with_book_count">
|
||||
<item quantity="one">Removed folder "%1$s" and %2$d book from the app.</item>
|
||||
<item quantity="other">Removed folder "%1$s" and %2$d books from the app.</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Word count for folders shown in shelf subtitles. %1$d = number of folders. -->
|
||||
<!-- Folder count phrase shown in shelf subtitles. %1$d = number of folders. Example: "2 folders". -->
|
||||
<plurals name="folder_count">
|
||||
<item quantity="one">%1$d folder</item>
|
||||
<item quantity="other">%1$d folders</item>
|
||||
</plurals>
|
||||
|
||||
<!-- File count label. %1$d = number of files. Use a full count phrase, not a reusable standalone noun. -->
|
||||
<!-- File count label. %1$d = number of files. Use a full count phrase, not a reusable standalone noun. Example: "12 files". -->
|
||||
<plurals name="file_count">
|
||||
<item quantity="one">%1$d file</item>
|
||||
<item quantity="other">%1$d files</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Desktop drag-and-drop overlay title. %1$d = number of importable files currently dragged over the app. -->
|
||||
<!-- Desktop drag-and-drop overlay title. %1$d = number of importable files currently dragged over the app. Example: "Drop to import 3 files". -->
|
||||
<plurals name="desktop_drop_import_file_count">
|
||||
<item quantity="one">Drop to import %1$d file</item>
|
||||
<item quantity="other">Drop to import %1$d files</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Desktop drag-and-drop overlay detail. %1$d = number of unsupported dragged files that will not be imported. -->
|
||||
<!-- Desktop drag-and-drop overlay detail. %1$d = number of unsupported dragged files that will not be imported. Example: "2 unsupported files will be skipped." -->
|
||||
<plurals name="desktop_unsupported_import_file_count">
|
||||
<item quantity="one">%1$d unsupported file will be skipped.</item>
|
||||
<item quantity="other">%1$d unsupported files will be skipped.</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Desktop import progress banner. %1$d = number of files being imported. -->
|
||||
<!-- Desktop import progress banner. %1$d = number of files being imported. Example: "Importing 3 files...". -->
|
||||
<plurals name="desktop_importing_file_count">
|
||||
<item quantity="one">Importing %1$d file…</item>
|
||||
<item quantity="other">Importing %1$d files…</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Desktop import result banner sentence. %1$d = number of files successfully imported. -->
|
||||
<!-- Desktop import result banner sentence. %1$d = number of files successfully imported. Example: "Imported 3 files." -->
|
||||
<plurals name="desktop_imported_file_count">
|
||||
<item quantity="one">Imported %1$d file.</item>
|
||||
<item quantity="other">Imported %1$d files.</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Legacy desktop import model message. %1$d = number of files imported before reader support is available. -->
|
||||
<!-- Legacy desktop import model message. %1$d = number of files imported before reader support is available. Example: "Imported 3 files. Reader support comes later." -->
|
||||
<plurals name="desktop_imported_file_count_reader_support_later">
|
||||
<item quantity="one">Imported %1$d file. Reader support comes later.</item>
|
||||
<item quantity="other">Imported %1$d files. Reader support comes later.</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Desktop import result banner sentence. %1$d = number of files that could not be imported. -->
|
||||
<!-- Desktop import result banner sentence. %1$d = number of files that could not be imported. Example: "Could not import 3 files." -->
|
||||
<plurals name="desktop_import_failed_file_count">
|
||||
<item quantity="one">Could not import %1$d file.</item>
|
||||
<item quantity="other">Could not import %1$d files.</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Desktop import result banner sentence. %1$d = number of files skipped during import. -->
|
||||
<!-- Desktop import result banner sentence. %1$d = number of files skipped during import. Example: "Skipped 3 files." -->
|
||||
<plurals name="desktop_skipped_file_count">
|
||||
<item quantity="one">Skipped %1$d file.</item>
|
||||
<item quantity="other">Skipped %1$d files.</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Desktop remove-folder confirmation body. %1$s = folder name; %2$d = number of books from that folder. -->
|
||||
<!-- Desktop remove-folder confirmation body. %1$s = folder name; %2$d = number of books from that folder. Example: "Remove \"Downloads\" and its 3 books from the app? Files on disk will not be deleted." -->
|
||||
<plurals name="desktop_remove_folder_desc_with_book_count">
|
||||
<item quantity="one">Remove "%1$s" and its %2$d book from the app? Files on disk will not be deleted.</item>
|
||||
<item quantity="other">Remove "%1$s" and its %2$d books from the app? Files on disk will not be deleted.</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Desktop folder-sync result banner. %1$d = number of linked folders whose sync failed. -->
|
||||
<!-- Desktop folder-sync result banner. %1$d = number of linked folders whose sync failed. Example: "Folder sync failed for 2 folders." -->
|
||||
<plurals name="desktop_folder_sync_failed_folder_count">
|
||||
<item quantity="one">Folder sync failed for %1$d folder.</item>
|
||||
<item quantity="other">Folder sync failed for %1$d folders.</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Desktop folder-sync result banner. %1$d = number of linked folders skipped after a partial sync. -->
|
||||
<!-- Desktop folder-sync result banner. %1$d = number of linked folders skipped after a partial sync. Example: "Folder sync finished with 2 folders skipped." -->
|
||||
<plurals name="desktop_folder_sync_skipped_folder_count">
|
||||
<item quantity="one">Folder sync finished with %1$d folder skipped.</item>
|
||||
<item quantity="other">Folder sync finished with %1$d folders skipped.</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Desktop OPDS catalog removal banner. %1$d = number of streamed OPDS books removed with the catalog. -->
|
||||
<!-- Desktop OPDS catalog removal banner. OPDS is a protocol name; keep it as-is. %1$d = number of streamed OPDS books removed with the catalog. Example: "Removed 3 streamed OPDS books from that catalog." -->
|
||||
<plurals name="desktop_opds_removed_stream_book_count">
|
||||
<item quantity="one">Removed %1$d streamed OPDS book from that catalog.</item>
|
||||
<item quantity="other">Removed %1$d streamed OPDS books from that catalog.</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Word count for tags shown in filter chips. %1$d = number of tags. -->
|
||||
<!-- Tag count phrase shown in filter chips. %1$d = number of tags. Example: "3 tags". -->
|
||||
<plurals name="tag_count">
|
||||
<item quantity="one">%1$d tag</item>
|
||||
<item quantity="other">%1$d tags</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Desktop library tab label with count. %1$d = number of visible books in the tab. -->
|
||||
<!-- Desktop library tab label with count. %1$d = number of visible books in the tab. Example: "All Books 12". -->
|
||||
<plurals name="desktop_library_tab_books_count">
|
||||
<item quantity="one">All Books %1$d</item>
|
||||
<item quantity="other">All Books %1$d</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Desktop library tab label with count. %1$d = number of manual/series shelf groups. -->
|
||||
<!-- Desktop library tab label with count. %1$d = number of manual/series shelf groups. Example: "Shelves 4". -->
|
||||
<plurals name="desktop_library_tab_shelves_count">
|
||||
<item quantity="one">Shelves %1$d</item>
|
||||
<item quantity="other">Shelves %1$d</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Desktop library tab label with count. %1$d = number of tag groups. -->
|
||||
<!-- Desktop library tab label with count. %1$d = number of tag groups. Example: "Tags 6". -->
|
||||
<plurals name="desktop_library_tab_tags_count">
|
||||
<item quantity="one">Tags %1$d</item>
|
||||
<item quantity="other">Tags %1$d</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Desktop library tab label with count. %1$d = number of source folder groups. -->
|
||||
<!-- Desktop library tab label with count. %1$d = number of source folder groups. Example: "Folders 2". -->
|
||||
<plurals name="desktop_library_tab_folders_count">
|
||||
<item quantity="one">Folders %1$d</item>
|
||||
<item quantity="other">Folders %1$d</item>
|
||||
</plurals>
|
||||
|
||||
<!-- Parenthetical cache chunk count in TTS cache entries. %1$d = number of cached audio chunks. -->
|
||||
<!-- Parenthetical cache chunk count in TTS cache entries. %1$d = number of cached audio chunks. Example: "(12 chunks)". -->
|
||||
<plurals name="tts_cache_chunk_count_parenthetical">
|
||||
<item quantity="one">(%1$d chunk)</item>
|
||||
<item quantity="other">(%1$d chunks)</item>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue