aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/src/meshbay_hub/static/locales/de.js
diff options
context:
space:
mode:
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.js407
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.',
+};