ReadKeep/readeck/Localizations/de.lproj/Localizable.strings
Ilyas Hallak f3719fa9d4 Refactor tag management to use Core Data with configurable sorting
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
2025-11-08 13:46:40 +01:00

166 lines
7.0 KiB
Plaintext

/*
Localizable.strings (German)
readeck
Created by conversion from Localizable.xcstrings
*/
"" = "";
"(%lld found)" = "(%lld gefunden)";
"%" = "%";
"%@ (%lld)" = "%1$@ (%2$lld)";
"%lld" = "%lld";
"%lld articles in the queue" = "%lld Artikel in der Warteschlange";
"%lld bookmark%@ synced successfully" = "%1$lld Lesezeichen%2$@ erfolgreich synchronisiert";
"%lld bookmark%@ waiting for sync" = "%1$lld Lesezeichen%2$@ warten auf Synchronisation";
"%lld min" = "%lld Min";
"%lld." = "%lld.";
"%lld/%lld" = "%1$lld/%2$lld";
"12 min • Today • example.com" = "12 Min • Heute • example.com";
"Activate the Read Aloud Feature to read aloud your articles. This is a really early preview and might not work perfectly." = "Aktiviere die Vorlese-Funktion, um deine Artikel vorlesen zu lassen. Dies ist eine sehr frühe Vorschau und funktioniert möglicherweise noch nicht perfekt.";
/* Legal & Privacy */
"Legal & Privacy" = "Rechtliches & Datenschutz";
"Privacy Policy" = "Datenschutzerklärung";
"Legal Notice" = "Impressum";
"Report an Issue" = "Problem melden";
"Contact Support" = "Support kontaktieren";
/* Navigation & States */
"All" = "Alle";
"Unread" = "Ungelesen";
"Favorites" = "Favoriten";
"Archive" = "Archiv";
"Search" = "Suchen";
"Settings" = "Einstellungen";
"Articles" = "Artikel";
"Videos" = "Videos";
"Pictures" = "Bilder";
"Tags" = "Labels";
/* Settings Sections */
"Font Settings" = "Schriftart";
"Appearance" = "Darstellung";
"Cache Settings" = "Cache";
"General Settings" = "Allgemein";
"Server Settings" = "Server";
"Server Connection" = "Server-Verbindung";
"Open external links in" = "Öffne externe Links in";
"In App Browser" = "In App Browser";
"Default Browser" = "Standard Browser";
"Add" = "Hinzufügen";
"Add new tag:" = "Neues Label hinzufügen:";
"all" = "alle";
"All tags selected" = "Alle Labels ausgewählt";
"Archive" = "Archivieren";
"Archive bookmark" = "Lesezeichen archivieren";
"Are you sure you want to delete this bookmark? This action cannot be undone." = "Dieses Lesezeichen wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.";
"Are you sure you want to log out? This will delete all your login credentials and return you to setup." = "Wirklich abmelden? Dies löscht alle Anmeldedaten und führt zurück zur Einrichtung.";
"Available tags" = "Verfügbare Labels";
"Most used tags" = "Meist verwendete Labels";
"Sorted by usage count" = "Sortiert nach Verwendungshäufigkeit";
"Sorted alphabetically" = "Alphabetisch sortiert";
"Cancel" = "Abbrechen";
"Category-specific Levels" = "Kategorie-spezifische Level";
"Changes take effect immediately. Lower log levels include higher ones (Debug includes all, Critical includes only critical messages)." = "Änderungen werden sofort wirksam. Niedrigere Log-Level enthalten höhere (Debug enthält alle, Critical nur kritische Nachrichten).";
"Close" = "Schließen";
"Configure log levels and categories" = "Log-Level und Kategorien konfigurieren";
"Critical" = "Kritisch";
"Debug" = "Debug";
"DEBUG BUILD" = "DEBUG BUILD";
"Debug Settings" = "Debug";
"Delete" = "Löschen";
"Delete Bookmark" = "Lesezeichen löschen";
"Developer: Ilyas Hallak" = "Entwickler: Ilyas Hallak";
"Done" = "Fertig";
"Enter an optional title..." = "Optionalen Titel eingeben...";
"Enter your Readeck server details to get started." = "Readeck-Server-Details eingeben, um zu beginnen.";
"Error" = "Fehler";
"Error: %@" = "Fehler: %@";
"Favorite" = "Favorit";
"Finished reading?" = "Fertig gelesen?";
"Font" = "Schrift";
"Font family" = "Schriftart";
"Font Settings" = "Schrift";
"Font size" = "Schriftgröße";
"From Bremen with 💚" = "Aus Bremen mit 💚";
"General" = "Allgemein";
"Global Level" = "Globales Level";
"Global Minimum Level" = "Globales Minimum-Level";
"Global Settings" = "Global";
"https://example.com" = "https://example.com";
"https://readeck.example.com" = "https://readeck.example.com";
"Include Source Location" = "Quellort einschließen";
"Info" = "Info";
"Jump to last read position (%lld%%)" = "Zur letzten Leseposition springen (%lld%%)";
"Key" = "Schlüssel";
"Level for %@" = "Level für %@";
"Loading %@" = "Lade %@";
"Loading article..." = "Artikel wird geladen...";
"Logging Configuration" = "Logging-Konfiguration";
"Login & Save" = "Anmelden & Speichern";
"Logout" = "Abmelden";
"Logs below this level will be filtered out globally" = "Logs unter diesem Level werden global herausgefiltert";
"Manage Labels" = "Labels verwalten";
"Mark as favorite" = "Als Favorit markieren";
"More" = "Mehr";
"New Bookmark" = "Neues Lesezeichen";
"No articles in the queue" = "Keine Artikel in der Warteschlange";
"open_url" = "%@ öffnen";
"open_original_page" = "Originalseite öffnen";
"No bookmarks" = "Keine Lesezeichen";
"No bookmarks found in %@." = "Keine Lesezeichen in %@ gefunden.";
"No bookmarks found." = "Keine Lesezeichen gefunden.";
"No results" = "Keine Ergebnisse";
"Notice" = "Hinweis";
"OK" = "OK";
"Optional: Custom title" = "Optional: Benutzerdefinierter Titel";
"Password" = "Passwort";
"Paste" = "Einfügen";
"Please wait while we fetch your bookmarks..." = "Bitte warten, während die Lesezeichen geladen werden...";
"Preview" = "Vorschau";
"Progress: %lld%%" = "Fortschritt: %lld%%";
"Re-login & Save" = "Erneut anmelden & Speichern";
"Read Aloud Feature" = "Vorlese-Funktion";
"Read article aloud" = "Artikel vorlesen";
"Read-aloud Queue" = "Vorlese-Warteschlange";
"readeck Bookmark Title" = "readeck Lesezeichen-Titel";
"Reading %lld/%lld: " = "Lese %1$lld/%2$lld: ";
"Remove" = "Entfernen";
"Reset" = "Zurücksetzen";
"Reset to Defaults" = "Auf Standardwerte zurücksetzen";
"Restore" = "Wiederherstellen";
"Resume listening" = "Zuhören fortsetzen";
"Save bookmark" = "Lesezeichen speichern";
"Save Bookmark" = "Lesezeichen speichern";
"Saving..." = "Speichern...";
"Search" = "Suchen";
"Search or add new tag..." = "Suchen oder neues Label hinzufügen...";
"Search results" = "Suchergebnisse";
"Search..." = "Suchen...";
"Searching..." = "Suche...";
"Select a bookmark or tag" = "Lesezeichen oder Label auswählen";
"Selected tags" = "Ausgewählte Labels";
"Server Endpoint" = "Server-Endpunkt";
"Server not reachable - saving locally" = "Server nicht erreichbar - speichere lokal";
"Settings" = "Einstellungen";
"Show Performance Logs" = "Performance-Logs anzeigen";
"Show Timestamps" = "Zeitstempel anzeigen";
"Speed" = "Geschwindigkeit";
"Syncing with server..." = "Synchronisiere mit Server...";
"Theme" = "Design";
"This is how your bookmark descriptions and article text will appear in the app. The quick brown fox jumps over the lazy dog." = "So werden Lesezeichen-Beschreibungen und Artikeltexte in der App angezeigt. Franz jagt im komplett verwahrlosten Taxi quer durch Bayern.";
"Try Again" = "Erneut versuchen";
"Unable to load bookmarks" = "Lesezeichen können nicht geladen werden";
"Unarchive Bookmark" = "Lesezeichen aus Archiv entfernen";
"URL in clipboard:" = "URL in Zwischenablage:";
"Username" = "Benutzername";
"Version %@" = "Version %@";
"Warning" = "Warnung";
"Your current server connection and login credentials." = "Aktuelle Serververbindung und Anmeldedaten.";
"Your Password" = "Passwort";
"Your Username" = "Benutzername";