diff options
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/locales/de.js')
| -rw-r--r-- | packages/meshbay-hub/src/meshbay_hub/static/locales/de.js | 407 |
1 files changed, 407 insertions, 0 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js b/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js new file mode 100644 index 0000000..1ff4687 --- /dev/null +++ b/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js @@ -0,0 +1,407 @@ +/** + * German — translated from locales/en.js. + * + * Register: formal (Siezen). + * `hub`, `node` and `GEK` are left in English: they name the CLI + * (`meshbay-node`), node.toml and the docs, which are English throughout. + * Grammatical gender chosen here: der Hub, der Node, der GEK (der Schlüssel). + */ + +export default { + // Nav + 'nav.toggle_menu': 'Menü anzeigen', + 'nav.light_mode': 'Helles Design', + 'nav.dark_mode': 'Dunkles Design', + 'nav.logout': 'Abmelden', + 'nav.login': 'Anmelden', + + // Sidebar + 'sidebar.my_groups': 'Meine Gruppen', + 'sidebar.no_groups': 'Noch keine Gruppen', + 'sidebar.discover': 'Entdecken', + 'sidebar.public_groups': 'Öffentliche Gruppen', + + // Login + 'login.title': 'Anmelden', + 'login.username': 'Benutzername', + 'login.password': 'Passwort', + 'login.submit': 'Anmelden', + 'login.loading': 'Anmeldung läuft …', + 'login.no_account': 'Noch kein Konto?', + 'login.register_link': 'Konto erstellen', + + // Register + 'register.title': 'Konto erstellen', + 'register.username': 'Benutzername', + 'register.email': 'E-Mail-Adresse', + 'register.password': 'Passphrase (mindestens 12 Zeichen)', + 'register.confirm': 'Passwort bestätigen', + 'register.submit': 'Konto erstellen', + 'register.loading': 'Konto wird erstellt …', + 'register.has_account': 'Sie haben bereits ein Konto?', + 'register.login_link': 'Anmelden', + 'register.success_title': 'Konto erstellt', + 'register.success_msg': 'Sie können sich jetzt mit Ihren Zugangsdaten anmelden.', + 'register.go_login': 'Zur Anmeldung', + 'register.err_mismatch': 'Die Passwörter stimmen nicht überein', + 'register.err_min_len': { + one: 'Verwenden Sie mindestens {n} Zeichen', + other: 'Verwenden Sie mindestens {n} Zeichen', + }, + 'register.err_too_weak': 'Zu leicht zu erraten. Ihre Passphrase ist das, was Ihre ' + + 'Schlüssel dort schützt, wo sie gespeichert sind — ein paar zusammenhanglose ' + + 'Wörter funktionieren gut.', + 'register.strength': 'Stärke: etwa {bits} Bit. Sie schützt die Kopie Ihrer ' + + 'Schlüssel, die auf den Nodes liegt, denen Sie beitreten — es lohnt sich also, ' + + 'sie gut zu wählen.', + + // Home + 'home.welcome': 'Willkommen bei MeshBay', + 'home.no_groups': 'Sie sind noch in keiner Gruppe Mitglied.', + 'home.browse_prefix': 'Sehen Sie sich die ', + 'home.browse_link': 'öffentlichen Gruppen', + 'home.browse_suffix': ' an oder bitten Sie einen Gruppenadministrator um eine Einladung.', + 'home.my_groups': 'Meine Gruppen', + + // Explore + 'explore.title': 'Öffentliche Gruppen', + 'explore.search': 'Gruppen suchen …', + 'explore.loading': 'Wird geladen …', + 'explore.empty': 'Keine öffentlichen Gruppen verfügbar.', + 'explore.create_group': 'Gruppe erstellen', + 'explore.join': 'Beitreten', + 'explore.member': 'Beigetreten', + + // Group page + 'group.default_name': 'Gruppe', + 'group.tab_files': 'Dateien', + 'group.tab_chat': 'Chat', + 'group.tab_members': 'Mitglieder', + 'group.filter': 'Dateien filtern …', + 'group.col_name': 'Name', + 'group.col_size': 'Größe', + 'group.col_type': 'Typ', + 'group.col_date': 'Datum', + 'group.empty_filter': 'Keine Datei entspricht dem Filter', + 'group.empty_dir': 'Dieser Ordner ist leer', + 'group.download': 'Herunterladen', + 'group.play': 'Abspielen', + 'group.offline_title': 'Für diese Gruppe ist derzeit kein Node online.', + 'group.offline_hint': 'Die Dateien erscheinen, sobald sich ein Node verbindet, der ' + + 'diese Gruppe hostet.', + 'group.upload': 'Hochladen', + 'group.mkdir': 'Neuer Ordner', + 'group.mkdir_prompt': 'Name des neuen Ordners:', + 'group.view': 'Ansehen', + 'group.delete': 'Löschen', + 'group.delete_confirm': '{name} löschen?', + 'group.delete_group': 'Gruppe löschen', + 'group.delete_group_confirm': '„{name}“ endgültig löschen und alle Mitglieder ' + + 'entfernen? Die Dateien auf dem Node bleiben erhalten.', + 'group.err_transport': 'Transportmodul nicht geladen', + + // Status + 'status.idle': 'Inaktiv', + 'status.discovering': 'Nodes werden gesucht …', + 'status.connecting': 'Verbindung über WebRTC …', + 'status.fetching': 'Index wird abgerufen …', + 'status.files': { + one: '{n} Datei', + other: '{n} Dateien', + }, + 'status.offline': 'Kein Node online', + 'status.error': 'Verbindung fehlgeschlagen', + + // Chat + 'chat.empty': 'Noch keine Nachrichten. Beginnen Sie das Gespräch!', + 'chat.placeholder': 'Nachricht schreiben …', + 'chat.send': 'Senden', + 'chat.attach': 'Datei anhängen', + + // Video player + 'video.loading': '{name} wird geladen …', + 'video.buffering': 'Wird gepuffert …', + 'video.close': 'Schließen (Esc)', + 'preview.pdf_fallback': 'Dieser Browser zeigt das PDF nicht direkt an. Laden Sie es ' + + 'stattdessen herunter — entschlüsselt wurde es ohnehin hier.', + 'group.upload_indexing': 'wird indiziert …', + 'video.err_transport': 'Transport nicht verbunden', + 'video.err_mse': 'Codec wird für das Streaming nicht unterstützt: {codec}', + + // Settings + 'settings.title': 'Einstellungen', + 'settings.coming_soon': 'Demnächst verfügbar.', + 'settings.downloads': 'Downloads', + 'settings.dl_auto': 'Automatisch speichern', + 'settings.dl_auto_hint': 'Dateien landen ohne Dialog direkt in dem Ordner, den Sie ' + + 'unten auswählen. Zwanzig Downloads legen dort zwanzig Dateien ab.', + 'settings.dl_ask': 'Jedes Mal fragen', + 'settings.dl_ask_hint': 'Ein „Speichern unter“-Dialog pro Datei — einer je Datei, ' + + 'auch wenn Sie eine Auswahl herunterladen.', + 'settings.dl_folder': 'Ordner: {name}', + 'settings.dl_no_folder': 'Kein Ordner ausgewählt — Downloads landen dort, wo Ihr ' + + 'Browser sie ablegt', + 'settings.dl_choose': 'Ordner auswählen', + 'settings.dl_change': 'Ändern', + 'settings.dl_forget': 'Verwerfen', + 'settings.dl_path_note': 'Einer Webseite lässt sich kein Pfad übergeben, hier ist ' + + 'also nichts einzutippen: Ihr Browser gewährt Zugriff auf den Ordner, den Sie ' + + 'auswählen, und MeshBay schreibt ausschließlich darin. Einmal pro Sitzung kann ' + + 'eine Bestätigung verlangt werden.', + 'settings.dl_unsupported': 'Dieser Browser kann nicht in einen Ordner Ihrer Wahl ' + + 'schreiben (keine File System Access API), daher landen Downloads in seinem ' + + 'eigenen Download-Ordner. Chrome und Edge lassen die Wahl zu.', + 'settings.profile': 'Profil', + 'settings.username': 'Benutzername', + 'settings.node_pins': 'Node-Identitäten', + 'settings.node_pins_hint': 'Der Identitätsschlüssel jedes Nodes wird bei der ersten ' + + 'Verbindung gemerkt. Ändert er sich, wird die Verbindung abgelehnt — das ist nur ' + + 'zu erwarten, wenn ein Betreiber einen Node neu installiert. Fragen Sie dort ' + + 'nach, bevor Sie die Einträge löschen.', + 'settings.node_pins_count': { + one: '{n} gemerkt', + other: '{n} gemerkt', + }, + 'settings.node_pins_clear': 'Gemerkte Identitäten löschen', + 'settings.danger': 'Konto löschen', + 'settings.delete_hint': 'Entfernt Ihr Konto, Ihre Gruppenmitgliedschaften und Ihre ' + + 'Benachrichtigungen vom Hub und gibt Ihren Benutzernamen frei. Was auf den Nodes ' + + 'liegt, erreicht das nicht: hochgeladene Dateien bleiben dort, wo ihr Betreiber ' + + 'sie aufbewahrt, und jeder Node behält die für Sie gemerkte Identität, bis sein ' + + 'Betreiber sie entfernt. Verbindungsprotokolle werden ein Jahr lang aufbewahrt, ' + + 'wie es das Gesetz verlangt.', + 'settings.delete_account': 'Mein Konto löschen', + 'settings.delete_confirm': 'Geben Sie zur Bestätigung Ihre Passphrase ein. ' + + 'Das lässt sich nicht rückgängig machen.', + 'settings.delete_confirm_btn': 'Endgültig löschen', + 'settings.cancel': 'Abbrechen', + 'settings.appearance': 'Darstellung', + 'settings.theme': 'Design', + 'settings.theme_light': 'Hell', + 'settings.theme_dark': 'Dunkel', + 'settings.theme_system': 'System', + 'settings.language': 'Sprache', + 'settings.about': 'Über', + 'settings.version': 'Version', + 'settings.protocol': 'Protokoll', + 'settings.role': 'Rolle', + 'settings.groups': 'Gruppenbenachrichtigungen', + 'settings.notifications': 'Benachrichtigungen', + 'settings.node_key': 'Node verknüpfen', + 'settings.node_key_desc': 'Wenn Sie einen MeshBay-Node betreiben, fügen Sie hier ' + + 'dessen öffentlichen Ed25519-Schlüssel ein, um ihn mit Ihrem Konto zu ' + + 'verknüpfen. Sie finden diesen Schlüssel im Administrations-Dashboard Ihres Nodes.', + 'settings.node_key_placeholder': 'Öffentlichen Ed25519-Schlüssel des Nodes einfügen (base64)', + 'settings.node_key_submit': 'Node verknüpfen', + 'settings.node_key_success': 'Node erfolgreich verknüpft', + 'settings.node_key_current': 'Schlüssel des verknüpften Nodes', + + // Sidebar + 'sidebar.create_group': 'Gruppe erstellen', + 'sidebar.settings': 'Einstellungen', + 'sidebar.admin': 'Verwaltung', + + // User menu + 'usermenu.language': 'Sprache', + 'usermenu.settings': 'Einstellungen', + 'usermenu.theme_light': 'Helles Design', + 'usermenu.theme_dark': 'Dunkles Design', + 'usermenu.logout': 'Abmelden', + + // Admin panel + 'admin.title': 'Verwaltung', + 'admin.tab_stats': 'Statistik', + 'admin.tab_users': 'Benutzer', + 'admin.tab_groups': 'Gruppen', + 'admin.tab_nodes': 'Nodes', + 'admin.tab_logs': 'Protokolle', + 'admin.col_observed_ip': 'Gesehen von', + 'admin.col_hint': 'Gemeldete Adresse', + 'admin.col_last_seen': 'Letzte Meldung', + 'admin.node_online': 'online', + 'admin.node_offline': 'offline', + 'admin.no_nodes': 'Keine Nodes registriert', + 'admin.nodes_hint': '„Gesehen von“ ist die Adresse, von der die Meldung tatsächlich ' + + 'eintraf, in einer mit dem Node-Schlüssel signierten Anfrage — auf diese sollten ' + + 'Sie sich bei einer Auskunft stützen. Die gemeldete Adresse ist die, für die der ' + + 'Node sich selbst hält; er hat sie von einem STUN-Server erfahren und uns ' + + 'geschickt. Sie hilft, den Node zu erreichen, und beweist nichts.', + 'admin.tab_blocklist': 'Sperrliste', + + // Admin stats + 'admin.stat_users': 'Benutzer', + 'admin.stat_groups': 'Gruppen', + 'admin.stat_nodes': 'Nodes', + 'admin.stat_online': 'Nodes online', + + // Admin users + 'admin.users_search': 'Benutzer suchen …', + 'admin.col_username': 'Benutzername', + 'admin.col_role': 'Rolle', + 'admin.col_status': 'Status', + 'admin.col_created': 'Erstellt', + 'admin.col_actions': 'Aktionen', + 'admin.col_email': 'E-Mail', + 'admin.col_groups': 'Gruppen', + 'admin.no_users': 'Keine Benutzer gefunden', + 'admin.btn_suspend': 'Sperren', + 'admin.btn_unsuspend': 'Entsperren', + 'admin.btn_details': 'Details', + 'admin.btn_delete': 'Löschen', + 'admin.delete_confirm': 'Das Konto „{user}“ löschen? Das lässt sich nicht ' + + 'rückgängig machen. Die hochgeladenen Dateien bleiben auf den Nodes, die sie ' + + 'hosten, und jeder Node behält die gemerkte Identität, bis sein Betreiber sie ' + + 'entfernt. Sperren ist die umkehrbare Option.', + 'admin.user_detail': 'Benutzerdetails', + 'admin.btn_close': 'Schließen', + 'admin.self_note': '(Sie)', + + // Admin groups + 'admin.col_name': 'Name', + 'admin.col_visibility': 'Sichtbarkeit', + 'admin.col_members': 'Mitglieder', + 'admin.no_groups': 'Keine Gruppen gefunden', + + // Admin logs + 'admin.col_time': 'Zeit', + 'admin.col_event': 'Ereignis', + 'admin.col_user': 'Benutzer', + 'admin.col_ip': 'IP', + 'admin.col_detail': 'Detail', + 'admin.filter_all': 'Alle Ereignisse', + 'admin.no_logs': 'Keine Protokolle gefunden', + 'admin.btn_load_more': 'Mehr laden', + + // Admin blocklist + 'admin.col_hash': 'Hash', + 'admin.col_reason': 'Grund', + 'admin.col_date': 'Datum', + 'admin.col_added_by': 'Hinzugefügt von', + 'admin.no_blocked': 'Keine gesperrten Hashes', + 'admin.add_hash': 'Hash zur Sperrliste hinzufügen', + 'admin.hash_placeholder': 'blake3-Hash (64 Hexadezimalzeichen)', + 'admin.reason_placeholder': 'Grund', + 'admin.btn_block': 'Sperren', + 'admin.btn_unblock': 'Entsperren', + + // Notifications + // Create group + 'create_group.title': 'Gruppe erstellen', + 'create_group.name': 'Gruppenname', + 'create_group.name_placeholder': 'z. B. Familienfotos, Projektunterlagen …', + 'create_group.visibility': 'Sichtbarkeit', + 'create_group.private': 'Privat', + 'create_group.private_desc': 'Nur eingeladene Mitglieder sehen die Dateien und greifen darauf zu', + 'create_group.public': 'Öffentlich', + 'create_group.public_desc': 'Alle können diese Gruppe finden und durchsehen', + 'create_group.join_policy': 'Beitrittsregel', + 'create_group.invite': 'Nur mit Einladung', + 'create_group.invite_desc': 'Mitglieder müssen von einem Administrator eingeladen werden', + 'create_group.open': 'Offen (alle können beitreten)', + 'create_group.open_desc': 'Alle können ohne Freigabe beitreten', + 'create_group.description': 'Beschreibung', + 'create_group.description_hint': 'Worum geht es in dieser Gruppe? (optional)', + 'create_group.submit': 'Erstellen', + 'create_group.hint': 'Eine Gruppe braucht einen Node, der die Dateien hostet. Sie ' + + 'können die Gruppe jetzt erstellen und später einen Node verbinden.', + 'create_group.creating': 'Wird erstellt …', + + // Members + 'members.col_role': 'Rolle', + 'members.group_role': 'Rolle in der Gruppe', + 'members.admin': 'Administrator', + 'members.group_admin': 'Gruppenadministrator', + 'members.owner': 'Eigentümer', + 'members.member': 'Mitglied', + 'members.invite_title': 'Mitglied einladen', + 'members.username_placeholder': 'Benutzername', + 'members.invite_btn': 'Einladen', + 'members.invite_needs_pairing': 'Einladungen werden mit dem Schlüssel signiert, den ' + + 'dieser Node für Ihren Browser gemerkt hat. Koppeln Sie ihn daher unten, bevor ' + + 'Sie jemanden einladen.', + 'members.invite_ask_operator': 'Nur der Betreiber des Nodes, der diese Gruppe ' + + 'hostet, kann einladen — aus einem mit ihm gekoppelten Browser.', + 'members.remove': 'Entfernen', + 'members.remove_confirm': '{user} aus dieser Gruppe entfernen? Das Konto, die ' + + 'übrigen Gruppen und die hochgeladenen Dateien bleiben unberührt.', + 'members.remove_hint': 'Wer entfernt wird, verliert die Mitgliedschaft, und der Node ' + + 'gibt ihm den Gruppenschlüssel nicht mehr heraus. Das Konto wird dadurch nicht ' + + 'gelöscht, und der bereits erhaltene Schlüssel lässt sich nicht zurückholen — ' + + 'wechseln Sie ihn auf dem Node (meshbay-node gek-init), wenn das wichtig ist.', + 'members.pair_title': 'Diesen Browser mit Ihrem Node koppeln', + 'members.pair_hint': 'Ihr Node akzeptiert Betreiberaktionen — Einladungen, Löschen ' + + 'von Dateien — nur aus einem Browser, mit dem er gekoppelt wurde. Führen Sie auf ' + + 'dem Node `meshbay-node operator pair` aus und geben Sie den Code hier ein. Der ' + + 'Code läuft nie über den Hub.', + 'members.pair_btn': 'Koppeln', + 'members.pair_success': 'Dieser Browser ist jetzt mit dem Node gekoppelt.', + 'members.invite_code_ready': 'Einladungscode für {user} — schicken Sie ihn auf dem ' + + 'Weg, den Sie ohnehin nutzen. Er funktioniert einmal und läuft nie über den Hub.', + 'members.invite_code_hint': 'Die eingeladene Person gibt ihn ein, wenn sie diese ' + + 'Gruppe zum ersten Mal öffnet. Sie müssen dann nicht online sein.', + 'transfers.title': 'Übertragungen', + 'transfers.clear': 'Abgeschlossene entfernen', + 'transfers.cancel': 'Abbrechen', + 'transfers.open': 'Öffnen', + 'transfers.done': 'Abgeschlossen', + 'transfers.cancelled': 'Abgebrochen', + 'transfers.failed': 'Fehlgeschlagen', + 'group.select': 'Auswählen', + 'group.select_done': 'Fertig', + 'group.actions': 'Aktionen ({n})', + 'group.download_n': 'Herunterladen ({n})', + 'group.download_zip_n': 'Ordner als ZIP herunterladen ({n})', + 'group.delete_n': 'Löschen ({n})', + 'group.delete_n_confirm': { + one: '{n} Element löschen? {names}', + other: '{n} Elemente löschen? {names}', + }, + 'group.download_zip': { + one: 'Als ZIP herunterladen ({n} Datei)', + other: 'Als ZIP herunterladen ({n} Dateien)', + }, + 'group.zip_empty': 'In diesem Ordner gibt es nichts herunterzuladen.', + 'group.zip_no_stream': 'Dieser Browser kann einen Download nicht direkt auf die ' + + 'Festplatte schreiben, daher muss {name} ({size}) zuerst im Arbeitsspeicher ' + + 'aufgebaut werden. Bei einem großen Archiv kann das fehlschlagen. Fortfahren?', + 'group.rmdir': 'Ordner löschen', + 'group.rmdir_confirm': 'Den Ordner „{name}“ löschen? Er muss leer sein.', + 'group.rmdir_not_empty': 'Dieser Ordner ist nicht leer. Löschen Sie zuerst seinen ' + + 'Inhalt — nichts hier entfernt Dateien, die Sie nicht sehen.', + 'group.desc_edit': 'Beschreibung bearbeiten', + 'group.desc_add': 'Beschreibung hinzufügen', + 'group.desc_save': 'Speichern', + 'group.desc_cancel': 'Abbrechen', + 'group.desc_placeholder': 'Wofür diese Gruppe da ist — Mitglieder sehen es auf ihrer ' + + 'Startseite.', + 'group.join_code_title': 'Dieser Node muss Sie erkennen', + 'group.join_code_hint': 'Fragen Sie die Person, die Sie eingeladen hat, nach dem ' + + 'Einmalcode und geben Sie ihn hier ein. Danach ist dieser Browser bekannt und Sie ' + + 'werden nicht erneut gefragt.', + 'group.join_code_btn': 'Beitreten', + + 'notif.purge': 'Alle löschen', + 'notif.title': 'Benachrichtigungen', + 'notif.empty': 'Keine Benachrichtigungen', + 'notif.mark_all_read': 'Alle als gelesen markieren', + + // Sidebar + 'sidebar.search': 'Dateien suchen', + + // Status + + // Search + 'search.title': 'Dateien suchen', + 'search.placeholder': 'In allen Gruppen suchen …', + 'search.no_results': 'Keine Datei entspricht Ihrer Suche.', + 'search.synced': 'synchronisiert {ago}', + 'search.cache_note': 'Die Suche stützt sich auf den Stand, den jede Gruppe beim ' + + 'letzten Öffnen hatte. Öffnen Sie eine Gruppe, um ihre Dateien hier zu ' + + 'aktualisieren.', + 'search.col_group': 'Gruppe', + 'search.result_count': { + one: '{n} Datei gefunden', + other: '{n} Dateien gefunden', + }, + 'search.hint': 'Durchsucht Dateinamen in allen zwischengespeicherten Gruppenindexen.', +}; |