feat(i18n): translate remaining components (HU/EN/DE)
Feed, VideoCard, Sidebar, PlayerModal, Channels, Stats, SettingsPanel, OnboardingWizard, NotificationCenter, Toaster, ErrorBoundary and the relativeTime helper are now fully translated in Hungarian, English and German, each with its own locale area file (auto-loaded). Key parity verified across all three languages.
This commit is contained in:
parent
941fb7d756
commit
ea317c0009
45 changed files with 1522 additions and 355 deletions
101
frontend/src/i18n/locales/de/settings.json
Normal file
101
frontend/src/i18n/locales/de/settings.json
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
{
|
||||
"title": "Einstellungen",
|
||||
"tabs": {
|
||||
"appearance": "Darstellung",
|
||||
"notifications": "Benachrichtigungen",
|
||||
"sync": "Synchronisierung",
|
||||
"account": "Konto"
|
||||
},
|
||||
"appearance": {
|
||||
"colorScheme": "Farbschema",
|
||||
"display": "Anzeige",
|
||||
"darkMode": "Dunkler Modus",
|
||||
"listView": "Listenansicht",
|
||||
"listViewHint": "Zeigt den Feed als kompakte Liste statt als Kartenraster an.",
|
||||
"performanceMode": "Leistungsmodus",
|
||||
"performanceModeHint": "Schaltet den durchscheinenden Glaseffekt und die weichen Schatten aus, für flüssigere Darstellung auf langsameren Geräten.",
|
||||
"showHints": "Hinweise anzeigen",
|
||||
"showHintsHint": "Diese kleinen Hover-Erklärungen. Schalte sie aus, sobald du dich auskennst.",
|
||||
"textSize": "Schriftgröße"
|
||||
},
|
||||
"notifications": {
|
||||
"title": "Benachrichtigungen",
|
||||
"sound": "Ton bei Hinweisen",
|
||||
"soundHint": "Spielt einen kurzen Ton ab, wenn eine Benachrichtigung deine Aufmerksamkeit braucht (z. B. Fehler, Abfragen).",
|
||||
"autoDismiss": "Toasts automatisch ausblenden",
|
||||
"autoDismissHint": "Ausgeschaltet bleiben Pop-up-Toasts, bis du sie schließt. Eingeschaltet blenden sie sich nach der eingestellten Zeit aus.",
|
||||
"dismissAfter": "Ausblenden nach",
|
||||
"sendTest": "Testbenachrichtigung senden",
|
||||
"testTitle": "Testbenachrichtigung",
|
||||
"testMessage": "So sieht eine Benachrichtigung aus."
|
||||
},
|
||||
"sync": {
|
||||
"myStatus": "Mein Synchronisierungsstatus",
|
||||
"channels": "Kanäle",
|
||||
"channelsHint": "Wie viele Kanäle du abonniert hast.",
|
||||
"recentSynced": "Neueste synchronisiert",
|
||||
"recentSyncedHint": "Kanäle, deren neueste Uploads (~letztes Jahr) bereits in der lokalen Datenbank sind und so in deinem Feed erscheinen.",
|
||||
"fullHistory": "Vollständiger Verlauf",
|
||||
"fullHistoryHint": "Kanäle, deren gesamter Katalog abgerufen wurde, von denen, für die du den vollständigen Verlauf angefordert hast (pro Kanal auf der Kanäle-Seite aktivierbar).",
|
||||
"fullHistoryEta": "Vollständiger Verlauf – Restzeit",
|
||||
"fullHistoryEtaHint": "Grobe Schätzung, um das Nachladen des vollständigen Verlaufs von {{count}} ausstehenden Kanal/Kanälen abzuschließen, basierend auf dem gemeinsamen Tageskontingent.",
|
||||
"myVideos": "Meine Videos",
|
||||
"myVideosHint": "Gesamtzahl der dir verfügbaren Videos über deine abonnierten Kanäle.",
|
||||
"quotaLeft": "Heute verbleibendes Kontingent",
|
||||
"quotaLeftHint": "Heute verbleibendes gemeinsames YouTube-API-Budget (wird um Mitternacht US-Pazifik zurückgesetzt). Das Nachladen ordnet sich diesem unter.",
|
||||
"loading": "Wird geladen…",
|
||||
"apiUsage": "Deine API-Nutzung",
|
||||
"today": "Heute",
|
||||
"todayHint": "YouTube-API-Einheiten, die deine eigenen Aktionen heute verbraucht haben (wird um Mitternacht US-Pazifik zurückgesetzt). Die Hintergrund-Synchronisierung zählt hier nicht.",
|
||||
"last7d": "Letzte 7 Tage",
|
||||
"last30d": "Letzte 30 Tage",
|
||||
"allTime": "Gesamt",
|
||||
"byAction": "Nach Aktion (30 Tage)",
|
||||
"noUsage": "Noch keine Nutzung.",
|
||||
"actions": "Aktionen",
|
||||
"syncSubscriptions": "Abos synchronisieren",
|
||||
"syncSubscriptionsHint": "Importiert deine YouTube-Abos erneut und holt neu gefolgte Kanäle hinzu.",
|
||||
"backfillEverything": "Alles nachladen",
|
||||
"backfillEverythingHint": "Fordert das Nachladen des vollständigen Katalogs für jeden Kanal an, den du abonniert hast. Ältere Videos und die vollständige Suche werden gefüllt, soweit das gemeinsame Tageskontingent es zulässt.",
|
||||
"synced": "{{count}} Abos synchronisiert",
|
||||
"syncFailed": "Synchronisierung fehlgeschlagen",
|
||||
"fullHistoryRequested": "Vollständiger Verlauf für {{count}} Kanäle angefordert",
|
||||
"fullHistoryFailed": "Vollständiger Verlauf konnte nicht angefordert werden",
|
||||
"admin": "Admin",
|
||||
"adminPauseHint": "Pausiert oder setzt die Hintergrund-Synchronisierung für die gesamte App fort (alle Nutzer).",
|
||||
"resumeBackgroundSync": "Hintergrund-Synchronisierung fortsetzen",
|
||||
"pauseBackgroundSync": "Hintergrund-Synchronisierung pausieren"
|
||||
},
|
||||
"account": {
|
||||
"title": "Konto",
|
||||
"youtubeAccess": "YouTube-Zugriff",
|
||||
"youtubeAccessIntro": "Die Anmeldung teilt nur deinen Namen und deine E-Mail-Adresse. Der YouTube-Zugriff wird separat erteilt, unten — jeder ist optional und jederzeit in deinem Google-Konto widerrufbar.",
|
||||
"readTitle": "Abos lesen (dein Feed)",
|
||||
"readGrantedHint": "Erteilt. Siftlode liest die Kanäle, denen du folgst, um deinen Feed aufzubauen. Damit ändert es nie dein YouTube-Konto.",
|
||||
"readEnableHint": "Nur-Lese-Zugriff auf deine Abos — erforderlich, um deinen Feed aufzubauen. Siftlode kann damit nichts ändern.",
|
||||
"writeTitle": "Abbestellen (Schreiben)",
|
||||
"writeGrantedHint": "Erteilt. Du kannst Kanäle auf YouTube von innerhalb Siftlode abbestellen. Es schreibt nur, wenn du es anforderst.",
|
||||
"writeEnableHint": "Ermöglicht Siftlode, Kanäle auf YouTube für dich abzubestellen. Optional — überspringe es, um im Nur-Lese-Modus zu bleiben.",
|
||||
"granted": "Erteilt",
|
||||
"enable": "Aktivieren",
|
||||
"enableHint": "Leitet zu Google weiter, um die Berechtigung zu erteilen. Google zeigt einen Hinweis „nicht verifizierte App“ — das ist zu erwarten; klicke auf Erweitert → Weiter zu Siftlode.",
|
||||
"walkMeThrough": "Führe mich durch die Einrichtung"
|
||||
},
|
||||
"invites": {
|
||||
"title": "Zugriffsanfragen",
|
||||
"noPending": "Keine ausstehenden Anfragen.",
|
||||
"addPlaceholder": "E-Mail direkt hinzufügen…",
|
||||
"add": "Hinzufügen",
|
||||
"decided": "{{count}} entschieden",
|
||||
"approved": "Genehmigt — sie können sich jetzt anmelden",
|
||||
"approveFailed": "Genehmigung fehlgeschlagen",
|
||||
"denyFailed": "Ablehnung fehlgeschlagen",
|
||||
"addedToWhitelist": "Zur Whitelist hinzugefügt",
|
||||
"addFailed": "Diese E-Mail konnte nicht hinzugefügt werden",
|
||||
"requested": "angefragt {{time}}",
|
||||
"approveHint": "Genehmigen — setzt diese E-Mail auf die Whitelist und benachrichtigt sie per E-Mail, dass sie dabei sind.",
|
||||
"approve": "Genehmigen",
|
||||
"denyHint": "Diese Anfrage ablehnen.",
|
||||
"deny": "Ablehnen"
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue