This commit introduces a comprehensive refactoring of the tag management system, replacing the previous API-based approach with a Core Data-first strategy for improved performance and offline support. Major Changes: Tag Management Architecture: - Add CoreDataTagManagementView using @FetchRequest for reactive updates - Implement cache-first sync strategy in LabelsRepository - Create SyncTagsUseCase following Clean Architecture principles - Add TagSortOrder enum for configurable tag sorting (by count/alphabetically) - Mark LegacyTagManagementView as deprecated Share Extension Improvements: - Replace API-based tag loading with Core Data queries - Display top 150 tags sorted by usage count - Remove unnecessary label fetching logic - Add "Most used tags" localized title - Improve offline bookmark tag management Main App Enhancements: - Add tag sync triggers in AddBookmarkView and BookmarkLabelsView - Implement user-configurable tag sorting in settings - Add sort order indicator labels with localization - Automatic UI updates via SwiftUI @FetchRequest reactivity Settings & Configuration: - Add TagSortOrder setting with persistence - Refactor Settings model structure - Add FontFamily and FontSize domain models - Improve settings repository with tag sort order support Use Case Layer: - Add SyncTagsUseCase for background tag synchronization - Update UseCaseFactory with tag sync support - Add mock implementations for testing Localization: - Add German and English translations for: - "Most used tags" - "Sorted by usage count" - "Sorted alphabetically" Technical Improvements: - Batch tag updates with conflict detection - Background sync with silent failure handling - Reduced server load through local caching - Better separation of concerns following Clean Architecture
160 lines
6.5 KiB
Plaintext
160 lines
6.5 KiB
Plaintext
/*
|
|
Localizable.strings
|
|
readeck
|
|
|
|
Created by conversion from Localizable.xcstrings
|
|
*/
|
|
|
|
"" = "";
|
|
"(%lld found)" = "(%lld found)";
|
|
"%" = "%";
|
|
"%@ (%lld)" = "%1$@ (%2$lld)";
|
|
"%lld" = "%lld";
|
|
"%lld articles in the queue" = "%lld articles in the queue";
|
|
"%lld bookmark%@ synced successfully" = "%1$lld bookmark%2$@ synced successfully";
|
|
"%lld bookmark%@ waiting for sync" = "%1$lld bookmark%2$@ waiting for sync";
|
|
"%lld min" = "%lld min";
|
|
"%lld." = "%lld.";
|
|
"%lld/%lld" = "%1$lld/%2$lld";
|
|
"12 min • Today • example.com" = "12 min • Today • example.com";
|
|
"Activate the Read Aloud Feature to read aloud your articles. This is a really early preview and might not work perfectly." = "Activate the Read Aloud Feature to read aloud your articles. This is a really early preview and might not work perfectly.";
|
|
|
|
/* Legal & Privacy */
|
|
"Legal & Privacy" = "Legal & Privacy";
|
|
"Privacy Policy" = "Privacy Policy";
|
|
"Legal Notice" = "Legal Notice";
|
|
"Report an Issue" = "Report an Issue";
|
|
"Contact Support" = "Contact Support";
|
|
|
|
/* Navigation & States */
|
|
"All" = "All";
|
|
"Unread" = "Unread";
|
|
"Favorites" = "Favorites";
|
|
"Archive" = "Archive";
|
|
"Search" = "Search";
|
|
"Settings" = "Settings";
|
|
"Articles" = "Articles";
|
|
"Videos" = "Videos";
|
|
"Pictures" = "Pictures";
|
|
"Tags" = "Tags";
|
|
|
|
/* Settings Sections */
|
|
"Font Settings" = "Font Settings";
|
|
"Appearance" = "Appearance";
|
|
"Cache Settings" = "Cache Settings";
|
|
"General Settings" = "General Settings";
|
|
"Server Settings" = "Server Settings";
|
|
"Server Connection" = "Server Connection";
|
|
|
|
"Add" = "Add";
|
|
"Add new tag:" = "Add new tag:";
|
|
"all" = "all";
|
|
"All tags selected" = "All tags selected";
|
|
"Archive" = "Archive";
|
|
"Archive bookmark" = "Archive bookmark";
|
|
"Are you sure you want to delete this bookmark? This action cannot be undone." = "Are you sure you want to delete this bookmark? This action cannot be undone.";
|
|
"Are you sure you want to log out? This will delete all your login credentials and return you to setup." = "Are you sure you want to log out? This will delete all your login credentials and return you to setup.";
|
|
"Available tags" = "Available tags";
|
|
"Most used tags" = "Most used tags";
|
|
"Sorted by usage count" = "Sorted by usage count";
|
|
"Sorted alphabetically" = "Sorted alphabetically";
|
|
"Cancel" = "Cancel";
|
|
"Category-specific Levels" = "Category-specific Levels";
|
|
"Changes take effect immediately. Lower log levels include higher ones (Debug includes all, Critical includes only critical messages)." = "Changes take effect immediately. Lower log levels include higher ones (Debug includes all, Critical includes only critical messages).";
|
|
"Close" = "Close";
|
|
"Configure log levels and categories" = "Configure log levels and categories";
|
|
"Critical" = "Critical";
|
|
"Debug" = "Debug";
|
|
"DEBUG BUILD" = "DEBUG BUILD";
|
|
"Debug Settings" = "Debug Settings";
|
|
"Delete" = "Delete";
|
|
"Delete Bookmark" = "Delete Bookmark";
|
|
"Developer: Ilyas Hallak" = "Developer: Ilyas Hallak";
|
|
"Done" = "Done";
|
|
"Enter an optional title..." = "Enter an optional title...";
|
|
"Enter your Readeck server details to get started." = "Enter your Readeck server details to get started.";
|
|
"Error" = "Error";
|
|
"Error: %@" = "Error: %@";
|
|
"Favorite" = "Favorite";
|
|
"Finished reading?" = "Finished reading?";
|
|
"Font" = "Font";
|
|
"Font family" = "Font family";
|
|
"Font Settings" = "Font Settings";
|
|
"Font size" = "Font size";
|
|
"From Bremen with 💚" = "From Bremen with 💚";
|
|
"General" = "General";
|
|
"Global Level" = "Global Level";
|
|
"Global Minimum Level" = "Global Minimum Level";
|
|
"Global Settings" = "Global Settings";
|
|
"https://example.com" = "https://example.com";
|
|
"https://readeck.example.com" = "https://readeck.example.com";
|
|
"Include Source Location" = "Include Source Location";
|
|
"Info" = "Info";
|
|
"Jump to last read position (%lld%%)" = "Jump to last read position (%lld%%)";
|
|
"Key" = "Key";
|
|
"Level for %@" = "Level for %@";
|
|
"Loading %@" = "Loading %@";
|
|
"Loading article..." = "Loading article...";
|
|
"Logging Configuration" = "Logging Configuration";
|
|
"Login & Save" = "Login & Save";
|
|
"Logout" = "Logout";
|
|
"Logs below this level will be filtered out globally" = "Logs below this level will be filtered out globally";
|
|
"Manage Labels" = "Manage Labels";
|
|
"Mark as favorite" = "Mark as favorite";
|
|
"More" = "More";
|
|
"New Bookmark" = "New Bookmark";
|
|
"No articles in the queue" = "No articles in the queue";
|
|
"open_url" = "Open %@";
|
|
"open_original_page" = "Open original page";
|
|
"No bookmarks" = "No bookmarks";
|
|
"No bookmarks found in %@." = "No bookmarks found in %@.";
|
|
"No bookmarks found." = "No bookmarks found.";
|
|
"No results" = "No results";
|
|
"Notice" = "Notice";
|
|
"OK" = "OK";
|
|
"Optional: Custom title" = "Optional: Custom title";
|
|
"Password" = "Password";
|
|
"Paste" = "Paste";
|
|
"Please wait while we fetch your bookmarks..." = "Please wait while we fetch your bookmarks...";
|
|
"Preview" = "Preview";
|
|
"Progress: %lld%%" = "Progress: %lld%%";
|
|
"Re-login & Save" = "Re-login & Save";
|
|
"Read Aloud Feature" = "Read Aloud Feature";
|
|
"Read article aloud" = "Read article aloud";
|
|
"Read-aloud Queue" = "Read-aloud Queue";
|
|
"readeck Bookmark Title" = "readeck Bookmark Title";
|
|
"Reading %lld/%lld: " = "Reading %1$lld/%2$lld: ";
|
|
"Remove" = "Remove";
|
|
"Reset" = "Reset";
|
|
"Reset to Defaults" = "Reset to Defaults";
|
|
"Restore" = "Restore";
|
|
"Resume listening" = "Resume listening";
|
|
"Save bookmark" = "Save bookmark";
|
|
"Save Bookmark" = "Save Bookmark";
|
|
"Saving..." = "Saving...";
|
|
"Search" = "Search";
|
|
"Search or add new tag..." = "Search or add new tag...";
|
|
"Search results" = "Search results";
|
|
"Search..." = "Search...";
|
|
"Searching..." = "Searching...";
|
|
"Select a bookmark or tag" = "Select a bookmark or tag";
|
|
"Selected tags" = "Selected tags";
|
|
"Server Endpoint" = "Server Endpoint";
|
|
"Server not reachable - saving locally" = "Server not reachable - saving locally";
|
|
"Settings" = "Settings";
|
|
"Show Performance Logs" = "Show Performance Logs";
|
|
"Show Timestamps" = "Show Timestamps";
|
|
"Speed" = "Speed";
|
|
"Syncing with server..." = "Syncing with server...";
|
|
"Theme" = "Theme";
|
|
"This is how your bookmark descriptions and article text will appear in the app. The quick brown fox jumps over the lazy dog." = "This is how your bookmark descriptions and article text will appear in the app. The quick brown fox jumps over the lazy dog.";
|
|
"Try Again" = "Try Again";
|
|
"Unable to load bookmarks" = "Unable to load bookmarks";
|
|
"Unarchive Bookmark" = "Unarchive Bookmark";
|
|
"URL in clipboard:" = "URL in clipboard:";
|
|
"Username" = "Username";
|
|
"Version %@" = "Version %@";
|
|
"Warning" = "Warning";
|
|
"Your current server connection and login credentials." = "Your current server connection and login credentials.";
|
|
"Your Password" = "Your Password";
|
|
"Your Username" = "Your Username"; |