Files
ChatApp/packages/shared/src/i18n/locales/de/app.json
T
byGalax 21376daf39 perf(P6B.T10): i18next tree-shake — prune dead locale keys
Audited all four i18next namespaces (common, auth, errors, app) against
static t() call-site grep across the entire desktop source tree.
Pruned 40 dead keys per locale, 80 total lines removed across 6 files.

Dead keys removed:
- app: call.{e2ee_active_hint,still_live,voice_connected},
       chats.{show_archived,show_active}, admin.nav,
       friends.confirm_unfriend, settings.{danger_zone,this_device,
       presence,section_ringtone}
- auth: signed_in.{title,session_active,user_id,admin,yes,no,sign_out,
        device_active,device_platform,device_registered_at},
        entire device.* section (old device-registration UI)
- common: loading, cancel, retry, online, offline, idle, dnd, invisible

Dynamic-key patterns were found and respected: t('errors:'+code)
keeps all errors keys; t('app:presence.'+val) keeps all presence keys;
t('app:annotator.tool.'+id) uses defaultValue so its locale entries
were not required.
2026-05-16 23:55:04 +02:00

251 lines
10 KiB
JSON

{
"nav": {
"chats": "Chats",
"friends": "Freunde",
"settings": "Einstellungen",
"admin": "Admin"
},
"sidebar": {
"search_placeholder": "Suchen…",
"new_chat": "Neuer Chat",
"sign_out": "Abmelden"
},
"presence": {
"online": "Online",
"idle": "Abwesend",
"dnd": "Nicht stören",
"invisible": "Unsichtbar",
"offline": "Offline",
"status_placeholder": "Status setzen…"
},
"chats": {
"empty_title": "Noch keine Unterhaltungen",
"empty_subtitle": "Starte einen Chat über den Freunde-Tab.",
"select_prompt": "Unterhaltung auswählen",
"select_subtitle": "Wähle einen Chat aus der Liste oder starte einen neuen.",
"deleted": "(gelöscht)",
"edited": "bearbeitet",
"seen": "Gelesen",
"typing_one": "{{name}} schreibt…",
"typing_many": "{{count}} schreiben…",
"new_chat": "Neuer Chat",
"new_group": "Neue Gruppe",
"call_outgoing": "Ausgehender Anruf",
"call_incoming": "Eingehender Anruf",
"call_missed": "Verpasster Anruf",
"call_no_answer": "Keine Antwort",
"call_declined": "Anruf abgelehnt",
"you": "Du",
"attachment": "Anhang",
"reply": "Antworten",
"forward": "Weiterleiten",
"replying_to": "Antwort an {{name}}",
"quote_unavailable": "Nachricht nicht verfügbar",
"search_in_conv": "In Unterhaltung suchen…",
"search_none": "Keine Treffer",
"forward_preview": "Vorschau",
"forward_attachments_dropped": "Anhänge werden nicht mit weitergeleitet.",
"forward_no_targets": "Keine anderen Unterhaltungen verfügbar.",
"forward_done": "Gesendet",
"forward_send": "An {{count}} senden",
"forward_attachments_count_one": "{{count}} Anhang wird mit weitergeleitet",
"forward_attachments_count_other": "{{count}} Anhänge werden mit weitergeleitet",
"archive": "Archivieren",
"unarchive": "Entarchivieren",
"archived_title": "Archiv",
"archived_empty_title": "Nichts archiviert",
"archived_empty_subtitle": "Archivierte Unterhaltungen erscheinen hier.",
"mute": "Stummschalten",
"unmute": "Stummschaltung aufheben",
"mute_1h": "1 Stunde",
"mute_8h": "8 Stunden",
"mute_24h": "24 Stunden",
"mute_1w": "1 Woche",
"mute_forever": "Bis auf Weiteres",
"row_menu": "Aktionen"
},
"call": {
"start_audio": "Sprachanruf",
"incoming_title": "Eingehender Anruf",
"incoming_from": "{{name}} ruft an",
"incoming_group_from": "{{name}} ruft die Gruppe",
"outgoing_ringing": "Klingelt…",
"connecting": "Verbinde…",
"connected": "Im Gespräch",
"accept": "Annehmen",
"decline": "Ablehnen",
"hangup": "Auflegen",
"mute": "Stumm",
"unmute": "Laut",
"busy": "Besetzt — bereits im Gespräch",
"active_in_conv": "Laufender Anruf · {{count}} im Raum",
"join": "Beitreten",
"in_call": "Im Anruf",
"waiting_for_peers": "Warte auf andere…",
"share_screen": "Bildschirm teilen",
"stop_share_screen": "Screen-Share stoppen",
"is_sharing_screen": "{{name}} teilt den Bildschirm",
"watch_screen": "Bildschirm anschauen",
"stop_watching": "Nicht mehr anschauen",
"fullscreen": "Vollbild",
"e2ee_active_hint": "Audio + Video sind Ende-zu-Ende-verschlüsselt"
},
"group": {
"create_title": "Neue Gruppe",
"create_name_label": "Gruppenname",
"create_name_placeholder": "Team-Chat",
"create_members_label": "Freunde hinzufügen",
"create_members_empty": "Noch keine Freunde — erst welche hinzufügen.",
"create_cta": "Gruppe erstellen",
"create_cta_loading": "Erstelle…",
"info_title": "Gruppen-Info",
"info_members": "Mitglieder",
"info_role_admin": "Admin",
"info_role_mod": "Mod",
"info_role_member": "Mitglied",
"info_add_title": "Mitglieder hinzufügen",
"info_add_empty": "Alle deine Freunde sind bereits in dieser Gruppe.",
"info_add_help": "Klick auf einen Freund um ihn direkt hinzuzufügen.",
"info_leave": "Gruppe verlassen",
"info_leave_confirm": "Diese Gruppe wirklich verlassen?"
},
"friends": {
"title": "Freunde",
"search_placeholder": "Nach Benutzername suchen…",
"search_min_chars": "Mindestens 2 Zeichen eingeben.",
"search_no_results": "Keine Treffer.",
"search_results_title": "Suchergebnisse",
"send_request": "Anfrage senden",
"request_sent": "Anfrage gesendet",
"already_friends": "Bereits befreundet",
"incoming_request": "Möchte befreundet sein",
"tab_friends": "Freunde",
"tab_pending": "Ausstehend",
"tab_requests": "Anfragen",
"empty_friends": "Noch keine Freunde.",
"empty_pending": "Keine ausgehenden Anfragen.",
"empty_requests": "Keine eingehenden Anfragen.",
"action_message": "Nachricht",
"action_unfriend": "Entfernen",
"action_accept": "Annehmen",
"action_decline": "Ablehnen",
"action_cancel": "Abbrechen"
},
"admin": {
"title": "Admin-Panel",
"settings_title": "Globale Einstellungen",
"invites_enabled": "Neue Registrierungen erlauben",
"invites_enabled_hint": "Wenn aus, kann sich niemand neu registrieren — auch nicht mit gültigem Invite.",
"invites_title": "Einladungscodes",
"invites_create": "Neuer Code",
"invites_empty": "Noch keine Codes.",
"invites_disable": "Deaktivieren",
"invites_enable": "Aktivieren",
"invites_delete": "Löschen",
"invites_copy": "Kopieren",
"invites_copied": "Kopiert",
"users_title": "Benutzer",
"users_empty": "Noch keine Profile.",
"users_flag_admin": "Admin",
"users_flag_banned": "Gesperrt",
"users_flag_blocked_inviting": "Darf keine Invites erstellen",
"invite_col_code": "Code",
"invite_col_uses": "Nutzung",
"invite_col_expires": "Läuft ab",
"invite_col_status": "Status",
"invite_col_created": "Erstellt",
"invite_status_active": "Aktiv",
"invite_status_disabled": "Deaktiviert",
"invite_status_expired": "Abgelaufen",
"invite_expires_never": "Nie"
},
"settings": {
"title": "Einstellungen",
"section_account": "Account",
"section_appearance": "Darstellung",
"section_privacy": "Privatsphäre",
"section_devices": "Geräte",
"section_voice": "Sprache",
"audio_quality": "Audio-Qualität",
"audio_voice": "Sprache (Empfohlen)",
"audio_hifi": "HiFi / Musik",
"audio_voice_hint": "Mono 48 kbps mit Noise-Suppression, Echo-Cancellation und Auto-Gain. Optimiert für Sprache im Raum.",
"audio_hifi_hint": "Stereo 510 kbps Opus ohne DSP — bester Musik/Broadcast-Sound. Erfordert ruhige Umgebung.",
"e2ee_calls": "Ende-zu-Ende-Verschlüsselung (Calls)",
"e2ee_calls_hint": "Audio + Video werden vor dem Upload verschlüsselt. Der Server sieht nur Ciphertext. Alle Teilnehmer müssen die Option aktiv haben.",
"e2ee_calls_unsupported": "Dein Browser unterstützt keine Insertable Streams. E2EE-Calls nicht verfügbar.",
"ptt_enabled": "Push-to-Talk",
"ptt_enabled_hint": "Mic bleibt stumm, bis die Taste gehalten wird. Overridet den normalen Mute-Button.",
"ptt_key": "Hotkey",
"ptt_press_key": "Taste drücken…",
"section_screen_share": "Bildschirmfreigabe",
"screen_share_quality": "Qualität",
"screen_share_hint": "WebRTC passt Bitrate + Auflösung dynamisch an die Netzwerkqualität an (SVC/VP9). Die Werte sind Obergrenzen. Änderungen greifen beim nächsten Call.",
"language": "Sprache",
"show_read_receipts": "Lesebestätigungen anzeigen",
"show_read_receipts_hint": "Wenn aus, sehen andere nicht wann du ihre Nachrichten gelesen hast — und du siehst nicht wann sie deine gelesen haben.",
"allow_dms_strangers": "DMs von Fremden erlauben",
"allow_dms_strangers_hint": "Wenn aus, können dich nur Freunde direkt anschreiben.",
"sign_out": "Abmelden",
"ringtone_incoming": "Eingehender Anruf",
"ringtone_default_active": "Standard-Klingelton (Doppelton)",
"ringtone_custom_active": "{{name}} · {{size}} MB",
"ringtone_upload": "Hochladen",
"ringtone_replace": "Ersetzen",
"ringtone_preview": "Vorhören",
"ringtone_stop": "Stop",
"ringtone_reset": "Zurücksetzen",
"ringtone_hint": "MP3, WAV, OGG oder M4A bis 8 MB. Nur für eingehende Anrufe — ausgehend bleibt der Standard.",
"ringtone_error_too_large": "Datei zu groß (max {{max}} MB).",
"ringtone_error_not_audio": "Nur Audio-Dateien werden unterstützt.",
"ringtone_error_generic": "Ringtone konnte nicht gespeichert werden.",
"ringtone_error_play": "Ringtone konnte nicht abgespielt werden.",
"section_soundboard": "Soundboard"
},
"soundboard": {
"summary_title": "Deine Sounds",
"summary_empty": "Noch keine Sounds vorhanden.",
"summary_counts": "{{sounds}} Sounds · {{categories}} Kategorien · {{hotkeys}} mit Hotkey",
"settings_hint": "Hotkeys sind optional. Sounds lassen sich auch während eines Anrufs direkt im UI abspielen.",
"manage": "Verwalten",
"manager_title": "Soundboard verwalten",
"manager_hint": "Beliebig viele Sounds, kein Hotkey nötig. Hotkeys feuern nur während eines Anrufs.",
"add": "Sound hinzufügen",
"empty": "Noch keine Sounds. Lade oben welche hoch.",
"category_placeholder": "Kategorie…",
"category_uncategorized": "(Ohne Kategorie)",
"hotkey_capture": "Hotkey binden (Esc = abbrechen)",
"hotkey_press": "Drücke…",
"hotkey_none": "Kein Hotkey",
"hotkey_clear": "Hotkey entfernen",
"hotkey_conflict_ptt": "Konflikt mit Push-to-Talk.",
"hotkey_conflict_sound": "Bereits von \"{{name}}\" belegt.",
"gain_title": "Lautstärke",
"preview": "Vorhören",
"preview_stop": "Stop",
"move_up": "Nach oben",
"move_down": "Nach unten",
"delete": "Löschen",
"delete_confirm": "Sound löschen?",
"error_too_large": "Datei zu groß (max {{max}} MB).",
"error_not_audio": "Nur Audio-Dateien werden unterstützt.",
"error_generic": "Sound konnte nicht gespeichert werden.",
"toggle": "Soundboard",
"panel_title": "Soundboard",
"panel_close": "Schließen",
"panel_search": "Suche…",
"panel_empty": "Keine Sounds gespeichert. Füge welche in den Einstellungen hinzu.",
"panel_no_matches": "Keine Treffer.",
"panel_master": "Master",
"panel_monitor": "Mithören",
"panel_stop_all": "Alle stoppen",
"pad_stop": "Stoppen"
},
"update": {
"available": "Update verfügbar",
"install": "Installieren & Neustarten",
"downloading": "Lade",
"installing": "Installiere…"
}
}